- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/mysql/ratings.php
- Класс: CRatings
- Вызов: CRatings::AutoAssignGroup
static function AutoAssignGroup($groupId, $authorityValueAdd, $authorityValueDelete)
{
global $DB;
$err_mess = (CRatings::err_mess())."
Function: AutoAssignGroup
Line: ";
$groupId = intval($groupId);
if ($groupId == 0)
return false;
$ratingId = CRatings::GetAuthorityRating();
$ratingValueAdd = intval($authorityValueAdd);
$ratingValueDelete = intval($authorityValueDelete);
$sRatingWeightType = COption::GetOptionString("main", "rating_weight_type", "auto");
if ($sRatingWeightType == 'auto')
{
$ratingValueAdd = $ratingValueAdd*COption::GetOptionString("main", "rating_vote_weight", 1);
$ratingValueDelete = $ratingValueDelete*COption::GetOptionString("main", "rating_vote_weight", 1);
}
// remove the group from all users who it is, but you need to remove it
$strSql = "
DELETE
FROM b_user_group
WHERE (USER_ID, GROUP_ID) in (
SELECT
rr.ENTITY_ID as USER_ID
, $groupId as GROUP_ID
FROM
b_rating_results rr
WHERE
rr.RATING_ID = $ratingId
AND rr.CURRENT_VALUE < $ratingValueDelete
)
";
$DB->Query($strSql, false, $err_mess.__LINE__);
// add a group to all users who do not, but you need to add it
$strSql = "
INSERT INTO b_user_group (USER_ID, GROUP_ID)
SELECT
rr.ENTITY_ID, '$groupId'
FROM
b_rating_results rr
LEFT JOIN b_user_group ug ON ug.GROUP_ID = $groupId AND ug.USER_ID = rr.ENTITY_ID
WHERE
rr.RATING_ID = $ratingId
and rr.CURRENT_VALUE >= $ratingValueAdd
and ug.USER_ID IS NULL";
$DB->Query($strSql, false, $err_mess.__LINE__);
return true;
}