diff options
author | dizzy <diosmosis@users.noreply.github.com> | 2021-02-15 08:40:42 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-15 08:40:42 +0300 |
commit | 060d4a80d93bacfbebaf9b149404aeac11fcc30c (patch) | |
tree | 49e9c82e366cf1d793ba2360677381d71b7712ba /core | |
parent | d81997eaf7ae120c2d0090f6505cae92e9a1b109 (diff) |
do not end up creating done flags like "done." (#17215)
* do not end up creating done flags like "done."
* Add update file
* Fix LoaderTest.
* fix test
Diffstat (limited to 'core')
-rw-r--r-- | core/ArchiveProcessor/Rules.php | 4 | ||||
-rw-r--r-- | core/DataAccess/ArchiveSelector.php | 12 | ||||
-rw-r--r-- | core/Updates/4.1.2-b2.php | 51 | ||||
-rw-r--r-- | core/Version.php | 2 |
4 files changed, 62 insertions, 7 deletions
diff --git a/core/ArchiveProcessor/Rules.php b/core/ArchiveProcessor/Rules.php index 24acf8a434..5a857a3eda 100644 --- a/core/ArchiveProcessor/Rules.php +++ b/core/ArchiveProcessor/Rules.php @@ -51,7 +51,9 @@ class Rules */ public static function getDoneStringFlagFor(array $idSites, $segment, $periodLabel, $plugin) { - if (!self::shouldProcessReportsAllPlugins($idSites, $segment, $periodLabel)) { + if (!empty($plugin) + && !self::shouldProcessReportsAllPlugins($idSites, $segment, $periodLabel) + ) { return self::getDoneFlagArchiveContainsOnePlugin($segment, $plugin); } return self::getDoneFlagArchiveContainsAllPlugins($segment); diff --git a/core/DataAccess/ArchiveSelector.php b/core/DataAccess/ArchiveSelector.php index 3add5cee7d..d2c03e74f7 100644 --- a/core/DataAccess/ArchiveSelector.php +++ b/core/DataAccess/ArchiveSelector.php @@ -70,9 +70,10 @@ class ArchiveSelector $requestedPlugin = $params->getRequestedPlugin(); $segment = $params->getSegment(); $plugins = array("VisitsSummary", $requestedPlugin); + $plugins = array_filter($plugins); $doneFlags = Rules::getDoneFlags($plugins, $segment); - $requestedPluginDoneFlags = Rules::getDoneFlags([$requestedPlugin], $segment); + $requestedPluginDoneFlags = empty($requestedPlugin) ? [] : Rules::getDoneFlags([$requestedPlugin], $segment); $doneFlagValues = Rules::getSelectableDoneFlagValues($includeInvalidated === null ? true : $includeInvalidated, $params, $includeInvalidated === null); $results = self::getModel()->getArchiveIdAndVisits($numericTable, $idSite, $period, $dateStartIso, $dateEndIso, null, $doneFlags); @@ -80,7 +81,8 @@ class ArchiveSelector return [false, false, false, false, false]; } - $result = self::findArchiveDataWithLatestTsArchived($results, $requestedPluginDoneFlags); + $result = self::findArchiveDataWithLatestTsArchived($results, + array_merge($requestedPluginDoneFlags, [Rules::getDoneFlagArchiveContainsAllPlugins($segment)])); $tsArchived = isset($result['ts_archived']) ? $result['ts_archived'] : false; $visits = isset($result['nb_visits']) ? $result['nb_visits'] : false; @@ -394,10 +396,10 @@ class ArchiveSelector * - the doneFlag value for the latest archive * * @param $results - * @param $requestedPluginDoneFlags + * @param $doneFlags * @return array */ - private static function findArchiveDataWithLatestTsArchived($results, $requestedPluginDoneFlags) + private static function findArchiveDataWithLatestTsArchived($results, $doneFlags) { // find latest idarchive for each done flag $idArchives = []; @@ -416,7 +418,7 @@ class ArchiveSelector ]; foreach ($results as $result) { - if (in_array($result['name'], $requestedPluginDoneFlags) + if (in_array($result['name'], $doneFlags) && in_array($result['idarchive'], $idArchives) ) { $archiveData = $result; diff --git a/core/Updates/4.1.2-b2.php b/core/Updates/4.1.2-b2.php new file mode 100644 index 0000000000..0c38c38480 --- /dev/null +++ b/core/Updates/4.1.2-b2.php @@ -0,0 +1,51 @@ +<?php +/** + * Matomo - free/libre analytics platform + * + * @link https://matomo.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ + +namespace Piwik\Updates; + +use Piwik\Container\StaticContainer; +use Piwik\CronArchive; +use Piwik\DataAccess\ArchiveTableCreator; +use Piwik\Date; +use Piwik\Plugins\SegmentEditor\API; +use Piwik\Archive\ArchiveInvalidator; +use Piwik\ArchiveProcessor\Rules; +use Piwik\Updater; +use Piwik\Updates as PiwikUpdates; +use Piwik\Updater\Migration\Factory as MigrationFactory; + +class Updates_4_1_2_b2 extends PiwikUpdates +{ + /** + * @var MigrationFactory + */ + private $migration; + + public function __construct(MigrationFactory $factory) + { + $this->migration = $factory; + } + + public function doUpdate(Updater $updater) + { + $updater->executeMigrations(__FILE__, $this->getMigrations($updater)); + } + + public function getMigrations(Updater $updater) + { + $migrations = []; + + $tables = ArchiveTableCreator::getTablesArchivesInstalled('numeric'); + foreach ($tables as $table) { + $migrations[] = $this->migration->db->sql("UPDATE `$table` SET `name` = 'done' WHERE `name` = 'done.'"); + } + + return $migrations; + } +}
\ No newline at end of file diff --git a/core/Version.php b/core/Version.php index 43cbfddc57..446e88ff5f 100644 --- a/core/Version.php +++ b/core/Version.php @@ -20,7 +20,7 @@ final class Version * The current Matomo version. * @var string */ - const VERSION = '4.1.2-b1'; + const VERSION = '4.1.2-b2'; const MAJOR_VERSION = 4; public function isStableVersion($version) |