user.inc.svn-base
来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· SVN-BASE 代码 · 共 532 行 · 第 1/2 页
SVN-BASE
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 + -
显示快捷键?