public static function DoCreateProfile($sName, $sDescription)
 {
     if (is_null(self::$m_aCacheProfiles)) {
         self::$m_aCacheProfiles = array();
         $oFilterAll = new DBObjectSearch('URP_Profiles');
         $oSet = new DBObjectSet($oFilterAll);
         while ($oProfile = $oSet->Fetch()) {
             self::$m_aCacheProfiles[$oProfile->Get('name')] = $oProfile->GetKey();
         }
     }
     $sCacheKey = $sName;
     if (isset(self::$m_aCacheProfiles[$sCacheKey])) {
         return self::$m_aCacheProfiles[$sCacheKey];
     }
     $oNewObj = MetaModel::NewObject("URP_Profiles");
     $oNewObj->Set('name', $sName);
     $oNewObj->Set('description', $sDescription);
     $iId = $oNewObj->DBInsertNoReload();
     self::$m_aCacheProfiles[$sCacheKey] = $iId;
     return $iId;
 }
 public static function DoCreateStimulusGrant($iProfile, $sStimulusCode, $sClass)
 {
     if (is_null(self::$m_aCacheStimulusGrants)) {
         self::$m_aCacheStimulusGrants = array();
         $oFilterAll = new DBObjectSearch('URP_StimulusGrant');
         $oSet = new DBObjectSet($oFilterAll);
         while ($oGrant = $oSet->Fetch()) {
             self::$m_aCacheStimulusGrants[$oGrant->Get('profileid') . '-' . $oGrant->Get('stimulus') . '-' . $oGrant->Get('class')] = $oGrant->GetKey();
         }
     }
     $sCacheKey = "{$iProfile}-{$sStimulusCode}-{$sClass}";
     if (isset(self::$m_aCacheStimulusGrants[$sCacheKey])) {
         return self::$m_aCacheStimulusGrants[$sCacheKey];
     }
     $oNewObj = MetaModel::NewObject("URP_StimulusGrant");
     $oNewObj->Set('profileid', $iProfile);
     $oNewObj->Set('permission', 'yes');
     $oNewObj->Set('class', $sClass);
     $oNewObj->Set('stimulus', $sStimulusCode);
     $iId = $oNewObj->DBInsertNoReload();
     self::$m_aCacheStimulusGrants[$sCacheKey] = $iId;
     return $iId;
 }