update Piwik to version 2.16 (fixes #91)
This commit is contained in:
parent
296343bf3b
commit
d885a4baa9
5833 changed files with 418860 additions and 226988 deletions
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
/**
|
||||
* Piwik - Open source web analytics
|
||||
* Piwik - free/libre analytics platform
|
||||
*
|
||||
* @link http://piwik.org
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
||||
|
|
@ -12,26 +12,27 @@ require_once PIWIK_INCLUDE_PATH . "/core/ScheduledTask.php"; // for the tracker
|
|||
|
||||
use Exception;
|
||||
use Piwik\Common;
|
||||
use Piwik\Container\StaticContainer;
|
||||
use Piwik\Date;
|
||||
use Piwik\Http;
|
||||
use Piwik\Log;
|
||||
use Piwik\Option;
|
||||
use Piwik\Piwik;
|
||||
use Piwik\Plugins\UserCountry\LocationProvider;
|
||||
use Piwik\Plugins\UserCountry\LocationProvider\GeoIp;
|
||||
use Piwik\Plugins\UserCountry\LocationProvider\GeoIp\Php;
|
||||
use Piwik\ScheduledTask;
|
||||
use Piwik\ScheduledTaskTimetable;
|
||||
use Piwik\ScheduledTime\Monthly;
|
||||
use Piwik\ScheduledTime\Weekly;
|
||||
use Piwik\TaskScheduler;
|
||||
use Piwik\Plugins\UserCountry\LocationProvider\GeoIp;
|
||||
use Piwik\Plugins\UserCountry\LocationProvider;
|
||||
use Piwik\Scheduler\Scheduler;
|
||||
use Piwik\Scheduler\Task;
|
||||
use Piwik\Scheduler\Timetable;
|
||||
use Piwik\Scheduler\Schedule\Monthly;
|
||||
use Piwik\Scheduler\Schedule\Weekly;
|
||||
use Piwik\Unzip;
|
||||
|
||||
/**
|
||||
* Used to automatically update installed GeoIP databases, and manages the updater's
|
||||
* scheduled task.
|
||||
*/
|
||||
class GeoIPAutoUpdater extends ScheduledTask
|
||||
class GeoIPAutoUpdater extends Task
|
||||
{
|
||||
const SCHEDULE_PERIOD_MONTHLY = 'month';
|
||||
const SCHEDULE_PERIOD_WEEKLY = 'week';
|
||||
|
|
@ -78,7 +79,7 @@ class GeoIPAutoUpdater extends ScheduledTask
|
|||
break;
|
||||
}
|
||||
|
||||
parent::__construct($this, 'update', null, $schedulePeriod, ScheduledTask::LOWEST_PRIORITY);
|
||||
parent::__construct($this, 'update', null, $schedulePeriod, Task::LOWEST_PRIORITY);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -128,6 +129,8 @@ class GeoIPAutoUpdater extends ScheduledTask
|
|||
*/
|
||||
protected function downloadFile($dbType, $url)
|
||||
{
|
||||
$url = trim($url);
|
||||
|
||||
$ext = GeoIPAutoUpdater::getGeoIPUrlExtension($url);
|
||||
|
||||
// NOTE: using the first item in $dbNames[$dbType] makes sure GeoLiteCity will be renamed to GeoIPCity
|
||||
|
|
@ -265,7 +268,7 @@ class GeoIPAutoUpdater extends ScheduledTask
|
|||
}
|
||||
|
||||
$tempFile = GeoIp::getPathForGeoIpDatabase($tempFilename);
|
||||
rename($existing = $tempFile, $newName = $oldDbFile);
|
||||
rename($tempFile, $oldDbFile);
|
||||
|
||||
// delete original archive
|
||||
if ($unlink) {
|
||||
|
|
@ -332,7 +335,7 @@ class GeoIPAutoUpdater extends ScheduledTask
|
|||
// set period option
|
||||
if (!empty($options['period'])) {
|
||||
$period = $options['period'];
|
||||
|
||||
|
||||
if ($period != self::SCHEDULE_PERIOD_MONTHLY
|
||||
&& $period != self::SCHEDULE_PERIOD_WEEKLY
|
||||
) {
|
||||
|
|
@ -344,7 +347,10 @@ class GeoIPAutoUpdater extends ScheduledTask
|
|||
|
||||
Option::set(self::SCHEDULE_PERIOD_OPTION_NAME, $period);
|
||||
|
||||
TaskScheduler::rescheduleTask(new GeoIPAutoUpdater());
|
||||
/** @var Scheduler $scheduler */
|
||||
$scheduler = StaticContainer::getContainer()->get('Piwik\Scheduler\Scheduler');
|
||||
|
||||
$scheduler->rescheduleTask(new GeoIPAutoUpdater());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -516,8 +522,10 @@ class GeoIPAutoUpdater extends ScheduledTask
|
|||
* Databases are renamed to ${original}.broken .
|
||||
*
|
||||
* Note: method is protected for testability.
|
||||
*
|
||||
* @param $logErrors - only used to hide error logs during tests
|
||||
*/
|
||||
protected function performRedundantDbChecks()
|
||||
protected function performRedundantDbChecks($logErrors = true)
|
||||
{
|
||||
$databaseTypes = array_keys(GeoIp::$dbNames);
|
||||
|
||||
|
|
@ -536,8 +544,11 @@ class GeoIPAutoUpdater extends ScheduledTask
|
|||
self::getTestLocationCatchPhpErrors($provider);
|
||||
if (self::$unzipPhpError !== null) {
|
||||
list($errno, $errstr, $errfile, $errline) = self::$unzipPhpError;
|
||||
Log::warning("GeoIPAutoUpdater: Encountered PHP error when performing redundant tests on GeoIP "
|
||||
. "%s database: %s: %s on line %s of %s.", $type, $errno, $errstr, $errline, $errfile);
|
||||
|
||||
if($logErrors) {
|
||||
Log::error("GeoIPAutoUpdater: Encountered PHP error when performing redundant tests on GeoIP "
|
||||
. "%s database: %s: %s on line %s of %s.", $type, $errno, $errstr, $errline, $errfile);
|
||||
}
|
||||
|
||||
// get the current filename for the DB and an available new one to rename it to
|
||||
list($oldPath, $newPath) = $this->getOldAndNewPathsForBrokenDb($customNames[$type]);
|
||||
|
|
@ -622,19 +633,19 @@ class GeoIPAutoUpdater extends ScheduledTask
|
|||
|
||||
/**
|
||||
* Returns the next scheduled time for the auto updater.
|
||||
*
|
||||
*
|
||||
* @return Date|false
|
||||
*/
|
||||
public static function getNextRunTime()
|
||||
{
|
||||
$task = new GeoIPAutoUpdater();
|
||||
|
||||
$timetable = new ScheduledTaskTimetable();
|
||||
$timetable = new Timetable();
|
||||
return $timetable->getScheduledTaskTime($task->getName());
|
||||
}
|
||||
|
||||
/**
|
||||
* See {@link Piwik\ScheduledTime::getRescheduledTime()}.
|
||||
* See {@link Piwik\Scheduler\Schedule\Schedule::getRescheduledTime()}.
|
||||
*/
|
||||
public function getRescheduledTime()
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue