- Модуль: subscribe
- Путь к файлу: ~/bitrix/modules/subscribe/classes/general/subscription.php
- Класс: CSubscriptionGeneral
- Вызов: CSubscriptionGeneral::CheckFields
public function CheckFields(&$arFields, $ID, $SITE_ID=SITE_ID)
{
global $DB, $APPLICATION;
$APPLICATION->ResetException();
$this->LAST_ERROR = "";
$aMsg = array();
if($ID > 0)
{
$arFields["ID"] = $ID;
}
if ($ID > 0)
$db_events = GetModuleEvents("subscribe", "OnStartSubscriptionUpdate", true);
else
$db_events = GetModuleEvents("subscribe", "OnStartSubscriptionAdd", true);
foreach($db_events as $arEvent)
{
if (ExecuteModuleEventEx($arEvent, array(&$arFields, $SITE_ID)) === false)
{
break;
}
}
if(is_set($arFields, "EMAIL"))
{
if($arFields["EMAIL"] == '' || !check_email($arFields["EMAIL"]))
$aMsg[] = array("id"=>"EMAIL", "text"=>GetMessage("class_subscr_addr"));
else
{
$res = $this->GetByEmail($arFields["EMAIL"], intval($arFields["USER_ID"]));
$ar = $res->Fetch();
if($ar && ($ar["ID"] <> intval($ID)))
$aMsg[] = array("id"=>"EMAIL", "text"=>GetMessage("class_subscr_addr2"));
}
}
if(is_set($arFields, "USER_ID"))
{
if(intval($arFields["USER_ID"]) > 0)
{
$res = $DB->Query("SELECT 'x' FROM b_user WHERE ID = ".intval($arFields["USER_ID"]), false, "File: ".__FILE__."
Line: ".__LINE__);
if(!$res->Fetch())
$aMsg[] = array("id"=>"USER_ID", "text"=>GetMessage("class_subscr_user"));
}
}
if ($ID > 0)
$db_events = GetModuleEvents("subscribe", "OnBeforeSubscriptionUpdate", true);
else
$db_events = GetModuleEvents("subscribe", "OnBeforeSubscriptionAdd", true);
foreach($db_events as $arEvent)
{
if (ExecuteModuleEventEx($arEvent, array(&$arFields, $SITE_ID)) === false)
{
$err = $APPLICATION->GetException();
if ($err)
{
$aMsg[] = array("id"=>"", "text"=>$err->GetString());
$APPLICATION->ResetException();
}
else
{
$aMsg[] = array("id"=>"", "text"=>"Unknown error.");
}
break;
}
}
if($ID > 0)
{
unset($arFields["ID"]);
}
if(!empty($aMsg))
{
$e = new CAdminException($aMsg);
$APPLICATION->ThrowException($e);
$this->LAST_ERROR = $e->GetString();
return false;
}
return true;
}