protected function execute(InputInterface $input, OutputInterface $output) { $invalidateArchives = $input->getOption('invalidate-archives'); $timer = new Timer(); $duplicateActions = $this->duplicateActionRemover->getDuplicateIdActions(); if (empty($duplicateActions)) { $output->writeln("Found no duplicate actions."); return; } $output->writeln("<info>Found " . count($duplicateActions) . " actions with duplicates.</info>"); list($numberRemoved, $allArchivesAffected) = $this->fixDuplicateActionReferences($duplicateActions, $output); $this->deleteDuplicatesFromLogAction($output, $duplicateActions); if ($invalidateArchives) { $this->invalidateArchivesUsingActionDuplicates($allArchivesAffected, $output); } else { $this->printAffectedArchives($allArchivesAffected, $output); } $logActionTable = Common::prefixTable('log_action'); $this->writeSuccessMessage($output, array("Found and deleted {$numberRemoved} duplicate action entries in the {$logActionTable} table.", "References in log_link_visit_action, log_conversion and log_conversion_item were corrected.", $timer->__toString())); }
public function test_getDuplicateIdActions_ReturnsDuplicateIdActions_AndTreatsLowestIdActionAsOriginal() { $expectedResult = array(array('name' => 'action1', 'idaction' => 1, 'duplicateIdActions' => array(2, 3)), array('name' => 'ACTION2', 'idaction' => 5, 'duplicateIdActions' => array(7, 11)), array('name' => 'action2', 'idaction' => 4, 'duplicateIdActions' => array(9)), array('name' => 'action4', 'idaction' => 6, 'duplicateIdActions' => array(10, 12))); $actualResult = $this->duplicateActionRemover->getDuplicateIdActions(); $this->assertEquals($expectedResult, $actualResult); }