/** 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; }