PluginProbe ʕ •ᴥ•ʔ
Matomo Analytics – Powerful, Privacy-First Insights for WordPress / 5.7.0
Matomo Analytics – Powerful, Privacy-First Insights for WordPress v5.7.0
5.13.0 5.12.1 5.12.0 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 / RequestHandlerTrait.php
matomo / app / core / Tracker Last commit date
Config 6 months ago Db 8 months ago Handler 2 years ago Visit 1 year ago Action.php 1 year ago ActionPageview.php 2 years ago BotRequest.php 6 months ago BotRequestProcessor.php 6 months ago Cache.php 8 months ago Db.php 1 year ago Failures.php 8 months ago FingerprintSalt.php 1 year ago GoalManager.php 7 months ago Handler.php 2 years ago IgnoreCookie.php 1 year ago LogTable.php 1 year ago Model.php 8 months ago PageUrl.php 8 months ago Request.php 6 months ago RequestHandlerTrait.php 6 months ago RequestProcessor.php 1 year ago RequestSet.php 8 months ago Response.php 1 year ago ScheduledTasksRunner.php 1 year ago Settings.php 1 year ago TableLogAction.php 8 months ago TrackerCodeGenerator.php 1 year ago TrackerConfig.php 6 months ago Visit.php 6 months ago VisitExcluded.php 6 months ago VisitInterface.php 2 years ago Visitor.php 1 year ago VisitorNotFoundInDb.php 2 years ago VisitorRecognizer.php 1 year ago
RequestHandlerTrait.php
72 lines
1 <?php
2
3 /**
4 * Matomo - free/libre analytics platform
5 *
6 * @link https://matomo.org
7 * @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
8 */
9 declare (strict_types=1);
10 namespace Piwik\Tracker;
11
12 use Piwik\Container\StaticContainer;
13 use Piwik\Date;
14 use Piwik\Exception\UnexpectedWebsiteFoundException;
15 use Piwik\Plugins\UserCountry\Columns\Base;
16 trait RequestHandlerTrait
17 {
18 protected $fieldsThatRequireAuth = ['city', 'region', 'country', 'lat', 'long'];
19 protected function checkSiteExists(\Piwik\Tracker\Request $request) : void
20 {
21 try {
22 $request->getIdSite();
23 } catch (UnexpectedWebsiteFoundException $e) {
24 $idSite = $request->getRawParams()['idsite'] ?? null;
25 if (is_numeric($idSite) && (string) (int) $idSite === (string) $idSite && (int) $idSite >= 0) {
26 // only log a failure in case the provided idsite was valid positive integer
27 StaticContainer::get(\Piwik\Tracker\Failures::class)->logFailure(\Piwik\Tracker\Failures::FAILURE_ID_INVALID_SITE, $request);
28 }
29 throw $e;
30 }
31 }
32 protected function validateRequest(\Piwik\Tracker\Request $request) : void
33 {
34 // Check for params that aren't allowed to be included unless the request is authenticated
35 foreach ($this->fieldsThatRequireAuth as $field) {
36 Base::getValueFromUrlParamsIfAllowed($field, $request);
37 }
38 // Special logic for timestamp as some overrides are OK without auth and others aren't
39 $request->getCurrentTimestamp();
40 }
41 protected function markArchivedReportsAsInvalidIfArchiveAlreadyFinished(\Piwik\Tracker\Request $request) : void
42 {
43 $idSite = (int) $request->getIdSite();
44 $time = $request->getCurrentTimestamp();
45 $timezone = $this->getTimezoneForSite($idSite);
46 if (!isset($timezone)) {
47 return;
48 }
49 $date = Date::factory((int) $time, $timezone);
50 // $date->isToday() is buggy when server and website timezones don't match - so we'll do our own checking
51 $startOfToday = Date::factoryInTimezone('yesterday', $timezone)->addDay(1);
52 $isLaterThanYesterday = $date->getTimestamp() >= $startOfToday->getTimestamp();
53 if ($isLaterThanYesterday) {
54 return;
55 // don't try to invalidate archives for today or later
56 }
57 StaticContainer::get('Piwik\\Archive\\ArchiveInvalidator')->rememberToInvalidateArchivedReportsLater($idSite, $date);
58 }
59 private function getTimezoneForSite(int $idSite) : ?string
60 {
61 try {
62 $site = \Piwik\Tracker\Cache::getCacheWebsiteAttributes($idSite);
63 } catch (UnexpectedWebsiteFoundException $e) {
64 return null;
65 }
66 if (!empty($site['timezone'])) {
67 return $site['timezone'];
68 }
69 return null;
70 }
71 }
72