public function setUp() { parent::setUp(); LogDataPurger::$selectSegmentSize = 2; ReportsPurger::$selectSegmentSize = 2; Db::$lockPrivilegeGranted = null; self::restoreDbTables(self::$dbData); $dateTime = Date::factory(self::$dateTime); // purging depends upon today's date, so 'older_than' parts must be dependent upon today $today = Date::factory('today'); $daysSinceToday = ($today->getTimestamp() - $dateTime->getTimestamp()) / (24 * 60 * 60); $monthsSinceToday = 0; for ($date = $today; $date->toString('Y-m') != $dateTime->toString('Y-m'); $date = $date->subMonth(1)) { ++$monthsSinceToday; } // set default config $settings = array(); $settings['delete_logs_enable'] = 1; // purging log data from before 2012-01-24 $settings['delete_logs_older_than'] = 35 + $daysSinceToday; $settings['delete_logs_schedule_lowest_interval'] = 7; $settings['delete_logs_max_rows_per_query'] = 100000; $settings['delete_reports_enable'] = 1; $settings['delete_reports_older_than'] = $monthsSinceToday; $settings['delete_reports_keep_basic_metrics'] = 0; $settings['delete_reports_keep_day_reports'] = 0; $settings['delete_reports_keep_week_reports'] = 0; $settings['delete_reports_keep_month_reports'] = 0; $settings['delete_reports_keep_year_reports'] = 0; $settings['delete_reports_keep_range_reports'] = 0; $settings['delete_reports_keep_segment_reports'] = 0; PrivacyManager::savePurgeDataSettings($settings); $this->settings = $settings; $this->instance = new PrivacyManager(); }
/** * Returns true if a report with the given year & month should be purged or not. * * If reportsOlderThan is set to null or not supplied, this function will check if * a report should be purged, based on existing configuration. In this case, if * delete_reports_enable is set to 0, this function will return false. * * @param int $reportDateYear The year of the report in question. * @param int $reportDateMonth The month of the report in question. * @param int|Date $reportsOlderThan If an int, the number of months a report must be older than * in order to be purged. If a date, the date a report must be * older than in order to be purged. * @return bool */ public static function shouldReportBePurged($reportDateYear, $reportDateMonth, $reportsOlderThan = null) { // if no 'older than' value/date was supplied, use existing config if (is_null($reportsOlderThan)) { // if report deletion is not enabled, the report shouldn't be purged $settings = self::getPurgeDataSettings(); if ($settings['delete_reports_enable'] == 0) { return false; } $reportsOlderThan = $settings['delete_reports_older_than']; } // if a integer was supplied, assume it is the number of months a report must be older than if (!$reportsOlderThan instanceof Date) { $reportsOlderThan = Date::factory('today')->subMonth(1 + $reportsOlderThan); } return ReportsPurger::shouldReportBePurged($reportDateYear, $reportDateMonth, $reportsOlderThan); }
/** * Executes a data purge, deleting log data and report data using the current config * options. Echo's the result of getDatabaseSize after purging. */ public function executeDataPurge() { Piwik::checkUserHasSuperUserAccess(); $this->checkTokenInUrl(); // if the request isn't a POST, redirect to index if ($_SERVER["REQUEST_METHOD"] != "POST" && !Common::isPhpCliMode()) { $this->redirectToIndex('PrivacyManager', 'privacySettings'); return; } $settings = PrivacyManager::getPurgeDataSettings(); if ($settings['delete_logs_enable']) { $logDataPurger = LogDataPurger::make($settings); $logDataPurger->purgeData(); } if ($settings['delete_reports_enable']) { $reportsPurger = ReportsPurger::make($settings, PrivacyManager::getAllMetricsToKeep()); $reportsPurger->purgeData(true); } }
/** * Executes a data purge, deleting log data and report data using the current config * options. Echo's the result of getDatabaseSize after purging. */ public function executeDataPurge() { $this->checkDataPurgeAdminSettingsIsEnabled(); Piwik::checkUserHasSuperUserAccess(); $this->checkTokenInUrl(); // if the request isn't a POST, redirect to index if ($_SERVER["REQUEST_METHOD"] != "POST" && !Common::isPhpCliMode()) { $this->redirectToIndex('PrivacyManager', 'privacySettings'); return; } $settings = PrivacyManager::getPurgeDataSettings(); if ($settings['delete_logs_enable']) { /** @var LogDataPurger $logDataPurger */ $logDataPurger = StaticContainer::get('Piwik\\Plugins\\PrivacyManager\\LogDataPurger'); $logDataPurger->purgeData($settings['delete_logs_older_than']); } if ($settings['delete_reports_enable']) { $reportsPurger = ReportsPurger::make($settings, PrivacyManager::getAllMetricsToKeep()); $reportsPurger->purgeData(true); } }
private function purgeData($deleteReportsOlderThan, $reportPeriodsToKeep, $keepBasicMetrics) { $metricsToKeep = PrivacyManager::getAllMetricsToKeep(); $maxRowsToDeletePerQuery = 100000; $keepSegmentReports = false; $purger = new ReportsPurger($deleteReportsOlderThan, $keepBasicMetrics, $reportPeriodsToKeep, $keepSegmentReports, $metricsToKeep, $maxRowsToDeletePerQuery); $purger->purgeData(); }