function CanUserDeletePost($ID, $userID) { $ID = IntVal($ID); $userID = IntVal($userID); $blogModulePermissions = $GLOBALS["APPLICATION"]->GetGroupRight("blog"); if ($blogModulePermissions >= "W") { return True; } $arPost = CBlogPost::GetByID($ID); if (!$arPost) { return False; } if (CBlog::IsBlogOwner($arPost["BLOG_ID"], $userID)) { return True; } $arBlogUser = CBlogUser::GetByID($userID, BLOG_BY_USER_ID); if ($arBlogUser && $arBlogUser["ALLOW_POST"] != "Y") { return False; } $perms = CBlogPost::GetBlogUserPostPerms($ID, $userID); if ($perms <= BLOG_PERMS_WRITE && $userID != $arPost["AUTHOR_ID"]) { return False; } if ($perms > BLOG_PERMS_WRITE) { return true; } if ($arPost["AUTHOR_ID"] == $userID) { return True; } return False; }
if ($bIDbyCode) { $arParams["ID"] = CBlogPost::GetID($arParams["ID"], $arBlog["ID"]); } $arPost = CBlogPost::GetByID($arParams["ID"]); if (empty($arPost) && !$bIDbyCode) { $arParams["ID"] = CBlogPost::GetID($arParams["ID"], $arBlog["ID"]); $arPost = CBlogPost::GetByID($arParams["ID"]); } if (!empty($arPost) && $arPost["PUBLISH_STATUS"] != BLOG_PUBLISH_STATUS_PUBLISH) { unset($arPost); } if (!empty($arPost) && $arBlog["ID"] == $arPost["BLOG_ID"]) { CBlogPost::CounterInc($arParams["ID"]); $arPost = CBlogTools::htmlspecialcharsExArray($arPost); $arResult["Post"] = $arPost; $arResult["PostPerm"] = CBlogPost::GetBlogUserPostPerms($arParams["ID"], $arResult["USER_ID"]); if ($arPost["AUTHOR_ID"] == $arBlog["OWNER_ID"]) { $arResult["urlToBlog"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_BLOG"], array("blog" => $arBlog["URL"], "user_id" => $arPost["AUTHOR_ID"])); } else { $arOwnerBlog = CBlog::GetByOwnerID($arPost["AUTHOR_ID"], $arParams["GROUP_ID"]); $arResult["urlToBlog"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_BLOG"], array("blog" => $arOwnerBlog["URL"], "user_id" => $arPost["AUTHOR_ID"])); } $arResult["urlToPost"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_POST"], array("blog" => $arBlog["URL"], "post_id" => CBlogPost::GetPostID($arResult["Post"]["ID"], $arResult["Post"]["CODE"], $arParams["ALLOW_POST_CODE"]), "user_id" => $arPost["AUTHOR_ID"])); if ($_GET["become_friend"] == "Y" && $arResult["PostPerm"] < BLOG_PERMS_READ) { if ($USER->IsAuthorized()) { $dbCandidate = CBlogCandidate::GetList(array(), array("BLOG_ID" => $arBlog["ID"], "USER_ID" => $arResult["USER_ID"])); if ($arCandidate = $dbCandidate->Fetch()) { $arResult["MESSAGE"] = GetMessage("B_B_MES_REQUEST_ALREADY") . "<br />"; } else { if (CBlogCandidate::Add(array("BLOG_ID" => $arBlog["ID"], "USER_ID" => $arResult["USER_ID"]))) { $arResult["MESSAGE"] = GetMessage("B_B_MES_REQUEST_ADDED") . "<br />";
if (!$BLOG_ID) { $BLOG_ID = intval($_POST['BLOG_ID']); } $arr = CBlogSitePath::GetBySiteID(SITE_ID); $sBlogPath = $arr['PATH']; if ($BLOG_ID) { $arBlog = CBlog::GetByID($BLOG_ID); } else { $res = CBlog::GetList(array(), array("URL" => $OWNER)); $arBlog = $res->Fetch(); $BLOG_ID = intval($arBlog['ID']); } if ($arBlog) { if (IntVal($ID) > 0 && ($arPost = CBlogPost::GetByID($ID))) { $APPLICATION->SetTitle(str_replace("#BLOG#", htmlspecialchars($arBlog["NAME"]), "" . GetMessage("BLOG_POST_EDIT") . "")); $perms = CBlogPost::GetBlogUserPostPerms($ID, $USER_ID); } else { $ID = 0; $APPLICATION->SetTitle(str_replace("#BLOG#", htmlspecialchars($arBlog["NAME"]), "" . GetMessage("BLOG_NEW_MESSAGE") . "")); $perms = CBlog::GetBlogUserPostPerms($BLOG_ID, $USER_ID); } if ($perms >= BLOG_PERMS_WRITE && (intval($arPost['ID']) == 0 || $arPost['BLOG_ID'] == $BLOG_ID)) { ###### Form #### $image_form = ' <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>' . GetMessage("BLOG_P_IMAGE_UPLOAD") . '</title> </head> <form action="' . $sBlogPath . '/post_edit.php" method=POST enctype="multipart/form-data"> ' . bitrix_sessid_post() . '
public function GetRSS($BlogCode, $type = "rss2.0", $numPosts = 10, $siteID = SITE_ID, $arPathTemplates = array(), $arFilterExt = array()) { if (!$this->IsAvailable()) { return false; } global $USER; //Post CNT $numPosts = IntVal($numPosts); //RSS type $type = ToLower(preg_replace("/[^a-zA-Z0-9.]/is", "", $type)); if (!in_array($type, array("rss2.0", "atom.03", "rss.92"))) { $type = "rss.92"; } //Prepare Extended filter if (!is_array($arFilterExt)) { $arFilterExt = array(); } $arSettings = array("BLOG_CODE" => $BlogCode, "NOW" => date("r"), "NOW_ISO" => date("Y-m-d\\TH:i:s") . substr(date("O"), 0, 3) . ":" . substr(date("O"), -2, 2), "SERVER_NAME" => "", "CHARSET" => "", "LANGUAGE" => "", "RSS" => "", "RSS_TYPE" => $type, "CURRENT_USER_ID" => $USER->IsAuthorized() ? $USER->GetID() : 0, "CATEGORIES" => CIdeaManagment::getInstance()->Idea()->GetCategoryList()); //Get Settings if possible if ($arSite = CSite::GetList($s = "sort", $o = "asc", array("LID" => SITE_ID))->Fetch()) { $arSettings["SERVER_NAME"] = $arSite["SERVER_NAME"]; $arSettings["CHARSET"] = $arSite["CHARSET"]; $arSettings["LANGUAGE"] = $arSite["LANGUAGE_ID"]; } //Get Server Name if (strlen($arSettings["SERVER_NAME"]) == 0) { if (defined("SITE_SERVER_NAME") && strlen(SITE_SERVER_NAME) > 0) { $arSettings["SERVER_NAME"] = SITE_SERVER_NAME; } else { $arSettings["SERVER_NAME"] = COption::GetOptionString("main", "server_name", ""); } } //Get Site Charset if (strlen($arSettings["CHARSET"]) == 0) { if (defined("SITE_CHARSET") && strlen(SITE_CHARSET) > 0) { $arSettings["CHARSET"] = SITE_CHARSET; } else { $arSettings["CHARSET"] = "windows-1251"; } } $arSettings["BLOG_URL"] = "http://" . $arSettings["SERVER_NAME"]; if (!empty($arPathTemplates) && strlen($arPathTemplates["INDEX"]) > 0) { $arSettings["BLOG_URL"] .= $arPathTemplates["INDEX"]; } if (!empty($arPathTemplates) && strlen($arPathTemplates["CUSTOM_TITLE"]) > 0) { $arSettings["BLOG_NAME"] = htmlspecialcharsbx($arPathTemplates["CUSTOM_TITLE"]); } else { $arSettings["BLOG_NAME"] = "\"" . htmlspecialcharsbx($arSite["NAME"]) . "\" (" . $arSettings["SERVER_NAME"] . ")"; } //Prepare Head Type part if ($arSettings["RSS_TYPE"] == "rss.92") { $arSettings["RSS"] .= "<" . "?xml version=\"1.0\" encoding=\"" . $arSettings["CHARSET"] . "\"?" . ">\n\n"; $arSettings["RSS"] .= "<rss version=\".92\">\n"; $arSettings["RSS"] .= " <channel>\n"; $arSettings["RSS"] .= "\t<title>" . $arSettings["BLOG_NAME"] . "</title>\n"; $arSettings["RSS"] .= "\t<link>" . $arSettings["BLOG_URL"] . "</link>\n"; $arSettings["RSS"] .= "\t<guid>" . $arSettings["BLOG_URL"] . "</guid>\n"; $arSettings["RSS"] .= "\t<language>" . $arSettings["LANGUAGE"] . "</language>\n"; $arSettings["RSS"] .= "\t<docs>http://backend.userland.com/rss092</docs>\n"; $arSettings["RSS"] .= "\n"; } elseif ($arSettings["RSS_TYPE"] == "rss2.0") { $arSettings["RSS"] .= "<" . "?xml version=\"1.0\" encoding=\"" . $arSettings["CHARSET"] . "\"?" . ">\n\n"; $arSettings["RSS"] .= "<rss version=\"2.0\">\n"; $arSettings["RSS"] .= " <channel>\n"; $arSettings["RSS"] .= "\t<title>" . $arSettings["BLOG_NAME"] . "</title>\n"; $arSettings["RSS"] .= "\t<description>" . $arSettings["BLOG_NAME"] . "</description>\n"; $arSettings["RSS"] .= "\t<link>" . $arSettings["BLOG_URL"] . "</link>\n"; $arSettings["RSS"] .= "\t<language>" . $arSettings["LANGUAGE"] . "</language>\n"; $arSettings["RSS"] .= "\t<docs>http://backend.userland.com/rss2</docs>\n"; $arSettings["RSS"] .= "\t<pubDate>" . $arSettings["NOW"] . "</pubDate>\n"; $arSettings["RSS"] .= "\n"; } elseif ($arSettings["RSS_TYPE"] == "atom.03") { $atomID = "tag:" . htmlspecialcharsbx($arSettings["SERVER_NAME"]) . "," . date("Y-m-d"); $arSettings["RSS"] .= "<" . "?xml version=\"1.0\" encoding=\"" . $arSettings["CHARSET"] . "\"?" . ">\n\n"; $arSettings["RSS"] .= "<feed version=\"0.3\" xmlns=\"http://purl.org/atom/ns#\" xml:lang=\"" . $arSettings["LANGUAGE"] . "\">\n"; $arSettings["RSS"] .= " <title>" . $arSettings["BLOG_NAME"] . "</title>\n"; $arSettings["RSS"] .= " <tagline>" . $arSettings["BLOG_URL"] . "</tagline>\n"; $arSettings["RSS"] .= " <id>" . $atomID . "</id>\n"; $arSettings["RSS"] .= " <link rel=\"alternate\" type=\"text/html\" href=\"" . $arSettings["BLOG_URL"] . "\" />\n"; $arSettings["RSS"] .= " <copyright>Copyright (c) " . $arSettings["SERVER_NAME"] . "</copyright>\n"; $arSettings["RSS"] .= " <modified>" . $arSettings["NOW_ISO"] . "</modified>\n"; $arSettings["RSS"] .= "\n"; } $arParserParams = array("imageWidth" => $arPathTemplates["IMAGE_MAX_WIDTH"], "imageHeight" => $arPathTemplates["IMAGE_MAX_HEIGHT"]); //Text Parser $parser = new blogTextParser(); //SELECT $arSelFields = array("ID", "TITLE", "DETAIL_TEXT", "DATE_PUBLISH", "AUTHOR_ID", "BLOG_USER_ALIAS", "BLOG_ID", "DETAIL_TEXT_TYPE", "BLOG_URL", "BLOG_OWNER_ID", "BLOG_SOCNET_GROUP_ID", "BLOG_GROUP_SITE_ID", "CODE", self::UFCategroryCodeField); //WHERE $arFilter = array("<=DATE_PUBLISH" => ConvertTimeStamp(false, "FULL", false), "PUBLISH_STATUS" => BLOG_PUBLISH_STATUS_PUBLISH, "BLOG_ENABLE_RSS" => "Y", "MICRO" => "N"); if (intval($arSettings["BLOG_CODE"]) === $arSettings["BLOG_CODE"]) { $arFilter["BLOG_ID"] = $arSettings["BLOG_CODE"]; } else { $arFilter["BLOG_URL"] = $arSettings["BLOG_CODE"]; } //Extend standart filter $arFilter = array_merge($arFilter, $arFilterExt); CTimeZone::Disable(); $dbPosts = CBlogPost::GetList(array("DATE_PUBLISH" => "DESC"), $arFilter, false, array("nTopCount" => $numPosts), $arSelFields); CTimeZone::Enable(); while ($arPost = $dbPosts->Fetch()) { //Can read if (CBlogPost::GetBlogUserPostPerms($arPost["ID"], $arSettings["CURRENT_USER_ID"]) < BLOG_PERMS_READ) { continue; } $arAuthorUser = $USER->GetByID($arPost["AUTHOR_ID"])->Fetch(); $author = CBlogUser::GetUserName($arPost["BLOG_USER_ALIAS"], $arAuthorUser["NAME"], $arAuthorUser["LAST_NAME"], $arAuthorUser["LOGIN"], $arAuthorUser["SECOND_NAME"]); $title = str_replace(array("&", "<", ">", "\""), array("&", "<", ">", """), $author . ": " . $arPost["TITLE"]); //Idea Images $arImages = array(); $res = CBlogImage::GetList(array("ID" => "ASC"), array("POST_ID" => $arPost["ID"], "BLOG_ID" => $arPost["BLOG_ID"], "IS_COMMENT" => "N")); while ($arImage = $res->Fetch()) { $arImages[$arImage['ID']] = $arImage['FILE_ID']; } $arDate = ParseDateTime($arPost["DATE_PUBLISH"], CSite::GetDateFormat("FULL", $arPost["BLOG_GROUP_SITE_ID"])); $date = date("r", mktime($arDate["HH"], $arDate["MI"], $arDate["SS"], $arDate["MM"], $arDate["DD"], $arDate["YYYY"])); if (!empty($arPathTemplates)) { $url = htmlspecialcharsbx("http://" . $arSettings["SERVER_NAME"] . CComponentEngine::MakePathFromTemplate($arPathTemplates["BLOG_POST"], array("blog" => $arPost["BLOG_URL"], "post_id" => CBlogPost::GetPostID($arPost["ID"], $arPost["CODE"], $arPathTemplates["ALLOW_POST_CODE"]), "user_id" => $arPost["BLOG_OWNER_ID"], "group_id" => $arPost["BLOG_SOCNET_GROUP_ID"]))); } else { $url = htmlspecialcharsbx("http://" . $arSettings["SERVER_NAME"] . CBlogPost::PreparePath(htmlspecialcharsbx($arPost["BLOG_URL"]), $arPost["ID"], $arPost["BLOG_GROUP_SITE_ID"])); } $category = ""; if (isset($arPost[self::UFCategroryCodeField]) && is_array($arSettings["CATEGORIES"][ToUpper($arPost[self::UFCategroryCodeField])])) { $category = htmlspecialcharsbx($arSettings["CATEGORIES"][ToUpper($arPost[self::UFCategroryCodeField])]["NAME"]); } if (strlen($arPathTemplates["USER"]) > 0) { $authorURL = htmlspecialcharsbx("http://" . $arSettings["SERVER_NAME"] . CComponentEngine::MakePathFromTemplate($arPathTemplates["USER"], array("user_id" => $arPost["AUTHOR_ID"], "group_id" => $arPost["BLOG_SOCNET_GROUP_ID"]))); } else { $authorURL = htmlspecialcharsbx("http://" . $arSettings["SERVER_NAME"] . CBlogUser::PreparePath($arPost["AUTHOR_ID"], $arPost["BLOG_GROUP_SITE_ID"])); } if ($arPost["DETAIL_TEXT_TYPE"] == "html") { $IdeaText = $parser->convert_to_rss($arPost["DETAIL_TEXT"], $arImages, array("HTML" => "Y", "ANCHOR" => "Y", "IMG" => "Y", "SMILES" => "Y", "NL2BR" => "N", "QUOTE" => "Y", "CODE" => "Y"), true, $arParserParams); } else { $IdeaText = $parser->convert_to_rss($arPost["DETAIL_TEXT"], $arImages, false, true, $arParserParams); } $IdeaText .= "<br /><a href=\"" . $url . "\">" . GetMessage("BLG_GB_RSS_DETAIL") . "</a>"; $IdeaText = "<![CDATA[" . $IdeaText . "]]>"; if ($arSettings["RSS_TYPE"] == "rss.92") { $arSettings["RSS"] .= "\t<item>\n"; $arSettings["RSS"] .= "\t <title>" . $title . "</title>\n"; $arSettings["RSS"] .= "\t <description>" . $IdeaText . "</description>\n"; $arSettings["RSS"] .= "\t <link>" . $url . "</link>\n"; $arSettings["RSS"] .= "\t</item>\n"; $arSettings["RSS"] .= "\n"; } elseif ($arSettings["RSS_TYPE"] == "rss2.0") { $arSettings["RSS"] .= "\t<item>\n"; $arSettings["RSS"] .= "\t <title>" . $title . "</title>\n"; $arSettings["RSS"] .= "\t <description>" . $IdeaText . "</description>\n"; $arSettings["RSS"] .= "\t <link>" . $url . "</link>\n"; $arSettings["RSS"] .= "\t <guid>" . $url . "</guid>\n"; $arSettings["RSS"] .= "\t <pubDate>" . $date . "</pubDate>\n"; if (strlen($category) > 0) { $arSettings["RSS"] .= "\t <category>" . $category . "</category>\n"; } $arSettings["RSS"] .= "\t</item>\n"; $arSettings["RSS"] .= "\n"; } elseif ($arSettings["RSS_TYPE"] == "atom.03") { $atomID = "tag:" . htmlspecialcharsbx($arSettings["SERVER_NAME"]) . ":" . $arBlog["URL"] . "/" . $arPost["ID"]; $timeISO = mktime($arDate["HH"], $arDate["MI"], $arDate["SS"], $arDate["MM"], $arDate["DD"], $arDate["YYYY"]); $dateISO = date("Y-m-d\\TH:i:s", $timeISO) . substr(date("O", $timeISO), 0, 3) . ":" . substr(date("O", $timeISO), -2, 2); $titleRel = htmlspecialcharsbx($arPost["TITLE"]); $arSettings["RSS"] .= "<entry>\n"; $arSettings["RSS"] .= " <title type=\"text/html\">" . $title . "</title>\n"; $arSettings["RSS"] .= " <link rel=\"alternate\" type=\"text/html\" href=\"" . $url . "\"/>\n"; $arSettings["RSS"] .= " <issued>" . $dateISO . "</issued>\n"; $arSettings["RSS"] .= " <modified>" . $arSettings["NOW_ISO"] . "</modified>\n"; $arSettings["RSS"] .= " <id>" . $atomID . "</id>\n"; $arSettings["RSS"] .= " <content type=\"text/html\" mode=\"escaped\" xml:lang=\"" . $arSettings["LANGUAGE"] . "\" xml:base=\"" . $arSettings["BLOG_URL"] . "\">\n"; $arSettings["RSS"] .= $IdeaText . "\n"; $arSettings["RSS"] .= " </content>\n"; $arSettings["RSS"] .= " <link rel=\"related\" type=\"text/html\" href=\"" . $url . "\" title=\"" . $titleRel . "\"/>\n"; $arSettings["RSS"] .= " <author>\n"; $arSettings["RSS"] .= "\t<name>" . htmlspecialcharsbx($author) . "</name>\n"; $arSettings["RSS"] .= "\t<url>" . $authorURL . "</url>\n"; $arSettings["RSS"] .= " </author>\n"; $arSettings["RSS"] .= "</entry>\n"; $arSettings["RSS"] .= "\n"; } } if ($arSettings["RSS_TYPE"] == "rss.92") { $arSettings["RSS"] .= " </channel>\n</rss>"; } elseif ($arSettings["RSS_TYPE"] == "rss2.0") { $arSettings["RSS"] .= " </channel>\n</rss>"; } elseif ($arSettings["RSS_TYPE"] == "atom.03") { $arSettings["RSS"] .= "\n\n</feed>"; } return $arSettings["RSS"]; }
$arParams["EDITOR_DEFAULT_HEIGHT"] = intVal($arParams["EDITOR_DEFAULT_HEIGHT"]); if (IntVal($arParams["EDITOR_DEFAULT_HEIGHT"]) <= 0) { $arParams["EDITOR_DEFAULT_HEIGHT"] = 300; } $user_id = $USER->GetID(); $arResult["UserID"] = $user_id; $arResult["enable_trackback"] = COption::GetOptionString("blog", "enable_trackback", "Y"); $arResult["allowVideo"] = COption::GetOptionString("blog", "allow_video", "Y"); $blogModulePermissions = $APPLICATION->GetGroupRight("blog"); $arParams["ALLOW_POST_CODE"] = $arParams["ALLOW_POST_CODE"] !== "N"; $arParams["USE_GOOGLE_CODE"] = $arParams["USE_GOOGLE_CODE"] === "Y"; $arParams["SEO_USE"] = $arParams["SEO_USE"] == "Y" ? "Y" : "N"; $arResult["preview"] = strlen($_POST["preview"]) > 0 ? "Y" : "N"; $arBlog = CBlog::GetByUrl($arParams["BLOG_URL"], $arParams["GROUP_ID"]); if (IntVal($arParams["ID"]) > 0) { $arResult["perms"] = CBlogPost::GetBlogUserPostPerms($arParams["ID"], $arResult["UserID"]); } else { $arResult["perms"] = CBlog::GetBlogUserPostPerms($arBlog["ID"], $arResult["UserID"]); } if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_REQUEST['mfi_mode']) && $_REQUEST['mfi_mode'] == "upload") { CBlogImage::AddImageResizeHandler(array("width" => 400, "height" => 400)); } if (!empty($arBlog) && $arBlog["ACTIVE"] == "Y") { $arGroup = CBlogGroup::GetByID($arBlog["GROUP_ID"]); if ($arGroup["SITE_ID"] == SITE_ID) { $arResult["Blog"] = $arBlog; $arResult["urlToBlog"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_BLOG"], array("blog" => $arBlog["URL"], "user_id" => $arBlog["OWNER_ID"])); if (IntVal($arParams["ID"]) > 0 && ($arPost = CBlogPost::GetByID($arParams["ID"]))) { $arPost = CBlogTools::htmlspecialcharsExArray($arPost); $arResult["Post"] = $arPost; if ($arParams["SET_TITLE"] == "Y" && !$arParams["MICROBLOG"]) {
if (empty($arResult["FILE"])) { $arError = array("code" => "EMPTY FILE", "title" => GetMessage("F_EMPTY_FID")); } else { if (intVal($arResult["FILE_INFO"]["POST_ID"]) > 0) { if (empty($arResult['POST'])) { $dbPost = CBlogPost::GetList(array(), array("ID" => $arResult["FILE_INFO"]["POST_ID"], "BLOG_ID" => $arResult["FILE_INFO"]["BLOG_ID"]), false, false, array("ID", "BLOG_ID", "BLOG_OWNER_ID", "BLOG_SOCNET_GROUP_ID", "BLOG_USE_SOCNET", "AUTHOR_ID")); $arResult["POST"] = $dbPost->Fetch(); } if (!empty($arResult['POST'])) { if ($arResult["POST"]["BLOG_USE_SOCNET"] == "Y") { if (!CModule::IncludeModule("socialnetwork")) { return; } $arParams["PERMISSION"] = CBlogPost::GetSocNetPostPerms($arResult["POST"]["ID"]); } else { $arParams["PERMISSION"] = CBlogPost::GetBlogUserPostPerms($arResult["POST"]["ID"], $user_id); } } } } if (empty($arError)) { if (empty($arResult["POST"])) { $arError = array("code" => "EMPTY POST", "title" => GetMessage("F_EMPTY_MID")); } elseif ($arParams["PERMISSION"] < BLOG_PERMS_READ) { $arError = array("code" => "NOT RIGHT", "title" => GetMessage("F_NOT_RIGHT")); } } if (!empty($arError)) { require $_SERVER["DOCUMENT_ROOT"] . BX_ROOT . "/modules/main/include/prolog_after.php"; echo ShowError(!empty($arError["title"]) ? $arError["title"] : $arError["code"]); require $_SERVER["DOCUMENT_ROOT"] . BX_ROOT . "/modules/main/include/epilog.php";
function BuildRSSAll($GroupId = 0, $type = "RSS .92", $numPosts = 10, $siteID = SITE_ID, $postTemplate = "", $userTemplate = "", $arAvBlog = array(), $arPathTemplates = array(), $arGroupID = array(), $bUserSocNet = "N") { $GroupId = IntVal($GroupId); $numPosts = IntVal($numPosts); $user_id = IntVal($GLOBALS["USER"]->GetID()); $type = strtolower(preg_replace("/[^a-zA-Z0-9.]/is", "", $type)); if ($type != "rss2.0" && $type != "atom.03") { $type = "rss.92"; } $rssText = False; $groupIdArray = array(); $arGroup = array(); if ($GroupId > 0) { if (!empty($arGroupID) && in_array($GroupId, $arGroupID) || empty($arGroupID)) { $arGroup = CBlogGroup::GetByID($GroupId); } } $now = date("r"); $nowISO = date("Y-m-d\\TH:i:s") . substr(date("O"), 0, 3) . ":" . substr(date("O"), -2, 2); $serverName = ""; $charset = ""; $language = ""; $dbSite = CSite::GetList($b = "sort", $o = "asc", array("LID" => SITE_ID)); if ($arSite = $dbSite->Fetch()) { $serverName = $arSite["SERVER_NAME"]; $charset = $arSite["CHARSET"]; $language = $arSite["LANGUAGE_ID"]; } 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", ""); } } if (strlen($charset) <= 0) { if (defined("SITE_CHARSET") && strlen(SITE_CHARSET) > 0) { $charset = SITE_CHARSET; } else { $charset = "windows-1251"; } } $blogURL = "http://" . $serverName; if ($GroupId > 0) { $blogName = GetMessage("BLG_RSS_ALL_GROUP_TITLE") . " \"" . htmlspecialcharsbx($arGroup["NAME"]) . "\" (" . $serverName . ")"; } else { $blogName = GetMessage("BLG_RSS_ALL_TITLE") . " \"" . htmlspecialcharsbx($arSite["NAME"]) . "\" (" . $serverName . ")"; } $rssText = ""; if ($type == "rss.92") { $rssText .= "<" . "?xml version=\"1.0\" encoding=\"" . $charset . "\"?" . ">\n\n"; $rssText .= "<rss version=\".92\">\n"; $rssText .= " <channel>\n"; $rssText .= "\t<title>" . $blogName . "</title>\n"; $rssText .= "\t<link>" . $blogURL . "</link>\n"; $rssText .= "\t<guid>" . $blogURL . "</guid>\n"; $rssText .= "\t<language>" . $language . "</language>\n"; $rssText .= "\t<docs>http://backend.userland.com/rss092</docs>\n"; $rssText .= "\n"; } elseif ($type == "rss2.0") { $rssText .= "<" . "?xml version=\"1.0\" encoding=\"" . $charset . "\"?" . ">\n\n"; $rssText .= "<rss version=\"2.0\">\n"; $rssText .= " <channel>\n"; $rssText .= "\t<title>" . $blogName . "</title>\n"; $rssText .= "\t<description>" . $blogName . "</description>\n"; $rssText .= "\t<link>" . $blogURL . "</link>\n"; $rssText .= "\t<language>" . $language . "</language>\n"; $rssText .= "\t<docs>http://backend.userland.com/rss2</docs>\n"; $rssText .= "\t<pubDate>" . $now . "</pubDate>\n"; $rssText .= "\n"; } elseif ($type == "atom.03") { $atomID = "tag:" . htmlspecialcharsbx($serverName) . "," . date("Y-m-d"); $rssText .= "<" . "?xml version=\"1.0\" encoding=\"" . $charset . "\"?" . ">\n\n"; $rssText .= "<feed version=\"0.3\" xmlns=\"http://purl.org/atom/ns#\" xml:lang=\"" . $language . "\">\n"; $rssText .= " <title>" . $blogName . "</title>\n"; $rssText .= " <tagline>" . $blogURL . "</tagline>\n"; $rssText .= " <id>" . $atomID . "</id>\n"; $rssText .= " <link rel=\"alternate\" type=\"text/html\" href=\"" . $blogURL . "\" />\n"; $rssText .= " <copyright>Copyright (c) " . $blogURL . "</copyright>\n"; $rssText .= " <modified>" . $nowISO . "</modified>\n"; $rssText .= "\n"; } $parser = new blogTextParser(); $arParserParams = array("imageWidth" => $arPathTemplates["IMAGE_MAX_WIDTH"], "imageHeight" => $arPathTemplates["IMAGE_MAX_HEIGHT"]); $arFilter = array("<=DATE_PUBLISH" => ConvertTimeStamp(false, "FULL", false), "PUBLISH_STATUS" => BLOG_PUBLISH_STATUS_PUBLISH, "BLOG_ENABLE_RSS" => "Y", "MICRO" => "N"); $arSelFields = array("ID", "TITLE", "DETAIL_TEXT", "DATE_PUBLISH", "AUTHOR_ID", "BLOG_USER_ALIAS", "BLOG_ID", "DETAIL_TEXT_TYPE", "BLOG_URL", "BLOG_OWNER_ID", "BLOG_SOCNET_GROUP_ID", "BLOG_GROUP_SITE_ID", "CODE", "PATH"); if (!empty($arGroup)) { $arFilter["BLOG_GROUP_ID"] = $arGroup["ID"]; } elseif (count($arGroupID) > 0) { $arFilter["BLOG_GROUP_ID"] = $arGroupID; } if (count($arAvBlog) > 0) { $arFilter["BLOG_ID"] = $arAvBlog; } if ($siteID !== false) { $arFilter["BLOG_GROUP_SITE_ID"] = $siteID; } if ($bUserSocNet == "Y") { $arFilter["BLOG_USE_SOCNET"] = "Y"; $arFilter["FOR_USER"] = $user_id; unset($arFilter["MICRO"]); } CTimeZone::Disable(); $dbPosts = CBlogPost::GetList(array("DATE_PUBLISH" => "DESC"), $arFilter, false, array("nTopCount" => $numPosts), $arSelFields); CTimeZone::Enable(); while ($arPost = $dbPosts->Fetch()) { $perms = CBlogPost::GetBlogUserPostPerms($arPost["ID"], $GLOBALS["USER"]->IsAuthorized() ? $GLOBALS["USER"]->GetID() : 0); if ($perms < BLOG_PERMS_READ) { continue; } $dbUser = CUser::GetByID($arPost["AUTHOR_ID"]); $arUser = $dbUser->Fetch(); $author = CBlogUser::GetUserName($arPost["BLOG_USER_ALIAS"], $arUser["NAME"], $arUser["LAST_NAME"], $arUser["LOGIN"], $arUser["SECOND_NAME"]); $title = str_replace(array("&", "<", ">", "\""), array("&", "<", ">", """), $author . ": " . $arPost["TITLE"]); $arImages = array(); $res = CBlogImage::GetList(array("ID" => "ASC"), array("POST_ID" => $arPost["ID"], "BLOG_ID" => $arPost["BLOG_ID"], "IS_COMMENT" => "N")); while ($arImage = $res->Fetch()) { $arImages[$arImage['ID']] = $arImage['FILE_ID']; } $arDate = ParseDateTime($arPost["DATE_PUBLISH"], CSite::GetDateFormat("FULL", $arPost["BLOG_GROUP_SITE_ID"])); $date = date("r", mktime($arDate["HH"], $arDate["MI"], $arDate["SS"], $arDate["MM"], $arDate["DD"], $arDate["YYYY"])); if (strlen($arPost["PATH"]) > 0) { $url = htmlspecialcharsbx("http://" . $serverName . str_replace("#post_id#", CBlogPost::GetPostID($arPost["ID"], $arPost["CODE"], $arParams["ALLOW_POST_CODE"]), $arPost["PATH"])); } elseif (!empty($arPathTemplates)) { if (IntVal($arPost["BLOG_SOCNET_GROUP_ID"]) > 0 && strlen($arPathTemplates["GROUP_BLOG_POST"]) > 0) { $url = htmlspecialcharsbx("http://" . $serverName . CComponentEngine::MakePathFromTemplate($arPathTemplates["GROUP_BLOG_POST"], array("blog" => $arPost["BLOG_URL"], "post_id" => CBlogPost::GetPostID($arPost["ID"], $arPost["CODE"], $arPathTemplates["ALLOW_POST_CODE"]), "user_id" => $arPost["BLOG_OWNER_ID"], "group_id" => $arPost["BLOG_SOCNET_GROUP_ID"]))); } else { $url = htmlspecialcharsbx("http://" . $serverName . CComponentEngine::MakePathFromTemplate($arPathTemplates["BLOG_POST"], array("blog" => $arPost["BLOG_URL"], "post_id" => CBlogPost::GetPostID($arPost["ID"], $arPost["CODE"], $arPathTemplates["ALLOW_POST_CODE"]), "user_id" => $arPost["BLOG_OWNER_ID"], "group_id" => $arPost["BLOG_SOCNET_GROUP_ID"]))); } } elseif (strLen($postTemplate) > 0) { $url = htmlspecialcharsbx("http://" . $serverName . CComponentEngine::MakePathFromTemplate($postTemplate, array("blog" => $arPost["BLOG_URL"], "post_id" => $arPost["ID"], "user_id" => $arPost["BLOG_OWNER_ID"], "group_id" => $arPost["BLOG_SOCNET_GROUP_ID"]))); } else { $url = htmlspecialcharsbx("http://" . $serverName . CBlogPost::PreparePath(htmlspecialcharsbx($arPost["BLOG_URL"]), $arPost["ID"], $arPost["BLOG_GROUP_SITE_ID"])); } $category = htmlspecialcharsbx($arPost["CATEGORY_NAME"]); if (strlen($arPathTemplates["USER"]) > 0) { $authorURL = htmlspecialcharsbx("http://" . $serverName . CComponentEngine::MakePathFromTemplate($arPathTemplates["USER"], array("user_id" => $arPost["AUTHOR_ID"], "group_id" => $arPost["BLOG_SOCNET_GROUP_ID"]))); } elseif (strLen($userTemplate) > 0) { $authorURL = htmlspecialcharsbx("http://" . $serverName . CComponentEngine::MakePathFromTemplate($userTemplate, array("user_id" => $arPost["AUTHOR_ID"], "group_id" => $arPost["BLOG_SOCNET_GROUP_ID"]))); } else { $authorURL = htmlspecialcharsbx("http://" . $serverName . CBlogUser::PreparePath($arPost["AUTHOR_ID"], $arPost["BLOG_GROUP_SITE_ID"])); } if ($arPost["DETAIL_TEXT_TYPE"] == "html") { $text = $parser->convert_to_rss($arPost["DETAIL_TEXT"], $arImages, array("HTML" => "Y", "ANCHOR" => "Y", "IMG" => "Y", "SMILES" => "Y", "NL2BR" => "N", "QUOTE" => "Y", "CODE" => "Y"), true, $arParserParams); } else { $text = $parser->convert_to_rss($arPost["DETAIL_TEXT"], $arImages, false, true, $arParserParams); } if ($bUserSocNet != "Y") { $text .= "<br /><a href=\"" . $url . "\">" . GetMessage("BLG_GB_RSS_DETAIL") . "</a>"; } $text = "<![CDATA[" . $text . "]]>"; if ($type == "rss.92") { $rssText .= " <item>\n"; $rssText .= " <title>" . $title . "</title>\n"; $rssText .= " <description>" . $text . "</description>\n"; $rssText .= " <link>" . $url . "</link>\n"; $rssText .= " </item>\n"; $rssText .= "\n"; } elseif ($type == "rss2.0") { $rssText .= " <item>\n"; $rssText .= " <title>" . $title . "</title>\n"; $rssText .= " <description>" . $text . "</description>\n"; $rssText .= " <link>" . $url . "</link>\n"; $rssText .= " <guid>" . $url . "</guid>\n"; $rssText .= " <pubDate>" . $date . "</pubDate>\n"; if (strlen($category) > 0) { $rssText .= " <category>" . $category . "</category>\n"; } $rssText .= " </item>\n"; $rssText .= "\n"; } elseif ($type == "atom.03") { $atomID = "tag:" . htmlspecialcharsbx($serverName) . ":" . $arBlog["URL"] . "/" . $arPost["ID"]; $timeISO = mktime($arDate["HH"], $arDate["MI"], $arDate["SS"], $arDate["MM"], $arDate["DD"], $arDate["YYYY"]); $dateISO = date("Y-m-d\\TH:i:s", $timeISO) . substr(date("O", $timeISO), 0, 3) . ":" . substr(date("O", $timeISO), -2, 2); $titleRel = htmlspecialcharsbx($arPost["TITLE"]); $rssText .= "<entry>\n"; $rssText .= " <title type=\"text/html\">" . $title . "</title>\n"; $rssText .= " <link rel=\"alternate\" type=\"text/html\" href=\"" . $url . "\"/>\n"; $rssText .= " <issued>" . $dateISO . "</issued>\n"; $rssText .= " <modified>" . $nowISO . "</modified>\n"; $rssText .= " <id>" . $atomID . "</id>\n"; $rssText .= " <content type=\"text/html\" mode=\"escaped\" xml:lang=\"" . $language . "\" xml:base=\"" . $blogURL . "\">\n"; $rssText .= $text . "\n"; $rssText .= " </content>\n"; $rssText .= " <link rel=\"related\" type=\"text/html\" href=\"" . $url . "\" title=\"" . $titleRel . "\"/>\n"; $rssText .= " <author>\n"; $rssText .= " <name>" . htmlspecialcharsbx($author) . "</name>\n"; $rssText .= " <url>" . $authorURL . "</url>\n"; $rssText .= " </author>\n"; $rssText .= "</entry>\n"; $rssText .= "\n"; } } if ($type == "rss.92") { $rssText .= " </channel>\n</rss>"; } elseif ($type == "rss2.0") { $rssText .= " </channel>\n</rss>"; } elseif ($type == "atom.03") { $rssText .= "\n\n</feed>"; } return $rssText; }