function GetFirstUnread($FID, $TID, $PERMISSION) { $FID = intVal($FID); $TID = intVal($TID); if ($FID <= 0) { return false; } if (strLen($PERMISSION) <= 0) { return false; } $MESSAGE_ID = 0; $TOPIC_ID = 0; $read_forum_cookie = COption::GetOptionString("main", "cookie_name", "BITRIX_SM") . "_FORUM_0"; if (strLen($_SESSION["first_read_forum_" . $FID]) <= 0 || intVal($_SESSION["first_read_forum_" . $FID]) < 0) { if (isset($_COOKIE[$read_forum_cookie]) && strLen($_COOKIE[$read_forum_cookie]) > 0) { $arForumCookie = explode("/", $_COOKIE[$read_forum_cookie]); $i = 0; while ($i < count($arForumCookie)) { if (intVal($arForumCookie[$i]) == $FID) { $iCurFirstReadForum = intVal($arForumCookie[$i + 1]); break; } $i += 2; } } $read_forum_cookie1 = COption::GetOptionString("main", "cookie_name", "BITRIX_SM") . "_FORUM_" . $FID; if (isset($_COOKIE[$read_forum_cookie1]) && intVal($_COOKIE[$read_forum_cookie1]) > 0) { if ($iCurFirstReadForum < intVal($_COOKIE[$read_forum_cookie1])) { $iCurFirstReadForum = intVal($_COOKIE[$read_forum_cookie1]); } } $_SESSION["first_read_forum_" . $FID] = intVal($iCurFirstReadForum); } if (is_null($_SESSION["read_forum_" . $FID]) || strLen($_SESSION["read_forum_" . $FID]) <= 0) { $_SESSION["read_forum_" . $FID] = "0"; } $arFilter = array("FORUM_ID" => $FID); if (intVal($_SESSION["first_read_forum_" . $FID]) > 0) { $arFilter[">ID"] = intVal($_SESSION["first_read_forum_" . $FID]); } if ($_SESSION["read_forum_" . $FID] != "0") { $arFMIDsTmp = explode(",", $_SESSION["read_forum_" . $FID]); if (count($arFMIDsTmp) > 950) { for ($i1 = 0; $i1 < count($arFMIDsTmp); $i1++) { if (intVal($_SESSION["first_read_forum_" . $FID]) < intVal($arFMIDsTmp[$i1])) { $_SESSION["first_read_forum_" . $FID] = intVal($arFMIDsTmp[$i1]); } } $_SESSION["read_forum_" . $FID] = "0"; $arFilter[">ID"] = intVal($_SESSION["first_read_forum_" . $FID]); } else { $arFilter["!@ID"] = $_SESSION["read_forum_" . $FID]; } } if ($PERMISSION <= "Q") { $arFilter["APPROVED"] = "Y"; } if ($TID > 0) { $arFilter["TOPIC_ID"] = $TID; } //$db_res = CForumMessage::GetList(array("ID"=>"ASC"), $arFilter, false, 1); $db_res = CForumMessage::QueryFirstUnread($arFilter); if ($res = $db_res->Fetch()) { $MESSAGE_ID = $res["ID"]; $TOPIC_ID = $res["TOPIC_ID"]; } return array($TOPIC_ID, $MESSAGE_ID); }