33declare (strict_types=1 );
44namespace In2code \Lux \Domain \Tracker ;
55
6- use In2code \Lux \Domain \Model \Page ;
76use In2code \Lux \Domain \Model \Pagevisit ;
87use In2code \Lux \Domain \Model \Visitor ;
98use In2code \Lux \Domain \Repository \PageRepository ;
1312use In2code \Lux \Utility \ObjectUtility ;
1413use Psr \EventDispatcher \EventDispatcherInterface ;
1514use TYPO3 \CMS \Core \Utility \GeneralUtility ;
16- use TYPO3 \CMS \Extbase \Configuration \Exception \InvalidConfigurationTypeException ;
17- use TYPO3 \CMS \Extbase \Persistence \Exception \IllegalObjectTypeException ;
18- use TYPO3 \CMS \Extbase \Persistence \Exception \UnknownObjectException ;
1915
2016class PageTracker
2117{
@@ -33,61 +29,43 @@ public function __construct(
3329 $ this ->eventDispatcher = $ eventDispatcher ;
3430 }
3531
36- /**
37- * @param Visitor $visitor
38- * @param array $arguments
39- * @return Pagevisit|null
40- * @throws IllegalObjectTypeException
41- * @throws InvalidConfigurationTypeException
42- * @throws UnknownObjectException
43- */
4432 public function track (Visitor $ visitor , array $ arguments ): ?Pagevisit
4533 {
4634 $ pageUid = (int )$ arguments ['pageUid ' ];
4735 $ languageUid = (int )$ arguments ['languageUid ' ];
4836 $ referrer = $ arguments ['referrer ' ];
37+ $ pagevisit = null ;
4938 if ($ this ->isTrackingActivated ($ visitor , $ pageUid )) {
50- $ pagevisit = $ this ->getPageVisit ($ pageUid , $ languageUid , $ referrer , $ visitor );
51- $ visitor ->addPagevisit ($ pagevisit );
52- $ visitor ->setVisits ($ visitor ->getNumberOfUniquePagevisits ());
53- $ this ->visitorRepository ->update ($ visitor );
54- $ this ->visitorRepository ->persistAll ();
39+ $ pagevisit = $ this ->getPagevisit ($ pageUid , $ languageUid , $ referrer , $ visitor );
40+ if ($ pagevisit !== null ) {
41+ $ visitor ->addPagevisit ($ pagevisit );
42+ $ visitor ->setVisits ($ visitor ->getNumberOfUniquePagevisits ());
43+ $ this ->visitorRepository ->update ($ visitor );
44+ $ this ->visitorRepository ->persistAll ();
45+ }
5546 $ this ->eventDispatcher ->dispatch (new PageTrackerEvent ($ visitor , $ pagevisit , $ arguments ));
56- return $ pagevisit ;
5747 }
58- return null ;
48+ return $ pagevisit ;
5949 }
6050
61- /**
62- * @param int $pageUid
63- * @param int $languageUid
64- * @param string $referrer
65- * @param Visitor $visitor
66- * @return Pagevisit
67- */
68- protected function getPageVisit (int $ pageUid , int $ languageUid , string $ referrer , Visitor $ visitor ): Pagevisit
51+ protected function getPagevisit (int $ pageUid , int $ languageUid , string $ referrer , Visitor $ visitor ): ?Pagevisit
6952 {
70- /** @var Pagevisit $pageVisit */
71- $ pageVisit = GeneralUtility::makeInstance (Pagevisit::class);
7253 $ pageRepository = GeneralUtility::makeInstance (PageRepository::class);
73- /** @var Page $page */
7454 $ page = $ pageRepository ->findByUid ($ pageUid );
75- $ pageVisit
76- ->setPage ($ page )
77- ->setSite ($ this ->siteService ->getSiteIdentifierFromPageIdentifier ($ pageUid ))
78- ->setLanguage ($ languageUid )
79- ->setReferrer ($ referrer )
80- ->setDomainAutomatically ()
81- ->setVisitor ($ visitor );
82- return $ pageVisit ;
55+ $ pagevisit = null ;
56+ if ($ page !== null ) {
57+ $ pagevisit = GeneralUtility::makeInstance (Pagevisit::class);
58+ $ pagevisit
59+ ->setPage ($ page )
60+ ->setSite ($ this ->siteService ->getSiteIdentifierFromPageIdentifier ($ pageUid ))
61+ ->setLanguage ($ languageUid )
62+ ->setReferrer ($ referrer )
63+ ->setDomainAutomatically ()
64+ ->setVisitor ($ visitor );
65+ }
66+ return $ pagevisit ;
8367 }
8468
85- /**
86- * @param Visitor $visitor
87- * @param int $pageUid
88- * @return bool
89- * @throws InvalidConfigurationTypeException
90- */
9169 protected function isTrackingActivated (Visitor $ visitor , int $ pageUid ): bool
9270 {
9371 return $ pageUid > 0 && $ visitor ->isNotBlacklisted () && $ this ->isTrackingActivatedInSettings ();
@@ -97,7 +75,6 @@ protected function isTrackingActivated(Visitor $visitor, int $pageUid): bool
9775 * Check if tracking of pagevisits is turned on via TypoScript
9876 *
9977 * @return bool
100- * @throws InvalidConfigurationTypeException
10178 */
10279 protected function isTrackingActivatedInSettings (): bool
10380 {
0 commit comments