- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/general/rating_rule.php
- Класс: CRatingRule
- Вызов: CRatingRule::Add
static function Add($arFields)
{
global $DB;
$err_mess = (CRatingRule::err_mess())."
Function: Add
Line: ";
// check only general field
if(!CRatingRule::__CheckFields($arFields))
return false;
if (!(isset($arFields['ENTITY_TYPE_ID']) && $arFields['ENTITY_TYPE_ID'] <> ''))
return false;
$arRatingRuleConfigs = CRatingRule::GetRatingRuleConfigs($arFields["ENTITY_TYPE_ID"]);
$bHideAction = isset($arRatingRuleConfigs['CONDITION_CONFIG'][$arFields["CONDITION_NAME"]]['HIDE_ACTION'])
&& $arRatingRuleConfigs['CONDITION_CONFIG'][$arFields["CONDITION_NAME"]]['HIDE_ACTION'] == true? true: false;
$conditionModuleId = $arRatingRuleConfigs['CONDITION_CONFIG'][$arFields["CONDITION_NAME"]]['MODULE'];
$arFields_i = Array(
"ACTIVE" => $arFields["ACTIVE"] == 'Y' ? 'Y' : 'N',
"NAME" => $arFields["NAME"],
"ENTITY_TYPE_ID" => $arFields["ENTITY_TYPE_ID"],
"CONDITION_NAME" => $arFields["CONDITION_NAME"],
"CONDITION_MODULE" => $conditionModuleId <> ''? $conditionModuleId: 'main',
"CONDITION_CLASS" => $arRatingRuleConfigs['CONDITION_CONFIG'][$arFields["CONDITION_NAME"]]['CLASS'],
"CONDITION_METHOD" => $arRatingRuleConfigs['CONDITION_CONFIG'][$arFields["CONDITION_NAME"]]['METHOD'],
"ACTION_NAME" => $bHideAction? 'empty': $arFields["ACTION_NAME"],
"ACTIVATE_CLASS" => $bHideAction? 'empty': $arRatingRuleConfigs['ACTION_CONFIG'][$arFields["ACTION_NAME"]]['CLASS'],
"ACTIVATE_METHOD" => $bHideAction? 'empty': $arRatingRuleConfigs['ACTION_CONFIG'][$arFields["ACTION_NAME"]]['METHOD'],
"DEACTIVATE_CLASS" => $bHideAction? 'empty': $arRatingRuleConfigs['ACTION_CONFIG'][$arFields["ACTION_NAME"]]['CLASS'],
"DEACTIVATE_METHOD" => $bHideAction? 'empty': $arRatingRuleConfigs['ACTION_CONFIG'][$arFields["ACTION_NAME"]]['METHOD'],
"~CREATED" => $DB->GetNowFunction(),
"~LAST_MODIFIED" => $DB->GetNowFunction(),
);
$ID = $DB->Add("b_rating_rule", $arFields_i);
// queries modules and give them to inspect the field settings
$db_events = GetModuleEvents("main", "OnAfterAddRatingRule");
while($arEvent = $db_events->Fetch())
$arFields = ExecuteModuleEventEx($arEvent, array($ID, $arFields));
$arFields_u = Array(
"CONDITION_CONFIG" => "'".$DB->ForSQL(serialize($arFields["CONDITION_CONFIG"]))."'",
"ACTION_CONFIG" => $bHideAction? "'a:0:{}'": "'".$DB->ForSQL(serialize($arFields["ACTION_CONFIG"]))."'",
);
$DB->Update("b_rating_rule", $arFields_u, "WHERE ID = ".$ID);
CAgent::AddAgent("CRatingRule::Apply($ID);", "main", "N", $arRatingRuleConfigs['CONDITION'][$arFields["CONDITION_NAME"]]['REFRESH_TIME'], "", "Y", "");
return $ID;
}