예제 #1
0
파일: API.php 프로젝트: bossrabbit/piwik
 /**
  * Sets the language for the user
  *
  * @param string $login
  * @param string $languageCode
  * @return bool
  */
 public function setLanguageForUser($login, $languageCode)
 {
     Piwik::checkUserHasSuperUserAccessOrIsTheUser($login);
     Piwik::checkUserIsNotAnonymous();
     if (!$this->isLanguageAvailable($languageCode)) {
         return false;
     }
     $this->getModel()->setLanguageForUser($login, $languageCode);
     return true;
 }
예제 #2
0
파일: API.php 프로젝트: carriercomm/piwik
 /**
  * Sets the language for the user
  *
  * @param string $login
  * @param string $languageCode
  * @return bool
  */
 public function setLanguageForUser($login, $languageCode)
 {
     Piwik::checkUserHasSuperUserAccessOrIsTheUser($login);
     Piwik::checkUserIsNotAnonymous();
     if (!$this->isLanguageAvailable($languageCode)) {
         return false;
     }
     $paramsBind = array($login, $languageCode, $languageCode);
     Db::query('INSERT INTO ' . Common::prefixTable('user_language') . ' (login, language)
             VALUES (?,?)
         ON DUPLICATE KEY UPDATE language=?', $paramsBind);
     return true;
 }
예제 #3
0
파일: API.php 프로젝트: brienomatty/elmsln
 /**
  * Returns a stored segment by ID
  *
  * @param $idSegment
  * @throws Exception
  * @return bool
  */
 public function get($idSegment)
 {
     Piwik::checkUserHasSomeViewAccess();
     if (!is_numeric($idSegment)) {
         throw new Exception("idSegment should be numeric.");
     }
     $segment = Db::get()->fetchRow("SELECT * " . " FROM " . Common::prefixTable("segment") . " WHERE idsegment = ?", $idSegment);
     if (empty($segment)) {
         return false;
     }
     try {
         if (!$segment['enable_all_users']) {
             Piwik::checkUserHasSuperUserAccessOrIsTheUser($segment['login']);
         }
     } catch (Exception $e) {
         throw new Exception($this->getMessageCannotEditSegmentCreatedBySuperUser());
     }
     if ($segment['deleted']) {
         throw new Exception("This segment is marked as deleted. ");
     }
     return $segment;
 }
예제 #4
0
파일: API.php 프로젝트: carriercomm/piwik
 /**
  * Deletes a specific report
  *
  * @param int $idReport
  */
 public function deleteReport($idReport)
 {
     $APIScheduledReports = $this->getReports($idSite = false, $periodSearch = false, $idReport);
     $report = reset($APIScheduledReports);
     Piwik::checkUserHasSuperUserAccessOrIsTheUser($report['login']);
     Db::get()->update(Common::prefixTable('report'), array('deleted' => 1), "idreport = '{$idReport}'");
     self::$cache = array();
 }
예제 #5
0
파일: API.php 프로젝트: dorelljames/piwik
 /**
  * Returns whether the user uses 12 hour clock
  *
  * @param string $login
  * @param bool $use12HourClock
  * @return string
  */
 public function set12HourClockForUser($login, $use12HourClock)
 {
     if ($login == 'anonymous') {
         return false;
     }
     Piwik::checkUserHasSuperUserAccessOrIsTheUser($login);
     $lang = $this->getModel()->set12HourClock($login, $use12HourClock);
     return $lang;
 }
예제 #6
0
 /**
  * Updates a user in the database.
  * Only login and password are required (case when we update the password).
  * When the password changes, the key token for this user will change, which could break
  * its API calls.
  *
  * @see addUser() for all the parameters
  */
 public function updateUser($userLogin, $password = false, $email = false, $alias = false, $_isPasswordHashed = false)
 {
     Piwik::checkUserHasSuperUserAccessOrIsTheUser($userLogin);
     $this->checkUserIsNotAnonymous($userLogin);
     $userInfo = $this->getUser($userLogin);
     $passwordHasBeenUpdated = false;
     if (empty($password)) {
         $password = $userInfo['password'];
     } else {
         $password = Common::unsanitizeInputValue($password);
         if (!$_isPasswordHashed) {
             UsersManager::checkPassword($password);
             $password = UsersManager::getPasswordHash($password);
         }
         $passwordHasBeenUpdated = true;
     }
     if (empty($alias)) {
         $alias = $userInfo['alias'];
     }
     if (empty($email)) {
         $email = $userInfo['email'];
     }
     if ($email != $userInfo['email']) {
         $this->checkEmail($email);
     }
     $alias = $this->getCleanAlias($alias, $userLogin);
     $token_auth = $this->getTokenAuth($userLogin, $password);
     $this->model->updateUser($userLogin, $password, $email, $alias, $token_auth);
     Cache::deleteTrackerCache();
     /**
      * Triggered after an existing user has been updated.
      * Event notify about password change.
      *
      * @param string $userLogin The user's login handle.
      * @param boolean $passwordHasBeenUpdated Flag containing information about password change.
      */
     Piwik::postEvent('UsersManager.updateUser.end', array($userLogin, $passwordHasBeenUpdated, $email, $password, $alias));
 }
예제 #7
0
 /**
  * Deletes a specific report
  *
  * @param int $idReport
  */
 public function deleteReport($idReport)
 {
     $APIScheduledReports = $this->getReports($idSite = false, $periodSearch = false, $idReport);
     $report = reset($APIScheduledReports);
     Piwik::checkUserHasSuperUserAccessOrIsTheUser($report['login']);
     $this->getModel()->updateReport($idReport, array('deleted' => 1));
     self::$cache = array();
 }
예제 #8
0
 /**
  * Returns a stored segment by ID
  *
  * @param $idSegment
  * @throws Exception
  * @return bool
  */
 public function get($idSegment)
 {
     Piwik::checkUserHasSomeViewAccess();
     if (!is_numeric($idSegment)) {
         throw new Exception("idSegment should be numeric.");
     }
     $segment = $this->getModel()->getSegment($idSegment);
     if (empty($segment)) {
         return false;
     }
     try {
         if (!$segment['enable_all_users']) {
             Piwik::checkUserHasSuperUserAccessOrIsTheUser($segment['login']);
         }
     } catch (Exception $e) {
         throw new Exception($this->getMessageCannotEditSegmentCreatedBySuperUser());
     }
     if ($segment['deleted']) {
         throw new Exception("This segment is marked as deleted. ");
     }
     return $segment;
 }
예제 #9
0
파일: Controller.php 프로젝트: piwik/piwik
 /**
  * Records settings from the "User Settings" page
  * @throws Exception
  */
 public function recordUserSettings()
 {
     $response = new ResponseBuilder(Common::getRequestVar('format'));
     try {
         $this->checkTokenInUrl();
         $defaultReport = Common::getRequestVar('defaultReport');
         $defaultDate = Common::getRequestVar('defaultDate');
         $language = Common::getRequestVar('language');
         $timeFormat = Common::getRequestVar('timeformat');
         $userLogin = Piwik::getCurrentUserLogin();
         Piwik::checkUserHasSuperUserAccessOrIsTheUser($userLogin);
         $this->processPasswordChange($userLogin);
         LanguagesManager::setLanguageForSession($language);
         APILanguagesManager::getInstance()->setLanguageForUser($userLogin, $language);
         APILanguagesManager::getInstance()->set12HourClockForUser($userLogin, $timeFormat);
         APIUsersManager::getInstance()->setUserPreference($userLogin, APIUsersManager::PREFERENCE_DEFAULT_REPORT, $defaultReport);
         APIUsersManager::getInstance()->setUserPreference($userLogin, APIUsersManager::PREFERENCE_DEFAULT_REPORT_DATE, $defaultDate);
         $toReturn = $response->getResponse();
     } catch (Exception $e) {
         $toReturn = $response->getResponseException($e);
     }
     return $toReturn;
 }