From 3d721ea7757278bdc366d93fd7545ee2b1a3a7dd Mon Sep 17 00:00:00 2001 From: Adrian Tello Date: Tue, 6 Oct 2015 13:35:13 +0200 Subject: [PATCH 1/6] Don't use this in a closure --- Commands/MigrateSite.php | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/Commands/MigrateSite.php b/Commands/MigrateSite.php index 2287605..dc86c8c 100644 --- a/Commands/MigrateSite.php +++ b/Commands/MigrateSite.php @@ -59,12 +59,14 @@ protected function configure() protected function execute(InputInterface $input, OutputInterface $output) { + $self = $this; + // Set memory limit to off @ini_set('memory_limit', -1); - Piwik::doAsSuperUser(function() use ($input, $output){ + Piwik::doAsSuperUser(function() use ($input, $output, $self){ $settings = new MigratorSettings(); $settings->idSite = $input->getArgument('idSite'); - $settings->site = $this->getSite($settings->idSite); + $settings->site = $self->getSite($settings->idSite); $settings->dateFrom = $input->getOption('date-from') ? new \DateTime($input->getOption('date-from')) : null; $settings->dateTo = $input->getOption('date-to') ? new \DateTime($input->getOption('date-to')) : null; $settings->skipArchiveData = $input->getOption('skip-archive-data'); @@ -73,7 +75,7 @@ protected function execute(InputInterface $input, OutputInterface $output) $config = Db::getDatabaseConfig(); $startTime = microtime(true); - $this->createTargetDatabaseConfig($input, $output, $config); + $self->createTargetDatabaseConfig($input, $output, $config); $tmpConfig = $config; $sourceDb = Db::get(); @@ -103,7 +105,7 @@ protected function execute(InputInterface $input, OutputInterface $output) } - protected function getSite($idSite) + public function getSite($idSite) { if (!Site::getSite($idSite)) { throw new \InvalidArgumentException('idSite is not a valid, no such site found'); @@ -115,7 +117,7 @@ protected function getSite($idSite) ); } - private function createTargetDatabaseConfig(InputInterface $input, OutputInterface $output, &$config) + public function createTargetDatabaseConfig(InputInterface $input, OutputInterface $output, &$config) { $notNullValidator = function ($answer) { if (strlen(trim($answer)) == 0) { From 79b3384936a9e49dbdc011b83d5b7f4071823e76 Mon Sep 17 00:00:00 2001 From: Adrian Tello Date: Thu, 24 Sep 2015 12:53:29 +0200 Subject: [PATCH 2/6] BugFix: Invalid mapping in the new site, when action id is -1, 0 or null. --- Migrator/ActionMigrator.php | 7 +++++-- Migrator/ConversionItemMigrator.php | 4 ---- Migrator/ConversionMigrator.php | 8 +------- Test/ActionMigratorTest.php | 6 ++++++ Test/ConversionItemMigratorTest.php | 2 +- 5 files changed, 13 insertions(+), 14 deletions(-) diff --git a/Migrator/ActionMigrator.php b/Migrator/ActionMigrator.php index 01f2985..a87a72c 100644 --- a/Migrator/ActionMigrator.php +++ b/Migrator/ActionMigrator.php @@ -89,12 +89,15 @@ public function ensureActionIsMigrated($idAction) public function getNewId($idAction) { + if($idAction == null || $idAction < 1){ + return $idAction; + } + if ($this->ensureActionIsMigrated($idAction)) { return $this->idMap[$idAction]; } else { - return 0; + throw new \InvalidArgumentException('Id ' . $idAction . ' not found in ' . __CLASS__); } - } /** diff --git a/Migrator/ConversionItemMigrator.php b/Migrator/ConversionItemMigrator.php index b410e52..f6c0135 100644 --- a/Migrator/ConversionItemMigrator.php +++ b/Migrator/ConversionItemMigrator.php @@ -59,10 +59,6 @@ protected function translateRow(&$row) $row['idvisit'] = $this->visitMigrator->getNewId($row['idvisit']); foreach ($this->actionsToTranslate as $translationKey) { - if ($row[$translationKey] == 0) { - continue; - } - $row[$translationKey] = $this->actionMigrator->getNewId($row[$translationKey]); } } diff --git a/Migrator/ConversionMigrator.php b/Migrator/ConversionMigrator.php index 0c63ed7..ed2dfaf 100644 --- a/Migrator/ConversionMigrator.php +++ b/Migrator/ConversionMigrator.php @@ -59,13 +59,7 @@ protected function translateRow(&$row) $row['idlink_va'] = $this->linkVisitActionMigrator->getNewId($row['idlink_va']); } - if ($row['idaction_url']) { - $row['idaction_url'] = $this->actionMigrator->getNewId( - $row['idaction_url'] - ); - } else { - $row['idaction_url'] = 0; - } + $row['idaction_url'] = $this->actionMigrator->getNewId( $row['idaction_url']); } /** diff --git a/Test/ActionMigratorTest.php b/Test/ActionMigratorTest.php index e0c2e1c..d88c999 100644 --- a/Test/ActionMigratorTest.php +++ b/Test/ActionMigratorTest.php @@ -170,6 +170,12 @@ public function test_loadExistingActions() $this->assertEquals($this->dummyExistingActions, $this->actionMigrator->getExistingActions()); } + public function test_getNewIdSpecialActionsIds(){ + $this->assertNull($this->actionMigrator->getNewId(null)); + $this->assertEquals(0, $this->actionMigrator->getNewId(0)); + $this->assertEquals(-1, $this->actionMigrator->getNewId(-1)); + } + protected function setupEnsureActionIsMigratedMigrationTest($action) { $this->setupDbHelperGetAdapter($this->fromDbHelper); diff --git a/Test/ConversionItemMigratorTest.php b/Test/ConversionItemMigratorTest.php index 987b45a..98d5399 100644 --- a/Test/ConversionItemMigratorTest.php +++ b/Test/ConversionItemMigratorTest.php @@ -129,7 +129,7 @@ public function test_migrateConversionItems() $this->siteMigrator->expects($this->once())->method('getNewId')->with(1)->willReturn(2); $this->visitMigrator->expects($this->once())->method('getNewId')->with(3)->willReturn(4); - $this->actionMigrator->expects($this->exactly(6))->method('getNewId')->will( + $this->actionMigrator->expects($this->exactly(7))->method('getNewId')->will( $this->onConsecutiveCalls(2, 4, 6, 8, 12, 14, 16, 18, 20) ); From 8de9adb022e983b9eb0ab745407be79722e26378 Mon Sep 17 00:00:00 2001 From: Adrian Tello Date: Mon, 21 Sep 2015 16:05:03 +0200 Subject: [PATCH 3/6] Take the local database settings as the default and override only the given ones. --- Commands/MigrateSite.php | 121 +++++++-------------------------------- 1 file changed, 22 insertions(+), 99 deletions(-) diff --git a/Commands/MigrateSite.php b/Commands/MigrateSite.php index dc86c8c..7e38486 100644 --- a/Commands/MigrateSite.php +++ b/Commands/MigrateSite.php @@ -28,6 +28,15 @@ class MigrateSite extends ConsoleCommand { + protected static $DB_CONFIG_MAPPING = array( + 'host' => 'db-host', + 'username' => 'db-username', + 'password' => 'db-password', + 'dbname' => 'db-name', + 'port' => 'db-port', + 'tables_prefix' => 'db-prefix' + ); + protected function configure() { $this->setName('migration:site'); @@ -72,24 +81,24 @@ protected function execute(InputInterface $input, OutputInterface $output) $settings->skipArchiveData = $input->getOption('skip-archive-data'); $settings->skipLogData = $input->getOption('skip-log-data'); - $config = Db::getDatabaseConfig(); + $localConfig = Db::getDatabaseConfig(); $startTime = microtime(true); - $self->createTargetDatabaseConfig($input, $output, $config); + $targetConfig = $self->createTargetDatabaseConfig($input, $output, $localConfig); - $tmpConfig = $config; $sourceDb = Db::get(); try { - $targetDb = @Db\Adapter::factory($config['adapter'], $tmpConfig); + $tmpTargetConfig = $targetConfig; //The factory removes some necessary keys + $targetDb = @Db\Adapter::factory($targetConfig['adapter'], $tmpTargetConfig); } catch (\Exception $e) { throw new \RuntimeException('Unable to connect to the target database: ' . $e->getMessage(), 0, $e); } - $sourceDbHelper = new DBHelper($sourceDb, Db::getDatabaseConfig()); + $sourceDbHelper = new DBHelper($sourceDb, $localConfig); $migratorFacade = new Migrator( $sourceDbHelper, - new DBHelper($targetDb, $config), + new DBHelper($targetDb, $targetConfig), GCHelper::getInstance(), $settings, new ArchiveLister($sourceDbHelper) @@ -117,101 +126,15 @@ public function getSite($idSite) ); } - public function createTargetDatabaseConfig(InputInterface $input, OutputInterface $output, &$config) - { - $notNullValidator = function ($answer) { - if (strlen(trim($answer)) == 0) { - throw new \InvalidArgumentException('This value should not be empty'); - } - - return $answer; - }; - - $dummyValidator = function ($answer) { - return $answer; - }; - - $config['host'] = $this->ensureOptionsIsProvided( - 'db-host', - $input, - $output, - 'Please provide the destination database host', - $notNullValidator, - false, - 'localhost' - ); - - $config['username'] = $this->ensureOptionsIsProvided( - 'db-username', - $input, - $output, - 'Please provide the destination database username', - $notNullValidator - ); - - $config['password'] = $this->ensureOptionsIsProvided( - 'db-password', - $input, - $output, - 'Please provide the destination database password', - $dummyValidator, - false, - null, - true - ); - - $config['dbname'] = $this->ensureOptionsIsProvided( - 'db-name', - $input, - $output, - 'Please provide the destination database name', - $notNullValidator - ); - - $config['port'] = $input->getOption('db-port'); - $config['tables_prefix'] = $input->getOption('db-prefix'); - } - - public function ensureOptionsIsProvided($optionName, InputInterface $input, OutputInterface $output, $question, $validator, $attempts = false, $default = null, $hidden = false) + public function createTargetDatabaseConfig(InputInterface $input, OutputInterface $output, $baseConfig) { - if (!$input->getOption($optionName)) { - return $this->askAndValidate($output, $question, $validator, $attempts, $default, $hidden); + foreach (static::$DB_CONFIG_MAPPING as $configKey => $configParam) { + $option = $input->getOption($configParam); + if ($option) { + $baseConfig[$configKey] = $option; + }; } - return $input->getOption($optionName); - } - - protected function askAndValidate( - OutputInterface $output, - $question, - $validator, - $attempts = false, - $default = null, - $hidden = false - ) - { - /** - * @var $dialog DialogHelper - */ - $dialog = $this->getHelperSet()->get('dialog'); - $question = '' . $question . (($default) ? " [$default]" : '') . ': '; - - if (!$hidden) { - return $dialog->askAndValidate( - $output, - $question, - $validator, - $attempts, - $default - ); - } else { - return $dialog->askHiddenResponseAndValidate( - $output, - $question, - $validator, - $attempts, - $default - ); - } + return $baseConfig; } } From be156a48ad0c54ad7ab23575c1714980d4fb7a12 Mon Sep 17 00:00:00 2001 From: Adrian Tello Date: Tue, 29 Sep 2015 11:08:51 +0200 Subject: [PATCH 4/6] Moved all tests to the unit folder --- Test/{ => Unit}/ActionMigratorTest.php | 2 +- Test/{ => Unit}/Archive/ArchiveListerTest.php | 2 +- Test/{ => Unit}/BatchProviderTest.php | 2 +- Test/{ => Unit}/ConversionItemMigratorTest.php | 2 +- Test/{ => Unit}/ConversionMigratorTest.php | 2 +- Test/{ => Unit}/DBHelperTest.php | 2 +- Test/{ => Unit}/LinkVisitActionMigratorTest.php | 2 +- Test/{ => Unit}/VisitMigratorTest.php | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) rename Test/{ => Unit}/ActionMigratorTest.php (99%) rename Test/{ => Unit}/Archive/ArchiveListerTest.php (98%) rename Test/{ => Unit}/BatchProviderTest.php (98%) rename Test/{ => Unit}/ConversionItemMigratorTest.php (98%) rename Test/{ => Unit}/ConversionMigratorTest.php (98%) rename Test/{ => Unit}/DBHelperTest.php (98%) rename Test/{ => Unit}/LinkVisitActionMigratorTest.php (98%) rename Test/{ => Unit}/VisitMigratorTest.php (98%) diff --git a/Test/ActionMigratorTest.php b/Test/Unit/ActionMigratorTest.php similarity index 99% rename from Test/ActionMigratorTest.php rename to Test/Unit/ActionMigratorTest.php index d88c999..3c4fab8 100644 --- a/Test/ActionMigratorTest.php +++ b/Test/Unit/ActionMigratorTest.php @@ -8,7 +8,7 @@ * */ -namespace Piwik\Plugins\SiteMigration\Test; +namespace Piwik\Plugins\SiteMigration\Test\Unit; use Piwik\Plugins\SiteMigration\Migrator\ActionMigrator; diff --git a/Test/Archive/ArchiveListerTest.php b/Test/Unit/Archive/ArchiveListerTest.php similarity index 98% rename from Test/Archive/ArchiveListerTest.php rename to Test/Unit/Archive/ArchiveListerTest.php index 4e81519..b456d3b 100644 --- a/Test/Archive/ArchiveListerTest.php +++ b/Test/Unit/Archive/ArchiveListerTest.php @@ -7,7 +7,7 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later */ -namespace Piwik\Plugins\SiteMigration\Test\Archive; +namespace Piwik\Plugins\SiteMigration\Test\Unit\Archive; use Piwik\Plugins\SiteMigration\Migrator\Archive\ArchiveLister; diff --git a/Test/BatchProviderTest.php b/Test/Unit/BatchProviderTest.php similarity index 98% rename from Test/BatchProviderTest.php rename to Test/Unit/BatchProviderTest.php index d7278a3..028229b 100644 --- a/Test/BatchProviderTest.php +++ b/Test/Unit/BatchProviderTest.php @@ -7,7 +7,7 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later */ -namespace Piwik\Plugins\SiteMigration\Test; +namespace Piwik\Plugins\SiteMigration\Test\Unit; use Piwik\Plugins\SiteMigration\DataProvider\BatchProvider; diff --git a/Test/ConversionItemMigratorTest.php b/Test/Unit/ConversionItemMigratorTest.php similarity index 98% rename from Test/ConversionItemMigratorTest.php rename to Test/Unit/ConversionItemMigratorTest.php index 98d5399..523b445 100644 --- a/Test/ConversionItemMigratorTest.php +++ b/Test/Unit/ConversionItemMigratorTest.php @@ -7,7 +7,7 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later */ -namespace Piwik\Plugins\SiteMigration\Test; +namespace Piwik\Plugins\SiteMigration\Test\Unit; use Piwik\Plugins\SiteMigration\Migrator\ConversionItemMigrator; diff --git a/Test/ConversionMigratorTest.php b/Test/Unit/ConversionMigratorTest.php similarity index 98% rename from Test/ConversionMigratorTest.php rename to Test/Unit/ConversionMigratorTest.php index 3280fbf..086fbcc 100644 --- a/Test/ConversionMigratorTest.php +++ b/Test/Unit/ConversionMigratorTest.php @@ -7,7 +7,7 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later */ -namespace Piwik\Plugins\SiteMigration\Test; +namespace Piwik\Plugins\SiteMigration\Test\Unit; use Piwik\Plugins\SiteMigration\Migrator\ConversionMigrator; diff --git a/Test/DBHelperTest.php b/Test/Unit/DBHelperTest.php similarity index 98% rename from Test/DBHelperTest.php rename to Test/Unit/DBHelperTest.php index cfbc7cf..374f5bb 100644 --- a/Test/DBHelperTest.php +++ b/Test/Unit/DBHelperTest.php @@ -7,7 +7,7 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later */ -namespace Piwik\Plugins\SiteMigration\Test; +namespace Piwik\Plugins\SiteMigration\Test\Unit; use Piwik\Plugins\SiteMigration\Helper\DBHelper; diff --git a/Test/LinkVisitActionMigratorTest.php b/Test/Unit/LinkVisitActionMigratorTest.php similarity index 98% rename from Test/LinkVisitActionMigratorTest.php rename to Test/Unit/LinkVisitActionMigratorTest.php index b47f769..c6947a2 100644 --- a/Test/LinkVisitActionMigratorTest.php +++ b/Test/Unit/LinkVisitActionMigratorTest.php @@ -7,7 +7,7 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later */ -namespace Piwik\Plugins\SiteMigration\Test; +namespace Piwik\Plugins\SiteMigration\Test\Unit; use Piwik\Plugins\SiteMigration\Migrator\LinkVisitActionMigrator; diff --git a/Test/VisitMigratorTest.php b/Test/Unit/VisitMigratorTest.php similarity index 98% rename from Test/VisitMigratorTest.php rename to Test/Unit/VisitMigratorTest.php index a5ae835..5e35d00 100644 --- a/Test/VisitMigratorTest.php +++ b/Test/Unit/VisitMigratorTest.php @@ -7,7 +7,7 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later */ -namespace Piwik\Plugins\SiteMigration\Test; +namespace Piwik\Plugins\SiteMigration\Test\Unit; use Piwik\Plugins\SiteMigration\Migrator\VisitMigrator; From da2f7337612a8683fc7f99a65479b866b0bb4a65 Mon Sep 17 00:00:00 2001 From: Adrian Tello Date: Tue, 29 Sep 2015 11:19:35 +0200 Subject: [PATCH 5/6] Fetch the rows from the source database in a specific order --- Migrator/Migrator.php | 38 ++++++++++++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 8 deletions(-) diff --git a/Migrator/Migrator.php b/Migrator/Migrator.php index fea328a..c3c5c99 100644 --- a/Migrator/Migrator.php +++ b/Migrator/Migrator.php @@ -139,19 +139,19 @@ private function migrateSiteConfig() $this->siteMigrator->migrate( $this->getBatchProvider( - 'SELECT * FROM ' . $this->sourceDbHelper->prefixTable('site') . ' WHERE idsite = ' . $this->settings->idSite + 'SELECT * FROM ' . $this->sourceDbHelper->prefixTable('site') . ' WHERE idsite = ' . $this->settings->idSite . ' ORDER BY idsite ASC' ) ); $this->siteGoalMigrator->migrate( $this->getBatchProvider( - 'SELECT * FROM ' . $this->sourceDbHelper->prefixTable('goal') . ' WHERE idsite = ' . $this->settings->idSite + 'SELECT * FROM ' . $this->sourceDbHelper->prefixTable('goal') . ' WHERE idsite = ' . $this->settings->idSite . ' ORDER BY idsite ASC, idgoal ASC' ) ); $this->siteUrlMigrator->migrate( $this->getBatchProvider( - 'SELECT * FROM ' . $this->sourceDbHelper->prefixTable('site_url') . ' WHERE idsite = ' . $this->settings->idSite + 'SELECT * FROM ' . $this->sourceDbHelper->prefixTable('site_url') . ' WHERE idsite = ' . $this->settings->idSite . ' ORDER BY idsite ASC, url ASC' ) ); } @@ -177,6 +177,8 @@ private function migrateLogVisits() $query .= ' AND `visit_last_action_time` < \'' . $this->settings->dateTo->format('Y-m-d') . '\''; } + $query .= ' ORDER BY idvisit ASC'; + $this->visitMigrator->migrate( $this->getBatchProvider($query) ); @@ -186,7 +188,7 @@ private function migrateLogVisitActions() { Log::info('Migrating log data - link visit action'); - $queries = $this->getLogVisitQueriesFor('log_link_visit_action'); + $queries = $this->getLogVisitQueriesForLinkVisitAction(); if (count($queries) > 0) { $this->visitActionMigrator->migrate($this->getBatchProvider($queries)); @@ -197,8 +199,8 @@ private function migrateLogVisitConversions() { Log::info('Migrating log data - conversions and conversion items'); - $queries = $this->getLogVisitQueriesFor('log_conversion'); - $itemQueries = $this->getLogVisitQueriesFor('log_conversion_item'); + $queries = $this->getLogVisitQueriesForLogConversion(); + $itemQueries = $this->getLogVisitQueriesForLogConversionItem(); if (count($queries) > 0) { $this->conversionMigrator->migrate($this->getBatchProvider($queries)); @@ -213,7 +215,7 @@ private function migrateArchives() $this->archiveMigrator->migrate($this->settings->idSite, $this->settings->dateFrom, $this->settings->dateTo); } - private function getLogVisitQueriesFor($table) + private function getLogVisitQueriesFor($table, $orderBy = array()) { $visitIdRanges = $this->visitMigrator->getIdRanges(); @@ -223,7 +225,13 @@ private function getLogVisitQueriesFor($table) foreach ($visitIdRanges as $range) { - $queries[] = $baseQuery . ' (' . implode(', ', $range) . ')'; + $newQuery = $baseQuery . ' (' . implode(', ', $range) . ')'; + + if (count($orderBy) != 0) { + $newQuery .= ' ORDER BY ' . implode(',', $orderBy); + } + + $queries[] = $newQuery; } return $queries; @@ -232,6 +240,20 @@ private function getLogVisitQueriesFor($table) } } + private function getLogVisitQueriesForLogConversion() + { + return $this->getLogVisitQueriesFor('log_conversion', array('idvisit', 'idgoal', 'buster')); + } + + private function getLogVisitQueriesForLogConversionItem(){ + return $this->getLogVisitQueriesFor('log_conversion_item', array('idvisit', 'idorder', 'idaction_sku')); + } + + private function getLogVisitQueriesForLinkVisitAction() + { + return $this->getLogVisitQueriesFor('log_link_visit_action', array('idlink_va')); + } + private function getBatchProvider($query) { return new BatchProvider($query, $this->sourceDbHelper, $this->gcHelper, 10000); From 7da70a9380ffd69b85cb28cbde623196c6e21099 Mon Sep 17 00:00:00 2001 From: Adrian Tello Date: Thu, 24 Sep 2015 11:50:11 +0200 Subject: [PATCH 6/6] Created integration tests --- Test/Fixture/AbstractTableFixture.php | 54 ++++++++ Test/Fixture/MigratedSimpleData.php | 80 ++++++++++++ Test/Fixture/TrackedData.php | 124 +++++++++++++++++++ Test/Integration/Command/MigrateSiteTest.php | 98 +++++++++++++++ 4 files changed, 356 insertions(+) create mode 100644 Test/Fixture/AbstractTableFixture.php create mode 100644 Test/Fixture/MigratedSimpleData.php create mode 100644 Test/Fixture/TrackedData.php create mode 100644 Test/Integration/Command/MigrateSiteTest.php diff --git a/Test/Fixture/AbstractTableFixture.php b/Test/Fixture/AbstractTableFixture.php new file mode 100644 index 0000000..f36537f --- /dev/null +++ b/Test/Fixture/AbstractTableFixture.php @@ -0,0 +1,54 @@ +compatData(); + $this->insertTables($this->data); + } + + protected function compatData() + { + //Remove exclude_unknown_urls if using a core version lower than 2.15.0-b3 + if (!file_exists(PIWIK_DOCUMENT_ROOT . '/core/Updates/2.15.0-b3.php')) { + foreach ($this->data['site']['data'] as &$row) { + unset($row['exclude_unknown_urls']); + } + } + } + + protected function insertTables() + { + foreach ($this->data as $tableName => $table) { + $prefixedTable = Common::prefixTable($tableName); + foreach ($table['data'] as $row) { + $placeholders = array_map(function () { return "?"; }, $row); + $columns = array_keys($row); + foreach ($columns as &$column){ + $column = '`' . $column . '`'; + } + + $sql = "INSERT INTO $prefixedTable (" . implode(',', $columns) . ") VALUES (" . implode(',', $placeholders) . ")"; + Db::query($sql, array_values($row)); + } + } + } + +} \ No newline at end of file diff --git a/Test/Fixture/MigratedSimpleData.php b/Test/Fixture/MigratedSimpleData.php new file mode 100644 index 0000000..90a935c --- /dev/null +++ b/Test/Fixture/MigratedSimpleData.php @@ -0,0 +1,80 @@ + array( + array('idsite' => '2','name' => 'http://cakecms-gf.tello/','main_url' => 'http://cakecms-gf.tello','ts_created' => '2015-09-21 07:56:23','ecommerce' => '0','sitesearch' => '1','sitesearch_keyword_parameters' => '','sitesearch_category_parameters' => '','timezone' => 'Europe/Berlin','currency' => 'USD','exclude_unknown_urls' => '0','excluded_ips' => '','excluded_parameters' => '','excluded_user_agents' => '','group' => '','type' => 'website','keep_url_fragment' => '0') + ), + 'site_url' => array( + array( + 'idsite' => 2, + 'url' => 'http://www.cakecms-gf.tello' + ) + ), + 'goal' => array( + array('idsite' => '2','idgoal' => '1','name' => 'Goal 1','match_attribute' => 'manually','pattern' => '.*','pattern_type' => 'regex','case_sensitive' => '0','allow_multiple' => '0','revenue' => '0','deleted' => '0'), + array('idsite' => '2','idgoal' => '2','name' => 'Goal 2','match_attribute' => 'url','pattern' => 'suche/simple/','pattern_type' => 'contains','case_sensitive' => '0','allow_multiple' => '1','revenue' => '0','deleted' => '0') + ), + 'log_visit' => array( + array('idvisit' => '5','idsite' => '2','idvisitor' => pack("H*", 'e02a300b43dd2bbd'),'visit_last_action_time' => '2015-09-21 07:57:02','config_id' => pack("H*", '3af5b469cf40ff00'),'location_ip' => '7f000000','location_longitude' => null,'location_region' => null,'visitor_localtime' => '09:56:44','visitor_days_since_last' => '0','location_latitude' => null,'location_country' => 'de','config_device_type' => '0','config_device_model' => '','config_os' => 'LIN','config_os_version' => '','location_city' => null,'visit_total_events' => '0','config_pdf' => '1','config_java' => '1','config_quicktime' => '0','config_realplayer' => '0','config_windowsmedia' => '0','config_silverlight' => '0','config_gears' => '0','config_flash' => '1','config_resolution' => '1920x1200','config_cookie' => '1','config_director' => '0','config_device_brand' => '','config_browser_version' => '41.0','visitor_days_since_order' => '0','visitor_days_since_first' => '3','visitor_returning' => '1','visit_total_time' => '18','visitor_count_visits' => '2','visit_first_action_time' => '2015-09-21 07:56:45','user_id' => null,'visit_goal_buyer' => '0','visit_goal_converted' => '0','visit_entry_idaction_name' => '1','visit_entry_idaction_url' => '2','referer_url' => '','referer_type' => '1','location_browser_lang' => 'de-de','config_browser_name' => 'CH','config_browser_engine' => 'Blink','referer_name' => '','referer_keyword' => '','visit_exit_idaction_url' => '6','visit_exit_idaction_name' => '5','visit_total_actions' => '6','visit_total_searches' => '2','custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idvisit' => '6','idsite' => '2','idvisitor' => pack("H*", 'd1256d2cba816f66'),'visit_last_action_time' => '2015-09-21 07:57:54','config_id' => pack("H*", '115d6af8b74ff4a2'),'location_ip' => '7f000000','location_longitude' => null,'location_region' => null,'visitor_localtime' => '09:57:54','visitor_days_since_last' => '0','location_latitude' => null,'location_country' => 'de','config_device_type' => '0','config_device_model' => '','config_os' => 'UBT','config_os_version' => '','location_city' => null,'visit_total_events' => '0','config_pdf' => '0','config_java' => '1','config_quicktime' => '1','config_realplayer' => '0','config_windowsmedia' => '1','config_silverlight' => '0','config_gears' => '0','config_flash' => '1','config_resolution' => '1920x1200','config_cookie' => '1','config_director' => '0','config_device_brand' => '','config_browser_version' => '40.0','visitor_days_since_order' => '0','visitor_days_since_first' => '3','visitor_returning' => '1','visit_total_time' => '0','visitor_count_visits' => '2','visit_first_action_time' => '2015-09-21 07:57:54','user_id' => null,'visit_goal_buyer' => '0','visit_goal_converted' => '0','visit_entry_idaction_name' => '5','visit_entry_idaction_url' => '6','referer_url' => '','referer_type' => '1','location_browser_lang' => 'de','config_browser_name' => 'FF','config_browser_engine' => 'Gecko','referer_name' => '','referer_keyword' => '','visit_exit_idaction_url' => '6','visit_exit_idaction_name' => '5','visit_total_actions' => '1','visit_total_searches' => '0','custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idvisit' => '7','idsite' => '2','idvisitor' => pack("H*", 'e02a300b43dd2bbd'),'visit_last_action_time' => '2015-09-24 08:41:35','config_id' => pack("H*",'0dafe0a5b7a9aed2'),'location_ip' => '7f000000','location_longitude' => null,'location_region' => null,'visitor_localtime' => '10:41:06','visitor_days_since_last' => '0','location_latitude' => null,'location_country' => 'de','config_device_type' => '0','config_device_model' => '','config_os' => 'LIN','config_os_version' => '','location_city' => null,'visit_total_events' => '0','config_pdf' => '1','config_java' => '1','config_quicktime' => '0','config_realplayer' => '0','config_windowsmedia' => '0','config_silverlight' => '0','config_gears' => '0','config_flash' => '1','config_resolution' => '1920x1200','config_cookie' => '1','config_director' => '0','config_device_brand' => '','config_browser_version' => '41.0','visitor_days_since_order' => '0','visitor_days_since_first' => '6','visitor_returning' => '1','visit_total_time' => '29','visitor_count_visits' => '5','visit_first_action_time' => '2015-09-24 08:41:07','user_id' => null,'visit_goal_buyer' => '0','visit_goal_converted' => '0','visit_entry_idaction_name' => '1','visit_entry_idaction_url' => '2','referer_url' => '','referer_type' => '1','location_browser_lang' => 'de-de','config_browser_name' => 'CH','config_browser_engine' => 'Blink','referer_name' => '','referer_keyword' => '','visit_exit_idaction_url' => null,'visit_exit_idaction_name' => '9','visit_total_actions' => '6','visit_total_searches' => '1','custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idvisit' => '8','idsite' => '2','idvisitor' => pack("H*", 'd1256d2cba816f66'),'visit_last_action_time' => '2015-09-24 08:51:17','config_id' => pack("H*",'4ef458493bf77c0a'),'location_ip' => '7f000000','location_longitude' => null,'location_region' => null,'visitor_localtime' => '10:42:06','visitor_days_since_last' => '0','location_latitude' => null,'location_country' => 'de','config_device_type' => '0','config_device_model' => '','config_os' => 'UBT','config_os_version' => '','location_city' => null,'visit_total_events' => '0','config_pdf' => '0','config_java' => '1','config_quicktime' => '1','config_realplayer' => '0','config_windowsmedia' => '1','config_silverlight' => '0','config_gears' => '0','config_flash' => '1','config_resolution' => '1920x1200','config_cookie' => '1','config_director' => '0','config_device_brand' => '','config_browser_version' => '40.0','visitor_days_since_order' => '0','visitor_days_since_first' => '6','visitor_returning' => '1','visit_total_time' => '555','visitor_count_visits' => '3','visit_first_action_time' => '2015-09-24 08:42:07','user_id' => null,'visit_goal_buyer' => '0','visit_goal_converted' => '1','visit_entry_idaction_name' => '9','visit_entry_idaction_url' => '0','referer_url' => '','referer_type' => '1','location_browser_lang' => 'de','config_browser_name' => 'FF','config_browser_engine' => 'Gecko','referer_name' => '','referer_keyword' => '','visit_exit_idaction_url' => '2','visit_exit_idaction_name' => '1','visit_total_actions' => '10','visit_total_searches' => '6','custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null) + ), + 'log_conversion' => array( + array('idvisit' => '8','idsite' => '2','idvisitor' => pack("H*", 'd1256d2cba816f66'),'server_time' => '2015-09-24 08:44:57','idaction_url' => null,'idlink_va' => null,'idgoal' => '1','buster' => '0','idorder' => null,'items' => null,'url' => 'http://cakecms-gf.tello/suche/simple/?query=sprich','location_longitude' => null,'location_region' => null,'location_latitude' => null,'location_country' => 'de','location_city' => null,'visitor_days_since_order' => '0','visitor_days_since_first' => '6','visitor_returning' => '1','visitor_count_visits' => '3','referer_type' => '1','referer_name' => '','referer_keyword' => '','revenue_discount' => null,'revenue' => '0','revenue_shipping' => null,'revenue_subtotal' => null,'revenue_tax' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idvisit' => '8','idsite' => '2','idvisitor' => pack("H*", 'd1256d2cba816f66'),'server_time' => '2015-09-24 08:51:17','idaction_url' => null,'idlink_va' => null,'idgoal' => '2','buster' => '1443084677','idorder' => null,'items' => null,'url' => 'http://cakecms-gf.tello/','location_longitude' => null,'location_region' => null,'location_latitude' => null,'location_country' => 'de','location_city' => null,'visitor_days_since_order' => '0','visitor_days_since_first' => '6','visitor_returning' => '1','visitor_count_visits' => '3','referer_type' => '1','referer_name' => '','referer_keyword' => '','revenue_discount' => null,'revenue' => '0','revenue_shipping' => null,'revenue_subtotal' => null,'revenue_tax' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null) + ), + 'log_link_visit_action' => array( + array('idlink_va' => '24','idsite' => '2','idvisitor' => pack("H*", 'e02a300b43dd2bbd'),'idvisit' => '5','idaction_url_ref' => '0','idaction_name_ref' => '0','custom_float' => '4431','server_time' => '2015-09-21 07:56:45','idaction_name' => '1','idaction_url' => '2','time_spent_ref_action' => '0','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '25','idsite' => '2','idvisitor' => pack("H*", 'e02a300b43dd2bbd'),'idvisit' => '5','idaction_url_ref' => '2','idaction_name_ref' => '1','custom_float' => '1337','server_time' => '2015-09-21 07:56:51','idaction_name' => '3','idaction_url' => null,'time_spent_ref_action' => '6','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '26','idsite' => '2','idvisitor' => pack("H*", 'e02a300b43dd2bbd'),'idvisit' => '5','idaction_url_ref' => null,'idaction_name_ref' => '3','custom_float' => '5','server_time' => '2015-09-21 07:56:53','idaction_name' => '1','idaction_url' => '2','time_spent_ref_action' => '2','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '27','idsite' => '2','idvisitor' => pack("H*", 'e02a300b43dd2bbd'),'idvisit' => '5','idaction_url_ref' => '2','idaction_name_ref' => '1','custom_float' => '483','server_time' => '2015-09-21 07:56:56','idaction_name' => '4','idaction_url' => null,'time_spent_ref_action' => '3','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '28','idsite' => '2','idvisitor' => pack("H*", 'e02a300b43dd2bbd'),'idvisit' => '5','idaction_url_ref' => null,'idaction_name_ref' => '4','custom_float' => '178','server_time' => '2015-09-21 07:56:58','idaction_name' => '1','idaction_url' => '2','time_spent_ref_action' => '2','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '29','idsite' => '2','idvisitor' => pack("H*", 'e02a300b43dd2bbd'),'idvisit' => '5','idaction_url_ref' => '2','idaction_name_ref' => '1','custom_float' => '2714','server_time' => '2015-09-21 07:57:02','idaction_name' => '5','idaction_url' => '6','time_spent_ref_action' => '4','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '30','idsite' => '2','idvisitor' => pack("H*", 'd1256d2cba816f66'),'idvisit' => '6','idaction_url_ref' => '0','idaction_name_ref' => '0','custom_float' => '493','server_time' => '2015-09-21 07:57:54','idaction_name' => '5','idaction_url' => '6','time_spent_ref_action' => '0','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '31','idsite' => '2','idvisitor' => pack("H*", 'e02a300b43dd2bbd'),'idvisit' => '7','idaction_url_ref' => '0','idaction_name_ref' => '0','custom_float' => '392','server_time' => '2015-09-24 08:41:07','idaction_name' => '1','idaction_url' => '2','time_spent_ref_action' => '0','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '32','idsite' => '2','idvisitor' => pack("H*", 'e02a300b43dd2bbd'),'idvisit' => '7','idaction_url_ref' => '2','idaction_name_ref' => '1','custom_float' => '890','server_time' => '2015-09-24 08:41:10','idaction_name' => '5','idaction_url' => '6','time_spent_ref_action' => '3','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '33','idsite' => '2','idvisitor' => pack("H*", 'e02a300b43dd2bbd'),'idvisit' => '7','idaction_url_ref' => '6','idaction_name_ref' => '5','custom_float' => '380','server_time' => '2015-09-24 08:41:14','idaction_name' => '1','idaction_url' => '2','time_spent_ref_action' => '4','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '34','idsite' => '2','idvisitor' => pack("H*", 'e02a300b43dd2bbd'),'idvisit' => '7','idaction_url_ref' => '2','idaction_name_ref' => '1','custom_float' => '1365','server_time' => '2015-09-24 08:41:23','idaction_name' => '7','idaction_url' => '8','time_spent_ref_action' => '9','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '35','idsite' => '2','idvisitor' => pack("H*", 'e02a300b43dd2bbd'),'idvisit' => '7','idaction_url_ref' => '8','idaction_name_ref' => '7','custom_float' => '419','server_time' => '2015-09-24 08:41:27','idaction_name' => '1','idaction_url' => '2','time_spent_ref_action' => '4','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '36','idsite' => '2','idvisitor' => pack("H*", 'e02a300b43dd2bbd'),'idvisit' => '7','idaction_url_ref' => '2','idaction_name_ref' => '1','custom_float' => '564','server_time' => '2015-09-24 08:41:35','idaction_name' => '9','idaction_url' => null,'time_spent_ref_action' => '8','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '37','idsite' => '2','idvisitor' => pack("H*", 'd1256d2cba816f66'),'idvisit' => '8','idaction_url_ref' => '0','idaction_name_ref' => '0','custom_float' => '855','server_time' => '2015-09-24 08:42:07','idaction_name' => '9','idaction_url' => null,'time_spent_ref_action' => '0','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '38','idsite' => '2','idvisitor' => pack("H*", 'd1256d2cba816f66'),'idvisit' => '8','idaction_url_ref' => '0','idaction_name_ref' => '9','custom_float' => '569','server_time' => '2015-09-24 08:42:26','idaction_name' => '9','idaction_url' => null,'time_spent_ref_action' => '19','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '39','idsite' => '2','idvisitor' => pack("H*", 'd1256d2cba816f66'),'idvisit' => '8','idaction_url_ref' => null,'idaction_name_ref' => '9','custom_float' => '566','server_time' => '2015-09-24 08:42:28','idaction_name' => '9','idaction_url' => null,'time_spent_ref_action' => '2','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '40','idsite' => '2','idvisitor' => pack("H*", 'd1256d2cba816f66'),'idvisit' => '8','idaction_url_ref' => null,'idaction_name_ref' => '9','custom_float' => '2108','server_time' => '2015-09-24 08:42:35','idaction_name' => '10','idaction_url' => null,'time_spent_ref_action' => '7','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '41','idsite' => '2','idvisitor' => pack("H*", 'd1256d2cba816f66'),'idvisit' => '8','idaction_url_ref' => null,'idaction_name_ref' => '10','custom_float' => '1887','server_time' => '2015-09-24 08:44:44','idaction_name' => '11','idaction_url' => null,'time_spent_ref_action' => '129','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '42','idsite' => '2','idvisitor' => pack("H*", 'd1256d2cba816f66'),'idvisit' => '8','idaction_url_ref' => null,'idaction_name_ref' => '11','custom_float' => '436','server_time' => '2015-09-24 08:48:09','idaction_name' => '1','idaction_url' => '2','time_spent_ref_action' => '192','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '43','idsite' => '2','idvisitor' => pack("H*", 'd1256d2cba816f66'),'idvisit' => '8','idaction_url_ref' => '2','idaction_name_ref' => '1','custom_float' => '436','server_time' => '2015-09-24 08:49:31','idaction_name' => '1','idaction_url' => '2','time_spent_ref_action' => '78','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '44','idsite' => '2','idvisitor' => pack("H*", 'd1256d2cba816f66'),'idvisit' => '8','idaction_url_ref' => '2','idaction_name_ref' => '1','custom_float' => '423','server_time' => '2015-09-24 08:49:34','idaction_name' => '1','idaction_url' => '2','time_spent_ref_action' => '3','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '45','idsite' => '2','idvisitor' => pack("H*", 'd1256d2cba816f66'),'idvisit' => '8','idaction_url_ref' => '2','idaction_name_ref' => '1','custom_float' => '644','server_time' => '2015-09-24 08:49:41','idaction_name' => '12','idaction_url' => null,'time_spent_ref_action' => '7','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '46','idsite' => '2','idvisitor' => pack("H*", 'd1256d2cba816f66'),'idvisit' => '8','idaction_url_ref' => null,'idaction_name_ref' => '12','custom_float' => '367','server_time' => '2015-09-24 08:49:48','idaction_name' => '1','idaction_url' => '2','time_spent_ref_action' => '7','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null) + ) + //TODO data for link item conversion (not necessary for me )(Undergrounder) + ); + + //Merge the tables + foreach ($this->data as $tableName => $table) { + $newTableRows = array(); + if (isset($newRows[$tableName])) { + $newTableRows = $newRows[$tableName]; + } + + $this->data[$tableName] = array( + 'primary_key' => $table['primary_key'], + 'data' => array_merge($table['data'], $newTableRows) + ); + } + } +} diff --git a/Test/Fixture/TrackedData.php b/Test/Fixture/TrackedData.php new file mode 100644 index 0000000..b93c8e5 --- /dev/null +++ b/Test/Fixture/TrackedData.php @@ -0,0 +1,124 @@ +data = array( + 'site' => array( + 'primary_key' => array( + 'idsite' + ), + 'data' => array( + array('idsite' => '1','name' => 'http://cakecms-gf.tello/','main_url' => 'http://cakecms-gf.tello','ts_created' => '2015-09-21 07:56:23','ecommerce' => '0','sitesearch' => '1','sitesearch_keyword_parameters' => '','sitesearch_category_parameters' => '','timezone' => 'Europe/Berlin','currency' => 'USD','exclude_unknown_urls' => '0','excluded_ips' => '','excluded_parameters' => '','excluded_user_agents' => '','group' => '','type' => 'website','keep_url_fragment' => '0') + ) + ), + 'site_url' => array( + 'primary_key' => array( + 'idsite', + 'url', + ), + 'data' => array( + array( + 'idsite' => 1, + 'url' => 'http://www.cakecms-gf.tello' + ) + ) + ), + 'goal' => array( + 'primary_key' => array( + 'idsite', + 'idgoal', + ), + 'data' => array( + array('idsite' => '1','idgoal' => '1','name' => 'Goal 1','match_attribute' => 'manually','pattern' => '.*','pattern_type' => 'regex','case_sensitive' => '0','allow_multiple' => '0','revenue' => '0','deleted' => '0'), + array('idsite' => '1','idgoal' => '2','name' => 'Goal 2','match_attribute' => 'url','pattern' => 'suche/simple/','pattern_type' => 'contains','case_sensitive' => '0','allow_multiple' => '1','revenue' => '0','deleted' => '0') + ) + ), + 'log_action' => array( + 'primary_key' => array( + 'idaction' + ), + 'data' => array( + array('idaction' => '1','name' => 'gartenfreunde.de','hash' => '1744847183','type' => '4','url_prefix' => null), + array('idaction' => '2','name' => 'cakecms-gf.tello/','hash' => '994444328','type' => '1','url_prefix' => '0'), + array('idaction' => '3','name' => 'test','hash' => '3632233996','type' => '8','url_prefix' => null), + array('idaction' => '4','name' => 'test keyword','hash' => '4087490255','type' => '8','url_prefix' => null), + array('idaction' => '5','name' => 'Rückenschonend gärtnern','hash' => '1850765244','type' => '4','url_prefix' => null), + array('idaction' => '6','name' => 'cakecms-gf.tello/gartenpraxis/gartentechnik/rueckenschonend-gaertnern/','hash' => '459735299','type' => '1','url_prefix' => '0'), + array('idaction' => '7','name' => 'Newsletter','hash' => '836273688','type' => '4','url_prefix' => null), + array('idaction' => '8','name' => 'cakecms-gf.tello/newsletter/subscribe/','hash' => '165456627','type' => '1','url_prefix' => '0'), + array('idaction' => '9','name' => 'search','hash' => '3035683751','type' => '8','url_prefix' => null), + array('idaction' => '10','name' => 'sprach','hash' => '1077683725','type' => '8','url_prefix' => null), + array('idaction' => '11','name' => 'sprich','hash' => '1311733685','type' => '8','url_prefix' => null), + array('idaction' => '12','name' => 'goal','hash' => '4242336558','type' => '8','url_prefix' => null) + ) + ), + 'log_visit' => array( + 'primary_key' => array( + 'idvisit', + 'idsite' + ), + 'data' => array( + array('idvisit' => '1','idsite' => '1','idvisitor' => pack("H*", 'e02a300b43dd2bbd'),'visit_last_action_time' => '2015-09-21 07:57:02','config_id' => pack("H*", '3af5b469cf40ff00'),'location_ip' => '7f000000','location_longitude' => null,'location_region' => null,'visitor_localtime' => '09:56:44','visitor_days_since_last' => '0','location_latitude' => null,'location_country' => 'de','config_device_type' => '0','config_device_model' => '','config_os' => 'LIN','config_os_version' => '','location_city' => null,'visit_total_events' => '0','config_pdf' => '1','config_java' => '1','config_quicktime' => '0','config_realplayer' => '0','config_windowsmedia' => '0','config_silverlight' => '0','config_gears' => '0','config_flash' => '1','config_resolution' => '1920x1200','config_cookie' => '1','config_director' => '0','config_device_brand' => '','config_browser_version' => '41.0','visitor_days_since_order' => '0','visitor_days_since_first' => '3','visitor_returning' => '1','visit_total_time' => '18','visitor_count_visits' => '2','visit_first_action_time' => '2015-09-21 07:56:45','user_id' => null,'visit_goal_buyer' => '0','visit_goal_converted' => '0','visit_entry_idaction_name' => '1','visit_entry_idaction_url' => '2','referer_url' => '','referer_type' => '1','location_browser_lang' => 'de-de','config_browser_name' => 'CH','config_browser_engine' => 'Blink','referer_name' => '','referer_keyword' => '','visit_exit_idaction_url' => '6','visit_exit_idaction_name' => '5','visit_total_actions' => '6','visit_total_searches' => '2','custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idvisit' => '2','idsite' => '1','idvisitor' => pack("H*", 'd1256d2cba816f66'),'visit_last_action_time' => '2015-09-21 07:57:54','config_id' => pack("H*", '115d6af8b74ff4a2'),'location_ip' => '7f000000','location_longitude' => null,'location_region' => null,'visitor_localtime' => '09:57:54','visitor_days_since_last' => '0','location_latitude' => null,'location_country' => 'de','config_device_type' => '0','config_device_model' => '','config_os' => 'UBT','config_os_version' => '','location_city' => null,'visit_total_events' => '0','config_pdf' => '0','config_java' => '1','config_quicktime' => '1','config_realplayer' => '0','config_windowsmedia' => '1','config_silverlight' => '0','config_gears' => '0','config_flash' => '1','config_resolution' => '1920x1200','config_cookie' => '1','config_director' => '0','config_device_brand' => '','config_browser_version' => '40.0','visitor_days_since_order' => '0','visitor_days_since_first' => '3','visitor_returning' => '1','visit_total_time' => '0','visitor_count_visits' => '2','visit_first_action_time' => '2015-09-21 07:57:54','user_id' => null,'visit_goal_buyer' => '0','visit_goal_converted' => '0','visit_entry_idaction_name' => '5','visit_entry_idaction_url' => '6','referer_url' => '','referer_type' => '1','location_browser_lang' => 'de','config_browser_name' => 'FF','config_browser_engine' => 'Gecko','referer_name' => '','referer_keyword' => '','visit_exit_idaction_url' => '6','visit_exit_idaction_name' => '5','visit_total_actions' => '1','visit_total_searches' => '0','custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idvisit' => '3','idsite' => '1','idvisitor' => pack("H*", 'e02a300b43dd2bbd'),'visit_last_action_time' => '2015-09-24 08:41:35','config_id' => pack("H*",'0dafe0a5b7a9aed2'),'location_ip' => '7f000000','location_longitude' => null,'location_region' => null,'visitor_localtime' => '10:41:06','visitor_days_since_last' => '0','location_latitude' => null,'location_country' => 'de','config_device_type' => '0','config_device_model' => '','config_os' => 'LIN','config_os_version' => '','location_city' => null,'visit_total_events' => '0','config_pdf' => '1','config_java' => '1','config_quicktime' => '0','config_realplayer' => '0','config_windowsmedia' => '0','config_silverlight' => '0','config_gears' => '0','config_flash' => '1','config_resolution' => '1920x1200','config_cookie' => '1','config_director' => '0','config_device_brand' => '','config_browser_version' => '41.0','visitor_days_since_order' => '0','visitor_days_since_first' => '6','visitor_returning' => '1','visit_total_time' => '29','visitor_count_visits' => '5','visit_first_action_time' => '2015-09-24 08:41:07','user_id' => null,'visit_goal_buyer' => '0','visit_goal_converted' => '0','visit_entry_idaction_name' => '1','visit_entry_idaction_url' => '2','referer_url' => '','referer_type' => '1','location_browser_lang' => 'de-de','config_browser_name' => 'CH','config_browser_engine' => 'Blink','referer_name' => '','referer_keyword' => '','visit_exit_idaction_url' => null,'visit_exit_idaction_name' => '9','visit_total_actions' => '6','visit_total_searches' => '1','custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idvisit' => '4','idsite' => '1','idvisitor' => pack("H*", 'd1256d2cba816f66'),'visit_last_action_time' => '2015-09-24 08:51:17','config_id' => pack("H*",'4ef458493bf77c0a'),'location_ip' => '7f000000','location_longitude' => null,'location_region' => null,'visitor_localtime' => '10:42:06','visitor_days_since_last' => '0','location_latitude' => null,'location_country' => 'de','config_device_type' => '0','config_device_model' => '','config_os' => 'UBT','config_os_version' => '','location_city' => null,'visit_total_events' => '0','config_pdf' => '0','config_java' => '1','config_quicktime' => '1','config_realplayer' => '0','config_windowsmedia' => '1','config_silverlight' => '0','config_gears' => '0','config_flash' => '1','config_resolution' => '1920x1200','config_cookie' => '1','config_director' => '0','config_device_brand' => '','config_browser_version' => '40.0','visitor_days_since_order' => '0','visitor_days_since_first' => '6','visitor_returning' => '1','visit_total_time' => '555','visitor_count_visits' => '3','visit_first_action_time' => '2015-09-24 08:42:07','user_id' => null,'visit_goal_buyer' => '0','visit_goal_converted' => '1','visit_entry_idaction_name' => '9','visit_entry_idaction_url' => '0','referer_url' => '','referer_type' => '1','location_browser_lang' => 'de','config_browser_name' => 'FF','config_browser_engine' => 'Gecko','referer_name' => '','referer_keyword' => '','visit_exit_idaction_url' => '2','visit_exit_idaction_name' => '1','visit_total_actions' => '10','visit_total_searches' => '6','custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null) + ) + ), + 'log_conversion' => array( + 'primary_key' => array( + 'idvisit', + 'idgoal', + 'buster' + ), + 'data' => array( + array('idvisit' => '4','idsite' => '1','idvisitor' => pack("H*", 'd1256d2cba816f66'),'server_time' => '2015-09-24 08:44:57','idaction_url' => null,'idlink_va' => null,'idgoal' => '1','buster' => '0','idorder' => null,'items' => null,'url' => 'http://cakecms-gf.tello/suche/simple/?query=sprich','location_longitude' => null,'location_region' => null,'location_latitude' => null,'location_country' => 'de','location_city' => null,'visitor_days_since_order' => '0','visitor_days_since_first' => '6','visitor_returning' => '1','visitor_count_visits' => '3','referer_type' => '1','referer_name' => '','referer_keyword' => '','revenue_discount' => null,'revenue' => '0','revenue_shipping' => null,'revenue_subtotal' => null,'revenue_tax' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idvisit' => '4','idsite' => '1','idvisitor' => pack("H*", 'd1256d2cba816f66'),'server_time' => '2015-09-24 08:51:17','idaction_url' => null,'idlink_va' => null,'idgoal' => '2','buster' => '1443084677','idorder' => null,'items' => null,'url' => 'http://cakecms-gf.tello/','location_longitude' => null,'location_region' => null,'location_latitude' => null,'location_country' => 'de','location_city' => null,'visitor_days_since_order' => '0','visitor_days_since_first' => '6','visitor_returning' => '1','visitor_count_visits' => '3','referer_type' => '1','referer_name' => '','referer_keyword' => '','revenue_discount' => null,'revenue' => '0','revenue_shipping' => null,'revenue_subtotal' => null,'revenue_tax' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null) + ) + ), + 'log_link_visit_action' => array( + 'primary_key' => array( + 'idlink_va' + ), + 'data' => array( + array('idlink_va' => '1','idsite' => '1','idvisitor' => pack("H*", 'e02a300b43dd2bbd'),'idvisit' => '1','idaction_url_ref' => '0','idaction_name_ref' => '0','custom_float' => '4431','server_time' => '2015-09-21 07:56:45','idaction_name' => '1','idaction_url' => '2','time_spent_ref_action' => '0','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '2','idsite' => '1','idvisitor' => pack("H*", 'e02a300b43dd2bbd'),'idvisit' => '1','idaction_url_ref' => '2','idaction_name_ref' => '1','custom_float' => '1337','server_time' => '2015-09-21 07:56:51','idaction_name' => '3','idaction_url' => null,'time_spent_ref_action' => '6','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '3','idsite' => '1','idvisitor' => pack("H*", 'e02a300b43dd2bbd'),'idvisit' => '1','idaction_url_ref' => null,'idaction_name_ref' => '3','custom_float' => '5','server_time' => '2015-09-21 07:56:53','idaction_name' => '1','idaction_url' => '2','time_spent_ref_action' => '2','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '4','idsite' => '1','idvisitor' => pack("H*", 'e02a300b43dd2bbd'),'idvisit' => '1','idaction_url_ref' => '2','idaction_name_ref' => '1','custom_float' => '483','server_time' => '2015-09-21 07:56:56','idaction_name' => '4','idaction_url' => null,'time_spent_ref_action' => '3','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '5','idsite' => '1','idvisitor' => pack("H*", 'e02a300b43dd2bbd'),'idvisit' => '1','idaction_url_ref' => null,'idaction_name_ref' => '4','custom_float' => '178','server_time' => '2015-09-21 07:56:58','idaction_name' => '1','idaction_url' => '2','time_spent_ref_action' => '2','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '6','idsite' => '1','idvisitor' => pack("H*", 'e02a300b43dd2bbd'),'idvisit' => '1','idaction_url_ref' => '2','idaction_name_ref' => '1','custom_float' => '2714','server_time' => '2015-09-21 07:57:02','idaction_name' => '5','idaction_url' => '6','time_spent_ref_action' => '4','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '7','idsite' => '1','idvisitor' => pack("H*", 'd1256d2cba816f66'),'idvisit' => '2','idaction_url_ref' => '0','idaction_name_ref' => '0','custom_float' => '493','server_time' => '2015-09-21 07:57:54','idaction_name' => '5','idaction_url' => '6','time_spent_ref_action' => '0','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '8','idsite' => '1','idvisitor' => pack("H*", 'e02a300b43dd2bbd'),'idvisit' => '3','idaction_url_ref' => '0','idaction_name_ref' => '0','custom_float' => '392','server_time' => '2015-09-24 08:41:07','idaction_name' => '1','idaction_url' => '2','time_spent_ref_action' => '0','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '9','idsite' => '1','idvisitor' => pack("H*", 'e02a300b43dd2bbd'),'idvisit' => '3','idaction_url_ref' => '2','idaction_name_ref' => '1','custom_float' => '890','server_time' => '2015-09-24 08:41:10','idaction_name' => '5','idaction_url' => '6','time_spent_ref_action' => '3','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '10','idsite' => '1','idvisitor' => pack("H*", 'e02a300b43dd2bbd'),'idvisit' => '3','idaction_url_ref' => '6','idaction_name_ref' => '5','custom_float' => '380','server_time' => '2015-09-24 08:41:14','idaction_name' => '1','idaction_url' => '2','time_spent_ref_action' => '4','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '11','idsite' => '1','idvisitor' => pack("H*", 'e02a300b43dd2bbd'),'idvisit' => '3','idaction_url_ref' => '2','idaction_name_ref' => '1','custom_float' => '1365','server_time' => '2015-09-24 08:41:23','idaction_name' => '7','idaction_url' => '8','time_spent_ref_action' => '9','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '12','idsite' => '1','idvisitor' => pack("H*", 'e02a300b43dd2bbd'),'idvisit' => '3','idaction_url_ref' => '8','idaction_name_ref' => '7','custom_float' => '419','server_time' => '2015-09-24 08:41:27','idaction_name' => '1','idaction_url' => '2','time_spent_ref_action' => '4','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '13','idsite' => '1','idvisitor' => pack("H*", 'e02a300b43dd2bbd'),'idvisit' => '3','idaction_url_ref' => '2','idaction_name_ref' => '1','custom_float' => '564','server_time' => '2015-09-24 08:41:35','idaction_name' => '9','idaction_url' => null,'time_spent_ref_action' => '8','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '14','idsite' => '1','idvisitor' => pack("H*", 'd1256d2cba816f66'),'idvisit' => '4','idaction_url_ref' => '0','idaction_name_ref' => '0','custom_float' => '855','server_time' => '2015-09-24 08:42:07','idaction_name' => '9','idaction_url' => null,'time_spent_ref_action' => '0','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '15','idsite' => '1','idvisitor' => pack("H*", 'd1256d2cba816f66'),'idvisit' => '4','idaction_url_ref' => '0','idaction_name_ref' => '9','custom_float' => '569','server_time' => '2015-09-24 08:42:26','idaction_name' => '9','idaction_url' => null,'time_spent_ref_action' => '19','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '16','idsite' => '1','idvisitor' => pack("H*", 'd1256d2cba816f66'),'idvisit' => '4','idaction_url_ref' => null,'idaction_name_ref' => '9','custom_float' => '566','server_time' => '2015-09-24 08:42:28','idaction_name' => '9','idaction_url' => null,'time_spent_ref_action' => '2','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '17','idsite' => '1','idvisitor' => pack("H*", 'd1256d2cba816f66'),'idvisit' => '4','idaction_url_ref' => null,'idaction_name_ref' => '9','custom_float' => '2108','server_time' => '2015-09-24 08:42:35','idaction_name' => '10','idaction_url' => null,'time_spent_ref_action' => '7','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '18','idsite' => '1','idvisitor' => pack("H*", 'd1256d2cba816f66'),'idvisit' => '4','idaction_url_ref' => null,'idaction_name_ref' => '10','custom_float' => '1887','server_time' => '2015-09-24 08:44:44','idaction_name' => '11','idaction_url' => null,'time_spent_ref_action' => '129','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '19','idsite' => '1','idvisitor' => pack("H*", 'd1256d2cba816f66'),'idvisit' => '4','idaction_url_ref' => null,'idaction_name_ref' => '11','custom_float' => '436','server_time' => '2015-09-24 08:48:09','idaction_name' => '1','idaction_url' => '2','time_spent_ref_action' => '192','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '20','idsite' => '1','idvisitor' => pack("H*", 'd1256d2cba816f66'),'idvisit' => '4','idaction_url_ref' => '2','idaction_name_ref' => '1','custom_float' => '436','server_time' => '2015-09-24 08:49:31','idaction_name' => '1','idaction_url' => '2','time_spent_ref_action' => '78','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '21','idsite' => '1','idvisitor' => pack("H*", 'd1256d2cba816f66'),'idvisit' => '4','idaction_url_ref' => '2','idaction_name_ref' => '1','custom_float' => '423','server_time' => '2015-09-24 08:49:34','idaction_name' => '1','idaction_url' => '2','time_spent_ref_action' => '3','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '22','idsite' => '1','idvisitor' => pack("H*", 'd1256d2cba816f66'),'idvisit' => '4','idaction_url_ref' => '2','idaction_name_ref' => '1','custom_float' => '644','server_time' => '2015-09-24 08:49:41','idaction_name' => '12','idaction_url' => null,'time_spent_ref_action' => '7','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null), + array('idlink_va' => '23','idsite' => '1','idvisitor' => pack("H*", 'd1256d2cba816f66'),'idvisit' => '4','idaction_url_ref' => null,'idaction_name_ref' => '12','custom_float' => '367','server_time' => '2015-09-24 08:49:48','idaction_name' => '1','idaction_url' => '2','time_spent_ref_action' => '7','idaction_event_action' => null,'idaction_event_category' => null,'idaction_content_interaction' => null,'idaction_content_name' => null,'idaction_content_piece' => null,'idaction_content_target' => null,'custom_var_k1' => null,'custom_var_v1' => null,'custom_var_k2' => null,'custom_var_v2' => null,'custom_var_k3' => null,'custom_var_v3' => null,'custom_var_k4' => null,'custom_var_v4' => null,'custom_var_k5' => null,'custom_var_v5' => null) + ) + ) + //TODO data for link item conversion (not necessary for me )(Undergrounder) + ); + } +} \ No newline at end of file diff --git a/Test/Integration/Command/MigrateSiteTest.php b/Test/Integration/Command/MigrateSiteTest.php new file mode 100644 index 0000000..25bed4a --- /dev/null +++ b/Test/Integration/Command/MigrateSiteTest.php @@ -0,0 +1,98 @@ +applicationTester->run(array( + 'command' => 'migration:site', + 'idSite' => 22 + )); + + $this->assertEquals(1, $result, $this->getCommandDisplayOutputErrorMessage()); + } + + public function test_MigrateSimple() + { + $result = $this->applicationTester->run(array( + 'command' => 'migration:site', + 'idSite' => 1 + )); + + $this->assertEquals(0, $result, $this->getCommandDisplayOutputErrorMessage()); + + $this->_compareWithDB(self::$migrateSimpleFixture); + } + + protected function _compareWithDB(AbstractTableFixture $resultFixture){ + foreach ($resultFixture->data as $tableName => $table){ + $this->_checkTable($tableName, $table); + } + } + + protected function _checkTable($tableName, $table){ + $rows = $table['data']; + + $db = Db::get(); + $dbHelper = new DBHelper($db, Db::getDatabaseConfig()); + + $rowCount = $db->fetchOne('SELECT COUNT(*) FROM ' . $dbHelper->prefixTable($tableName)); + $this->assertEquals(count($rows), $rowCount, sprintf('The expected row numbers for the table %s is %d and not %d.', $tableName, $rowCount, count($rows))); + + foreach ($rows as $row){ + $query = "SELECT * FROM " . $dbHelper->prefixTable($tableName) . ' WHERE'; + + $isFirstCondition = true; + foreach($table['primary_key'] as $columnName) { + if (!$isFirstCondition) { + $query .= ' AND'; + } + + $rowValue = $row[$columnName]; + + switch(gettype($rowValue)){ + case "string": + case "integer": + $query .= ' `' . $columnName . '` = \'' . $rowValue . '\''; + break; + case "NULL": + $query .= ' `' . $columnName . '` IS NULL'; + break; + } + + $isFirstCondition = false; + } + + $dbEntry = $db->fetchRow($query); + + $this->assertEquals($row, $dbEntry); + } + } +} + +MigrateSiteTest::$fixture = new TrackedData(); +MigrateSiteTest::$migrateSimpleFixture = new MigratedSimpleData(); \ No newline at end of file