コード例 #1
0
 public static function getFacebookLikesGroupedBySubmitter(array $gifs, Router $router)
 {
     $json = FacebookHelper::getLikes($gifs, $router);
     $submitters = [];
     foreach ($json as $item) {
         $url = $item['url'];
         $likesCount = intval($item['total_count']);
         /** @var Gif $gif */
         $gif = FacebookHelper::findGif($gifs, $url);
         if (!array_key_exists($gif->getSubmittedBy(), $submitters)) {
             $submitters[$gif->getSubmittedBy()] = ['gifs' => [], 'likes' => 0];
         }
         $submitters[$gif->getSubmittedBy()]['gifs'][] = $gif;
         $submitters[$gif->getSubmittedBy()]['likes'] += $likesCount;
     }
     // Sort array
     $submittersIndexed = [];
     foreach ($submitters as $submitter => $infos) {
         $submittersIndexed[] = ['submitter' => $submitter, 'gifs' => $infos['gifs'], 'likes' => $infos['likes']];
     }
     usort($submittersIndexed, function ($a, $b) {
         return $b['likes'] - $a['likes'];
     });
     return $submittersIndexed;
 }
コード例 #2
0
 /**
  * @Route("/submitters", name="topSubmitters")
  */
 public function submittersTopAction()
 {
     $em = $this->getDoctrine()->getManager();
     /** @var GifRepository $gifRepo */
     $gifRepo = $em->getRepository('LjdsBundle:Gif');
     $gifs = $gifRepo->findByGifState(GifState::PUBLISHED);
     $params = ['submitters' => FacebookHelper::getFacebookLikesGroupedBySubmitter($gifs, $this->get('router'))];
     return $this->render('LjdsBundle:Submitters:top.html.twig', $params);
 }
コード例 #3
0
 public function getTop($limit, Router $router)
 {
     $gifs = $this->findByGifState(GifState::PUBLISHED);
     if (count($gifs) == 0) {
         return [];
     }
     $likes = FacebookHelper::getFacebookLikes($gifs, $router);
     $list = [];
     foreach ($likes as $like) {
         $list[] = $like['gif'];
     }
     // Take the $amount top ones
     return array_slice($list, 0, $limit);
 }