• Модуль: forum
  • Путь к файлу: ~/bitrix/modules/forum/classes/general/forum_new.php
  • Класс: CAllForumNew
  • Вызов: CAllForumNew::GetForumRenew
static function GetForumRenew($data)
{
	global $DB, $USER;

	$userId = false;
	if (array_key_exists("USER_ID", $data) && $data["USER_ID"] > 0)
	{
		$userId = intval($data["USER_ID"]);
	}
	else if ($USER->IsAuthorized())
	{
		$userId = $USER->GetID();
	}

	$forums = array_key_exists("FORUM_ID", $data) ? $data["FORUM_ID"] : [];
	$forums = is_array($forums) ? $forums : [$forums];
	array_map("intval", $forums);

	if ($userId === false || sizeof($forums) <= 0)
	{
		return false;
	}

	$sWhere = "(1=1)";
	if (sizeof($forums) > 0)
	{
		$sWhere = '(BF.ID IN ('.implode(", ", $forums).'))';
	}

	$strSql = <<  FUF_ALL.LAST_VISIT)
			)
		LEFT JOIN b_forum_user_topic FUT_RENEW ON (
				FUT_RENEW.FORUM_ID =  BF.ID AND FUT_RENEW.TOPIC_ID =  FT_RENEW.ID AND FUT_RENEW.USER_ID = {$userId})
		WHERE(
			{$sWhere}
			AND
			(
				FUT_RENEW.LAST_VISIT IS NULL
				AND
				(
					(FUF_ALL.LAST_VISIT IS NULL AND FUF.LAST_VISIT IS NULL)
					OR
					(
						FUF.LAST_VISIT IS NOT NULL
						AND
						(FUF.LAST_VISIT <  FT_RENEW.ABS_LAST_POST_DATE OR FUF.LAST_VISIT <  FT_RENEW.LAST_POST_DATE)
					)
					OR
					(
						FUF.LAST_VISIT IS NULL
						AND
						FUF_ALL.LAST_VISIT IS NOT NULL
						AND
						(
							(
								FUF_ALL.LAST_VISIT <  FT_RENEW.ABS_LAST_POST_DATE
								OR
								FUF_ALL.LAST_VISIT <  FT_RENEW.LAST_POST_DATE
							)
						)
					)
				)
			)
			OR (
				FUT_RENEW.LAST_VISIT IS NOT NULL
				AND
				(
					FUT_RENEW.LAST_VISIT <  FT_RENEW.ABS_LAST_POST_DATE
					OR
					FUT_RENEW.LAST_VISIT <  FT_RENEW.LAST_POST_DATE
				)
			)
		)
		GROUP BY BF.ID
SQL;
	$db_res = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__); return $db_res; }