public static function configure(WidgetConfig $config) { $config->setCategoryId('About Piwik'); $config->setName('CoreHome_SystemSummaryWidget'); $config->setOrder(15); $config->setIsEnabled(Piwik::hasUserSuperUserAccess()); }
/** * Returns a HTML page containing help for all the successfully loaded APIs. * For each module it will return a mini help with the method names, parameters to give, * links to get the result in Xml/Csv/etc * * @param bool $outputExampleUrls * @param string $prefixUrls * @return string */ public function getAllInterfaceString($outputExampleUrls = true, $prefixUrls = '') { if (!empty($prefixUrls)) { $prefixUrls = 'http://demo.piwik.org/'; } $str = $toc = ''; foreach (Proxy::getInstance()->getMetadata() as $class => $info) { $moduleName = Proxy::getInstance()->getModuleNameFromClassName($class); $rClass = new ReflectionClass($class); if (!Piwik::hasUserSuperUserAccess() && $this->checkIfClassCommentContainsHideAnnotation($rClass)) { continue; } if ($this->checkIfCommentContainsInternalAnnotation($rClass)) { continue; } $toDisplay = $this->prepareModulesAndMethods($info, $moduleName); foreach ($toDisplay as $moduleName => $methods) { foreach ($methods as $index => $method) { $reflectionMethod = new \ReflectionMethod($class, $method); if ($this->checkIfCommentContainsInternalAnnotation($reflectionMethod)) { unset($toDisplay[$moduleName][$index]); } } if (empty($toDisplay[$moduleName])) { unset($toDisplay[$moduleName]); } } foreach ($toDisplay as $moduleName => $methods) { $toc .= $this->prepareModuleToDisplay($moduleName); $str .= $this->prepareMethodToDisplay($moduleName, $info, $methods, $class, $outputExampleUrls, $prefixUrls); } } $str = "<div piwik-content-block content-title='Quick access to APIs' id='topApiRef' name='topApiRef'>\n\t\t\t\t{$toc}</div>\n\t\t\t\t{$str}"; return $str; }
public function init() { $__languages = array('bg', 'cz', 'de', 'en', 'es', 'fr', 'hu', 'id', 'it', 'ja', 'nl', 'pl', 'pt', 'ro', 'ru', 'sr', 'tr', 'uk', 'zh'); if (isset($_SERVER['REQUEST_URI']) && $_SERVER['REQUEST_URI'] !== '') { $realPath =& $_SERVER['REQUEST_URI']; } elseif (isset($_SERVER['SCRIPT_NAME']) && $_SERVER['SCRIPT_NAME'] !== '') { $realPath =& $_SERVER['SCRIPT_NAME']; } else { exit(LANG_UNKNOWN_DIR); } /** First of all, check if we are inside Piwik */ $dirName = dirname($realPath); if ($dirName === '/') { $dirName = ''; } define('CLICKHEAT_PATH', $dirName . '/plugins/ClickHeat/libs/'); define('CLICKHEAT_INDEX_PATH', 'index.php?module=ClickHeat&'); define('CLICKHEAT_ROOT', PIWIK_INCLUDE_PATH . '/plugins/ClickHeat/libs/'); define('CLICKHEAT_CONFIG', PIWIK_INCLUDE_PATH . '/plugins/ClickHeat/clickheat.php'); define('IS_PIWIK_MODULE', true); if (Piwik::hasUserSuperUserAccess()) { define('CLICKHEAT_ADMIN', true); } else { define('CLICKHEAT_ADMIN', false); } define('CLICKHEAT_LANGUAGE', Translate::getLanguageToLoad()); require_once CLICKHEAT_CONFIG; /** Specific definitions */ $clickheatConf['__screenSizes'] = array(0, 640, 800, 1024, 1280, 1440, 1600, 1800); $clickheatConf['__browsersList'] = array('all' => '', 'firefox' => 'Firefox', 'chrome' => 'Google Chrome', 'msie' => 'Internet Explorer', 'safari' => 'Safari', 'opera' => 'Opera', 'kmeleon' => 'K-meleon', 'unknown' => ''); self::conf($clickheatConf); }
public static function configure(WidgetConfig $config) { $config->setCategoryId('About Piwik'); $config->setName('Installation_SystemCheck'); $config->setOrder(16); $config->setIsEnabled(Piwik::hasUserSuperUserAccess()); }
public function configureAdminMenu(MenuAdmin $menu) { $hasSuperUserAcess = Piwik::hasUserSuperUserAccess(); $isAnonymous = Piwik::isUserIsAnonymous(); $isMarketplaceEnabled = CorePluginsAdmin::isMarketplaceEnabled(); $pluginsUpdateMessage = ''; $themesUpdateMessage = ''; if ($hasSuperUserAcess && $isMarketplaceEnabled) { $marketplace = new Marketplace(); $pluginsHavingUpdate = $marketplace->getPluginsHavingUpdate($themesOnly = false); $themesHavingUpdate = $marketplace->getPluginsHavingUpdate($themesOnly = true); if (!empty($pluginsHavingUpdate)) { $pluginsUpdateMessage = sprintf(' (%d)', count($pluginsHavingUpdate)); } if (!empty($themesHavingUpdate)) { $themesUpdateMessage = sprintf(' (%d)', count($themesHavingUpdate)); } } if (!$isAnonymous) { $menu->addPlatformItem(null, "", $order = 7); } if ($hasSuperUserAcess) { $menu->addPlatformItem(Piwik::translate('General_Plugins') . $pluginsUpdateMessage, $this->urlForAction('plugins', array('activated' => '')), $order = 1); $menu->addPlatformItem(Piwik::translate('CorePluginsAdmin_Themes') . $themesUpdateMessage, $this->urlForAction('themes', array('activated' => '')), $order = 3); } if ($this->isAllowedToSeeMarketPlace()) { $menu->addPlatformItem('CorePluginsAdmin_Marketplace', $this->urlForAction('extend', array('activated' => '')), $order = 5); } }
public function configureAdminMenu(MenuAdmin $menu) { $hasSuperUserAcess = Piwik::hasUserSuperUserAccess(); $isAnonymous = Piwik::isUserIsAnonymous(); $isMarketplaceEnabled = CorePluginsAdmin::isMarketplaceEnabled(); $pluginsUpdateMessage = ''; $themesUpdateMessage = ''; if ($hasSuperUserAcess && $isMarketplaceEnabled) { $marketplace = new Marketplace(); $pluginsHavingUpdate = $marketplace->getPluginsHavingUpdate($themesOnly = false); $themesHavingUpdate = $marketplace->getPluginsHavingUpdate($themesOnly = true); if (!empty($pluginsHavingUpdate)) { $pluginsUpdateMessage = sprintf(' (%d)', count($pluginsHavingUpdate)); } if (!empty($themesHavingUpdate)) { $themesUpdateMessage = sprintf(' (%d)', count($themesHavingUpdate)); } } $menu->add('CorePluginsAdmin_MenuPlatform', null, "", !$isAnonymous, $order = 7); $menu->add('CorePluginsAdmin_MenuPlatform', Piwik::translate('General_Plugins') . $pluginsUpdateMessage, array('module' => 'CorePluginsAdmin', 'action' => 'plugins', 'activated' => ''), $hasSuperUserAcess, $order = 1); $menu->add('CorePluginsAdmin_MenuPlatform', Piwik::translate('CorePluginsAdmin_Themes') . $themesUpdateMessage, array('module' => 'CorePluginsAdmin', 'action' => 'themes', 'activated' => ''), $hasSuperUserAcess, $order = 3); if ($isMarketplaceEnabled) { $menu->add('CorePluginsAdmin_MenuPlatform', 'CorePluginsAdmin_Marketplace', array('module' => 'CorePluginsAdmin', 'action' => 'extend', 'activated' => ''), !$isAnonymous, $order = 5); } }
public function index() { Piwik::checkUserIsNotAnonymous(); $view = new View('@MobileMessaging/index'); $view->isSuperUser = Piwik::hasUserSuperUserAccess(); $mobileMessagingAPI = API::getInstance(); $view->delegatedManagement = $mobileMessagingAPI->getDelegatedManagement(); $view->credentialSupplied = $mobileMessagingAPI->areSMSAPICredentialProvided(); $view->accountManagedByCurrentUser = $view->isSuperUser || $view->delegatedManagement; $view->strHelpAddPhone = Piwik::translate('MobileMessaging_Settings_PhoneNumbers_HelpAdd', array(Piwik::translate('General_Settings'), Piwik::translate('MobileMessaging_SettingsMenu'))); if ($view->credentialSupplied && $view->accountManagedByCurrentUser) { $view->provider = $mobileMessagingAPI->getSMSProvider(); $view->creditLeft = $mobileMessagingAPI->getCreditLeft(); } $view->smsProviders = SMSProvider::$availableSMSProviders; // construct the list of countries from the lang files $countries = array(); foreach (Common::getCountriesList() as $countryCode => $continentCode) { if (isset(CountryCallingCodes::$countryCallingCodes[$countryCode])) { $countries[$countryCode] = array('countryName' => \Piwik\Plugins\UserCountry\countryTranslate($countryCode), 'countryCallingCode' => CountryCallingCodes::$countryCallingCodes[$countryCode]); } } $view->countries = $countries; $view->defaultCountry = Common::getCountry(LanguagesManager::getLanguageCodeForCurrentUser(), true, IP::getIpFromHeader()); $view->phoneNumbers = $mobileMessagingAPI->getPhoneNumbers(); $this->setBasicVariablesView($view); return $view->render(); }
private function setManageVariables(View $view) { $view->isSuperUser = Piwik::hasUserSuperUserAccess(); $mobileMessagingAPI = API::getInstance(); $view->delegatedManagement = $mobileMessagingAPI->getDelegatedManagement(); $view->credentialSupplied = $mobileMessagingAPI->areSMSAPICredentialProvided(); $view->accountManagedByCurrentUser = $view->isSuperUser || $view->delegatedManagement; $view->strHelpAddPhone = $this->translator->translate('MobileMessaging_Settings_PhoneNumbers_HelpAdd', array($this->translator->translate('General_Settings'), $this->translator->translate('MobileMessaging_SettingsMenu'))); $view->creditLeft = 0; $view->provider = ''; if ($view->credentialSupplied && $view->accountManagedByCurrentUser) { $view->provider = $mobileMessagingAPI->getSMSProvider(); $view->creditLeft = $mobileMessagingAPI->getCreditLeft(); } $providers = array(); foreach (SMSProvider::findAvailableSmsProviders() as $provider) { $providers[$provider->getId()] = $provider->getDescription(); } $view->smsProviders = $providers; // construct the list of countries from the lang files $countries = array(); foreach ($this->regionDataProvider->getCountryList() as $countryCode => $continentCode) { if (isset(CountryCallingCodes::$countryCallingCodes[$countryCode])) { $countries[$countryCode] = array('countryName' => \Piwik\Plugins\UserCountry\countryTranslate($countryCode), 'countryCallingCode' => CountryCallingCodes::$countryCallingCodes[$countryCode]); } } $view->countries = $countries; $view->defaultCountry = Common::getCountry(LanguagesManager::getLanguageCodeForCurrentUser(), true, IP::getIpFromHeader()); $view->phoneNumbers = $mobileMessagingAPI->getPhoneNumbers(); $this->setBasicVariablesView($view); }
public function getDefaultLayout() { $defaultLayout = $this->getLayoutForUser('', 1); if (empty($defaultLayout)) { if (Piwik::hasUserSuperUserAccess()) { $topWidget = '{"uniqueId":"widgetCoreHomegetDonateForm",' . '"parameters":{"module":"CoreHome","action":"getDonateForm"}},'; } else { $topWidget = '{"uniqueId":"widgetCoreHomegetPromoVideo",' . '"parameters":{"module":"CoreHome","action":"getPromoVideo"}},'; } $defaultLayout = '[ [ {"uniqueId":"widgetVisitsSummarygetEvolutionGraphcolumnsArray","parameters":{"module":"VisitsSummary","action":"getEvolutionGraph","columns":"nb_visits"}}, {"uniqueId":"widgetLivewidget","parameters":{"module":"Live","action":"widget"}}, {"uniqueId":"widgetVisitorInterestgetNumberOfVisitsPerVisitDuration","parameters":{"module":"VisitorInterest","action":"getNumberOfVisitsPerVisitDuration"}} ], [ ' . $topWidget . ' {"uniqueId":"widgetReferrersgetKeywords","parameters":{"module":"Referrers","action":"getKeywords"}}, {"uniqueId":"widgetReferrersgetWebsites","parameters":{"module":"Referrers","action":"getWebsites"}} ], [ {"uniqueId":"widgetUserCountryMapvisitorMap","parameters":{"module":"UserCountryMap","action":"visitorMap"}}, {"uniqueId":"widgetUserSettingsgetBrowser","parameters":{"module":"UserSettings","action":"getBrowser"}}, {"uniqueId":"widgetReferrersgetSearchEngines","parameters":{"module":"Referrers","action":"getSearchEngines"}}, {"uniqueId":"widgetVisitTimegetVisitInformationPerServerTime","parameters":{"module":"VisitTime","action":"getVisitInformationPerServerTime"}}, {"uniqueId":"widgetExampleRssWidgetrssPiwik","parameters":{"module":"ExampleRssWidget","action":"rssPiwik"}} ] ]'; } $defaultLayout = $this->removeDisabledPluginFromLayout($defaultLayout); return $defaultLayout; }
/** * Renders and echo's the in-app donate form w/ slider. */ public function getDonateForm() { $view = new View('@CoreHome/getDonateForm'); if (Common::getRequestVar('widget', false) && Piwik::hasUserSuperUserAccess()) { $view->footerMessage = $this->translator->translate('CoreHome_OnlyForSuperUserAccess'); } return $view->render(); }
public function render() { $footerMessage = null; if (Common::getRequestVar('widget', false) && Piwik::hasUserSuperUserAccess()) { $footerMessage = $this->translator->translate('CoreHome_OnlyForSuperUserAccess'); } return $this->renderTemplate('getDonateForm', array('footerMessage' => $footerMessage)); }
public function configureAdminMenu(MenuAdmin $menu) { if (Piwik::isUserHasSomeAdminAccess()) { $menu->addManageItem('UsersManager_MenuUsers', $this->urlForAction('index'), $order = 2); } if (Piwik::hasUserSuperUserAccess() && API::getInstance()->getSitesAccessFromUser('anonymous')) { $menu->addSettingsItem('UsersManager_AnonymousUser', $this->urlForAction('anonymousSettings'), $order = 20); } }
/** * Returns `true` if this setting is writable for the current user, `false` if otherwise. In case it returns * writable for the current user it will be visible in the Plugin settings UI. * * @return bool */ public function isWritableByCurrentUser() { if (isset($this->hasWritePermission)) { return $this->hasWritePermission; } // performance improvement, do not detect this in __construct otherwise likely rather "big" query to DB. $this->hasWritePermission = Piwik::hasUserSuperUserAccess(); return $this->hasWritePermission; }
protected function init() { $this->title = Piwik::translate('CoreAdminHome_UpdateSettings'); $isWritable = Piwik::hasUserSuperUserAccess() && CoreAdminController::isGeneralSettingsAdminEnabled(); $this->releaseChannel = $this->createReleaseChannel(); $this->releaseChannel->setIsWritableByCurrentUser($isWritable); $isWritable = $isWritable && PluginUpdateCommunication::canBeEnabled(); $this->sendPluginUpdateEmail = $this->createSendPluginUpdateEmail(); $this->sendPluginUpdateEmail->setIsWritableByCurrentUser($isWritable); }
public function configureTopMenu(MenuTop $menu) { if (Piwik::isUserHasSomeAdminAccess()) { $url = $this->urlForModuleAction('SitesManager', 'index'); if (Piwik::hasUserSuperUserAccess()) { $url = $this->urlForAction('generalSettings'); } $menu->addItem('CoreAdminHome_Administration', null, $url, 10); } }
public function checkIsEnabled() { if (!$this->isEnabled()) { $message = Piwik::translate('General_ExceptionReportNotEnabled'); if (Piwik::hasUserSuperUserAccess()) { $message .= ' Most likely Ecommerce is not enabled for the requested site.'; } throw new \Exception($message); } }
public function configureAdminMenu(MenuAdmin $menu) { if (Piwik::isUserHasSomeAdminAccess()) { $menu->addSystemItem('UsersManager_MenuUsers', $this->urlForAction('index'), $order = 15); } if (Piwik::hasUserSuperUserAccess() && API::getInstance()->getSitesAccessFromUser('anonymous')) { $menu->addSystemItem('UsersManager_AnonymousUser', $this->urlForAction('anonymousSettings'), $order = 16); } if (!Piwik::isUserIsAnonymous()) { $menu->addItem('UsersManager_MenuPersonal', 'General_Settings', $this->urlForAction('userSettings'), 0); } }
public function getClientVisitCustomVariables() { if (Piwik::hasUserSuperUserAccess()) { $access = 'superuser'; } elseif (Piwik::isUserIsAnonymous()) { $access = 'anonymous'; } else { // I do not check between view/admin as it could trigger slow DB queries to fetch sites with access $access = 'user'; } return array(array('id' => 1, 'name' => 'Access', 'value' => $access)); }
protected function init() { $this->setIntroduction('Setup Snoopy behavioral scoring to match your needs.'); if (\Piwik\Piwik::hasUserSuperUserAccess()) { $this->createMatchingSiteSetting(); $this->createStartTrackingSetting(); $this->createCoolingFactorSetting(); $this->createEnableFullConsoleDebugSetting(); $this->createCampaignEntrySetting(); $this->createSpecialUrlsSetting(); } }
/** * Returns `true` if this setting can be displayed for the current user, `false` if otherwise. * * @return bool */ public function isWritableByCurrentUser() { if (isset($this->hasWritePermission)) { return $this->hasWritePermission; } // performance improvement, do not detect this in __construct otherwise likely rather "big" query to DB. if ($this->hasSiteBeenCreated()) { $this->hasWritePermission = Piwik::isUserHasAdminAccess($this->idSite); } else { $this->hasWritePermission = Piwik::hasUserSuperUserAccess(); } return $this->hasWritePermission; }
public function configureAdminMenu(MenuAdmin $menu) { if (Piwik::hasUserSuperUserAccess()) { $menu->addMeasurableItem('General_Settings', $this->urlForAction('globalSettings'), $order = 11); } if (Piwik::isUserHasSomeAdminAccess()) { $menu->addMeasurableItem('SitesManager_MenuManage', $this->urlForAction('index'), $order = 10); $type = $this->getFirstTypeIfOnlyOneIsInUse(); if ($type) { $menu->rename('CoreAdminHome_MenuMeasurables', $subMenuOriginal = null, $type->getNamePlural(), $subMenuRenamed = null); } } }
public function configureAdminMenu(MenuAdmin $menu) { $title = 'MobileMessaging_SettingsMenu'; $url = $this->urlForAction('index'); $order = 35; if (Piwik::hasUserSuperUserAccess()) { $menu->addSystemItem($title, $url, $order); } else { if (!Piwik::isUserIsAnonymous()) { $menu->addPersonalItem($title, $url, $order); } } }
public function getReportingMenuItems() { \Piwik\Menu\MenuMain::getInstance()->add($category = 'Chat', $title = '', $urlParams = array('module' => $this->getPluginName(), 'action' => 'index'), $showOnlyIf = Piwik::hasUserSuperUserAccess(), $order = 11); \Piwik\Menu\MenuMain::getInstance()->add($category = 'Chat', $title = 'Conversations', $urlParams = array('module' => $this->getPluginName(), 'action' => 'index'), $showOnlyIf = Piwik::hasUserSuperUserAccess(), $order = 12); \Piwik\Menu\MenuMain::getInstance()->add($category = 'Chat', $title = 'Automatic messages', $urlParams = array('module' => $this->getPluginName(), 'action' => 'automaticMessages'), $showOnlyIf = Piwik::hasUserSuperUserAccess(), $order = 13); \Piwik\Menu\MenuMain::getInstance()->add($category = 'Chat', $title = 'Report a bug', $urlParams = array('module' => $this->getPluginName(), 'action' => 'reportBug'), $showOnlyIf = Piwik::hasUserSuperUserAccess(), $order = 14); /*\Piwik\Menu\MenuMain::getInstance()->add( $category = 'Chat', $title = 'Reports', $urlParams = array('module' => $this->getPluginName(), 'action' => 'index'), $showOnlyIf = Piwik::hasUserSuperUserAccess(), $order = 13 );*/ }
public function configureAdminMenu(MenuAdmin $menu) { $menu->addPersonalItem(null, array(), 1, false); $menu->addSystemItem(null, array(), 2, false); $menu->addMeasurableItem(null, array(), $order = 3); $menu->addPlatformItem(null, array(), 4, false); $menu->addDiagnosticItem(null, array(), $order = 5); $menu->addDevelopmentItem(null, array(), $order = 40); if (Piwik::hasUserSuperUserAccess()) { $menu->addSystemItem('General_GeneralSettings', $this->urlForAction('generalSettings'), $order = 5); } if (!Piwik::isUserIsAnonymous()) { $menu->addMeasurableItem('CoreAdminHome_TrackingCode', $this->urlForAction('trackingCodeGenerator'), $order = 12); } }
/** * Returns the Alerts that are defined on the idSites given. * * @param array $idSites * @param bool $ifSuperUserReturnAllAlerts * * @return array */ public function getAlerts($idSites, $ifSuperUserReturnAllAlerts = false) { if (empty($idSites)) { return array(); } $idSites = Site::getIdSitesFromIdSitesString($idSites); Piwik::checkUserHasViewAccess($idSites); if (Piwik::hasUserSuperUserAccess() && $ifSuperUserReturnAllAlerts) { $login = false; } else { $login = Piwik::getCurrentUserLogin(); } $alerts = $this->getModel()->getAlerts($idSites, $login); return $alerts; }
public function getDefaultLayout() { $defaultLayout = $this->getLayoutForUser('', 1); if (empty($defaultLayout)) { $topWidget = ''; $advertising = StaticContainer::get('Piwik\\ProfessionalServices\\Advertising'); if ($advertising->areAdsForProfessionalServicesEnabled() && Plugin\Manager::getInstance()->isPluginActivated('ProfessionalServices')) { $topWidget .= '{"uniqueId":"widgetProfessionalServicespromoServices",' . '"parameters":{"module":"ProfessionalServices","action":"promoServices"}},'; } if (Piwik::hasUserSuperUserAccess()) { $topWidget .= '{"uniqueId":"widgetCoreHomegetDonateForm",' . '"parameters":{"module":"CoreHome","action":"getDonateForm"}},'; } else { $topWidget .= '{"uniqueId":"widgetCoreHomegetPromoVideo",' . '"parameters":{"module":"CoreHome","action":"getPromoVideo"}},'; } $defaultLayout = '[ [ {"uniqueId":"widgetVisitsSummarygetEvolutionGraphcolumnsArray","parameters":{"module":"VisitsSummary","action":"getEvolutionGraph","columns":"nb_visits"}}, {"uniqueId":"widgetLivewidget","parameters":{"module":"Live","action":"widget"}}, {"uniqueId":"widgetVisitorInterestgetNumberOfVisitsPerVisitDuration","parameters":{"module":"VisitorInterest","action":"getNumberOfVisitsPerVisitDuration"}} ], [ ' . $topWidget . ' {"uniqueId":"widgetReferrersgetWebsites","parameters":{"module":"Referrers","action":"getWebsites"}}, {"uniqueId":"widgetVisitTimegetVisitInformationPerServerTime","parameters":{"module":"VisitTime","action":"getVisitInformationPerServerTime"}} ], [ {"uniqueId":"widgetUserCountryMapvisitorMap","parameters":{"module":"UserCountryMap","action":"visitorMap"}}, {"uniqueId":"widgetDevicesDetectiongetBrowsers","parameters":{"module":"DevicesDetection","action":"getBrowsers"}}, {"uniqueId":"widgetReferrersgetSearchEngines","parameters":{"module":"Referrers","action":"getSearchEngines"}}, {"uniqueId":"widgetExampleRssWidgetrssPiwik","parameters":{"module":"ExampleRssWidget","action":"rssPiwik"}} ] ]'; } /** * Allows other plugins to modify the default dashboard layout. * * @param string &$defaultLayout JSON encoded string of the default dashboard layout. Contains an * array of columns where each column is an array of widgets. Each * widget is an associative array w/ the following elements: * * * **uniqueId**: The widget's unique ID. * * **parameters**: The array of query parameters that should be used to get this widget's report. */ Piwik::postEvent("Dashboard.changeDefaultDashboardLayout", array(&$defaultLayout)); $defaultLayout = $this->removeDisabledPluginFromLayout($defaultLayout); return $defaultLayout; }
/** * Returns array containing data about the website: goals, URLs, etc. * * @param int $idSite * @return array */ static function getCacheWebsiteAttributes($idSite) { if ($idSite == 'all') { return array(); } $idSite = (int) $idSite; if ($idSite <= 0) { return array(); } $cache = self::getInstance(); if (($cacheContent = $cache->get($idSite)) !== false) { return $cacheContent; } Tracker::initCorePiwikInTrackerMode(); // save current user privilege and temporarily assume Super User privilege $isSuperUser = Piwik::hasUserSuperUserAccess(); Piwik::setUserHasSuperUserAccess(); $content = array(); /** * Triggered to get the attributes of a site entity that might be used by the * Tracker. * * Plugins add new site attributes for use in other tracking events must * use this event to put those attributes in the Tracker Cache. * * **Example** * * public function getSiteAttributes($content, $idSite) * { * $sql = "SELECT info FROM " . Common::prefixTable('myplugin_extra_site_info') . " WHERE idsite = ?"; * $content['myplugin_site_data'] = Db::fetchOne($sql, array($idSite)); * } * * @param array &$content Array mapping of site attribute names with values. * @param int $idSite The site ID to get attributes for. */ Piwik::postEvent('Tracker.Cache.getSiteAttributes', array(&$content, $idSite)); Common::printDebug("Website {$idSite} tracker cache was re-created."); // restore original user privilege Piwik::setUserHasSuperUserAccess($isSuperUser); // if nothing is returned from the plugins, we don't save the content // this is not expected: all websites are expected to have at least one URL if (!empty($content)) { $cache->set($idSite, $content); } return $content; }
/** * Main Plugin Index * * @return mixed * @throws \Exception */ public function index() { Piwik::checkUserHasSomeAdminAccess(); if (isset($_SERVER['REQUEST_METHOD']) && 'POST' == $_SERVER['REQUEST_METHOD']) { // Cannot use Common::getRequestVar, because the function remove whitespaces and newline breaks $postedSiteData = isset($_POST['site']) ? $_POST['site'] : null; if (is_array($postedSiteData) && count($postedSiteData) > 0) { foreach ($postedSiteData as $id => $site) { if (!isset($site['css'], $site['file'])) { continue; } // Check URL if (!UrlHelper::isLookLikeUrl($site['file'])) { $site['file'] = null; } API::getInstance()->saveSite($id, $site['css'], $site['file']); } // Redirect to, clear POST vars $this->redirectToIndex('CustomOptOut', 'index'); return; } } $view = new View('@CustomOptOut/index.twig'); Site::clearCache(); if (Piwik::hasUserSuperUserAccess()) { $sitesRaw = APISiteManager::getInstance()->getAllSites(); } else { $sitesRaw = APISiteManager::getInstance()->getSitesWithAdminAccess(); } // Gets sites after Site.setSite hook was called $sites = array_values(Site::getSites()); if (count($sites) != count($sitesRaw)) { throw new \Exception("One or more website are missing or invalid."); } foreach ($sites as &$site) { $site['alias_urls'] = APISiteManager::getInstance()->getSiteUrlsFromId($site['idsite']); } $view->adminSites = $sites; $view->adminSitesCount = count($sites); $view->language = LanguagesManager::getLanguageCodeForCurrentUser(); $view->isEditorEnabled = API::getInstance()->isCssEditorEnabled(); $view->editorTheme = API::getInstance()->getEditorTheme(); $view->showOldLinks = false; $this->setBasicVariablesView($view); return $view->render(); }
public function configureAdminMenu(MenuAdmin $menu) { $hasSuperUserAcess = Piwik::hasUserSuperUserAccess(); $isAnonymous = Piwik::isUserIsAnonymous(); $isMarketplaceEnabled = Marketplace::isMarketplaceEnabled(); $pluginsUpdateMessage = ''; if ($hasSuperUserAcess && $isMarketplaceEnabled && $this->marketplacePlugins) { $pluginsHavingUpdate = $this->marketplacePlugins->getPluginsHavingUpdate(); if (!empty($pluginsHavingUpdate)) { $pluginsUpdateMessage = sprintf(' (%d)', count($pluginsHavingUpdate)); } } if (!$isAnonymous) { $menu->addPlatformItem(null, "", $order = 7); } if ($hasSuperUserAcess) { $menu->addSystemItem(Piwik::translate('General_Plugins') . $pluginsUpdateMessage, $this->urlForAction('plugins', array('activated' => '')), $order = 20); } }
public function generalSettings() { Piwik::checkUserHasSomeAdminAccess(); $view = new View('@CoreAdminHome/generalSettings'); if (Piwik::hasUserSuperUserAccess()) { $this->handleGeneralSettingsAdmin($view); $view->trustedHosts = Url::getTrustedHostsFromConfig(); $logo = new CustomLogo(); $view->branding = array('use_custom_logo' => $logo->isEnabled()); $view->logosWriteable = $logo->isCustomLogoWritable(); $view->pathUserLogo = CustomLogo::getPathUserLogo(); $view->pathUserFavicon = CustomLogo::getPathUserFavicon(); $view->pathUserLogoSmall = CustomLogo::getPathUserLogoSmall(); $view->pathUserLogoSVG = CustomLogo::getPathUserSvgLogo(); $view->pathUserLogoDirectory = realpath(dirname($view->pathUserLogo) . '/'); } $view->language = LanguagesManager::getLanguageCodeForCurrentUser(); $this->setBasicVariablesView($view); return $view->render(); }