user.inc.tmp

来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· TMP 代码 · 共 532 行 · 第 1/2 页

TMP
532
字号
    	if ($update)    	{    		$state = $oJSON->encode($dashlets);	    	$this->setDashboardState($state);    	}    }    function &get($iId) {        return KTEntityUtil::get('User', $iId);    }	/**	* update the datastore, without overwriting the password.	*	* only works for a subset of the db values.	*/	function doLimitedUpdate() {		$sQuery = 'UPDATE ' . $this->_table() . ' SET ';		$aParams = array();		$blacklist = array(			"sPassword" => 1,		);		$aParts = array(); // quick workaround to make the join less hurtful.		foreach ($this->_aFieldToSelect as $attr => $column) {			if (!array_key_exists($attr, $blacklist)) {				$val = $this->$attr;				$aParts[] = $column . ' = ?';				$aParams[] = $val;			}		}		$sQuery .= join(', ', $aParts);		$sQuery .= ' WHERE id = ? ';		$aParams[] = $this->getId();		$res = DBUtil::runQuery(array($sQuery, $aParams));        $group = sprintf("%s/%s", get_class($this), 'id');        $oCache =& KTCache::getSingleton();        $oCache->remove($group, $this->iId);        $this->clearCachedGroups();		return $res;	}    /**    * Static function    * Get a list of users    *    * @param  String  Where clause (not required)    *    * @return Array array of User objects, false otherwise and set $_SESSION["errorMessage"]    */    function getList($sWhereClause = null, $aOptions = null) {        if(!is_array($aOptions)) $aOptions = array($aOptions);        $aOptions['orderby'] = KTUtil::arrayGet($aOptions, 'orderby', 'name');        // don't include deleted users: disabled = 2        if(!empty($sWhereClause)){            if(strpos(strtolower($sWhereClause), 'where ') === false){                $sWhereClause = '('.$sWhereClause.')';            }            $sWhereClause .= ' AND disabled != 2';        }else{            $sWhereClause = 'disabled != 2';        }        return KTEntityUtil::getList2('User', $sWhereClause, $aOptions);    }    function getEmailUsers($sWhereClause = null) {        $aUsers = array();        foreach (User::getList($sWhereClause) as $oUser) {            if ($oUser->getEmail()) {                $aUsers[] = $oUser;            }        }        return $aUsers;    }    /**     * Return the useID for the user     *     * @return int the unitID, false otherwise and $_SESSION["errorMessage"] set     */    function getUnitId() {        $ugl = KTUtil::getTableName("users_groups");        $g = KTUtil::getTableName("groups");        $aQuery = array(            "SELECT DISTINCT g.unit_id AS unit_id FROM $ugl AS ugl INNER JOIN $g AS g ON ugl.group_id = g.id WHERE ugl.user_id = ?",            array($this->iId),        );        return DBUtil::getOneResultKey($aQuery, 'unit_id');    }    /**     * static function     *     * gets the id of a user using their username     *     * @param   string  The username for which we want its ID     */    function getUserID($sUsername) {        global $default;        $id = lookupID($default->users_table, "username",  $sUsername);        $this->iId = $id;    }    /** Static function    * Gets the user's default top level folder for the current user    */    function getHomeFolderID() {    	$iUnitId = $this->getUnitId();        if (empty($iUnitId)) {            return false;        }        $oUnit =& Unit::get($iUnitId);        return $oUnit->getFolderId();    }	function &createFromArray($aOptions) { return KTEntityUtil::createFromArray('User', $aOptions); }	function &getByUserName($sUserName, $aOptions = null) {        return KTEntityUtil::getBy('User', 'username', $sUserName, $aOptions);    }    /**     * Check whether a user has been deleted     *     * @param string $sUsername     * @return boolean     */    function checkDeletedUser($sUsername) {        $deletedUsername = "kt_deleted_{$sUsername}_";        $query = "SELECT * FROM users WHERE username LIKE '{$deletedUsername}%'";        $result = DBUtil::getOneResult($query);        if(PEAR::isError($result) || empty($result)){            return false;        }        // Check that the deleted username is correct        if($deletedUsername.$result['id'] != $result['username']){            return false;        }        return true;    }    function getByAuthenticationSource($oSource, $aOptions = null) {        $iSourceId = KTUtil::getId($oSource);        $aOptions = KTUtil::meldOptions($aOptions, array(            'multi' => true,        ));        return KTEntityUtil::getByDict('User', array(            'authentication_source_id' => $iSourceId,        ), $aOptions);    }    function &getByAuthenticationSourceAndDetails($oSource, $sDetails, $aOptions = null) {        $iSourceId = KTUtil::getId($oSource);        return KTEntityUtil::getByDict('User', array(            'authentication_source_id' => $iSourceId,            'authentication_details_s1' => $sDetails,        ), $aOptions);    }    function getByLastLoginBefore($dDateTime) {        return KTEntityUtil::getByDict('User', array(            'last_login' => array('type' => 'before', 'value' => $dDateTime),        ), array('multi' => true));    }    function getByLastLoginAfter($dDateTime) {        return KTEntityUtil::getByDict('User', array(            'last_login' => array('type' => 'after', 'value' => $dDateTime),        ), array('multi' => true));    }    function getNumberEnabledUsers() {        $sQuery = sprintf('SELECT COUNT(id) AS number FROM %s WHERE disabled = ? AND id > 1', KTUtil::getTableName('users'));        $aParams = array(false);        return DBUtil::getOneResultKey(array($sQuery, $aParams), 'number');    }    function isAnonymous() { return $this->iId == -2; }    function disable() {        $this->setDisabled(1);        $this->update();        if (KTPluginUtil::pluginIsActive('ktdms.wintools')) {            require_once(KT_DIR .  '/plugins/wintools/baobabkeyutil.inc.php');            BaobabKeyUtil::deallocateUser($this);        }        return;    }    function enable() {        $this->setDisabled(0);        $this->update();        if (KTPluginUtil::pluginIsActive('ktdms.wintools')) {            require_once(KT_DIR .  '/plugins/wintools/baobabkeyutil.inc.php');            BaobabKeyUtil::allocateUser($this);        }        return;    }    function create() {        if (KTPluginUtil::pluginIsActive('ktdms.wintools')) {            require_once(KT_DIR .  '/plugins/wintools/baobabkeyutil.inc.php');            $res = BaobabKeyUtil::canAddUser();            if (PEAR::isError($res)) {                return $res;            }        }        return parent::create();    }    function delete()    {    	$this->setDisabled(2);    	$this->setEmailNotification(false);    	//change username    	$tempUsername = $this->getUsername();    	$this->getUserID($tempUsername);    	$tempUserID = $this->iId;    	$DeletedUsername = 'kt_deleted_'.$tempUsername.'_'.$tempUserID;    	$this->setUsername($DeletedUsername);    	//nullify all authentication_xxx fields    	$this->setAuthenticationSourceId(null);	    $this->setAuthenticationDetails(null);	    $this->setAuthenticationDetails2(null);		$this->setAuthenticationDetailsInt1(null);	    $this->setAuthenticationDetailsInt2(null);		$this->setAuthenticationDetailsDate1(null);	    $this->setAuthenticationDetailsDate2(null);		$this->setAuthenticationDetailsBool1(null);	    $this->setAuthenticationDetailsBool2(null);        $this->update();        if (KTPluginUtil::pluginIsActive('ktdms.wintools')) {            require_once(KT_DIR .  '/plugins/wintools/baobabkeyutil.inc.php');            BaobabKeyUtil::deallocateUser($this);        }        return;    }    function hasPermission($oUser, $oPermission, $oFolderOrDocument) {    	return KTPermissionUtil::userHasPermissionOnItem($oUser, $oPermission, $oFolderOrDocument);	}}?>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?