Пример #1
0
 public static function configure(WidgetConfig $config)
 {
     $config->setCategoryId('About Piwik');
     $config->setName('CoreHome_SystemSummaryWidget');
     $config->setOrder(15);
     $config->setIsEnabled(Piwik::hasUserSuperUserAccess());
 }
Пример #2
0
 /**
  * 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;
 }
Пример #3
0
 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);
 }
Пример #4
0
 public static function configure(WidgetConfig $config)
 {
     $config->setCategoryId('About Piwik');
     $config->setName('Installation_SystemCheck');
     $config->setOrder(16);
     $config->setIsEnabled(Piwik::hasUserSuperUserAccess());
 }
Пример #5
0
 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);
     }
 }
Пример #6
0
 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);
     }
 }
Пример #7
0
 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();
 }
Пример #8
0
 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);
 }
Пример #9
0
 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;
 }
Пример #10
0
 /**
  * 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();
 }
Пример #11
0
 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));
 }
Пример #12
0
 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);
     }
 }
Пример #13
0
 /**
  * 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;
 }
Пример #14
0
 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);
 }
Пример #15
0
 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);
     }
 }
Пример #16
0
 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);
     }
 }
Пример #17
0
 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();
     }
 }
Пример #20
0
 /**
  * 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;
 }
Пример #21
0
 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);
         }
     }
 }
Пример #22
0
 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);
         }
     }
 }
Пример #23
0
 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
       );*/
 }
Пример #24
0
 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);
     }
 }
Пример #25
0
 /**
  * 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;
 }
Пример #26
0
 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;
 }
Пример #27
0
 /**
  * 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;
 }
Пример #28
0
 /**
  * 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();
 }
Пример #29
0
 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);
     }
 }
Пример #30
0
 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();
 }