function AddComment_Review_CreateRoot_Forum($arElement, $forumID, $bPostFirstMessage = false, $strFirstMessage = "") { if (!CModule::IncludeModule("forum")) { return false; } if ($bPostFirstMessage && strlen($strFirstMessage) <= 0) { return false; } // Add Topic $arUserStart = array("ID" => intVal($arElement["~CREATED_BY"]), "NAME" => $GLOBALS["FORUM_STATUS_NAME"]["guest"]); if ($arUserStart["ID"] > 0) { $res = array(); $db_res = CForumUser::GetListEx(array(), array("USER_ID" => $arElement["~CREATED_BY"])); if ($db_res && ($res = $db_res->Fetch())) { $res["FORUM_USER_ID"] = intVal($res["ID"]); $res["ID"] = $res["USER_ID"]; } else { $db_res = CUser::GetByID($arElement["~CREATED_BY"]); if ($db_res && ($res = $db_res->Fetch())) { $res["SHOW_NAME"] = COption::GetOptionString("forum", "USER_SHOW_NAME", "Y"); $res["USER_PROFILE"] = "N"; } } if (!empty($res)) { $arUserStart = $res; $sName = $res["SHOW_NAME"] == "Y" ? trim($res["NAME"] . " " . $res["LAST_NAME"]) : ""; $arUserStart["NAME"] = empty($sName) ? trim($res["LOGIN"]) : $sName; } } $arUserStart["NAME"] = empty($arUserStart["NAME"]) ? $GLOBALS["FORUM_STATUS_NAME"]["guest"] : $arUserStart["NAME"]; $GLOBALS["DB"]->StartTransaction(); $arFields = array("TITLE" => $arElement["~NAME"], "TAGS" => $arElement["~TAGS"], "FORUM_ID" => $forumID, "USER_START_ID" => $arUserStart["ID"], "USER_START_NAME" => $arUserStart["NAME"], "LAST_POSTER_NAME" => $arUserStart["NAME"], "APPROVED" => "Y", "XML_ID" => "IBLOCK_" . $arElement["ID"]); if (isset($arElement["ENTITY_TYPE"]) && $arElement["ENTITY_TYPE"] == SONET_ENTITY_GROUP && isset($arElement["ENTITY_ID"]) && intval($arElement["ENTITY_ID"]) > 0) { $arFields["SOCNET_GROUP_ID"] = intval($arElement["ENTITY_ID"]); } $TOPIC_ID = CForumTopic::Add($arFields); if ($bPostFirstMessage && intVal($TOPIC_ID) > 0) { if (COption::GetOptionString("forum", "FILTER", "Y") == "Y") { $strFirstMessage = CFilterUnquotableWords::Filter($strFirstMessage); } // Add post as new message $arFields = array("POST_MESSAGE" => $strFirstMessage, "AUTHOR_ID" => $arUserStart["ID"], "AUTHOR_NAME" => $arUserStart["NAME"], "FORUM_ID" => $forumID, "TOPIC_ID" => $TOPIC_ID, "APPROVED" => "Y", "NEW_TOPIC" => "Y", "PARAM1" => "IB", "PARAM2" => intVal($arElement["ID"])); $MID = CForumMessage::Add($arFields, false, array("SKIP_INDEXING" => "Y", "SKIP_STATISTIC" => "N")); if (intVal($MID) <= 0) { $arError[] = array("code" => "message is not added 1", "title" => GetMessage("F_ERR_ADD_MESSAGE")); CForumTopic::Delete($TOPIC_ID); $TOPIC_ID = 0; } elseif ($arParams["SUBSCRIBE_AUTHOR_ELEMENT"] == "Y" && intVal($arResult["ELEMENT"]["~CREATED_BY"]) > 0) { if ($arUserStart["USER_PROFILE"] == "N") { $arUserStart["FORUM_USER_ID"] = CForumUser::Add(array("USER_ID" => $arResult["ELEMENT"]["~CREATED_BY"])); } if (intVal($arUserStart["FORUM_USER_ID"]) > 0) { CForumSubscribe::Add(array("USER_ID" => $arResult["ELEMENT"]["~CREATED_BY"], "FORUM_ID" => $arParams["FORUM_ID"], "SITE_ID" => SITE_ID, "TOPIC_ID" => $TID, "NEW_TOPIC_ONLY" => "N")); BXClearCache(true, "/bitrix/forum/user/" . $arResult["ELEMENT"]["~CREATED_BY"] . "/subscribe/"); // Sorry, Max. } } } elseif (intVal($TOPIC_ID) <= 0) { $GLOBALS["DB"]->Rollback(); return false; } $GLOBALS["DB"]->Commit(); return $TOPIC_ID; }
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; } }
} if ($arAllow["HTML"] != "Y") { $arTopic['MESSAGE'] = strip_tags($arTopic['MESSAGE']); } $arFields = array("POST_MESSAGE" => $arTopic['MESSAGE'], "AUTHOR_ID" => $arUserStart["ID"], "AUTHOR_NAME" => $arUserStart["NAME"], "FORUM_ID" => $arParams["FORUM_ID"], "TOPIC_ID" => $TID, "APPROVED" => "Y", "NEW_TOPIC" => "Y", "PARAM1" => $arParams['ENTITY_TYPE'], "PARAM2" => intVal($arParams["ENTITY_ID"]), "PERMISSION_EXTERNAL" => $arResult['USER']["PERMISSION"], "PERMISSION" => $arResult['USER']["PERMISSION"]); $res = CForumMessage::Add($arFields, false, array("SKIP_INDEXING" => "Y", "SKIP_STATISTIC" => "N")); if (intVal($res) <= 0) { $arError[] = array("code" => "message is not added 1", "title" => GetMessage("F_ERR_ADD_MESSAGE")); CForumTopic::Delete($TID); $TID = 0; } elseif ($arParams["SUBSCRIBE_AUTHOR_ELEMENT"] == "Y" && intVal($arResult["ELEMENT"]["~CREATED_BY"]) > 0) { if ($arUserStart["USER_PROFILE"] == "N") { $arUserStart["FORUM_USER_ID"] = CForumUser::Add(array("USER_ID" => $arResult["ELEMENT"]["~CREATED_BY"])); } if (intVal($arUserStart["FORUM_USER_ID"]) > 0) { CForumSubscribe::Add(array("USER_ID" => $arUserStart["ID"], "FORUM_ID" => $arParams["FORUM_ID"], "SITE_ID" => SITE_ID, "TOPIC_ID" => $TID, "NEW_TOPIC_ONLY" => "N")); BXClearCache(true, "/bitrix/forum/user/" . $arUserStart["ID"] . "/subscribe/"); } } } // Second exit point if (!empty($arError)) { $DB->Rollback(); return false; } else { $DB->Commit(); $arResult["FORUM_TOPIC_ID"] = $TID; } } // Add post comment $arFieldsG = array("POST_MESSAGE" => $arPost["MESSAGE"], "AUTHOR_NAME" => trim($post["REVIEW_AUTHOR"]), "AUTHOR_EMAIL" => $post["REVIEW_EMAIL"], "USE_SMILES" => isset($post["REVIEW_USE_SMILES"]) ? $post["REVIEW_USE_SMILES"] : "N", "PARAM2" => $arParams["ENTITY_ID"], "PERMISSION_EXTERNAL" => $arResult['USER']["PERMISSION"], "PERMISSION" => $arResult['USER']["PERMISSION"]);
$sElementPreview = $arResult["ELEMENT"]["~PREVIEW_TEXT"]; if ($arAllow["HTML"] != "Y") { $sElementPreview = strip_tags($sElementPreview); } $arFields = array("POST_MESSAGE" => str_replace(array("#IMAGE#", "#TITLE#", "#BODY#", "#LINK#"), array($sImage, $arResult["ELEMENT"]["~NAME"], $sElementPreview, $url), $arParams["POST_FIRST_MESSAGE_TEMPLATE"]), "AUTHOR_ID" => $arUserStart["ID"], "AUTHOR_NAME" => $arUserStart["NAME"], "FORUM_ID" => $arParams["FORUM_ID"], "TOPIC_ID" => $TID, "APPROVED" => "Y", "NEW_TOPIC" => "Y", "PARAM1" => "IB", "PARAM2" => intVal($arParams["ELEMENT_ID"])); $MID = CForumMessage::Add($arFields, false, array("SKIP_INDEXING" => "Y", "SKIP_STATISTIC" => "N")); if (intVal($MID) <= 0) { $arError[] = array("code" => "message is not added 1", "title" => GetMessage("F_ERR_ADD_MESSAGE")); CForumTopic::Delete($TID); $TID = 0; } elseif ($arParams["SUBSCRIBE_AUTHOR_ELEMENT"] == "Y" && intVal($arResult["ELEMENT"]["~CREATED_BY"]) > 0) { if ($arUserStart["USER_PROFILE"] == "N") { $arUserStart["FORUM_USER_ID"] = CForumUser::Add(array("USER_ID" => $arResult["ELEMENT"]["~CREATED_BY"])); } if (intVal($arUserStart["FORUM_USER_ID"]) > 0) { CForumSubscribe::Add(array("USER_ID" => $arResult["ELEMENT"]["~CREATED_BY"], "FORUM_ID" => $arParams["FORUM_ID"], "SITE_ID" => SITE_ID, "TOPIC_ID" => $TID, "NEW_TOPIC_ONLY" => "N")); BXClearCache(true, "/bitrix/forum/user/" . $arResult["ELEMENT"]["~CREATED_BY"] . "/subscribe/"); // Sorry, Max. } } } // Second exit point if (!empty($arError)) { $DB->Rollback(); return false; } else { $DB->Commit(); } } // 1.6.1 Add post comment $arFieldsG = array("POST_MESSAGE" => $_POST["REVIEW_TEXT"], "AUTHOR_NAME" => trim($_POST["REVIEW_AUTHOR"]), "AUTHOR_EMAIL" => $_POST["REVIEW_EMAIL"], "USE_SMILES" => $_POST["REVIEW_USE_SMILES"], "PARAM2" => intVal($arParams["ELEMENT_ID"]), "TITLE" => $PRODUCT_NAME);
private function subscribeAuthor($type, $id, $tid) { if ($this->feed->getentity()->getType() == $type && $this->feed->getentity()->getId() == $id) { CForumSubscribe::Add(array("USER_ID" => $this->getUser()->getId(), "FORUM_ID" => $this->arParams["FORUM_ID"], "SITE_ID" => SITE_ID, "TOPIC_ID" => $tid, "NEW_TOPIC_ONLY" => "N")); BXClearCache(true, "/bitrix/forum/user/" . $this->getUser()->getId() . "/subscribe/"); } }