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