public static function AddBlogPost($arFields) { if (!is_array($_POST)) { $_POST = array(); } $_POST = array_merge($_POST, array("apply" => "Y", "decode" => "N"), $arFields); $strPathToPost = COption::GetOptionString("socialnetwork", "userblogpost_page", false, SITE_ID); $strPathToSmile = COption::GetOptionString("socialnetwork", "smile_page", false, SITE_ID); $BlogGroupID = COption::GetOptionString("socialnetwork", "userbloggroup_id", false, SITE_ID); $arBlogComponentParams = array("IS_REST" => "Y", "ID" => "new", "PATH_TO_POST" => $strPathToPost, "PATH_TO_SMILE" => $strPathToSmile, "GROUP_ID" => $BlogGroupID, "USER_ID" => $GLOBALS["USER"]->GetID(), "USE_SOCNET" => "Y", "MICROBLOG" => "Y"); ob_start(); $result = $GLOBALS["APPLICATION"]->IncludeComponent("bitrix:socialnetwork.blog.post.edit", "", $arBlogComponentParams, false, array("HIDE_ICONS" => "Y")); ob_end_clean(); if (!$result) { throw new Exception('Error'); } else { if (isset($arFields["FILES"]) && \Bitrix\Main\Config\Option::get('disk', 'successfully_converted', false) && CModule::includeModule('disk') && ($storage = \Bitrix\Disk\Driver::getInstance()->getStorageByUserId($GLOBALS["USER"]->GetID())) && ($folder = $storage->getFolderForUploadedFiles($GLOBALS["USER"]->GetID()))) { // upload to storage $arResultFile = array(); foreach ($arFields["FILES"] as $tmp) { $arFile = CRestUtil::saveFile($tmp); if (is_array($arFile)) { $file = $folder->uploadFile($arFile, array('NAME' => $arFile["name"], 'CREATED_BY' => $GLOBALS["USER"]->GetID()), array(), true); if ($file) { $arResultFile[] = \Bitrix\Disk\Uf\FileUserType::NEW_FILE_PREFIX . $file->getId(); } } } if (!empty($arResultFile)) { CBlogPost::Update($result, array("HAS_PROPS" => "Y", "UF_BLOG_POST_FILE" => $arResultFile)); } } return $result; } }
public static function Delete($ID) { global $DB; $ID = IntVal($ID); $arTrackback = CBlogTrackback::GetByID($ID); if ($arTrackback) { CBlogPost::Update($arTrackback["POST_ID"], array("=NUM_TRACKBACKS" => "NUM_TRACKBACKS - 1")); } unset($GLOBALS["BLOG_TRACKBACK"]["BLOG_TRACKBACK_CACHE_" . $ID]); return $DB->Query("DELETE FROM b_blog_trackback WHERE ID = " . $ID . "", true); }
function Add($arFields) { global $DB; $arFields1 = array(); foreach ($arFields as $key => $value) { if (substr($key, 0, 1) == "=") { $arFields1[substr($key, 1)] = $value; unset($arFields[$key]); } } if (!CBlogTrackback::CheckFields("ADD", $arFields)) return false; $arInsert = $DB->PrepareInsert("b_blog_trackback", $arFields); foreach ($arFields1 as $key => $value) { if (strlen($arInsert[0]) > 0) $arInsert[0] .= ", "; $arInsert[0] .= $key; if (strlen($arInsert[1]) > 0) $arInsert[1] .= ", "; $arInsert[1] .= $value; } $ID = False; if (strlen($arInsert[0]) > 0) { $strSql = "INSERT INTO b_blog_trackback(".$arInsert[0].") ". "VALUES(".$arInsert[1].")"; $DB->Query($strSql, False, "File: ".__FILE__."<br>Line: ".__LINE__); $ID = IntVal($DB->LastID()); } if ($ID) { $arTrackback = CBlogTrackback::GetByID($ID); CBlogPost::Update($arTrackback["POST_ID"], array("=NUM_TRACKBACKS" => "NUM_TRACKBACKS + 1")); } return $ID; }
function Add($arFields) { global $DB; $arFields1 = array(); foreach ($arFields as $key => $value) { if (substr($key, 0, 1) == "=") { $arFields1[substr($key, 1)] = $value; unset($arFields[$key]); } } if (!CBlogTrackback::CheckFields("ADD", $arFields)) { return false; } $arInsert = $DB->PrepareInsert("b_blog_trackback", $arFields); foreach ($arFields1 as $key => $value) { if (strlen($arInsert[0]) > 0) { $arInsert[0] .= ", "; } $arInsert[0] .= $key; if (strlen($arInsert[1]) > 0) { $arInsert[1] .= ", "; } $arInsert[1] .= $value; } $ID = False; if (strlen($arInsert[0]) > 0) { $ID = IntVal($DB->NextID("SQ_B_BLOG_TRACKBACK")); $strSql = "INSERT INTO b_blog_trackback(ID, " . $arInsert[0] . ") " . "VALUES(" . $ID . ", " . $arInsert[1] . ")"; $arBinds = array(); if (is_set($arFields, "PREVIEW_TEXT")) { $arBinds["PREVIEW_TEXT"] = $arFields["PREVIEW_TEXT"]; } $DB->QueryBind($strSql, $arBinds); } if ($ID) { $arTrackback = CBlogTrackback::GetByID($ID); CBlogPost::Update($arTrackback["POST_ID"], array("=NUM_TRACKBACKS" => "NUM_TRACKBACKS + 1")); } return $ID; }
public function UnBind() { if (!$this->IsAvailable()) { return false; } //Comment doesn't exists $arComment = $this->Get(); if (!$arComment) { return false; } $arIdea = CBlogPost::GetList(array(), array("ID" => $arComment["POST_ID"]), false, false, array("ID", CIdeaManagment::UFAnswerIdField))->Fetch(); if ($arIdea) { if (!is_array($arIdea[CIdeaManagment::UFAnswerIdField])) { $arIdea[CIdeaManagment::UFAnswerIdField] = array(); } $arIdea[CIdeaManagment::UFAnswerIdField] = array_unique($arIdea[CIdeaManagment::UFAnswerIdField]); $key = array_search($arComment["ID"], $arIdea[CIdeaManagment::UFAnswerIdField]); if (is_numeric($key)) { unset($arIdea[CIdeaManagment::UFAnswerIdField][$key], $arIdea["ID"]); return CBlogPost::Update($arComment["POST_ID"], $arIdea) > 0; } } return false; }
$arBlogPostId = array(); foreach ($arBlogPostFields as $BlogPostFields) { $arBlogPostId[] = CBlogPost::Add($BlogPostFields); } foreach ($arBlogPostId as $key => $BlogPostId) { if (!is_array($categoryID[$key])) { continue; } foreach ($categoryID[$key] as $v) { CBlogPostCategory::Add(array("BLOG_ID" => $blogID, "POST_ID" => $BlogPostId, "CATEGORY_ID" => $v)); } } //Post Comments $arBlogCommentFields = array(); $arBlogCommentFields[] = array("TITLE" => '', "POST_TEXT" => GetMessage("IDEA_BLOG_DEMO_COMMENT_BODY_1"), "BLOG_ID" => $blogID, "POST_ID" => $arBlogPostId[0], "PARENT_ID" => 0, "AUTHOR_ID" => 1, "DATE_CREATE" => ConvertTimeStamp(false, "FULL"), "AUTHOR_IP" => "192.168.0.108", "PATH" => "/services/idea/#post_id#/?commentId=#comment_id###comment_id#"); $arBlogCommentFields[] = array("TITLE" => '', "POST_TEXT" => GetMessage("IDEA_BLOG_DEMO_COMMENT_BODY_2"), "BLOG_ID" => $blogID, "POST_ID" => $arBlogPostId[0], "PARENT_ID" => 0, "AUTHOR_ID" => 1, "DATE_CREATE" => ConvertTimeStamp(false, "FULL"), "AUTHOR_IP" => "192.168.0.108", "PATH" => "/services/idea/#post_id#/?commentId=#comment_id###comment_id#"); $arCommentId = array(); foreach ($arBlogCommentFields as $BlogCommentFields) { $arCommentId[] = CBlogComment::Add($BlogCommentFields); } if ($arBlogPost = CBlogPost::GetList(array(), array("BLOG_ID" => $blogID, "ID" => $arBlogPostId[0]), false, false, array("ID", CIdeaManagment::UFAnswerIdField, CIdeaManagment::UFStatusField))->Fetch()) { //if Empty value make an array if (!is_array($arBlogPost[CIdeaManagment::UFAnswerIdField])) { $arBlogPost[CIdeaManagment::UFAnswerIdField] = array(); } $arBlogPost[CIdeaManagment::UFAnswerIdField][] = $arCommentId[1]; unset($arBlogPost["ID"]); CBlogPost::Update($arBlogPostId[0], $arBlogPost); } //Replace in file CWizardUtil::ReplaceMacros(WIZARD_SITE_PATH . "/services/idea/index.php", array("IDEA_BLOG_CODE" => $IdeaBlogUrl, "IDEA_BIND_STATUS_DEFAULT" => $arUFIdByName["NEW"]));
} else { if (CBlogPost::GetByID($postId)) { if ($_GET["del_id"] > 0) { if (!CBlogPost::CanUserDeletePost(IntVal($_GET["del_id"]), $user_id)) { $arResultNFCache["ERROR_MESSAGE"][] = GetMessage("BLOG_BLOG_BLOG_MES_DEL_NO_RIGHTS"); } else { if (!CBlogPost::Delete($postId)) { $arResultNFCache["ERROR_MESSAGE"][] = GetMessage("BLOG_BLOG_BLOG_MES_DEL_ERROR"); } else { CIdeaManagment::getInstance()->Notification(array("TYPE" => "IDEA", "ID" => $postId))->getSonetNotify()->Remove(); } } } else { if ($arResult["PostPerm"] < BLOG_PERMS_MODERATE) { $arResultNFCache["ERROR_MESSAGE"][] = $_GET["hide_id"] > 0 ? GetMessage("BLOG_BLOG_BLOG_MES_HIDE_NO_RIGHTS") : GetMessage("IDEA_BLOG_BLOG_MES_SHOW_NO_RIGHTS"); } elseif (!CBlogPost::Update($postId, array("PUBLISH_STATUS" => $_GET["hide_id"] > 0 ? BLOG_PUBLISH_STATUS_READY : BLOG_PUBLISH_STATUS_PUBLISH))) { $arResultNFCache["ERROR_MESSAGE"][] = $_GET["hide_id"] > 0 ? GetMessage("BLOG_BLOG_BLOG_MES_HIDE_ERROR") : GetMessage("BLOG_BLOG_BLOG_MES_SHOW_ERROR"); } } if (empty($arResultNFCache["ERROR_MESSAGE"])) { if (intval($_GET["hide_id"]) > 0 || intval($_GET["show_id"]) > 0) { $Notify = CIdeaManagment::getInstance()->Notification(array("ID" => $postId)); if (intval($_GET["hide_id"]) > 0) { $Notify->getSonetNotify()->HideMessage(); } else { $Notify->getSonetNotify()->ShowMessage(); } } BXClearCache(True, "/" . SITE_ID . "/idea/" . $arResult["BLOG"]["ID"] . "/first_page/"); BXClearCache(True, "/" . SITE_ID . "/idea/" . $arResult["BLOG"]["ID"] . "/pages/"); BXClearCache(True, "/" . SITE_ID . "/idea/" . $arResult["BLOG"]["ID"] . "/post/" . $postId . "/");
private function InstallBlogComment() { global $USER; $arBlogComments = $this->arResult["INSTALLATION"]["BLOG_COMMENT_ID"] = array(); if ($this->arResult["INSTALLATION"]["BLOG_POST_ID"]["NY"]) { $arBlogComments["COMMON"] = array("TITLE" => '', "POST_TEXT" => GetMessage("IDEA_BLOG_COMMENT_TEXT_1"), "BLOG_ID" => $this->arResult["INSTALLATION"]["BLOG_ID"], "POST_ID" => $this->arResult["INSTALLATION"]["BLOG_POST_ID"]["NY"], "PARENT_ID" => 0, "AUTHOR_ID" => $USER->GetID(), "DATE_CREATE" => ConvertTimeStamp(false, "FULL"), "PATH" => $this->PublicDir . "#post_id#/?commentId=#comment_id###comment_id#"); } if ($this->arResult["INSTALLATION"]["BLOG_POST_ID"]["NY"]) { $arBlogComments["OFFICIAL"] = array("TITLE" => '', "POST_TEXT" => GetMessage("IDEA_BLOG_COMMENT_TEXT_2"), "BLOG_ID" => $this->arResult["INSTALLATION"]["BLOG_ID"], "POST_ID" => $this->arResult["INSTALLATION"]["BLOG_POST_ID"]["NY"], "PARENT_ID" => 0, "AUTHOR_ID" => $USER->GetID(), "DATE_CREATE" => ConvertTimeStamp(false, "FULL"), "PATH" => $this->PublicDir . "#post_id#/"); } foreach ($arBlogComments as $key => $BlogComment) { $this->arResult["INSTALLATION"]["BLOG_COMMENT_ID"][$key] = CBlogComment::Add($BlogComment); //Make offical answer if ($key == "OFFICIAL" && $this->arResult["INSTALLATION"]["BLOG_COMMENT_ID"][$key] > 0) { if ($arBlogPost = CBlogPost::GetList(array(), array("BLOG_ID" => $this->arResult["INSTALLATION"]["BLOG_ID"], "ID" => $this->arResult["INSTALLATION"]["BLOG_POST_ID"]["NY"]), false, false, array("ID", CIdeaManagment::UFAnswerIdField, CIdeaManagment::UFStatusField))->Fetch()) { //if Empty value make an array if (!is_array($arBlogPost[CIdeaManagment::UFAnswerIdField])) { $arBlogPost[CIdeaManagment::UFAnswerIdField] = array(); } $arBlogPost[CIdeaManagment::UFAnswerIdField][] = $this->arResult["INSTALLATION"]["BLOG_COMMENT_ID"][$key]; unset($arBlogPost["ID"]); CBlogPost::Update($this->arResult["INSTALLATION"]["BLOG_POST_ID"]["NY"], $arBlogPost); } } } }
function Update($ID, $arFields) { global $DB; $ID = IntVal($ID); if (strlen($arFields["PATH"]) > 0) { $arFields["PATH"] = str_replace("#comment_id#", $ID, $arFields["PATH"]); } $arFields1 = array(); foreach ($arFields as $key => $value) { if (substr($key, 0, 1) == "=") { $arFields1[substr($key, 1)] = $value; unset($arFields[$key]); } } if (!CBlogComment::CheckFields("UPDATE", $arFields, $ID)) { return false; } elseif (!$GLOBALS["USER_FIELD_MANAGER"]->CheckFields("BLOG_COMMENT", $ID, $arFields)) { return false; } $db_events = GetModuleEvents("blog", "OnBeforeCommentUpdate"); while ($arEvent = $db_events->Fetch()) { if (ExecuteModuleEventEx($arEvent, array($ID, &$arFields)) === false) { return false; } } $strUpdate = $DB->PrepareUpdate("b_blog_comment", $arFields); foreach ($arFields1 as $key => $value) { if (strlen($strUpdate) > 0) { $strUpdate .= ", "; } $strUpdate .= $key . "=" . $value . " "; } if (strlen($strUpdate) > 0) { if (is_set($arFields["PUBLISH_STATUS"]) && strlen($arFields["PUBLISH_STATUS"]) > 0) { $arComment = CBlogComment::GetByID($ID); if ($arComment["PUBLISH_STATUS"] == BLOG_PUBLISH_STATUS_PUBLISH && $arFields["PUBLISH_STATUS"] != BLOG_PUBLISH_STATUS_PUBLISH) { CBlogPost::Update($arComment["POST_ID"], array("=NUM_COMMENTS" => "NUM_COMMENTS - 1")); } elseif ($arComment["PUBLISH_STATUS"] != BLOG_PUBLISH_STATUS_PUBLISH && $arFields["PUBLISH_STATUS"] == BLOG_PUBLISH_STATUS_PUBLISH) { CBlogPost::Update($arComment["POST_ID"], array("=NUM_COMMENTS" => "NUM_COMMENTS + 1")); } } $strSql = "UPDATE b_blog_comment SET " . "\t" . $strUpdate . " " . "WHERE ID = " . $ID . " "; $DB->Query($strSql, False, "File: " . __FILE__ . "<br>Line: " . __LINE__); unset($GLOBALS["BLOG_COMMENT"]["BLOG_COMMENT_CACHE_" . $ID]); $GLOBALS["USER_FIELD_MANAGER"]->Update("BLOG_COMMENT", $ID, $arFields); $arComment = CBlogComment::GetByID($ID); $arBlog = CBlog::GetByID($arComment["BLOG_ID"]); if ($arBlog["USE_SOCNET"] == "Y") { $arFields["SC_PERM"] = CBlogComment::GetSocNetCommentPerms($arComment["POST_ID"]); } $db_events = GetModuleEvents("blog", "OnCommentUpdate"); while ($arEvent = $db_events->Fetch()) { ExecuteModuleEventEx($arEvent, array($ID, &$arFields)); } if (CModule::IncludeModule("search")) { $newPostPerms = CBlogUserGroup::GetGroupPerms(1, $arComment["BLOG_ID"], $arComment["POST_ID"], BLOG_PERMS_POST); if ($arBlog["SEARCH_INDEX"] != "Y" || $arComment["PUBLISH_STATUS"] != BLOG_PUBLISH_STATUS_PUBLISH) { CSearch::Index("blog", "C" . $ID, array("TITLE" => "", "BODY" => "")); } else { $arGroup = CBlogGroup::GetByID($arBlog["GROUP_ID"]); if (strlen($arFields["PATH"]) > 0) { $arFields["PATH"] = str_replace("#comment_id#", $ID, $arFields["PATH"]); $arPostSite = array($arGroup["SITE_ID"] => $arFields["PATH"]); } elseif (strlen($arComment["PATH"]) > 0) { $arComment["PATH"] = str_replace("#comment_id#", $ID, $arComment["PATH"]); $arPostSite = array($arGroup["SITE_ID"] => $arComment["PATH"]); } else { $arPostSite = array($arGroup["SITE_ID"] => CBlogPost::PreparePath($arBlog["URL"], $arComment["POST_ID"], $arGroup["SITE_ID"], false, $arBlog["OWNER_ID"], $arBlog["SOCNET_GROUP_ID"])); } $searchContent = blogTextParser::killAllTags($arComment["POST_TEXT"]); $searchContent .= "\r\n" . $GLOBALS["USER_FIELD_MANAGER"]->OnSearchIndex("BLOG_COMMENT", $arComment["ID"]); $authorName = ""; if (IntVal($arComment["AUTHOR_ID"]) > 0) { $dbUser = CUser::GetByID($arComment["AUTHOR_ID"]); if ($arUser = $dbUser->Fetch()) { $arTmpUser = array("NAME" => $arUser["NAME"], "LAST_NAME" => $arUser["LAST_NAME"], "SECOND_NAME" => $arUser["SECOND_NAME"], "LOGIN" => $arUser["LOGIN"]); $authorName = CUser::FormatName(CSite::GetNameFormat(), $arTmpUser, false, false); } } elseif (strlen($arComment["AUTHOR_NAME"]) > 0) { $authorName = $arComment["AUTHOR_NAME"]; } if (strlen($authorName) > 0) { $searchContent .= "\r\n" . $authorName; } $arSearchIndex = array("SITE_ID" => $arPostSite, "LAST_MODIFIED" => $arComment["DATE_CREATE"], "PARAM1" => "COMMENT", "PARAM2" => $arComment["BLOG_ID"] . "|" . $arComment["POST_ID"], "PERMISSIONS" => array(2), "TITLE" => $arComment["TITLE"], "BODY" => $searchContent, "USER_ID" => IntVal($arComment["AUTHOR_ID"]) > 0 ? $arComment["AUTHOR_ID"] : false, "ENTITY_TYPE_ID" => "BLOG_COMMENT", "ENTITY_ID" => $arComment["ID"]); if ($arBlog["USE_SOCNET"] == "Y") { if (is_array($arFields["SC_PERM"])) { $arSearchIndex["PERMISSIONS"] = $arFields["SC_PERM"]; } } if (strlen($arComment["TITLE"]) <= 0) { //$arPost = CBlogPost::GetByID($arComment["POST_ID"]); $arSearchIndex["TITLE"] = substr($arSearchIndex["BODY"], 0, 100); } CSearch::Index("blog", "C" . $ID, $arSearchIndex, True); } } return $ID; } return False; }
} $arFieldsHave = array(); if ($arPost["HAS_IMAGES"] == "") { $arFieldsHave["HAS_IMAGES"] = $bHasImg ? "Y" : "N"; } if ($arPost["HAS_TAGS"] == "") { $arFieldsHave["HAS_TAGS"] = $bHasTag ? "Y" : "N"; } if ($arPost["HAS_PROPS"] == "") { $arFieldsHave["HAS_PROPS"] = $bHasProps ? "Y" : "N"; } if ($arPost["HAS_SOCNET_ALL"] == "") { $arFieldsHave["HAS_SOCNET_ALL"] = $bHasOnlyAll ? "Y" : "N"; } if (!empty($arFieldsHave)) { CBlogPost::Update($arPost["ID"], $arFieldsHave); } if ($bAll || $arPost["HAS_SOCNET_ALL"] == "Y") { $arResult["Post"]["HAVE_ALL_IN_ADR"] = "Y"; } if ($arParams["CACHE_TIME"] > 0) { $arCacheData = array("templateCachedData" => $this->GetTemplateCachedData(), "Post" => $arResult["Post"], "images" => $arResult["images"], "Category" => $arResult["Category"], "GRATITUDE" => $arResult["GRATITUDE"], "POST_PROPERTIES" => $arResult["POST_PROPERTIES"], "arUser" => $arResult["arUser"]); if (defined("BX_COMP_MANAGED_CACHE")) { $GLOBALS["CACHE_MANAGER"]->EndTagCache(); } $cache->EndDataCache($arCacheData); } } $arResult["arUser"]["urlToPostImportant"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_POST_IMPORTANT"], array("user_id" => $arPost["AUTHOR_ID"])); $arResult["CanComment"] = $GLOBALS["USER"]->IsAuthorized(); $arResult["dest_users"] = array();
public static function Delete($ID) { global $DB; $ID = IntVal($ID); $arResult = CBlogComment::GetByID($ID); foreach(GetModuleEvents("blog", "OnBeforeCommentDelete", true) as $arEvent) { if (ExecuteModuleEventEx($arEvent, Array($ID))===false) return false; } if ($arResult) { $DB->Query( "UPDATE b_blog_comment SET ". " PARENT_ID = ".((IntVal($arResult["PARENT_ID"]) > 0) ? IntVal($arResult["PARENT_ID"]) : "null")." ". "WHERE PARENT_ID = ".$ID." ". " AND BLOG_ID = ".IntVal($arResult["BLOG_ID"])." ". " AND POST_ID = ".IntVal($arResult["POST_ID"])." ", true ); if($arResult["PUBLISH_STATUS"] == BLOG_PUBLISH_STATUS_PUBLISH) CBlogPost::Update($arResult["POST_ID"], array("=NUM_COMMENTS" => "NUM_COMMENTS - 1")); $res = CBlogImage::GetList(array(), array("BLOG_ID" => $arResult["BLOG_ID"], "POST_ID"=>$arResult["POST_ID"], "IS_COMMENT" => "Y", "COMMENT_ID" => $ID)); while($aImg = $res->Fetch()) CBlogImage::Delete($aImg['ID']); $GLOBALS["USER_FIELD_MANAGER"]->Delete("BLOG_COMMENT", $ID); } unset($GLOBALS["BLOG_COMMENT"]["BLOG_COMMENT_CACHE_".$ID]); foreach(GetModuleEvents("blog", "OnCommentDelete", true) as $arEvent) ExecuteModuleEventEx($arEvent, Array($ID)); if (CModule::IncludeModule("search")) { CSearch::Index("blog", "C".$ID, array( "TITLE" => "", "BODY" => "" ) ); } return $DB->Query("DELETE FROM b_blog_comment WHERE ID = ".$ID."", true); }
public function SetStatus($StatusId) { if (!$this->IsAvailable()) { return false; } $arStatusList = $this->GetStatusList(); $arStatusListXML = $this->GetStatusList(true); $arPost = CBlogPost::GetList(array(), array("ID" => $this->IdeaId), false, false, array("ID", CIdeaManagment::UFStatusField))->Fetch(); $bUpdate = false; //Get Status ID from XML List if (array_key_exists($StatusId, $arStatusListXML)) { $StatusId = $arStatusListXML[$StatusId]["ID"]; } //Status Exists and not current if (array_key_exists($StatusId, $arStatusList)) { $bUpdate = $arPost[CIdeaManagment::UFStatusField] != $StatusId; } if ($arPost && $bUpdate) { return CBlogPost::Update($this->IdeaId, array(CIdeaManagment::UFStatusField => $StatusId)); } return false; }
} else { $arResult["ERROR_MESSAGE"][] = GetMessage("BLOG_BLOG_BLOG_MES_DEL_NO_RIGHTS"); } } else { $arResult["ERROR_MESSAGE"][] = GetMessage("BLOG_BLOG_SESSID_WRONG"); } } } elseif (IntVal($_GET["pub_id"]) > 0) { if ($_GET["success"] == "Y") { $arResult["OK_MESSAGE"][] = GetMessage("BLOG_BLOG_BLOG_MES_PUB"); } else { if (check_bitrix_sessid()) { $pub_id = IntVal($_GET["pub_id"]); if ($arPost = CBlogPost::GetByID($pub_id)) { if ($arPost["AUTHOR_ID"] == $user_id && $arPost["PUBLISH_STATUS"] != BLOG_PUBLISH_STATUS_PUBLISH) { if (CBlogPost::Update($pub_id, array("PUBLISH_STATUS" => BLOG_PUBLISH_STATUS_PUBLISH, "=DATE_PUBLISH" => $DB->GetNowFunction()))) { $arParamsNotify = array("bSoNet" => true, "allowVideo" => $arResult["allowVideo"], "PATH_TO_SMILE" => $arParams["PATH_TO_SMILE"], "PATH_TO_POST" => $arParams["PATH_TO_POST"], "SOCNET_GROUP_ID" => $arParams["SOCNET_GROUP_ID"], "user_id" => $arParams["USER_ID"], "NAME_TEMPLATE" => $arParams["NAME_TEMPLATE"], "SHOW_LOGIN" => $arParams["SHOW_LOGIN"]); CBlogPost::Notify($arPost, false, $arParamsNotify); $socnetRights = CBlogPost::GetSocNetPermsCode($arPost["ID"]); $arFieldsIM = array("TYPE" => "POST", "TITLE" => $arPost["TITLE"], "URL" => CComponentEngine::MakePathFromTemplate(htmlspecialcharsBack($arParams["PATH_TO_POST"]), array("post_id" => $arPost["ID"], "user_id" => $arParams["USER_ID"])), "ID" => $arPost["ID"], "FROM_USER_ID" => $arParams["USER_ID"], "TO_USER_ID" => array(), "TO_SOCNET_RIGHTS" => $socnetRights, "TO_SOCNET_RIGHTS_OLD" => array()); CBlogPost::NotifyIm($arFieldsIM); LocalRedirect($APPLICATION->GetCurPageParam("pub_id=" . $pub_id . "&success=Y", array("del_id", "pub_id", "sessid", "success"))); } else { $arResult["ERROR_MESSAGE"][] = GetMessage("BLOG_BLOG_BLOG_MES_PUB_ERROR"); } } } else { $arResult["ERROR_MESSAGE"][] = GetMessage("BLOG_BLOG_BLOG_MES_PUB_NO_RIGHTS"); } } else { $arResult["ERROR_MESSAGE"][] = GetMessage("BLOG_BLOG_SESSID_WRONG");
if (empty($arCatBlogCopy[ToLower($arCat["NAME"])])) { $v = CBlogCategory::Add(array("BLOG_ID" => $arCopyBlog["ID"], "NAME" => $arCat["NAME"])); } else { $v = $arCatBlogCopy[ToLower($arCat["NAME"])]; } CBlogPostCategory::Add(array("BLOG_ID" => $arCopyBlog["ID"], "POST_ID" => $copyID, "CATEGORY_ID" => $v)); $arCopyCat[] = $v; } if (!empty($arCopyCat)) { $arCopyPostUpdate["CATEGORY_ID"] = implode(",", $arCopyCat); } if ($_POST["move2blogcopy"] == "Y") { $arCopyPostUpdate["NUM_COMMENTS"] = 0; } if (!empty($arCopyPostUpdate)) { $copyID = CBlogPost::Update($copyID, $arCopyPostUpdate); $arCopyPost = CBlogPost::GetByID($copyID); } if ($_POST["move2blogcopy"] != "Y") { if (CBlogPost::CanUserDeletePost($arParams["ID"], $user_id)) { $dbC = CBlogComment::GetList(array("ID" => "ASC"), array("BLOG_ID" => $arBlog["ID"], "POST_ID" => $arParams["ID"]), false, false, array("PATH", "PUBLISH_STATUS", "POST_TEXT", "TITLE", "DATE_CREATE", "AUTHOR_IP1", "AUTHOR_IP", "AUTHOR_EMAIL", "AUTHOR_NAME", "AUTHOR_ID", "PARENT_ID", "POST_ID", "BLOG_ID", "ID")); while ($arC = $dbC->Fetch()) { $arCTmp = array("BLOG_ID" => $arCopyBlog["ID"], "POST_ID" => $copyID); CBlogComment::Update($arC["ID"], $arCTmp); } $arFilter = array("POST_ID" => $arParams["ID"], "BLOG_ID" => $arBlog["ID"], "IS_COMMENT" => "Y"); $res = CBlogImage::GetList(array("ID" => "ASC"), $arFilter); while ($arImg = $res->GetNext()) { $arNewImg = array("BLOG_ID" => $arCopyBlog["ID"], "POST_ID" => $copyID); CBlogImage::Update($arImg["ID"], $arNewImg); }
$CurPost = CBlogPost::GetByID($arPost["ID"]); $CurPost = CBlogTools::htmlspecialcharsExArray($CurPost); if ($bFirst) { $CurPost["FIRST"] = "Y"; } $bFirst = false; $CurPost["urlToPost"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_POST"], array("blog" => $arBlog["URL"], "post_id" => $CurPost["ID"])); if (IntVal($CurPost["ATTACH_IMG"]) <= 0) { $dbImage = CBlogImage::GetList(array("ID" => "ASC"), array("BLOG_ID" => $CurPost["BLOG_ID"], "POST_ID" => $CurPost["ID"])); if ($arImage = $dbImage->Fetch()) { if ($file = CBlogTools::ResizeImage($arImage["FILE_ID"], $arParams["PREVIEW_WIDTH"], $arParams["PREVIEW_HEIGHT"])) { $arFile = CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"] . $file); $arFile["MODULE_ID"] = "blog"; $fileID = CFile::SaveFile($arFile, "blog"); if (IntVal($fileID) > 0) { $id = CBlogPost::Update($arPost["ID"], array("ATTACH_IMG" => $fileID)); $CurPost["IMG"] = CFile::ShowImage($fileID, false, false, 'align="left" hspace="2" vspace="2"'); } $dbFile = CFile::GetByID($arImage["FILE_ID"]); if ($arFile = $dbFile->Fetch()) { if ("/" . COption::GetOptionString("main", "upload_dir", "upload") . "/" . $arFile["SUBDIR"] . $arFile["FILE_NAME"] != $file && is_file($file)) { DeleteDirFilesEx($file); } } } } } else { $CurPost["IMG"] = CFile::ShowImage($CurPost["ATTACH_IMG"], false, false, 'align="left" hspace="2" vspace="2"'); } $text = preg_replace("#\\[img\\](.+?)\\[/img\\]#ie", "", $CurPost["~DETAIL_TEXT"]); $text = preg_replace("#\\[url(.+?)\\](.+?)\\[/url\\]#ie", "", $text);
$arFields['PERMS_COMMENT'] = array(); } while (is_array($_POST['IMAGE_ID_title']) && (list($imgID, $imgTitle) = each($_POST['IMAGE_ID_title']))) { $aImg = CBlogImage::GetByID($imgID); if ($aImg['BLOG_ID'] == $BLOG_ID && $aImg['POST_ID'] == $ID) { if ($_POST['IMAGE_ID_del'][$imgID]) { CBlogImage::Delete($imgID); $arFields['DETAIL_TEXT'] = str_replace("[IMG ID={$imgID}]", "", $arFields['DETAIL_TEXT']); } else { CBlogImage::Update($imgID, array("TITLE" => $imgTitle)); } } } if ($ID > 0) { // Проверяем: новая запись или изменение старой $newID = CBlogPost::Update($ID, $arFields); } else { $arFields['=DATE_CREATE'] = $DB->GetNowFunction(); $arFields['AUTHOR_ID'] = $USER_ID; $arFields['BLOG_ID'] = $BLOG_ID; $newID = CBlogPost::Add($arFields); if ($newID && $arBlog['EMAIL_NOTIFY'] == 'Y' && $USER_ID != $arBlog['OWNER_ID']) { $BlogUser = CBlogUser::GetByID($USER_ID, BLOG_BY_USER_ID); $res = CUser::GetByID($arBlog['OWNER_ID']); $arOwner = $res->Fetch(); $dbUser = CUser::GetByID($USER_ID); $arUser = $dbUser->Fetch(); $AuthorName = CBlogUser::GetUserName($BlogUser["ALIAS"], $arUser["NAME"], $arUser["LAST_NAME"], $arUser["LOGIN"]); CEvent::Send("NEW_BLOG_MESSAGE", SITE_ID, array("BLOG_ID" => $BLOG_ID, "BLOG_NAME" => $arBlog['NAME'], "BLOG_URL" => $arBlog['URL'], "MESSAGE_TITLE" => $_POST['POST_TITLE'], "MESSAGE_TEXT" => $_POST['POST_MESSAGE'], "MESSAGE_DATE" => $DATE_PUBLISH, "MESSAGE_PATH" => "http://" . (COption::GetOptionString("main", "server_name") . $sBlogPath . "/" . ($is404 ? $arBlog['URL'] . "/" . $newID . ".php" : "post.php?blog=" . $arBlog['URL'] . "&post_id=" . $newID)), "AUTHOR" => $AuthorName, "EMAIL_FROM" => COption::GetOptionString("main", "email_from", "*****@*****.**"), "EMAIL_TO" => $arOwner['EMAIL'])); } }
$dbImg = CBlogImage::GetList(array(), array("BLOG_ID" => $arBlog["ID"], "POST_ID" => $newID, "IS_COMMENT" => "N"), false, false, array("ID")); if ($dbImg->Fetch()) { $bHasImg = true; } $arPostFields = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFields("BLOG_POST", $newID, LANGUAGE_ID); foreach ($arPostFields as $FIELD_NAME => $arPostField) { if (!empty($arPostField["VALUE"]) > 0) { $bHasProps = true; break; } } if (!empty($arFields["SOCNET_RIGHTS"]) && count($arFields["SOCNET_RIGHTS"]) == 1 && in_array("UA", $arFields["SOCNET_RIGHTS"])) { $bHasOnlyAll = true; } $arFieldsHave = array("HAS_IMAGES" => $bHasImg ? "Y" : "N", "HAS_TAGS" => $bHasTag ? "Y" : "N", "HAS_PROPS" => $bHasProps ? "Y" : "N", "HAS_SOCNET_ALL" => $bHasOnlyAll ? "Y" : "N"); CBlogPost::Update($newID, $arFieldsHave); } if ($bAdd && $newID && $arFields["PUBLISH_STATUS"] == BLOG_PUBLISH_STATUS_PUBLISH || $arOldPost["PUBLISH_STATUS"] != BLOG_PUBLISH_STATUS_PUBLISH && $arFields["PUBLISH_STATUS"] == BLOG_PUBLISH_STATUS_PUBLISH) { $arFields["ID"] = $newID; $arParamsNotify = array("bSoNet" => true, "UserID" => $arResult["UserID"], "allowVideo" => $arResult["allowVideo"], "PATH_TO_SMILE" => $arParams["PATH_TO_SMILE"], "PATH_TO_POST" => $arParams["PATH_TO_POST"], "SOCNET_GROUP_ID" => $arParams["SOCNET_GROUP_ID"], "user_id" => $arParams["USER_ID"], "NAME_TEMPLATE" => $arParams["NAME_TEMPLATE"], "SHOW_LOGIN" => $arParams["SHOW_LOGIN"]); CBlogPost::Notify($arFields, $arBlog, $arParamsNotify); if (COption::GetOptionString("blog", "send_blog_ping", "N") == "Y") { if (strlen($serverName) <= 0) { $dbSite = CSite::GetByID(SITE_ID); $arSite = $dbSite->Fetch(); $serverName = htmlspecialcharsEx($arSite["SERVER_NAME"]); if (strlen($serverName) <= 0) { if (defined("SITE_SERVER_NAME") && strlen(SITE_SERVER_NAME) > 0) { $serverName = SITE_SERVER_NAME; } else { $serverName = COption::GetOptionString("main", "server_name", "");
public static function Update($ID, $arFields, $bSearchIndex = true) { global $DB; $ID = IntVal($ID); if(strlen($arFields["PATH"]) > 0) $arFields["PATH"] = str_replace("#comment_id#", $ID, $arFields["PATH"]); $arFields1 = array(); foreach ($arFields as $key => $value) { if (substr($key, 0, 1) == "=") { $arFields1[substr($key, 1)] = $value; unset($arFields[$key]); } } if (!CBlogComment::CheckFields("UPDATE", $arFields, $ID)) return false; elseif(!$GLOBALS["USER_FIELD_MANAGER"]->CheckFields("BLOG_COMMENT", $ID, $arFields)) return false; foreach(GetModuleEvents("blog", "OnBeforeCommentUpdate", true) as $arEvent) { if (ExecuteModuleEventEx($arEvent, Array($ID, &$arFields))===false) return false; } $strUpdate = $DB->PrepareUpdate("b_blog_comment", $arFields); foreach ($arFields1 as $key => $value) { if (strlen($strUpdate) > 0) $strUpdate .= ", "; $strUpdate .= $key."=".$value." "; } if (strlen($strUpdate) > 0) { if(is_set($arFields["PUBLISH_STATUS"]) && strlen($arFields["PUBLISH_STATUS"]) > 0) { $arComment = CBlogComment::GetByID($ID); if($arComment["PUBLISH_STATUS"] == BLOG_PUBLISH_STATUS_PUBLISH && $arFields["PUBLISH_STATUS"] != BLOG_PUBLISH_STATUS_PUBLISH) CBlogPost::Update($arComment["POST_ID"], array("=NUM_COMMENTS" => "NUM_COMMENTS - 1")); elseif($arComment["PUBLISH_STATUS"] != BLOG_PUBLISH_STATUS_PUBLISH && $arFields["PUBLISH_STATUS"] == BLOG_PUBLISH_STATUS_PUBLISH) CBlogPost::Update($arComment["POST_ID"], array("=NUM_COMMENTS" => "NUM_COMMENTS + 1")); } $strSql = "UPDATE b_blog_comment SET ". " ".$strUpdate." ". "WHERE ID = ".$ID." "; $DB->Query($strSql, False, "File: ".__FILE__."<br>Line: ".__LINE__); unset($GLOBALS["BLOG_COMMENT"]["BLOG_COMMENT_CACHE_".$ID]); $GLOBALS["USER_FIELD_MANAGER"]->Update("BLOG_COMMENT", $ID, $arFields); $arComment = CBlogComment::GetByID($ID); $arBlog = CBlog::GetByID($arComment["BLOG_ID"]); if($arBlog["USE_SOCNET"] == "Y") $arFields["SC_PERM"] = CBlogComment::GetSocNetCommentPerms($arComment["POST_ID"]); foreach(GetModuleEvents("blog", "OnCommentUpdate", true) as $arEvent) ExecuteModuleEventEx($arEvent, Array($ID, &$arFields)); if ($bSearchIndex && CModule::IncludeModule("search")) { $newPostPerms = CBlogUserGroup::GetGroupPerms(1, $arComment["BLOG_ID"], $arComment["POST_ID"], BLOG_PERMS_POST); if ($arBlog["SEARCH_INDEX"] != "Y" || $arComment["PUBLISH_STATUS"] != BLOG_PUBLISH_STATUS_PUBLISH) { CSearch::Index("blog", "C".$ID, array( "TITLE" => "", "BODY" => "" ) ); } else { $arGroup = CBlogGroup::GetByID($arBlog["GROUP_ID"]); if(strlen($arFields["PATH"]) > 0) { $arFields["PATH"] = str_replace("#comment_id#", $ID, $arFields["PATH"]); $arPostSite = array($arGroup["SITE_ID"] => $arFields["PATH"]); } elseif(strlen($arComment["PATH"]) > 0) { $arComment["PATH"] = str_replace("#comment_id#", $ID, $arComment["PATH"]); $arPostSite = array($arGroup["SITE_ID"] => $arComment["PATH"]); } else { $arPostSite = array( $arGroup["SITE_ID"] => CBlogPost::PreparePath( $arBlog["URL"], $arComment["POST_ID"], $arGroup["SITE_ID"], false, $arBlog["OWNER_ID"], $arBlog["SOCNET_GROUP_ID"] ) ); } $searchContent = blogTextParser::killAllTags($arComment["POST_TEXT"]); $searchContent .= "\r\n" . $GLOBALS["USER_FIELD_MANAGER"]->OnSearchIndex("BLOG_COMMENT", $arComment["ID"]); $arSearchIndex = array( "SITE_ID" => $arPostSite, "LAST_MODIFIED" => $arComment["DATE_CREATE"], "PARAM1" => "COMMENT", "PARAM2" => $arComment["BLOG_ID"]."|".$arComment["POST_ID"], "PERMISSIONS" => array(2), "TITLE" => $arComment["TITLE"], "BODY" => $searchContent, "USER_ID" => (IntVal($arComment["AUTHOR_ID"]) > 0) ? $arComment["AUTHOR_ID"] : false, "ENTITY_TYPE_ID" => "BLOG_COMMENT", "ENTITY_ID" => $arComment["ID"], ); if($arBlog["USE_SOCNET"] == "Y") { if(is_array($arFields["SC_PERM"])) { $arSearchIndex["PERMISSIONS"] = $arFields["SC_PERM"]; $sgId = array(); foreach($arFields["SC_PERM"] as $perm) { if(strpos($perm, "SG") !== false) { $sgIdTmp = str_replace("SG", "", substr($perm, 0, strpos($perm, "_"))); if(!in_array($sgIdTmp, $sgId) && IntVal($sgIdTmp) > 0) $sgId[] = $sgIdTmp; } } if(!empty($sgId)) { $arSearchIndex["PARAMS"] = array( "socnet_group" => $sgId, "entity" => "socnet_group", ); } if(!in_array("U".$arComment["AUTHOR_ID"], $arSearchIndex["PERMISSIONS"])) $arSearchIndex["PERMISSIONS"][] = "U".$arComment["AUTHOR_ID"]; } } if(strlen($arComment["TITLE"]) <= 0) { //$arPost = CBlogPost::GetByID($arComment["POST_ID"]); $arSearchIndex["TITLE"] = substr($arSearchIndex["BODY"], 0, 100); } CSearch::Index("blog", "C".$ID, $arSearchIndex, True); } } return $ID; } return False; }
} else { $errorMessage = GetMessage("B_B_HIDE_M_DEL_ERR"); } } else { $errorMessage = GetMessage("B_B_HIDE_M_DEL_RIGHTS"); } } } elseif (IntVal($_GET["show_id"]) > 0) { if ($_GET["success"] == "Y") { $okMessage = GetMessage("BLOG_BLOG_BLOG_MES_SHOWED"); } else { if (check_bitrix_sessid()) { $show_id = IntVal($_GET["show_id"]); if ($arResult["PostPerm"] >= BLOG_PERMS_MODERATE) { if ($arPost = CBlogPost::GetByID($show_id)) { if (CBlogPost::Update($show_id, array("PUBLISH_STATUS" => BLOG_PUBLISH_STATUS_PUBLISH))) { BXClearCache(True, "/" . SITE_ID . "/blog/" . $arBlog["URL"] . "/first_page/"); BXClearCache(True, "/" . SITE_ID . "/blog/" . $arBlog["URL"] . "/pages/"); BXClearCache(True, "/" . SITE_ID . "/blog/" . $arBlog["URL"] . "/calendar/"); BXClearCache(True, "/" . SITE_ID . "/blog/" . $arBlog["URL"] . "/post/" . $show_id . "/"); BXClearCache(True, "/" . SITE_ID . "/blog/last_messages/"); BXClearCache(True, "/" . SITE_ID . "/blog/commented_posts/"); BXClearCache(True, "/" . SITE_ID . "/blog/popular_posts/"); BXClearCache(True, "/" . SITE_ID . "/blog/last_comments/"); BXClearCache(True, "/" . SITE_ID . "/blog/groups/" . $arBlog["GROUP_ID"] . "/"); BXClearCache(True, "/" . SITE_ID . "/blog/" . $arBlog["URL"] . "/trackback/" . $show_id . "/"); BXClearCache(True, "/" . SITE_ID . "/blog/" . $arBlog["URL"] . "/rss_out/"); BXClearCache(True, "/" . SITE_ID . "/blog/" . $arBlog["URL"] . "/rss_all/"); BXClearCache(True, "/" . SITE_ID . "/blog/rss_sonet/"); BXClearCache(True, "/" . SITE_ID . "/blog/rss_all/"); BXClearCache(True, "/" . SITE_ID . "/blog/last_messages_list_extranet/");
} else { $url .= "&"; } $url .= "del_id=" . $arParams["ID"] . "&success=Y"; LocalRedirect($url); } else { $arResult["ERROR_MESSAGE"] .= GetMessage("BLOG_BLOG_BLOG_MES_DEL_ERROR") . '<br />'; } } else { $arResult["ERROR_MESSAGE"] .= GetMessage("BLOG_BLOG_BLOG_MES_DEL_NO_RIGHTS") . '<br />'; } } if ($_GET["hide"] == "Y") { if (check_bitrix_sessid()) { if ($arResult["PostPerm"] >= BLOG_PERMS_MODERATE) { if (CBlogPost::Update($arParams["ID"], array("PUBLISH_STATUS" => BLOG_PUBLISH_STATUS_READY))) { BXClearCache(True, "/" . SITE_ID . "/blog/" . $arBlog["URL"] . "/first_page/"); BXClearCache(True, "/" . SITE_ID . "/blog/" . $arBlog["URL"] . "/pages/"); BXClearCache(True, "/" . SITE_ID . "/blog/" . $arBlog["URL"] . "/calendar/"); BXClearCache(True, "/" . SITE_ID . "/blog/" . $arBlog["URL"] . "/post/" . $arParams["ID"] . "/"); BXClearCache(True, "/" . SITE_ID . "/blog/last_messages/"); BXClearCache(True, "/" . SITE_ID . "/blog/commented_posts/"); BXClearCache(True, "/" . SITE_ID . "/blog/popular_posts/"); BXClearCache(True, "/" . SITE_ID . "/blog/last_comments/"); BXClearCache(True, "/" . SITE_ID . "/blog/groups/" . $arBlog["GROUP_ID"] . "/"); BXClearCache(True, "/" . SITE_ID . "/blog/" . $arBlog["URL"] . "/trackback/" . $arParams["ID"] . "/"); BXClearCache(True, "/" . SITE_ID . "/blog/" . $arBlog["URL"] . "/rss_out/"); BXClearCache(True, "/" . SITE_ID . "/blog/" . $arBlog["URL"] . "/rss_all/"); BXClearCache(True, "/" . SITE_ID . "/blog/rss_sonet/"); BXClearCache(True, "/" . SITE_ID . "/blog/rss_all/"); BXClearCache(True, "/" . SITE_ID . "/blog/last_messages_list_extranet/");
} } else { $arResult["ERROR_MESSAGE"][] = GetMessage("BLOG_BLOG_BLOG_NO_BLOG"); CHTTP::SetStatus("404 Not Found"); } } elseif (IntVal($_GET["hide_id"]) > 0) { if ($arResult["BLOG"] = CBlog::GetByUrl($arParams["BLOG_URL"], $arParams["GROUP_ID"])) { if ($_GET["success"] == "Y") { $arResultNFCache["OK_MESSAGE"][] = GetMessage("BLOG_BLOG_BLOG_MES_HIDED"); } else { if (check_bitrix_sessid()) { $arResult["PostPerm"] = CBlog::GetBlogUserPostPerms($arResult["BLOG"]["ID"], $user_id); $hide_id = IntVal($_GET["hide_id"]); if ($arResult["PostPerm"] >= BLOG_PERMS_MODERATE) { if (CBlogPost::GetByID($hide_id)) { if (CBlogPost::Update($hide_id, array("PUBLISH_STATUS" => BLOG_PUBLISH_STATUS_READY))) { BXClearCache(True, "/" . SITE_ID . "/blog/" . $arParams["BLOG_URL"] . "/first_page/"); BXClearCache(True, "/" . SITE_ID . "/blog/" . $arParams["BLOG_URL"] . "/pages/"); BXClearCache(True, "/" . SITE_ID . "/blog/" . $arParams["BLOG_URL"] . "/calendar/"); BXClearCache(True, "/" . SITE_ID . "/blog/" . $arParams["BLOG_URL"] . "/post/" . $hide_id . "/"); BXClearCache(True, "/" . SITE_ID . "/blog/last_messages/"); BXClearCache(True, "/" . SITE_ID . "/blog/commented_posts/"); BXClearCache(True, "/" . SITE_ID . "/blog/popular_posts/"); BXClearCache(True, "/" . SITE_ID . "/blog/last_comments/"); BXClearCache(True, "/" . SITE_ID . "/blog/groups/" . $arResult["BLOG"]["GROUP_ID"] . "/"); BXClearCache(True, "/" . SITE_ID . "/blog/" . $arParams["BLOG_URL"] . "/trackback/" . $hide_id . "/"); BXClearCache(True, "/" . SITE_ID . "/blog/" . $arParams["BLOG_URL"] . "/rss_out/"); BXClearCache(True, "/" . SITE_ID . "/blog/" . $arParams["BLOG_URL"] . "/rss_all/"); BXClearCache(True, "/" . SITE_ID . "/blog/rss_sonet/"); BXClearCache(True, "/" . SITE_ID . "/blog/rss_all/"); BXClearCache(True, "/" . SITE_ID . "/blog/last_messages_list_extranet/");
function EditPost($params) { global $USER, $DB; $postId = IntVal(CBlogMetaWeblog::DecodeParams($params[0]["#"]["value"][0]["#"])); $user = CBlogMetaWeblog::DecodeParams($params[1]["#"]["value"][0]["#"]); $password = CBlogMetaWeblog::DecodeParams($params[2]["#"]["value"][0]["#"]); $arPostInfo = $params[3]["#"]["value"][0]["#"]["struct"][0]["#"]["member"]; $publish = $params[4]["#"]["value"][0]["#"]["boolean"][0]["#"]; foreach ($arPostInfo as $val) { ${$val["#"]["name"][0]["#"]} = CBlogMetaWeblog::DecodeParams($val["#"]["value"][0]["#"]); } $arCategory = array(); if (is_array($categories["data"][0]["#"]["value"])) { foreach ($categories["data"][0]["#"]["value"] as $val) { $catTmp = CBlogMetaWeblog::DecodeParams($val["#"]); if (strlen($catTmp) > 0) { $arCategory[] = $catTmp; } } } if (CBlogMetaWeblog::Authorize($user, $password)) { $result = ''; $userId = $USER->GetID(); if (IntVal($postId) > 0) { $arSelectedFields = array("ID", "BLOG_ID", "TITLE", "DATE_PUBLISH", "AUTHOR_ID", "DETAIL_TEXT", "DETAIL_TEXT_TYPE"); $dbPost = CBlogPost::GetList(array(), array("AUTHOR_ID" => $userId, "ID" => $postId), false, array("nTopCount" => 1), $arSelectedFields); if ($arPost = $dbPost->Fetch()) { $arBlog = CBlog::GetByID($arPost["BLOG_ID"]); if (intval($arBlog["SOCNET_GROUP_ID"]) > 0 && CModule::IncludeModule("socialnetwork") && method_exists("CSocNetGroup", "GetSite")) { $arSites = array(); $rsGroupSite = CSocNetGroup::GetSite($arBlog["SOCNET_GROUP_ID"]); while ($arGroupSite = $rsGroupSite->Fetch()) { $arSites[] = $arGroupSite["LID"]; } } else { $arSites = array(SITE_ID); } $CATEGORYtmp = array(); $dbCategory = CBlogCategory::GetList(array(), array("BLOG_ID" => $arPost["BLOG_ID"])); while ($arCat = $dbCategory->Fetch()) { $arCatBlog[ToLower($arCat["NAME"])] = $arCat["ID"]; } foreach ($arCategory as $tg) { $tg = trim($tg); if (!in_array($arCatBlog[ToLower($tg)], $CATEGORYtmp)) { if (IntVal($arCatBlog[ToLower($tg)]) > 0) { $CATEGORYtmp[] = $arCatBlog[ToLower($tg)]; } else { $CATEGORYtmp[] = CBlogCategory::Add(array("BLOG_ID" => $arPost["BLOG_ID"], "NAME" => $tg)); foreach ($arSites as $site_id_tmp) { BXClearCache(True, "/" . $site_id_tmp . "/blog/" . $arBlog["URL"] . "/category/"); } } } } $dbSite = CSite::GetByID(SITE_ID); $arSite = $dbSite->Fetch(); $serverName = htmlspecialcharsEx($arSite["SERVER_NAME"]); if (strlen($serverName) <= 0) { if (defined("SITE_SERVER_NAME") && strlen(SITE_SERVER_NAME) > 0) { $serverName = SITE_SERVER_NAME; } else { $serverName = COption::GetOptionString("main", "server_name", "www.bitrixsoft.com"); } } $dbImage = CBlogImage::GetList(array(), array("POST_ID" => false, "BLOG_ID" => $arBlog["ID"], "IS_COMMENT" => "N")); while ($arImage = $dbImage->Fetch()) { $path = ""; $path = CFile::GetPath($arImage["FILE_ID"]); $path = "http://" . $serverName . $path; if (strpos($description, $path) !== false) { $description = str_replace('<img src="' . $path . '" alt=""/>', "[IMG ID=" . $arImage["ID"] . "]", $description); CBlogImage::Update($arImage["ID"], array("POST_ID" => $arPost["ID"])); } } $arFields = array("TITLE" => $title, "DETAIL_TEXT" => $description, "DETAIL_TEXT_TYPE" => "html", "PUBLISH_STATUS" => $publish == 1 ? "P" : "D", "CATEGORY_ID" => implode(",", $CATEGORYtmp)); $postId = CBlogPost::Update($arPost["ID"], $arFields); CBlogPostCategory::DeleteByPostID($arPost["ID"]); foreach ($CATEGORYtmp as $v) { CBlogPostCategory::Add(array("BLOG_ID" => $arPost["BLOG_ID"], "POST_ID" => $arPost["ID"], "CATEGORY_ID" => $v)); } if (IntVal($postId) > 0) { foreach ($arSites as $site_id_tmp) { BXClearCache(True, "/" . $site_id_tmp . "/blog/" . $arBlog["URL"] . "/first_page/"); BXClearCache(True, "/" . $site_id_tmp . "/blog/" . $arBlog["URL"] . "/calendar/"); BXClearCache(True, "/" . $site_id_tmp . "/blog/last_messages/"); BXClearCache(True, "/" . $site_id_tmp . "/blog/commented_posts/"); BXClearCache(True, "/" . $site_id_tmp . "/blog/popular_posts/"); BXClearCache(True, "/" . $site_id_tmp . "/blog/last_comments/"); BXClearCache(True, "/" . $site_id_tmp . "/blog/groups/" . $arBlog["GROUP_ID"] . "/"); BXClearCache(True, "/" . $site_id_tmp . "/blog/" . $arBlog["URL"] . "/trackback/" . $arPost["ID"] . "/"); BXClearCache(True, "/" . $site_id_tmp . "/blog/" . $arBlog["URL"] . "/comment/" . $arPost["ID"] . "/"); BXClearCache(True, "/" . $site_id_tmp . "/blog/" . $arBlog["URL"] . "/rss_out/"); BXClearCache(True, "/" . $site_id_tmp . "/blog/" . $arBlog["URL"] . "/rss_all/"); BXClearCache(True, "/" . $site_id_tmp . "/blog/rss_sonet/"); BXClearCache(True, "/" . $site_id_tmp . "/blog/rss_all/"); BXClearCache(True, "/" . $site_id_tmp . "/blog/" . $arBlog["URL"] . "/favorite/"); BXClearCache(True, "/" . $site_id_tmp . "/blog/" . $arBlog["URL"] . "/post/" . $arPost["ID"] . "/"); } return '<params> <param> <value> <i4>' . $postId . '</i4> </value> </param> </params>'; } else { return '<fault> <value> <struct> <member> <name>faultCode</name> <value><int>3</int></value> </member> <member> <name>faultString</name> <value><string>Error on saving post</string></value> </member> </struct> </value> </fault>'; } } } } else { return '<fault> <value> <struct> <member> <name>faultCode</name> <value><int>3</int></value> </member> <member> <name>faultString</name> <value><string>' . $arAuthResult["MESSAGE"] . '</string></value> </member> </struct> </value> </fault>'; } }
$arFields["DETAIL_TEXT"] = str_replace("[IMG ID={$imgID}]", "", $arFields["DETAIL_TEXT"]); } else { CBlogImage::Update($imgID, array("TITLE" => $imgTitle)); } } } } if (count($arParams["POST_PROPERTY"]) > 0) { $GLOBALS["USER_FIELD_MANAGER"]->EditFormAddFields("BLOG_POST", $arFields); } $arDefaultStatus = CIdeaManagment::getInstance()->Idea()->GetDefaultStatus(array($arFields[CIdeaManagment::UFStatusField], $arParams["POST_BIND_STATUS_DEFAULT"])); //unset Status field to make Handle status update unset($arFields[CIdeaManagment::UFStatusField]); if ($arParams["ID"] > 0) { $arFields["AUTHOR_ID"] = $arPost["AUTHOR_ID"]; $newID = CBlogPost::Update($arParams["ID"], $arFields); $arFields["ACTION"] = "UPDATE"; } else { $arFields["AUTHOR_ID"] = $arResult["UserID"]; $arFields["=DATE_CREATE"] = $DB->GetNowFunction(); $arFields["BLOG_ID"] = $arBlog["ID"]; $newID = CBlogPost::Add($arFields); $arFields["ACTION"] = "ADD"; } //Update idea status if (IntVal($newID) > 0 && $arDefaultStatus["ID"] > 0) { $bStatus = CIdeaManagment::getInstance()->Idea($newID)->SetStatus($arDefaultStatus["ID"]); if ($bStatus) { /*(TODO: socnet ribbon, notification*/ } }