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();
 }
Beispiel #2
0
 /**
  * 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);
 }
Beispiel #3
0
 /**
  * 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);
     }
 }
Beispiel #4
0
 /**
  * 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();
 }