/** * Helper for the global list and the details of a given class */ function DisplaySubclasses($oPage, $sClass, $sContext) { $aChildClasses = MetaModel::EnumChildClasses($sClass); if (count($aChildClasses) != 0) { $oPage->add("<ul>\n"); $aOrderedClasses = array(); foreach ($aChildClasses as $sClassName) { // Skip indirect childs, they will be handled somewhere else if (MetaModel::GetParentPersistentClass($sClassName) == $sClass) { $aOrderedClasses[$sClassName] = MetaModel::GetName($sClassName); } } // Sort on the display name asort($aOrderedClasses); foreach ($aOrderedClasses as $sClassName => $sDisplayName) { // Skip indirect childs, they will be handled somewhere else if (MetaModel::GetParentPersistentClass($sClassName) == $sClass) { $oPage->add("<li class=\"open\">" . MakeClassHLink($sClassName, $sContext) . "\n"); DisplaySubclasses($oPage, $sClassName, $sContext); $oPage->add("</li>\n"); } } $oPage->add("</ul>\n"); } }
public function GetClassActionGrant($iProfile, $sClass, $sAction) { if (isset($this->m_aClassActionGrants[$iProfile][$sClass][$sAction])) { return $this->m_aClassActionGrants[$iProfile][$sClass][$sAction]; } // Get the permission for this profile/class/action $oSearch = DBObjectSearch::FromOQL_AllData("SELECT URP_ActionGrant WHERE class = :class AND action = :action AND profileid = :profile AND permission = 'yes'"); $oSet = new DBObjectSet($oSearch, array(), array('class' => $sClass, 'action' => $sAction, 'profile' => $iProfile)); if ($oSet->Count() >= 1) { $oGrantRecord = $oSet->Fetch(); } else { $sParentClass = MetaModel::GetParentPersistentClass($sClass); if (empty($sParentClass)) { $oGrantRecord = null; } else { $oGrantRecord = $this->GetClassActionGrant($iProfile, $sParentClass, $sAction); } } $this->m_aClassActionGrants[$iProfile][$sClass][$sAction] = $oGrantRecord; return $oGrantRecord; }
public function GetProfileActionGrant($iProfile, $sClass, $sAction) { $this->LoadActionGrantCache(); // Note: action is forced lowercase to be more flexible (historical bug) $sAction = strtolower($sAction); if (isset($this->m_aClassActionGrants[$iProfile][$sClass][$sAction])) { return $this->m_aClassActionGrants[$iProfile][$sClass][$sAction]; } // Recursively look for the grant record in the class hierarchy $sParentClass = MetaModel::GetParentPersistentClass($sClass); if (empty($sParentClass)) { $iGrant = null; } else { // Recursively look for the grant record in the class hierarchy $iGrant = $this->GetProfileActionGrant($iProfile, $sParentClass, $sAction); } $this->m_aClassActionGrants[$iProfile][$sClass][$sAction] = $iGrant; return $iGrant; }