'getStylesheetFiles', 'AssetManager.getJavaScriptFiles' => 'getJsFiles', 'Tracker.setTrackerCacheGeneral' => 'setTrackerCacheGeneral', 'Insights.addReportToOverview' => 'addReportToInsightsOverview', ); } public function addReportToInsightsOverview(&$reports) { $reports['UserCountry_getCountry'] = array(); } public function setTrackerCacheGeneral(&$cache) { $cache['currentLocationProviderId'] = LocationProvider::getCurrentProviderId(); } public function getStylesheetFiles(&$stylesheets) { $stylesheets[] = "plugins/UserCountry/stylesheets/userCountry.less"; } public function getJsFiles(&$jsFiles) { $jsFiles[] = "plugins/UserCountry/angularjs/location-provider-selection/location-provider-selection.controller.js"; $jsFiles[] = "plugins/UserCountry/angularjs/location-provider-selection/location-provider-selection.directive.js"; } /** * Returns a list of country codes for a given continent code. * * @param string $continent The continent code. * @return array */ public static function getCountriesForContinent($continent) { /** @var RegionDataProvider $regionDataProvider */ $regionDataProvider = StaticContainer::get('Piwik\Intl\Data\Provider\RegionDataProvider'); $result = array(); $continent = strtolower($continent); foreach ($regionDataProvider->getCountryList() as $countryCode => $continentCode) { if ($continent == $continentCode) { $result[] = $countryCode; } } return array('SQL' => "'" . implode("', '", $result) . "', ?", 'bind' => '-'); // HACK: SegmentExpression requires a $bind, even if there's nothing to bind } /** * Returns true if a GeoIP provider is installed & working, false if otherwise. * * @return bool */ public function isGeoIPWorking() { $provider = LocationProvider::getCurrentProvider(); return $provider instanceof GeoIp2 && $provider->isAvailable() === true && $provider->isWorking() === true; } public static function isGeoLocationAdminEnabled() { return (bool) Config::getInstance()->General['enable_geolocation_admin']; } }