function ForumSubscribeNewMessages($FID, $TID, &$strErrorMessage, &$strOKMessage, $NEW_TOPIC_ONLY = "N", $strSite = false, $SOCNET_GROUP_ID = false) { global $USER; $strSite = $strSite === false ? SITE_ID : $strSite; $FID = IntVal($FID); $TID = IntVal($TID); $arError = array(); $arNote = array(); if (!$USER->IsAuthorized()) { $arError[] = GetMessage("FORUM_SUB_ERR_AUTH"); } elseif ($SOCNET_GROUP_ID == false && !CForumSubscribe::CanUserAddSubscribe($FID, $USER->GetUserGroupArray())) { $arError[] = GetMessage("FORUM_SUB_ERR_PERMS"); } else { $arFields = array("USER_ID" => $USER->GetID(), "FORUM_ID" => $FID, "SITE_ID" => $strSite, "TOPIC_ID" => $TID > 0 ? $TID : false); if ($SOCNET_GROUP_ID > 0) { $arFields['SOCNET_GROUP_ID'] = $SOCNET_GROUP_ID; } $db_res = CForumSubscribe::GetListEx(array(), $arFields); if ($db_res && ($res = $db_res->Fetch())) { $sError = GetMessage("FORUM_SUB_ERR_ALREADY_TOPIC"); if ($TID <= 0) { if ($res["NEW_TOPIC_ONLY"] == "Y") { $sError = GetMessage("FORUM_SUB_ERR_ALREADY_NEW"); if ($NEW_TOPIC_ONLY != $res["NEW_TOPIC_ONLY"]) { $sError = str_replace("#FORUM_NAME#", htmlspecialcharsEx($res["FORUM_NAME"]), GetMessage("FORUM_SUB_ERR_ALREADY_ALL_HELP")); } } else { $sError = GetMessage("FORUM_SUB_ERR_ALREADY_ALL"); if ($NEW_TOPIC_ONLY != $res["NEW_TOPIC_ONLY"]) { $sError = str_replace("#FORUM_NAME#", htmlspecialcharsEx($res["FORUM_NAME"]), GetMessage("FORUM_SUB_ERR_ALREADY_NEW_HELP")); } } } $arError[] = $sError; } else { $arFields["NEW_TOPIC_ONLY"] = $arFields["TOPIC_ID"] !== false ? "N" : $NEW_TOPIC_ONLY; $subid = CForumSubscribe::Add($arFields); if (IntVal($subid) > 0) { if ($TID > 0) { $arNote[] = GetMessage("FORUM_SUB_OK_MESSAGE_TOPIC"); } else { $arNote[] = GetMessage("FORUM_SUB_OK_MESSAGE"); } } else { $arError[] = GetMessage("FORUM_SUB_ERR_UNKNOWN"); } } } if (!empty($arError)) { $strErrorMessage .= implode(".\n", $arError); } if (!empty($arError)) { $strOKMessage .= implode(".\n", $arNote); } if (empty($arError)) { return True; } else { return False; } }