$cache_id .= "_" . $tzOffset; } $cache_path = "/" . SITE_ID . "/blog/" . $arBlog["URL"] . "/trackback/" . $arPost["ID"] . "/"; if ($arParams["CACHE_TIME"] > 0 && $cache->InitCache($arParams["CACHE_TIME"], $cache_id, $cache_path)) { $Vars = $cache->GetVars(); foreach ($Vars["arResult"] as $k => $v) { $arResult[$k] = $v; } CBitrixComponentTemplate::ApplyCachedData($Vars["templateCachedData"]); $cache->Output(); } else { if ($arParams["CACHE_TIME"] > 0) { $cache->StartDataCache($arParams["CACHE_TIME"], $cache_id, $cache_path); } $arResult["TrackBack"] = array(); $dbTrack = CBlogTrackback::GetList(array("POST_DATE" => "DESC"), array("BLOG_ID" => $arPost["BLOG_ID"], "POST_ID" => $arPost["ID"])); while ($arTrack = $dbTrack->GetNext()) { if ($arParams["TB_LENGTH"]) { $arTrack["PREVIEW_TEXT"] = TruncateText($arTrack["PREVIEW_TEXT"], $arParams["TB_LENGTH"]); } $arTrack["urlToDelete"] = $APPLICATION->GetCurPageParam("delete_trackback_id=" . $arTrack["ID"], array("sessid", "delete_trackback_id")); $arTrack["POST_DATE_FORMATED"] = FormatDate($arParams["DATE_TIME_FORMAT"], MakeTimeStamp($arTrack["POST_DATE"], CSite::GetDateFormat("FULL"))); $arResult["TrackBack"][] = $arTrack; } $serverName = ""; $dbSite = CSite::GetList($b = "sort", $o = "asc", array("LID" => SITE_ID)); if ($arSite = $dbSite->Fetch()) { $serverName = $arSite["SERVER_NAME"]; } if (strlen($serverName) <= 0) { if (defined("SITE_SERVER_NAME") && strlen(SITE_SERVER_NAME) > 0) {
function Delete($ID) { global $DB; $ID = IntVal($ID); $arPost = CBlogPost::GetByID($ID); if ($arPost) { $db_events = GetModuleEvents("blog", "OnBeforePostDelete"); while ($arEvent = $db_events->Fetch()) { if (ExecuteModuleEventEx($arEvent, array($ID)) === false) { return false; } } $dbResult = CBlogComment::GetList(array(), array("POST_ID" => $ID), false, false, array("ID")); while ($arResult = $dbResult->Fetch()) { if (!CBlogComment::Delete($arResult["ID"])) { return False; } } $dbResult = CBlogUserGroupPerms::GetList(array(), array("POST_ID" => $ID, "BLOG_ID" => $arPost["BLOG_ID"]), false, false, array("ID")); while ($arResult = $dbResult->Fetch()) { if (!CBlogUserGroupPerms::Delete($arResult["ID"])) { return False; } } $dbResult = CBlogTrackback::GetList(array(), array("POST_ID" => $ID, "BLOG_ID" => $arPost["BLOG_ID"]), false, false, array("ID")); while ($arResult = $dbResult->Fetch()) { if (!CBlogTrackback::Delete($arResult["ID"])) { return False; } } $dbResult = CBlogPostCategory::GetList(array(), array("POST_ID" => $ID, "BLOG_ID" => $arPost["BLOG_ID"]), false, false, array("ID")); while ($arResult = $dbResult->Fetch()) { if (!CBlogPostCategory::Delete($arResult["ID"])) { return False; } } $strSql = "SELECT F.ID " . "FROM b_blog_post P, b_file F " . "WHERE P.ID = " . $ID . " " . "\tAND P.ATTACH_IMG = F.ID "; $z = $DB->Query($strSql, false, "FILE: " . __FILE__ . " LINE:" . __LINE__); while ($zr = $z->Fetch()) { CFile::Delete($zr["ID"]); } unset($GLOBALS["BLOG_POST"]["BLOG_POST_CACHE_" . $ID]); $arBlog = CBlog::GetByID($arPost["BLOG_ID"]); $result = $DB->Query("DELETE FROM b_blog_post WHERE ID = " . $ID . "", true); if (IntVal($arBlog["LAST_POST_ID"]) == $ID) { CBlog::SetStat($arPost["BLOG_ID"]); } if ($result) { $res = CBlogImage::GetList(array(), array("POST_ID" => $ID, "IS_COMMENT" => "N")); while ($aImg = $res->Fetch()) { CBlogImage::Delete($aImg['ID']); } } if ($result) { $GLOBALS["USER_FIELD_MANAGER"]->Delete("BLOG_POST", $ID); } $db_events = GetModuleEvents("blog", "OnPostDelete"); while ($arEvent = $db_events->Fetch()) { ExecuteModuleEventEx($arEvent, array($ID, &$result)); } if (CModule::IncludeModule("search")) { CSearch::Index("blog", "P" . $ID, array("TITLE" => "", "BODY" => "")); //CSearch::DeleteIndex("blog", false, "COMMENT", $arPost["BLOG_ID"]."|".$ID); } return $result; } else { return false; } return True; }
public static function GetPing($blogUrl, $postID, $arParams = array()) { global $DB; $blogUrl = Trim($blogUrl); $postID = IntVal($postID); $bSuccess = True; $arPost = CBlogPost::GetByID($postID); if (!$arPost) { CBlogTrackback::SendPingResponce(1, "Invalid target post"); $bSuccess = False; } if ($bSuccess) { if ($arPost["ENABLE_TRACKBACK"] != "Y" || COption::GetOptionString("blog", "enable_trackback", "Y") != "Y") { CBlogTrackback::SendPingResponce(1, "Trackbacks disabled"); $bSuccess = False; } } if ($bSuccess) { $arBlog = CBlog::GetByID($arPost["BLOG_ID"]); if (!$arBlog || $arBlog["URL"] != $blogUrl) { CBlogTrackback::SendPingResponce(1, "Invalid target blog"); $bSuccess = False; } } if ($bSuccess) { if (!isset($arParams["title"]) || strlen($arParams["title"]) <= 0 || !isset($arParams["url"]) || strlen($arParams["url"]) <= 0) { CBlogTrackback::SendPingResponce(1, "Missing required fields"); $bSuccess = False; } } if ($bSuccess) { if (!isset($arParams["excerpt"])) { $arParams["excerpt"] = $arParams["title"]; } if (!isset($arParams["blog_name"])) { $arParams["blog_name"] = ""; } } if ($bSuccess) { $serverCharset = ""; $arGroup = CBlogGroup::GetByID($arBlog["GROUP_ID"]); $dbSite = CSite::GetList($b = "sort", $o = "asc", array("LID" => $arGroup["SITE_ID"])); if ($arSite = $dbSite->Fetch()) { $serverCharset = $arSite["CHARSET"]; } if (strlen($serverCharset) <= 0) { if (defined("SITE_CHARSET") && strlen(SITE_CHARSET) > 0) { $serverCharset = SITE_CHARSET; } else { $serverCharset = "windows-1251"; } } preg_match("/charset=(\")*(.*?)(\")*(;|\$)/", $_SERVER["CONTENT_TYPE"], $charset); $charset = preg_replace("#[^[:space:]a-zA-Z0-9\\-]#is", "", $charset[2]); if (strlen($charset) <= 0) { $charset = "utf-8"; } if ($charset != $serverCharset) { $arParams["title"] = $GLOBALS["APPLICATION"]->ConvertCharset($arParams["title"], $charset, $serverCharset); $arParams["url"] = $GLOBALS["APPLICATION"]->ConvertCharset($arParams["url"], $charset, $serverCharset); $arParams["excerpt"] = $GLOBALS["APPLICATION"]->ConvertCharset($arParams["excerpt"], $charset, $serverCharset); $arParams["blog_name"] = $GLOBALS["APPLICATION"]->ConvertCharset($arParams["blog_name"], $charset, $serverCharset); } $arFields = array("TITLE" => $arParams["title"], "URL" => $arParams["url"], "PREVIEW_TEXT" => $arParams["excerpt"], "BLOG_NAME" => $arParams["blog_name"], "=POST_DATE" => $DB->CurrentTimeFunction(), "BLOG_ID" => $arPost["BLOG_ID"], "POST_ID" => $arPost["ID"]); $dbTrackback = CBlogTrackback::GetList(array(), array("BLOG_ID" => $arPost["BLOG_ID"], "POST_ID" => $arPost["ID"], "URL" => $arParams["url"])); if ($arTrackback = $dbTrackback->Fetch()) { if (!CBlogTrackback::Update($arTrackback["ID"], $arFields)) { if ($ex = $GLOBALS["APPLICATION"]->GetException()) { $errorMessage = $ex->GetString() . ".<br>"; } else { $errorMessage = "Unknown error" . ".<br>"; } CBlogTrackback::SendPingResponce(1, $errorMessage); } } else { if (!CBlogTrackback::Add($arFields)) { if ($ex = $GLOBALS["APPLICATION"]->GetException()) { $errorMessage = $ex->GetString() . ".<br>"; } else { $errorMessage = "Unknown error" . ".<br>"; } CBlogTrackback::SendPingResponce(1, $errorMessage); } } CBlogTrackback::SendPingResponce(0, "Ping accepted"); } return $bSuccess; }