20 ".$DB->DateToCharFunction(
"PR.CREATED").
" CREATED,
21 ".
$DB->DateToCharFunction(
"PR.LAST_MODIFIED").
" LAST_MODIFIED
34 $arSqlSearch = Array();
40 if ((
string)
$val ==
'' ||
$val ==
"NOT_REF")
44 switch (strtoupper(
$key))
50 if(in_array(
$val, Array(
'Y',
'N')))
52 $arSqlSearch[] =
"PR.ACTIVE = '".$val.
"'";
68 $ord = (mb_strtoupper(
$val) <>
"ASC"?
"DESC":
"ASC");
69 switch(mb_strtoupper(
$key))
72 $sOrder .=
", PR.ID ".$ord;
75 $sOrder .=
", PR.NAME ".$ord;
78 $sOrder .=
", PR.CREATED ".$ord;
81 $sOrder .=
", PR.LAST_MODIFIED ".$ord;
84 $sOrder .=
", PR.LAST_APPLIED ".$ord;
87 $sOrder .=
", PR.ACTIVE ".$ord;
89 case "CALCULATION_METHOD":
90 $sOrder .=
", PR.CALCULATION_METHOD ".$ord;
92 case "ENTITY_TYPE_ID":
93 $sOrder .=
", PR.ENTITY_TYPE_ID ".$ord;
99 $sOrder =
"PR.ID DESC";
101 $strSqlOrder =
" ORDER BY ".trim($sOrder,
", ");
106 PR.ID, PR.NAME, PR.ACTIVE, PR.ENTITY_TYPE_ID,
107 ".$DB->DateToCharFunction(
"PR.CREATED").
" CREATED,
108 ".
$DB->DateToCharFunction(
"PR.LAST_APPLIED").
" LAST_APPLIED,
109 ".
$DB->DateToCharFunction(
"PR.LAST_MODIFIED").
" LAST_MODIFIED
134 $bHideAction = isset($arRatingRuleConfigs[
'CONDITION_CONFIG'][
$arFields[
"CONDITION_NAME"]][
'HIDE_ACTION'])
135 && $arRatingRuleConfigs[
'CONDITION_CONFIG'][
$arFields[
"CONDITION_NAME"]][
'HIDE_ACTION'] ==
true?
true:
false;
137 $conditionModuleId = $arRatingRuleConfigs[
'CONDITION_CONFIG'][
$arFields[
"CONDITION_NAME"]][
'MODULE'];
139 "ACTIVE" =>
$arFields[
"ACTIVE"] ==
'Y' ?
'Y' :
'N',
141 "ENTITY_TYPE_ID" =>
$arFields[
"ENTITY_TYPE_ID"],
142 "CONDITION_NAME" =>
$arFields[
"CONDITION_NAME"],
143 "CONDITION_MODULE" => $conditionModuleId <>
''? $conditionModuleId:
'main',
144 "CONDITION_CLASS" => $arRatingRuleConfigs[
'CONDITION_CONFIG'][
$arFields[
"CONDITION_NAME"]][
'CLASS'],
145 "CONDITION_METHOD" => $arRatingRuleConfigs[
'CONDITION_CONFIG'][
$arFields[
"CONDITION_NAME"]][
'METHOD'],
146 "ACTION_NAME" => $bHideAction?
'empty':
$arFields[
"ACTION_NAME"],
147 "ACTIVATE_CLASS" => $bHideAction?
'empty': $arRatingRuleConfigs[
'ACTION_CONFIG'][
$arFields[
"ACTION_NAME"]][
'CLASS'],
148 "ACTIVATE_METHOD" => $bHideAction?
'empty': $arRatingRuleConfigs[
'ACTION_CONFIG'][
$arFields[
"ACTION_NAME"]][
'METHOD'],
149 "DEACTIVATE_CLASS" => $bHideAction?
'empty': $arRatingRuleConfigs[
'ACTION_CONFIG'][
$arFields[
"ACTION_NAME"]][
'CLASS'],
150 "DEACTIVATE_METHOD" => $bHideAction?
'empty': $arRatingRuleConfigs[
'ACTION_CONFIG'][
$arFields[
"ACTION_NAME"]][
'METHOD'],
151 "~CREATED" =>
$DB->GetNowFunction(),
152 "~LAST_MODIFIED" =>
$DB->GetNowFunction(),
154 $ID =
$DB->Add(
"b_rating_rule", $arFields_i);
158 while($arEvent = $db_events->Fetch())
162 "CONDITION_CONFIG" =>
"'".
$DB->ForSQL(serialize(
$arFields[
"CONDITION_CONFIG"])).
"'",
163 "ACTION_CONFIG" => $bHideAction?
"'a:0:{}'":
"'".
$DB->ForSQL(serialize(
$arFields[
"ACTION_CONFIG"])).
"'",
165 $DB->Update(
"b_rating_rule", $arFields_u,
"WHERE ID = ".
$ID);
167 CAgent::AddAgent(
"CRatingRule::Apply($ID);",
"main",
"N", $arRatingRuleConfigs[
'CONDITION'][
$arFields[
"CONDITION_NAME"]][
'REFRESH_TIME'],
"",
"Y",
"");
187 $bHideAction = isset($arRatingRuleConfigs[
'CONDITION_CONFIG'][
$arFields[
"CONDITION_NAME"]][
'HIDE_ACTION'])
188 && $arRatingRuleConfigs[
'CONDITION_CONFIG'][
$arFields[
"CONDITION_NAME"]][
'HIDE_ACTION'] ==
true?
true:
false;
190 $conditionModuleId = $arRatingRuleConfigs[
'CONDITION_CONFIG'][
$arFields[
"CONDITION_NAME"]][
'MODULE'];
192 "ACTIVE" =>
$arFields[
"ACTIVE"] ==
'Y' ?
'Y' :
'N',
194 "ENTITY_TYPE_ID" =>
$arFields[
"ENTITY_TYPE_ID"],
195 "CONDITION_NAME" =>
$arFields[
"CONDITION_NAME"],
196 "CONDITION_MODULE" => $conditionModuleId <>
''? $conditionModuleId:
'main',
197 "CONDITION_CLASS" => $arRatingRuleConfigs[
'CONDITION_CONFIG'][
$arFields[
"CONDITION_NAME"]][
'CLASS'],
198 "CONDITION_METHOD" => $arRatingRuleConfigs[
'CONDITION_CONFIG'][
$arFields[
"CONDITION_NAME"]][
'METHOD'],
199 "ACTION_NAME" => $bHideAction?
'empty':
$arFields[
"ACTION_NAME"],
200 "ACTIVATE_CLASS" => $bHideAction?
'empty': $arRatingRuleConfigs[
'ACTION_CONFIG'][
$arFields[
"ACTION_NAME"]][
'CLASS'],
201 "ACTIVATE_METHOD" => $bHideAction?
'empty': $arRatingRuleConfigs[
'ACTION_CONFIG'][
$arFields[
"ACTION_NAME"]][
'METHOD'],
202 "DEACTIVATE_CLASS" => $bHideAction?
'empty': $arRatingRuleConfigs[
'ACTION_CONFIG'][
$arFields[
"ACTION_NAME"]][
'CLASS'],
203 "DEACTIVATE_METHOD" => $bHideAction?
'empty': $arRatingRuleConfigs[
'ACTION_CONFIG'][
$arFields[
"ACTION_NAME"]][
'METHOD'],
204 "~LAST_MODIFIED" =>
$DB->GetNowFunction(),
210 "ACTIVE" =>
$arFields[
'ACTIVE'] ==
'Y' ?
'Y' :
'N',
212 "~LAST_MODIFIED" =>
$DB->GetNowFunction(),
217 $strUpdate =
$DB->PrepareUpdate(
"b_rating_rule", $arFields_u);
220 $strSql =
"UPDATE b_rating_rule SET ".$strUpdate.
" WHERE ID=".
$ID;
221 if(!
$DB->Query($strSql))
225 if (isset(
$arFields[
"CONDITION_CONFIG"]))
229 while($arEvent = $db_events->Fetch())
233 "CONDITION_CONFIG" =>
"'".
$DB->ForSQL(serialize(
$arFields[
"CONDITION_CONFIG"])).
"'",
234 "ACTION_CONFIG" => $bHideAction?
"'a:0:{}'":
"'".
$DB->ForSQL(serialize(
$arFields[
"ACTION_CONFIG"])).
"'",
236 $DB->Update(
"b_rating_rule", $arFields_u,
"WHERE ID = ".
$ID);
239 CAgent::RemoveAgent(
"CRatingRule::Apply($ID);",
"main");
240 CAgent::AddAgent(
"CRatingRule::Apply($ID);",
"main",
"N", $arRatingRuleConfigs[
'CONDITION_CONFIG'][
$arFields[
"CONDITION_NAME"]][
'REFRESH_TIME'],
"",
"Y",
"");
253 while($arEvent = $db_events->Fetch())
256 $DB->Query(
"DELETE FROM b_rating_rule WHERE ID=$ID");
257 $DB->Query(
"DELETE FROM b_rating_rule_vetting WHERE RULE_ID=$ID");
259 CAgent::RemoveAgent(
"CRatingRule::Apply($ID);",
"main");
272 $arConfigs = $ratingRule->Fetch();
273 if ($arConfigs[
'ACTIVE'] ==
'Y')
275 $arConfigs[
'CONDITION_CONFIG'] = unserialize(
htmlspecialcharsback($arConfigs[
'CONDITION_CONFIG']), [
'allowed_classes' =>
false]);
276 $arConfigs[
'ACTION_CONFIG'] = unserialize(
htmlspecialcharsback($arConfigs[
'ACTION_CONFIG']), [
'allowed_classes' =>
false]);
278 $arConfigs[
'CONDITION_MODULE'] = isset($arConfigs[
'CONDITION_MODULE']) && $arConfigs[
'CONDITION_MODULE'] <>
''? $arConfigs[
'CONDITION_MODULE']:
'main';
279 if(CModule::IncludeModule(mb_strtolower($arConfigs[
'CONDITION_MODULE']))) {
280 if (method_exists($arConfigs[
'CONDITION_CLASS'], $arConfigs[
'CONDITION_METHOD']))
281 call_user_func(
array($arConfigs[
'CONDITION_CLASS'], $arConfigs[
'CONDITION_METHOD']), $arConfigs);
283 $DB->Query(
"DELETE FROM b_rating_rule_vetting WHERE RULE_ID = $ID AND APPLIED = 'Y'");
285 if (method_exists($arConfigs[
'ACTIVATE_CLASS'], $arConfigs[
'ACTIVATE_METHOD']))
286 call_user_func(
array($arConfigs[
'ACTIVATE_CLASS'], $arConfigs[
'ACTIVATE_METHOD']), $arConfigs);
288 $DB->Query(
"UPDATE b_rating_rule SET LAST_APPLIED = ".
$DB->GetNowFunction().
" WHERE ID = $ID");
290 return "CRatingRule::Apply($ID);";
298 $arSqlSearch =
array();
303 if ((
string)
$val ==
'' ||
$val==
"NOT_REF")
307 switch (strtoupper(
$key))
312 case "ENTITY_TYPE_ID":
319 if(in_array(
$val, Array(
'Y',
'N')))
321 $arSqlSearch[] =
"APPLIED = '".$val.
"'";
332 $ord = (mb_strtoupper(
$val) <>
"ASC"?
"DESC":
"ASC");
333 switch(mb_strtoupper(
$key))
336 $sOrder .=
", ID ".$ord;
339 $sOrder .=
", RULE_ID ".$ord;
341 case "ENTITY_TYPE_ID":
342 $sOrder .=
", ENTITY_TYPE_ID ".$ord;
345 $sOrder .=
", ENTITY_ID ".$ord;
348 $sOrder .=
", APPLIED ".$ord;
355 $strSqlOrder =
" ORDER BY ".trim($sOrder,
", ");
357 $strSql =
"SELECT * FROM b_rating_rule_vetting WHERE $strSqlSearch $strSqlOrder";
358 return $DB->Query($strSql);
366 $ruleId = intval($arConfigs[
'ID']);
369 $DB->Query(
"UPDATE b_rating_rule_vetting SET APPLIED = 'Y' WHERE RULE_ID = $ruleId");
377 $arObjects =
array();
380 while($arEvent = $db_events->Fetch())
383 foreach ($arConfig as $OBJ_TYPE)
384 if (!in_array($OBJ_TYPE, $arObjects))
385 $arObjects[] = $OBJ_TYPE;
393 $arConfigs =
array();
396 while($arEvent = $db_events->Fetch())
399 if (is_null($objectType))
401 foreach ($arConfig as $OBJ_TYPE => $TYPE_VALUE)
402 foreach ($TYPE_VALUE as $RULE_TYPE => $RULE_VALUE)
403 foreach ($RULE_VALUE as $VALUE)
405 $arConfigs[$OBJ_TYPE][$RULE_TYPE][$VALUE[
'ID']] = $VALUE;
407 $arConfigs[$OBJ_TYPE][$VALUE[
'ID']] = $VALUE;
411 foreach ($arConfig[$objectType] as $RULE_TYPE => $RULE_VALUE)
413 foreach ($RULE_VALUE as $VALUE)
415 $arConfigs[$RULE_TYPE][$VALUE[
'ID']] = $VALUE;
417 $arConfigs[$VALUE[
'ID']] = $VALUE;
430 $aMsg[] =
array(
"id"=>
"NAME",
"text"=>
GetMessage(
"RR_GENERAL_ERR_NAME"));
432 $aMsg[] =
array(
"id"=>
"ACTIVE",
"text"=>
GetMessage(
"RR_GENERAL_ERR_ACTIVE"));
436 if(!in_array(
$arFields[
'ENTITY_TYPE_ID'], $arObjects))
437 $aMsg[] =
array(
"id"=>
"ENTITY_TYPE_ID",
"text"=>
GetMessage(
"RR_GENERAL_ERR_ENTITY_TYPE_ID"));
440 $aMsg[] =
array(
"id"=>
"CONDITION_NAME",
"text"=>
GetMessage(
"RR_GENERAL_ERR_CONDITION_NAME"));
442 $aMsg[] =
array(
"id"=>
"ACTION_NAME",
"text"=>
GetMessage(
"RR_GENERAL_ERR_ACTION_NAME"));
447 $GLOBALS[
"APPLICATION"]->ThrowException($e);
static GetList($aSort=array(), $arFilter=Array())
static GetRatingRuleObjects()
static GetRatingRuleConfigs($objectType=null, $withRuleType=true)
static __CheckFields($arFields)
static ApplyVetting($arConfigs)
static GetVetting($arFilter, $arSort)
static Update($ID, $arFields)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
$_SERVER["DOCUMENT_ROOT"]
ExecuteModuleEventEx($arEvent, $arParams=[])
htmlspecialcharsback($str)
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
GetMessage($name, $aReplace=null)
if(empty($signedUserToken)) $key
$GLOBALS['_____370096793']