예제 #1
0
 /**
  * Возвращает список доступных типов для определенного действия
  *
  * @param ModuleUser_EntityUser $oUser
  * @param string                $sAction
  * @param bool                  $bTypeCodesOnly
  *
  * @return array
  */
 public function GetAllowBlogTypes($oUser, $sAction, $bTypeCodesOnly = false)
 {
     $aFilter = array('exclude_type' => in_array($sAction, array('add', 'list')) ? 'personal' : null, 'is_active' => true);
     if ($sAction && !in_array($sAction, array('add', 'list', 'write'))) {
         return array();
     }
     if (!$oUser) {
         // Если пользователь не задан
         if ($sAction == 'add') {
             $aFilter['allow_add'] = true;
         } elseif ($sAction == 'list') {
             $aFilter['allow_list'] = true;
         }
     } elseif ($oUser && !$oUser->IsAdministrator() && !$oUser->isModerator()) {
         // Если пользователь задан и он не админ, то надо учитывать рейтинг
         if ($sAction == 'add') {
             $aFilter['allow_add'] = true;
             $aFilter['min_rate_add'] = $oUser->GetUserRating();
         } elseif ($sAction == 'list') {
             $aFilter['allow_list'] = true;
             $aFilter['min_rate_list'] = $oUser->GetUserRating();
         } elseif ($sAction == 'write') {
             $aFilter['min_rate_write'] = $oUser->GetUserRating();
         }
     }
     $aBlogTypes = $this->GetBlogTypes($aFilter, $bTypeCodesOnly);
     return $aBlogTypes;
 }