コード例 #1
0
/** To retreive the subordinate vtiger_roles of the specified parent vtiger_role
 * @param $roleid -- The Role Id:: Type varchar
 * @returns  subordinate vtiger_role array in the following format:
 *     $subordinateRoleArray=(roleid1,roleid2,.......,roleidn);
 */
function getRoleSubordinates($roleId)
{
    $log = vglobal('log');
    $log->debug("Entering getRoleSubordinates(" . $roleId . ") method ...");
    // Look at cache first for information
    $roleSubordinates = VTCacheUtils::lookupRoleSubordinates($roleId);
    if ($roleSubordinates === false) {
        $adb = PearDatabase::getInstance();
        $roleDetails = getRoleInformation($roleId);
        $roleParentSeq = $roleDetails['parentrole'];
        $query = "select * from vtiger_role where parentrole like ? order by parentrole asc";
        $result = $adb->pquery($query, array($roleParentSeq . "::%"));
        $num_rows = $adb->num_rows($result);
        $roleSubordinates = array();
        for ($i = 0; $i < $num_rows; $i++) {
            $roleid = $adb->query_result($result, $i, 'roleid');
            $roleSubordinates[] = $roleid;
        }
        // Update cache for re-use
        VTCacheUtils::updateRoleSubordinates($roleId, $roleSubordinates);
    }
    $log->debug("Exiting getRoleSubordinates method ...");
    return $roleSubordinates;
}