/** * Constructor. */ public function __construct($idSite = false) { parent::__construct(); $this->jsClass = "SegmentSelectorControl"; $this->cssIdentifier = "segmentEditorPanel"; $this->cssClass = "piwikTopControl"; $this->idSite = $idSite ?: Common::getRequestVar('idSite', false, 'int'); $this->selectedSegment = Common::getRequestVar('segment', false, 'string'); $segments = APIMetadata::getInstance()->getSegmentsMetadata($this->idSite); $segmentsByCategory = $customVariablesSegments = array(); foreach ($segments as $segment) { if ($segment['category'] == Piwik::translate('General_Visit') && ($segment['type'] == 'metric' && $segment['segment'] != 'visitIp')) { $metricsLabel = Piwik::translate('General_Metrics'); $metricsLabel[0] = strtolower($metricsLabel[0]); $segment['category'] .= ' (' . $metricsLabel . ')'; } $segmentsByCategory[$segment['category']][] = $segment; } uksort($segmentsByCategory, array($this, 'sortSegmentCategories')); $this->createRealTimeSegmentsIsEnabled = Config::getInstance()->General['enable_create_realtime_segments']; $this->segmentsByCategory = $segmentsByCategory; $this->nameOfCurrentSegment = ''; $this->isSegmentNotAppliedBecauseBrowserArchivingIsDisabled = 0; $this->availableSegments = API::getInstance()->getAll($this->idSite); foreach ($this->availableSegments as &$savedSegment) { $savedSegment['name'] = Common::sanitizeInputValue($savedSegment['name']); if (!empty($this->selectedSegment) && $this->selectedSegment == $savedSegment['definition']) { $this->nameOfCurrentSegment = $savedSegment['name']; $this->isSegmentNotAppliedBecauseBrowserArchivingIsDisabled = $this->wouldApplySegment($savedSegment) ? 0 : 1; } } $this->authorizedToCreateSegments = SegmentEditorAPI::getInstance()->isUserCanAddNewSegment($this->idSite); $this->isUserAnonymous = Piwik::isUserIsAnonymous(); $this->segmentTranslations = $this->getTranslations(); }
public function getSelector() { $view = new View('@SegmentEditor/getSelector'); $idSite = Common::getRequestVar('idSite'); $this->setGeneralVariablesView($view); $segments = APIMetadata::getInstance()->getSegmentsMetadata($idSite); $segmentsByCategory = $customVariablesSegments = array(); foreach ($segments as $segment) { if ($segment['category'] == Piwik::translate('General_Visit') && ($segment['type'] == 'metric' && $segment['segment'] != 'visitIp')) { $metricsLabel = Piwik::translate('General_Metrics'); $metricsLabel[0] = strtolower($metricsLabel[0]); $segment['category'] .= ' (' . $metricsLabel . ')'; } $segmentsByCategory[$segment['category']][] = $segment; } uksort($segmentsByCategory, array($this, 'sortSegmentCategories')); $view->segmentsByCategory = $segmentsByCategory; $savedSegments = API::getInstance()->getAll($idSite); foreach ($savedSegments as &$savedSegment) { $savedSegment['name'] = Common::sanitizeInputValue($savedSegment['name']); } $view->savedSegmentsJson = Common::json_encode($savedSegments); $view->authorizedToCreateSegments = !Piwik::isUserIsAnonymous(); $view->segmentTranslations = Common::json_encode($this->getTranslations()); $out = $view->render(); return $out; }
public function configureTopMenu(MenuTop $menu) { $login = Piwik::getCurrentUserLogin(); $user = APIUsersManager::getInstance()->getUser($login); if (!empty($user['alias'])) { $login = $user['alias']; } if (Plugin\Manager::getInstance()->isPluginActivated('Feedback')) { $menu->addItem('General_Help', null, array('module' => 'Feedback', 'action' => 'index')); } if (Piwik::isUserIsAnonymous()) { if (Plugin\Manager::getInstance()->isPluginActivated('Feedback')) { $menu->addItem($login, null, array('module' => 'Feedback', 'action' => 'index'), 998); } else { $menu->addItem($login, null, array('module' => 'API', 'action' => 'listAllAPI'), 998); } } else { $menu->addItem($login, null, array('module' => 'UsersManager', 'action' => 'userSettings'), 998); } $module = $this->getLoginModule(); if (Piwik::isUserIsAnonymous()) { $menu->addItem('Login_LogIn', null, array('module' => $module, 'action' => false), 999); } else { $menu->addItem('General_Logout', null, array('module' => $module, 'action' => 'logout', 'idSite' => null), 999); } }
public function configureAdminMenu(MenuAdmin $menu) { $menu->addPlatformItem('General_API', $this->urlForAction('listAllAPI', array('segment' => false)), 7, Piwik::translate('API_TopLinkTooltip')); if (Piwik::isUserIsAnonymous()) { $menu->addPlatformItem('API_Glossary', $this->urlForAction('glossary', array('segment' => false)), 50); } }
public function configureTopMenu(MenuTop $menu) { $login = Piwik::getCurrentUserLogin(); $user = APIUsersManager::getInstance()->getUser($login); if (!empty($user['alias'])) { $login = $user['alias']; } if (Plugin\Manager::getInstance()->isPluginActivated('Feedback')) { $menu->registerMenuIcon('General_Help', 'icon-help'); $menu->addItem('General_Help', null, array('module' => 'Feedback', 'action' => 'index'), $order = 990, Piwik::translate('General_Help')); } $menu->registerMenuIcon($login, 'icon-user'); if (Piwik::isUserIsAnonymous()) { if (Plugin\Manager::getInstance()->isPluginActivated('ScheduledReports')) { $menu->addItem($login, null, array('module' => 'ScheduledReports', 'action' => 'index'), 970, Piwik::translate('ScheduledReports_PersonalEmailReports')); } else { $menu->addItem($login, null, array('module' => 'API', 'action' => 'listAllAPI'), 970, Piwik::translate('API_ReportingApiReference')); } } else { $tooltip = sprintf('%s: %s', Piwik::translate('UsersManager_PersonalSettings'), $login); $menu->addItem($login, null, array('module' => 'UsersManager', 'action' => 'userSettings'), 970, $tooltip); } $module = $this->getLoginModule(); if (Piwik::isUserIsAnonymous()) { $menu->registerMenuIcon('Login_LogIn', 'icon-sign-in'); $menu->addItem('Login_LogIn', null, array('module' => $module, 'action' => false), 1000, Piwik::translate('Login_LogIn')); } else { $menu->registerMenuIcon('General_Logout', 'icon-sign-out'); $menu->addItem('General_Logout', null, array('module' => $module, 'action' => 'logout', 'idSite' => null), 1000, Piwik::translate('General_Logout')); } }
function getTopMenuTranslationKey() { // if MobileMessaging is not activated, display 'Email reports' if (!\Piwik\Plugin\Manager::getInstance()->isPluginActivated('MobileMessaging')) { return self::PDF_REPORTS_TOP_MENU_TRANSLATION_KEY; } if (Piwik::isUserIsAnonymous()) { return self::MOBILE_MESSAGING_TOP_MENU_TRANSLATION_KEY; } try { $reports = API::getInstance()->getReports(); $reportCount = count($reports); // if there are no reports and the mobile account is // - not configured: display 'Email reports' // - configured: display 'Email & SMS reports' if ($reportCount == 0) { return APIMobileMessaging::getInstance()->areSMSAPICredentialProvided() ? self::MOBILE_MESSAGING_TOP_MENU_TRANSLATION_KEY : self::PDF_REPORTS_TOP_MENU_TRANSLATION_KEY; } } catch (\Exception $e) { return self::PDF_REPORTS_TOP_MENU_TRANSLATION_KEY; } $anyMobileReport = false; foreach ($reports as $report) { if ($report['type'] == MobileMessaging::MOBILE_TYPE) { $anyMobileReport = true; break; } } // if there is at least one sms report, display 'Email & SMS reports' if ($anyMobileReport) { return self::MOBILE_MESSAGING_TOP_MENU_TRANSLATION_KEY; } return self::PDF_REPORTS_TOP_MENU_TRANSLATION_KEY; }
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 configureTopMenu(MenuTop $menu) { if (Piwik::isUserIsAnonymous() || !SettingsPiwik::isPiwikInstalled()) { $langManager = new LanguagesManager(); $menu->addHtml('LanguageSelector', $langManager->getLanguagesSelector(), true, $order = 30, false); } }
public function init() { $this->addWidget('Live_VisitorsInRealTime', 'widget'); // the visitor profile uses a segment that is not accessible to the anonymous user, so don't bother showing this widget if (!Piwik::isUserIsAnonymous()) { $this->addWidget('Live_VisitorProfile', 'getVisitorProfilePopup'); } }
public function configureUserMenu(MenuUser $menu) { if (!Piwik::isUserIsAnonymous()) { $menu->addManageItem('CoreAdminHome_TrackingCode', $this->urlForAction('trackingCodeGenerator'), $order = 10); if (SettingsManager::hasUserPluginsSettingsForCurrentUser()) { $menu->addPersonalItem('CoreAdminHome_PluginSettings', $this->urlForAction('userPluginSettings'), $order = 15); } } }
public static function configure(WidgetConfig $config) { $config->setCategoryId('General_Visitors'); $config->setName('Live_VisitorProfile'); $config->setOrder(25); if (Piwik::isUserIsAnonymous()) { $config->disable(); } }
public function index() { $view = new View('@ScheduledReports/index'); $this->setGeneralVariablesView($view); $view->countWebsites = count(APISitesManager::getInstance()->getSitesIdWithAtLeastViewAccess()); // get report types $reportTypes = API::getReportTypes(); $view->reportTypes = $reportTypes; $view->defaultReportType = self::DEFAULT_REPORT_TYPE; $view->defaultReportFormat = ScheduledReports::DEFAULT_REPORT_FORMAT; $view->displayFormats = ScheduledReports::getDisplayFormats(); $reportsByCategoryByType = array(); $reportFormatsByReportType = array(); $allowMultipleReportsByReportType = array(); foreach ($reportTypes as $reportType => $reportTypeIcon) { // get report formats $reportFormatsByReportType[$reportType] = API::getReportFormats($reportType); $allowMultipleReportsByReportType[$reportType] = API::allowMultipleReports($reportType); // get report metadata $reportsByCategory = array(); $availableReportMetadata = API::getReportMetadata($this->idSite, $reportType); foreach ($availableReportMetadata as $reportMetadata) { $reportsByCategory[$reportMetadata['category']][] = $reportMetadata; } $reportsByCategoryByType[$reportType] = $reportsByCategory; } $view->reportsByCategoryByReportType = $reportsByCategoryByType; $view->reportFormatsByReportType = $reportFormatsByReportType; $view->allowMultipleReportsByReportType = $allowMultipleReportsByReportType; $reports = array(); $reportsById = array(); if (!Piwik::isUserIsAnonymous()) { $reports = API::getInstance()->getReports($this->idSite, $period = false, $idReport = false, $ifSuperUserReturnOnlySuperUserReports = true); foreach ($reports as &$report) { $report['recipients'] = API::getReportRecipients($report); $reportsById[$report['idreport']] = $report; } } $view->reports = $reports; $view->reportsJSON = Common::json_encode($reportsById); $view->downloadOutputType = API::OUTPUT_INLINE; $view->periods = ScheduledReports::getPeriodToFrequency(); $view->defaultPeriod = ScheduledReports::DEFAULT_PERIOD; $view->defaultHour = ScheduledReports::DEFAULT_HOUR; $view->language = LanguagesManager::getLanguageCodeForCurrentUser(); $view->segmentEditorActivated = false; if (API::isSegmentEditorActivated()) { $savedSegmentsById = array(); foreach (APISegmentEditor::getInstance()->getAll($this->idSite) as $savedSegment) { $savedSegmentsById[$savedSegment['idsegment']] = $savedSegment['name']; } $view->savedSegmentsById = $savedSegmentsById; $view->segmentEditorActivated = true; } return $view->render(); }
public function configureTopMenu(MenuTop $menu) { $module = $this->getLoginModule(); if (Piwik::isUserIsAnonymous()) { $menu->registerMenuIcon('Login_LogIn', 'icon-sign-in'); $menu->addItem('Login_LogIn', null, array('module' => $module, 'action' => false), 1000, Piwik::translate('Login_LogIn')); } else { $menu->registerMenuIcon('General_Logout', 'icon-sign-out'); $menu->addItem('General_Logout', null, array('module' => $module, 'action' => 'logout', 'idSite' => null), 1000, Piwik::translate('General_Logout')); } }
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)); }
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 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 configureReportingMenu(MenuReporting $menu) { $menu->addItem('Dashboard_Dashboard', '', $this->urlForAction('embeddedIndex', array('idDashboard' => 1)), 5); if (!Piwik::isUserIsAnonymous()) { $login = Piwik::getCurrentUserLogin(); $dashboard = new Dashboard(); $dashboards = $dashboard->getAllDashboards($login); $pos = 0; foreach ($dashboards as $dashboard) { $menu->addItem('Dashboard_Dashboard', $dashboard['name'], $this->urlForAction('embeddedIndex', array('idDashboard' => $dashboard['iddashboard'])), $pos); $pos++; } } }
public function configureReportingMenu(MenuReporting $menu) { $menu->add('Dashboard_Dashboard', '', array('module' => 'Dashboard', 'action' => 'embeddedIndex', 'idDashboard' => 1), true, 5); if (!Piwik::isUserIsAnonymous()) { $login = Piwik::getCurrentUserLogin(); $dashboard = new Dashboard(); $dashboards = $dashboard->getAllDashboards($login); $pos = 0; foreach ($dashboards as $dashboard) { $menu->add('Dashboard_Dashboard', $dashboard['name'], array('module' => 'Dashboard', 'action' => 'embeddedIndex', 'idDashboard' => $dashboard['iddashboard']), true, $pos); $pos++; } } }
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); } }
public function addPiwikClientTracking(&$out) { $settings = StaticContainer::get('Piwik\\Plugins\\AnonymousPiwikUsageMeasurement\\Settings'); $config = array('targets' => array(), 'visitorCustomVariables' => array(), 'trackingDomain' => self::TRACKING_DOMAIN, 'exampleDomain' => self::EXAMPLE_DOMAIN, 'userId' => Piwik::getCurrentUserLogin()); if (Piwik::isUserIsAnonymous() || !$settings->canUserOptOut->getValue() || !$settings->userTrackingEnabled->isReadableByCurrentUser() || $settings->userTrackingEnabled->getValue()) { // an anonymous user is currently always tracked, an anonymous user would not have permission to read // this user setting. The `isUserIsAnonymous()` check is not needed but there to improve performance // in case user is anonymous. Then we avoid checking whether user has access to any sites which can be slow // a user not having any view permission is also always tracked so far as such a user is not allowed to read // this setting $targets = StaticContainer::get('Piwik\\Plugins\\AnonymousPiwikUsageMeasurement\\Tracker\\Targets'); $customVars = StaticContainer::get('Piwik\\Plugins\\AnonymousPiwikUsageMeasurement\\Tracker\\CustomVariables'); $config['targets'] = $targets->getTargets(); $config['visitorCustomVariables'] = $customVars->getClientVisitCustomVariables(); } $out .= "\nvar piwikUsageTracking = " . json_encode($config) . ";\n"; }
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); } }
private function shouldAutoRedirect() { if (Piwik::isUserIsAnonymous()) { return false; } $deviceDetection = new UserAgentParserEnhanced($_SERVER['HTTP_USER_AGENT']); $deviceDetection->parse(); $deviceId = $deviceDetection->getDevice(); if (!isset($deviceId) || '' === $deviceId || !array_key_exists($deviceId, UserAgentParserEnhanced::$deviceTypes)) { return false; } $device = UserAgentParserEnhanced::$deviceTypes[$deviceId]; $settings = new Settings('PiwikMobile'); if ($settings->redirectIfSmartphone->getValue() && 'smartphone' == $device) { return true; } elseif ($settings->redirectIfTablet->getValue() && 'tablet' == $device) { return true; } return false; }
public function addSubcategories(&$subcategories) { if (Piwik::isUserIsAnonymous()) { $this->addDefaultSubcategory($subcategories); } else { $dashboards = API::getInstance()->getDashboards(); if (empty($dashboards)) { $this->addDefaultSubcategory($subcategories); } else { $order = 0; foreach ($dashboards as $dashboard) { $subcategory = new Subcategory(); $subcategory->setName($dashboard['name']); $subcategory->setCategoryId('Dashboard_Dashboard'); $subcategory->setId($dashboard['id']); $subcategory->setOrder($order++); $subcategories[] = $subcategory; } } } }
/** * Constructor. */ public function __construct($idSite = false) { parent::__construct(); $this->jsClass = "SegmentSelectorControl"; $this->cssIdentifier = "segmentEditorPanel"; $this->cssClass = "piwikTopControl borderedControl piwikSelector"; $this->idSite = $idSite ?: Common::getRequestVar('idSite', false, 'int'); $this->selectedSegment = Common::getRequestVar('segment', false, 'string'); $formatter = StaticContainer::get('Piwik\\Plugins\\SegmentEditor\\SegmentFormatter'); $this->segmentDescription = $formatter->getHumanReadable(Request::getRawSegmentFromRequest(), $this->idSite); $this->isAddingSegmentsForAllWebsitesEnabled = SegmentEditor::isAddingSegmentsForAllWebsitesEnabled(); $segments = APIMetadata::getInstance()->getSegmentsMetadata($this->idSite); $visitTitle = Piwik::translate('General_Visit'); $segmentsByCategory = array(); foreach ($segments as $segment) { if ($segment['category'] == $visitTitle && ($segment['type'] == 'metric' && $segment['segment'] != 'visitIp')) { $metricsLabel = Piwik::translate('General_Metrics'); $metricsLabel[0] = Common::mb_strtolower($metricsLabel[0]); $segment['category'] .= ' (' . $metricsLabel . ')'; } $segmentsByCategory[$segment['category']][] = $segment; } $this->createRealTimeSegmentsIsEnabled = Config::getInstance()->General['enable_create_realtime_segments']; $this->segmentsByCategory = $segmentsByCategory; $this->nameOfCurrentSegment = ''; $this->isSegmentNotAppliedBecauseBrowserArchivingIsDisabled = 0; $this->availableSegments = API::getInstance()->getAll($this->idSite); foreach ($this->availableSegments as &$savedSegment) { $savedSegment['name'] = Common::sanitizeInputValue($savedSegment['name']); if (!empty($this->selectedSegment) && $this->selectedSegment == $savedSegment['definition']) { $this->nameOfCurrentSegment = $savedSegment['name']; $this->isSegmentNotAppliedBecauseBrowserArchivingIsDisabled = $this->wouldApplySegment($savedSegment) ? 0 : 1; } } $this->authorizedToCreateSegments = SegmentEditorAPI::getInstance()->isUserCanAddNewSegment($this->idSite); $this->isUserAnonymous = Piwik::isUserIsAnonymous(); $this->segmentTranslations = $this->getTranslations(); $this->segmentProcessedOnRequest = Rules::isBrowserArchivingAvailableForSegments(); $this->hideSegmentDefinitionChangeMessage = UsersManagerAPI::getInstance()->getUserPreference(Piwik::getCurrentUserLogin(), 'hideSegmentDefinitionChangeMessage'); }
function addMenu() { $pluginsUpdateMessage = ''; $themesUpdateMessage = ''; if (Piwik::isUserIsSuperUser() && static::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)); } } MenuAdmin::getInstance()->add('CorePluginsAdmin_MenuPlatform', null, "", !Piwik::isUserIsAnonymous(), $order = 7); MenuAdmin::getInstance()->add('CorePluginsAdmin_MenuPlatform', Piwik::translate('General_Plugins') . $pluginsUpdateMessage, array('module' => 'CorePluginsAdmin', 'action' => 'plugins', 'activated' => ''), Piwik::isUserIsSuperUser(), $order = 1); MenuAdmin::getInstance()->add('CorePluginsAdmin_MenuPlatform', Piwik::translate('CorePluginsAdmin_Themes') . $themesUpdateMessage, array('module' => 'CorePluginsAdmin', 'action' => 'themes', 'activated' => ''), Piwik::isUserIsSuperUser(), $order = 3); if (static::isMarketplaceEnabled()) { MenuAdmin::getInstance()->add('CorePluginsAdmin_MenuPlatform', 'CorePluginsAdmin_Marketplace', array('module' => 'CorePluginsAdmin', 'action' => 'extend', 'activated' => ''), !Piwik::isUserIsAnonymous(), $order = 5); } }
private static function notifyAnyInvalidLicense() { if (!Marketplace::isMarketplaceEnabled()) { return; } if (Piwik::isUserIsAnonymous()) { return; } if (!Piwik::isUserHasSomeAdminAccess()) { return; } $expired = StaticContainer::get('Piwik\\Plugins\\Marketplace\\Plugins\\InvalidLicenses'); $messageLicenseMissing = $expired->getMessageNoLicense(); if (!empty($messageLicenseMissing)) { $notification = new Notification($messageLicenseMissing); $notification->raw = true; $notification->context = Notification::CONTEXT_ERROR; $notification->title = Piwik::translate('Marketplace_LicenseMissing'); Notification\Manager::notify('ControllerAdmin_LicenseMissingWarning', $notification); } $messageExceeded = $expired->getMessageExceededLicenses(); if (!empty($messageExceeded)) { $notification = new Notification($messageExceeded); $notification->raw = true; $notification->context = Notification::CONTEXT_WARNING; $notification->title = Piwik::translate('Marketplace_LicenseExceeded'); Notification\Manager::notify('ControllerAdmin_LicenseExceededWarning', $notification); } $messageExpired = $expired->getMessageExpiredLicenses(); if (!empty($messageExpired)) { $notification = new Notification($messageExpired); $notification->raw = true; $notification->context = Notification::CONTEXT_WARNING; $notification->title = Piwik::translate('Marketplace_LicenseExpired'); Notification\Manager::notify('ControllerAdmin_LicenseExpiredWarning', $notification); } }
public function safemode($lastError = array()) { $this->tryToRepairPiwik(); if (empty($lastError)) { $lastError = array('message' => Common::getRequestVar('error_message', null, 'string'), 'file' => Common::getRequestVar('error_file', null, 'string'), 'line' => Common::getRequestVar('error_line', null, 'integer')); } $outputFormat = Common::getRequestVar('format', 'html', 'string'); $outputFormat = strtolower($outputFormat); if (!empty($outputFormat) && 'html' !== $outputFormat) { $errorMessage = $lastError['message']; if (Piwik::isUserIsAnonymous()) { $errorMessage = 'A fatal error occurred.'; } $response = new \Piwik\API\ResponseBuilder($outputFormat); $message = $response->getResponseException(new Exception($errorMessage)); return $message; } if (Common::isPhpCliMode()) { // TODO: I can't find how this will ever get called / safeMode is never set for Console throw new Exception("Error: " . var_export($lastError, true)); } $view = new View('@CorePluginsAdmin/safemode'); $view->lastError = $lastError; $view->isSuperUser = Piwik::hasUserSuperUserAccess(); $view->isAnonymousUser = Piwik::isUserIsAnonymous(); $view->plugins = Plugin\Manager::getInstance()->loadAllPluginsAndGetTheirInfo(); $view->deactivateNonce = Nonce::getNonce(static::DEACTIVATE_NONCE); $view->uninstallNonce = Nonce::getNonce(static::UNINSTALL_NONCE); $view->emailSuperUser = implode(',', Piwik::getAllSuperUserAccessEmailAddresses()); $view->piwikVersion = Version::VERSION; $view->showVersion = !Common::getRequestVar('tests_hide_piwik_version', 0); $view->pluginCausesIssue = ''; if (!empty($lastError['file'])) { preg_match('/piwik\\/plugins\\/(.*)\\//', $lastError['file'], $matches); if (!empty($matches[1])) { $view->pluginCausesIssue = $matches[1]; } } return $view->render(); }
/** * Returns `true` if segmentation is allowed for this user, `false` if otherwise. * * @return bool * @api */ public static function isSegmentationEnabled() { return !Piwik::isUserIsAnonymous() || Config::getInstance()->General['anonymous_user_enable_use_segments_API']; }
/** * Checks if the current host is valid and sets variables on the given view, including: * * - **isValidHost** - true if host is valid, false if otherwise * - **invalidHostMessage** - message to display if host is invalid (only set if host is invalid) * - **invalidHost** - the invalid hostname (only set if host is invalid) * - **mailLinkStart** - the open tag of a link to email the Super User of this problem (only set * if host is invalid) * * @param View $view * @api */ public static function setHostValidationVariablesView($view) { // check if host is valid $view->isValidHost = Url::isValidHost(); if (!$view->isValidHost) { // invalid host, so display warning to user $validHosts = Url::getTrustedHostsFromConfig(); $validHost = $validHosts[0]; $invalidHost = Common::sanitizeInputValue($_SERVER['HTTP_HOST']); $emailSubject = rawurlencode(Piwik::translate('CoreHome_InjectedHostEmailSubject', $invalidHost)); $emailBody = rawurlencode(Piwik::translate('CoreHome_InjectedHostEmailBody')); $superUserEmail = implode(',', Piwik::getAllSuperUserAccessEmailAddresses()); $mailToUrl = "mailto:{$superUserEmail}?subject={$emailSubject}&body={$emailBody}"; $mailLinkStart = "<a href=\"{$mailToUrl}\">"; $invalidUrl = Url::getCurrentUrlWithoutQueryString($checkIfTrusted = false); $validUrl = Url::getCurrentScheme() . '://' . $validHost . Url::getCurrentScriptName(); $invalidUrl = Common::sanitizeInputValue($invalidUrl); $validUrl = Common::sanitizeInputValue($validUrl); $changeTrustedHostsUrl = "index.php" . Url::getCurrentQueryStringWithParametersModified(array('module' => 'CoreAdminHome', 'action' => 'generalSettings')) . "#trustedHostsSection"; $warningStart = Piwik::translate('CoreHome_InjectedHostWarningIntro', array('<strong>' . $invalidUrl . '</strong>', '<strong>' . $validUrl . '</strong>')) . ' <br/>'; if (Piwik::hasUserSuperUserAccess()) { $view->invalidHostMessage = $warningStart . ' ' . Piwik::translate('CoreHome_InjectedHostSuperUserWarning', array("<a href=\"{$changeTrustedHostsUrl}\">", $invalidHost, '</a>', "<br/><a href=\"{$validUrl}\">", $validHost, '</a>')); } else { if (Piwik::isUserIsAnonymous()) { $view->invalidHostMessage = $warningStart . ' ' . Piwik::translate('CoreHome_InjectedHostNonSuperUserWarning', array("<br/><a href=\"{$validUrl}\">", '</a>', '<span style="display:none">', '</span>')); } else { $view->invalidHostMessage = $warningStart . ' ' . Piwik::translate('CoreHome_InjectedHostNonSuperUserWarning', array("<br/><a href=\"{$validUrl}\">", '</a>', $mailLinkStart, '</a>')); } } $view->invalidHostMessageHowToFix = '<p><b>How do I fix this problem and how do I login again?</b><br/> The Piwik Super User can manually edit the file piwik/config/config.ini.php and add the following lines: <pre>[General]' . "\n" . 'trusted_hosts[] = "' . $invalidHost . '"</pre>After making the change, you will be able to login again.</p> <p>You may also <i>disable this security feature (not recommended)</i>. To do so edit config/config.ini.php and add: <pre>[General]' . "\n" . 'enable_trusted_host_check=0</pre>'; $view->invalidHost = $invalidHost; // for UserSettings warning $view->invalidHostMailLinkStart = $mailLinkStart; } }
/** * Get the dashboard layout for the current user (anonymous or logged user) * * @param int $idDashboard * * @return string $layout */ protected function getLayout($idDashboard) { if (Piwik::isUserIsAnonymous()) { $session = new SessionNamespace("Dashboard"); if (!isset($session->dashboardLayout)) { return $this->dashboard->getDefaultLayout(); } $layout = $session->dashboardLayout; } else { $layout = $this->dashboard->getLayoutForUser(Piwik::getCurrentUserLogin(), $idDashboard); } if (!empty($layout)) { $layout = $this->dashboard->removeDisabledPluginFromLayout($layout); } if (empty($layout)) { $layout = $this->dashboard->getDefaultLayout(); } return $layout; }