File indexing completed on 2024-06-23 05:51:56
0001 <?php 0002 /** 0003 * ocs-webserver 0004 * 0005 * Copyright 2016 by pling GmbH. 0006 * 0007 * This file is part of ocs-webserver. 0008 * 0009 * This program is free software: you can redistribute it and/or modify 0010 * it under the terms of the GNU Affero General Public License as 0011 * published by the Free Software Foundation, either version 3 of the 0012 * License, or (at your option) any later version. 0013 * 0014 * This program is distributed in the hope that it will be useful, 0015 * but WITHOUT ANY WARRANTY; without even the implied warranty of 0016 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0017 * GNU Affero General Public License for more details. 0018 * 0019 * You should have received a copy of the GNU Affero General Public License 0020 * along with this program. If not, see <http://www.gnu.org/licenses/>. 0021 **/ 0022 class Statistics_Ranking_WeightedAverageRanking implements Statistics_Ranking_RankingInterface 0023 { 0024 0025 protected $weightForKeys; 0026 0027 0028 function __construct() 0029 { 0030 $this->weightForKeys = array( 0031 'count_views' => 0.1, 0032 'count_plings' => 5, 0033 'count_updates' => 1, 0034 'count_comments' => 1, 0035 'count_followers' => 0, 0036 'count_supporters' => 0, 0037 'count_money' => 0 0038 ); 0039 } 0040 0041 /** 0042 * @param $data 0043 * @return float 0044 */ 0045 public function calculateRankingValue($data) 0046 { 0047 $weightedSum = 0.0; 0048 $dividerSum = 0.0; 0049 0050 foreach ($this->weightForKeys as $key => $weight) { 0051 $weightedSum += $weight * (float)$data[$key]; 0052 $dividerSum += $weight; 0053 } 0054 return $weightedSum / $dividerSum; 0055 } 0056 0057 }