@@ -2,11 +2,9 @@  | 
                                                    ||
| 2 | 2 | |
| 3 | 3 | namespace AppBundle\Helper;  | 
                                                        
| 4 | 4 | |
| 5 | -use DateInterval;  | 
                                                        |
| 6 | 5 | use Mediawiki\Api\MediawikiApi;  | 
                                                        
| 7 | 6 | use Mediawiki\Api\SimpleRequest;  | 
                                                        
| 8 | 7 | use Mediawiki\Api\FluentRequest;  | 
                                                        
| 9 | -use Psr\Cache\CacheItemPoolInterface;  | 
                                                        |
| 10 | 8 | use Symfony\Component\Config\Definition\Exception\Exception;  | 
                                                        
| 11 | 9 | use Symfony\Component\DependencyInjection\ContainerInterface;  | 
                                                        
| 12 | 10 | |
@@ -34,6 +34,9 @@ discard block  | 
                                                    ||
| 34 | 34 | }  | 
                                                        
| 35 | 35 | }  | 
                                                        
| 36 | 36 | |
| 37 | + /**  | 
                                                        |
| 38 | + * @param string $username  | 
                                                        |
| 39 | + */  | 
                                                        |
| 37 | 40 | public function groups($project, $username)  | 
                                                        
| 38 | 41 |      { | 
                                                        
| 39 | 42 | $this->setUp($project);  | 
                                                        
@@ -53,6 +56,9 @@ discard block  | 
                                                    ||
| 53 | 56 | return $result;  | 
                                                        
| 54 | 57 | }  | 
                                                        
| 55 | 58 | |
| 59 | + /**  | 
                                                        |
| 60 | + * @param string $username  | 
                                                        |
| 61 | + */  | 
                                                        |
| 56 | 62 | public function globalGroups($project, $username)  | 
                                                        
| 57 | 63 |      { | 
                                                        
| 58 | 64 | $this->setUp($project);  | 
                                                        
@@ -336,7 +342,7 @@ discard block  | 
                                                    ||
| 336 | 342 | * Adapted from https://github.com/MusikAnimal/pageviews  | 
                                                        
| 337 | 343 | * @param array $params Associative array of params to pass to API  | 
                                                        
| 338 | 344 | * @param string $project Project to query, e.g. en.wikipedia.org  | 
                                                        
| 339 | - * @param string|func $dataKey The key for the main chunk of data, in the query hash  | 
                                                        |
| 345 | + * @param \Closure $dataKey The key for the main chunk of data, in the query hash  | 
                                                        |
| 340 | 346 | * (e.g. 'categorymembers' for API:Categorymembers).  | 
                                                        
| 341 | 347 | * If this is a function it is given the response data,  | 
                                                        
| 342 | 348 | * and expected to return the data we want to concatentate.  | 
                                                        
@@ -37,7 +37,7 @@ discard block  | 
                                                    ||
| 37 | 37 | public function groups($project, $username)  | 
                                                        
| 38 | 38 |      { | 
                                                        
| 39 | 39 | $this->setUp($project);  | 
                                                        
| 40 | - $params = [ "list"=>"users", "ususers"=>$username, "usprop"=>"groups" ];  | 
                                                        |
| 40 | + $params = ["list"=>"users", "ususers"=>$username, "usprop"=>"groups"];  | 
                                                        |
| 41 | 41 |          $query = new SimpleRequest('query', $params); | 
                                                        
| 42 | 42 | $result = [];  | 
                                                        
| 43 | 43 | |
@@ -56,7 +56,7 @@ discard block  | 
                                                    ||
| 56 | 56 | public function globalGroups($project, $username)  | 
                                                        
| 57 | 57 |      { | 
                                                        
| 58 | 58 | $this->setUp($project);  | 
                                                        
| 59 | - $params = [ "meta"=>"globaluserinfo", "guiuser"=>$username, "guiprop"=>"groups" ];  | 
                                                        |
| 59 | + $params = ["meta"=>"globaluserinfo", "guiuser"=>$username, "guiprop"=>"groups"];  | 
                                                        |
| 60 | 60 |          $query = new SimpleRequest('query', $params); | 
                                                        
| 61 | 61 | $result = [];  | 
                                                        
| 62 | 62 | |
@@ -86,7 +86,7 @@ discard block  | 
                                                    ||
| 86 | 86 | }  | 
                                                        
| 87 | 87 | |
| 88 | 88 | $this->setUp($project);  | 
                                                        
| 89 | -        $query = new SimpleRequest('query', [ "meta"=>"siteinfo", "siprop"=>"namespaces" ]); | 
                                                        |
| 89 | +        $query = new SimpleRequest('query', ["meta"=>"siteinfo", "siprop"=>"namespaces"]); | 
                                                        |
| 90 | 90 | $result = [];  | 
                                                        
| 91 | 91 | |
| 92 | 92 |          try { | 
                                                        
@@ -188,7 +188,7 @@ discard block  | 
                                                    ||
| 188 | 188 | $normalized = [];  | 
                                                        
| 189 | 189 |              if (isset($result['query']['normalized'])) { | 
                                                        
| 190 | 190 | array_map(  | 
                                                        
| 191 | -                    function ($e) use (&$normalized) { | 
                                                        |
| 191 | +                    function($e) use (&$normalized) { | 
                                                        |
| 192 | 192 | $normalized[$e['to']] = $e['from'];  | 
                                                        
| 193 | 193 | },  | 
                                                        
| 194 | 194 | $result['query']['normalized']  | 
                                                        
@@ -231,7 +231,7 @@ discard block  | 
                                                    ||
| 231 | 231 | ];  | 
                                                        
| 232 | 232 | |
| 233 | 233 | // get assessments for this page from the API  | 
                                                        
| 234 | -        $assessments = $this->massApi($params, $project, function ($data) { | 
                                                        |
| 234 | +        $assessments = $this->massApi($params, $project, function($data) { | 
                                                        |
| 235 | 235 | return isset($data['pages'][0]['pageassessments']) ? $data['pages'][0]['pageassessments'] : [];  | 
                                                        
| 236 | 236 | }, 'pacontinue')['pages'];  | 
                                                        
| 237 | 237 | |
@@ -258,7 +258,7 @@ discard block  | 
                                                    ||
| 258 | 258 | $classAttrs = $config['class']['Unknown'];  | 
                                                        
| 259 | 259 | $assessment['class']['value'] = '???';  | 
                                                        
| 260 | 260 | $assessment['class']['category'] = $classAttrs['category'];  | 
                                                        
| 261 | - $assessment['class']['badge'] = "https://upload.wikimedia.org/wikipedia/commons/". $classAttrs['badge'];  | 
                                                        |
| 261 | + $assessment['class']['badge'] = "https://upload.wikimedia.org/wikipedia/commons/".$classAttrs['badge'];  | 
                                                        |
| 262 | 262 |              } else { | 
                                                        
| 263 | 263 | $classAttrs = $config['class'][$classValue];  | 
                                                        
| 264 | 264 | $assessment['class'] = [  | 
                                                        
@@ -269,7 +269,7 @@ discard block  | 
                                                    ||
| 269 | 269 | |
| 270 | 270 | // add full URL to badge icon  | 
                                                        
| 271 | 271 |                  if ($classAttrs['badge'] !== '') { | 
                                                        
| 272 | - $assessment['class']['badge'] = "https://upload.wikimedia.org/wikipedia/commons/" .  | 
                                                        |
| 272 | + $assessment['class']['badge'] = "https://upload.wikimedia.org/wikipedia/commons/".  | 
                                                        |
| 273 | 273 | $classAttrs['badge'];  | 
                                                        
| 274 | 274 | }  | 
                                                        
| 275 | 275 | |
@@ -393,7 +393,7 @@ discard block  | 
                                                    ||
| 393 | 393 |          $query = FluentRequest::factory()->setAction('query')->setParams($requestData); | 
                                                        
| 394 | 394 | $innerPromise = $this->api->getRequestAsync($query);  | 
                                                        
| 395 | 395 | |
| 396 | -        $innerPromise->then(function ($result) use (&$data) { | 
                                                        |
| 396 | +        $innerPromise->then(function($result) use (&$data) { | 
                                                        |
| 397 | 397 | // some failures come back as 200s, so we still resolve and let the outer function handle it  | 
                                                        
| 398 | 398 |              if (isset($result['error']) || !isset($result['query'])) { | 
                                                        
| 399 | 399 | return $data['promise']->resolve($data);  | 
                                                        
@@ -100,24 +100,24 @@ discard block  | 
                                                    ||
| 100 | 100 | }  | 
                                                        
| 101 | 101 | |
| 102 | 102 | $revisionCounts = array_combine(  | 
                                                        
| 103 | -            array_map(function ($e) { | 
                                                        |
| 103 | +            array_map(function($e) { | 
                                                        |
| 104 | 104 | return $e['source'];  | 
                                                        
| 105 | 105 | }, $results),  | 
                                                        
| 106 | -            array_map(function ($e) { | 
                                                        |
| 106 | +            array_map(function($e) { | 
                                                        |
| 107 | 107 | return $e['value'];  | 
                                                        
| 108 | 108 | }, $results)  | 
                                                        
| 109 | 109 | );  | 
                                                        
| 110 | 110 | |
| 111 | 111 | // Count the number of days, accounting for when there's only one edit.  | 
                                                        
| 112 | - $editingTimeInSeconds = ceil($revisionCounts['last'] - $revisionCounts['first']);  | 
                                                        |
| 113 | - $revisionCounts['days'] = $editingTimeInSeconds ? $editingTimeInSeconds/(60*60*24) : 1;  | 
                                                        |
| 112 | + $editingTimeInSeconds = ceil($revisionCounts['last']-$revisionCounts['first']);  | 
                                                        |
| 113 | + $revisionCounts['days'] = $editingTimeInSeconds ? $editingTimeInSeconds / (60 * 60 * 24) : 1;  | 
                                                        |
| 114 | 114 | |
| 115 | 115 | // Format the first and last dates.  | 
                                                        
| 116 | 116 |          $revisionCounts['first'] = date('Y-m-d H:i', strtotime($revisionCounts['first'])); | 
                                                        
| 117 | 117 |          $revisionCounts['last'] = date('Y-m-d H:i', strtotime($revisionCounts['last'])); | 
                                                        
| 118 | 118 | |
| 119 | 119 | // Sum deleted and live to make the total.  | 
                                                        
| 120 | - $revisionCounts['total'] = $revisionCounts['deleted'] + $revisionCounts['live'];  | 
                                                        |
| 120 | + $revisionCounts['total'] = $revisionCounts['deleted']+$revisionCounts['live'];  | 
                                                        |
| 121 | 121 | |
| 122 | 122 | // Calculate the average number of live edits per day.  | 
                                                        
| 123 | 123 | $revisionCounts['avg_per_day'] = round(  | 
                                                        
@@ -154,16 +154,16 @@ discard block  | 
                                                    ||
| 154 | 154 | $results = $resultQuery->fetchAll();  | 
                                                        
| 155 | 155 | |
| 156 | 156 | $pageCounts = array_combine(  | 
                                                        
| 157 | -            array_map(function ($e) { | 
                                                        |
| 157 | +            array_map(function($e) { | 
                                                        |
| 158 | 158 | return $e['source'];  | 
                                                        
| 159 | 159 | }, $results),  | 
                                                        
| 160 | -            array_map(function ($e) { | 
                                                        |
| 160 | +            array_map(function($e) { | 
                                                        |
| 161 | 161 | return $e['value'];  | 
                                                        
| 162 | 162 | }, $results)  | 
                                                        
| 163 | 163 | );  | 
                                                        
| 164 | 164 | |
| 165 | 165 | // Total created.  | 
                                                        
| 166 | - $pageCounts['created'] = $pageCounts['created-live'] + $pageCounts['created-deleted'];  | 
                                                        |
| 166 | + $pageCounts['created'] = $pageCounts['created-live']+$pageCounts['created-deleted'];  | 
                                                        |
| 167 | 167 | |
| 168 | 168 | // Calculate the average number of edits per page.  | 
                                                        
| 169 | 169 | $pageCounts['edits_per_page'] = 0;  | 
                                                        
@@ -190,17 +190,17 @@ discard block  | 
                                                    ||
| 190 | 190 | $resultQuery->execute();  | 
                                                        
| 191 | 191 | $results = $resultQuery->fetchAll();  | 
                                                        
| 192 | 192 | $logCounts = array_combine(  | 
                                                        
| 193 | -            array_map(function ($e) { | 
                                                        |
| 193 | +            array_map(function($e) { | 
                                                        |
| 194 | 194 | return $e['source'];  | 
                                                        
| 195 | 195 | }, $results),  | 
                                                        
| 196 | -            array_map(function ($e) { | 
                                                        |
| 196 | +            array_map(function($e) { | 
                                                        |
| 197 | 197 | return $e['value'];  | 
                                                        
| 198 | 198 | }, $results)  | 
                                                        
| 199 | 199 | );  | 
                                                        
| 200 | 200 | |
| 201 | 201 | // Make sure there is some value for each of the wanted counts.  | 
                                                        
| 202 | 202 | $requiredCounts = [  | 
                                                        
| 203 | - 'thanks-thank', 'review-approve', 'patrol-patrol','block-block', 'block-unblock',  | 
                                                        |
| 203 | + 'thanks-thank', 'review-approve', 'patrol-patrol', 'block-block', 'block-unblock',  | 
                                                        |
| 204 | 204 | 'protect-protect', 'protect-unprotect', 'delete-delete', 'delete-revision',  | 
                                                        
| 205 | 205 | 'delete-restore', 'import-import', 'upload-upload', 'upload-overwrite',  | 
                                                        
| 206 | 206 | ];  | 
                                                        
@@ -211,9 +211,9 @@ discard block  | 
                                                    ||
| 211 | 211 | }  | 
                                                        
| 212 | 212 | |
| 213 | 213 | // Merge approvals together.  | 
                                                        
| 214 | - $logCounts['review-approve'] = $logCounts['review-approve'] +  | 
                                                        |
| 215 | - (!empty($logCounts['review-approve-a']) ? $logCounts['review-approve-a'] : 0) +  | 
                                                        |
| 216 | - (!empty($logCounts['review-approve-i']) ? $logCounts['review-approve-i'] : 0) +  | 
                                                        |
| 214 | + $logCounts['review-approve'] = $logCounts['review-approve']+  | 
                                                        |
| 215 | + (!empty($logCounts['review-approve-a']) ? $logCounts['review-approve-a'] : 0)+  | 
                                                        |
| 216 | + (!empty($logCounts['review-approve-i']) ? $logCounts['review-approve-i'] : 0)+  | 
                                                        |
| 217 | 217 | (!empty($logCounts['review-approve-ia']) ? $logCounts['review-approve-ia'] : 0);  | 
                                                        
| 218 | 218 | |
| 219 | 219 | // Add Commons upload count, if applicable.  | 
                                                        
@@ -238,7 +238,7 @@ discard block  | 
                                                    ||
| 238 | 238 | public function getNamespaceTotals($userId)  | 
                                                        
| 239 | 239 |      { | 
                                                        
| 240 | 240 | $sql = "SELECT page_namespace, count(rev_id) AS total  | 
                                                        
| 241 | -            FROM ".$this->labsHelper->getTable('revision') ." r | 
                                                        |
| 241 | +            FROM ".$this->labsHelper->getTable('revision')." r | 
                                                        |
| 242 | 242 |                  JOIN ".$this->labsHelper->getTable('page')." p on r.rev_page = p.page_id | 
                                                        
| 243 | 243 | WHERE r.rev_user = :id GROUP BY page_namespace";  | 
                                                        
| 244 | 244 | $resultQuery = $this->replicas->prepare($sql);  | 
                                                        
@@ -246,10 +246,10 @@ discard block  | 
                                                    ||
| 246 | 246 | $resultQuery->execute();  | 
                                                        
| 247 | 247 | $results = $resultQuery->fetchAll();  | 
                                                        
| 248 | 248 | $namespaceTotals = array_combine(  | 
                                                        
| 249 | -            array_map(function ($e) { | 
                                                        |
| 249 | +            array_map(function($e) { | 
                                                        |
| 250 | 250 | return $e['page_namespace'];  | 
                                                        
| 251 | 251 | }, $results),  | 
                                                        
| 252 | -            array_map(function ($e) { | 
                                                        |
| 252 | +            array_map(function($e) { | 
                                                        |
| 253 | 253 | return $e['total'];  | 
                                                        
| 254 | 254 | }, $results)  | 
                                                        
| 255 | 255 | );  |