本文整理汇总了PHP中CRatings::__UpdateComponents方法的典型用法代码示例。如果您正苦于以下问题:PHP CRatings::__UpdateComponents方法的具体用法?PHP CRatings::__UpdateComponents怎么用?PHP CRatings::__UpdateComponents使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CRatings
的用法示例。
在下文中一共展示了CRatings::__UpdateComponents方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: Update
/**
* <p>Метод изменяет параметры рейтинга с идентификатором <i>id</i>. Динамичный метод.</p>
*
*
* @param int $id Идентификатор рейтинга.
*
* @param array $fields Массив значений параметров. В качестве ключей данного массива
* допустимо использовать: <ul> <li> <b>NAME</b> – название рейтинга</li> <li>
* <b>ACTIVE</b> – активность рейтинга (Y|N)</li> <li> <b>ENTITY_ID</b> – оцениваемый
* объект (например: USER, BLOG, и т.д.)</li> <li> <b>CALCULATION_METHOD</b> – тип подсчета
* рейтинга (SUM-суммирование критериев, AVG – средние значение
* критериев)</li> <li> <b>CONFIGS</b> – массив, описывающий критерии
* рейтингования</li> <li> <b>NEW_CALC</b> – обнуляет предыдущее значение
* рейтинга</li> </ul>
*
* @return bool
*
* <h4>Example</h4>
* <pre>
* <?
* // изменим название рейтинга и сделаем его не активным
* $arUpdateRating = array(
* 'ACTIVE' => 'N',
* 'NAME' => 'Рейтинг, измененный через API',
* );
* $result = CRatings::Update(1, $arUpdateRating);
* if ($result)
* echo "Рейтинг успешно обновлен.";
* ?>
* </pre>
*
*
* <h4>See Also</h4>
* <ul> <li><a href="http://dev.1c-bitrix.ru/api_help/main/reference/cratings/add.php">CRating::Add</a></li> </ul><a
* name="examples"></a>
*
*
* @static
* @link http://dev.1c-bitrix.ru/api_help/main/reference/cratings/update.php
* @author Bitrix
*/
public static function Update($ID, $arFields)
{
global $DB, $stackCacheManager;
$ID = intval($ID);
$err_mess = CRatings::err_mess() . "<br>Function: Update<br>Line: ";
// check only general field
if (!CRatings::__CheckFields($arFields)) {
return false;
}
$arFields_u = array("ACTIVE" => $arFields['ACTIVE'] == 'Y' ? 'Y' : 'N', "NAME" => $arFields["NAME"], "ENTITY_ID" => $arFields["ENTITY_ID"], "CALCULATION_METHOD" => $arFields["CALCULATION_METHOD"], "~LAST_MODIFIED" => $DB->GetNowFunction());
$strUpdate = $DB->PrepareUpdate("b_rating", $arFields_u);
if (!$DB->Query("UPDATE b_rating SET " . $strUpdate . " WHERE ID=" . $ID, false, $err_mess . __LINE__)) {
return false;
}
if (!isset($arFields["CONFIGS"])) {
$stackCacheManager->Clear("b_rating");
return true;
}
// queries modules and give them to inspect the field settings
foreach (GetModuleEvents("main", "OnAfterUpdateRating", true) as $arEvent) {
$arFields = ExecuteModuleEventEx($arEvent, array($ID, $arFields));
}
CRatings::__UpdateComponents($ID, $arFields);
$arFields_u = array("POSITION" => "'" . ($arFields['POSITION'] == 'Y' ? 'Y' : 'N') . "'", "AUTHORITY" => "'" . ($arFields['AUTHORITY'] == 'Y' ? 'Y' : 'N') . "'", "CONFIGS" => "'" . $DB->ForSQL(serialize($arFields["CONFIGS"])) . "'");
$DB->Update("b_rating", $arFields_u, "WHERE ID = " . $ID);
if ($arFields['AUTHORITY'] == 'Y') {
CRatings::SetAuthorityRating($ID);
}
if ($arFields['NEW_CALC'] == 'Y') {
$DB->Query("UPDATE b_rating_results SET PREVIOUS_VALUE = 0 WHERE RATING_ID=" . $ID . " and ENTITY_TYPE_ID='" . $DB->ForSql($arFields["ENTITY_ID"]) . "'", false, $err_mess . __LINE__);
}
$strSql = "SELECT COMPLEX_NAME FROM b_rating_component WHERE RATING_ID = {$ID} and ACTIVE = 'N'";
$res = $DB->Query($strSql, false, $err_mess . __LINE__);
$arrRatingComponentId = array();
while ($arRes = $res->Fetch()) {
$arrRatingComponentId[] = $arRes['COMPLEX_NAME'];
}
if (!empty($arrRatingComponentId)) {
$DB->Query("DELETE FROM b_rating_component_results WHERE RATING_ID = {$ID} AND COMPLEX_NAME IN ('" . implode("','", $arrRatingComponentId) . "')", false, $err_mess . __LINE__);
}
CRatings::Calculate($ID, true);
CAgent::RemoveAgent("CRatings::Calculate({$ID});", "main");
$AID = CAgent::AddAgent("CRatings::Calculate({$ID});", "main", "N", 3600, "", "Y", "");
$stackCacheManager->Clear("b_rating");
return true;
}