PluginProbe ʕ •ᴥ•ʔ
Matomo Analytics – Powerful, Privacy-First Insights for WordPress / 1.3.1
Matomo Analytics – Powerful, Privacy-First Insights for WordPress v1.3.1
5.11.1 5.11.0 5.10.2 5.10.1 trunk 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.3.0 1.3.1 1.3.2 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.1.0 4.1.1 4.1.2 4.1.3 4.10.0 4.11.0 4.12.0 4.13.0 4.13.2 4.13.3 4.13.4 4.13.5 4.14.0 4.14.1 4.14.2 4.15.0 4.15.1 4.15.2 4.15.3 4.2.0 4.3.0 4.3.1 4.4.1 4.4.2 4.5.0 4.6.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 5.0.8 5.1.0 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5 5.1.6 5.1.7 5.10.0 5.2.0 5.2.1 5.2.2 5.3.0 5.3.1 5.3.2 5.3.3 5.6.0 5.6.1 5.7.0 5.7.1 5.8.0 5.8.1 5.8.2
matomo / app / core / Tracker / Handler.php
matomo / app / core / Tracker Last commit date
Db 6 years ago Handler 6 years ago TableLogAction 6 years ago Visit 6 years ago Action.php 6 years ago ActionPageview.php 6 years ago Cache.php 6 years ago Db.php 6 years ago Failures.php 6 years ago FingerprintSalt.php 6 years ago GoalManager.php 6 years ago Handler.php 6 years ago IgnoreCookie.php 6 years ago LogTable.php 6 years ago Model.php 6 years ago PageUrl.php 6 years ago Request.php 5 years ago RequestProcessor.php 6 years ago RequestSet.php 6 years ago Response.php 6 years ago ScheduledTasksRunner.php 6 years ago Settings.php 5 years ago TableLogAction.php 6 years ago TrackerCodeGenerator.php 6 years ago TrackerConfig.php 6 years ago Visit.php 5 years ago VisitExcluded.php 6 years ago VisitInterface.php 6 years ago Visitor.php 6 years ago VisitorNotFoundInDb.php 6 years ago VisitorRecognizer.php 6 years ago
Handler.php
135 lines
1 <?php
2 /**
3 * Piwik - free/libre analytics platform
4 *
5 * @link https://matomo.org
6 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
7 *
8 */
9
10 namespace Piwik\Tracker;
11
12 use Piwik\Common;
13 use Piwik\Container\StaticContainer;
14 use Piwik\Exception\InvalidRequestParameterException;
15 use Piwik\Exception\UnexpectedWebsiteFoundException;
16 use Piwik\Tracker;
17 use Exception;
18 use Piwik\Url;
19 use Psr\Log\LoggerInterface;
20
21 class Handler
22 {
23 /**
24 * @var Response
25 */
26 private $response;
27
28 /**
29 * @var ScheduledTasksRunner
30 */
31 private $tasksRunner;
32
33 /**
34 * @var LoggerInterface
35 */
36 private $logger;
37
38 public function __construct()
39 {
40 $this->setResponse(new Response());
41 $this->logger = StaticContainer::get(LoggerInterface::class);
42 }
43
44 public function setResponse($response)
45 {
46 $this->response = $response;
47 }
48
49 public function init(Tracker $tracker, RequestSet $requestSet)
50 {
51 $this->response->init($tracker);
52 }
53
54 public function process(Tracker $tracker, RequestSet $requestSet)
55 {
56 foreach ($requestSet->getRequests() as $request) {
57 $tracker->trackRequest($request);
58 }
59 }
60
61 public function onStartTrackRequests(Tracker $tracker, RequestSet $requestSet)
62 {
63 }
64
65 public function onAllRequestsTracked(Tracker $tracker, RequestSet $requestSet)
66 {
67 $tasks = $this->getScheduledTasksRunner();
68 if ($tasks->shouldRun($tracker)) {
69 $tasks->runScheduledTasks();
70 }
71 }
72
73 private function getScheduledTasksRunner()
74 {
75 if (is_null($this->tasksRunner)) {
76 $this->tasksRunner = new ScheduledTasksRunner();
77 }
78
79 return $this->tasksRunner;
80 }
81
82 /**
83 * @internal
84 */
85 public function setScheduledTasksRunner(ScheduledTasksRunner $runner)
86 {
87 $this->tasksRunner = $runner;
88 }
89
90 public function onException(Tracker $tracker, RequestSet $requestSet, Exception $e)
91 {
92 $statusCode = 500;
93 if ($e instanceof UnexpectedWebsiteFoundException) {
94 $statusCode = 400;
95 } elseif ($e instanceof InvalidRequestParameterException) {
96 $statusCode = 400;
97 }
98
99 // if an internal server error, log as a real error, otherwise it's just malformed input
100 if ($statusCode == 500) {
101 $this->logger->error('Exception: {exception}', [
102 'exception' => $e,
103 ]);
104 } else {
105 $this->logger->debug('Exception: {exception}', [
106 'exception' => $e,
107 ]);
108 }
109
110 $this->response->outputException($tracker, $e, $statusCode);
111 $this->redirectIfNeeded($requestSet);
112 }
113
114 public function finish(Tracker $tracker, RequestSet $requestSet)
115 {
116 $this->response->outputResponse($tracker);
117 $this->redirectIfNeeded($requestSet);
118 return $this->response->getOutput();
119 }
120
121 public function getResponse()
122 {
123 return $this->response;
124 }
125
126 protected function redirectIfNeeded(RequestSet $requestSet)
127 {
128 $redirectUrl = $requestSet->shouldPerformRedirectToUrl();
129
130 if (!empty($redirectUrl)) {
131 Url::redirectToUrl($redirectUrl);
132 }
133 }
134 }
135