/** * Возвращает список доступных типов для определенного действия * * @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; }