From aedc15a2041e13979588dbeeeca8277682cf85a9 Mon Sep 17 00:00:00 2001 From: Alexey Skobkin Date: Tue, 23 Jun 2015 14:03:46 +0300 Subject: [PATCH] Last events on the main page. --- .../Controller/MainController.php | 1 + .../Entity/SubscriptionEventRepository.php | 26 ++++++++++ .../Resources/translations/messages.ru.yml | 3 ++ .../Resources/views/Main/index.html.twig | 52 +++++++++++++++++++ 4 files changed, 82 insertions(+) diff --git a/src/Skobkin/Bundle/PointToolsBundle/Controller/MainController.php b/src/Skobkin/Bundle/PointToolsBundle/Controller/MainController.php index 4d411fb..f6a3d34 100644 --- a/src/Skobkin/Bundle/PointToolsBundle/Controller/MainController.php +++ b/src/Skobkin/Bundle/PointToolsBundle/Controller/MainController.php @@ -18,6 +18,7 @@ class MainController extends Controller 'subscribers_count' => $em->getRepository('SkobkinPointToolsBundle:Subscription')->getUserSubscribersCountById($this->container->getParameter('point_id')), 'events_count' => $em->getRepository('SkobkinPointToolsBundle:SubscriptionEvent')->getLastDayEventsCount(), 'service_login' => $this->container->getParameter('point_login'), + 'last_events' => $em->getRepository('SkobkinPointToolsBundle:SubscriptionEvent')->getLastSubscriptionEvents(10), ]); } } diff --git a/src/Skobkin/Bundle/PointToolsBundle/Entity/SubscriptionEventRepository.php b/src/Skobkin/Bundle/PointToolsBundle/Entity/SubscriptionEventRepository.php index 8937a90..f17f01c 100644 --- a/src/Skobkin/Bundle/PointToolsBundle/Entity/SubscriptionEventRepository.php +++ b/src/Skobkin/Bundle/PointToolsBundle/Entity/SubscriptionEventRepository.php @@ -3,6 +3,7 @@ namespace Skobkin\Bundle\PointToolsBundle\Entity; use Doctrine\ORM\EntityRepository; +use Doctrine\ORM\Mapping\ClassMetadata; class SubscriptionEventRepository extends EntityRepository { @@ -45,4 +46,29 @@ class SubscriptionEventRepository extends EntityRepository ->getQuery()->getResult() ; } + + /** + * Get last $limit subscriptions + * + * @param integer $limit + * @return SubscriptionEvent[] + */ + public function getLastSubscriptionEvents($limit) + { + if (!is_int($limit)) { + throw new \InvalidArgumentException('$limit must be an integer'); + } + + $qb = $this->createQueryBuilder('se'); + + return $qb + ->select() + ->orderBy('se.date', 'desc') + ->setMaxResults($limit) + ->getQuery() + ->setFetchMode('SkobkinPointToolsBundle:SubscriptionEvent', 'author', ClassMetadata::FETCH_EAGER) + ->setFetchMode('SkobkinPointToolsBundle:SubscriptionEvent', 'subscriber', ClassMetadata::FETCH_EAGER) + ->getResult() + ; + } } \ No newline at end of file diff --git a/src/Skobkin/Bundle/PointToolsBundle/Resources/translations/messages.ru.yml b/src/Skobkin/Bundle/PointToolsBundle/Resources/translations/messages.ru.yml index ab55c66..a46ea28 100644 --- a/src/Skobkin/Bundle/PointToolsBundle/Resources/translations/messages.ru.yml +++ b/src/Skobkin/Bundle/PointToolsBundle/Resources/translations/messages.ru.yml @@ -13,6 +13,9 @@ Source code: Исходный код All users: Всего пользователей Subscribed users: Подписчиков сервиса 24 hours events: Событий за сутки +Author: Автор +Subscriber: Подписчик +Last events: Последние события Username: Имя пользователя Search: Поиск diff --git a/src/Skobkin/Bundle/PointToolsBundle/Resources/views/Main/index.html.twig b/src/Skobkin/Bundle/PointToolsBundle/Resources/views/Main/index.html.twig index 2a2c3c9..7bfe4cc 100644 --- a/src/Skobkin/Bundle/PointToolsBundle/Resources/views/Main/index.html.twig +++ b/src/Skobkin/Bundle/PointToolsBundle/Resources/views/Main/index.html.twig @@ -15,6 +15,58 @@ + {# TODO classes #} +
+ {% if last_events|length > 0 %} +
+
+ +
+
+ + + + + + + + + + + {% for event in last_events %} + + + + + + + {% endfor %} + +
{{ 'Subscriber'|trans }}{{ 'Author'|trans }}{{ 'Action'|trans }}{{ 'Date'|trans }}
+ @{{ event.subscriber.login }} + + @{{ event.author.login }} + + + + {# Use DateTime helper: https://sonata-project.org/bundles/intl/master/doc/reference/datetime.html #} + {{ event.date|date('d F Y H:i:s') }} +
+
+
+
+
+ {% else %} + + {% endif %} +
+
{{ 'All users'|trans }}