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; }
/** * @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); }
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); }