1
0
قرینه از https://github.com/matomo-org/matomo.git synced 2025-08-24 16:07:37 +00:00
Files
matomo/plugins/PrivacyManager/tests/Integration/Model/DataSubjectsTest.php
Stefan Giehl d6d72d1fa7 [Coding Style] Enable rule PSR1.Methods.CamelCapsMethodName.NotCamelCaps (#22144)
* [Coding Style] Enable rule PSR1.Methods.CamelCapsMethodName.NotCamelCaps

* [Coding Style] Use camel case for method names in API plugin tests (#22145)

* [Coding Style] Use camel case for method names in Core* plugin tests (#22147)

* [Coding Style] Use camel case for method names in core Unit tests (#22149)

* [Coding Style] Use camel case for method names in Actions and BulkTracking plugin tests (#22146)

* [Coding Style] Use camel case for method names in CustomDimensions and CustomJSTracker plugin tests (#22148)

* [Coding Style] Use camel case for method names in core Integration tests (#22151)

* [Coding Style] Use camel case for method names in more core plugin tests (#22153)

* [Coding Style] Use camel case for method names in more core plugin tests (#22157)

* [Coding Style] Use camel case for method names in more core plugin tests

* Update plugins/Monolog/tests/Unit/Processor/ExceptionToTextProcessorTest.php

Co-authored-by: Michal Kleiner <michal@innocraft.com>

---------

Co-authored-by: Michal Kleiner <michal@innocraft.com>

* [Coding Style] Use camel case for method names in more core plugin tests (#22159)

* [Coding Style] Use camel case for method names in remaining tests (#22160)

* [Coding Style] Use camel case for method names in remaining tests

* rename expected test files

---------

Co-authored-by: Michal Kleiner <michal@innocraft.com>
2024-04-25 20:57:55 +02:00

615 خطوط
24 KiB
PHP

<?php
/**
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
namespace Piwik\Plugins\PrivacyManager\tests\Integration\Model;
use Piwik\Common;
use Piwik\Container\StaticContainer;
use Piwik\Date;
use Piwik\Db;
use Piwik\Option;
use Piwik\Plugins\PrivacyManager\Model\DataSubjects;
use Piwik\Plugins\PrivacyManager\tests\Fixtures\MultipleSitesMultipleVisitsFixture;
use Piwik\Plugins\PrivacyManager\tests\Fixtures\TestLogFoo;
use Piwik\Plugins\PrivacyManager\tests\Fixtures\TestLogFooBar;
use Piwik\Plugins\PrivacyManager\tests\Fixtures\TestLogFooBarBaz;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
use Piwik\Plugins\SitesManager\API as SitesManagerAPI;
/**
* Class DataSubjectsTest
*
* @group DataSubjectsTest
* @group Plugins
*/
class DataSubjectsTest extends IntegrationTestCase
{
/**
* @var DataSubjects
*/
private $dataSubjects;
/**
* @var MultipleSitesMultipleVisitsFixture
*/
private $theFixture;
private $originalTrackingTime;
private $originalTimezone;
public function setUp(): void
{
parent::setUp();
$this->theFixture = new MultipleSitesMultipleVisitsFixture();
$this->theFixture->installLogTables();
$this->theFixture->setUpLocation();
$logTablesProvider = StaticContainer::get('Piwik\Plugin\LogTablesProvider');
$this->dataSubjects = new DataSubjects($logTablesProvider);
$this->originalTimezone = ini_get('date.timezone');
$this->originalTrackingTime = $this->theFixture->trackingTime;
}
public function tearDown(): void
{
$this->theFixture->uninstallLogTables();
$this->theFixture->tearDownLocation();
$this->removeArchiveInvalidationOptions();
ini_set('date.timezone', $this->originalTimezone);
$this->theFixture->trackingTime = $this->originalTrackingTime;
}
public function testDeleteDataSubjectsWithoutInvalidatingArchivesDeleteVisitsWithoutIdsite()
{
$this->theFixture->setUpWebsites();
$this->theFixture->trackVisits($idSite = 1, 1);
$this->assertNotEmpty($this->getVisit(1, 1));
$this->assertNotEmpty($this->getLinkAction(1, 1));
$this->assertNotEmpty($this->getConversion(1, 1));
$this->assertNotEmpty($this->getOneVisit(1, 1, TestLogFoo::TABLE));
$this->assertNotEmpty($this->getVisit(1, 3));
$this->assertNotEmpty($this->getLinkAction(1, 3));
$this->assertNotEmpty($this->getConversion(1, 3));
$this->assertNotEmpty($this->getVisit(1, 2));
$this->assertNotEmpty($this->getLinkAction(1, 2));
$this->assertNotEmpty($this->getOneVisit(1, 2, TestLogFoo::TABLE));
$visits = array(array('idvisit' => 1),array('idvisit' => 3),array('idvisit' => 999));
$result = $this->dataSubjects->deleteDataSubjectsWithoutInvalidatingArchives($visits);
$this->assertEquals(array(
'log_conversion' => 2,
'log_conversion_item' => 0,
'log_link_visit_action' => 12,
'log_visit' => 2,
'log_foo_bar_baz' => 2,
'log_foo_bar' => 2,
'log_foo' => 2
), $result);
$this->assertEmpty($this->getVisit(1, 1));
$this->assertEmpty($this->getLinkAction(1, 1));
$this->assertEmpty($this->getConversion(1, 1));
$this->assertEmpty($this->getOneVisit(1, 1, TestLogFoo::TABLE));
$this->assertEmpty($this->getVisit(1, 3));
$this->assertEmpty($this->getLinkAction(1, 3));
$this->assertEmpty($this->getConversion(1, 3));
$this->assertEmpty($this->getOneVisit(1, 3, TestLogFoo::TABLE));
// idvisit 2 still exists
$this->assertNotEmpty($this->getVisit(1, 2));
$this->assertNotEmpty($this->getLinkAction(1, 2));
$this->assertNotEmpty($this->getOneVisit(1, 2, TestLogFoo::TABLE));
}
public function testDeleteDataSubjectsWithoutInvalidatingArchivesDeleteVisitWithAndWithoutIdSite()
{
$this->theFixture->setUpWebsites();
$this->theFixture->trackVisits($idSite = 1, 1);
$this->assertNotEmpty($this->getVisit(1, 1));
$this->assertNotEmpty($this->getLinkAction(1, 1));
$this->assertNotEmpty($this->getConversion(1, 1));
$this->assertNotEmpty($this->getOneVisit(1, 1, TestLogFoo::TABLE));
$this->assertNotEmpty($this->getVisit(1, 3));
$this->assertNotEmpty($this->getLinkAction(1, 3));
$this->assertNotEmpty($this->getConversion(1, 3));
$this->assertNotEmpty($this->getVisit(1, 2));
$this->assertNotEmpty($this->getLinkAction(1, 2));
$this->assertNotEmpty($this->getOneVisit(1, 2, TestLogFoo::TABLE));
$visits = array(array('idvisit' => 1),array('idvisit' => 3, 'idsite' => 1),array('idvisit' => 999),array('idvisit' => 999, 'idsite' => 999));
$result = $this->dataSubjects->deleteDataSubjectsWithoutInvalidatingArchives($visits);
$this->assertEquals(array(
'log_conversion' => 2,
'log_conversion_item' => 0,
'log_link_visit_action' => 12,
'log_visit' => 2,
'log_foo_bar_baz' => 2,
'log_foo_bar' => 2,
'log_foo' => 2
), $result);
$this->assertEmpty($this->getVisit(1, 1));
$this->assertEmpty($this->getLinkAction(1, 1));
$this->assertEmpty($this->getConversion(1, 1));
$this->assertEmpty($this->getOneVisit(1, 1, TestLogFoo::TABLE));
$this->assertEmpty($this->getVisit(1, 3));
$this->assertEmpty($this->getLinkAction(1, 3));
$this->assertEmpty($this->getConversion(1, 3));
// idvisit 2 still exists
$this->assertNotEmpty($this->getVisit(1, 2));
$this->assertNotEmpty($this->getLinkAction(1, 2));
$this->assertNotEmpty($this->getOneVisit(1, 2, TestLogFoo::TABLE));
}
public function testDeleteExportDeleteOneVisit()
{
$this->theFixture->setUpWebsites();
$this->theFixture->trackVisits($idSite = 1, 1);
$this->assertNotEmpty($this->getVisit(1, 1));
$this->assertNotEmpty($this->getLinkAction(1, 1));
$this->assertNotEmpty($this->getConversion(1, 1));
$this->assertNotEmpty($this->getOneVisit(1, 1, TestLogFoo::TABLE));
$this->assertNotEmpty($this->getVisit(1, 2));
$this->assertNotEmpty($this->getLinkAction(1, 2));
$this->assertNotEmpty($this->getOneVisit(1, 2, TestLogFoo::TABLE));
$result = $this->dataSubjects->deleteDataSubjects(array(array('idsite' => '1', 'idvisit' => 1)));
$this->assertEquals(array(
'log_conversion' => 1,
'log_conversion_item' => 0,
'log_link_visit_action' => 11,
'log_visit' => 1,
'log_foo_bar_baz' => 2,
'log_foo_bar' => 2,
'log_foo' => 2
), $result);
$this->assertEmpty($this->getVisit(1, 1));
$this->assertEmpty($this->getLinkAction(1, 1));
$this->assertEmpty($this->getConversion(1, 1));
$this->assertEmpty($this->getOneVisit(1, 1, TestLogFoo::TABLE));
// idvisit 2 still exists
$this->assertNotEmpty($this->getVisit(1, 2));
$this->assertNotEmpty($this->getLinkAction(1, 2));
$this->assertNotEmpty($this->getOneVisit(1, 2, TestLogFoo::TABLE));
}
public function testDeleteExportDeleteAllVisits()
{
$this->theFixture->setUpWebsites();
$this->theFixture->trackVisits($idSite = 1, 1);
$this->theFixture->trackVisits($idSite = 2, 1);
$this->assertNotEmpty($this->getAllVisits());
$this->assertNotEmpty($this->getAllLinkActions());
$this->assertNotEmpty($this->getAllConversions());
$this->assertNotEmpty($this->getAllConversionItems());
$this->assertNotEmpty($this->getAllLogFoo());
$this->assertNotEmpty($this->getAllLogFooBar());
$this->assertNotEmpty($this->getAllLogFooBarBaz());
$visits = $this->getAllVisits();
$result = $this->dataSubjects->deleteDataSubjects($visits);
$this->assertEquals(array(
'log_conversion' => 32,
'log_conversion_item' => 8,
'log_link_visit_action' => 232,
'log_visit' => 64,
'log_foo_bar_baz' => 2,
'log_foo_bar' => 3,
'log_foo' => 3
), $result);
$this->assertSame(array(), $this->getAllVisits());
$this->assertSame(array(), $this->getAllLinkActions());
$this->assertSame(array(), $this->getAllConversions());
$this->assertSame(array(), $this->getAllConversionItems());
$this->assertSame(array(), $this->getAllLogFoo());
$this->assertSame(array(), $this->getAllLogFooBar());
$this->assertSame(array(), $this->getAllLogFooBarBaz());
}
public function testDeleteDataSubjectsForDeletedSitesRemovesLogDataThatDoesNotBelongToASite()
{
$this->theFixture->setUpWebsites();
$this->theFixture->trackVisits($idSite = 1, 1);
$this->theFixture->trackVisits($idSite = 2, 1);
$this->theFixture->insertOtherLogTableData(2);
$this->theFixture->trackVisits($idSite = 3, 1);
$this->theFixture->insertOtherLogTableData(3);
$this->theFixture->trackVisits($idSite = 4, 1);
$this->theFixture->insertOtherLogTableData(4);
// delete idSite = 2 & idSite = 3
SitesManagerAPI::getInstance()->deleteSite(2);
SitesManagerAPI::getInstance()->deleteSite(3);
// assert visits still exist
$this->assertGreaterThan(0, $this->getVisitCountForSite($idSite = 1));
$this->assertGreaterThan(0, $this->getVisitCountForSite($idSite = 2));
$this->assertGreaterThan(0, $this->getVisitCountForSite($idSite = 3));
$this->assertGreaterThan(0, $this->getVisitCountForSite($idSite = 4));
// purge
$result = $this->dataSubjects->deleteDataSubjectsForDeletedSites(SitesManagerAPI::getInstance()->getAllSitesId());
$this->assertEquals([
'log_visit' => 64,
'log_link_visit_action' => 232,
'log_foo_bar_baz' => 4,
'log_foo_bar' => 6,
'log_foo' => 6,
'log_conversion_item' => 8,
'log_conversion' => 32,
], $result);
// assert new counts
$this->assertGreaterThan(0, $this->getVisitCountForSite($idSite = 1));
$this->assertGreaterThan(0, $this->getLinkActionsCountForSite($idSite = 1));
$this->assertGreaterThan(0, $this->getConversionsCountForSite($idSite = 1));
$this->assertGreaterThan(0, $this->getConversionItemsCountForSite($idSite = 1));
$this->assertGreaterThan(0, $this->getLogFooCountForSite($idSite = 1));
$this->assertEquals(0, $this->getVisitCountForSite($idSite = 2));
$this->assertEquals(0, $this->getLinkActionsCountForSite($idSite = 2));
$this->assertEquals(0, $this->getConversionsCountForSite($idSite = 2));
$this->assertEquals(0, $this->getConversionItemsCountForSite($idSite = 2));
$this->assertEquals(0, $this->getLogFooCountForSite($idSite = 2));
$this->assertEquals(0, $this->getVisitCountForSite($idSite = 3));
$this->assertEquals(0, $this->getLinkActionsCountForSite($idSite = 3));
$this->assertEquals(0, $this->getConversionsCountForSite($idSite = 3));
$this->assertEquals(0, $this->getConversionItemsCountForSite($idSite = 3));
$this->assertEquals(0, $this->getLogFooCountForSite($idSite = 3));
$this->assertGreaterThan(0, $this->getVisitCountForSite($idSite = 4));
$this->assertGreaterThan(0, $this->getLinkActionsCountForSite($idSite = 4));
$this->assertGreaterThan(0, $this->getConversionsCountForSite($idSite = 4));
$this->assertGreaterThan(0, $this->getConversionItemsCountForSite($idSite = 4));
$this->assertGreaterThan(0, $this->getLogFooCountForSite($idSite = 4));
// assert foo bar + foo bar baz (these tables don't have idsite columns)
$this->assertEquals([
['idlogfoobarbaz' => 51, 'idlogfoobar' => 35],
['idlogfoobarbaz' => 52, 'idlogfoobar' => 36],
['idlogfoobarbaz' => 351, 'idlogfoobar' => 335],
['idlogfoobarbaz' => 352, 'idlogfoobar' => 336],
], $this->getAllLogFooBar());
$this->assertEquals([
['idlogfoobar' => 35, 'idlogfoo' => 10],
['idlogfoobar' => 36, 'idlogfoo' => 10],
['idlogfoobar' => 37, 'idlogfoo' => 22],
['idlogfoobar' => 335, 'idlogfoo' => 310],
['idlogfoobar' => 336, 'idlogfoo' => 310],
['idlogfoobar' => 337, 'idlogfoo' => 322],
], $this->getAllLogFooBarBaz());
}
public function testDeleteDataSubjectsForDeletedSitesIgnoresSitesNewerThanThoseInList()
{
$this->theFixture->setUpWebsites();
$this->theFixture->trackVisits($idSite = 1, 1);
$this->theFixture->trackVisits($idSite = 2, 1);
$this->theFixture->insertOtherLogTableData(2);
$this->theFixture->trackVisits($idSite = 3, 1);
$this->theFixture->insertOtherLogTableData(3);
$this->theFixture->trackVisits($idSite = 4, 1);
$this->theFixture->insertOtherLogTableData(4);
// delete idSite = 1
SitesManagerAPI::getInstance()->deleteSite(1);
// assert visits still exist
$this->assertGreaterThan(0, $this->getVisitCountForSite($idSite = 1));
$this->assertGreaterThan(0, $this->getVisitCountForSite($idSite = 2));
$this->assertGreaterThan(0, $this->getVisitCountForSite($idSite = 3));
$this->assertGreaterThan(0, $this->getVisitCountForSite($idSite = 4));
// purge
$result = $this->dataSubjects->deleteDataSubjectsForDeletedSites([2, 3]); // pretending 4 is added while purge is running
$this->assertEquals([
'log_visit' => 32,
'log_link_visit_action' => 116,
'log_foo_bar_baz' => 2,
'log_foo_bar' => 3,
'log_foo' => 3,
'log_conversion_item' => 4,
'log_conversion' => 16,
], $result);
// assert new counts
$this->assertEquals(0, $this->getVisitCountForSite($idSite = 1));
$this->assertEquals(0, $this->getLinkActionsCountForSite($idSite = 1));
$this->assertEquals(0, $this->getConversionsCountForSite($idSite = 1));
$this->assertEquals(0, $this->getConversionItemsCountForSite($idSite = 1));
$this->assertEquals(0, $this->getLogFooCountForSite($idSite = 1));
$this->assertGreaterThan(0, $this->getVisitCountForSite($idSite = 2));
$this->assertGreaterThan(0, $this->getLinkActionsCountForSite($idSite = 2));
$this->assertGreaterThan(0, $this->getConversionsCountForSite($idSite = 2));
$this->assertGreaterThan(0, $this->getConversionItemsCountForSite($idSite = 2));
$this->assertGreaterThan(0, $this->getLogFooCountForSite($idSite = 2));
$this->assertGreaterThan(0, $this->getVisitCountForSite($idSite = 3));
$this->assertGreaterThan(0, $this->getLinkActionsCountForSite($idSite = 3));
$this->assertGreaterThan(0, $this->getConversionsCountForSite($idSite = 3));
$this->assertGreaterThan(0, $this->getConversionItemsCountForSite($idSite = 3));
$this->assertGreaterThan(0, $this->getLogFooCountForSite($idSite = 3));
$this->assertGreaterThan(0, $this->getVisitCountForSite($idSite = 4));
$this->assertGreaterThan(0, $this->getLinkActionsCountForSite($idSite = 4));
$this->assertGreaterThan(0, $this->getConversionsCountForSite($idSite = 4));
$this->assertGreaterThan(0, $this->getConversionItemsCountForSite($idSite = 4));
$this->assertGreaterThan(0, $this->getLogFooCountForSite($idSite = 4));
// assert foo bar + foo bar baz (these tables don't have idsite columns)
$this->assertEquals([
['idlogfoobarbaz' => 151, 'idlogfoobar' => 135],
['idlogfoobarbaz' => 152, 'idlogfoobar' => 136],
['idlogfoobarbaz' => 251, 'idlogfoobar' => 235],
['idlogfoobarbaz' => 252, 'idlogfoobar' => 236],
['idlogfoobarbaz' => 351, 'idlogfoobar' => 335],
['idlogfoobarbaz' => 352, 'idlogfoobar' => 336],
], $this->getAllLogFooBar());
$this->assertEquals([
['idlogfoobar' => 135, 'idlogfoo' => 110],
['idlogfoobar' => 136, 'idlogfoo' => 110],
['idlogfoobar' => 137, 'idlogfoo' => 122],
['idlogfoobar' => 235, 'idlogfoo' => 210],
['idlogfoobar' => 236, 'idlogfoo' => 210],
['idlogfoobar' => 237, 'idlogfoo' => 222],
['idlogfoobar' => 335, 'idlogfoo' => 310],
['idlogfoobar' => 336, 'idlogfoo' => 310],
['idlogfoobar' => 337, 'idlogfoo' => 322],
], $this->getAllLogFooBarBaz());
}
public function testDeleteOneVisitDoesInvalidateArchive()
{
$this->theFixture->setUpWebsites();
$this->theFixture->trackVisits($idSite = 1, 2);
$this->theFixture->insertArchiveRows($idSite, 2);
$this->removeArchiveInvalidationOptions();
$visitDate = Date::factory($this->theFixture->dateTime);
$secondVisitDate = $visitDate->addDay(3);
$this->assertArchivesHaveNotBeenInvalidated($visitDate, $idSite);
$this->dataSubjects->deleteDataSubjects(array(array('idsite' => '1', 'idvisit' => 1)));
$this->assertArchivesHaveBeenInvalidated($visitDate, $idSite);
$this->assertArchivesHaveNotBeenInvalidated($secondVisitDate, $idSite);
}
public function testDeleteTwoVisitsDoesInvalidateArchive()
{
$this->theFixture->setUpWebsites();
$this->theFixture->trackVisits($idSite = 1, 2);
$this->theFixture->insertArchiveRows($idSite, 2);
$this->removeArchiveInvalidationOptions();
$this->dataSubjects->deleteDataSubjects(array(
array('idsite' => '1', 'idvisit' => 1),
array('idsite' => '1', 'idvisit' => 1 + $this->theFixture->numVisitsPerIteration),
));
$visitDate = Date::factory($this->theFixture->dateTime);
$secondVisitDate = $visitDate->addDay(3);
$this->assertArchivesHaveBeenInvalidated($visitDate, $idSite);
$this->assertArchivesHaveBeenInvalidated($secondVisitDate, $idSite);
}
public function testDeleteVisitsForMultipleSitesDoesInvalidateArchive()
{
$this->theFixture->setUpWebsites();
for ($idSite = 1; $idSite <= 2; $idSite++) {
$this->theFixture->trackingTime = $this->originalTrackingTime;
$this->theFixture->trackVisits($idSite, 2);
$this->theFixture->insertArchiveRows($idSite, 2);
}
$this->removeArchiveInvalidationOptions();
$this->dataSubjects->deleteDataSubjects(array(
array('idsite' => '1', 'idvisit' => 1 + $this->theFixture->numVisitsPerIteration),
array('idsite' => '2', 'idvisit' => 1 + (2 * $this->theFixture->numVisitsPerIteration)),
));
$visitDate = Date::factory($this->theFixture->dateTime);
$secondVisitDate = $visitDate->addDay(3);
$this->assertArchivesHaveNotBeenInvalidated($visitDate, 1);
$this->assertArchivesHaveBeenInvalidated($visitDate, 2);
$this->assertArchivesHaveBeenInvalidated($secondVisitDate, 1);
$this->assertArchivesHaveNotBeenInvalidated($secondVisitDate, 2);
}
public function testDeleteOneVisitAlreadyMarkedForInvalidation()
{
$this->theFixture->setUpWebsites();
$this->theFixture->trackVisits($idSite = 1, 2);
$this->theFixture->insertArchiveRows($idSite, 2);
$this->removeArchiveInvalidationOptions();
$visitDate = Date::factory($this->theFixture->dateTime);
$key = '4444_report_to_invalidate_' . $idSite . '_' . $visitDate->toString('Y-m-d') . '_12345';
Option::set($key, '1');
$this->assertArchivesHaveBeenInvalidated($visitDate, $idSite);
$this->dataSubjects->deleteDataSubjects(array(array('idsite' => '1', 'idvisit' => 1)));
$this->assertArchivesHaveBeenInvalidated($visitDate, $idSite);
}
public function testDeleteOneVisitSiteInDifferentTimezone()
{
ini_set('date.timezone', 'UTC');
$websiteTimezone = 'UTC+5';
// It's 2 January in UTC but 3 January in UTC+5
$testTime = '2017-01-02 23:00:00';
$this->theFixture->trackingTime = Date::factory($testTime)->getDatetime();
$this->theFixture->setUpWebsites();
$this->setWebsiteTimezone($idSite = 1, $websiteTimezone);
$this->theFixture->trackVisits($idSite, 1);
$this->theFixture->insertArchiveRows($idSite, 1);
$this->removeArchiveInvalidationOptions();
$visitDate = Date::factory($testTime, $websiteTimezone);
$this->assertArchivesHaveNotBeenInvalidated($visitDate, $idSite);
$this->dataSubjects->deleteDataSubjects(array(array('idsite' => '1', 'idvisit' => 1)));
$this->assertArchivesHaveBeenInvalidated($visitDate, $idSite);
}
private function assertArchivesHaveNotBeenInvalidated(Date $visitDate, $idSite)
{
$key = 'report_to_invalidate_' . $idSite . '_' . $visitDate->toString('Y-m-d');
$value = Option::getLike('%' . $key . '%');
$this->assertEmpty($value);
}
private function assertArchivesHaveBeenInvalidated(Date $visitDate, $idSite)
{
$key = 'report_to_invalidate_' . $idSite . '_' . $visitDate->toString('Y-m-d');
$value = Option::getLike('%' . $key . '%');
$this->assertNotEmpty($value);
$this->assertEquals('1', array_values($value)[0]);
}
private function getFromTable($table)
{
$rows = Db::fetchAll('SELECT * from ' . Common::prefixTable($table));
return $rows;
}
private function getAllVisits()
{
return $this->getFromTable('log_visit');
}
private function getAllLinkActions()
{
return $this->getFromTable('log_link_visit_action');
}
private function getAllConversions()
{
return $this->getFromTable('log_conversion');
}
private function getAllConversionItems()
{
return $this->getFromTable('log_conversion_item');
}
private function getAllLogFooBar()
{
return $this->getFromTable(TestLogFooBarBaz::TABLE);
}
private function getAllLogFooBarBaz()
{
return $this->getFromTable(TestLogFooBar::TABLE);
}
private function getAllLogFoo()
{
return $this->getFromTable(TestLogFoo::TABLE);
}
private function getOneVisit($idSite, $idVisit, $tableName)
{
$rows = Db::fetchAll('SELECT idsite, idvisit from ' . Common::prefixTable($tableName) . ' WHERE idsite = ? and idvisit = ?', array($idSite, $idVisit));
return $rows;
}
private function getVisit($idSite, $idVisit)
{
return $this->getOneVisit($idSite, $idVisit, 'log_visit');
}
private function getConversion($idSite, $idVisit)
{
return $this->getOneVisit($idSite, $idVisit, 'log_conversion');
}
private function getLinkAction($idSite, $idVisit)
{
return $this->getOneVisit($idSite, $idVisit, 'log_link_visit_action');
}
private function getVisitCountForSite($idSite)
{
return $this->getCountForSite('log_visit', $idSite);
}
private function getLinkActionsCountForSite($idSite)
{
return $this->getCountForSite('log_link_visit_action', $idSite);
}
private function getConversionsCountForSite($idSite)
{
return $this->getCountForSite('log_conversion', $idSite);
}
private function getConversionItemsCountForSite($idSite)
{
return $this->getCountForSite('log_conversion_item', $idSite);
}
private function getLogFooCountForSite($idSite)
{
return $this->getCountForSite('log_foo', $idSite);
}
private function getCountForSite($table, $idSite)
{
return Db::fetchOne("SELECT COUNT(*) FROM `" . Common::prefixTable($table) . "` WHERE idsite = ?", [$idSite]);
}
private function removeArchiveInvalidationOptions()
{
Option::deleteLike('%report_to_invalidate_%');
}
private function setWebsiteTimezone($idSite, $timezone)
{
$sql = 'UPDATE ' . Common::prefixTable('site') . ' SET timezone = ? WHERE idsite = ?';
$bind = array($timezone, $idSite);
Db::query($sql, $bind);
}
}