public static function CallBack_AddComment($arFields) { if (!CModule::IncludeModule('blog')) { return false; } $arResult = array(); $arLog = CSocNetLog::GetList(array("ID" => "DESC"), array("TMP_ID" => $arFields["LOG_ID"]), false, false, array("ID", "SOURCE_ID", "SITE_ID", "RATING_ENTITY_ID"))->Fetch(); if ($arLog) { $arIdeaPost = CBlogPost::GetById($arLog["SOURCE_ID"]); if ($arIdeaPost) { $UserIP = CBlogUser::GetUserIP(); $IdeaCommentId = CBlogComment::Add(array("BLOG_ID" => $arIdeaPost["BLOG_ID"], "POST_ID" => $arIdeaPost["ID"], "AUTHOR_ID" => $arFields["USER_ID"], "POST_TEXT" => $arFields["MESSAGE"], "DATE_CREATE" => ConvertTimeStamp(time() + CTimeZone::GetOffset(), "FULL"), "PARENT_ID" => false, "AUTHOR_IP" => $UserIP[0], "AUTHOR_IP1" => $UserIP[1])); $arResult = array("SOURCE_ID" => $IdeaCommentId); if ($arLog["RATING_ENTITY_ID"] > 0) { $arResult["RATING_TYPE_ID"] = "BLOG_COMMENT"; $arResult["RATING_ENTITY_ID"] = $IdeaCommentId; } if (intval($IdeaCommentId) == 0) { global $APPLICATION; if ($ex = $APPLICATION->GetException()) { $arResult["ERROR"] = $ex->GetString(); } } else { //clear cache on succcess BXClearCache(True, "/" . SITE_ID . "/idea/" . $arIdeaPost["BLOG_ID"] . "/first_page/"); BXClearCache(True, "/" . SITE_ID . "/idea/" . $arIdeaPost["BLOG_ID"] . "/pages/"); BXClearCache(True, "/" . SITE_ID . "/idea/" . $arIdeaPost["BLOG_ID"] . "/comment/" . $arIdeaPost["ID"] . "/"); BXClearCache(True, "/" . SITE_ID . "/idea/" . $arIdeaPost["BLOG_ID"] . "/post/" . $arIdeaPost["ID"] . "/"); } } } return $arResult; }
public function addComment($authorId, array $data) { $this->loadBlogPostData(); $commentFields = array("POST_ID" => $this->entityId, "BLOG_ID" => $this->blogPostData['BLOG_ID'], "POST_TEXT" => $data['text'], "DATE_CREATE" => new DateTime(), "PARENT_ID" => false, "AUTHOR_ID" => $authorId, "HAS_PROPS" => 'Y'); if (!empty($data['fileId'])) { $commentFields['UF_BLOG_COMMENT_FILE'] = array($data['fileId']); } elseif (!empty($data['versionId'])) { $commentFields['UF_BLOG_COMMENT_FH'] = $data['versionId']; } $comId = \CBlogComment::add($commentFields); if (!$comId) { return; } if (method_exists("CBlogComment", "addLiveComment")) { /** @noinspection PhpDynamicAsStaticMethodCallInspection */ \CBlogComment::addLiveComment($comId, array("MODE" => "PULL_MESSAGE")); } BXClearCache(true, "/blog/comment/" . $this->entityId . "/"); if (!Loader::includeModule('socialnetwork')) { return; } $query = \CSocNetLog::getList(array("ID" => "DESC"), array("EVENT_ID" => array("blog_post", "blog_post_important"), "SOURCE_ID" => $this->entityId), false, false, array("ID", "TMP_ID")); $row = $query->fetch(); if (!$row) { return; } $fieldsForSocnet = array("ENTITY_TYPE" => SONET_ENTITY_USER, "ENTITY_ID" => $this->blogPostData["AUTHOR_ID"], "EVENT_ID" => "blog_comment", "=LOG_DATE" => Application::getInstance()->getConnection()->getSqlHelper()->getCurrentDateTimeFunction(), "MESSAGE" => "file", "TEXT_MESSAGE" => "file", "URL" => "", "MODULE_ID" => false, "SOURCE_ID" => $comId, "LOG_ID" => $row["ID"], "RATING_TYPE_ID" => "BLOG_COMMENT", "RATING_ENTITY_ID" => $comId, "USER_ID" => $authorId); \CSocNetLogComments::add($fieldsForSocnet, false, false, false); }
public static function Init() { static::$obCache = new \CPHPCache(); if (!empty($_GET['clear_cache'])) { BXClearCache('/BXHelper/'); } }
public static function Update($ID, $arFields) { global $DB, $CACHE_MANAGER; $ID = IntVal($ID); if ($ID <= 0) { return False; } if (!CBlogSmile::CheckFields("UPDATE", $arFields)) { return false; } $strUpdate = $DB->PrepareUpdate("b_blog_smile", $arFields); $strSql = "UPDATE b_blog_smile SET " . $strUpdate . " WHERE ID = " . $ID; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); if (is_set($arFields, "LANG")) { $DB->Query("DELETE FROM b_blog_smile_lang WHERE SMILE_ID = " . $ID . ""); for ($i = 0; $i < count($arFields["LANG"]); $i++) { $arInsert = $DB->PrepareInsert("b_blog_smile_lang", $arFields["LANG"][$i]); $strSql = "INSERT INTO b_blog_smile_lang(SMILE_ID, " . $arInsert[0] . ") " . "VALUES(" . $ID . ", " . $arInsert[1] . ")"; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } } $CACHE_MANAGER->Clean("b_blog_smile"); BXClearCache(true, "/blog/smiles/"); return $ID; }
/** * Flushes all bitrix cache. * * @return void */ public static function flushAll() { $GLOBALS["CACHE_MANAGER"]->cleanAll(); $GLOBALS["stackCacheManager"]->cleanAll(); $staticHtmlCache = StaticHtmlCache::getInstance(); $staticHtmlCache->deleteAll(); BXClearCache(true); }
function Delete($ID) { global $DB, $CACHE_MANAGER; $ID = IntVal($ID); $DB->Query("UPDATE b_blog_comment SET ICON_ID = NULL WHERE ICON_ID = " . $ID, True); $DB->Query("DELETE FROM b_blog_smile_lang WHERE SMILE_ID = " . $ID, True); $DB->Query("DELETE FROM b_blog_smile WHERE ID = " . $ID, True); $CACHE_MANAGER->Clean("b_blog_smile"); BXClearCache(true, "/blog/smiles/"); return true; }
public function __construct($arParams) { $this->SITE_ID = $arParams["SITE_ID"]; $this->REWRITE = $arParams["REWRITE"]; $this->ModuleBlogGroup = '[' . $this->SITE_ID . '] ' . GetMessage("IDEA_BLOG_GROUP_NAME"); $this->ModuleBlogUrl .= "_" . $this->SITE_ID; //NULL CACHE BXClearCache(True, '/' . $this->SITE_ID . '/idea/'); BXClearCache(True, '/' . SITE_ID . '/idea/'); global $CACHE_MANAGER; if (CACHED_b_user_field_enum !== false) { $CACHE_MANAGER->CleanDir("b_user_field_enum"); } //Statuses List (for demo) $this->arResult["SETTINGS"]["STATUS"] = CIdeaManagment::getInstance()->Idea()->GetStatusList(); foreach ($this->arResult["SETTINGS"]["STATUS"] as $arStatus) { $this->arResult["SETTINGS"]["STATUS_ID"][$arStatus["XML_ID"]] = $arStatus["ID"]; } //Lang List $l = CLanguage::GetList($by = "sort", $order = "asc"); while ($r = $l->Fetch()) { $this->arResult["SETTINGS"]["LANG"][] = $r; } //Sites List $oSites = CSite::GetList($b = "", $o = "", array("ACTIVE" => "Y")); while ($site = $oSites->Fetch()) { $this->arResult["SETTINGS"]["SITE"][$site["LID"]] = array("LANGUAGE_ID" => $site["LANGUAGE_ID"], "ABS_DOC_ROOT" => $site["ABS_DOC_ROOT"], "DIR" => $site["DIR"], "SITE_ID" => $site["LID"], "SERVER_NAME" => $site["SERVER_NAME"], "NAME" => $site["NAME"]); } if (array_key_exists($this->SITE_ID, $this->arResult["SETTINGS"]["SITE"])) { $this->PublicDir = str_replace(array("#SITE_DIR#"), array($this->arResult["SETTINGS"]["SITE"][$this->SITE_ID]["DIR"]), $this->PublicDir); } $site = CFileMan::__CheckSite($this->SITE_ID); $this->DOCUMENT_ROOT = CSite::GetSiteDocRoot($site); $this->IO = CBXVirtualIo::GetInstance(); //SetDefault $this->arResult["INSTALLATION"]["IBLOCK_TYPE_INSTALL"] = true; $this->arResult["INSTALLATION"]["IBLOCK_INSTALL"] = true; $this->arResult["INSTALLATION"]["BLOG_GROUP_INSTALL"] = true; $this->arResult["INSTALLATION"]["BLOG_INSTALL"] = true; $this->CheckParams(); }
//$Notify->getEmailNotify()->Send(); //END -> Notifications //start custom, use UF binding ::@Idea if ($arResult["IDEA_MODERATOR"] && $_REQUEST["BIND_OFFICIAL_ANSWER"] == "Y") { // Bind offical answer CIdeaManagment::getInstance()->IdeaComment($commentID)->Bind(); } if ($arResult["IDEA_MODERATOR"] && $_REQUEST["BIND_IDEA_STATUS"] != "") { CIdeaManagment::getInstance()->Idea($arPost["ID"])->SetStatus($_REQUEST["BIND_IDEA_STATUS"]); BXClearCache(True, '/' . SITE_ID . '/idea/statistic_list/'); } /*end*/ BXClearCache(True, "/" . SITE_ID . "/idea/" . $arBlog["ID"] . "/comment/" . $arOldComment["POST_ID"] . "/"); BXClearCache(True, "/" . SITE_ID . "/idea/" . $arBlog["ID"] . "/post/" . $arOldComment["POST_ID"] . "/"); BXClearCache(True, "/" . SITE_ID . "/idea/" . $arBlog["ID"] . "/first_page/"); BXClearCache(True, "/" . SITE_ID . "/idea/" . $arBlog["ID"] . "/pages/"); $commentUrl = CComponentEngine::MakePathFromTemplate(htmlspecialcharsBack($arParams["PATH_TO_POST"]), array("blog" => $arBlog["URL"], "post_id" => CBlogPost::GetPostID($arPost["ID"], $arPost["CODE"], $arParams["ALLOW_POST_CODE"]), "user_id" => $arBlog["OWNER_ID"], "group_id" => $arParams["SOCNET_GROUP_ID"])); if (strpos($commentUrl, "?") !== false) { $commentUrl .= "&"; } else { $commentUrl .= "?"; } if ($_REQUEST["redirect_type"] == 'list') { //bx redirect for idea list LocalRedirect($APPLICATION->GetCurPageParam()); } elseif (strlen($arFields["PUBLISH_STATUS"]) > 0 && $arFields["PUBLISH_STATUS"] != BLOG_PUBLISH_STATUS_PUBLISH) { $commentAddedUrl = $commentUrl . $arParams["COMMENT_ID_VAR"] . "=" . $commentID . "&hidden_add_comment_id=" . $commentID; LocalRedirect($commentAddedUrl); } else { $commentUrl .= $arParams["COMMENT_ID_VAR"] . "=" . $commentID . "#" . $commentID; LocalRedirect($commentUrl);
function OnAfterIndexAdd($ID, $arFields) { if (isset($arFields["PARAMS"]) && is_array($arFields["PARAMS"]) && array_key_exists("socnet_group", $arFields["PARAMS"])) { $arSiteID = array_keys($arFields["SITE_ID"]); foreach ($arSiteID as $siteID) BXClearCache(true, "/".$siteID."/bitrix/search.tags.cloud/"); } }
} else { if (!$USER->CanDoOperation('cache_control') && !$USER->CanDoOperation('view_other_settings')) { $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED")); } $errorMessage = ""; $okMessage = ""; if ($REQUEST_METHOD == "POST" && $clearcache == "Y" && strlen($cachetype) > 0 && check_bitrix_sessid() && $isAdmin) { if ($cachetype == "menu") { $GLOBALS["CACHE_MANAGER"]->CleanDir("menu"); } elseif ($cachetype == "managed") { $GLOBALS["CACHE_MANAGER"]->CleanAll(); $GLOBALS["stackCacheManager"]->CleanAll(); } elseif ($cachetype == "html") { CHTMLPagesCache::CleanAll(); } else { BXClearCache($cachetype == "all"); $GLOBALS["CACHE_MANAGER"]->CleanAll(); $GLOBALS["stackCacheManager"]->CleanAll(); CHTMLPagesCache::CleanAll(); } $okMessage .= GetMessage("MAIN_OPTION_CACHE_OK") . ". "; } if ($REQUEST_METHOD == "POST" && ($cache_on == "Y" || $cache_on == "N") && check_bitrix_sessid() && $isAdmin) { if (COption::GetOptionString("main", "component_cache_on", "Y") == "Y") { if ($cache_on == "N") { COption::SetOptionString("main", "component_cache_on", "N"); $okMessage .= GetMessage("MAIN_OPTION_CACHE_SUCCESS") . ". "; } } else { if ($cache_on == "Y") { COption::SetOptionString("main", "component_cache_on", "Y");
$sites = CSite::GetByID($_GET["site_id"]); if(!($site = $sites->Fetch())) die("Incorrect site_id."); $aComponents = explode(",", $_GET["component_name"]); foreach($aComponents as $component_name) { $componentRelativePath = CComponentEngine::MakeComponentPath($component_name); if (strlen($componentRelativePath) > 0) { $arComponentDescription = CComponentUtil::GetComponentDescr($component_name); if (isset($arComponentDescription) && is_array($arComponentDescription)) { if (array_key_exists("CACHE_PATH", $arComponentDescription)) { if($arComponentDescription["CACHE_PATH"] == "Y") $arComponentDescription["CACHE_PATH"] = "/".$site["ID"].$componentRelativePath; if(strlen($arComponentDescription["CACHE_PATH"]) > 0) { $obCache = new CPHPCache; $obCache->CleanDir($arComponentDescription["CACHE_PATH"], "cache"); BXClearCache(true, $arComponentDescription["CACHE_PATH"]); } } } if(defined("BX_COMP_MANAGED_CACHE")) $CACHE_MANAGER->ClearByTag($component_name); } } require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin_js.php"); ?>
if ($ID > 0) { $arSmile = empty($arSmile) ? CForumSmile::GetByID($ID) : $arSmile; CForumSmile::Update($ID, $arFields); } else { $ID = CForumSmile::Add($arFields); } if ($e = $GLOBALS["APPLICATION"]->GetException()) { $arError[] = array("id" => "", "text" => $e->getString()); if (!empty($_FILES["IMAGE"]["tmp_name"]) && isset($sUploadDir)) { @unlink($sUploadDir . $fileName); unset($arFields["IMAGE"]); } } else { BXClearCache(true, "/" . LANG . "/forum/smilesList/"); BXClearCache(true, "/" . LANG . "/forum/iconsList/"); BXClearCache(true, "/" . LANG . "/forum/smiles/"); if (!empty($arSmile)) { $res = CForumSmile::GetByID($ID); if ($arSmile["IMAGE"] != $res["IMAGE"]) { @unlink($_SERVER["DOCUMENT_ROOT"] . BX_ROOT . "/images/forum/" . ($arSmile["TYPE"] == "I" ? "icon" : "smile") . "/" . $arSmile["IMAGE"]); } elseif ($arSmile["TYPE"] != $res["TYPE"]) { CopyDirFiles($_SERVER["DOCUMENT_ROOT"] . BX_ROOT . "/images/forum/" . ($arSmile["TYPE"] == "I" ? "icon" : "smile") . "/" . $arSmile["IMAGE"], $_SERVER["DOCUMENT_ROOT"] . BX_ROOT . "/images/forum/" . ($res["TYPE"] == "I" ? "icon" : "smile") . "/" . $arSmile["IMAGE"], false, false, true, ""); } } LocalRedirect(strlen($save) > 0 ? "forum_smile.php?lang=" . LANG . "&" . GetFilterParams("filter_", false) : "forum_smile_edit.php?lang=" . LANG . "&ID=" . $ID . "&" . GetFilterParams("filter_", false)); } } $e = new CAdminException($arError); $message = new CAdminMessage($ID > 0 ? GetMessage("ERROR_EDIT_SMILE") : GetMessage("ERROR_ADD_SMILE"), $e); $bInitVars = true; }
BXClearCache(true, "/bitrix/forum/user/" . $res["RECIPIENT_ID"] . "/"); $arComponentPath = array("bitrix:forum"); foreach ($arComponentPath as $path) { $componentRelativePath = CComponentEngine::MakeComponentPath($path); $arComponentDescription = CComponentUtil::GetComponentDescr($path); if (strLen($componentRelativePath) <= 0 || !is_array($arComponentDescription)) { continue; } elseif (!array_key_exists("CACHE_PATH", $arComponentDescription)) { continue; } $path = str_replace("//", "/", $componentRelativePath . "/user" . $res["RECIPIENT_ID"]); if ($arComponentDescription["CACHE_PATH"] == "Y") { $path = "/" . SITE_ID . $path; } if (!empty($path)) { BXClearCache(true, $path); } } } } if (empty($arError)) { if ($action == "save") { LocalRedirect(CComponentEngine::MakePathFromTemplate($arParams["~URL_TEMPLATES_PM_READ"], array("FID" => $arParams["FID"], "MID" => $arParams["MID"]))); } elseif ($action == "send") { LocalRedirect(ForumAddPageParams(CComponentEngine::MakePathFromTemplate($arParams["~URL_TEMPLATES_PM_LIST"], array("FID" => "2")), array("result" => "sent"))); } } else { $e = new CAdminException(array_reverse($arError)); $GLOBALS["APPLICATION"]->ThrowException($e); $err = $GLOBALS['APPLICATION']->GetException(); $arResult["ERROR_MESSAGE"] = $err->GetString();
if (!CForumGroup::CanUserAddGroup($USER->GetUserGroupArray())) { $arError[] = array("code" => "not_right_for_add", "title" => GetMessage("ERROR_ADD_GROUP_NOT_RIGHT")); } else { $ID = CForumGroup::Add($arFields); if (IntVal($ID) <= 0) { $arError[] = array("code" => "not_add", "title" => GetMessage("ERROR_ADD_GROUP")); } } } } if (!empty($arError) && ($e = $GLOBALS["APPLICATION"]->GetException())) { $message = new CAdminMessage($ID > 0 ? GetMessage("ERROR_EDIT_GROUP") : GetMessage("ERROR_ADD_GROUP"), $e); } $bInitVars = !empty($arError) ? true : false; if (strlen($save) > 0 && empty($arError)) { BXClearCache(true, "bitrix/forum/group/"); LocalRedirect("forum_group.php?lang=" . LANG . "&" . GetFilterParams("filter_", false)); } } if ($ID > 0) { $db_group = CForumGroup::GetList(array(), array("ID" => $ID)); $db_group->ExtractFields("str_", False); } if ($bInitVars) { $DB->InitTableVarsForEdit("b_forum_group", "", "str_"); } $sDocTitle = $ID > 0 ? str_replace("#ID#", $ID, GetMessage("FORUM_EDIT_RECORD")) : GetMessage("FORUM_NEW_RECORD"); $APPLICATION->SetTitle($sDocTitle); require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php"; /*********************************************************************/ /******************** BODY *****************************************/
function SetSoNetFeaturePermIndexSearch($ID, $arFields) { $featurePerm = CSocNetFeaturesPerms::GetByID($ID); if ($featurePerm["OPERATION_ID"] == "view_post") { if (CModule::IncludeModule("socialnetwork")) { $feature = CSocNetFeatures::GetByID($featurePerm["FEATURE_ID"]); if ($feature["FEATURE"] == "blog" && IntVal($feature["ENTITY_ID"]) > 0) { if ($feature["ACTIVE"] == "Y" && ($feature["ENTITY_TYPE"] == "U" && $arFields["ROLE"] == "A" || $feature["ENTITY_TYPE"] == "G" && $arFields["ROLE"] == "N")) { $arFilter = array("USE_SOCNET" => "Y"); if ($feature["ENTITY_TYPE"] == "U") { $arFilter["OWNER_ID"] = $feature["ENTITY_ID"]; } else { $arFilter["SOCNET_GROUP_ID"] = $feature["ENTITY_ID"]; } $dbBlog = CBlog::GetList(array(), $arFilter, false, array("nTopCount" => 1), array("ID", "SOCNET_GROUP_ID")); if ($arBlog = $dbBlog->Fetch()) { CBlog::AddSocnetRead($arBlog["ID"]); } } else { $arFilter = array("USE_SOCNET" => "Y"); if ($feature["ENTITY_TYPE"] == "U") { $arFilter["OWNER_ID"] = $feature["ENTITY_ID"]; } else { $arFilter["SOCNET_GROUP_ID"] = $feature["ENTITY_ID"]; } $dbBlog = CBlog::GetList(array(), $arFilter, false, array("nTopCount" => 1), array("ID", "SOCNET_GROUP_ID")); if ($arBlog = $dbBlog->Fetch()) { CBlog::DeleteSocnetRead($arBlog["ID"]); } } if ($arBlog && 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); } foreach ($arSites as $site_id_tmp) { BXClearCache(True, "/" . $site_id_tmp . "/blog/sonet/"); } } } } }
define("WEBDAV_SETTINGS_LIMIT_INCLUDE", "Y"); $file = trim(preg_replace("'[\\\\/]+'", "/", dirname(__FILE__) . "/webdav_settings.php")); require_once $file; /************** Path ***********************************************/ $sBaseUrl = $APPLICATION->GetCurDir(); $arParsedUrl = parse_url($_SERVER['REQUEST_URI']); $page = $arParsedUrl ? $arParsedUrl['path'] : $_SERVER['REQUEST_URI']; /************** Initial object *************************************/ $arParams["DOCUMENT_TYPE"] = array("webdav", "CIBlockDocumentWebdavSocnet", "iblock_" . $arParams["IBLOCK_ID"] . "_" . $object . "_" . intVal($object == "user" ? $arResult["VARIABLES"]["user_id"] : $arResult["VARIABLES"]["group_id"])); $arBizProcParameters = array("object" => $object, "owner" => $object == "user" ? $arResult["VARIABLES"]["user_id"] : $arResult["GROUP"]["OWNER_ID"], "moderator" => strtolower($object == "user" ? SONET_RELATIONS_TYPE_NONE : SONET_ROLES_MODERATOR), "path" => $object == "user" ? $arResult["PATH_TO_USER_FILES_WEBDAV_BIZPROC_VIEW"] : $arResult["PATH_TO_GROUP_FILES_WEBDAV_BIZPROC_VIEW"], "document_type" => $ob->wfParams['DOCUMENT_TYPE'][2]); $user_id_str = intVal($arResult["VARIABLES"]["user_id"]) > 0 ? $arResult["VARIABLES"]["user_id"] : $GLOBALS["USER"]->GetId(); $arBizProcParameters["path"] = str_replace(array("#user_id#", "#group_id#", "#element_id#"), array($user_id_str, $arResult["VARIABLES"]["group_id"], "{=Document:ID}"), $arBizProcParameters["path"]); /************** Root Section ***************************************/ $arParams["ROOT_SECTION_ID"] = __wd_get_root_section($arParams["IBLOCK_ID"], $object, $object == 'user' ? $arResult["VARIABLES"]["user_id"] : $arResult["VARIABLES"]["group_id"]); if ($arParams["ROOT_SECTION_ID"] === true) { BXClearCache(true, $ob->CACHE_PATH); LocalRedirect($APPLICATION->GetCurPageParam("", array("create_lib", "sessid"))); } if ($object == "user") { CIBlockWebdavSocnet::CreateSharedFolder($arParams["IBLOCK_ID"], $arParams["ROOT_SECTION_ID"], $arResult["VARIABLES"]["user_id"]); } $arParams["OBJECT"] = $ob = new CWebDavIblock($arParams['IBLOCK_ID'], $arResult['BASE_URL'], $arParams + array("SHORT_PATH_TEMPLATE" => "/" . ($object == "user" ? $arDefaultUrlTemplates404["user_files_short"] : $arDefaultUrlTemplates404["group_files_short"]), "ATTRIBUTES" => $object == "user" ? array('user_id' => $arResult["VARIABLES"]["user_id"]) : array('group_id' => $arResult["VARIABLES"]["group_id"]))); if (!empty($ob->arError)) { $e = new CAdminException($ob->arError); $GLOBALS["APPLICATION"]->ThrowException($e); $res = $GLOBALS["APPLICATION"]->GetException(); if ($res) { ShowError($res->GetString()); return false; } } elseif ($ob->permission <= "D") {
/** * Function clears entire component cache. * * <p>Note: parameters must exactly match to startResultCache call.</p> * @param string $componentName * @param string $siteId * @return void * */ public static final function clearComponentCache($componentName, $siteId = "") { /** @global CCacheManager $CACHE_MANAGER */ global $CACHE_MANAGER; $componentRelativePath = CComponentEngine::MakeComponentPath($componentName); if ($componentRelativePath != "") { $obCache = new CPHPCache(); $obCache->CleanDir($componentRelativePath, "cache"); BXClearCache(true, $componentRelativePath); if ($siteId == "") { $rsSite = \Bitrix\Main\SiteTable::getList(array('order' => array('SORT' => 'ASC'))); while ($site = $rsSite->fetch()) { $componentCachePath = "/" . $site["LID"] . $componentRelativePath; $obCache = new CPHPCache(); $obCache->CleanDir($componentCachePath, "cache"); BXClearCache(true, $componentCachePath); } } else { $componentCachePath = "/" . $siteId . $componentRelativePath; $obCache = new CPHPCache(); $obCache->CleanDir($componentCachePath, "cache"); BXClearCache(true, $componentCachePath); } if (defined("BX_COMP_MANAGED_CACHE")) { $CACHE_MANAGER->ClearByTag($componentName); } } }
if (!empty($arBlogUrl) && $arBlogUrl["URL"] == $arBlog["URL"]) { if ($arPost["ENABLE_TRACKBACK"] == "Y") { if ($arResult["PostPerm"] > BLOG_PERMS_DENY) { if (check_bitrix_sessid() && IntVal($_GET["delete_trackback_id"]) > 0 && CBlogPost::CanUserDeletePost(IntVal($arPost["ID"]), IntVal($USER->GetID()))) { CBlogTrackback::Delete(IntVal($_GET["delete_trackback_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); } foreach ($arSites as $site_id_tmp) { BXClearCache(True, "/" . $site_id_tmp . "/blog/" . $arBlog["URL"] . "/trackback/" . $arPost["ID"] . "/"); } } $cache = new CPHPCache(); $cache_id = "blog_trackback_" . serialize($arParams) . "_" . $arResult["PostPerm"]; if (($tzOffset = CTimeZone::GetOffset()) != 0) { $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();
if (strlen($link) > 0) { if ($type == "U" && IntVal($id) > 0) { $arNewRightsName[] = "[user="******"]" . htmlspecialcharsback($name) . "[/user]"; } else { $arNewRightsName[] = "[url=" . $link . "]" . htmlspecialcharsback($name) . "[/url]"; } } else { $arNewRightsName[] = htmlspecialcharsback($name); } } } } $UserIP = CBlogUser::GetUserIP(); $arComFields = array("POST_ID" => $arParams["ID"], "BLOG_ID" => $arPost["BLOG_ID"], "POST_TEXT" => (count($arNewRightsName) > 1 ? GetMessage("B_B_SHARE") : GetMessage("B_B_SHARE_1")) . implode(", ", $arNewRightsName), "DATE_CREATE" => ConvertTimeStamp(time() + $arResult["TZ_OFFSET"], "FULL"), "AUTHOR_IP" => $UserIP[0], "AUTHOR_IP1" => $UserIP[1], "PARENT_ID" => false, "AUTHOR_ID" => $user_id, "SHARE_DEST" => implode(",", $arNewRights)); if ($comId = CBlogComment::Add($arComFields)) { BXClearCache(true, "/blog/comment/" . $arParams["ID"] . "/"); if (method_exists("CBlogComment", "AddLiveComment")) { CBlogComment::AddLiveComment($comId, CComponentEngine::MakePathFromTemplate(htmlspecialcharsBack($arParams["PATH_TO_POST"]), array("post_id" => $arParams["ID"], "user_id" => $arPost["AUTHOR_ID"])) . "?commentId=" . $comId); } if ($arPost["AUTHOR_ID"] != $user_id) { $arFieldsIM = array("TYPE" => "SHARE", "TITLE" => $arPost["TITLE"], "URL" => CComponentEngine::MakePathFromTemplate(htmlspecialcharsBack($arParams["PATH_TO_POST"]), array("post_id" => $arParams["ID"], "user_id" => $arPost["AUTHOR_ID"])), "ID" => $arParams["ID"], "FROM_USER_ID" => $user_id, "TO_USER_ID" => array($arPost["AUTHOR_ID"])); CBlogPost::NotifyIm($arFieldsIM); } if (!empty($arUsers2Notify)) { $arFieldsIM = array("TYPE" => "SHARE2USERS", "TITLE" => $arPost["TITLE"], "URL" => CComponentEngine::MakePathFromTemplate(htmlspecialcharsBack($arParams["PATH_TO_POST"]), array("post_id" => $arParams["ID"], "user_id" => $arPost["AUTHOR_ID"])), "ID" => $arParams["ID"], "FROM_USER_ID" => $user_id, "TO_USER_ID" => $arUsers2Notify); CBlogPost::NotifyIm($arFieldsIM); } } /* update socnet log rights*/ $dbRes = CSocNetLog::GetList(array("ID" => "DESC"), array("EVENT_ID" => array("blog_post", "blog_post_important"), "SOURCE_ID" => $arPost["ID"]), false, false, array("ID", "ENTITY_TYPE", "ENTITY_ID")); if ($arRes = $dbRes->Fetch()) {
if ($id = CBlogCategory::Add(array("BLOG_ID" => $arBlog["ID"], "NAME" => $v))) { $arCategory[] = $id; } } } $arResult["ELEMENT"]["DETAIL_PICTURE"] = CFile::GetFileArray($arResult["ELEMENT"]["DETAIL_PICTURE"]); $arResult["ELEMENT"]["REAL_PICTURE"] = CFile::GetFileArray($arResult["ELEMENT"]["PROPERTIES"]["REAL_PICTURE"]["VALUE"]); $arFields = array("TITLE" => $arResult["ELEMENT"]["NAME"], "DETAIL_TEXT" => "[IMG]http://" . $_SERVER['HTTP_HOST'] . $arResult["ELEMENT"]["DETAIL_PICTURE"]["SRC"] . "[/IMG]\n" . "[URL=http://" . $_SERVER['HTTP_HOST'] . $arResult["ELEMENT"]["~DETAIL_PAGE_URL"] . "]" . $arResult["ELEMENT"]["NAME"] . "[/URL]\n" . (!empty($arResult["ELEMENT"]["TAGS"]) ? $arResult["ELEMENT"]["TAGS"] . "\n" : "") . $arResult["ELEMENT"]["~DETAIL_TEXT"] . "\n" . "[URL=http://" . $_SERVER['HTTP_HOST'] . $arResult["ELEMENT"]["REAL_PICTURE"]["SRC"] . "]" . GetMessage("P_ORIGINAL") . "[/URL]", "CATEGORY_ID" => implode(",", $arCategory), "PUBLISH_STATUS" => "P", "PERMS_POST" => array(), "PERMS_COMMENT" => array(), "=DATE_CREATE" => $DB->GetNowFunction(), "=DATE_PUBLISH" => $DB->GetNowFunction(), "AUTHOR_ID" => !empty($arResult["ELEMENT"]["CREATED_BY"]) ? $arResult["ELEMENT"]["CREATED_BY"] : 1, "BLOG_ID" => $arBlog["ID"], "ENABLE_TRACKBACK" => "N"); $newID = CBlogPost::Add($arFields); if ($newID > 0) { foreach ($arCategory as $key) { CBlogPostCategory::Add(array("BLOG_ID" => $arBlog["ID"], "POST_ID" => $newID, "CATEGORY_ID" => $key)); } BXClearCache(True, "/" . SITE_ID . "/blog/" . $arBlog["URL"]); BXClearCache(True, "/" . SITE_ID . "/blog/last_messages/"); BXClearCache(True, "/" . SITE_ID . "/blog/groups/" . $arBlog["GROUP_ID"] . "/"); $iCommentID = $newID; CIBlockElement::SetPropertyValues($arResult["ELEMENT"]["ID"], $arParams["IBLOCK_ID"], $iCommentID, "BLOG_POST_ID"); } } $arResult["COMMENT_ID"] = $iCommentID; if ($arParams["CACHE_TIME"] > 0) { $cache->StartDataCache($arParams["CACHE_TIME"], $cache_id, $cache_path); $cache->EndDataCache(array("COMMENT_ID" => $arResult["COMMENT_ID"], "ELEMENT" => $arResult["ELEMENT"])); } } /************************************************************************* /Caching *************************************************************************/ if (class_exists('CSocNetPhotoCommentEvent')) { $obPhotoCommentEventHandler = new CSocNetPhotoCommentEvent();
function Update($ID, $arFields, $bSearchIndex = true) { global $DB; $ID = IntVal($ID); if(strlen($arFields["PATH"]) > 0) $arFields["PATH"] = str_replace("#post_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 (!CBlogPost::CheckFields("UPDATE", $arFields, $ID)) return false; elseif(!$GLOBALS["USER_FIELD_MANAGER"]->CheckFields("BLOG_POST", $ID, $arFields)) return false; foreach(GetModuleEvents("blog", "OnBeforePostUpdate", true) as $arEvent) { if (ExecuteModuleEventEx($arEvent, Array($ID, &$arFields))===false) return false; } $arOldPost = CBlogPost::GetByID($ID); if(is_array($arFields["ATTACH_IMG"])) { if ( !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); } $strUpdate = $DB->PrepareUpdate("b_blog_post", $arFields); foreach ($arFields1 as $key => $value) { if (strlen($strUpdate) > 0) $strUpdate .= ", "; $strUpdate .= $key."=".$value." "; } if (strlen($strUpdate) > 0) { $oldPostPerms = CBlogUserGroup::GetGroupPerms(1, $arOldPost["BLOG_ID"], $ID, BLOG_PERMS_POST); $strSql = "UPDATE b_blog_post SET ". " ".$strUpdate." ". "WHERE ID = ".$ID." "; $DB->Query($strSql, False, "File: ".__FILE__."<br>Line: ".__LINE__); unset($GLOBALS["BLOG_POST"]["BLOG_POST_CACHE_".$ID]); foreach(GetModuleEvents("blog", "OnBeforePostUserFieldUpdate", true) as $arEvent) ExecuteModuleEventEx($arEvent, Array("BLOG_POST", $ID, $arFields)); $GLOBALS["USER_FIELD_MANAGER"]->Update("BLOG_POST", $ID, $arFields); } else { $ID = False; } if ($ID) { $arNewPost = CBlogPost::GetByID($ID); if($arNewPost["PUBLISH_STATUS"] != $arOldPost["PUBLISH_STATUS"] || $arNewPost["BLOG_ID"] != $arOldPost["BLOG_ID"]) CBlog::SetStat($arNewPost["BLOG_ID"]); if ($arNewPost["BLOG_ID"] != $arOldPost["BLOG_ID"]) CBlog::SetStat($arOldPost["BLOG_ID"]); if (is_set($arFields, "PERMS_POST")) CBlogPost::SetPostPerms($ID, $arFields["PERMS_POST"], BLOG_PERMS_POST); if (is_set($arFields, "PERMS_COMMENT")) CBlogPost::SetPostPerms($ID, $arFields["PERMS_COMMENT"], BLOG_PERMS_COMMENT); if(array_key_exists("SOCNET_RIGHTS", $arFields)) { $arFields["SC_PERM_OLD"] = CBlogPost::GetSocNetPermsCode($ID); $arFields["SC_PERM"] = CBlogPost::UpdateSocNetPerms($ID, $arFields["SOCNET_RIGHTS"], $arNewPost); } foreach(GetModuleEvents("blog", "OnPostUpdate", true) as $arEvent) ExecuteModuleEventEx($arEvent, Array($ID, &$arFields)); if ($bSearchIndex && CModule::IncludeModule("search")) { $newPostPerms = CBlogUserGroup::GetGroupPerms(1, $arNewPost["BLOG_ID"], $ID, BLOG_PERMS_POST); $arBlog = CBlog::GetByID($arNewPost["BLOG_ID"]); if ( $arOldPost["PUBLISH_STATUS"] == BLOG_PUBLISH_STATUS_PUBLISH && $oldPostPerms >= BLOG_PERMS_READ && ( $arNewPost["PUBLISH_STATUS"] != BLOG_PUBLISH_STATUS_PUBLISH || $newPostPerms < BLOG_PERMS_READ ) || $arBlog["SEARCH_INDEX"] != "Y" ) { CSearch::Index("blog", "P".$ID, array( "TITLE" => "", "BODY" => "" ) ); CSearch::DeleteIndex("blog", false, "COMMENT", $arBlog["ID"]."|".$ID); } elseif ( $arNewPost["DATE_PUBLISHED"] == "Y" && $arNewPost["PUBLISH_STATUS"] == BLOG_PUBLISH_STATUS_PUBLISH && $newPostPerms >= BLOG_PERMS_READ && $arBlog["SEARCH_INDEX"] == "Y" ) { $tag = ""; $arGroup = CBlogGroup::GetByID($arBlog["GROUP_ID"]); if(strlen($arFields["PATH"]) > 0) { $arPostSite = array($arGroup["SITE_ID"] => $arFields["PATH"]); } elseif(strlen($arNewPost["PATH"]) > 0) { $arNewPost["PATH"] = ( strlen($arNewPost["CODE"]) > 0 ? str_replace("#post_id#", $arNewPost["CODE"], $arNewPost["PATH"]) : str_replace("#post_id#", $ID, $arNewPost["PATH"]) ); $arPostSite = array($arGroup["SITE_ID"] => $arNewPost["PATH"]); } else { $arPostSite = array( $arGroup["SITE_ID"] => CBlogPost::PreparePath( $arBlog["URL"], $arNewPost["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"], $arNewPost["ID"]), COption::GetOptionString("socialnetwork", "userblogpost_page", false, $lid) ); } } } if(strlen($arNewPost["CATEGORY_ID"])>0) { $arC = explode(",", $arNewPost["CATEGORY_ID"]); $arTag = Array(); foreach($arC as $v) { $arCategory = CBlogCategory::GetByID($v); $arTag[] = $arCategory["NAME"]; } $tag = implode(",", $arTag); } $searchContent = blogTextParser::killAllTags($arNewPost["DETAIL_TEXT"]); $searchContent .= "\r\n" . $GLOBALS["USER_FIELD_MANAGER"]->OnSearchIndex("BLOG_POST", $arNewPost["ID"]); $authorName = ""; if(IntVal($arNewPost["AUTHOR_ID"]) > 0) { $dbUser = CUser::GetByID($arNewPost["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" => $arNewPost["DATE_PUBLISH"], "PARAM1" => "POST", "PARAM2" => $arNewPost["BLOG_ID"], "PARAM3" => $arNewPost["ID"], "PERMISSIONS" => array(2), "TITLE" => $arNewPost["TITLE"], "BODY" => $searchContent, "TAGS" => $tag, "USER_ID" => $arNewPost["AUTHOR_ID"], "ENTITY_TYPE_ID" => "BLOG_POST", "ENTITY_ID" => $arNewPost["ID"], ); $bIndexComment = false; if($arBlog["USE_SOCNET"] == "Y") { if(!empty($arFields["SC_PERM"])) { $arSearchIndex["PERMISSIONS"] = $arFields["SC_PERM"]; if($arFields["SC_PERM"] != $arFields["SC_PERM_OLD"]) $bIndexComment = true; } else $arSearchIndex["PERMISSIONS"] = CBlogPost::GetSocnetPermsCode($ID); if(!in_array("U".$arNewPost["AUTHOR_ID"], $arSearchIndex["PERMISSIONS"])) $arSearchIndex["PERMISSIONS"][] = "U".$arNewPost["AUTHOR_ID"]; if(is_array($arSearchIndex["PERMISSIONS"])) { $sgId = array(); foreach($arSearchIndex["PERMISSIONS"] 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($arNewPost); if (!empty($arMentionedUserID)) { if (!isset($arSearchIndex["PARAMS"])) { $arSearchIndex["PARAMS"] = array(); } $arSearchIndex["PARAMS"]["mentioned_user_id"] = $arMentionedUserID; } } CSearch::Index("blog", "P".$ID, $arSearchIndex, True); if(($arOldPost["PUBLISH_STATUS"] != BLOG_PUBLISH_STATUS_PUBLISH && $arNewPost["PUBLISH_STATUS"] == BLOG_PUBLISH_STATUS_PUBLISH) || $bIndexComment) //index comments { $arParamsComment = Array( "BLOG_ID" => $arBlog["ID"], "POST_ID" => $ID, "SITE_ID" => $arGroup["SITE_ID"], "PATH" => $arPostSite[$arGroup["SITE_ID"]]."?commentId=#comment_id###comment_id#", "BLOG_URL" => $arBlog["URL"], "OWNER_ID" => $arBlog["OWNER_ID"], "SOCNET_GROUP_ID" => $arBlog["SOCNET_GROUP_ID"], "USE_SOCNET" => $arBlog["USE_SOCNET"], ); CBlogComment::_IndexPostComments($arParamsComment); } } } } BXClearCache(true, '/blog/socnet_post/gen/'.$ID); return $ID; }
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 . "/"); BXClearCache(True, '/' . SITE_ID . '/idea/statistic_list/'); BXClearCache(True, '/' . SITE_ID . '/idea/tags/'); //RSS BXClearCache(True, "/" . SITE_ID . "/idea/" . $arResult["BLOG"]["ID"] . "/rss_list"); LocalRedirect($APPLICATION->GetCurPageParam("success=Y", array("sessid", "success"))); } } } } } /******************************************************************** /Actions ********************************************************************/ /******************************************************************** Data ********************************************************************/ if ($CACHE_TIME > 0 && $cache->InitCache($CACHE_TIME, $cache_id, $cache_path)) { $Vars = $cache->GetVars(); foreach ($Vars["arResult"] as $k => $v) {
if (!CBlog::Delete($ID)) { $DB->Rollback(); if ($ex = $APPLICATION->GetException()) { $lAdmin->AddGroupError($ex->GetString(), $ID); } else { $lAdmin->AddGroupError(GetMessage("BLB_DELETE_ERROR"), $ID); } } $DB->Commit(); if (!empty($arBlogOld)) { BXClearCache(True, "/" . $arBlogOld["GROUP_SITE_ID"] . "/blog/"); 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/popular_blogs/"); } break; } } } $arHeaders = array(array("id" => "ID", "content" => "ID", "sort" => "ID", "default" => true), array("id" => "NAME", "content" => GetMessage("BLB_NAME"), "sort" => "NAME", "default" => true), array("id" => "DATE_CREATE", "content" => GetMessage('BLB_DATE_CREATE'), "sort" => "DATE_CREATE", "default" => true), array("id" => "DATE_UPDATE", "content" => GetMessage('BLB_DATE_UPDATE'), "sort" => "DATE_UPDATE", "default" => true), array("id" => "ACTIVE", "content" => GetMessage('BLB_ACTIVE'), "sort" => "ACTIVE", "default" => true), array("id" => "OWNER_INFO", "content" => GetMessage('BLB_OWNER_ID'), "sort" => "", "default" => true), array("id" => "SOCNET_GROUP_ID", "content" => GetMessage('BLB_SOCNET_GROUP_ID'), "sort" => "SOCNET_GROUP_ID"), array("id" => "URL", "content" => GetMessage('BLB_URL'), "sort" => "URL", "default" => true), array("id" => "GROUP_ID", "content" => GetMessage('BLB_GROUP_ID'), "sort" => "GROUP_ID", "default" => true), array("id" => "USE_SOCNET", "content" => GetMessage('BLB_USE_SOCNET'), "sort" => "USE_SOCNET", "default" => false)); $USER_FIELD_MANAGER->AdminListAddHeaders("BLOG_BLOG", $arHeaders); $lAdmin->AddHeaders($arHeaders); $arVisibleColumns = $lAdmin->GetVisibleHeaderColumns(); $arSelectedFields = array("ID", "NAME", "DATE_CREATE", "DATE_UPDATE", "ACTIVE", "OWNER_ID", "URL", "REAL_URL", "GROUP_ID", "OWNER_LOGIN", "OWNER_NAME", "OWNER_LAST_NAME", "OWNER_EMAIL", "GROUP_NAME", "GROUP_SITE_ID", "SOCNET_GROUP_ID", "USE_SOCNET"); foreach ($arVisibleColumns as $val) { if (!in_array($val, $arSelectedFields)) { $arSelectedFields[] = $val; } }
public static function clearCache() { if ($rsCacheDir = opendir($_SERVER['DOCUMENT_ROOT'] . '/bitrix/cache')) { while (false !== ($entry = readdir($rsCacheDir))) { BXClearCache(true, "/$entry/prmedia"); } closedir($rsCacheDir); } }
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/"); $url = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_BLOG"], array("blog" => $arBlog["URL"], "user_id" => $arBlog["OWNER_ID"], "group_id" => $arBlog["SOCNET_GROUP_ID"])); if (strpos($url, "?") === false) { $url .= "?"; } else { $url .= "&"; } $url .= "hide_id=" . $arParams["ID"] . "&success=Y"; LocalRedirect($url); } else { $arResult["ERROR_MESSAGE"] .= GetMessage("BLOG_BLOG_BLOG_MES_HIDE_ERROR") . '<br />'; } } else { $arResult["ERROR_MESSAGE"] .= GetMessage("BLOG_BLOG_BLOG_MES_HIDE_NO_RIGHTS") . '<br />'; } }
public static function PostIntoBuzzAsBlog($userTwit, $arSiteId = array(), $userLogin = '') { global $DB; if (!CModule::IncludeModule("blog")) { return; } $arParams = array(); if (IsModuleInstalled('bitrix24') && defined('BX24_HOST_NAME') && $userLogin != '') { if ($arUserTwit = unserialize(base64_decode($userTwit))) { $userTwit = $arUserTwit; } if ($arSiteIdCheck = unserialize(base64_decode($arSiteId))) { $arSiteId = $arSiteIdCheck; } $dbUser = CUser::GetByLogin($userLogin); if ($arUser = $dbUser->Fetch()) { $arParams["USER_ID"] = $arUser["ID"]; } } else { $arParams["USER_ID"] = $userTwit['kp_user_id']; } if (isset($arSiteId[$userTwit['kp_user_id']])) { $siteId = $arSiteId[$userTwit['kp_user_id']]; } if (strlen($siteId) <= 0) { $siteId = SITE_ID; } if (isset($userTwit['text'])) { $arParams["GROUP_ID"] = COption::GetOptionString("socialnetwork", "userbloggroup_id", false, $siteId); $arParams["PATH_TO_BLOG"] = COption::GetOptionString("socialnetwork", "userblogpost_page", false, $siteId); $arParams["PATH_TO_SMILE"] = COption::GetOptionString("socialnetwork", "smile_page", false, $siteId); $arParams["NAME_TEMPLATE"] = COption::GetOptionString("main", "TOOLTIP_NAME_TEMPLATE", false, $siteId); $arParams["SHOW_LOGIN"] = '******'; $arParams["PATH_TO_POST"] = $arParams["PATH_TO_BLOG"]; $arFilterblg = array("ACTIVE" => "Y", "USE_SOCNET" => "Y", "GROUP_ID" => $arParams["GROUP_ID"], "GROUP_SITE_ID" => $siteId, "OWNER_ID" => $arParams["USER_ID"]); $groupId = is_array($arParams["GROUP_ID"]) ? IntVal($arParams["GROUP_ID"][0]) : IntVal($arParams["GROUP_ID"]); if (isset($GLOBALS["BLOG_POST"]["BLOG_P_" . $groupId . "_" . $arParams["USER_ID"]]) && !empty($GLOBALS["BLOG_POST"]["BLOG_P_" . $groupId . "_" . $arParams["USER_ID"]])) { $arBlog = $GLOBALS["BLOG_POST"]["BLOG_P_" . $groupId . "_" . $arParams["USER_ID"]]; } else { $dbBl = CBlog::GetList(array(), $arFilterblg); $arBlog = $dbBl->Fetch(); if (!$arBlog && IsModuleInstalled("intranet")) { $arBlog = CBlog::GetByOwnerID($arParams["USER_ID"]); } $GLOBALS["BLOG_POST"]["BLOG_P_" . $groupId . "_" . $arParams["USER_ID"]] = $arBlog; } $arResult["Blog"] = $arBlog; if (empty($arBlog)) { if (!empty($arParams["GROUP_ID"])) { $arFields = array("=DATE_UPDATE" => $DB->CurrentTimeFunction(), "GROUP_ID" => is_array($arParams["GROUP_ID"]) ? IntVal($arParams["GROUP_ID"][0]) : IntVal($arParams["GROUP_ID"]), "ACTIVE" => "Y", "ENABLE_COMMENTS" => "Y", "ENABLE_IMG_VERIF" => "Y", "EMAIL_NOTIFY" => "Y", "ENABLE_RSS" => "Y", "ALLOW_HTML" => "N", "ENABLE_TRACKBACK" => "N", "SEARCH_INDEX" => "Y", "USE_SOCNET" => "Y", "=DATE_CREATE" => $DB->CurrentTimeFunction(), "PERMS_POST" => array(1 => "I", 2 => "I"), "PERMS_COMMENT" => array(1 => "P", 2 => "P")); $bRights = false; $rsUser = CUser::GetByID($arParams["USER_ID"]); $arUser = $rsUser->Fetch(); if (strlen($arUser["NAME"] . "" . $arUser["LAST_NAME"]) <= 0) { $arFields["NAME"] = GetMessage("BLG_NAME") . " " . $arUser["LOGIN"]; } else { $arFields["NAME"] = GetMessage("BLG_NAME") . " " . $arUser["NAME"] . " " . $arUser["LAST_NAME"]; } $arFields["URL"] = str_replace(" ", "_", $arUser["LOGIN"]) . "-blog-" . SITE_ID; $arFields["OWNER_ID"] = $arParams["USER_ID"]; $urlCheck = preg_replace("/[^a-zA-Z0-9_-]/is", "", $arFields["URL"]); if ($urlCheck != $arFields["URL"]) { $arFields["URL"] = "u" . $arParams["USER_ID"] . "-blog-" . SITE_ID; } if (CBlog::GetByUrl($arFields["URL"])) { $uind = 0; do { $uind++; $arFields["URL"] = $arFields["URL"] . $uind; } while (CBlog::GetByUrl($arFields["URL"])); } $featureOperationPerms = CSocNetFeaturesPerms::GetOperationPerm(SONET_ENTITY_USER, $arFields["OWNER_ID"], "blog", "view_post"); if ($featureOperationPerms == SONET_RELATIONS_TYPE_ALL) { $bRights = true; } $arFields["PATH"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_BLOG"], array("blog" => $arFields["URL"], "user_id" => $arFields["OWNER_ID"], "group_id" => $arFields["SOCNET_GROUP_ID"])); $blogID = CBlog::Add($arFields); if ($bRights) { CBlog::AddSocnetRead($blogID); } $arBlog = CBlog::GetByID($blogID, $arParams["GROUP_ID"]); } } // $DATE_PUBLISH = ""; // if(strlen($_POST["DATE_PUBLISH_DEF"]) > 0) // $DATE_PUBLISH = $_POST["DATE_PUBLISH_DEF"]; // elseif (strlen($_POST["DATE_PUBLISH"])<=0) $DATE_PUBLISH = ConvertTimeStamp(time() + CTimeZone::GetOffset(), "FULL"); // else // $DATE_PUBLISH = $_POST["DATE_PUBLISH"]; $arFields = array("DETAIL_TEXT" => $userTwit['text'], "DETAIL_TEXT_TYPE" => "text", "DATE_PUBLISH" => $DATE_PUBLISH, "PUBLISH_STATUS" => BLOG_PUBLISH_STATUS_PUBLISH, "PATH" => CComponentEngine::MakePathFromTemplate(htmlspecialcharsBack($arParams["PATH_TO_POST"]), array("post_id" => "#post_id#", "user_id" => $arBlog["OWNER_ID"])), "URL" => $arBlog["URL"], "SOURCE_TYPE" => "twitter"); $arFields["PERMS_POST"] = array(); $arFields["PERMS_COMMENT"] = array(); $arFields["MICRO"] = "N"; if (strlen($arFields["TITLE"]) <= 0) { $arFields["MICRO"] = "Y"; $arFields["TITLE"] = trim(blogTextParser::killAllTags($arFields["DETAIL_TEXT"])); if (strlen($arFields["TITLE"]) <= 0) { $arFields["TITLE"] = GetMessage("BLOG_EMPTY_TITLE_PLACEHOLDER"); } } $arFields["SOCNET_RIGHTS"] = array(); if (!empty($userTwit['user_perms'])) { $bOne = true; foreach ($userTwit['user_perms'] as $v => $k) { if (strlen($v) > 0 && is_array($k) && !empty($k)) { foreach ($k as $vv) { if (strlen($vv) > 0) { $arFields["SOCNET_RIGHTS"][] = $vv; if ($v != "SG") { $bOne = false; } } } } } if ($bOne && !empty($userTwit['user_perms']["SG"])) { $bOnesg = false; $bFirst = true; $oGrId = 0; foreach ($userTwit['user_perms']["SG"] as $v) { if (strlen($v) > 0) { if ($bFirst) { $bOnesg = true; $bFirst = false; $v = str_replace("SG", "", $v); $oGrId = IntVal($v); } else { $bOnesg = false; } } } if ($bOnesg) { if (!CSocNetFeaturesPerms::CanPerformOperation($arParams["USER_ID"], SONET_ENTITY_GROUP, $oGrId, "blog", "write_post") && !CSocNetFeaturesPerms::CanPerformOperation($arParams["USER_ID"], SONET_ENTITY_GROUP, $oGrId, "blog", "moderate_post") && !CSocNetFeaturesPerms::CanPerformOperation($arParams["USER_ID"], SONET_ENTITY_GROUP, $oGrId, "blog", "full_post")) { $arFields["PUBLISH_STATUS"] = BLOG_PUBLISH_STATUS_READY; } } } } $bError = false; /* if (CModule::IncludeModule('extranet') && !CExtranet::IsIntranetUser()) { if(empty($arFields["SOCNET_RIGHTS"]) || in_array("UA", $arFields["SOCNET_RIGHTS"])) { $bError = true; $arResult["ERROR_MESSAGE"] = GetMessage("BLOG_BPE_EXTRANET_ERROR"); } }*/ if (!$bError) { preg_match_all("/\\[user\\s*=\\s*([^\\]]*)\\](.+?)\\[\\/user\\]/ies" . BX_UTF_PCRE_MODIFIER, $userTwit['text'], $arMention); $arFields["=DATE_CREATE"] = $DB->GetNowFunction(); $arFields["AUTHOR_ID"] = $arParams["USER_ID"]; $arFields["BLOG_ID"] = $arBlog["ID"]; $newID = CBlogPost::Add($arFields); $socnetRightsOld = array("U" => array()); $bAdd = true; $bNeedMail = false; if ($newID) { $arFields["ID"] = $newID; $arParamsNotify = array("bSoNet" => true, "UserID" => $arParams["USER_ID"], "allowVideo" => $arResult["allowVideo"], "PATH_TO_SMILE" => $arParams["PATH_TO_SMILE"], "PATH_TO_POST" => $arParams["PATH_TO_POST"], "SOCNET_GROUP_ID" => $arParams["GROUP_ID"], "user_id" => $arParams["USER_ID"], "NAME_TEMPLATE" => $arParams["NAME_TEMPLATE"], "SHOW_LOGIN" => $arParams["SHOW_LOGIN"]); CBlogPost::Notify($arFields, $arBlog, $arParamsNotify); } } if ($newID > 0 && strlen($arResult["ERROR_MESSAGE"]) <= 0 && $arFields["PUBLISH_STATUS"] == BLOG_PUBLISH_STATUS_PUBLISH) { BXClearCache(true, "/" . SITE_ID . "/blog/last_messages_list/"); $arFieldsIM = array("TYPE" => "POST", "TITLE" => $arFields["TITLE"], "URL" => CComponentEngine::MakePathFromTemplate(htmlspecialcharsBack($arParams["PATH_TO_POST"]), array("post_id" => $newID, "user_id" => $arBlog["OWNER_ID"])), "ID" => $newID, "FROM_USER_ID" => $arParams["USER_ID"], "TO_USER_ID" => array(), "TO_SOCNET_RIGHTS" => $arFields["SOCNET_RIGHTS"], "TO_SOCNET_RIGHTS_OLD" => $socnetRightsOld["U"]); if (!empty($arMentionOld)) { $arFieldsIM["MENTION_ID_OLD"] = $arMentionOld[1]; } if (!empty($arMention)) { $arFieldsIM["MENTION_ID"] = $arMention[1]; } CBlogPost::NotifyIm($arFieldsIM); $arParams["ID"] = $newID; if (!empty($_POST["SPERM"]["SG"])) { foreach ($_POST["SPERM"]["SG"] as $v) { $group_id_tmp = substr($v, 2); if (IntVal($group_id_tmp) > 0) { CSocNetGroup::SetLastActivity(IntVal($group_id_tmp)); } } } } } }
if (strlen($link) > 0) { if ($type == "U" && IntVal($id) > 0) { $arNewRightsName[] = "[user="******"]" . htmlspecialcharsback($name) . "[/user]"; } else { $arNewRightsName[] = "[url=" . $link . "]" . htmlspecialcharsback($name) . "[/url]"; } } else { $arNewRightsName[] = htmlspecialcharsback($name); } } } } $UserIP = CBlogUser::GetUserIP(); $arComFields = array("POST_ID" => $arParams["ID"], "BLOG_ID" => $arPost["BLOG_ID"], "POST_TEXT" => (count($arNewRightsName) > 1 ? GetMessage("B_B_SHARE") : GetMessage("B_B_SHARE_1")) . implode(", ", $arNewRightsName), "DATE_CREATE" => ConvertTimeStamp(time() + $arResult["TZ_OFFSET"], "FULL"), "AUTHOR_IP" => $UserIP[0], "AUTHOR_IP1" => $UserIP[1], "PARENT_ID" => false, "AUTHOR_ID" => $user_id, "SHARE_DEST" => implode(",", $arNewRights)); if ($comId = CBlogComment::Add($arComFields)) { BXClearCache(true, "/blog/comment/" . intval($arParams["ID"] / 100) . "/" . $arParams["ID"] . "/"); if (is_callable("CBlogComment::AddLiveComment")) { CBlogComment::addLiveComment($comId, "", array()); } if ($arPost["AUTHOR_ID"] != $user_id) { $arFieldsIM = array("TYPE" => "SHARE", "TITLE" => htmlspecialcharsback($arPost["TITLE"]), "URL" => CComponentEngine::MakePathFromTemplate(htmlspecialcharsBack($arParams["PATH_TO_POST"]), array("post_id" => $arParams["ID"], "user_id" => $arPost["AUTHOR_ID"])), "ID" => $arParams["ID"], "FROM_USER_ID" => $user_id, "TO_USER_ID" => array($arPost["AUTHOR_ID"])); CBlogPost::NotifyIm($arFieldsIM); } if (!empty($arUsers2Notify)) { $arFieldsIM = array("TYPE" => "SHARE2USERS", "TITLE" => htmlspecialcharsback($arPost["TITLE"]), "URL" => CComponentEngine::MakePathFromTemplate(htmlspecialcharsBack($arParams["PATH_TO_POST"]), array("post_id" => $arParams["ID"], "user_id" => $arPost["AUTHOR_ID"])), "ID" => $arParams["ID"], "FROM_USER_ID" => $user_id, "TO_USER_ID" => $arUsers2Notify); CBlogPost::NotifyIm($arFieldsIM); } } /* update socnet log rights*/ $dbRes = CSocNetLog::GetList(array("ID" => "DESC"), array("EVENT_ID" => array("blog_post", "blog_post_important"), "SOURCE_ID" => $arPost["ID"]), false, false, array("ID", "ENTITY_TYPE", "ENTITY_ID")); if ($arRes = $dbRes->Fetch()) {
function BXClearCache($full = false, $initdir = "") { if ($full !== true && $full !== false && $initdir === "" && is_string($full)) { $initdir = $full; $full = true; } $res = true; if ($full === true) { $obCache = new CPHPCache(); $obCache->CleanDir($initdir, "cache"); } $path = $_SERVER["DOCUMENT_ROOT"] . BX_PERSONAL_ROOT . "/cache" . $initdir; if (is_dir($path) && ($handle = opendir($path))) { while (($file = readdir($handle)) !== false) { if ($file == "." || $file == "..") { continue; } if (is_dir($path . "/" . $file)) { if (!BXClearCache($full, $initdir . "/" . $file)) { $res = false; } else { @chmod($path . "/" . $file, BX_DIR_PERMISSIONS); //We suppress error handle here because there may be valid cache files in this dir @rmdir($path . "/" . $file); } } elseif ($full) { @chmod($path . "/" . $file, BX_FILE_PERMISSIONS); if (!unlink($path . "/" . $file)) { $res = false; } } elseif (substr($file, -5) == ".html") { if (CPageCache::IsCacheExpired($path . "/" . $file)) { @chmod($path . "/" . $file, BX_FILE_PERMISSIONS); if (!unlink($path . "/" . $file)) { $res = false; } } } elseif (substr($file, -4) == ".php") { if (CPHPCache::IsCacheExpired($path . "/" . $file)) { @chmod($path . "/" . $file, BX_FILE_PERMISSIONS); if (!unlink($path . "/" . $file)) { $res = false; } } } else { //We should skip unknown file //it will be deleted with full cache cleanup } } closedir($handle); } return $res; }
function DeletePost($params) { global $USER; $postId = IntVal(CBlogMetaWeblog::DecodeParams($params[1]["#"]["value"][0]["#"])); $user = CBlogMetaWeblog::DecodeParams($params[2]["#"]["value"][0]["#"]); $password = CBlogMetaWeblog::DecodeParams($params[3]["#"]["value"][0]["#"]); if (CBlogMetaWeblog::Authorize($user, $password)) { $result = ''; $userId = $USER->GetID(); if (IntVal($postId) > 0) { $dbPost = CBlogPost::GetList(array(), array("AUTHOR_ID" => $userId, "ID" => $postId), false, array("nTopCount" => 1), array("ID", "BLOG_ID", "AUTHOR_ID")); if ($arPost = $dbPost->Fetch()) { CBlogPost::Delete($postId); $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); } foreach ($arSites as $site_id_tmp) { BXClearCache(True, "/" . $site_id_tmp . "/blog/" . $arBlog["URL"] . "/first_page/"); BXClearCache(True, "/" . $site_id_tmp . "/blog/" . $arBlog["URL"] . "/pages/"); BXClearCache(True, "/" . $site_id_tmp . "/blog/" . $arBlog["URL"] . "/calendar/"); BXClearCache(True, "/" . $site_id_tmp . "/blog/" . $arBlog["URL"] . "/post/" . $postId . "/"); 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/" . $arResult["BLOG"]["GROUP_ID"] . "/"); BXClearCache(True, "/" . $site_id_tmp . "/blog/" . $arBlog["URL"] . "/trackback/" . $postId . "/"); 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/"); } } } return '<params> <param> <value> <boolean>1</boolean> </value> </param> </params>'; } 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>'; } }
} if ($newID > 0) { $DB->Query("UPDATE b_blog_image SET POST_ID='{$newID}' WHERE BLOG_ID={$BLOG_ID} AND POST_ID=0", true); if (strlen($TRACKBACK) > 0) { $arPingUrls = explode("\n", $TRACKBACK); CBlogTrackback::SendPing($newID, $arPingUrls); } BXClearCache(True, "/" . SITE_ID . "/blog/" . $arBlog['URL'] . "/first_page/"); BXClearCache(True, "/" . SITE_ID . "/blog/" . $arBlog['URL'] . "/calendar/"); BXClearCache(True, "/" . SITE_ID . "/blog/last_messages/"); BXClearCache(True, "/" . SITE_ID . "/blog/groups/" . $arBlog['GROUP_ID'] . "/"); BXClearCache(True, "/" . SITE_ID . "/blog/" . $arBlog['URL'] . "/trackback/" . $ID . "/"); BXClearCache(True, "/" . SITE_ID . "/blog/" . $arBlog['URL'] . "/comment/" . $ID . "/"); BXClearCache(True, "/" . SITE_ID . "/blog/" . $arBlog['URL'] . "/rss_out/"); if ($ID > 0) { BXClearCache(True, "/" . SITE_ID . "/blog/" . $arBlog['URL'] . "/post/" . $ID . "/"); } if ($is404) { if (strlen($_POST['save']) > 0) { LocalRedirect($sBlogPath . "/" . $arBlog['URL']); } else { LocalRedirect($sBlogPath . "/" . $arBlog['URL'] . "/post_edit.php?ID={$newID}"); } } else { if (strlen($_POST['save']) > 0) { LocalRedirect($sBlogPath . "/blog.php?blog=" . $arBlog['URL']); } else { LocalRedirect($sBlogPath . "/post_edit.php?blog=" . $arBlog['URL'] . "&post_id={$newID}"); } } } else {