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 (!CBlogPost::CheckFields("ADD", $arFields)) return false; elseif(!$GLOBALS["USER_FIELD_MANAGER"]->CheckFields("BLOG_POST", 0, $arFields)) return false; foreach(GetModuleEvents("blog", "OnBeforePostAdd", true) as $arEvent) { if (ExecuteModuleEventEx($arEvent, Array(&$arFields))===false) return false; } if ( array_key_exists("ATTACH_IMG", $arFields) && is_array($arFields["ATTACH_IMG"]) && ( !array_key_exists("MODULE_ID", $arFields["ATTACH_IMG"]) || strlen($arFields["ATTACH_IMG"]["MODULE_ID"]) <= 0 ) ) $arFields["ATTACH_IMG"]["MODULE_ID"] = "blog"; $prefix = "blog"; if(strlen($arFields["URL"]) > 0) $prefix .= "/".$arFields["URL"]; CFile::SaveForDB($arFields, "ATTACH_IMG", $prefix); $arInsert = $DB->PrepareInsert("b_blog_post", $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_post(".$arInsert[0].") ". "VALUES(".$arInsert[1].")"; $DB->Query($strSql, False, "File: ".__FILE__."<br>Line: ".__LINE__); $ID = IntVal($DB->LastID()); foreach(GetModuleEvents("blog", "OnBeforePostUserFieldUpdate", true) as $arEvent) ExecuteModuleEventEx($arEvent, Array("BLOG_POST", $ID, $arFields)); $GLOBALS["USER_FIELD_MANAGER"]->Update("BLOG_POST", $ID, $arFields); } if ($ID) { $arPost = CBlogPost::GetByID($ID); CBlog::SetStat($arPost["BLOG_ID"]); CBlogPost::SetPostPerms($ID, $arFields["PERMS_POST"], BLOG_PERMS_POST); CBlogPost::SetPostPerms($ID, $arFields["PERMS_COMMENT"], BLOG_PERMS_COMMENT); $arFields["SC_PERM"] = Array(); if(array_key_exists("SOCNET_RIGHTS", $arFields)) $arFields["SC_PERM"] = CBlogPost::AddSocNetPerms($ID, $arFields["SOCNET_RIGHTS"], $arPost); foreach(GetModuleEvents("blog", "OnPostAdd", true) as $arEvent) ExecuteModuleEventEx($arEvent, Array($ID, &$arFields)); if (CModule::IncludeModule("search")) { if ($arPost["DATE_PUBLISHED"] == "Y" && $arPost["PUBLISH_STATUS"] == BLOG_PUBLISH_STATUS_PUBLISH && CBlogUserGroup::GetGroupPerms(1, $arPost["BLOG_ID"], $ID, BLOG_PERMS_POST) >= BLOG_PERMS_READ) { $tag = ""; $arBlog = CBlog::GetByID($arPost["BLOG_ID"]); if($arBlog["SEARCH_INDEX"] == "Y") { $arGroup = CBlogGroup::GetByID($arBlog["GROUP_ID"]); if(strlen($arFields["PATH"]) > 0) { $arFields["PATH"] = ( strlen($arFields["CODE"]) > 0 ? str_replace("#post_id#", $arFields["CODE"], $arFields["PATH"]) : str_replace("#post_id#", $ID, $arFields["PATH"]) ); $arPostSite = array( $arGroup["SITE_ID"] => $arFields["PATH"] ); } else { $arPostSite = array( $arGroup["SITE_ID"] => CBlogPost::PreparePath( $arBlog["URL"], $arPost["ID"], $arGroup["SITE_ID"], false, $arBlog["OWNER_ID"], $arBlog["SOCNET_GROUP_ID"] ) ); } if ( $arBlog["USE_SOCNET"] == "Y" && CModule::IncludeModule("extranet") ) { $arPostSiteExt = CExtranet::GetSitesByLogDestinations($arFields["SC_PERM"]); foreach($arPostSiteExt as $lid) { if (!array_key_exists($lid, $arPostSite)) { $arPostSite[$lid] = str_replace( array("#user_id#", "#post_id#"), array($arBlog["OWNER_ID"], $arPost["ID"]), COption::GetOptionString("socialnetwork", "userblogpost_page", false, $lid) ); } } } if(strlen($arPost["CATEGORY_ID"])>0) { $arC = explode(",", $arPost["CATEGORY_ID"]); $arTag = Array(); foreach($arC as $v) { $arCategory = CBlogCategory::GetByID($v); $arTag[] = $arCategory["NAME"]; } $tag = implode(",", $arTag); } $searchContent = blogTextParser::killAllTags($arPost["DETAIL_TEXT"]); $searchContent .= "\r\n" . $GLOBALS["USER_FIELD_MANAGER"]->OnSearchIndex("BLOG_POST", $arPost["ID"]); $authorName = ""; if(IntVal($arPost["AUTHOR_ID"]) > 0) { $dbUser = CUser::GetByID($arPost["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); if(strlen($authorName) > 0) $searchContent .= "\r\n".$authorName; } } $arSearchIndex = array( "SITE_ID" => $arPostSite, "LAST_MODIFIED" => $arPost["DATE_PUBLISH"], "PARAM1" => "POST", "PARAM2" => $arPost["BLOG_ID"], "PARAM3" => $arPost["ID"], "PERMISSIONS" => array(2), "TITLE" => blogTextParser::killAllTags($arPost["TITLE"]), "BODY" => $searchContent, "TAGS" => $tag, "USER_ID" => $arPost["AUTHOR_ID"], "ENTITY_TYPE_ID" => "BLOG_POST", "ENTITY_ID" => $arPost["ID"], ); if($arBlog["USE_SOCNET"] == "Y") { if(is_array($arFields["SC_PERM"])) { $arSearchIndex["PERMISSIONS"] = $arFields["SC_PERM"]; if(!in_array("U".$arPost["AUTHOR_ID"], $arSearchIndex["PERMISSIONS"])) $arSearchIndex["PERMISSIONS"][] = "U".$arPost["AUTHOR_ID"]; $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", ); } } // get mentions and grats $arMentionedUserID = CBlogPost::GetMentionedUserID($arPost); if (!empty($arMentionedUserID)) { if (!isset($arSearchIndex["PARAMS"])) { $arSearchIndex["PARAMS"] = array(); } $arSearchIndex["PARAMS"]["mentioned_user_id"] = $arMentionedUserID; } } CSearch::Index("blog", "P".$ID, $arSearchIndex); } } } } return $ID; }
function UpdateSocNetPerms($ID, $perms = false, $arPost = array()) { global $DB; $ID = IntVal($ID); if ($ID <= 0) { return false; } $strSql = "DELETE FROM b_blog_socnet_rights WHERE POST_ID=" . $ID; $dbRes = $DB->Query($strSql); return CBlogPost::AddSocNetPerms($ID, $perms, $arPost); }
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 (!CBlogPost::CheckFields("ADD", $arFields)) { return false; } elseif (!$GLOBALS["USER_FIELD_MANAGER"]->CheckFields("BLOG_POST", 0, $arFields)) { return false; } $db_events = GetModuleEvents("blog", "OnBeforePostAdd"); while ($arEvent = $db_events->Fetch()) { if (ExecuteModuleEventEx($arEvent, array(&$arFields)) === false) { return false; } } if (array_key_exists("ATTACH_IMG", $arFields) && is_array($arFields["ATTACH_IMG"]) && (!array_key_exists("MODULE_ID", $arFields["ATTACH_IMG"]) || strlen($arFields["ATTACH_IMG"]["MODULE_ID"]) <= 0)) { $arFields["ATTACH_IMG"]["MODULE_ID"] = "blog"; } $prefix = "blog"; if (strlen($arFields["URL"]) > 0) { $prefix .= "/" . $arFields["URL"]; } CFile::SaveForDB($arFields, "ATTACH_IMG", $prefix); $arInsert = $DB->PrepareInsert("b_blog_post", $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_post(" . $arInsert[0] . ") " . "VALUES(" . $arInsert[1] . ")"; $DB->Query($strSql, False, "File: " . __FILE__ . "<br>Line: " . __LINE__); $ID = IntVal($DB->LastID()); $GLOBALS["USER_FIELD_MANAGER"]->Update("BLOG_POST", $ID, $arFields); } if ($ID) { $arPost = CBlogPost::GetByID($ID); CBlog::SetStat($arPost["BLOG_ID"]); CBlogPost::SetPostPerms($ID, $arFields["PERMS_POST"], BLOG_PERMS_POST); CBlogPost::SetPostPerms($ID, $arFields["PERMS_COMMENT"], BLOG_PERMS_COMMENT); $arFields["SC_PERM"] = array(); if (array_key_exists("SOCNET_RIGHTS", $arFields)) { $arFields["SC_PERM"] = CBlogPost::AddSocNetPerms($ID, $arFields["SOCNET_RIGHTS"], $arPost); } $db_events = GetModuleEvents("blog", "OnPostAdd"); while ($arEvent = $db_events->Fetch()) { ExecuteModuleEventEx($arEvent, array($ID, &$arFields)); } if (CModule::IncludeModule("search")) { if ($arPost["DATE_PUBLISHED"] == "Y" && $arPost["PUBLISH_STATUS"] == BLOG_PUBLISH_STATUS_PUBLISH && CBlogUserGroup::GetGroupPerms(1, $arPost["BLOG_ID"], $ID, BLOG_PERMS_POST) >= BLOG_PERMS_READ) { $tag = ""; $arBlog = CBlog::GetByID($arPost["BLOG_ID"]); if ($arBlog["SEARCH_INDEX"] == "Y") { $arGroup = CBlogGroup::GetByID($arBlog["GROUP_ID"]); if (strlen($arFields["PATH"]) > 0) { if (strlen($arFields["CODE"]) > 0) { $arFields["PATH"] = str_replace("#post_id#", $arFields["CODE"], $arFields["PATH"]); } else { $arFields["PATH"] = str_replace("#post_id#", $ID, $arFields["PATH"]); } $arPostSite = array($arGroup["SITE_ID"] => $arFields["PATH"]); } else { $arPostSite = array($arGroup["SITE_ID"] => CBlogPost::PreparePath($arBlog["URL"], $arPost["ID"], $arGroup["SITE_ID"], false, $arBlog["OWNER_ID"], $arBlog["SOCNET_GROUP_ID"])); } if (strlen($arPost["CATEGORY_ID"]) > 0) { $arC = explode(",", $arPost["CATEGORY_ID"]); $arTag = array(); foreach ($arC as $v) { $arCategory = CBlogCategory::GetByID($v); $arTag[] = $arCategory["NAME"]; } $tag = implode(",", $arTag); } $searchContent = blogTextParser::killAllTags($arPost["DETAIL_TEXT"]); $searchContent .= "\r\n" . $GLOBALS["USER_FIELD_MANAGER"]->OnSearchIndex("BLOG_POST", $arPost["ID"]); $arSearchIndex = array("SITE_ID" => $arPostSite, "LAST_MODIFIED" => $arPost["DATE_PUBLISH"], "PARAM1" => "POST", "PARAM2" => $arPost["BLOG_ID"], "PARAM3" => $arPost["ID"], "PERMISSIONS" => array(2), "TITLE" => blogTextParser::killAllTags($arPost["TITLE"]), "BODY" => $searchContent, "TAGS" => $tag, "USER_ID" => $arPost["AUTHOR_ID"], "ENTITY_TYPE_ID" => "BLOG_POST", "ENTITY_ID" => $arPost["ID"]); if ($arBlog["USE_SOCNET"] == "Y") { $arSearchIndex["PERMISSIONS"] = $arFields["SC_PERM"]; } CSearch::Index("blog", "P" . $ID, $arSearchIndex); } } } } return $ID; }