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 }