예제 #1
0
 public function searchTranslation()
 {
     Piwik::checkUserHasSomeAdminAccess();
     $view = new View('@LanguagesManager/searchTranslation');
     $this->setBasicVariablesView($view);
     return $view->render();
 }
예제 #2
0
파일: API.php 프로젝트: piwik/piwik
 /**
  * Detects whether plugin trackers will be automatically added to piwik.js or not. If not, the plugin tracker files
  * need to be loaded manually.
  * @return bool
  */
 public function doesIncludePluginTrackersAutomatically()
 {
     Piwik::checkUserHasSomeAdminAccess();
     try {
         $updater = new TrackerUpdater();
         $updater->checkWillSucceed();
         return true;
     } catch (AccessDeniedException $e) {
         return false;
     } catch (\Exception $e) {
         return false;
     }
 }
예제 #3
0
 public function showList()
 {
     Piwik::checkUserHasSomeAdminAccess();
     $view = new View('@DevicesDetection/list');
     $type = Common::getRequestVar('type', 'brands', 'string');
     $list = array();
     switch ($type) {
         case 'brands':
             $availableBrands = \DeviceDetector\Parser\Device\DeviceParserAbstract::$deviceBrands;
             foreach ($availableBrands as $short => $name) {
                 if ($name != 'Unknown') {
                     $list[$name] = getBrandLogo($name);
                 }
             }
             break;
         case 'browsers':
             $availableBrowsers = \DeviceDetector\Parser\Client\Browser::getAvailableBrowsers();
             foreach ($availableBrowsers as $short => $name) {
                 $list[$name] = getBrowserLogo($short);
             }
             break;
         case 'browserfamilies':
             $availableBrowserFamilies = \DeviceDetector\Parser\Client\Browser::getAvailableBrowserFamilies();
             foreach ($availableBrowserFamilies as $name => $browsers) {
                 $list[$name] = getBrowserFamilyLogo($name);
             }
             break;
         case 'os':
             $availableOSs = \DeviceDetector\Parser\OperatingSystem::getAvailableOperatingSystems();
             foreach ($availableOSs as $short => $name) {
                 $list[$name] = getOsLogo($short);
             }
             break;
         case 'osfamilies':
             $osFamilies = \DeviceDetector\Parser\OperatingSystem::getAvailableOperatingSystemFamilies();
             foreach ($osFamilies as $name => $oss) {
                 $list[$name] = getOsFamilyLogo($name);
             }
             break;
         case 'devicetypes':
             $deviceTypes = \DeviceDetector\Parser\Device\DeviceParserAbstract::getAvailableDeviceTypes();
             foreach ($deviceTypes as $name => $id) {
                 $list[$name] = getDeviceTypeLogo($name);
             }
             break;
     }
     $view->itemList = $list;
     return $view->render();
 }
예제 #4
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();
 }
예제 #5
0
 /**
  * @internal For Debugging only
  * Call metadata reports and draw the default graph for each report.
  */
 public function index()
 {
     Piwik::checkUserHasSomeAdminAccess();
     $idSite = Common::getRequestVar('idSite', 1, 'int');
     $period = Common::getRequestVar('period', 'day', 'string');
     $date = Common::getRequestVar('date', 'today', 'string');
     $_GET['token_auth'] = Piwik::getCurrentUserTokenAuth();
     $reports = APIPlugins::getInstance()->getReportMetadata($idSite, $period, $date);
     $plot = array();
     foreach ($reports as $report) {
         if (!empty($report['imageGraphUrl'])) {
             $plot[] = array($report['category'] . ' › ' . $report['name'], SettingsPiwik::getPiwikUrl() . $report['imageGraphUrl']);
         }
     }
     $view = new View('@ImageGraph/index');
     $view->titleAndUrls = $plot;
     return $view->render();
 }
예제 #6
0
 public function getMeasurableTypeSettings()
 {
     $idSite = Common::getRequestVar('idSite', 0, 'int');
     $idType = Common::getRequestVar('idType', '', 'string');
     if ($idSite >= 1) {
         Piwik::checkUserHasAdminAccess($idSite);
     } else {
         if ($idSite === 0) {
             Piwik::checkUserHasSomeAdminAccess();
         } else {
             throw new Exception('Invalid idSite parameter. IdSite has to be zero or higher');
         }
     }
     $view = new View('@SitesManager/measurable_type_settings');
     $propSettings = new MeasurableSettings($idSite, $idType);
     $view->settings = $propSettings->getSettingsForCurrentUser();
     return $view->render();
 }
예제 #7
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();
 }
예제 #8
0
파일: Controller.php 프로젝트: piwik/piwik
 public function privacySettings()
 {
     Piwik::checkUserHasSomeAdminAccess();
     $view = new View('@PrivacyManager/privacySettings');
     if (Piwik::hasUserSuperUserAccess()) {
         $view->deleteData = $this->getDeleteDataInfo();
         $view->anonymizeIP = $this->getAnonymizeIPInfo();
         $dntChecker = new DoNotTrackHeaderChecker();
         $view->dntSupport = $dntChecker->isActive();
         $view->canDeleteLogActions = Db::isLockPrivilegeGranted();
         $view->dbUser = PiwikConfig::getInstance()->database['username'];
         $view->deactivateNonce = Nonce::getNonce(self::DEACTIVATE_DNT_NONCE);
         $view->activateNonce = Nonce::getNonce(self::ACTIVATE_DNT_NONCE);
         $view->maskLengthOptions = array(array('key' => '1', 'value' => Piwik::translate('PrivacyManager_AnonymizeIpMaskLength', array("1", "192.168.100.xxx")), 'description' => ''), array('key' => '2', 'value' => Piwik::translate('PrivacyManager_AnonymizeIpMaskLength', array("2", "192.168.xxx.xxx")), 'description' => Piwik::translate('General_Recommended')), array('key' => '3', 'value' => Piwik::translate('PrivacyManager_AnonymizeIpMaskLength', array("3", "192.xxx.xxx.xxx")), 'description' => ''));
         $view->useAnonymizedIpForVisitEnrichmentOptions = array(array('key' => '1', 'value' => Piwik::translate('General_Yes'), 'description' => Piwik::translate('PrivacyManager_RecommendedForPrivacy')), array('key' => '0', 'value' => Piwik::translate('General_No'), 'description' => ''));
         $view->scheduleDeletionOptions = array(array('key' => '1', 'value' => Piwik::translate('Intl_PeriodDay')), array('key' => '7', 'value' => Piwik::translate('Intl_PeriodWeek')), array('key' => '30', 'value' => Piwik::translate('Intl_PeriodMonth')));
         $view->doNotTrackOptions = array(array('key' => '1', 'value' => Piwik::translate('PrivacyManager_DoNotTrack_Enable'), 'description' => Piwik::translate('General_Recommended')), array('key' => '0', 'value' => Piwik::translate('PrivacyManager_DoNotTrack_Disable'), 'description' => Piwik::translate('General_NotRecommended')));
     }
     $view->language = LanguagesManager::getLanguageCodeForCurrentUser();
     $this->setBasicVariablesView($view);
     return $view->render();
 }
예제 #9
0
 public function generalSettings()
 {
     Piwik::checkUserHasSomeAdminAccess();
     $view = new View('@CoreAdminHome/generalSettings');
     if (Piwik::isUserIsSuperUser()) {
         $this->handleGeneralSettingsAdmin($view);
         $trustedHosts = array();
         if (isset(Config::getInstance()->General['trusted_hosts'])) {
             $trustedHosts = Config::getInstance()->General['trusted_hosts'];
         }
         $view->trustedHosts = $trustedHosts;
         $view->branding = Config::getInstance()->branding;
         $logo = new CustomLogo();
         $view->logosWriteable = $logo->isCustomLogoWritable();
         $view->pathUserLogo = CustomLogo::getPathUserLogo();
         $view->pathUserLogoSmall = CustomLogo::getPathUserLogoSmall();
         $view->pathUserLogoSVG = CustomLogo::getPathUserSvgLogo();
         $view->pathUserLogoDirectory = dirname($view->pathUserLogo) . '/';
     }
     $view->language = LanguagesManager::getLanguageCodeForCurrentUser();
     $this->setBasicVariablesView($view);
     return $view->render();
 }
예제 #10
0
파일: API.php 프로젝트: JoeHorn/piwik
 /**
  * Returns the first login name of an existing user that has the given email address. If no user can be found for
  * this user an error will be returned.
  *
  * @param string $userEmail
  * @return bool true if the user is known
  */
 public function getUserLoginFromUserEmail($userEmail)
 {
     Piwik::checkUserIsNotAnonymous();
     Piwik::checkUserHasSomeAdminAccess();
     $this->checkUserEmailExists($userEmail);
     $user = $this->model->getUserByEmail($userEmail);
     // any user with some admin access is allowed to find any user by email, no need to filter by access here
     return $user['login'];
 }
예제 #11
0
파일: API.php 프로젝트: a4tunado/piwik
 /**
  * Returns the default currency that will be set when creating a website through the API.
  *
  * @return string Currency ID eg. 'USD'
  */
 public function getDefaultCurrency()
 {
     Piwik::checkUserHasSomeAdminAccess();
     $defaultCurrency = Option::get(self::OPTION_DEFAULT_CURRENCY);
     if ($defaultCurrency) {
         return $defaultCurrency;
     }
     return 'USD';
 }
예제 #12
0
 public function privacySettings()
 {
     Piwik::checkUserHasSomeAdminAccess();
     $view = new View('@PrivacyManager/privacySettings');
     if (Piwik::hasUserSuperUserAccess()) {
         $view->deleteData = $this->getDeleteDataInfo();
         $view->anonymizeIP = $this->getAnonymizeIPInfo();
         $view->dntSupport = DoNotTrackHeaderChecker::isActive();
         $view->canDeleteLogActions = Db::isLockPrivilegeGranted();
         $view->dbUser = PiwikConfig::getInstance()->database['username'];
         $view->deactivateNonce = Nonce::getNonce(self::DEACTIVATE_DNT_NONCE);
         $view->activateNonce = Nonce::getNonce(self::ACTIVATE_DNT_NONCE);
     }
     $view->language = LanguagesManager::getLanguageCodeForCurrentUser();
     $this->setBasicVariablesView($view);
     return $view->render();
 }
예제 #13
0
 /**
  * Main view showing listing of websites and settings
  */
 public function index()
 {
     Piwik::checkUserHasSomeAdminAccess();
     return $this->renderTemplate('index');
 }
예제 #14
0
 /**
  * Forces a check for updates and re-renders the header message.
  *
  * This will check piwik.org at most once per 10s.
  */
 public function checkForUpdates()
 {
     Piwik::checkUserHasSomeAdminAccess();
     $this->checkTokenInUrl();
     // perform check (but only once every 10s)
     UpdateCheck::check($force = false, UpdateCheck::UI_CLICK_CHECK_INTERVAL);
     MarketplaceApiClient::clearAllCacheEntries();
     $view = new View('@CoreHome/checkForUpdates');
     $this->setGeneralVariablesView($view);
     return $view->render();
 }
예제 #15
0
 /**
  * Returns the list of all the users login
  *
  * @return array the list of all the users login
  */
 public function getUsersLogin()
 {
     Piwik::checkUserHasSomeAdminAccess();
     $db = Db::get();
     $users = $db->fetchAll("SELECT login\n\t\t\t\t\t\t\t\tFROM " . Common::prefixTable("user") . "\n\t\t\t\t\t\t\t\tORDER BY login ASC");
     $return = array();
     foreach ($users as $login) {
         $return[] = $login['login'];
     }
     return $return;
 }
예제 #16
0
 /**
  * The "Manage Users and Permissions" Admin UI screen
  */
 function index()
 {
     Piwik::checkUserIsNotAnonymous();
     Piwik::checkUserHasSomeAdminAccess();
     $view = new View('@UsersManager/index');
     $IdSitesAdmin = Request::processRequest('SitesManager.getSitesIdWithAdminAccess');
     $idSiteSelected = 1;
     if (count($IdSitesAdmin) > 0) {
         $defaultWebsiteId = $IdSitesAdmin[0];
         $idSiteSelected = Common::getRequestVar('idSite', $defaultWebsiteId);
     }
     if ($idSiteSelected === 'all') {
         $usersAccessByWebsite = array();
         $defaultReportSiteName = $this->translator->translate('UsersManager_ApplyToAllWebsites');
     } else {
         if (!Piwik::isUserHasAdminAccess($idSiteSelected) && count($IdSitesAdmin) > 0) {
             // make sure to show a website where user actually has admin access
             $idSiteSelected = $IdSitesAdmin[0];
         }
         $defaultReportSiteName = Site::getNameFor($idSiteSelected);
         try {
             $usersAccessByWebsite = Request::processRequest('UsersManager.getUsersAccessFromSite', array('idSite' => $idSiteSelected));
         } catch (NoAccessException $e) {
             return $this->noAdminAccessToWebsite($idSiteSelected, $defaultReportSiteName, $e->getMessage());
         }
     }
     // we dont want to display the user currently logged so that the user can't change his settings from admin to view...
     $currentlyLogged = Piwik::getCurrentUserLogin();
     $usersLogin = Request::processRequest('UsersManager.getUsersLogin');
     foreach ($usersLogin as $login) {
         if (!isset($usersAccessByWebsite[$login])) {
             $usersAccessByWebsite[$login] = 'noaccess';
         }
     }
     unset($usersAccessByWebsite[$currentlyLogged]);
     // $usersAccessByWebsite is not supposed to contain unexistant logins, but it does when upgrading from some old Piwik version
     foreach ($usersAccessByWebsite as $login => $access) {
         if (!in_array($login, $usersLogin)) {
             unset($usersAccessByWebsite[$login]);
             continue;
         }
     }
     ksort($usersAccessByWebsite);
     $users = array();
     $superUsers = array();
     $usersAliasByLogin = array();
     $formatter = new Formatter();
     if (Piwik::isUserHasSomeAdminAccess()) {
         $view->showLastSeen = true;
         $users = Request::processRequest('UsersManager.getUsers');
         foreach ($users as $index => $user) {
             $usersAliasByLogin[$user['login']] = $user['alias'];
             $lastSeen = LastSeenTimeLogger::getLastSeenTimeForUser($user['login']);
             $users[$index]['last_seen'] = $lastSeen == 0 ? false : $formatter->getPrettyTimeFromSeconds(time() - $lastSeen);
         }
         if (Piwik::hasUserSuperUserAccess()) {
             foreach ($users as $user) {
                 if ($user['superuser_access']) {
                     $superUsers[] = $user['login'];
                 }
             }
         }
     }
     $view->hasOnlyAdminAccess = Piwik::isUserHasSomeAdminAccess() && !Piwik::hasUserSuperUserAccess();
     $view->anonymousHasViewAccess = $this->hasAnonymousUserViewAccess($usersAccessByWebsite);
     $view->idSiteSelected = $idSiteSelected;
     $view->defaultReportSiteName = $defaultReportSiteName;
     $view->users = $users;
     $view->superUserLogins = $superUsers;
     $view->usersAliasByLogin = $usersAliasByLogin;
     $view->usersCount = count($users) - 1;
     $view->usersAccessByWebsite = $usersAccessByWebsite;
     $websites = Request::processRequest('SitesManager.getSitesWithAdminAccess');
     uasort($websites, array('Piwik\\Plugins\\UsersManager\\Controller', 'orderByName'));
     $view->websites = $websites;
     $this->setBasicVariablesView($view);
     return $view->render();
 }
예제 #17
0
 public function searchTranslation()
 {
     Piwik::checkUserHasSomeAdminAccess();
     return $this->renderTemplate('searchTranslation');
 }
예제 #18
0
파일: API.php 프로젝트: brienomatty/elmsln
 /**
  * Returns array of idSites to force re-process next time core:archive command runs
  *
  * @ignore
  * @return mixed
  */
 public static function getWebsiteIdsToInvalidate()
 {
     Piwik::checkUserHasSomeAdminAccess();
     Option::clearCachedOption(self::OPTION_INVALIDATED_IDSITES);
     $invalidatedIdSites = Option::get(self::OPTION_INVALIDATED_IDSITES);
     if ($invalidatedIdSites && ($invalidatedIdSites = unserialize($invalidatedIdSites)) && count($invalidatedIdSites)) {
         return $invalidatedIdSites;
     }
     return array();
 }
예제 #19
0
 public function deleteAutomaticMessage()
 {
     Piwik::checkUserHasSomeAdminAccess();
     $idAutoMsg = Common::getRequestVar('idAutoMsg', null, 'int');
     if ($idAutoMsg != null) {
         ChatAutomaticMessage::delete($idAutoMsg);
         return true;
     }
     return false;
 }
예제 #20
0
 /**
  * Returns the list of all the users login
  *
  * @return array the list of all the users login
  */
 public function getUsersLogin()
 {
     Piwik::checkUserHasSomeAdminAccess();
     return $this->model->getUsersLogin();
 }
예제 #21
0
 /**
  * Get a list of all available dimensions that can be used in an extraction. Requires at least Admin access
  * to one website.
  *
  * @return array
  */
 public function getAvailableExtractionDimensions()
 {
     Piwik::checkUserHasSomeAdminAccess();
     $supported = Extraction::getSupportedDimensions();
     $dimensions = array();
     foreach ($supported as $value => $dimension) {
         $dimensions[] = array('value' => $value, 'name' => $dimension);
     }
     return $dimensions;
 }