/**
  * Returns the next scheduled time for the auto updater.
  * 
  * @return Date|false
  */
 public static function getNextRunTime()
 {
     $task = new GeoIPAutoUpdater();
     $timetable = new ScheduledTaskTimetable();
     return $timetable->getScheduledTaskTime($task->getName());
 }
Example #2
0
 /**
  * @group Core
  * 
  * @dataProvider testRunTasksTestCases
  */
 public function testRunTasks($expectedTimetable, $expectedExecutedTasks, $timetableBeforeTaskExecution, $configuredTasks)
 {
     // temporarily unload plugins
     $plugins = \Piwik\Plugin\Manager::getInstance()->getLoadedPlugins();
     $plugins = array_map(function ($p) {
         return $p->getPluginName();
     }, $plugins);
     \Piwik\Plugin\Manager::getInstance()->unloadPlugins();
     // make sure the get tasks event returns our configured tasks
     \Piwik\Piwik::addAction(TaskScheduler::GET_TASKS_EVENT, function (&$tasks) use($configuredTasks) {
         $tasks = $configuredTasks;
     });
     // stub the piwik option object to control the returned option value
     self::stubPiwikOption(serialize($timetableBeforeTaskExecution));
     TaskScheduler::unsetInstance();
     // execute tasks
     $executionResults = TaskScheduler::runTasks();
     // assert methods are executed
     $executedTasks = array();
     foreach ($executionResults as $executionResult) {
         $executedTasks[] = $executionResult['task'];
         $this->assertNotEmpty($executionResult['output']);
     }
     $this->assertEquals($expectedExecutedTasks, $executedTasks);
     // assert the timetable is correctly updated
     $timetable = new ScheduledTaskTimetable();
     $this->assertEquals($expectedTimetable, $timetable->getTimetable());
     // restore loaded plugins & piwik options
     EventDispatcher::getInstance()->clearObservers(TaskScheduler::GET_TASKS_EVENT);
     \Piwik\Plugin\Manager::getInstance()->loadPlugins($plugins);
     self::resetPiwikOption();
 }