PluginProbe ʕ •ᴥ•ʔ
Matomo Analytics – Powerful, Privacy-First Insights for WordPress / 5.0.3
Matomo Analytics – Powerful, Privacy-First Insights for WordPress v5.0.3
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 / Updates / 4.6.0-b4.php
matomo / app / core / Updates Last commit date
3.12.0-b1.php 2 years ago 3.12.0-b7.php 2 years ago 4.0.0-b1.php 2 years ago 4.0.0-b3.php 2 years ago 4.0.0-rc3.php 2 years ago 4.0.0-rc4.php 2 years ago 4.0.1-b1.php 2 years ago 4.0.4-b1.php 2 years ago 4.1.2-b1.php 2 years ago 4.1.2-b2.php 2 years ago 4.10.0-b1.php 2 years ago 4.11.0-b1.php 2 years ago 4.11.0-rc2.php 2 years ago 4.12.0-b1.php 2 years ago 4.12.0-b2.php 2 years ago 4.12.0-b3.php 2 years ago 4.12.0-b4.php 2 years ago 4.3.0-b3.php 2 years ago 4.3.0-b4.php 2 years ago 4.3.0-rc2.php 2 years ago 4.4.0-b1.php 2 years ago 4.5.0-b1.php 2 years ago 4.6.0-b1.php 2 years ago 4.6.0-b4.php 2 years ago 4.6.2-rc2.php 2 years ago 4.7.0-b2.php 2 years ago 4.7.1-b1.php 2 years ago 5.0.0-b1.php 2 years ago 5.0.0-rc2.php 2 years ago 5.0.0-rc5.php 2 years ago
4.6.0-b4.php
105 lines
1 <?php
2
3 /**
4 * Matomo - free/libre analytics platform
5 *
6 * @link https://matomo.org
7 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
8 *
9 */
10 namespace Piwik\Updates;
11
12 use Piwik\ArchiveProcessor\Rules;
13 use Piwik\Common;
14 use Piwik\DataAccess\ArchiveTableCreator;
15 use Piwik\Db;
16 use Piwik\Plugins\SitesManager\Model;
17 use Piwik\Plugins\VisitFrequency\API as VisitFrequencyAPI;
18 use Piwik\Segment;
19 use Piwik\Segment\SegmentExpression;
20 use Piwik\Updater;
21 use Piwik\Updates as PiwikUpdates;
22 use Piwik\Updater\Migration;
23 use Piwik\Updater\Migration\Factory as MigrationFactory;
24 /**
25 * Update for version 4.6.0-b2.
26 */
27 class Updates_4_6_0_b4 extends PiwikUpdates
28 {
29 /**
30 * @var MigrationFactory
31 */
32 private $migration;
33 public function __construct(MigrationFactory $factory)
34 {
35 $this->migration = $factory;
36 }
37 /**
38 * @param Updater $updater
39 * @return Migration\Db[]
40 */
41 public function getMigrations(Updater $updater)
42 {
43 $migrations = [];
44 $sites = new Model();
45 $idSites = $sites->getSitesId();
46 $doneFlagsToMigrate = [];
47 foreach ($idSites as $idSite) {
48 $segmentStrings = Rules::getSegmentsToProcess([$idSite]);
49 foreach ($segmentStrings as $segmentString) {
50 try {
51 $segment = new Segment($segmentString, [$idSite]);
52 } catch (\Exception $e) {
53 continue;
54 }
55 if ($segment->getOriginalString() === $segment->getString()) {
56 continue;
57 }
58 $segmentsToAppend = [VisitFrequencyAPI::NEW_VISITOR_SEGMENT, VisitFrequencyAPI::RETURNING_VISITOR_SEGMENT];
59 foreach ($segmentsToAppend as $segmentToAppend) {
60 // we need to migrate the existing archive
61 $oldSegmentString = Segment::combine($segment->getString(), SegmentExpression::AND_DELIMITER, $segmentToAppend);
62 $newSegmentString = Segment::combine($segment->getOriginalString(), SegmentExpression::AND_DELIMITER, $segmentToAppend);
63 $oldSegmentHash = Segment::getSegmentHash($oldSegmentString);
64 $newSegmentHash = Segment::getSegmentHash($newSegmentString);
65 if ($oldSegmentHash === $newSegmentHash) {
66 continue;
67 }
68 $doneFlagsToMigrate['done' . $oldSegmentHash . '.Goals'] = 'done' . $newSegmentHash . '.Goals';
69 $doneFlagsToMigrate['done' . $oldSegmentHash . '.VisitsSummary'] = 'done' . $newSegmentHash . '.VisitsSummary';
70 $doneFlagsToMigrate['done' . $oldSegmentHash . '.UserCountry'] = 'done' . $newSegmentHash . '.UserCountry';
71 }
72 }
73 }
74 if (!empty($doneFlagsToMigrate)) {
75 foreach (ArchiveTableCreator::getTablesArchivesInstalled() as $table) {
76 if (strpos($table, 'numeric') === false) {
77 continue;
78 }
79 $sqlPlaceholders = Common::getSqlStringFieldsArray($doneFlagsToMigrate);
80 $bind = array_keys($doneFlagsToMigrate);
81 $selectSql = sprintf('SELECT 1 FROM %s where `name` in (%s) LIMIT 1', $table, $sqlPlaceholders);
82 $archiveTableHasDoneFlags = Db::fetchOne($selectSql, $bind);
83 if (!$archiveTableHasDoneFlags) {
84 continue;
85 }
86 $sql = 'update ' . $table . ' set `name` = (case';
87 foreach ($doneFlagsToMigrate as $oldDoneFlag => $newDoneFlag) {
88 $sql .= " when `name` = '{$oldDoneFlag}' then '{$newDoneFlag}' ";
89 }
90 $sql .= ' else `name` end) where `name` in (' . $sqlPlaceholders . ')';
91 Db::query($sql, $bind);
92 $migrations[] = $this->migration->db->boundSql($sql, $bind, [Migration\Db\Sql::ERROR_CODE_DUPLICATE_ENTRY]);
93 }
94 }
95 return $migrations;
96 }
97 /**
98 * @param Updater $updater
99 */
100 public function doUpdate(Updater $updater)
101 {
102 $updater->executeMigrations(__FILE__, $this->getMigrations($updater));
103 }
104 }
105