Exemplo n.º 1
0
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;
    }
}