- Модуль: forum
- Путь к файлу: ~/bitrix/modules/forum/classes/general/user.php
- Класс: CAllForumUser
- Вызов: CAllForumUser::GetUserPoints
static function GetUserPoints($USER_ID, $arAddParams = array())
{
global $DB;
$USER_ID = intval($USER_ID);
if ($USER_ID <= 0) return 0;
$arAddParams = (is_array($arAddParams) ? $arAddParams : array($arAddParams));
$arAddParams["INCREMENT"] = intval($arAddParams["INCREMENT"] ?? 0);
$arAddParams["DECREMENT"] = intval($arAddParams["DECREMENT"] ?? 0);
$arAddParams["NUM_POSTS"] = (is_set($arAddParams, "NUM_POSTS") ? $arAddParams["NUM_POSTS"] : false);
$arAddParams["RETURN_FETCH"] = (isset($arAddParams["RETURN_FETCH"]) && $arAddParams["RETURN_FETCH"] == "Y" ? "Y" : "N");
$strSql = "
SELECT
(".
($arAddParams["NUM_POSTS"] ? $arAddParams["NUM_POSTS"] : "FU.NUM_POSTS").
($arAddParams["INCREMENT"] > 0 ? "+".$arAddParams["INCREMENT"] : "").
($arAddParams["DECREMENT"] > 0 ? "-".$arAddParams["DECREMENT"] : "").
") AS NUM_POSTS, FP2P.MIN_NUM_POSTS, FP2P.POINTS_PER_POST, SUM(FUP.POINTS) AS POINTS_FROM_USER
FROM
b_forum_user FU
LEFT JOIN b_forum_points2post FP2P ON (FP2P.MIN_NUM_POSTS <= ".
($arAddParams["NUM_POSTS"] ? $arAddParams["NUM_POSTS"] : "FU.NUM_POSTS").
($arAddParams["INCREMENT"] > 0 ? "+".$arAddParams["INCREMENT"] : "").
($arAddParams["DECREMENT"] > 0 ? "-".$arAddParams["DECREMENT"] : "").")
LEFT JOIN b_forum_user_points FUP ON (FUP.TO_USER_ID = FU.USER_ID)
WHERE
FU.user_id = ".$USER_ID."
GROUP BY
".($arAddParams["NUM_POSTS"] ? "" : "FU.NUM_POSTS, ")."FP2P.MIN_NUM_POSTS, FP2P.POINTS_PER_POST
ORDER BY FP2P.MIN_NUM_POSTS DESC";
$db_res = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__);
if ($arAddParams["RETURN_FETCH"] == "Y"):
return $db_res;
elseif ($db_res && ($res = $db_res->Fetch())):
$result = floor(doubleVal($res["POINTS_PER_POST"])*intval($res["NUM_POSTS"]) + intval($res["POINTS_FROM_USER"]));
return $result;
endif;
return false;
}