• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/classes/mysql/messages.php
  • Класс: CSocNetMessages
  • Вызов: CSocNetMessages::GetMessagesUsers
static function GetMessagesUsers($userID, $arNavStartParams = false, $online_interval = 120)
{
	global $DB;

	$userID = intval($userID);
	if ($userID <= 0)
		return false;

	$strSql =
		"SELECT U.ID, U.ACTIVE, U.LOGIN, U.NAME, U.LAST_NAME, U.SECOND_NAME, U.PERSONAL_PHOTO, U.PERSONAL_GENDER, COUNT(M.ID) as TOTAL, MAX(M.DATE_CREATE) as MAX_DATE, ".
		"	IF(U.LAST_ACTIVITY_DATE > DATE_SUB(NOW(), INTERVAL ".intval($online_interval)." SECOND), 'Y', 'N') IS_ONLINE, ".
		"	".$DB->DateToCharFunction("MAX(M.DATE_CREATE)", "FULL")." as MAX_DATE_FORMAT, ".
		"	SUM(CASE WHEN M.DATE_VIEW IS NULL AND M.TO_USER_ID = ".$userID." THEN 1 ELSE 0 END) as UNREAD ".
		"FROM b_user U, b_sonet_messages M ".
		"WHERE ".
		"	(M.IS_LOG IS NULL OR NOT M.IS_LOG = 'Y') ".
		"	AND ( ".
		"	M.TO_USER_ID = ".$userID." ".
		"	AND M.FROM_USER_ID = U.ID ".
		"	AND M.TO_DELETED = 'N' ".
		"	OR ".
		"	M.FROM_USER_ID = ".$userID." ".
		"	AND M.TO_USER_ID = U.ID ".
		"	AND M.FROM_DELETED = 'N' ".
		"	) ".
		"GROUP BY U.ID, U.NAME, U.LAST_NAME, U.SECOND_NAME, U.PERSONAL_PHOTO, U.PERSONAL_GENDER ".
		"ORDER BY UNREAD DESC, MAX_DATE DESC ";

	if (is_array($arNavStartParams) && intval($arNavStartParams["nTopCount"]) <= 0)
	{
		$strSql_tmp =
			"SELECT DISTINCT FROM_USER_ID ".
			"FROM b_sonet_messages M ".
			"WHERE ".
				"(M.IS_LOG IS NULL OR NOT M.IS_LOG = 'Y') ".
				"AND M.TO_USER_ID = ".$userID." ".
				"AND M.TO_DELETED = 'N' ".

			"UNION DISTINCT ".

			"SELECT DISTINCT TO_USER_ID ".
			"FROM b_sonet_messages ".
			"WHERE ".
				"(IS_LOG IS NULL OR NOT IS_LOG = 'Y') ".
				"AND FROM_USER_ID = ".$userID." ".
				"AND FROM_DELETED = 'N'";

		$dbRes = $DB->Query($strSql_tmp, false, "File: ".__FILE__."
Line: ".__LINE__); $cnt = 0; if ($dbRes) $cnt = $dbRes->SelectedRowsCount(); $dbRes = new CDBResult(); $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if (is_array($arNavStartParams) && intval($arNavStartParams["nTopCount"]) > 0) $strSql .= "LIMIT ".intval($arNavStartParams["nTopCount"]); $dbRes = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__); } return $dbRes; }