$bCreateRule = true; $rsData = $DB->Query("SELECT ID, ACTIVE FROM b_rating_rule WHERE CONDITION_MODULE = 'intranet'"); while ($arRule = $rsData->Fetch()) { if ($arRule["ACTIVE"] == "N") { $DB->Query("DELETE FROM b_rating_rule WHERE ID = " . $arRule["ID"], true); } else { COption::SetOptionString("intranet", "ratingSubordinateId", $arRule['ID']); CRatingRule::Apply($arRule['ID']); $bCreateRule = false; } } // после авторитета if ($bCreateRule) { $dbRes = CLanguage::GetList($by = 'sort', $order = 'asc'); while ($arRes = $dbRes->Fetch()) { if (file_exists(dirname(__FILE__) . '/' . $arRes['LID'] . '/rating.php')) { require dirname(__FILE__) . '/' . $arRes['LID'] . '/rating.php'; } } $arFields = array("ACTIVE" => "Y", "NAME" => $MESS['INTR_INSTALL_RATING_RULE'], "ENTITY_TYPE_ID" => "USER", "CONDITION_NAME" => "SUBORDINATE", "CONDITION_MODULE" => "intranet", "CONDITION_CLASS" => "CRatingRulesIntranet", "CONDITION_METHOD" => "subordinateCheck", "CONDITION_CONFIG" => array("SUBORDINATE" => array()), "ACTION_NAME" => "empty", "ACTION_CONFIG" => array(), "ACTIVATE" => "N", "ACTIVATE_CLASS" => "empty", "ACTIVATE_METHOD" => "empty", "DEACTIVATE" => "N", "DEACTIVATE_CLASS" => "empty ", "DEACTIVATE_METHOD" => "empty", "~CREATED" => $DB->GetNowFunction(), "~LAST_MODIFIED" => $DB->GetNowFunction()); $arFields["CONDITION_CONFIG"] = serialize($arFields["CONDITION_CONFIG"]); $arFields["ACTION_CONFIG"] = serialize($arFields["ACTION_CONFIG"]); $ID = $DB->Add("b_rating_rule", $arFields, array("ACTION_CONFIG", "CONDITION_CONFIG")); COption::SetOptionString("intranet", "ratingSubordinateId", $ID); CRatingRule::Apply($ID); } // recount ratings $rsData = CRatings::GetList(array('ID' => 'ASC'), array()); while ($arRes = $rsData->Fetch()) { CRatings::Calculate($arRes['ID'], true); }
function changeUF($arConfigs) { global $DB; $err_mess = "File: " . __FILE__ . "<br>Function: changeUF<br>Line: "; $ruleId = IntVal(IntVal($arConfigs['ID'])); $entityTypeId = $DB->ForSql($arConfigs['ENTITY_TYPE_ID']); $userFieldId = $DB->ForSql($arConfigs['ACTION_CONFIG']['CHANGE_UF']['UF_ID']); $userFieldValue = $DB->ForSql($arConfigs['ACTION_CONFIG']['CHANGE_UF']['UF_VALUE']); if (!empty($userFieldId)) { $strSql = "UPDATE b_uts_user uts SET uts.{$userFieldId} = '{$userFieldValue}'\n\t\t\t\t\t\tWHERE uts.VALUE_ID IN (\n\t\t\t\t\t\t\tSELECT prv.ENTITY_ID\n\t\t\t\t\t\t\tFROM b_rating_rule_vetting prv\n\t\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\t\tprv.RULE_ID = {$ruleId}\n\t\t\t\t\t\t\tAND prv.ENTITY_TYPE_ID = '{$entityTypeId}'\n\t\t\t\t\t\t\tAND prv.APPLIED = 'N'\n\t\t\t\t\t\t)"; $DB->Query($strSql, false, $err_mess . __LINE__); $strSql = "INSERT INTO b_uts_user (VALUE_ID, {$userFieldId})\n\t\t\t\t\t\tSELECT prv.ENTITY_ID, '{$userFieldValue}' as UF_VALUE\n\t\t\t\t\t\tFROM b_rating_rule_vetting prv\n\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\tprv.RULE_ID = {$ruleId}\n\t\t\t\t\t\tand prv.ENTITY_TYPE_ID = '{$entityTypeId}'\n\t\t\t\t\t\tand prv.ENTITY_ID NOT IN (\n\t\t\t\t\t\t\tSELECT uf.VALUE_ID FROM b_uts_user uf\n\t\t\t\t\t\t)\n\t\t\t\t\t\tand prv.APPLIED = 'N'\n\t\t\t\t\t\tGROUP BY ENTITY_ID\n\t\t\t\t\t\t"; $DB->Query($strSql, false, $err_mess . __LINE__); } CRatingRule::ApplyVetting($arConfigs); return true; }
<td><?php echo GetMessage("RATING_RULE_EDIT_FRM_TYPE_ID"); ?> </td> <td><?php echo SelectBoxFromArray("ENTITY_TYPE_ID", array('reference_id' => $arObjects, 'reference' => $arObjects), $str_ENTITY_TYPE_ID, "", "onChange=\"jsTypeChanged('rating_rule_form')\""); ?> </td> </tr> <? $tabControl->EndCustomField("ENTITY_TYPE_ID"); $tabControl->AddSection("CAT_HOW_ACTIVATE", GetMessage("RATING_RULE_EDIT_CAT_HOW_ACTIVATE")); $tabControl->BeginCustomField("CONDITION_NAME", GetMessage('RATING_RULE_EDIT_FRM_CONDITION_NAME'), true); $arRatingRuleConfigs = CRatingRule::GetRatingRuleConfigs($str_ENTITY_TYPE_ID); $arConditionName = array(); foreach ($arRatingRuleConfigs["CONDITION_CONFIG"] as $configId => $arConfig) { $arConditionName['reference'][] = $arConfig["NAME"]; $arConditionName['reference_id'][] = $arConfig["ID"]; } $arCurrentCondition = $arRatingRuleConfigs["CONDITION_CONFIG"][$str_CONDITION_NAME]; $conditionCount = count($arCurrentCondition['FIELDS']); ?> <tr> <td colspan="2"> <table cellpadding="2" cellspacing="0" border="0" width="100%" class="edit-table"> <tr valign="top" style="" class="adm-detail-required-field"> <td class="field-name" style="vertical-align:middle;" width="40%"> <?php
public static function __CheckFields($arFields) { $aMsg = array(); if (is_set($arFields, "NAME") && trim($arFields["NAME"]) == "") { $aMsg[] = array("id" => "NAME", "text" => GetMessage("RR_GENERAL_ERR_NAME")); } if (is_set($arFields, "ACTIVE") && !($arFields["ACTIVE"] == 'Y' || $arFields["ACTIVE"] == 'N')) { $aMsg[] = array("id" => "ACTIVE", "text" => GetMessage("RR_GENERAL_ERR_ACTIVE")); } if (is_set($arFields, "ENTITY_TYPE_ID")) { $arObjects = CRatingRule::GetRatingRuleObjects(); if (!in_array($arFields['ENTITY_TYPE_ID'], $arObjects)) { $aMsg[] = array("id" => "ENTITY_TYPE_ID", "text" => GetMessage("RR_GENERAL_ERR_ENTITY_TYPE_ID")); } } if (is_set($arFields, "CONDITION_NAME") && trim($arFields["CONDITION_NAME"]) == "") { $aMsg[] = array("id" => "CONDITION_NAME", "text" => GetMessage("RR_GENERAL_ERR_CONDITION_NAME")); } if (is_set($arFields, "ACTION_NAME") && trim($arFields["ACTION_NAME"]) == "") { $aMsg[] = array("id" => "ACTION_NAME", "text" => GetMessage("RR_GENERAL_ERR_ACTION_NAME")); } if (!empty($aMsg)) { $e = new CAdminException($aMsg); $GLOBALS["APPLICATION"]->ThrowException($e); return false; } return true; }
function changeUF($arConfigs) { global $DB; $err_mess = "File: ".__FILE__."<br>Function: changeUF<br>Line: "; $ruleId = IntVal(IntVal($arConfigs['ID'])); $entityTypeId = $DB->ForSql($arConfigs['ENTITY_TYPE_ID']); $userFieldId = $DB->ForSql($arConfigs['ACTION_CONFIG']['CHANGE_UF']['UF_ID']); $userFieldValue = $DB->ForSql($arConfigs['ACTION_CONFIG']['CHANGE_UF']['UF_VALUE']); if (!empty($userFieldId)) { $strSql = "UPDATE b_uts_user uts SET uts.$userFieldId = '$userFieldValue' WHERE uts.VALUE_ID IN ( SELECT prv.ENTITY_ID FROM b_rating_rule_vetting prv WHERE prv.RULE_ID = $ruleId AND prv.ENTITY_TYPE_ID = '$entityTypeId' AND prv.APPLIED = 'N' )"; $DB->Query($strSql, false, $err_mess.__LINE__); $strSql = "INSERT INTO b_uts_user (VALUE_ID, $userFieldId) SELECT prv.ENTITY_ID, '$userFieldValue' as UF_VALUE FROM b_rating_rule_vetting prv WHERE prv.RULE_ID = $ruleId and prv.ENTITY_TYPE_ID = '$entityTypeId' and prv.ENTITY_ID NOT IN ( SELECT uf.VALUE_ID FROM b_uts_user uf ) and prv.APPLIED = 'N' GROUP BY ENTITY_ID "; $DB->Query($strSql, false, $err_mess.__LINE__); } CRatingRule::ApplyVetting($arConfigs); return true; }
} switch ($_REQUEST['action']) { case "reapply": if (!CRatingRule::Apply($ID, true)) { $lAdmin->AddGroupError(GetMessage("RATING_RULE_LIST_ERR_APP"), $ID); } break; case "delete": if (!CRatingRule::Delete($ID)) { $lAdmin->AddGroupError(GetMessage("RATING_RULE_LIST_ERR_DEL"), $ID); } break; } } } $rsData = CRatingRule::GetList(array($by => $order), $arFilter); $rsData = new CAdminResult($rsData, $sTableID); $rsData->NavStart(); $lAdmin->NavText($rsData->GetNavPrint(GetMessage("RATING_RULE_LIST_NAV"))); $aHeaders = array(array("id" => "ID", "content" => "ID", "sort" => "id", "default" => true), array("id" => "NAME", "content" => GetMessage("RATING_RULE_NAME"), "sort" => "name", "default" => true), array("id" => "ACTIVE", "content" => GetMessage("RATING_RULE_ACTIVE"), "sort" => "active", "default" => true), array("id" => "CREATED", "content" => GetMessage("RATING_RULE_CREATED"), "sort" => "created", "default" => false), array("id" => "LAST_MODIFIED", "content" => GetMessage("RATING_RULE_LAST_MODIFIED"), "sort" => "last_modified", "default" => true), array("id" => "LAST_APPLIED", "content" => GetMessage("RATING_RULE_LAST_APPLIED"), "sort" => "last_applied", "default" => true), array("id" => "ENTITY_TYPE_ID", "content" => GetMessage("RATING_RULE_ENTITY_TYPE_ID"), "sort" => "entity_type_id", "default" => false)); $lAdmin->AddHeaders($aHeaders); while ($arRes = $rsData->NavNext(true, "f_")) { $row =& $lAdmin->AddRow($f_ID, $arRes); $row->AddInputField("NAME", array("size" => 20)); $row->AddViewField("NAME", $f_NAME); $row->AddCheckField("ACTIVE", array("size" => 20)); $row->AddViewField("ACTIVE", $f_ACTIVE == "Y" ? GetMessage("RATING_RULE_ACTIVE_YES") : GetMessage("RATING_RULE_ACTIVE_NO")); $row->AddViewField("LAST_CALCULATED", empty($f_LAST_CALCULATED) ? GetMessage("RATING_RULE_STATUS_WAITING") : $f_LAST_CALCULATED); $arActions = array(array("ICON" => "edit", "DEFAULT" => true, "TEXT" => GetMessage("RATING_RULE_LIST_EDIT"), "ACTION" => $lAdmin->ActionRedirect("rating_rule_edit.php?ID=" . $f_ID)), array("ICON" => "edit", "TEXT" => GetMessage("RATING_RULE_LIST_REAPPLY"), "ACTION" => $lAdmin->ActionDoGroup($f_ID, "reapply")), array("ICON" => "delete", "TEXT" => GetMessage("RATING_RULE_LIST_DEL"), "ACTION" => "if(confirm('" . GetMessage("RATING_RULE_LIST_DEL_CONF") . "')) " . $lAdmin->ActionDoGroup($f_ID, "delete"))); $row->AddActions($arActions); }