• Модуль: 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; }