permissiondescriptor.inc.php
来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· PHP 代码 · 共 494 行 · 第 1/2 页
PHP
494 行
$sGroupIDs = DBUtil::paramArray($aGroupIDs);
$sQuery = "SELECT DISTINCT descriptor_id FROM $sTable WHERE group_id IN ( $sGroupIDs )";
$aParams = $aGroupIDs;
$aIDs = DBUtil::getResultArrayKey(array($sQuery, $aParams), 'descriptor_id');
$aRet = array();
foreach ($aIDs as $iID) {
if ($ids === true) {
$aRet[] = $iID;
} else {
$aRet[] =& KTPermissionDescriptor::get($iID);
}
}
return $aRet;
}
// }}}
// }}}
// {{{ ROLES
// {{{ _clearRoles
function _clearRoles() {
unset($GLOBALS['_PDRC'][$this->getId()]);
$sTable = KTUtil::getTableName('permission_descriptor_roles');
$sQuery = "DELETE FROM $sTable WHERE descriptor_id = ?";
$aParams = array($this->getID());
$res = DBUtil::runQuery(array($sQuery, $aParams));
return $res;
}
// }}}
// {{{ _addRole
function _addRole($iID) {
$sTable = KTUtil::getTableName('permission_descriptor_roles');
$sQuery = "INSERT INTO $sTable (descriptor_id, role_id) VALUES (?, ?)";
$aParams = array($this->getID(), $iID);
$res = DBUtil::runQuery(array($sQuery, $aParams));
return $res;
}
// }}}
// {{{ hasRoles
function hasRoles($aRoles) {
if (!is_array($aRoles)) { return false; }
$sTable = KTUtil::getTableName('permission_descriptor_roles');
if (count($aRoles) === 0) {
return false;
}
$aRoleIDs = array();
foreach ($aRoles as $oRole) {
$aRoleIDs[] = KTUtil::getId($oRole);
}
$sRoleIDs = DBUtil::paramArray($aRoleIDs);
$sQuery = "SELECT COUNT(role_id) AS num FROM $sTable
WHERE descriptor_id = ? AND role_id IN ($sRoleIDs)";
$aParams = array($this->getID());
$aParams = kt_array_merge($aParams, $aRoleIDs);
$res = DBUtil::getOneResultKey(array($sQuery, $aParams), 'num');
if (PEAR::isError($res)) {
return $res;
}
if ((int)$res === 0) {
return false;
}
return true;
}
// }}}
// {{{ getRoles
function getRoles() {
if (isset($GLOBALS['_PDRC'][$this->getId()])) {
return $GLOBALS['_PDRC'][$this->getId()];
}
$sTable = KTUtil::getTableName('permission_descriptor_roles');
$sQuery = "SELECT role_id FROM $sTable WHERE descriptor_id = ?";
$aParams = array($this->getID());
$res = DBUtil::getResultArrayKey(array($sQuery, $aParams), 'role_id');
$GLOBALS['_PDRC'][$this->getId()] = $res;
return $res;
}
// }}}
// {{{ STATIC: getByRole
function &getByRole($oRole) {
$sTable = KTUtil::getTableName('permission_descriptor_roles');
$sQuery = "SELECT descriptor_id FROM $sTable WHERE role_id = ?";
$aParams = array($oRole->getID());
$aIDs = DBUtil::getResultArrayKey(array($sQuery, $aParams), 'descriptor_id');
$aRet = array();
foreach ($aIDs as $iID) {
$aRet[] =& KTPermissionDescriptor::get($iID);
}
return $aRet;
}
// }}}
// {{{ STATIC: getByRoles
function &getByRoles($aRoles, $aOptions = null) {
$sTable = KTUtil::getTableName('permission_descriptor_roles');
if (is_null($aOptions)) {
$aOptions = array();
}
if (count($aRoles) === 0) { return array(); }
$ids = KTUtil::arrayGet($aOptions, 'ids');
$aRoleIDs = array();
foreach ($aRoles as $oRole) {
if (is_numeric($oRole)) {
$aRoleIDs[] = $oRole;
} else {
$aRoleIDs[] = $oRole->getID();
}
}
$sRoleIDs = DBUtil::paramArray($aRoleIDs);
$sQuery = "SELECT DISTINCT descriptor_id FROM $sTable WHERE role_id IN ( $sRoleIDs )";
$aParams = $aRoleIDs;
$aIDs = DBUtil::getResultArrayKey(array($sQuery, $aParams), 'descriptor_id');
$aRet = array();
foreach ($aIDs as $iID) {
if ($ids === true) {
$aRet[] = $iID;
} else {
$aRet[] =& KTPermissionDescriptor::get($iID);
}
}
return $aRet;
}
// }}}
// }}}
// {{{ USERS
// {{{ _clearUsers
function _clearUsers() {
unset($GLOBALS['_PDUC'][$this->getId()]);
$sTable = KTUtil::getTableName('permission_descriptor_users');
$sQuery = "DELETE FROM $sTable WHERE descriptor_id = ?";
$aParams = array($this->getID());
$res = DBUtil::runQuery(array($sQuery, $aParams));
return $res;
}
// }}}
// {{{ _addUser
function _addUser($iID) {
$sTable = KTUtil::getTableName('permission_descriptor_users');
$sQuery = "INSERT INTO $sTable (descriptor_id, user_id) VALUES (?, ?)";
$aParams = array($this->getID(), $iID);
$res = DBUtil::runQuery(array($sQuery, $aParams));
return $res;
}
// }}}
// {{{ hasUsers
function hasUsers($aUsers) {
$sTable = KTUtil::getTableName('permission_descriptor_users');
if (count($aUsers) === 0) {
return false;
}
$aUserIDs = array();
foreach ($aUsers as $oUser) {
$aUserIDs[] = $oUser->getID();
}
$sUserIDs = DBUtil::paramArray($aUserIDs);
$sQuery = "SELECT COUNT(user_id) AS num FROM $sTable
WHERE descriptor_id = ? AND user_id IN ($sUserIDs)";
$aParams = array($this->getID());
$aParams = kt_array_merge($aParams, $aUserIDs);
$res = DBUtil::getOneResultKey(array($sQuery, $aParams), 'num');
if (PEAR::isError($res)) {
return $res;
}
if ((int)$res === 0) {
return false;
}
return true;
}
// }}}
// {{{ getUsers
function getUsers() {
if (isset($GLOBALS['_PDUC'][$this->getId()])) {
return $GLOBALS['_PDUC'][$this->getId()];
}
$sTable = KTUtil::getTableName('permission_descriptor_users');
$sQuery = "SELECT user_id FROM $sTable WHERE descriptor_id = ?";
$aParams = array($this->getID());
$res = DBUtil::getResultArrayKey(array($sQuery, $aParams), 'user_id');
$GLOBALS['_PDUC'][$this->getId()] = $res;
return $res;
}
// }}}
// {{{ STATIC: getByUser
function &getByUser($oUser, $aOptions = null) {
$sTable = KTUtil::getTableName('permission_descriptor_users');
$sQuery = "SELECT descriptor_id FROM $sTable WHERE user_id = ?";
$aParams = array($oUser->getID());
$aIDs = DBUtil::getResultArrayKey(array($sQuery, $aParams), 'descriptor_id');
if (is_null($aOptions)) {
$aOptions = array();
}
$ids = KTUtil::arrayGet($aOptions, 'ids');
$aRet = array();
foreach ($aIDs as $iID) {
if ($ids === true) {
$aRet[] = $iID;
} else {
$aRet[] =& KTPermissionDescriptor::get($iID);
}
}
return $aRet;
}
// }}}
// {{{ STATIC: getByUsers
function &getByUsers($aUsers, $aOptions = null) {
$sTable = KTUtil::getTableName('permission_descriptor_users');
if (is_null($aOptions)) {
$aOptions = array();
}
if (count($aUsers) === 0) { return array(); }
$ids = KTUtil::arrayGet($aOptions, 'ids');
$aUserIDs = array();
foreach ($aUsers as $oUser) {
if (is_numeric($oUser)) {
$aUserIDs[] = $oUser;
} else {
$aUserIDs[] = $oUser->getID();
}
}
$sUserIDs = DBUtil::paramArray($aUserIDs);
$sQuery = "SELECT DISTINCT descriptor_id FROM $sTable WHERE user_id IN ( $sUserIDs )";
$aParams = $aUserIDs;
$aIDs = DBUtil::getResultArrayKey(array($sQuery, $aParams), 'descriptor_id');
$aRet = array();
foreach ($aIDs as $iID) {
if ($ids === true) {
$aRet[] = $iID;
} else {
$aRet[] =& KTPermissionDescriptor::get($iID);
}
}
return $aRet;
}
// }}}
// }}}
}
?>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?