%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/components/bitrix/socialnetwork.blog.post.edit/ |
Current File : /home/bitrix/www/bitrix/components/bitrix/socialnetwork.blog.post.edit/component.php |
<? if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); /** @var CBitrixComponent $this */ /** @var array $arParams */ /** @var array $arResult */ /** @var string $componentPath */ /** @var string $componentName */ /** @var string $componentTemplate */ /** @global CDatabase $DB */ /** @global CUser $USER */ /** @global CMain $APPLICATION */ /** @global CCacheManager $CACHE_MANAGER */ /** @global CUserTypeManager $USER_FIELD_MANAGER */ use Bitrix\Main\ModuleManager; use Bitrix\Main\Loader; use Bitrix\Socialnetwork\ComponentHelper; global $CACHE_MANAGER, $USER_FIELD_MANAGER; if (!Loader::includeModule("blog")) { ShowError(GetMessage("BLOG_MODULE_NOT_INSTALL")); return false; } if (!Loader::includeModule("socialnetwork")) { return false; } $feature = "blog"; $arParams["SOCNET_GROUP_ID"] = IntVal($arParams["SOCNET_GROUP_ID"]); $arResult["bExtranetUser"] = (Loader::includeModule("extranet") && !CExtranet::IsIntranetUser()); $arResult["bExtranetSite"] = (Loader::includeModule("extranet") && CExtranet::IsExtranetSite()); $arResult["ERROR_MESSAGE"] = ""; $arParams["ID"] = IntVal($arParams["ID"]); $arParams["LAZY_LOAD"] = 'Y'; $arResult["SHOW_FULL_FORM"] = ( ( !empty($_POST) && ( !isset($_POST["TYPE"]) || $_POST["TYPE"] != "AUTH" ) ) || $arParams["ID"] > 0 || !empty($_REQUEST["WFILES"]) || !empty($_REQUEST["bp_setting"]) ); $arResult["ALLOW_EMAIL_INVITATION"] = ( ModuleManager::isModuleInstalled('mail') && ModuleManager::isModuleInstalled('intranet') && ( !Loader::includeModule('bitrix24') || \CBitrix24::isEmailConfirmed() ) ); $bCalendar = true; if (!ModuleManager::isModuleInstalled('intranet')) // Disable calendar feature for non cp { $bCalendar = false; } if ($bCalendar && $arResult["bExtranetUser"]) // Disable calendar feature for extranet users { $bCalendar = false; } if(IntVal($arParams["SOCNET_GROUP_ID"]) > 0) { $bCalendar = false; } elseif ( !CSocNetFeaturesPerms::CurrentUserCanPerformOperation( SONET_ENTITY_USER, $USER->getId(), "calendar", "view" ) ) { $bCalendar = false; } $arParams["B_CALENDAR"] = $bCalendar; $arResult["bGroupMode"] = false; if ( IntVal($arParams["SOCNET_GROUP_ID"]) > 0 || IntVal($arParams["USER_ID"]) > 0 ) { $arResult["bGroupMode"] = (IntVal($arParams["SOCNET_GROUP_ID"]) > 0); if($arResult["bGroupMode"]) { if($arGroupSoNet = CSocNetGroup::GetByID($arParams["SOCNET_GROUP_ID"])) { if(!CSocNetFeatures::IsActiveFeature(SONET_ENTITY_GROUP, $arParams["SOCNET_GROUP_ID"], $feature)) { ShowError(GetMessage("BLOG_SONET_GROUP_MODULE_NOT_AVAIBLE")); return false; } } else { return false; } } } if (!is_array($arParams["GROUP_ID"])) { $arParams["GROUP_ID"] = array($arParams["GROUP_ID"]); } foreach ($arParams["GROUP_ID"] as $k=>$v) { if (IntVal($v) <= 0) { unset($arParams["GROUP_ID"][$k]); } } if (empty($arParams["GROUP_ID"])) { $tmpVal = COption::GetOptionString("socialnetwork", "sonet_blog_group", false, SITE_ID); if ($tmpVal) { $arTmpVal = unserialize($tmpVal); if (is_array($arTmpVal)) { $arParams["GROUP_ID"] = $arTmpVal; } elseif(intval($tmpVal) > 0) { $arParams["GROUP_ID"] = array($arTmpVal); } } } else { $tmpVal = COption::GetOptionString("socialnetwork", "sonet_blog_group", false, SITE_ID); if (!$tmpVal) { COption::SetOptionString("socialnetwork", "sonet_blog_group", serialize($arParams["GROUP_ID"]), false, SITE_ID); } } if(strLen($arParams["BLOG_VAR"])<=0) $arParams["BLOG_VAR"] = "blog"; if(strLen($arParams["PAGE_VAR"])<=0) $arParams["PAGE_VAR"] = "page"; if(strLen($arParams["USER_VAR"])<=0) $arParams["USER_VAR"] = "id"; if(strLen($arParams["POST_VAR"])<=0) $arParams["POST_VAR"] = "id"; $applicationCurPage = $APPLICATION->GetCurPage(); $arParams["PATH_TO_BLOG"] = trim($arParams["PATH_TO_BLOG"]); if(strlen($arParams["PATH_TO_BLOG"])<=0) $arParams["PATH_TO_BLOG"] = htmlspecialcharsbx($applicationCurPage."?".$arParams["PAGE_VAR"]."=blog&".$arParams["BLOG_VAR"]."=#blog#"); $arParams["PATH_TO_BLOG"] = CHTTP::urlDeleteParams($arParams["PATH_TO_BLOG"], array("WFILES")); $arParams["PATH_TO_POST"] = trim($arParams["PATH_TO_POST"]); if(strlen($arParams["PATH_TO_POST"])<=0) $arParams["PATH_TO_POST"] = htmlspecialcharsbx($applicationCurPage."?".$arParams["PAGE_VAR"]."=post&".$arParams["BLOG_VAR"]."=#blog#&".$arParams["POST_VAR"]."=#post_id#"); $arParams["PATH_TO_POST_EDIT"] = trim($arParams["PATH_TO_POST_EDIT"]); if(strlen($arParams["PATH_TO_POST_EDIT"])<=0) $arParams["PATH_TO_POST_EDIT"] = htmlspecialcharsbx($applicationCurPage."?".$arParams["PAGE_VAR"]."=post_edit&".$arParams["BLOG_VAR"]."=#blog#&".$arParams["POST_VAR"]."=#post_id#"); $arParams["PATH_TO_USER"] = trim($arParams["PATH_TO_USER"]); if(strlen($arParams["PATH_TO_USER"])<=0) $arParams["PATH_TO_USER"] = htmlspecialcharsbx($applicationCurPage."?".$arParams["PAGE_VAR"]."=user&".$arParams["USER_VAR"]."=#user_id#"); $arParams["PATH_TO_DRAFT"] = trim($arParams["PATH_TO_DRAFT"]); if(strlen($arParams["PATH_TO_DRAFT"])<=0) $arParams["PATH_TO_DRAFT"] = htmlspecialcharsbx($applicationCurPage."?".$arParams["PAGE_VAR"]."=draft&".$arParams["BLOG_VAR"]."=#blog#"); $arParams["PATH_TO_GROUP_BLOG"] = trim($arParams["PATH_TO_GROUP_BLOG"]); if(strlen($arParams["PATH_TO_GROUP_BLOG"])<=0) $arParams["PATH_TO_GROUP_BLOG"] = "/workgroups/group/#group_id#/blog/"; if(strlen($arParams["PATH_TO_GROUP_POST"])<=0) $arParams["PATH_TO_GROUP_POST"] = "/workgroups/group/#group_id#/blog/#post_id#/"; if(strlen($arParams["PATH_TO_GROUP_POST_EDIT"])<=0) $arParams["PATH_TO_GROUP_POST_EDIT"] = "/workgroups/group/#group_id#/blog/edit/#post_id#/"; if(strlen($arParams["PATH_TO_GROUP_DRAFT"])<=0) $arParams["PATH_TO_GROUP_DRAFT"] = "/workgroups/group/#group_id#/blog/draft/"; $arParams["PATH_TO_SMILE"] = strlen(trim($arParams["PATH_TO_SMILE"]))<=0 ? false : trim($arParams["PATH_TO_SMILE"]); $arParams["DATE_TIME_FORMAT"] = trim(empty($arParams["DATE_TIME_FORMAT"]) ? $DB->DateFormatToPHP(CSite::GetDateFormat("FULL")) : $arParams["DATE_TIME_FORMAT"]); $arParams["USE_CUT"] = ($arParams["USE_CUT"] == "Y") ? "Y" : "N"; $arParams["EDITOR_RESIZABLE"] = $arParams["EDITOR_RESIZABLE"] !== "N"; $arParams["EDITOR_CODE_DEFAULT"] = $arParams["EDITOR_CODE_DEFAULT"] === "Y"; $arParams["EDITOR_DEFAULT_HEIGHT"] = intVal($arParams["EDITOR_DEFAULT_HEIGHT"]); if(IntVal($arParams["EDITOR_DEFAULT_HEIGHT"]) <= 0) $arParams["EDITOR_DEFAULT_HEIGHT"] = '120px'; $user_id = $USER->GetID(); $arResult["UserID"] = $user_id; $arResult["allowVideo"] = COption::GetOptionString("blog","allow_video", "Y"); $arParams["ALLOW_POST_CODE"] = $arParams["ALLOW_POST_CODE"] !== "N"; $arParams["USE_GOOGLE_CODE"] = $arParams["USE_GOOGLE_CODE"] === "Y"; $arParams["IMAGE_MAX_WIDTH"] = 400; $arParams["IMAGE_MAX_HEIGHT"] = 400; $arParams["POST_PROPERTY_SOURCE"] = $arParams["POST_PROPERTY"] = (is_array($arParams["POST_PROPERTY"]) ? $arParams["POST_PROPERTY"] : array($arParams["POST_PROPERTY"])); $arParams["POST_PROPERTY"][] = "UF_BLOG_POST_DOC"; $arParams["POST_PROPERTY"][] = "UF_BLOG_POST_IMPRTNT"; $arParams["POST_PROPERTY"][] = "UF_IMPRTANT_DATE_END"; if( Loader::includeModule("webdav") || Loader::includeModule("disk") ) { $arParams["POST_PROPERTY"][] = "UF_BLOG_POST_FILE"; $arParams["POST_PROPERTY"][] = "UF_BLOG_POST_F_EDIT"; } if (ModuleManager::isModuleInstalled("vote")) { $arParams["POST_PROPERTY"][] = "UF_BLOG_POST_VOTE"; } $arParams["POST_PROPERTY"][] = "UF_BLOG_POST_URL_PRV"; $arResult['BLOG_POST_LISTS'] = ( Loader::includeModule("lists") && CLists::isFeatureEnabled() && !$arResult["bExtranetSite"] && !$arParams["SOCNET_GROUP_ID"] && ModuleManager::isModuleInstalled('intranet') ); $arResult['BLOG_POST_TASKS'] = ModuleManager::isModuleInstalled("tasks"); if ( $arResult['BLOG_POST_TASKS'] && !CSocNetFeaturesPerms::CurrentUserCanPerformOperation( $arResult["bGroupMode"] ? SONET_ENTITY_GROUP : SONET_ENTITY_USER, $arResult["bGroupMode"] ? $arParams["SOCNET_GROUP_ID"] : $USER->getId(), "tasks", "create_tasks" ) ) { $arResult['BLOG_POST_TASKS'] = false; } if ( $arResult['BLOG_POST_TASKS'] && Loader::includeModule('bitrix24') && !\CBitrix24BusinessTools::isToolAvailable($USER->getId(), 'tasks') ) { $arResult['BLOG_POST_TASKS'] = false; } if ( $arResult['BLOG_POST_TASKS'] && $arResult["bGroupMode"] && ($arUserActiveFeatures = CSocNetFeatures::GetActiveFeatures(SONET_ENTITY_GROUP, $arParams["SOCNET_GROUP_ID"])) && is_array($arUserActiveFeatures) && !in_array('tasks', $arUserActiveFeatures) ) { $arResult['BLOG_POST_TASKS'] = false; } $a = new CAccess; $a->UpdateCodes(); $arResult["perms"] = BLOG_PERMS_DENY; if($arResult["bGroupMode"]) { if ( CSocNetFeaturesPerms::CanPerformOperation($user_id, SONET_ENTITY_GROUP, $arParams["SOCNET_GROUP_ID"], "blog", "full_post", CSocNetUser::IsCurrentUserModuleAdmin()) || $APPLICATION->GetGroupRight("blog") >= "W" ) { $arResult["perms"] = BLOG_PERMS_FULL; } elseif (CSocNetFeaturesPerms::CanPerformOperation($user_id, SONET_ENTITY_GROUP, $arParams["SOCNET_GROUP_ID"], "blog", "moderate_post")) { $arResult["perms"] = BLOG_PERMS_MODERATE; } elseif (CSocNetFeaturesPerms::CanPerformOperation($user_id, SONET_ENTITY_GROUP, $arParams["SOCNET_GROUP_ID"], "blog", "write_post")) { $arResult["perms"] = BLOG_PERMS_WRITE; } elseif (CSocNetFeaturesPerms::CanPerformOperation($user_id, SONET_ENTITY_GROUP, $arParams["SOCNET_GROUP_ID"], "blog", "premoderate_post")) { $arResult["perms"] = BLOG_PERMS_PREMODERATE; } } elseif ( $arParams["USER_ID"] == $user_id || $APPLICATION->GetGroupRight("blog") >= "W" || CSocNetFeaturesPerms::CanPerformOperation($user_id, SONET_ENTITY_USER, $arParams["USER_ID"], "blog", "full_post", CSocNetUser::IsCurrentUserModuleAdmin()) ) { $arResult["perms"] = BLOG_PERMS_FULL; } $arBlog = \Bitrix\Blog\Item\Blog::getByUser(array( "GROUP_ID" => $arParams["GROUP_ID"], "SITE_ID" => SITE_ID, "USER_ID" => $arParams["USER_ID"], "USE_SOCNET" => "Y" )); $arResult["Blog"] = $arBlog; $arResult["urlToBlog"] = CComponentEngine::MakePathFromTemplate( ($arResult["bGroupMode"] ? $arParams["PATH_TO_GROUP_BLOG"] : $arParams["PATH_TO_BLOG"]), array("blog" => $arBlog["URL"], "user_id" => $arBlog["OWNER_ID"], "group_id" => $arParams["SOCNET_GROUP_ID"]) ); $arPostFields = $USER_FIELD_MANAGER->GetUserFields("BLOG_POST", $arParams["ID"], LANGUAGE_ID); $arResult["POST_PROPERTIES"] = array("SHOW" => "N", "DATA" => array()); $arParams["CACHE_TIME"] = defined("BX_COMP_MANAGED_CACHE") ? 3600*24*365 : 3600*24; $arResult["PostToShow"]["GRATS"] = array(); $arResult["PostToShow"]["GRATS_DEF"] = false; $cache = new CPHPCache; $cache_id = "blog_post_grats_".SITE_ID; $cache_path = "/blog/form/post/new"; if ($arParams["CACHE_TIME"] > 0 && $cache->InitCache($arParams["CACHE_TIME"], $cache_id, $cache_path)) { $Vars = $cache->GetVars(); $arResult["PostToShow"]["GRATS"] = $Vars["GRATS"]; $arResult["PostToShow"]["GRATS_DEF"] = $Vars["GRATS_DEF"]; $honour_iblock_id = $Vars["GRATS_IBLOCK_ID"]; } else { $honour_iblock_id = 0; $cache->StartDataCache(); if ( ( !empty($arParams["POST_PROPERTY"]) || ModuleManager::isModuleInstalled("intranet") ) && !$arResult["bExtranetSite"] && Loader::includeModule("iblock") ) { $rsIBlock = CIBlock::GetList(array(), array("CODE" => "honour", "TYPE" => "structure")); if ($arIBlock = $rsIBlock->Fetch()) { $honour_iblock_id = $arIBlock["ID"]; if (defined("BX_COMP_MANAGED_CACHE")) $CACHE_MANAGER->StartTagCache($cache_path); $rsIBlockPropertyEnum = CIBlockPropertyEnum::GetList( array( "SORT" => "ASC", "XML_ID" => "ASC" ), array( "CODE" => "GRATITUDE", "IBLOCK_ID" => $arIBlock["ID"] ) ); while($arIBlockPropertyEnum = $rsIBlockPropertyEnum->Fetch()) { $arResult["PostToShow"]["GRATS"][] = $arIBlockPropertyEnum; if ($arIBlockPropertyEnum["DEF"] == "Y") $arResult["PostToShow"]["GRATS_DEF"] = $arIBlockPropertyEnum; } if(defined("BX_COMP_MANAGED_CACHE")) $CACHE_MANAGER->EndTagCache(); } } $cache->EndDataCache( array( "GRATS" => $arResult["PostToShow"]["GRATS"], "GRATS_DEF" => $arResult["PostToShow"]["GRATS_DEF"], "GRATS_IBLOCK_ID" => $honour_iblock_id ) ); } if( $arParams["ID"] > 0 && $arPost = CBlogPost::GetByID($arParams["ID"]) ) { $arPost = CBlogTools::htmlspecialcharsExArray($arPost); $arPost['DETAIL_TEXT'] = preg_replace("/\[tag\](.+?)\[\/tag\]/is".BX_UTF_PCRE_MODIFIER, "\\1", $arPost['DETAIL_TEXT']); $arPost['~DETAIL_TEXT'] = preg_replace("/\[tag\](.+?)\[\/tag\]/is".BX_UTF_PCRE_MODIFIER, "\\1", $arPost['~DETAIL_TEXT']); $arResult["Post"] = $arPost; if($arParams["SET_TITLE"]=="Y") { $APPLICATION->SetTitle(GetMessage("BLOG_POST_EDIT")); } if( $arParams["USER_ID"] == $user_id || ( $_POST["apply"] && CSocNetUser::IsCurrentUserModuleAdmin(SITE_ID, false) ) || $APPLICATION->GetGroupRight("blog") >= "W" ) { $arResult["perms"] = BLOG_PERMS_FULL; } else { $arResult["perms"] = CBlogPost::GetSocNetPostPerms($arPost["ID"], true, false, $arPost["AUTHOR_ID"]); } // Get UF_GRATITUDE if ( ModuleManager::isModuleInstalled("intranet") && Loader::includeModule("iblock") && isset($arPostFields["UF_GRATITUDE"]) && is_array($arPostFields["UF_GRATITUDE"]) && intval($arPostFields["UF_GRATITUDE"]["VALUE"]) > 0 ) { if ($honour_iblock_id > 0) { $arGrat = array( "ID" => false, "USERS" => array(), "USERS_FOR_JS" => array(), "TYPE" => false ); $rsElementProperty = CIBlockElement::GetProperty( $honour_iblock_id, $arPostFields["UF_GRATITUDE"]["VALUE"] ); while ($arElementProperty = $rsElementProperty->Fetch()) { if (!$arGrat["ID"]) $arGrat["ID"] = htmlspecialcharsbx($arPostFields["UF_GRATITUDE"]["VALUE"]); if ($arElementProperty["CODE"] == "USERS") $arGrat["USERS"][] = htmlspecialcharsbx($arElementProperty["VALUE"]); elseif ($arElementProperty["CODE"] == "GRATITUDE") $arGrat["TYPE"] = array( "VALUE_ENUM" => $arElementProperty["VALUE_ENUM"], "XML_ID" => $arElementProperty["VALUE_XML_ID"] ); } if ($arGrat["ID"]) { $dbUsers = CUser::GetList( ($sort_by = Array('last_name'=>'asc', 'IS_ONLINE'=>'desc')), ($dummy=''), array( "ID" => implode("|", $arGrat["USERS"]), array( "FIELDS" => array("ID", "LAST_NAME", "NAME", "SECOND_NAME", "LOGIN", "PERSONAL_PHOTO", "WORK_POSITION", "PERSONAL_PROFESSION") ) ) ); while($arGratUser = $dbUsers->Fetch()) { $sName = trim(CUser::FormatName(empty($arParams["NAME_TEMPLATE"]) ? CSite::GetNameFormat(false) : $arParams["NAME_TEMPLATE"], $arGratUser)); $arGrat["USERS_FOR_JS"]["U".$arGratUser["ID"]] = array( "id" => "U".$arGratUser["ID"], "entityId" => $arGratUser["ID"], "name" => $sName, "avatar" => "", "desc" => $arGratUser["WORK_POSITION"] ? $arGratUser["WORK_POSITION"] : ($arGratUser["PERSONAL_PROFESSION"] ? $arGratUser["PERSONAL_PROFESSION"] : " ") ); } $arResult["PostToShow"]["GRAT_CURRENT"] = $arGrat; } } } } else { $arParams["ID"] = 0; if($arParams["SET_TITLE"] == "Y") { $APPLICATION->SetTitle(GetMessage("BLOG_NEW_MESSAGE")); } } if (IntVal($_GET["delete_blog_post_id"]) > 0 && $_GET["ajax_blog_post_delete"] == "Y") { if (check_bitrix_sessid()) { $delId = IntVal($_GET["delete_blog_post_id"]); if($arPost = CBlogPost::GetByID($delId)) { $perms = ( $arPost["AUTHOR_ID"] == $user_id ? Bitrix\Blog\Item\Permissions::FULL : CBlogPost::GetSocNetPostPerms($_GET["delete_blog_post_id"], true) ); if ( $perms < Bitrix\Blog\Item\Permissions::FULL && ( CSocNetUser::isCurrentUserModuleAdmin() || $APPLICATION->getGroupRight("blog") >= "W" ) ) { $perms = Bitrix\Blog\Item\Permissions::FULL; } if($perms >= Bitrix\Blog\Item\Permissions::FULL) { CBlogPost::DeleteLog($delId); BXClearCache(True, ComponentHelper::getBlogPostCacheDir(array( 'TYPE' => 'posts_popular', 'SITE_ID' => SITE_ID ))); BXClearCache(true, ComponentHelper::getBlogPostCacheDir(array( 'TYPE' => 'post', 'POST_ID' => $delId ))); BXClearCache(true, ComponentHelper::getBlogPostCacheDir(array( 'TYPE' => 'post_general', 'POST_ID' => $delId ))); BXClearCache(true, ComponentHelper::getBlogPostCacheDir(array( 'TYPE' => 'posts_last_blog', 'SITE_ID' => SITE_ID ))); BXClearCache(true, CComponentEngine::MakeComponentPath("bitrix:socialnetwork.blog.blog")); if (!CBlogPost::Delete($delId)) { $arResult["ERROR_MESSAGE"] .= GetMessage("BLOG_BLOG_BLOG_MES_DEL_ERROR"); } else { $arResult["OK_MESSAGE"] .= GetMessage("BLOG_BLOG_BLOG_MES_DEL_OK"); } } else { $arResult["ERROR_MESSAGE"] .= GetMessage("BLOG_BLOG_BLOG_MES_DEL_NO_RIGHTS"); } } else { $arResult["ERROR_MESSAGE"] .= GetMessage("BLOG_BLOG_BLOG_MES_DEL_ERROR"); } } else { $arResult["ERROR_MESSAGE"] .= GetMessage("BLOG_BLOG_SESSID_WRONG"); } $arResult["delete_blog_post"] = "Y"; $this->IncludeComponentTemplate(); return true; } /*if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_REQUEST['mfi_mode']) && ($_REQUEST['mfi_mode'] == "upload")) { CBlogImage::AddImageResizeHandler(array( 'width' => $arParams["IMAGE_MAX_WIDTH"], 'height' => $arParams["IMAGE_MAX_HEIGHT"] )); }*/ $isPostBeingEdited = $arParams["ID"] > 0; if ($isPostBeingEdited) { $periodsOfShowingImportantPost = ["ALWAYS", "CUSTOM"]; } else { $periodsOfShowingImportantPost = ["ALWAYS", "ONE_DAY", "TWO_DAYS", "WEEK", "MONTH", "CUSTOM"]; } $arResult["REMAIN_IMPORTANT_TILL"] = []; foreach ($periodsOfShowingImportantPost as $period) { $attributesForPopupList = [ "VALUE" => $period, "TEXT_KEY" => ("IMPORTANT_FOR_$period"), ]; $arResult["REMAIN_IMPORTANT_TILL"][] = $attributesForPopupList; } if ( ( $arParams["ID"] == 0 && $arResult["perms"] >= BLOG_PERMS_PREMODERATE ) || ( $arParams["ID"] > 0 && $arResult["perms"] >= BLOG_PERMS_FULL && $arPost["BLOG_ID"] == $arBlog["ID"] ) ) { $arP = Array(); if ( IntVal($arParams["ID"]) > 0 && $arPost["PUBLISH_STATUS"] == BLOG_PUBLISH_STATUS_READY && $arPost["AUTHOR_ID"] == $user_id ) { $arResult["OK_MESSAGE"] = GetMessage("BPE_HIDDEN_POSTED"); } $bAllowToAll = ComponentHelper::getAllowToAllDestination(); $bDefaultToAll = ( $bAllowToAll ? (COption::GetOptionString("socialnetwork", "default_livefeed_toall", "Y") == "Y") : false ); if ( ($_POST["apply"] || $_POST["save"] || $_POST["do_upload"] || $_POST["draft"]) && (!isset($_POST["changePostFormTab"]) || $_POST["changePostFormTab"] != 'tasks') ) { if(check_bitrix_sessid()) { if ($_POST["decode"] == "Y") { CUtil::JSPostUnescape(); } if ( empty($arBlog) && !empty($arParams["GROUP_ID"]) ) { $arBlog = ComponentHelper::createUserBlog(array( "BLOG_GROUP_ID" => (is_array($arParams["GROUP_ID"])) ? IntVal($arParams["GROUP_ID"][0]) : IntVal($arParams["GROUP_ID"]), "USER_ID" => $arParams["USER_ID"], "SITE_ID" => SITE_ID, "PATH_TO_BLOG" => $arParams["PATH_TO_BLOG"] )); if (!$arBlog) { $arResult["ERROR_MESSAGE"] .= GetMessage("B_B_MES_NO_BLOG"); } } } else { $arResult["ERROR_MESSAGE"] .= GetMessage("BPE_SESS"); } } if ( $_GET["image_upload_frame"] == "Y" || $_GET["image_upload"] || $_POST["do_upload"] || $_GET["del_image_id"] ) { if (check_bitrix_sessid()) { if(IntVal($_GET["del_image_id"]) > 0) { $del_image_id = IntVal($_GET["del_image_id"]); $aImg = CBlogImage::GetByID($del_image_id); if ( $aImg["BLOG_ID"] == $arBlog["ID"] && $aImg["POST_ID"] == IntVal($arParams["ID"]) ) { CBlogImage::Delete($del_image_id); } $APPLICATION->RestartBuffer(); die(); } else { $arResult["imageUploadFrame"] = "Y"; $arResult["imageUpload"] = "Y"; $APPLICATION->RestartBuffer(); header("Pragma: no-cache"); $arFields = Array(); if ($_FILES["BLOG_UPLOAD_FILE"]["size"] > 0) { $arFields = array( "BLOG_ID" => $arBlog["ID"], "POST_ID" => $arParams["ID"], "USER_ID" => $arResult["UserID"], "=TIMESTAMP_X" => $DB->GetNowFunction(), "TITLE" => $_POST["IMAGE_TITLE"], "IMAGE_SIZE" => $_FILES["BLOG_UPLOAD_FILE"]["size"] ); $arImage=array_merge( $_FILES["BLOG_UPLOAD_FILE"], array( "MODULE_ID" => "blog", "del" => "Y" ) ); $arFields["FILE_ID"] = $arImage; } elseif ($_POST["do_upload"] && $_FILES["FILE_ID"]["size"] > 0) { $arFields = array( "BLOG_ID" => $arBlog["ID"], "POST_ID" => $arParams["ID"], "USER_ID" => $arResult["UserID"], "=TIMESTAMP_X" => $DB->GetNowFunction(), "TITLE" => $_POST["IMAGE_TITLE"], "IMAGE_SIZE" => $_FILES["FILE_ID"]["size"], "URL" => $arBlog["URL"], ); $arImage=array_merge( $_FILES["FILE_ID"], array( "MODULE_ID" => "blog", "del" => "Y" ) ); $arFields["FILE_ID"] = $arImage; } if(!empty($arFields)) { if ($imgID = CBlogImage::Add($arFields)) { $aImg = CBlogImage::GetByID($imgID); $aImg = CBlogTools::htmlspecialcharsExArray($aImg); $aImgNew = CFile::ResizeImageGet( $aImg["FILE_ID"], array("width" => 90, "height" => 90), BX_RESIZE_IMAGE_EXACT, true ); $aImg["source"] = CFile::ResizeImageGet( $aImg["FILE_ID"], array("width" => $arParams["IMAGE_MAX_WIDTH"], "height" => $arParams["IMAGE_MAX_HEIGHT"]), BX_RESIZE_IMAGE_PROPORTIONAL, true ); $aImg["params"] = CFile::_GetImgParams($aImg["FILE_ID"]); $aImg["fileName"] = substr($aImgNew["src"], strrpos($aImgNew["src"], "/")+1); $file = "<img src=\"".$aImgNew["src"]."\" width=\"".$aImgNew["width"]."\" height=\"".$aImgNew["height"]."\" id=\"".$aImg["ID"]."\" border=\"0\" style=\"cursor:pointer\" onclick=\"InsertBlogImage_LHEPostFormId_blogPostForm('".$aImg["ID"]."', '".$aImg["source"]['src']."', '".$aImgNew["source"]['width']."');\" title=\"".GetMessage("BLOG_P_INSERT")."\">"; $file = str_replace("'","\'",$file); $file = str_replace("\r"," ",$file); $file = str_replace("\n"," ",$file); $arResult["ImageModified"] = $file; $arResult["Image"] = $aImg; } elseif ($ex = $APPLICATION->GetException()) { $arResult["ERROR_MESSAGE"] .= $ex->GetString(); } } } } } else { // Save calendar event from Socialnetwork live feed form if ( $_POST["save"] == "Y" && $_POST["changePostFormTab"] == "calendar" && check_bitrix_sessid() ) { if (isset($_POST['EVENT_PERM'])) { $arAccessCodes = array(); foreach($_POST["EVENT_PERM"] as $v => $k) { if(strlen($v) > 0 && is_array($k) && !empty($k)) { foreach($k as $vv) { if(strlen($vv) > 0) { $arAccessCodes[] = $vv; } } } } } $rrule = $_POST['EVENT_RRULE']; if ($_POST['rrule_endson'] == 'never') { unset($rrule['COUNT']); unset($rrule['UNTIL']); } elseif ($_POST['rrule_endson'] == 'count') { unset($rrule['UNTIL']); } elseif ($_POST['rrule_endson'] == 'until') { unset($rrule['COUNT']); } $arFields = array( "ID" => intVal($_POST['EVENT_ID']), "DT_FROM_TS" => $_POST['EVENT_FROM_TS'], // For calendar < 16.x.x "DT_TO_TS" => $_POST['EVENT_TO_TS'], // For calendar < 16.x.x "DATE_FROM" => $_POST['DATE_FROM'], "DATE_TO" => $_POST['DATE_TO'], "TIME_FROM" => $_POST['TIME_FROM'], "TIME_TO" => $_POST['TIME_TO'], "TZ_FROM" => $_POST['TZ_FROM'], "TZ_TO" => $_POST['TZ_TO'], "DEFAULT_TZ" => $_POST['DEFAULT_TZ'], "SKIP_TIME" => $_POST['EVENT_FULL_DAY'] == 'Y', 'NAME' => trim($_POST['EVENT_NAME']), 'DESCRIPTION' => trim($_POST['EVENT_DESCRIPTION']), 'SECTION' => intVal($_POST['EVENT_SECTION']), 'ACCESSIBILITY' => $_POST['EVENT_ACCESSIBILITY'], 'IMPORTANCE' => $_POST['EVENT_IMPORTANCE'], 'RRULE' => $rrule, 'LOCATION' => $_POST['EVENT_LOCATION'], "REMIND" => isset($_POST['EVENT_REMIND']) ? array(0 => array('count' => $_POST['EVENT_REMIND_COUNT'], 'type' => $_POST['EVENT_REMIND_TYPE'])) : null ); // Userfields for event $arUFFields = array(); foreach ($_POST as $field => $value) { if (substr($field, 0, 3) == "UF_") { $arUFFields[$field] = $value; } } CCalendarLiveFeed::EditCalendarEventEntry($arFields, $arUFFields, $arAccessCodes, array( 'type' => 'user', 'userId' => $arBlog["OWNER_ID"] )); $redirectUrl = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_BLOG"], array("user_id" => $arBlog["OWNER_ID"])); LocalRedirect($redirectUrl); } if ( $_POST["save"] == "Y" && $_POST["changePostFormTab"] == "lists" && check_bitrix_sessid() ) { $redirectUrl = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_BLOG"], array("user_id" => $arBlog["OWNER_ID"])); LocalRedirect($redirectUrl); } if ( ( $_POST["apply"] || $_POST["save"] || $_POST["draft"] ) && empty($_POST["reset"]) && (!isset($_POST["changePostFormTab"]) || $_POST["changePostFormTab"] != 'tasks') ) // Save on button click { if (check_bitrix_sessid()) { if(strlen($arResult["ERROR_MESSAGE"]) <= 0) { $DB->StartTransaction(); $CATEGORYtmp = array(); if(!empty($_POST["TAGS"])) { $dbCategory = CBlogCategory::GetList(Array(), Array("BLOG_ID" => $arBlog["ID"])); while($arCategory = $dbCategory->Fetch()) { $arCatBlog[ToLower($arCategory["NAME"])] = $arCategory["ID"]; } $tags = explode (",", $_POST["TAGS"]); foreach($tags as $tg) { $tg = trim($tg); if( !in_array($arCatBlog[ToLower($tg)], $CATEGORYtmp) && strlen($tg) > 0 ) { $CATEGORYtmp[] = ( IntVal($arCatBlog[ToLower($tg)]) > 0 ? $arCatBlog[ToLower($tg)] : CBlogCategory::Add(array("BLOG_ID" => $arBlog["ID"], "NAME" => $tg)) ); $tagList[] = $tg; } } } elseif (!empty($_POST["CATEGORY_ID"])) { foreach($_POST["CATEGORY_ID"] as $v) { if(substr($v, 0, 4) == "new_") { $CATEGORYtmp[] = CBlogCategory::Add(array("BLOG_ID"=>$arBlog["ID"],"NAME"=>substr($v, 4 ))); $arSites = ($arResult["bGroupMode"] && $arGroupSites ? $arGroupSites : array(SITE_ID)); } else { $CATEGORYtmp[] = $v; } } } else { $CATEGORY_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"]; } $PUBLISH_STATUS = (strlen($_POST["draft"]) > 0 ? BLOG_PUBLISH_STATUS_DRAFT : BLOG_PUBLISH_STATUS_PUBLISH); $arFields = array( "TITLE" => trim($_POST["POST_TITLE"]), "DETAIL_TEXT" => $_POST["POST_MESSAGE"], "DETAIL_TEXT_TYPE" => "text", "DATE_PUBLISH" => $DATE_PUBLISH, "PUBLISH_STATUS" => $PUBLISH_STATUS, "PATH" => CComponentEngine::MakePathFromTemplate(htmlspecialcharsBack($arParams["PATH_TO_POST"]), array("post_id" => "#post_id#", "user_id" => $arBlog["OWNER_ID"])), "URL" => $arBlog["URL"], ); if(\Bitrix\Main\Config\Configuration::getValue("utf_mode") === true) { $conn = \Bitrix\Main\Application::getConnection(); $table = \Bitrix\Blog\PostTable::getTableName(); if ($arFields["TITLE"] <> '') { if (!$conn->isUtf8mb4($table, 'TITLE')) { $arFields["TITLE"] = \Bitrix\Main\Text\UtfSafeString::escapeInvalidUtf($arFields["TITLE"]); } } if ($arFields["DETAIL_TEXT"] <> '') { if (!$conn->isUtf8mb4($table, 'DETAIL_TEXT')) { $arFields["DETAIL_TEXT"] = \Bitrix\Main\Text\UtfSafeString::escapeInvalidUtf($arFields["DETAIL_TEXT"]); } } } if($arParams["ALLOW_POST_CODE"] && strlen(trim($_POST["CODE"])) > 0) { $arFields["CODE"] = trim($_POST["CODE"]); $arPCFilter = array("BLOG_ID" => $arBlog["ID"], "CODE" => $arFields["CODE"]); if(IntVal($arParams["ID"]) > 0) $arPCFilter["!ID"] = $arParams["ID"]; $db = CBlogPost::GetList(Array(), $arPCFilter, false, Array("nTopCount" => 1), Array("ID", "CODE", "BLOG_ID")); if($db->Fetch()) { $uind = 0; do { $uind++; $arFields["CODE"] = $arFields["CODE"].$uind; $arPCFilter["CODE"] = $arFields["CODE"]; $db = CBlogPost::GetList(Array(), $arPCFilter, false, Array("nTopCount" => 1), Array("ID", "CODE", "BLOG_ID")); } while ($db->Fetch()); } } $arFields["PERMS_POST"] = array(); $arFields["PERMS_COMMENT"] = array(); $arFields["MICRO"] = "N"; $checkTitle = false; if ( $_POST["ACTION"] == "EDIT_POST" && isset($_POST["MOBILE"]) && $_POST["MOBILE"] == "Y" && isset($arPost) && isset($arPost["TITLE"]) ) { $arFields["TITLE"] = $arPost["~TITLE"]; $arFields["MICRO"] = $arPost["MICRO"]; } elseif ( strlen($arFields["TITLE"]) <= 0 || $_POST["show_title"] == "N" ) { $arFields["MICRO"] = "Y"; $arFields["TITLE"] = preg_replace(array("/\n+/is".BX_UTF_PCRE_MODIFIER, "/\s+/is".BX_UTF_PCRE_MODIFIER), " ", blogTextParser::killAllTags($arFields["DETAIL_TEXT"])); $parser = new \CTextParser(); $parser->allow = array('CLEAR_SMILES' => 'Y'); $arFields["TITLE"] = preg_replace("/ /is".BX_UTF_PCRE_MODIFIER, "", $parser->convertText($arFields["TITLE"])); $arFields["TITLE"] = trim($arFields["TITLE"], " \t\n\r\0\x0B\xA0"); $checkTitle = true; } $arTagPrev = array(); if(!empty($CATEGORYtmp)) { $res = CBlogCategory::getList( array(), array( '@ID' => $CATEGORYtmp ), false, false, array('NAME') ); while($arCategory = $res->fetch()) { $arTagPrev[] = $arCategory["NAME"]; } } $newCategoryIdList = array(); $postItem = new \Bitrix\Blog\Item\Post; $postItem->setFields($arFields); $codeList = array('DETAIL_TEXT'); if ( !isset($arFields['MICRO']) || $arFields['MICRO'] != 'Y' ) { $codeList[] = 'TITLE'; } $arTagInline = \Bitrix\Socialnetwork\Util::detectTags($arFields, $codeList); $arTag = array_merge($arTagPrev, $arTagInline); $arTag = array_intersect_key($arTag, array_unique(array_map('ToLower', $arTag))); if (count($arTag) > count($arTagPrev)) { $arTagPrevLower = array_unique(array_map('ToLower', $arTagPrev)); $newTagList = array(); foreach($arTagInline as $tagInline) { if (!in_array(ToLower($tagInline), $arTagPrevLower)) { $newTagList[] = $tagInline; } } if (!empty($newTagList)) { $newTagList = array_unique($newTagList); $existingCategoriesList = array(); $res = CBlogCategory::getList( array(), array( "@NAME" => $newTagList, "BLOG_ID" => $arBlog["ID"] ), false, false, array('ID', 'NAME') ); while ($arCategory = $res->fetch()) { $existingCategoriesList[$arCategory['NAME']] = $arCategory['ID']; } foreach($newTagList as $newTag) { if (array_key_exists($newTag, $existingCategoriesList)) { $newCategoryIdList[] = $existingCategoriesList[$newTag]; } else { $newCategoryIdList[] = CBlogCategory::add(array("BLOG_ID" => $arBlog["ID"], "NAME" => $newTag)); } } } } $CATEGORYtmp = array_merge($CATEGORYtmp, $newCategoryIdList); $CATEGORY_ID = implode(",", $CATEGORYtmp); $arFields["CATEGORY_ID"] = $CATEGORY_ID; $arFields["SOCNET_RIGHTS"] = array(); $bError = false; if (!empty($_POST["SPERM"])) { ComponentHelper::processBlogPostNewMailUser($_POST, $arResult); $resultFields = array( 'ERROR_MESSAGE' => false, 'PUBLISH_STATUS' => $arFields['PUBLISH_STATUS'] ); $destParams = array( 'POST_ID' => $arParams["ID"], 'PERM' => $_POST["SPERM"], 'IS_REST' => false, 'IS_EXTRANET_USER' => $arResult["bExtranetUser"] ); if ($arParams["ID"] <= 0) { $destParams['AUTHOR_ID'] = $user_id; } $arFields["SOCNET_RIGHTS"] = ComponentHelper::convertBlogPostPermToDestinationList($destParams, $resultFields); $arFields["PUBLISH_STATUS"] = $resultFields['PUBLISH_STATUS']; if (!empty($resultFields['ERROR_MESSAGE'])) { $arResult["ERROR_MESSAGE"] = $resultFields['ERROR_MESSAGE']; $bError = true; } } if ( !$bError && empty($arFields["SOCNET_RIGHTS"]) ) { $bError = true; $arResult["ERROR_MESSAGE"] .= GetMessage("BLOG_BPE_DESTINATION_EMPTY"); } $mentionList = $mentionListOld = array(); if(!$bError) { $fieldName = 'UF_BLOG_POST_DOC'; if ( isset($GLOBALS[$fieldName]) && is_array($GLOBALS[$fieldName]) ) { $arOldFiles = array(); if($arParams["ID"] > 0 && strlen($_POST["blog_upload_cid"]) <= 0) { $dbP = CBlogPost::GetList(array(), array("ID" => $arParams["ID"]), false, false, array("ID", $fieldName)); if($arP = $dbP->Fetch()) { $arOldFiles = $arP[$fieldName]; } } $arAttachedFiles = array(); foreach($GLOBALS[$fieldName] as $fileID) { $fileID = intval($fileID); if ($fileID <= 0) { continue; } elseif( ( !is_array($_SESSION["MFI_UPLOADED_FILES_".$_POST["blog_upload_cid"]]) || !in_array($fileID, $_SESSION["MFI_UPLOADED_FILES_".$_POST["blog_upload_cid"]]) ) && ( // mobile !is_array($_SESSION["MFU_UPLOADED_FILES_".$USER->GetId()]) || !in_array($fileID, $_SESSION["MFU_UPLOADED_FILES_".$USER->GetId()]) ) ) { if ( empty($arOldFiles) || !in_array($fileID, $arOldFiles) ) { continue; } } $arFile = CFile::GetFileArray($fileID); if (CFile::CheckImageFile(CFile::MakeFileArray($fileID)) === null) { $arImgFields = array( "BLOG_ID" => $arBlog["ID"], "POST_ID" => 0, "USER_ID" => $arResult["UserID"], "=TIMESTAMP_X" => $DB->GetNowFunction(), "TITLE" => $arFile["FILE_NAME"], "IMAGE_SIZE" => $arFile["FILE_SIZE"], "FILE_ID" => $fileID, "URL" => $arBlog["URL"], "IMAGE_SIZE_CHECK" => "N", ); $imgID = CBlogImage::Add($arImgFields); if (intval($imgID) <= 0) { $APPLICATION->ThrowException("Error Adding file by CBlogImage::Add"); } else { $arFields["DETAIL_TEXT"] = str_replace("[IMG ID=".$fileID."file", "[IMG ID=".$imgID."", $arFields["DETAIL_TEXT"]); } } else { $arAttachedFiles[] = $fileID; } } if ( is_array($arPostFields) && is_array($arPostFields[$fieldName]) && is_array($arPostFields[$fieldName]["VALUE"]) ) { $arAttachedFiles = array_unique(array_merge($arAttachedFiles, array_intersect($GLOBALS[$fieldName], $arPostFields[$fieldName]["VALUE"]))); } $GLOBALS[$fieldName] = $arAttachedFiles; } CSocNetLogComponent::checkEmptyUFValue('UF_BLOG_POST_FILE'); if (!empty($arParams["POST_PROPERTY"])) { $USER_FIELD_MANAGER->EditFormAddFields("BLOG_POST", $arFields); } preg_match_all("/\[user\s*=\s*([^\]]*)\](.+?)\[\/user\]/ies".BX_UTF_PCRE_MODIFIER, $_POST["POST_MESSAGE"], $arMention); $mentionList = (!empty($arMention) ? $arMention[1] : array()); $APPLICATION->ResetException(); $bAdd = false; if ( array_key_exists("GRAT", $_POST) && isset($_POST["GRAT"]["U"]) && is_array($_POST["GRAT"]["U"]) && array_key_exists("GRAT_TYPE", $_POST) && array_key_exists("changePostFormTab", $_POST) && $_POST["changePostFormTab"] == "grat" ) { $bNeedAddGrat = true; } if ( !empty($_POST["attachedFilesRaw"]) && is_array($_POST["attachedFilesRaw"]) ) { CSocNetLogComponent::saveRawFilesToUF( $_POST["attachedFilesRaw"], ( ModuleManager::isModuleInstalled("webdav") || ModuleManager::isModuleInstalled("disk") ? "UF_BLOG_POST_FILE" : "UF_BLOG_POST_DOC" ), $arFields ); } if( $checkTitle && strlen($arFields["TITLE"]) <= 0 && !empty($arFields["UF_BLOG_POST_FILE"]) && is_array($arFields["UF_BLOG_POST_FILE"]) ) { foreach($arFields["UF_BLOG_POST_FILE"] as $val) { if (!empty($val)) { $arFields["TITLE"] = GetMessage("BLOG_EMPTY_TITLE_PLACEHOLDER2"); break; } } } $arFields["SEARCH_GROUP_ID"] = \Bitrix\Main\Config\Option::get("socialnetwork", "userbloggroup_id", false, SITE_ID); if (isset($_POST["postShowingDuration"]) && in_array($_POST["postShowingDuration"], $periodsOfShowingImportantPost)) { if ($_POST["postShowingDuration"] !== "CUSTOM") { $userDateTimeNow = \Bitrix\Main\Type\DateTime::createFromTimestamp(time() + CTimeZone::GetOffset()); if ($_POST["postShowingDuration"] == "ALWAYS") { $arFields["UF_IMPRTANT_DATE_END"] = null; } else { switch ($_POST["postShowingDuration"]) { case "ONE_DAY": $showEndTime = $userDateTimeNow->setTime(23, 59, 59); break; case "TWO_DAYS": $showEndTime = $userDateTimeNow->setTime(23, 59, 59)->add("1D"); break; case "WEEK": $showEndTime = $userDateTimeNow->setTime(23, 59, 59)->add("7D"); break; case "MONTH": $showEndTime = $userDateTimeNow->setTime(23, 59, 59)->add("1M"); break; default: break; } $arFields["UF_IMPRTANT_DATE_END"] = \Bitrix\Main\Type\DateTime::createFromTimestamp($showEndTime->getTimestamp() - CTimeZone::GetOffset()); } } else { $postEndingServerTime = \Bitrix\Main\Type\DateTime::createFromUserTime($arFields["UF_IMPRTANT_DATE_END"]); $postEndingServerTime->add("-T1S"); $arFields["UF_IMPRTANT_DATE_END"] = $postEndingServerTime; } } if ($arParams["ID"] > 0) { if ( array_key_exists("GRAT", $_POST) && isset($_POST["GRAT"]["U"]) && is_array($_POST["GRAT"]["U"]) && array_key_exists("GRAT_TYPE", $_POST) ) { $bGratFromForm = true; if ( is_array($arResult["PostToShow"]["GRAT_CURRENT"]) && count(array_diff($arResult["PostToShow"]["GRAT_CURRENT"]["USERS"], $_POST["GRAT"]["U"])) == 0 && count(array_diff($_POST["GRAT"]["U"], $arResult["PostToShow"]["GRAT_CURRENT"]["USERS"])) == 0 && ToLower($arResult["PostToShow"]["GRAT_CURRENT"]["TYPE"]) == ToLower($_POST["GRAT_TYPE"]) ) { $bNeedAddGrat = false; $bGratSimilar = true; } } if ( ( !isset($arParams["MOBILE"]) || $arParams["MOBILE"] != "Y" ) && ( $_POST["changePostFormTab"] != "grat" || ( $bGratFromForm && !$bGratSimilar ) ) && ( is_array($arResult["PostToShow"]["GRAT_CURRENT"]) && intval($arResult["PostToShow"]["GRAT_CURRENT"]["ID"]) > 0 && Loader::includeModule("iblock") ) ) { CIBlockElement::Delete($arResult["PostToShow"]["GRAT_CURRENT"]["ID"]); if ($_POST["changePostFormTab"] != "grat") { CBlogPost::Update($arParams["ID"], array( "DETAIL_TEXT_TYPE" => "text", "UF_GRATITUDE" => false )); } } $arOldPost = CBlogPost::GetByID($arParams["ID"]); if( $arParams["MOBILE"] == "Y" && in_array("UF_BLOG_POST_URL_PRV", $arParams["POST_PROPERTY"]) && empty($arFields["UF_BLOG_POST_URL_PRV"]) && ( empty($arPostFields['UF_BLOG_POST_URL_PRV']) || empty($arPostFields['UF_BLOG_POST_URL_PRV']['VALUE']) ) && !empty($arFields["DETAIL_TEXT"]) && ($urlPreviewValue = ComponentHelper::getUrlPreviewValue($arFields["DETAIL_TEXT"])) ) { $arFields["UF_BLOG_POST_URL_PRV"] = $urlPreviewValue; } preg_match_all("/\[user\s*=\s*([^\]]*)\](.+?)\[\/user\]/ies".BX_UTF_PCRE_MODIFIER, $arOldPost["DETAIL_TEXT"], $arMentionOld); $mentionListOld = (!empty($arMentionOld) ? $arMentionOld[1] : array()); $socnetRightsOld = CBlogPost::GetSocnetPerms($arParams["ID"]); unset($arFields["DATE_PUBLISH"]); if($newID = CBlogPost::Update($arParams["ID"], $arFields)) { BXClearCache(true, ComponentHelper::getBlogPostCacheDir(array( 'TYPE' => 'post', 'POST_ID' => $arParams["ID"] ))); BXClearCache(true, ComponentHelper::getBlogPostCacheDir(array( 'TYPE' => 'post_general', 'POST_ID' => $arParams["ID"] ))); BXClearCache(True, ComponentHelper::getBlogPostCacheDir(array( 'TYPE' => 'posts_popular', 'SITE_ID' => SITE_ID ))); $arFields["AUTHOR_ID"] = $arOldPost["AUTHOR_ID"]; if ( $arFields["PUBLISH_STATUS"] == BLOG_PUBLISH_STATUS_DRAFT && $arOldPost["PUBLISH_STATUS"] == BLOG_PUBLISH_STATUS_PUBLISH ) { CBlogPost::DeleteLog($newID); } elseif ( $arFields["PUBLISH_STATUS"] == BLOG_PUBLISH_STATUS_PUBLISH && $arOldPost["PUBLISH_STATUS"] == BLOG_PUBLISH_STATUS_PUBLISH ) { $arParamsUpdateLog = Array( "allowVideo" => $arResult["allowVideo"], "PATH_TO_SMILE" => $arParams["PATH_TO_SMILE"], ); CBlogPost::UpdateLog($newID, $arFields, $arBlog, $arParamsUpdateLog); } elseif ( $arFields["PUBLISH_STATUS"] == BLOG_PUBLISH_STATUS_PUBLISH && $arOldPost["PUBLISH_STATUS"] == BLOG_PUBLISH_STATUS_READY ) { CBlogPost::notifyImPublish(array( "TYPE" => "POST", "TITLE" => (isset($arFields["TITLE"]) ? $arFields["TITLE"] : $arOldPost["TITLE"]), "TO_USER_ID" => $arFields["AUTHOR_ID"], "POST_URL" => CComponentEngine::MakePathFromTemplate(htmlspecialcharsBack($arParams["PATH_TO_POST"]), array("post_id" => $newID, "user_id" => $arBlog["OWNER_ID"])), "POST_ID" => $newID, )); } } } else { $arFields["=DATE_CREATE"] = $DB->GetNowFunction(); $arFields["AUTHOR_ID"] = $arResult["UserID"]; $arFields["BLOG_ID"] = $arBlog["ID"]; $ar = (is_array($arFields["UF_BLOG_POST_FILE"]) ? array_values($arFields["UF_BLOG_POST_FILE"]) : array()); $dbDuplPost = CBlogPost::GetList( array("ID" => "DESC"), array("BLOG_ID" => $arBlog["ID"]), false, array("nTopCount" => 1), array("ID", "BLOG_ID", "AUTHOR_ID", "DETAIL_TEXT", "TITLE") ); if($arDuplPost = $dbDuplPost->Fetch()) { $liveFeedEntity = \Bitrix\Socialnetwork\Livefeed\Provider::init(array( 'ENTITY_TYPE' => 'BLOG_POST', 'ENTITY_ID' => $arDuplPost['ID'], )); $logRights = $liveFeedEntity->getLogRights(); foreach($logRights as $key => $groupCode) { if ( $groupCode == 'SA' || $groupCode == 'U'.$arFields["AUTHOR_ID"] || preg_match('/^US(\d+)$/i', $groupCode, $matches) || preg_match('/^OSG(\d+)/i', $groupCode, $matches) || preg_match('/^SG(\d+)_/i', $groupCode, $matches) ) { unset($logRights[$key]); } elseif ($groupCode == 'G2') { $logRights[$key] = 'UA'; } } $diff1 = array_diff($logRights, $arFields["SOCNET_RIGHTS"]); $diff2 = array_diff($arFields["SOCNET_RIGHTS"], $logRights); if( empty($ar[0]) // no files && !$bNeedAddGrat // no gratitudes && $arDuplPost["BLOG_ID"] == $arFields["BLOG_ID"] && IntVal($arDuplPost["AUTHOR_ID"]) == IntVal($arFields["AUTHOR_ID"]) && md5($arDuplPost["DETAIL_TEXT"]) == md5($arFields["DETAIL_TEXT"]) && md5($arDuplPost["TITLE"]) == md5($arFields["TITLE"]) && empty($diff1) && empty($diff2) ) { $bError = true; $arResult["ERROR_MESSAGE"] = GetMessage("B_B_PC_DUPLICATE_POST"); } } if( !$bError && $arParams["MOBILE"] == "Y" && in_array("UF_BLOG_POST_URL_PRV", $arParams["POST_PROPERTY"]) && empty($arFields["UF_BLOG_POST_URL_PRV"]) && ($urlPreviewValue = ComponentHelper::getUrlPreviewValue($arFields["DETAIL_TEXT"])) ) { $arFields["UF_BLOG_POST_URL_PRV"] = $urlPreviewValue; } if( !$bError && strlen(trim($arFields['DETAIL_TEXT'])) <= 0 && !empty($arFields["UF_BLOG_POST_FILE"]) && is_array($arFields["UF_BLOG_POST_FILE"]) ) { foreach($arFields["UF_BLOG_POST_FILE"] as $val) { if (!empty($val)) { $arFields["DETAIL_TEXT"] = '[B][/B]'; break; } } } if(!$bError) { $newID = CBlogPost::Add($arFields); $socnetRightsOld = Array("U" => Array()); $bAdd = true; $bNeedMail = false; } } if(IntVal($newID) > 0) { if ( $bNeedAddGrat && Loader::includeModule("iblock") ) { $arGratFromPOST = false; $arUsersFromPOST = false; foreach ($arResult["PostToShow"]["GRATS"] as $arGrat) { if (ToLower($arGrat["XML_ID"]) == ToLower($_POST["GRAT_TYPE"])) { $arGratFromPOST = $arGrat; break; } } foreach($_POST["GRAT"]["U"] as $code) if (preg_match('/^U(\d+)$/', $code, $matches)) $arUsersFromPOST[] = $matches[1]; if ( $arGratFromPOST && $arUsersFromPOST ) { $el = new CIBlockElement; $new_grat_element_id = $el->Add( array( "IBLOCK_ID" => $honour_iblock_id, "DATE_ACTIVE_FROM" => ConvertTimeStamp(false, "FULL"), "NAME" => str_replace("#GRAT_NAME#", $arGratFromPOST["VALUE"], GetMessage("BLOG_GRAT_IBLOCKELEMENT_NAME")) ), false, false ); if ($new_grat_element_id > 0) { CIBlockElement::SetPropertyValuesEx( $new_grat_element_id, $honour_iblock_id, array( "USERS" => $arUsersFromPOST, "GRATITUDE" => array("VALUE" => $arGratFromPOST["ID"]) ) ); CBlogPost::Update($newID, array( "DETAIL_TEXT_TYPE" => "text", "UF_GRATITUDE" => $new_grat_element_id )); } } } CBlogPostCategory::DeleteByPostID($newID); foreach($CATEGORYtmp as $v) { CBlogPostCategory::Add(Array("BLOG_ID" => $arBlog["ID"], "POST_ID" => $newID, "CATEGORY_ID"=>$v)); } $DB->Query("UPDATE b_blog_image SET POST_ID=".$newID." WHERE BLOG_ID=".$arBlog["ID"]." AND POST_ID=0", true); $bHasImg = false; $bHasTag = false; $bHasProps = false; $bHasOnlyAll = false; if(!empty($CATEGORYtmp)) $bHasTag = true; $dbImg = CBlogImage::GetList(Array(), Array("BLOG_ID" => $arBlog["ID"], "POST_ID" => $newID, "IS_COMMENT" => "N"), false, false, Array("ID")); if($dbImg->Fetch()) $bHasImg = true; $arPostFieldsOLD = $arPostFields; $arPostFields = $USER_FIELD_MANAGER->GetUserFields("BLOG_POST", $newID, LANGUAGE_ID); if ( ($arPostFields["UF_BLOG_POST_IMPRTNT"]["VALUE"] != $arPostFieldsOLD["UF_BLOG_POST_IMPRTNT"]["VALUE"]) || ( $arParams["ID"] > 0 && ( $arResult["Post"]["~DETAIL_TEXT"] != $arFields["DETAIL_TEXT"] || $arResult["Post"]["~TITLE"] != $arFields["TITLE"] ) ) ) { if ($arPostFields["UF_BLOG_POST_IMPRTNT"]["VALUE"] != $arPostFieldsOLD["UF_BLOG_POST_IMPRTNT"]["VALUE"]) { if ($arPostFields["UF_BLOG_POST_IMPRTNT"]["VALUE"]) CBlogUserOptions::SetOption($newID, "BLOG_POST_IMPRTNT", "Y", $USER->GetID()); else CBlogUserOptions::DeleteOption($newID, "BLOG_POST_IMPRTNT", $USER->GetID()); } if (defined("BX_COMP_MANAGED_CACHE")) { $CACHE_MANAGER->ClearByTag('blogpost_important_all'); } } foreach ($arPostFields as $FIELD_NAME => $arPostField) { if(!empty($arPostField["VALUE"])) { $bHasProps = true; break; } } if(!empty($arFields["SOCNET_RIGHTS"]) && count($arFields["SOCNET_RIGHTS"]) == 1 && in_array("UA", $arFields["SOCNET_RIGHTS"])) $bHasOnlyAll = true; $arFieldsHave = array( "HAS_IMAGES" => ($bHasImg ? "Y" : "N"), "HAS_TAGS" => ($bHasTag ? "Y" : "N"), "HAS_PROPS" => ($bHasProps ? "Y" : "N"), "HAS_SOCNET_ALL" => ($bHasOnlyAll ? "Y" : "N"), ); CBlogPost::Update($newID, $arFieldsHave, false); } if( ( $bAdd && $newID && $arFields["PUBLISH_STATUS"] == BLOG_PUBLISH_STATUS_PUBLISH ) || ( $arOldPost["PUBLISH_STATUS"] != BLOG_PUBLISH_STATUS_PUBLISH && $arFields["PUBLISH_STATUS"] == BLOG_PUBLISH_STATUS_PUBLISH ) ) { $arFields["ID"] = $newID; $arParamsNotify = Array( "bSoNet" => true, "UserID" => $arResult["UserID"], "allowVideo" => $arResult["allowVideo"], "PATH_TO_SMILE" => $arParams["PATH_TO_SMILE"], "PATH_TO_POST" => $arParams["PATH_TO_POST"], "SOCNET_GROUP_ID" => $arParams["SOCNET_GROUP_ID"], "user_id" => $arParams["USER_ID"], "NAME_TEMPLATE" => $arParams["NAME_TEMPLATE"], "SHOW_LOGIN" => $arParams["SHOW_LOGIN"], ); $logId = CBlogPost::Notify($arFields, $arBlog, $arParamsNotify); \Bitrix\Blog\Util::sendBlogPing(array( 'siteId' => SITE_ID, 'serverName' => $serverName, 'pathToBlog' => $arParams["PATH_TO_BLOG"], 'blogFields' => $arBlog )); } } if ( isset($newID) && $newID > 0 && strlen($arResult["ERROR_MESSAGE"]) <= 0 ) // Record saved successfully { $eventId = \Bitrix\Blog\Integration\Socialnetwork\Log::EVENT_ID_POST; $arPostFields = $USER_FIELD_MANAGER->GetUserFields("BLOG_POST", $newID, LANGUAGE_ID); if ( isset($arPostFields["UF_BLOG_POST_IMPRTNT"]) && isset($arPostFields["UF_BLOG_POST_IMPRTNT"]["VALUE"]) && intval($arPostFields["UF_BLOG_POST_IMPRTNT"]["VALUE"]) > 0 ) { $eventId = \Bitrix\Blog\Integration\Socialnetwork\Log::EVENT_ID_POST_IMPORTANT; } elseif ( isset($arPostFields["UF_BLOG_POST_VOTE"]) && isset($arPostFields["UF_BLOG_POST_VOTE"]["VALUE"]) && intval($arPostFields["UF_BLOG_POST_VOTE"]["VALUE"]) > 0 ) { $eventId = \Bitrix\Blog\Integration\Socialnetwork\Log::EVENT_ID_POST_VOTE; } elseif ( isset($arPostFields["UF_GRATITUDE"]) && isset($arPostFields["UF_GRATITUDE"]["VALUE"]) && intval($arPostFields["UF_GRATITUDE"]["VALUE"]) > 0 ) { $eventId = \Bitrix\Blog\Integration\Socialnetwork\Log::EVENT_ID_POST_GRAT; } if ( !isset($logId) || intval($logId) <= 0 ) { $blogPostLivefeedProvider = new \Bitrix\Socialnetwork\Livefeed\BlogPost; $res = \Bitrix\Socialnetwork\LogTable::getList(array( 'filter' => array( 'EVENT_ID' => $blogPostLivefeedProvider->getEventId(), 'SOURCE_ID' => $newID ), 'select' => array('ID') )); if ($logFields = $res->fetch()) { $logId = $logFields['ID']; } } if ( isset($logId) && intval($logId) > 0 ) { $logFields = array( "EVENT_ID" => $eventId ); if ($post = \Bitrix\Blog\Item\Post::getById($newID)) { $logFields["TAG"] = $post->getTags(); } CSocNetLog::Update(intval($logId), $logFields); } $DB->Commit(); $postUrl = CComponentEngine::MakePathFromTemplate(htmlspecialcharsBack($arParams["PATH_TO_POST"]), array("post_id" => $newID, "user_id" => $arBlog["OWNER_ID"])); if($arFields["PUBLISH_STATUS"] == BLOG_PUBLISH_STATUS_PUBLISH) { BXClearCache(true, ComponentHelper::getBlogPostCacheDir(array( 'TYPE' => 'posts_last', 'SITE_ID' => SITE_ID ))); BXClearCache(true, ComponentHelper::getBlogPostCacheDir(array( 'TYPE' => 'posts_last_blog', 'SITE_ID' => SITE_ID ))); ComponentHelper::notifyBlogPostCreated(array( 'post' => array( 'ID' => $newID, 'TITLE' => $arFields["TITLE"], 'AUTHOR_ID' => $arParams["USER_ID"] ), 'siteId' => SITE_ID, 'postUrl' => $postUrl, 'socnetRights' => $arFields["SOCNET_RIGHTS"], 'socnetRightsOld' => (!empty($socnetRightsOld) ? $socnetRightsOld : array()), 'mentionListOld' => $mentionListOld, 'mentionList' => $mentionList )); if (!empty($mentionList)) { $arMentionedDestCode = array(); foreach($mentionList as $val) { if (!in_array($val, $mentionListOld)) { $arMentionedDestCode[] = "U".$val; } } if (!empty($arMentionedDestCode)) { \Bitrix\Main\FinderDestTable::merge(array( "CONTEXT" => "mention", "CODE" => array_unique($arMentionedDestCode) )); } } } elseif ( $arFields["PUBLISH_STATUS"] == BLOG_PUBLISH_STATUS_READY && ( !isset($arOldPost) || !isset($arOldPost["PUBLISH_STATUS"]) || $arOldPost["PUBLISH_STATUS"] != BLOG_PUBLISH_STATUS_READY ) && !empty($arFields["SOCNET_RIGHTS"]) ) { CBlogPost::NotifyImReady(array( "TYPE" => "POST", "POST_ID" => $newID, "TITLE" => $arFields["TITLE"], "POST_URL" => $postUrl, "FROM_USER_ID" => $arParams["USER_ID"], "TO_SOCNET_RIGHTS" => $arFields["SOCNET_RIGHTS"] )); } $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($_POST["apply"]) <= 0) { if($arFields["PUBLISH_STATUS"] == BLOG_PUBLISH_STATUS_DRAFT || strlen($_POST["draft"]) > 0) { $redirectUrl = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_DRAFT"], array("user_id" => $arBlog["OWNER_ID"])); } elseif($arFields["PUBLISH_STATUS"] == BLOG_PUBLISH_STATUS_READY) { $redirectUrl = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_POST_EDIT"], array("post_id"=>$newID, "user_id" => $arBlog["OWNER_ID"]))."?moder=y"; } else { $redirectUrl = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_BLOG"], array("user_id" => $arBlog["OWNER_ID"])); } } else { $redirectUrl = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_POST_EDIT"], array("post_id"=>$newID, "user_id" => $arBlog["OWNER_ID"])); } $as = new CAutoSave(); // It is necessary to clear autosave buffer $as->Reset(); if (Loader::includeModule('pull')) { \Bitrix\Pull\Event::send(); } LocalRedirect($redirectUrl); } else { $DB->Rollback(); if(strlen($arResult["ERROR_MESSAGE"]) <= 0) { if ($ex = $APPLICATION->GetException()) $arResult["ERROR_MESSAGE"] = $ex->GetString(); else $arResult["ERROR_MESSAGE"] = "Error saving data to database.<br />"; } } } } else { $arResult["ERROR_MESSAGE"] = GetMessage("BPE_SESS"); } } elseif($_POST["reset"]) { if($arFields["PUBLISH_STATUS"] == BLOG_PUBLISH_STATUS_DRAFT) LocalRedirect(CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_DRAFT"], array("user_id" => $arBlog["OWNER_ID"]))); elseif($arResult["bGroupMode"]) LocalRedirect(CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_GROUP_BLOG"], array("group_id" => $arParams["SOCNET_GROUP_ID"]))); else LocalRedirect(CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_BLOG"], array("user_id" => $arBlog["OWNER_ID"]))); } if ( $arParams["ID"] > 0 && strlen($arResult["ERROR_MESSAGE"]) <= 0 ) // Edit post { $arResult["PostToShow"]["TITLE"] = ($arPost["MICRO"] != "Y" ? $arPost["TITLE"] : ""); $arResult["PostToShow"]["DETAIL_TEXT"] = $arPost["DETAIL_TEXT"]; $arResult["PostToShow"]["~DETAIL_TEXT"] = $arPost["~DETAIL_TEXT"]; $arResult["PostToShow"]["DETAIL_TEXT_TYPE"] = $arPost["DETAIL_TEXT_TYPE"]; $arResult["PostToShow"]["PUBLISH_STATUS"] = $arPost["PUBLISH_STATUS"]; $arResult["PostToShow"]["ENABLE_TRACKBACK"] = $arPost["ENABLE_TRACKBACK"] == "Y"; $arResult["PostToShow"]["ENABLE_COMMENTS"] = $arPost["ENABLE_COMMENTS"]; $arResult["PostToShow"]["ATTACH_IMG"] = $arPost["ATTACH_IMG"]; $arResult["PostToShow"]["DATE_PUBLISH"] = $arPost["DATE_PUBLISH"]; $arResult["PostToShow"]["CATEGORY_ID"] = $arPost["CATEGORY_ID"]; $arResult["PostToShow"]["FAVORITE_SORT"] = $arPost["FAVORITE_SORT"]; $arResult["PostToShow"]["MICRO"] = $arPost["MICRO"]; if ($arParams["ALLOW_POST_CODE"]) { $arResult["PostToShow"]["CODE"] = $arPost["CODE"]; } $arResult["PostToShow"]["SPERM"] = CBlogPost::GetSocnetPerms($arPost["ID"]); if ( is_array($arResult["PostToShow"]["SPERM"]["U"][$arPost["AUTHOR_ID"]]) && in_array("US".$arPost["AUTHOR_ID"], $arResult["PostToShow"]["SPERM"]["U"][$arPost["AUTHOR_ID"]]) ) { $arResult["PostToShow"]["SPERM"]["U"]["A"] = Array(); } if ( !is_array($arResult["PostToShow"]["SPERM"]["U"][$arPost["AUTHOR_ID"]]) || !in_array("U".$arPost["AUTHOR_ID"], $arResult["PostToShow"]["SPERM"]["U"][$arPost["AUTHOR_ID"]]) ) { unset($arResult["PostToShow"]["SPERM"]["U"][$arPost["AUTHOR_ID"]]); } } else { $arResult["PostToShow"]["TITLE"] = htmlspecialcharsEx($_POST["POST_TITLE"]); $arResult["PostToShow"]["CATEGORY_ID"] = $_POST["CATEGORY_ID"]; $arResult["PostToShow"]["CategoryText"] = htmlspecialcharsEx($_POST["TAGS"]); $arResult["PostToShow"]["DETAIL_TEXT"] = $_POST["POST_MESSAGE"]; $arResult["PostToShow"]["~DETAIL_TEXT"] = $_POST["POST_MESSAGE"]; $arResult["PostToShow"]["PUBLISH_STATUS"] = htmlspecialcharsEx($_POST["PUBLISH_STATUS"]); $arResult["PostToShow"]["ENABLE_COMMENTS"] = htmlspecialcharsEx($_POST["ENABLE_COMMENTS"]); $arResult["PostToShow"]["DATE_PUBLISH"] = $_POST["DATE_PUBLISH"] ? htmlspecialcharsEx($_POST["DATE_PUBLISH"]) : ConvertTimeStamp(time()+CTimeZone::GetOffset(),"FULL"); if($arParams["ALLOW_POST_CODE"]) $arResult["PostToShow"]["CODE"] = htmlspecialcharsEx($_POST["CODE"]); $arResult["PostToShow"]["SPERM"] = CBlogTools::htmlspecialcharsExArray($_POST["SPERM"]); if(empty($arResult["PostToShow"]["SPERM"])) $arResult["PostToShow"]["SPERM"] = array(); if(empty($_POST["SPERM"])) { if(IntVal($arParams["SOCNET_GROUP_ID"]) > 0) $arResult["PostToShow"]["SPERM"]["SG"][IntVal($arParams["SOCNET_GROUP_ID"])] = ""; if(IntVal($arParams["SOCNET_USER_ID"]) > 0) $arResult["PostToShow"]["SPERM"]["U"][IntVal($arParams["SOCNET_USER_ID"])] = ""; } else { foreach($_POST["SPERM"] as $k => $v) { foreach($v as $vv1) { if(strlen($vv1) > 0) { if($vv1 == "UA") $arResult["PostToShow"]["SPERM"]["U"][] = "A"; else $arResult["PostToShow"]["SPERM"][$k][str_replace($k, "", $vv1)] = ""; } } } } if ( ( array_key_exists("GRAT", $_POST) && isset($_POST["GRAT"]["U"]) ) || array_key_exists("GRAT_TYPE", $_POST) ) { if ( array_key_exists("GRAT", $_POST) && isset($_POST["GRAT"]["U"]) && is_array($_POST["GRAT"]["U"]) && count($_POST["GRAT"]["U"]) > 0 ) { $arUsersFromPOST = array(); foreach($_POST["GRAT"]["U"] as $code) if (preg_match('/^U(\d+)$/', $code, $matches)) $arUsersFromPOST[] = $matches[1]; if (count($arUsersFromPOST) > 0) { $dbUsers = CUser::GetList( ($sort_by = Array('last_name'=>'asc', 'IS_ONLINE'=>'desc')), ($dummy=''), array( "ID" => implode("|", $arUsersFromPOST), array( "FIELDS" => array("ID", "LAST_NAME", "NAME", "SECOND_NAME", "LOGIN", "PERSONAL_PHOTO", "WORK_POSITION", "PERSONAL_PROFESSION") ) ) ); while($arGratUser = $dbUsers->Fetch()) { $arResult["PostToShow"]["GRAT_CURRENT"]["USERS"][] = $arGratUser["ID"]; $sName = trim(CUser::FormatName(empty($arParams["NAME_TEMPLATE"]) ? CSite::GetNameFormat(false) : $arParams["NAME_TEMPLATE"], $arGratUser)); $arResult["PostToShow"]["GRAT_CURRENT"]["USERS_FOR_JS"]["U".$arGratUser["ID"]] = array( "id" => "U".$arGratUser["ID"], "entityId" => $arGratUser["ID"], "name" => $sName, "avatar" => "", "desc" => $arGratUser["WORK_POSITION"] ? $arGratUser["WORK_POSITION"] : ($arGratUser["PERSONAL_PROFESSION"] ? $arGratUser["PERSONAL_PROFESSION"] : " ") ); } } } if ( array_key_exists("GRAT_TYPE", $_POST) && strlen($_POST["GRAT_TYPE"]) > 0 && is_array($arResult["PostToShow"]["GRATS"]) ) foreach ($arResult["PostToShow"]["GRATS"] as $arGrat) { if ($arGrat["XML_ID"] == $_POST["GRAT_TYPE"]) { $arResult["PostToShow"]["GRAT_CURRENT"]["TYPE"] = $arGrat; break; } } } if($_REQUEST["moder"] == "y") $arResult["OK_MESSAGE"] = GetMessage("BPE_HIDDEN_POSTED"); } if ($arResult["SHOW_FULL_FORM"]) { /* @deprecated */ $arResult["Smiles"] = CBlogSmile::GetSmilesList(); } $arResult["Images"] = Array(); if(!empty($arBlog) && ($arPost["ID"] > 0 || strlen($arResult["ERROR_MESSAGE"]) > 0)) { $arFilter = array( "POST_ID" => $arParams["ID"], "BLOG_ID" => $arBlog["ID"], "IS_COMMENT" => "N", ); if ($arParams["ID"]==0) $arFilter["USER_ID"] = $arResult["UserID"]; $res = CBlogImage::GetList(array("ID"=>"ASC"), $arFilter); while($aImg = $res->Fetch()) { $aImgNew = CFile::ResizeImageGet( $aImg["FILE_ID"], array("width" => 90, "height" => 90), BX_RESIZE_IMAGE_EXACT, true ); $aImgNew["source"] = CFile::ResizeImageGet( $aImg["FILE_ID"], array("width" => $arParams["IMAGE_MAX_WIDTH"], "height" => $arParams["IMAGE_MAX_HEIGHT"]), BX_RESIZE_IMAGE_PROPORTIONAL, true ); $aImgNew["ID"] = $aImg["ID"]; $aImgNew["params"] = CFile::_GetImgParams($aImg["FILE_ID"]); $aImgNew["fileName"] = substr($aImgNew["src"], strrpos($aImgNew["src"], "/")+1); $aImgNew["fileShow"] = "<img src=\"".$aImgNew["src"]."\" width=\"".$aImgNew["width"]."\" height=\"".$aImgNew["height"]."\" border=\"0\" style=\"cursor:pointer\" onclick=\"InsertBlogImage_LHEPostFormId_blogPostForm('".$aImg["ID"]."', '".$aImgNew["source"]['src']."', '".$aImgNew["source"]['width']."');\" title=\"".GetMessage("BLOG_P_INSERT")."\">"; $aImgNew["SRC"] = $aImgNew["source"]["src"]; $aImgNew["FILE_NAME"] = $aImgNew["fileName"]; $aImgNew["FILE_SIZE"] = $aImgNew["source"]["size"]; $aImgNew["URL"] = $aImgNew["src"]; $aImgNew["CONTENT_TYPE"] = "image/xyz"; $aImgNew["THUMBNAIL"] = $aImgNew["src"]; $aImgNew["DEL_URL"] = $APPLICATION->GetCurPageParam( "del_image_id=".$aImg["ID"]."&".bitrix_sessid_get(), Array("sessid", "image_upload_frame", "image_upload", "do_upload","del_image_id")); $arResult["Images"][] = $aImgNew; } } if(strpos($arResult["PostToShow"]["CATEGORY_ID"], ",")!==false) $arResult["PostToShow"]["CATEGORY_ID"] = explode(",", trim($arResult["PostToShow"]["CATEGORY_ID"])); $arResult["Category"] = Array(); if(strlen($arResult["PostToShow"]["CategoryText"]) <= 0 && !empty($arResult["PostToShow"]["CATEGORY_ID"])) { $res = CBlogCategory::GetList(array("NAME"=>"ASC"),array("BLOG_ID"=>$arBlog["ID"])); while ($arCategory=$res->GetNext()) { if (is_array($arResult["PostToShow"]["CATEGORY_ID"])) { if (in_array($arCategory["ID"], $arResult["PostToShow"]["CATEGORY_ID"])) { $arCategory["Selected"] = "Y"; } } elseif (IntVal($arCategory["ID"]) == IntVal($arResult["PostToShow"]["CATEGORY_ID"])) { $arCategory["Selected"] = "Y"; } if ($arCategory["Selected"] == "Y") { $arResult["PostToShow"]["CategoryText"] .= $arCategory["~NAME"].","; } $arResult["Category"][$arCategory["ID"]] = $arCategory; } $arResult["PostToShow"]["CategoryText"] = substr($arResult["PostToShow"]["CategoryText"], 0, strlen($arResult["PostToShow"]["CategoryText"])-1); } foreach ($arParams["POST_PROPERTY"] as $FIELD_NAME) { $arPostField = $arPostFields[$FIELD_NAME]; if (!!$arPostField) { if ( !empty($arResult["ERROR_MESSAGE"]) && !empty($_POST[$FIELD_NAME]) ) { $arPostField["VALUE"] = $_POST[$FIELD_NAME]; } $arPostField["~EDIT_FORM_LABEL"] = ($arPostField["EDIT_FORM_LABEL"] !== "" ? $arPostField["EDIT_FORM_LABEL"] : $arPostField["FIELD_NAME"]); $arPostField["EDIT_FORM_LABEL"] = htmlspecialcharsEx($arPostField["~EDIT_FORM_LABEL"]); $arResult["POST_PROPERTIES"]["DATA"][$FIELD_NAME] = $arPostField; $arResult["POST_PROPERTIES"]["SHOW"] = "Y"; } } if( isset($_REQUEST["WFILES"]) && !empty($_REQUEST["WFILES"]) && is_array($_REQUEST["WFILES"]) && !$_POST["save"] ) { $isDiskProperty = ( isset($arResult["POST_PROPERTIES"]["DATA"]["UF_BLOG_POST_FILE"]['USER_TYPE_ID']) && $arResult["POST_PROPERTIES"]["DATA"]["UF_BLOG_POST_FILE"]['USER_TYPE_ID'] === 'disk_file' ); foreach($_REQUEST["WFILES"] as $val) { $val = intval($val); if($val <= 0) { continue; } if($isDiskProperty) { //@see Bitrix\Disk\Uf\FileUserType::NEW_FILE_PREFIX $val = 'n' . $val; } $arResult["POST_PROPERTIES"]["DATA"]["UF_BLOG_POST_FILE"]["VALUE"][] = $val; } if(!empty($arResult["POST_PROPERTIES"]["DATA"]["UF_BLOG_POST_FILE"]["VALUE"])) { $arResult["needShow"] = true; } } $arResult["urlToDelImage"] = $APPLICATION->GetCurPageParam("del_image_id=#del_image_id#&".bitrix_sessid_get(), Array("sessid", "image_upload_frame", "image_upload", "do_upload","del_image_id")); $serverName = ""; $dbSite = CSite::GetByID(SITE_ID); $arSite = $dbSite->Fetch(); $serverName = htmlspecialcharsEx($arSite["SERVER_NAME"]); if (strLen($serverName) <=0) { $serverName = ( defined("SITE_SERVER_NAME") && strlen (SITE_SERVER_NAME) > 0 ? SITE_SERVER_NAME : COption::GetOptionString("main", "server_name", "www.bitrixsoft.com") ); if (strLen($serverName) <= 0) { $serverName = $_SERVER["HTTP_HOST"]; } } $serverName = "http://".$serverName; $arResult["PATH_TO_POST"] = CComponentEngine::MakePathFromTemplate(htmlspecialcharsBack($arParams["PATH_TO_POST"]), array("blog" => $arBlog["URL"], "post_id" => "#post_id#", "user_id" => $arBlog["OWNER_ID"], "group_id" => $arParams["SOCNET_GROUP_ID"])); $arResult["PATH_TO_POST1"] = $serverName.substr($arResult["PATH_TO_POST"], 0, strpos($arResult["PATH_TO_POST"], "#post_id#")); $arResult["PATH_TO_POST2"] = substr($arResult["PATH_TO_POST"], strpos($arResult["PATH_TO_POST"], "#post_id#") + strlen("#post_id#")); } CJSCore::Init(array('socnetlogdest')); // socialnetwork if ($arResult["SHOW_FULL_FORM"]) { $dataAdditional = array(); $arResult["DEST_SORT"] = CSocNetLogDestination::GetDestinationSort(array( "DEST_CONTEXT" => "BLOG_POST", "ALLOW_EMAIL_INVITATION" => $arResult["ALLOW_EMAIL_INVITATION"] ), $dataAdditional); $arResult["PostToShow"]["FEED_DESTINATION"]['LAST'] = array(); CSocNetLogDestination::fillLastDestination( $arResult["DEST_SORT"], $arResult["PostToShow"]["FEED_DESTINATION"]['LAST'], array( "EMAILS" => ($arResult["ALLOW_EMAIL_INVITATION"] ? 'Y' : 'N'), "DATA_ADDITIONAL" => $dataAdditional ) ); $limitReached = false; $arResult["PostToShow"]["FEED_DESTINATION"]['SONETGROUPS'] = ComponentHelper::getSonetGroupAvailable(array( 'limit' => 100 ), $limitReached); if( !empty($arResult["PostToShow"]["FEED_DESTINATION"]['LAST']['SONETGROUPS']) && !empty($arResult["PostToShow"]["FEED_DESTINATION"]['SONETGROUPS']) ) { $arDestSonetGroup = array(); foreach ($arResult["PostToShow"]["FEED_DESTINATION"]['LAST']['SONETGROUPS'] as $value) { if (!array_key_exists($value,$arResult["PostToShow"]["FEED_DESTINATION"]['SONETGROUPS'])) { $arDestSonetGroup[] = intval(substr($value, 2)); } } if (!empty($arDestSonetGroup)) { $sonetGroupsAdditionalList = CSocNetLogDestination::getSocnetGroup(array( 'features' => array("blog", array("premoderate_post", "moderate_post", "write_post", "full_post")), 'id' => $arDestSonetGroup )); if (!empty($sonetGroupsAdditionalList)) { $arResult["PostToShow"]["FEED_DESTINATION"]['SONETGROUPS'] = array_merge($arResult["PostToShow"]["FEED_DESTINATION"]['SONETGROUPS'], $sonetGroupsAdditionalList); } } } $arResult["PostToShow"]["FEED_DESTINATION"]['SONETGROUPS_LIMITED'] = ($limitReached ? 'Y' : 'N'); $arResult["PostToShow"]["FEED_DESTINATION"]['SONETGROUPS_FEATURES'] = array("blog", array("premoderate_post", "moderate_post", "write_post", "full_post")); $arDestUser = array( 'LAST' => array(), 'SELECTED' => array() ); $arResult["PostToShow"]["FEED_DESTINATION"]['SELECTED'] = Array(); if (empty($arResult["PostToShow"]["SPERM"])) { if ($arResult["bExtranetUser"]) { if(!empty($arResult["PostToShow"]["FEED_DESTINATION"]['LAST']['SONETGROUPS'])) { foreach ($arResult["PostToShow"]["FEED_DESTINATION"]['LAST']['SONETGROUPS'] as $val) { $arResult["PostToShow"]["FEED_DESTINATION"]['SELECTED'][$val] = "sonetgroups"; } } else { foreach ($arResult["PostToShow"]["FEED_DESTINATION"]['SONETGROUPS'] as $k => $val) { $arResult["PostToShow"]["FEED_DESTINATION"]['SELECTED'][$k] = "sonetgroups"; } } if (empty($arResult["PostToShow"]["FEED_DESTINATION"]['SELECTED'])) { $arResult["FATAL_MESSAGE"] .= GetMessage("BLOG_SONET_MODULE_NOT_AVAIBLE"); } } elseif ($bDefaultToAll) { if (ModuleManager::isModuleInstalled("intranet")) { $siteDepartmentID = COption::GetOptionString("main", "wizard_departament", false, SITE_ID, true); if (intval($siteDepartmentID) > 0) { $arResult["PostToShow"]["FEED_DESTINATION"]['SELECTED']['DR'.intval($siteDepartmentID)] = 'department'; } else { $arResult["PostToShow"]["FEED_DESTINATION"]['SELECTED']['UA'] = 'groups'; } } else { $arResult["PostToShow"]["FEED_DESTINATION"]['SELECTED']['UA'] = 'groups'; } } } else { foreach ($arResult["PostToShow"]["SPERM"] as $type => $ar) { if(is_array($ar)) { foreach ($ar as $value => $ar2) { if ( $type == 'U' && $value == 'A' && ( $bDefaultToAll || $arParams["ID"] > 0 ) ) { $arResult["PostToShow"]["FEED_DESTINATION"]['SELECTED']['UA'] = 'groups'; } elseif ($type == 'U') { $arResult["PostToShow"]["FEED_DESTINATION"]['SELECTED']['U'.$value] = 'users'; $arDestUser['SELECTED'][] = $value; } elseif ($type == 'SG') { $arResult["PostToShow"]["FEED_DESTINATION"]['SELECTED']['SG'.$value] = 'sonetgroups'; } elseif ($type == 'DR') { $arResult["PostToShow"]["FEED_DESTINATION"]['SELECTED']['DR'.$value] = 'department'; } } } } } $arResult["PostToShow"]["FEED_DESTINATION"]["HIDDEN_GROUPS"] = array(); $arHiddenGroups = array(); $arUserCodesSelected = $arDepartmentCodesSelected = array(); if(!empty($arResult["PostToShow"]["FEED_DESTINATION"]["SELECTED"])) { foreach($arResult["PostToShow"]["FEED_DESTINATION"]["SELECTED"] as $gID => $value) { if( $value == "sonetgroups" && empty($arResult["PostToShow"]["FEED_DESTINATION"]["SONETGROUPS"][$gID]) ) { $arHiddenGroups[] = substr($gID, 2); } elseif ($value == "users") { $arUserCodesSelected[] = $gID; } elseif ($value == "department") { $arDepartmentCodesSelected[] = $gID; } } } if(!empty($arHiddenGroups)) { $res = \Bitrix\Socialnetwork\WorkgroupTable::getList(array( 'filter' => array( "@ID" => $arHiddenGroups ), 'select' => array("ID", "NAME", "DESCRIPTION", "OPENED") )); while($group = $res->Fetch()) { if ( $group['OPENED'] == "Y" || CSocNetUser::isCurrentUserModuleAdmin() ) { $arResult["PostToShow"]["FEED_DESTINATION"]["SONETGROUPS"]['SG'.$group["ID"]] = array( "id" => 'SG'.$group["ID"], "entityId" => $group["ID"], "name" => $group["NAME"], "desc" => $group["DESCRIPTION"] ); } else { $arResult["PostToShow"]["FEED_DESTINATION"]["HIDDEN_GROUPS"][$group["ID"]] = array( "ID" => $group["ID"], "NAME" => $group["NAME"], "TYPE" => 'sonetgroups', "PREFIX" => 'SG' ); } } if (!CSocNetUser::IsCurrentUserModuleAdmin() && is_object($USER)) { $arGroupID = CSocNetLogTools::GetAvailableGroups( ($arResult["bExtranetUser"] ? "Y" : "N"), ($arResult["bExtranetSite"] ? "Y" : "N") ); foreach($arResult["PostToShow"]["FEED_DESTINATION"]["HIDDEN_GROUPS"] as $group_code => $arBlogSPerm) { if (!in_array($group_code, $arGroupID)) { $arResult["PostToShow"]["FEED_DESTINATION"]["HIDDEN_GROUPS"][$group_code]["NAME"] = GetMessage("B_B_HIDDEN_GROUP"); } } } } $tmp = $arResult["PostToShow"]["FEED_DESTINATION"]["HIDDEN_GROUPS"]; $arResult["PostToShow"]["FEED_DESTINATION"]["HIDDEN_GROUPS"] = array(); foreach ($tmp as $key => $value) { $arResult["PostToShow"]["FEED_DESTINATION"]["HIDDEN_GROUPS"]['SG'.$key] = $value; } $arResult["PostToShow"]["FEED_DESTINATION"]["HIDDEN_ITEMS"] = $arResult["PostToShow"]["FEED_DESTINATION"]["HIDDEN_GROUPS"]; // intranet structure $arStructure = CSocNetLogDestination::GetStucture(array("LAZY_LOAD" => true)); $arResult["PostToShow"]["FEED_DESTINATION"]['DEPARTMENT'] = $arStructure['department']; $arResult["PostToShow"]["FEED_DESTINATION"]['DEPARTMENT_RELATION'] = $arStructure['department_relation']; $arResult["PostToShow"]["FEED_DESTINATION"]['DEPARTMENT_RELATION_HEAD'] = $arStructure['department_relation_head']; // users if ($arResult["bExtranetUser"]) { $arResult["PostToShow"]["FEED_DESTINATION"]['EXTRANET_USER'] = 'Y'; $arResult["PostToShow"]["FEED_DESTINATION"]['USERS'] = CSocNetLogDestination::GetExtranetUser(); } else { if(!empty($arResult["PostToShow"]["FEED_DESTINATION"]['LAST']['USERS'])) { foreach ($arResult["PostToShow"]["FEED_DESTINATION"]['LAST']['USERS'] as $value) { $arDestUser['LAST'][] = str_replace('U', '', $value); } } $arResult["PostToShow"]["FEED_DESTINATION"]['EXTRANET_USER'] = 'N'; $destinationUsersLast = $destinationUsersSelected = array(); if (!empty($arDestUser['LAST'])) { $destinationUsersLast = CSocNetLogDestination::GetUsers(array( 'id' => $arDestUser['LAST'], 'CRM_ENTITY' => ModuleManager::isModuleInstalled('crm') )); } if (!empty($arDestUser['SELECTED'])) { $destinationUsersSelected = CSocNetLogDestination::GetUsers(array( 'id' => $arDestUser['SELECTED'], 'CRM_ENTITY' => ModuleManager::isModuleInstalled('crm'), 'IGNORE_ACTIVITY' => 'Y' )); } $arResult["PostToShow"]["FEED_DESTINATION"]['USERS'] = array_merge($destinationUsersLast, $destinationUsersSelected); if ($arResult["ALLOW_EMAIL_INVITATION"]) { ComponentHelper::fillSelectedUsersToInvite($_POST, $arParams, $arResult); CSocNetLogDestination::fillEmails($arResult["PostToShow"]["FEED_DESTINATION"]); } } foreach($arUserCodesSelected as $selectedUserCode) { if (!array_key_exists($selectedUserCode, $arResult["PostToShow"]["FEED_DESTINATION"]['USERS'])) { $arResult["PostToShow"]["FEED_DESTINATION"]["HIDDEN_ITEMS"][$selectedUserCode] = array( "ID" => substr($selectedUserCode, 1), "NAME" => GetMessage("B_B_HIDDEN_USER"), "TYPE" => 'users', "PREFIX" => 'U' ); } } foreach($arDepartmentCodesSelected as $selectedDepartmentCode) { $departrmentIdToCheckList = array(); if (!array_key_exists($selectedDepartmentCode, $arResult["PostToShow"]["FEED_DESTINATION"]['DEPARTMENT'])) { $departrmentIdToCheckList[] = substr($selectedDepartmentCode, 2); } if ( !empty($departrmentIdToCheckList) && Loader::includeModule('iblock') && (($structureIBlockId = \Bitrix\Main\Config\Option::get('intranet', 'iblock_structure', 0)) > 0) ) { $res = CIBlockSection::getList( array(), array( '=IBLOCK_ID' => $structureIBlockId, 'ID' => $departrmentIdToCheckList, '=ACTIVE' => 'Y' ), false, array('ID') ); while($section = $res->fetch()) { $arResult["PostToShow"]["FEED_DESTINATION"]["HIDDEN_ITEMS"][$selectedDepartmentCode] = array( "ID" => $section['ID'], "NAME" => GetMessage("B_B_HIDDEN_DEPARTMENT"), "TYPE" => 'department', "PREFIX" => 'DR' ); } } } $arResult["PostToShow"]["FEED_DESTINATION"]["USERS_VACATION"] = Bitrix\Socialnetwork\Integration\Intranet\Absence\User::getDayVacationList(); $arResult["PostToShow"]["FEED_DESTINATION"]["DENY_TOALL"] = !$bAllowToAll; } } else { $arResult["FATAL_MESSAGE"] = GetMessage("BLOG_ERR_NO_RIGHTS"); } CSocNetTools::InitGlobalExtranetArrays(); Loader::includeModule('intranet'); // for gov/public language messages $this->IncludeComponentTemplate(); ?>