Exemple #1
0
 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);
 }