Completed
Pull Request — 5.6 (#2830)
by Jeroen
14:14
created

EventListener/LogPageEventsSubscriber.php (1 issue)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
3
namespace Kunstmaan\NodeBundle\EventListener;
4
5
use Kunstmaan\NodeBundle\Event\CopyPageTranslationNodeEvent;
6
use Kunstmaan\NodeBundle\Event\Events;
7
use Kunstmaan\NodeBundle\Event\NodeEvent;
8
use Kunstmaan\NodeBundle\Event\RecopyPageTranslationNodeEvent;
9
use Symfony\Bridge\Monolog\Logger;
10
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
11
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
12
use Symfony\Component\Security\Core\User\UserInterface;
13
14
class LogPageEventsSubscriber implements EventSubscriberInterface
15
{
16
    /**
17
     * @var Logger
18
     */
19
    private $logger;
20
21
    /**
22
     * @var TokenStorageInterface
23
     */
24
    private $tokenStorage;
25
26
    /**
27
     * @var UserInterface
28
     */
29
    private $user;
30
31
    /**
32
     * @param Logger                $logger       The logger
33
     * @param TokenStorageInterface $tokenStorage The security token storage
34
     */
35
    public function __construct(Logger $logger, TokenStorageInterface $tokenStorage)
36
    {
37
        $this->logger = $logger;
38
        $this->tokenStorage = $tokenStorage;
39
    }
40
41
    /**
42
     * Returns an array of event names this subscriber wants to listen to.
43
     *
44
     * The array keys are event names and the value can be:
45
     *
46
     *  * The method name to call (priority defaults to 0)
47
     *  * An array composed of the method name to call and the priority
48
     *  * An array of arrays composed of the method names to call and respective
49
     *    priorities, or 0 if unset
50
     *
51
     * For instance:
52
     *
53
     *  * array('eventName' => 'methodName')
54
     *  * array('eventName' => array('methodName', $priority))
55
     *  * array('eventName' => array(array('methodName1', $priority), array('methodName2'))
56
     *
57
     * @return array The event names to listen to
0 ignored issues
show
Consider making the return type a bit more specific; maybe use array<*,string>.

This check looks for the generic type array as a return type and suggests a more specific type. This type is inferred from the actual code.

Loading history...
58
     *
59
     * @api
60
     */
61
    public static function getSubscribedEvents()
62
    {
63
        return [
64
            Events::COPY_PAGE_TRANSLATION => 'onCopyPageTranslation',
65
            Events::RECOPY_PAGE_TRANSLATION => 'onRecopyPageTranslation',
66
            Events::ADD_EMPTY_PAGE_TRANSLATION => 'onAddEmptyPageTranslation',
67
            Events::POST_PUBLISH => 'postPublish',
68
            Events::POST_UNPUBLISH => 'postUnPublish',
69
            Events::POST_DELETE => 'postDelete',
70
            Events::ADD_NODE => 'onAddNode',
71
            Events::POST_PERSIST => 'postPersist',
72
            Events::CREATE_PUBLIC_VERSION => 'onCreatePublicVersion',
73
            Events::CREATE_DRAFT_VERSION => 'onCreateDraftVersion',
74
        ];
75
    }
76
77
    /**
78
     * @return \Symfony\Component\Security\Core\User\UserInterface
79
     */
80
    private function getUser()
81
    {
82
        if (\is_null($this->user)) {
83
            $this->user = $this->tokenStorage->getToken()->getUser();
84
        }
85
86
        return $this->user;
87
    }
88
89
    public function onCopyPageTranslation(CopyPageTranslationNodeEvent $event)
90
    {
91
        $this->logger->addInfo(sprintf('%s just copied the page translation from %s (%d) to %s (%d) for node with id %d', $this->getUser()->getUsername(), $event->getOriginalLanguage(), $event->getOriginalPage()->getId(), $event->getNodeTranslation()->getLang(), $event->getPage()->getId(), $event->getNode()->getId()));
92
    }
93
94
    public function onRecopyPageTranslation(RecopyPageTranslationNodeEvent $event)
95
    {
96
        $this->logger->addInfo(sprintf('%s just recopied the page translation from %s (%d) to %s (%d) for node with id %d', $this->getUser()->getUsername(), $event->getOriginalLanguage(), $event->getOriginalPage()->getId(), $event->getNodeTranslation()->getLang(), $event->getPage()->getId(), $event->getNode()->getId()));
97
    }
98
99
    public function onAddEmptyPageTranslation(NodeEvent $event)
100
    {
101
        $this->logger->addInfo(sprintf('%s just added an empty page translation (%d) for node with id %d in language %s', $this->getUser()->getUsername(), $event->getPage()->getId(), $event->getNode()->getId(), $event->getNodeTranslation()->getLang()));
102
    }
103
104
    public function postPublish(NodeEvent $event)
105
    {
106
        $this->logger->addInfo(sprintf('%s just published the page with id %d for node %d in language %s', $this->getUser()->getUsername(), $event->getPage()->getId(), $event->getNode()->getId(), $event->getNodeTranslation()->getLang()));
107
    }
108
109
    public function postUnPublish(NodeEvent $event)
110
    {
111
        $this->logger->addInfo(sprintf('%s just unpublished the page with id %d for node %d in language %s', $this->getUser()->getUsername(), $event->getPage()->getId(), $event->getNode()->getId(), $event->getNodeTranslation()->getLang()));
112
    }
113
114
    public function postDelete(NodeEvent $event)
115
    {
116
        $this->logger->addInfo(sprintf('%s just deleted node with id %d', $this->getUser()->getUsername(), $event->getNode()->getId()));
117
    }
118
119
    public function onAddNode(NodeEvent $event)
120
    {
121
        $this->logger->addInfo(sprintf('%s just added node with id %d in language %s', $this->getUser()->getUsername(), $event->getNode()->getId(), $event->getNodeTranslation()->getLang()));
122
    }
123
124
    public function postPersist(NodeEvent $event)
125
    {
126
        $this->logger->addInfo(sprintf('%s just updated page with id %d for node %d in language %s', $this->getUser()->getUsername(), $event->getPage()->getId(), $event->getNode()->getId(), $event->getNodeTranslation()->getLang()));
127
    }
128
129
    public function onCreatePublicVersion(NodeEvent $event)
130
    {
131
        $this->logger->addInfo(sprintf('%s just created a new public version %d for node %d in language %s', $this->getUser()->getUsername(), $event->getNodeVersion()->getId(), $event->getNode()->getId(), $event->getNodeTranslation()->getLang()));
132
    }
133
134
    public function onCreateDraftVersion(NodeEvent $event)
135
    {
136
        $this->logger->addInfo(sprintf('%s just created a draft version %d for node %d in language %s', $this->getUser()->getUsername(), $event->getNodeVersion()->getId(), $event->getNode()->getId(), $event->getNodeTranslation()->getLang()));
137
    }
138
}
139