| <?php |
|
|
| |
| |
| |
| |
| |
| |
|
|
| namespace Piwik\Plugins\GeoIp2; |
|
|
| use Piwik\CliMulti; |
| use Piwik\Container\StaticContainer; |
| use Piwik\Option; |
| use Piwik\Piwik; |
| use Piwik\Plugins\Installation\FormDefaultSettings; |
| use Piwik\Plugins\UserCountry\LocationProvider; |
| use Piwik\Scheduler\Scheduler; |
|
|
| class GeoIp2 extends \Piwik\Plugin |
| { |
| public function registerEvents() |
| { |
| return array( |
| 'Translate.getClientSideTranslationKeys' => 'getClientSideTranslationKeys', |
| 'Installation.defaultSettingsForm.init' => 'installationFormInit', |
| 'Installation.defaultSettingsForm.submit' => 'installationFormSubmit', |
| ); |
| } |
|
|
| public function isTrackerPlugin() |
| { |
| return true; |
| } |
|
|
| public function deactivate() |
| { |
| |
| if (LocationProvider::getCurrentProvider() instanceof \Piwik\Plugins\GeoIp2\LocationProvider\GeoIp2) { |
| LocationProvider::setCurrentProvider(LocationProvider::getDefaultProviderId()); |
| } |
| } |
|
|
| public function getClientSideTranslationKeys(&$translationKeys) |
| { |
| $translationKeys[] = "GeoIp2_FatalErrorDuringDownload"; |
| $translationKeys[] = "GeoIp2_SetupAutomaticUpdatesOfGeoIP"; |
| $translationKeys[] = "General_Done"; |
| $translationKeys[] = "General_Save"; |
| $translationKeys[] = "General_Continue"; |
| $translationKeys[] = 'GeoIp2_ISPRequiresProviderPlugin'; |
| $translationKeys[] = 'GeoIp2_UpdaterWasLastRun'; |
| $translationKeys[] = 'GeoIp2_UpdaterIsNotScheduledToRun'; |
| $translationKeys[] = 'GeoIp2_GeoIPUpdaterIntro'; |
| $translationKeys[] = 'GeoIp2_IWantToDownloadFreeGeoIP'; |
| $translationKeys[] = 'General_GetStarted'; |
| $translationKeys[] = 'GeoIp2_GeoIPDatabases'; |
| $translationKeys[] = 'GeoIp2_NotManagingGeoIPDBs'; |
| $translationKeys[] = 'GeoIp2_IPurchasedGeoIPDBs'; |
| $translationKeys[] = 'UserCountry_GeoIpDbIpAccuracyNote'; |
| $translationKeys[] = 'GeoIp2_GeoIPUpdaterInstructions'; |
| $translationKeys[] = 'GeoIp2_GeoLiteCityLink'; |
| $translationKeys[] = 'UserCountry_MaxMindLinkExplanation'; |
| $translationKeys[] = 'GeoIp2_LocationDatabase'; |
| $translationKeys[] = 'Actions_ColumnDownloadURL'; |
| $translationKeys[] = 'GeoIp2_LocationDatabaseHint'; |
| $translationKeys[] = 'GeoIp2_ISPDatabase'; |
| $translationKeys[] = 'GeoIp2_DownloadNewDatabasesEvery'; |
| $translationKeys[] = 'GeoIp2_CannotSetupGeoIPAutoUpdating'; |
| $translationKeys[] = 'GeoIp2_UpdaterHasNotBeenRun'; |
| $translationKeys[] = 'GeoIp2_UpdaterScheduledForNextRun'; |
| $translationKeys[] = 'GeoIp2_UpdaterWillRunNext'; |
| $translationKeys[] = 'GeoIp2_DownloadingDb'; |
| } |
|
|
| |
| |
| |
| public function installationFormInit(FormDefaultSettings $form) |
| { |
| $form->addElement( |
| 'checkbox', |
| 'setup_geoip2', |
| null, |
| [ |
| 'content' => '<div class="form-help">' . Piwik::translate('GeoIp2_AutomaticSetupDescription', ['<a rel="noreferrer noopener" target="_blank" href="https://db-ip.com/db/lite.php?refid=mtm">','</a>']) . '</div> ' . Piwik::translate('GeoIp2_AutomaticSetup'), |
| ] |
| ); |
|
|
| |
| $form->addDataSource(new \HTML_QuickForm2_DataSource_Array([ |
| 'setup_geoip2' => true, |
| ])); |
| } |
|
|
| |
| |
| |
| public function installationFormSubmit(FormDefaultSettings $form) |
| { |
| $setupGeoIp2 = (bool) $form->getSubmitValue('setup_geoip2'); |
|
|
| if ($setupGeoIp2) { |
| Option::set(GeoIP2AutoUpdater::AUTO_SETUP_OPTION_NAME, true); |
| GeoIP2AutoUpdater::setUpdaterOptions([ |
| 'loc' => \Piwik\Plugins\GeoIp2\LocationProvider\GeoIp2::getDbIpLiteUrl(), |
| 'period' => GeoIP2AutoUpdater::SCHEDULE_PERIOD_MONTHLY, |
| ]); |
|
|
| $cliMulti = new CliMulti(); |
|
|
| |
| |
| if ($cliMulti->supportsAsync()) { |
| $phpCli = new CliMulti\CliPhp(); |
| $command = sprintf( |
| '%s %s/console core:run-scheduled-tasks --force "Piwik\Plugins\GeoIp2\GeoIP2AutoUpdater.update" > /dev/null 2>&1 &', |
| $phpCli->findPhpBinary(), |
| PIWIK_INCLUDE_PATH |
| ); |
| shell_exec($command); |
| } else { |
| |
| $scheduler = StaticContainer::getContainer()->get('Piwik\Scheduler\Scheduler'); |
| $scheduler->rescheduleTask(new GeoIP2AutoUpdater()); |
| } |
| } |
| } |
| } |
|
|