diff options
Diffstat (limited to 'core/LogDeleter.php')
-rw-r--r-- | core/LogDeleter.php | 44 |
1 files changed, 18 insertions, 26 deletions
diff --git a/core/LogDeleter.php b/core/LogDeleter.php index fc61ec9358..51d2dddef5 100644 --- a/core/LogDeleter.php +++ b/core/LogDeleter.php @@ -9,6 +9,7 @@ namespace Piwik; use Piwik\DataAccess\RawLogDao; +use Piwik\Plugin\LogTablesProvider; /** * Service that deletes log entries. Methods in this class cascade, so deleting visits will delete visit actions, @@ -21,9 +22,15 @@ class LogDeleter */ private $rawLogDao; - public function __construct(RawLogDao $rawLogDao) + /** + * @var LogTablesProvider + */ + private $logTablesProvider; + + public function __construct(RawLogDao $rawLogDao, LogTablesProvider $logTablesProvider) { $this->rawLogDao = $rawLogDao; + $this->logTablesProvider = $logTablesProvider; } /** @@ -35,33 +42,18 @@ class LogDeleter */ public function deleteVisits($visitIds) { - $this->deleteConversions($visitIds); - $this->rawLogDao->deleteVisitActionsForVisits($visitIds); - - return $this->rawLogDao->deleteVisits($visitIds); - } + $numDeletedVisits = 0; - /** - * Deletes conversions by visit ID. This method cascades, so conversion items are also deleted. - * - * @param int[] $visitIds The list of visits to delete conversions for. - * @return int The number rows deleted. - */ - public function deleteConversions($visitIds) - { - $this->deleteConversionItems($visitIds); - return $this->rawLogDao->deleteConversions($visitIds); - } + foreach ($this->logTablesProvider->getAllLogTables() as $logTable) { + if ($logTable->getColumnToJoinOnIdVisit()) { + $numVisits = $this->rawLogDao->deleteFromLogTable($logTable->getName(), $visitIds); + if ($logTable->getName() === 'log_visit') { + $numDeletedVisits = $numVisits; + } + } + } - /** - * Deletes conversion items by visit ID. - * - * @param int[] $visitIds The list of visits to delete conversions for. - * @return int The number rows deleted. - */ - public function deleteConversionItems($visitIds) - { - return $this->rawLogDao->deleteConversionItems($visitIds); + return $numDeletedVisits; } /** |