• Модуль: 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; }