profile
viewpoint
If you are wondering where the data of this site comes from, please visit https://api.github.com/users/tsteur/events. GitMemory does not store any data, but only uses NGINX to cache data for a period of time. The idea behind GitMemory is simply to give users a better reading experience.
Thomas Steur tsteur @innocraft https://buymeacoff.ee/tsteur Matomo (formerly Piwik) Core Engineer

tsteur/open-source-tag-manager 43

Backup of seventag when it was still open source

tsteur/php-dev-vm 20

PHP Development VM using Vagrant + Puppet

tsteur/django-dev-vm 6

Creates a virtual machine using vagrant and puppet to develop Django apps

tsteur/matomo-livetab-plugin 4

Matomo plugin to keep an eye on the number of live visitors in the browser tab.

matomo-org/plugin-DeviceDetectorCache 3

Makes tracking in Matomo Analytics faster by detecting many devices, operating systems, bots, and browsers from a cache.

tsteur/piwik-mobile 1

Piwik Mobile Client - Official git mirror of the Piwik Mobile 1.x svn repository

tsteur/PiwikLdap 1

LDAP Login plugin for Piwik 2.x

sagarvaishnav/matomo 0

Liberating Web Analytics. Star us on Github? +1. Matomo is the leading open alternative to Google Analytics that gives you full control over your data. Matomo lets you easily collect data from websites & apps and visualise this data and extract insights. Privacy is built-in. We love Pull Requests!

tsteur/BotTracker 0

BotTracker-Plugin for Piwik

Pull request review commentmatomo-org/device-detector

Adds detection brand Dell model: XPS 13 9360

 protected function hasAndroidMobileFragment(): bool         return !!$this->matchUserAgent($regex);     } +    /**+     * Returns if the parsed UA contains the 'Android; Mobile;' fragment

The comment is incorrect.

sanchezzzhak

comment created time in 44 minutes

issue commentmatomo-org/plugin-GoogleAnalyticsImporter

Missing most week, month, year reports after import

That sound's great, thank you @diosmosis!!

alimony

comment created time in an hour

pull request commentmatomo-org/matomo

Make archiving process to respect process_new_segments_from settings

@flamisz @tsteur left two new comments

I can see only one

flamisz

comment created time in 3 hours

Pull request review commentmatomo-org/matomo

Make archiving process to respect process_new_segments_from settings

 public function canSkipThisArchive()         $hasSiteVisitsBetweenTimeframe = $this->hasSiteVisitsBetweenTimeframe($idSite, $params->getPeriod());         $hasChildArchivesInPeriod = $this->dataAccessModel->hasChildArchivesInPeriod($idSite, $params->getPeriod()); +        if ($this->canSkipArchiveForSegment()) {+            return true;+        }+         return $isWebsiteUsingTracker             && !$isArchivingForcedWhenNoVisits             && !$hasSiteVisitsBetweenTimeframe             && !$hasChildArchivesInPeriod;     } +    public function canSkipArchiveForSegment()+    {+        $params = $this->params;++        if ($params->getSegment()->isEmpty()) {+            return false;+        }++        $idSite = $params->getSite()->getId();+        $periodEnd = $params->getPeriod()->getDateEnd();+        $segmentHash = $params->getSegment()->getHash();+        /** @var SegmentArchiving */+        $segmentArchiving = StaticContainer::get(SegmentArchiving::class);+        $segmentInfo = $segmentArchiving->findSegmentForHash($segmentHash, $idSite);++        if (!$segmentInfo) {+            return false;+        }++        $segmentArchiveStartDate = $segmentArchiving->getReArchiveSegmentStartDate($segmentInfo);++        if ($segmentArchiveStartDate !==null && $segmentArchiveStartDate->isLater($periodEnd->getEndOfDay())) {+            $doneFlag = Rules::getDoneStringFlagFor(+                [$idSite],+                $params->getSegment(),+                $params->getPeriod()->getLabel(),+                $params->getRequestedPlugin()+            );++            // no specific report request+            // if there is no invalidation where the report is null, we can skip+            // if we have invalidations for the period and name, but only for a specific reports, we can skip+            if (!$params->getArchiveOnlyReport() && !$this->dataAccessModel->hasInvalidationForPeriodAndName($idSite, $params->getPeriod(), $doneFlag)) {+                return true;+            }++            // specific report request+            // we only want to rearchive if we have invalidation for that report+            // if we don't find invalidation for that report, we can skip+            if ($params->getArchiveOnlyReport() && !$this->dataAccessModel->hasInvalidationForPeriodAndName($idSite, $params->getPeriod(), $doneFlag, $params->getArchiveOnlyReport())) {+                return true;+            }

good question. To be honest, I'm not sure, can't remember exactly, but probably you are right. Needs to be tested to make sure.

flamisz

comment created time in 3 hours

push eventmatomo-org/matomo

Zoltan Flamis

commit sha 29d044432305f7d237c068d0714940ea234b179b

add other mouse events

view details

push time in 3 hours

pull request commentmatomo-org/matomo

Make archiving process to respect process_new_segments_from settings

@flamisz @tsteur left two new comments

flamisz

comment created time in 3 hours

Pull request review commentmatomo-org/matomo

Make archiving process to respect process_new_segments_from settings

 public function canSkipThisArchive()         $hasSiteVisitsBetweenTimeframe = $this->hasSiteVisitsBetweenTimeframe($idSite, $params->getPeriod());         $hasChildArchivesInPeriod = $this->dataAccessModel->hasChildArchivesInPeriod($idSite, $params->getPeriod()); +        if ($this->canSkipArchiveForSegment()) {+            return true;+        }+         return $isWebsiteUsingTracker             && !$isArchivingForcedWhenNoVisits             && !$hasSiteVisitsBetweenTimeframe             && !$hasChildArchivesInPeriod;     } +    public function canSkipArchiveForSegment()+    {+        $params = $this->params;++        if ($params->getSegment()->isEmpty()) {+            return false;+        }++        $idSite = $params->getSite()->getId();+        $periodEnd = $params->getPeriod()->getDateEnd();+        $segmentHash = $params->getSegment()->getHash();+        /** @var SegmentArchiving */+        $segmentArchiving = StaticContainer::get(SegmentArchiving::class);+        $segmentInfo = $segmentArchiving->findSegmentForHash($segmentHash, $idSite);++        if (!$segmentInfo) {+            return false;+        }++        $segmentArchiveStartDate = $segmentArchiving->getReArchiveSegmentStartDate($segmentInfo);++        if ($segmentArchiveStartDate !==null && $segmentArchiveStartDate->isLater($periodEnd->getEndOfDay())) {+            $doneFlag = Rules::getDoneStringFlagFor(+                [$idSite],+                $params->getSegment(),+                $params->getPeriod()->getLabel(),+                $params->getRequestedPlugin()+            );++            // no specific report request+            // if there is no invalidation where the report is null, we can skip+            // if we have invalidations for the period and name, but only for a specific reports, we can skip+            if (!$params->getArchiveOnlyReport() && !$this->dataAccessModel->hasInvalidationForPeriodAndName($idSite, $params->getPeriod(), $doneFlag)) {+                return true;+            }++            // specific report request+            // we only want to rearchive if we have invalidation for that report+            // if we don't find invalidation for that report, we can skip+            if ($params->getArchiveOnlyReport() && !$this->dataAccessModel->hasInvalidationForPeriodAndName($idSite, $params->getPeriod(), $doneFlag, $params->getArchiveOnlyReport())) {+                return true;+            }

Could the two ifs above be simplified to just:

return !$this->dataAccessModel->hasInvalidationForPeriodAndName($idSite, $params->getPeriod(), $doneFlag, $params->getArchiveOnlyReport());

?

Since archive only report will be empty when it's not set, we can just pass it as is, right?

flamisz

comment created time in 3 hours

Pull request review commentmatomo-org/matomo

Make archiving process to respect process_new_segments_from settings

 private function invalidateWithSegments($idSites, $date, $period, $_forceInvalid                 if ($this->canWeSkipInvalidatingBecauseThereIsAUsablePeriod($params, $doNotIncludeTtlInExistingArchiveCheck)) {                     $this->logger->debug('  Found usable archive for {archive}, skipping invalidation.', ['archive' => $params]);                 } else {+                    if (empty($this->segmentArchiving)) {+                        // might not be initialised if init is not called+                        $this->segmentArchiving = StaticContainer::get(SegmentArchiving::class);+                    }+                    $segmentHash = $params->getSegment()->getHash();+                    $segmentInfo = $this->segmentArchiving->findSegmentForHash($segmentHash, $idSite);+                    $periodEnd = $params->getPeriod()->getDateEnd();++                    if ($segmentInfo) {+                        $segmentArchiveStartDate = $this->segmentArchiving->getReArchiveSegmentStartDate($segmentInfo);++                        if ($segmentArchiveStartDate !== null && $segmentArchiveStartDate->isLater($periodEnd->getEndOfDay())) {+                            // the system is not allowed to invalidate reports for this period+                            // automatically, only a user can specifically invalidate+                            continue;+                        }+                    }

@flamisz this wasn't addressed, did you discuss it w/ @tsteur or something?

flamisz

comment created time in 3 hours

issue commentmatomo-org/matomo

When requesting Date Range or Custom Segment, only archive the requested record

@tsteur this would be a high value improvement for UI performance and reducing DB usage, significantly in some cases. Sounds good to schedule it in a 4.x.0 :rocket:

mattab

comment created time in 3 hours

push eventmatomo-org/matomo

Zoltan Flamis

commit sha 8d6a6d005298ebfe487ba19229a19b0460e87337

check for multiple click listeners

view details

push time in 4 hours

created tagmatomo-org/plugin-GoogleAnalyticsImporter

tag4.1.4

Google Analytics to Matomo importer

created time in 5 hours

delete branch matomo-org/plugin-GoogleAnalyticsImporter

delete branch : new-release

delete time in 5 hours

push eventmatomo-org/plugin-GoogleAnalyticsImporter

diosmosis

commit sha 0fc7be3e344757dcec28a536dcd74562688f921f

bump version

view details

dizzy

commit sha 6f3bebf4aedc40531bbd6b8070846aa3b93c92b2

Merge pull request #182 from matomo-org/new-release bump version

view details

push time in 5 hours

create barnchmatomo-org/plugin-GoogleAnalyticsImporter

branch : new-release

created branch time in 5 hours

delete branch matomo-org/plugin-GoogleAnalyticsImporter

delete branch : trim-inputs

delete time in 5 hours

push eventmatomo-org/plugin-GoogleAnalyticsImporter

diosmosis

commit sha 6ad4f36c4d8d2ebafe2ea20ee7d2f399e414240a

trim property/view/account ID when starting an import to avoid errors on typos

view details

dizzy

commit sha ba0275160a7d7b9ace8ecd156bce5f0abcc82e9c

Merge pull request #180 from matomo-org/trim-inputs trim property/view/account ID when starting an import to avoid errors on typos

view details

push time in 5 hours

PR merged matomo-org/plugin-GoogleAnalyticsImporter

trim property/view/account ID when starting an import to avoid errors on typos

This can likely be an annoying/frustrating error to encounter, especially as the error is not very clear

+5 -5

0 comment

2 changed files

diosmosis

pr closed time in 5 hours

PR opened matomo-org/matomo

Outlink tracking when DOM modified

Description:

fixes #15780

Review

  • [ ] Functional review done
  • [ ] Potential edge cases thought about (behavior of the code with strange input, with strange internal state or possible interactions with other Matomo subsystems)
  • [ ] Usability review done (is anything maybe unclear or think about anything that would cause people to reach out to support)
  • [ ] Security review done see checklist
  • [ ] Code review done
  • [ ] Tests were added if useful/possible
  • [ ] Reviewed for breaking changes
  • [ ] Developer changelog updated if needed
  • [ ] Documentation added if needed
  • [ ] Existing documentation updated if needed
+24 -8

0 comment

1 changed file

pr created time in 6 hours

create barnchmatomo-org/matomo

branch : 15780-outlink-tracker-added-links

created branch time in 6 hours

delete branch matomo-org/plugin-GoogleAnalyticsImporter

delete branch : import-was-cancelled-skip

delete time in 6 hours

push eventmatomo-org/plugin-GoogleAnalyticsImporter

diosmosis

commit sha 13e4235105587f8db1e339364707860daebbaf34

Catch cancelled import exceptions and do not propagate in import reports command so they will not appear as errors.

view details

dizzy

commit sha 8d2197b5bc1515224317966c67ffbd14981d8556

Merge pull request #181 from matomo-org/import-was-cancelled-skip Catch cancelled import exceptions and do not propagate in import reports command

view details

push time in 6 hours

delete branch matomo-org/matomo

delete branch : allow-invalidating-empty-site

delete time in 6 hours

push eventmatomo-org/matomo

dizzy

commit sha 929d2ffe7d3392ece2348a50315576f349668b53

Allow invalidating empty site (#17519) * allow invalidating empty sites (since some sites can have no visits but need to be invalidated at week or higher periods) * if skipping archiving, and there are existing archives found, use them instead of assuming 0 visits * fix test

view details

push time in 6 hours

PR merged matomo-org/matomo

Allow invalidating empty site Needs Review Regression

Description:

Some sites can legitimately have 0 visits, like sites imported from google. While debugging the GoogleAnalyticsImporter test failures I noticed nothing was being invalidated because of this check. Removing it in this PR.

Review

  • [ ] Functional review done
  • [ ] Potential edge cases thought about (behavior of the code with strange input, with strange internal state or possible interactions with other Matomo subsystems)
  • [ ] Usability review done (is anything maybe unclear or think about anything that would cause people to reach out to support)
  • [ ] Security review done see checklist
  • [ ] Code review done
  • [ ] Tests were added if useful/possible
  • [ ] Reviewed for breaking changes
  • [ ] Developer changelog updated if needed
  • [ ] Documentation added if needed
  • [ ] Existing documentation updated if needed
+15 -9

5 comments

3 changed files

diosmosis

pr closed time in 6 hours

push eventmatomo-org/matomo

diosmosis

commit sha 538a1425d5e8cd9e449923a141d37741ea2f6582

fix test

view details

push time in 7 hours

pull request commentmatomo-org/matomo

Allow invalidating empty site

@tsteur found another regression causing the importer tests to fail, added in the latest commit.

diosmosis

comment created time in 8 hours

push eventmatomo-org/matomo

diosmosis

commit sha c2f2ea56586e4c9c45232617329bee40898a19d0

if skipping archiving, and there are existing archives found, use them instead of assuming 0 visits

view details

push time in 8 hours