📄 api.php
字号:
<?php/** * Piwik - Open source web analytics * * @link http://piwik.org * @license http://www.gnu.org/licenses/gpl-3.0.html Gpl v3 or later * @version $Id: API.php 581 2008-07-27 23:07:52Z matt $ * * @package Piwik_UsersManager *//** * * @package Piwik_UsersManager */class Piwik_UsersManager_API extends Piwik_Apiable{ static private $instance = null; static public function getInstance() { if (self::$instance == null) { $c = __CLASS__; self::$instance = new $c(); } return self::$instance; } static public $methodsNotToPublish = array(); /** * Returns the list of all the users * * @return array the list of all the users */ static public function getUsers() { Piwik::checkUserIsSuperUser(); $db = Zend_Registry::get('db'); $users = $db->fetchAll("SELECT * FROM ".Piwik::prefixTable("user")." ORDER BY login ASC"); return $users; } /** * Returns the list of all the users login * * @return array the list of all the users login */ static public function getUsersLogin() { Piwik::checkUserHasSomeAdminAccess(); $db = Zend_Registry::get('db'); $users = $db->fetchAll("SELECT login FROM ".Piwik::prefixTable("user")." ORDER BY login ASC"); $return = array(); foreach($users as $login) { $return[] = $login['login']; } return $return; } /** * For each user, returns the list of website IDs where the user has the supplied $access level. * If a user doesn't have the given $access to any website IDs, * the user will not be in the returned array. * * @param string Access can have the following values : 'view' or 'admin' * * @return array The returned array has the format * array( * login1 => array ( idsite1,idsite2), * login2 => array(idsite2), * ... * ) * */ static public function getUsersSitesFromAccess( $access ) { Piwik::checkUserIsSuperUser(); self::checkAccessType($access); $db = Zend_Registry::get('db'); $users = $db->fetchAll("SELECT login,idsite FROM ".Piwik::prefixTable("access") ." WHERE access = ?", $access); $return = array(); foreach($users as $user) { $return[$user['login']][] = $user['idsite']; } return $return; } /** * For each user, returns his access level for the given $idSite. * If a user doesn't have any access to the $idSite ('noaccess'), * the user will not be in the returned array. * * @param string website ID * * @return array The returned array has the format * array( * login1 => 'view', * login2 => 'admin', * login3 => 'view', * ... * ) */ static public function getUsersAccessFromSite( $idSite ) { Piwik::checkUserHasAdminAccess( $idSite ); $db = Zend_Registry::get('db'); $users = $db->fetchAll("SELECT login,access FROM ".Piwik::prefixTable("access") ." WHERE idsite = ?", $idSite); $return = array(); foreach($users as $user) { $return[$user['login']] = $user['access']; } return $return; } /** * For each website ID, returns the access level of the given $userLogin. * If the user doesn't have any access to a website ('noaccess'), * this website will not be in the returned array. * If the user doesn't have any access, the returned array will be an empty array. * * @param string User that has to be valid * * @return array The returned array has the format * array( * idsite1 => 'view', * idsite2 => 'admin', * idsite3 => 'view', * ... * ) */ static public function getSitesAccessFromUser( $userLogin ) { Piwik::checkUserIsSuperUser(); self::checkUserExists($userLogin); $db = Zend_Registry::get('db'); $users = $db->fetchAll("SELECT idsite,access FROM ".Piwik::prefixTable("access") ." WHERE login = ?", $userLogin); $return = array(); foreach($users as $user) { $return[$user['idsite']] = $user['access']; } return $return; } /** * Returns the user information (login, password md5, alias, email, date_registered, etc.) * * @param string the user login * * @return array the user information */ static public function getUser( $userLogin ) { Piwik::checkUserIsSuperUser(); self::checkUserExists($userLogin); $db = Zend_Registry::get('db'); $user = $db->fetchRow("SELECT * FROM ".Piwik::prefixTable("user") ." WHERE login = ?", $userLogin); return $user; } /** * Returns the user information (login, password md5, alias, email, date_registered, etc.) * * @param string the user email * * @return array the user information */ static public function getUserByEmail( $userEmail ) { Piwik::checkUserIsSuperUser(); self::checkUserEmailExists($userEmail); $db = Zend_Registry::get('db'); $user = $db->fetchRow("SELECT * FROM ".Piwik::prefixTable("user") ." WHERE email = ?", $userEmail); return $user; } static private function checkLogin($userLogin) { if(self::userExists($userLogin)) { throw new Exception(sprintf(Piwik_TranslateException('UsersManager_ExceptionLoginExists'),$userLogin)); } if(!self::isValidLoginString($userLogin)) { throw new Exception(Piwik_TranslateException('UsersManager_ExceptionInvalidLogin')); } } static private function checkPassword($password) { if(!self::isValidPasswordString($password)) { throw new Exception(Piwik_TranslateException('UsersManager_ExceptionInvalidPassword')); } } static private function checkEmail($email) { if(self::userEmailExists($email)) { throw new Exception(sprintf(Piwik_TranslateException('UsersManager_ExceptionEmailExists'),$email)); } if(!Piwik::isValidEmailString($email)) { throw new Exception(Piwik_TranslateException('UsersManager_ExceptionInvalidEmail')); } } static private function getCleanAlias($alias,$userLogin) { if(empty($alias)) { $alias = $userLogin; } return $alias; } static private function getCleanPassword($password) { // if change here, should also edit the installation process // to change how the root pwd is saved in the config file return md5($password); } /** * Add a user in the database. * A user is defined by * - a login that has to be unique and valid * - a password that has to be valid * - an alias * - an email that has to be in a correct format * * @see userExists() * @see isValidLoginString() * @see isValidPasswordString() * @see isValidEmailString() * * @exception in case of an invalid parameter */ static public function addUser( $userLogin, $password, $email, $alias = false ) { Piwik::checkUserIsSuperUser(); self::checkLogin($userLogin); self::checkPassword($password); self::checkEmail($email); $alias = self::getCleanAlias($alias,$userLogin); $passwordTransformed = self::getCleanPassword($password); $token_auth = self::getTokenAuth($userLogin, $passwordTransformed); $db = Zend_Registry::get('db'); $db->insert( Piwik::prefixTable("user"), array( 'login' => $userLogin, 'password' => $passwordTransformed, 'alias' => $alias, 'email' => $email, 'token_auth' => $token_auth, ) ); // we reload the access list which doesn't yet take in consideration this new user Zend_Registry::get('access')->loadAccess(); } /** * 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 */ static public function updateUser( $userLogin, $password = false, $email = false, $alias = false )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -