permissiondescriptor.inc.php.svn-base

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

SVN-BASE
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 + -
显示快捷键?