Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/cvetdv.ru/bitrix/components/bitrix/socialnetwork.blog.post.edit/ |
Upload File : |
<?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\Component\BlogPostEdit; use Bitrix\Socialnetwork\ComponentHelper; use Bitrix\Socialnetwork\Helper\Analytics\FeedAnalytics; use Bitrix\Socialnetwork\Helper\Mention; use Bitrix\Main\Localization\Loc; use Bitrix\Main\Config\Option; use Bitrix\Socialnetwork\Integration; global $CACHE_MANAGER, $USER_FIELD_MANAGER; if (!Loader::includeModule("blog")) { ShowError(GetMessage("BLOG_MODULE_NOT_INSTALL")); return false; } if (!Loader::includeModule("socialnetwork")) { return false; } $request = \Bitrix\Main\Context::getCurrent()->getRequest(); $frameMode = ($request->getQuery('IFRAME') === 'Y'); $feature = "blog"; $arParams['SOCNET_GROUP_ID'] = isset($arParams['SOCNET_GROUP_ID']) ? (int) $arParams['SOCNET_GROUP_ID'] : 0; $arResult["bExtranetUser"] = (Loader::includeModule("extranet") && !CExtranet::IsIntranetUser()); $arResult["bExtranetSite"] = (Loader::includeModule("extranet") && CExtranet::IsExtranetSite()); $arResult["ERROR_MESSAGE"] = ""; $arParams["ID"] = (int)$arParams["ID"]; $arParams["LAZY_LOAD"] = 'Y'; $arResult['startVideoRecorder'] = ( !empty($_REQUEST["startVideoRecorder"]) && $_REQUEST["startVideoRecorder"] === 'Y' ); $blogModulePermissions = CMain::getGroupRight('blog'); $arResult['SELECTOR_VERSION'] = (int)($arParams['SELECTOR_VERSION'] ?? 1); $arResult["SHOW_FULL_FORM"] = true; // $arResult["SHOW_FULL_FORM"] = ( // ( // !empty($_POST) // && ( // !isset($_POST["TYPE"]) // || $_POST['TYPE'] !== 'AUTH' // ) // ) // || $arParams["ID"] > 0 // || !empty($_REQUEST["WFILES"]) // || !empty($_REQUEST["bp_setting"]) // || $arResult['startVideoRecorder'] // || ( // !empty($arParams["PAGE_ID"]) // && in_array($arParams["PAGE_ID"], array('user_blog_post_edit_profile', 'user_blog_post_edit_grat', 'user_blog_post_edit_post')) // ) // || $arResult['SELECTOR_VERSION'] >= 3 // ); $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 ($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 ( $arParams['SOCNET_GROUP_ID'] > 0 || (int)$arParams['USER_ID'] > 0 ) { $arResult['bGroupMode'] = ($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(Loc::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 ((int)$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, [ 'allowed_classes' => false ]); if (is_array($arTmpVal)) { $arParams["GROUP_ID"] = $arTmpVal; } elseif ((int)$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); } } $arParams["BLOG_VAR"] = $arParams["BLOG_VAR"] ?? ''; $arParams["PAGE_VAR"] = $arParams["PAGE_VAR"] ?? ''; $arParams["USER_VAR"] = $arParams["USER_VAR"] ?? ''; $arParams["POST_VAR"] = $arParams["POST_VAR"] ?? ''; if ($arParams["BLOG_VAR"] === '') { $arParams["BLOG_VAR"] = "blog"; } if ($arParams["PAGE_VAR"] === '') { $arParams["PAGE_VAR"] = "page"; } if ($arParams["USER_VAR"] === '') { $arParams["USER_VAR"] = "id"; } if ($arParams["POST_VAR"] === '') { $arParams["POST_VAR"] = "id"; } $applicationCurPage = $APPLICATION->GetCurPage(); $arParams["PATH_TO_BLOG"] = trim($arParams["PATH_TO_BLOG"]); if ($arParams["PATH_TO_BLOG"] == '') { $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 ($arParams["PATH_TO_POST"] == '') { $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 ($arParams["PATH_TO_POST_EDIT"] == '') { $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 ($arParams['PATH_TO_USER'] === '') { $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 ($arParams['PATH_TO_DRAFT'] === '') { $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 ($arParams['PATH_TO_GROUP_BLOG'] === '') { $arParams['PATH_TO_GROUP_BLOG'] = '/workgroups/group/#group_id#/blog/'; } if ((string)$arParams['PATH_TO_GROUP_POST'] === '') { $arParams['PATH_TO_GROUP_POST'] = '/workgroups/group/#group_id#/blog/#post_id#/'; } $arParams['PATH_TO_GROUP_POST_EDIT'] = $arParams['PATH_TO_GROUP_POST_EDIT'] ?? ''; if ($arParams['PATH_TO_GROUP_POST_EDIT'] === '') { $arParams['PATH_TO_GROUP_POST_EDIT'] = '/workgroups/group/#group_id#/blog/edit/#post_id#/'; } $arParams['PATH_TO_GROUP_DRAFT'] = $arParams['PATH_TO_GROUP_DRAFT'] ?? ''; if ($arParams['PATH_TO_GROUP_DRAFT'] === '') { $arParams['PATH_TO_GROUP_DRAFT'] = '/workgroups/group/#group_id#/blog/draft/'; } $arParams["PATH_TO_SMILE"] = trim($arParams["PATH_TO_SMILE"]) == '' ? false : trim($arParams["PATH_TO_SMILE"]); $arParams['DATE_TIME_FORMAT'] = (trim( empty($arParams['DATE_TIME_FORMAT']) ? CDatabase::dateFormatToPHP(CSite::getDateFormat('FULL')) : $arParams['DATE_TIME_FORMAT'] )); $arParams['USE_CUT'] = ($arParams['USE_CUT'] === 'Y') ? 'Y' : 'N'; $arParams['EDITOR_RESIZABLE'] = $arParams['EDITOR_RESIZABLE'] ?? ''; $arParams['EDITOR_RESIZABLE'] = ($arParams['EDITOR_RESIZABLE'] !== 'N'); $arParams['EDITOR_CODE_DEFAULT'] = $arParams['EDITOR_CODE_DEFAULT'] ?? ''; $arParams['EDITOR_CODE_DEFAULT'] = ($arParams['EDITOR_CODE_DEFAULT'] === 'Y'); $arParams['EDITOR_DEFAULT_HEIGHT'] = (int) ($arParams['EDITOR_DEFAULT_HEIGHT'] ?? 0); if ((int)$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'] ?? ''; $arParams["ALLOW_POST_CODE"] = $arParams["ALLOW_POST_CODE"] !== "N"; $arParams['USE_GOOGLE_CODE'] = $arParams['USE_GOOGLE_CODE'] ?? ''; $arParams["USE_GOOGLE_CODE"] = $arParams["USE_GOOGLE_CODE"] === "Y"; $arParams["IMAGE_MAX_WIDTH"] = 400; $arParams["IMAGE_MAX_HEIGHT"] = 400; $arParams["POST_PROPERTY"] = $arParams["POST_PROPERTY"] ?? []; $arParams["POST_PROPERTY"] = ( is_array($arParams["POST_PROPERTY"]) ? $arParams["POST_PROPERTY"] : [$arParams["POST_PROPERTY"]] ); $arParams["POST_PROPERTY_SOURCE"] = $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"; if (Loader::includeModule('mail')) { $arParams['POST_PROPERTY'][] = 'UF_MAIL_MESSAGE'; } $arResult['BLOG_POST_LISTS'] = ( Loader::includeModule("lists") && !$arResult["bExtranetSite"] && !$arParams["SOCNET_GROUP_ID"] && ModuleManager::isModuleInstalled('intranet') && (CListPermissions::CheckAccess($USER, COption::GetOptionString("lists", "livefeed_iblock_type_id"), false) > CListPermissions::ACCESS_DENIED) ); $arResult['BLOG_POST_TASKS'] = ( ComponentHelper::checkLivefeedTasksAllowed() && Loader::includeModule("tasks") ); if ( $arResult['BLOG_POST_TASKS'] && ( ( $arResult["bGroupMode"] && !CSocNetFeaturesPerms::CurrentUserCanPerformOperation(SONET_ENTITY_GROUP, $arParams["SOCNET_GROUP_ID"], "tasks", "create_tasks") ) || ( !$arResult["bGroupMode"] && !\Bitrix\Tasks\Access\TaskAccessController::can($USER->getId(), \Bitrix\Tasks\Access\ActionDictionary::ACTION_TASK_CREATE) ) ) ) { $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()) || $blogModulePermissions >= '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 || $blogModulePermissions >= '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" )); if (empty($arBlog)) { if (empty($arParams["GROUP_ID"])) { $blogGroupId = Option::get('socialnetwork', 'userbloggroup_id', false, SITE_ID); if (empty($blogGroupId)) { $blogGroupIdList = ComponentHelper::getSonetBlogGroupIdList([ 'SITE_ID' => SITE_ID ]); if (!empty($blogGroupIdList)) { $blogGroupId = array_shift($blogGroupIdList); } } } else { $blogGroupId = ( (is_array($arParams['GROUP_ID'])) ? (int) $arParams['GROUP_ID'][0] : (int) $arParams['GROUP_ID'] ); } $arBlog = ComponentHelper::createUserBlog(array( 'BLOG_GROUP_ID' => $blogGroupId, "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"); } } $arResult["Blog"] = $arBlog; $arResult["urlToBlog"] = CComponentEngine::MakePathFromTemplate( ($arResult["bGroupMode"] ? $arParams["PATH_TO_GROUP_BLOG"] : $arParams["PATH_TO_BLOG"]), [ "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 ) ); } $arPost = []; if ( $arParams["ID"] > 0 && $arPost = CBlogPost::GetByID($arParams["ID"]) ) { $arPost = CBlogTools::htmlspecialcharsExArray($arPost); $arPost['DETAIL_TEXT'] = preg_replace("/\[tag\](.+?)\[\/tag\]/isu", "\\1", $arPost['DETAIL_TEXT']); $arPost['~DETAIL_TEXT'] = preg_replace("/\[tag\](.+?)\[\/tag\]/isu", "\\1", $arPost['~DETAIL_TEXT']); $arResult["Post"] = $arPost; if ($arParams['SET_TITLE'] === 'Y') { $APPLICATION->SetTitle(Loc::getMessage('BLOG_POST_EDIT')); } if ( $arParams["USER_ID"] == $user_id || ( ($_POST["apply"] ?? null) && CSocNetUser::IsCurrentUserModuleAdmin(SITE_ID, false) ) || $blogModulePermissions >= '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"]) && (int)$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'] = (int)$arPostFields['UF_GRATITUDE']['VALUE']; } if ( $arElementProperty['CODE'] === 'USERS' && (int)$arElementProperty['VALUE'] > 0 ) { $arGrat['USERS'][] = (int)$arElementProperty['VALUE']; } elseif ($arElementProperty['CODE'] === 'GRATITUDE') { $arGrat['TYPE'] = [ 'VALUE_ENUM' => $arElementProperty['VALUE_ENUM'], 'XML_ID' => $arElementProperty['VALUE_XML_ID'], ]; } } if ( $arGrat['ID'] && !empty($arGrat['USERS']) ) { $dbUsers = CUser::GetList( [ 'last_name' => 'asc', 'IS_ONLINE' => 'desc' ], '', [ 'ID' => implode('|', $arGrat['USERS']), ], [ "FIELDS" => [ "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 ( $arParams['ID'] > 0 && $arResult['perms'] >= BLOG_PERMS_FULL && (int) $arPost['BLOG_ID'] !== (int) $arBlog['ID'] ) { $blog = \CBlog::getByID($arPost['BLOG_ID']); $arBlog = $blog ?: $arBlog; } if ( isset($_GET['delete_blog_post_id']) && (int) $_GET['delete_blog_post_id'] > 0 && $_GET['ajax_blog_post_delete'] === 'Y') { if (check_bitrix_sessid()) { try { $result = \Bitrix\Socialnetwork\Item\Helper::deleteBlogPost([ 'POST_ID' => (int)$_GET['delete_blog_post_id'], ]); } catch (Exception $e) { $arResult['ERROR_MESSAGE'] .= $e->getMessage(); } } else { $arResult["ERROR_MESSAGE"] .= GetMessage("BLOG_BLOG_SESSID_WRONG"); } $arResult["delete_blog_post"] = "Y"; $this->IncludeComponentTemplate(); return true; } $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 && (int) $arPost['BLOG_ID'] === (int) $arBlog['ID'] ) ) { $arP = []; if ( $arParams["ID"] > 0 && $arPost['PUBLISH_STATUS'] === BLOG_PUBLISH_STATUS_READY && (int)$arPost['AUTHOR_ID'] === (int)$user_id ) { $arResult['OK_MESSAGE'] = Loc::getMessage('BPE_HIDDEN_POSTED'); } $bAllowToAll = ComponentHelper::getAllowToAllDestination(); $bDefaultToAll = ( $bAllowToAll ? (Option::get('socialnetwork', 'default_livefeed_toall', 'Y') === 'Y') : false ); if ( ( isset($_POST['apply']) || isset($_POST['save']) || isset($_POST['do_upload']) || isset($_POST['draft']) ) && ( !isset($_POST['changePostFormTab']) || ( isset($_POST['changePostFormTab']) && $_POST['changePostFormTab'] !== 'tasks' ) ) ) { if (!check_bitrix_sessid()) { $arResult["ERROR_MESSAGE"] .= GetMessage("BPE_SESS"); } } if ( ( isset($_GET['image_upload_frame']) && $_GET['image_upload_frame'] === 'Y' ) || isset($_GET["image_upload"]) || isset($_POST["do_upload"]) || isset($_GET["del_image_id"]) ) { if (check_bitrix_sessid()) { if ((int)$_GET['del_image_id'] > 0) { $del_image_id = (int)$_GET['del_image_id']; $aImg = CBlogImage::GetByID($del_image_id); if ( $aImg["BLOG_ID"] == $arBlog["ID"] && (int)$aImg['POST_ID'] === $arParams['ID'] ) { CBlogImage::Delete($del_image_id); } $APPLICATION->RestartBuffer(); die(); } $arResult['imageUploadFrame'] = 'Y'; $arResult['imageUpload'] = 'Y'; $APPLICATION->RestartBuffer(); header('Pragma: no-cache'); $arFields = []; if ($_FILES['BLOG_UPLOAD_FILE']['size'] > 0) { $arFields = [ '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'], [ 'MODULE_ID' => 'blog', 'del' => 'Y', ] ); $arFields['FILE_ID'] = $arImage; } elseif ($_POST['do_upload'] && $_FILES['FILE_ID']['size'] > 0) { $arFields = [ '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"] = mb_substr($aImgNew["src"], mb_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( [ "\r", "\n", "'" ], [ "\'", ' ', ' ' ], $file ); $arResult["ImageModified"] = $file; $arResult["Image"] = $aImg; } elseif ($ex = $APPLICATION->GetException()) { $arResult["ERROR_MESSAGE"] .= $ex->GetString(); } } } } else { $this->convertRequestData(); // Save calendar event from Socialnetwork live feed form if ( ( isset($_POST["save"]) && $_POST["save"] === "Y" ) && ( isset($_POST["changePostFormTab"]) && $_POST["changePostFormTab"] === "calendar" ) && check_bitrix_sessid() ) { if (isset($_POST['EVENT_PERM'])) { $arAccessCodes = array(); foreach($_POST["EVENT_PERM"] as $v => $k) { if ($v <> '' && is_array($k) && !empty($k)) { foreach($k as $vv) { if ($vv <> '') { $arAccessCodes[] = $vv; } } } } } $rrule = $_POST['EVENT_RRULE']; if (isset($_POST['rrule_endson']) && $_POST['rrule_endson'] === 'never') { unset($rrule['COUNT']); unset($rrule['UNTIL']); } elseif (isset($_POST['rrule_endson']) && $_POST['rrule_endson'] === 'count') { unset($rrule['UNTIL']); } elseif (isset($_POST['rrule_endson']) && $_POST['rrule_endson'] === 'until') { unset($rrule['COUNT']); } $arFields = [ 'ID' => (int)$_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' => (int)$_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 (mb_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"])); $uri = new Bitrix\Main\Web\Uri($redirectUrl); $uri->deleteParams(array("b24statAction", "b24statTab", "b24statAddEmailUserCrmContact")); $redirectUrl = $uri->getUri(); LocalRedirect($redirectUrl); } if ( ( isset($_POST["save"]) && $_POST["save"] === "Y" ) && ( isset($_POST["changePostFormTab"]) && $_POST['changePostFormTab'] === 'lists' ) && check_bitrix_sessid() ) { $redirectUrl = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_BLOG"], array("user_id" => $arBlog["OWNER_ID"])); $uri = new Bitrix\Main\Web\Uri($redirectUrl); $uri->deleteParams(array("b24statAction", "b24statTab", "b24statAddEmailUserCrmContact")); $redirectUrl = $uri->getUri(); LocalRedirect($redirectUrl); } if ( ( isset($_POST["apply"]) || isset($_POST["save"]) || isset($_POST["draft"]) ) && empty($_POST["reset"]) && ( !isset($_POST['changePostFormTab']) || ( isset($_POST['changePostFormTab']) && $_POST['changePostFormTab'] !== 'tasks' ) ) ) // Save on button click { if (check_bitrix_sessid()) { if ((string)$arResult['ERROR_MESSAGE'] === '') { $DB->StartTransaction(); $categoryIdListFromPostData = BlogPostEdit\Tag::getTagsFromPostData([ 'blogId' => $arBlog['ID'], ]); $DATE_PUBLISH = ""; if (($_POST["DATE_PUBLISH_DEF"] ?? '') <> '') { $DATE_PUBLISH = $_POST["DATE_PUBLISH_DEF"]; } elseif (($_POST["DATE_PUBLISH"] ?? '') == '') { $DATE_PUBLISH = ConvertTimeStamp(time()+CTimeZone::GetOffset(), "FULL"); } else { $DATE_PUBLISH = $_POST["DATE_PUBLISH"]; } $PUBLISH_STATUS = ( ($_POST["draft"] ?? '') <> '' ? BLOG_PUBLISH_STATUS_DRAFT : BLOG_PUBLISH_STATUS_PUBLISH ); $arFields = array( "TITLE" => trim($_POST["POST_TITLE"]), 'DETAIL_TEXT' => ( isset($_POST['MOBILE']) && $_POST['MOBILE'] === 'Y' ? htmlspecialcharsEx($_POST['POST_MESSAGE']) : $_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"], "BACKGROUND_CODE" => false ); $conn = \Bitrix\Main\Application::getConnection(); $table = \Bitrix\Blog\PostTable::getTableName(); if ( $arFields['TITLE'] <> '' && !$conn->isUtf8mb4($table, 'TITLE') ) { $arFields['TITLE'] = \Bitrix\Main\Text\Emoji::encode($arFields['TITLE']); } if ( $arFields['DETAIL_TEXT'] <> '' && !$conn->isUtf8mb4($table, 'DETAIL_TEXT') ) { $arFields['DETAIL_TEXT'] = \Bitrix\Main\Text\Emoji::encode($arFields['DETAIL_TEXT']); } if ( $arParams['ALLOW_POST_CODE'] && trim($_POST['CODE'] ?? '') <> '' ) { $arFields["CODE"] = trim($_POST["CODE"]); $arPCFilter = array("BLOG_ID" => $arBlog["ID"], "CODE" => $arFields["CODE"]); if ($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'] .= $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 ( isset($_POST['MOBILE'], $arPost['TITLE']) && $_POST['ACTION'] === 'EDIT_POST' && $_POST['MOBILE'] === 'Y' ) { $arFields["TITLE"] = $arPost["~TITLE"]; $arFields["MICRO"] = $arPost["MICRO"]; } elseif ( (string)$arFields["TITLE"] === '' || $_POST['show_title'] === 'N' ) { $arFields["MICRO"] = "Y"; $arFields["TITLE"] = preg_replace(array("/\n+/isu", "/\s+/isu"), " ", blogTextParser::killAllTags($arFields["DETAIL_TEXT"])); $parser = new CTextParser(); $parser->allow = array('CLEAR_SMILES' => 'Y'); $arFields["TITLE"] = preg_replace("/ /isu", "", $parser->convertText($arFields["TITLE"])); $arFields["TITLE"] = trim($arFields["TITLE"], " \t\n\r\0\x0B\xA0"); $checkTitle = true; } $newCategoryIdList = BlogPostEdit\Tag::parseTagsFromFields([ 'blogCategoryIdList' => $categoryIdListFromPostData, 'postFields' => $arFields, 'blogId' => $arBlog['ID'], ]); $categoryIdList = array_merge($categoryIdListFromPostData, $newCategoryIdList); $CATEGORY_ID = implode(",", $categoryIdList); $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 = []; if (!$bError) { $fieldName = 'UF_BLOG_POST_DOC'; if ( isset($GLOBALS[$fieldName]) && is_array($GLOBALS[$fieldName]) ) { $arOldFiles = array(); if ($arParams["ID"] > 0 && $_POST["blog_upload_cid"] == '') { $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 = (int)$fileID; if ($fileID <= 0) { continue; } if ( ( !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 ((int)$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); } $mentionList = Mention::getUserIds($_POST['POST_MESSAGE'] ?? ''); $APPLICATION->ResetException(); $bAdd = false; $bNeedAddGrat = 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' || ( isset($arParams["PAGE_ID"]) && in_array($arParams["PAGE_ID"], [ "user_blog_post_edit_grat", "user_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 ); } $voteCode = (string)$request->getPost('UF_BLOG_POST_VOTE'); if ( $checkTitle && (string)$arFields['TITLE'] === '' ) { $question = $request->getPost('UF_BLOG_POST_VOTE_' . $voteCode . '_DATA'); if ( $voteCode !== '' && !empty($question['QUESTIONS']['0']['QUESTION']) ) { $arFields['TITLE'] = Loc::getMessage('BLOG_EMPTY_TITLE_VOTE_PLACEHOLDER'); } elseif ( !empty($arFields["UF_BLOG_POST_FILE"]) && is_array($arFields["UF_BLOG_POST_FILE"]) ) { foreach ($arFields['UF_BLOG_POST_FILE'] as $val) { if (empty($val)) { continue; } $arFields['TITLE'] = Loc::getMessage('BLOG_EMPTY_TITLE_PLACEHOLDER2'); break; } } } if ( $checkTitle && $arFields["TITLE"] == '' && isset($_POST["MOBILE"]) && $_POST['MOBILE'] === 'Y' ) { $arFields["TITLE"] = GetMessage("BLOG_EMPTY_TITLE_PLACEHOLDER3"); } $arFields['SEARCH_GROUP_ID'] = 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 (isset($_POST['postShowingDuration']) && $_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; } } $newGratData = []; $arUsersFromPOST = []; if ( !empty($_POST["GRAT_TYPE"]) && !empty($_POST["GRAT"]) && !empty($_POST["GRAT"]["U"]) && is_array($_POST["GRAT"]["U"]) ) { foreach ($_POST["GRAT"]["U"] as $code) { if (preg_match('/^U(\d+)$/', $code, $matches)) { $arUsersFromPOST[] = $matches[1]; } } $newGratData = [ 'TYPE' => $_POST["GRAT_TYPE"], 'USERS' => array_diff($arUsersFromPOST, ( !empty($arResult["PostToShow"]["GRAT_CURRENT"]) && !empty($arResult["PostToShow"]["GRAT_CURRENT"]["USERS"]) && is_array($arResult["PostToShow"]["GRAT_CURRENT"]["USERS"]) ? $arResult["PostToShow"]["GRAT_CURRENT"]["USERS"] : [] )) ]; } $allowEmptyDetailText = false; if (trim($arFields['DETAIL_TEXT']) === '') { $voteData = $request->getPost('UF_BLOG_POST_VOTE_' . $voteCode . '_DATA'); if ( is_array($voteData) && isset($voteData['QUESTIONS']) ) { $question = array_shift($voteData['QUESTIONS']); if ((string)$question['QUESTION'] !== '') { $allowEmptyDetailText = true; } } if ( !$allowEmptyDetailText && !empty($arFields['UF_BLOG_POST_FILE']) && is_array($arFields['UF_BLOG_POST_FILE']) ) { foreach ($arFields['UF_BLOG_POST_FILE'] as $val) { if (!empty($val)) { $allowEmptyDetailText = true; break; } } } if ($allowEmptyDetailText) { $arFields['DETAIL_TEXT'] = '[B][/B]'; } } $newID = 0; $arOldPost = []; if ($arParams["ID"] > 0) { if ( is_array($arUsersFromPOST) && array_key_exists("GRAT_TYPE", $_POST) ) { $bGratFromForm = true; if ( is_array($arResult["PostToShow"]["GRAT_CURRENT"] ?? null) && empty(array_diff($arResult["PostToShow"]["GRAT_CURRENT"]["USERS"], $arUsersFromPOST)) && empty(array_diff($arUsersFromPOST, $arResult["PostToShow"]["GRAT_CURRENT"]["USERS"])) && isset($arResult["PostToShow"]["GRAT_CURRENT"]["TYPE"]["XML_ID"]) && mb_strtolower($arResult["PostToShow"]["GRAT_CURRENT"]["TYPE"]["XML_ID"]) === mb_strtolower($_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"] ?? null) && (int)$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'] ?? null) === '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; } $mentionListOld = Mention::getUserIds($arOldPost['DETAIL_TEXT']); $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 ($arOldPost['PUBLISH_STATUS'] === BLOG_PUBLISH_STATUS_PUBLISH) { if ($arFields['PUBLISH_STATUS'] === BLOG_PUBLISH_STATUS_DRAFT) { CBlogPost::DeleteLog($newID); } elseif ($arFields['PUBLISH_STATUS'] === BLOG_PUBLISH_STATUS_PUBLISH) { $arParamsUpdateLog = [ 'allowVideo' => $arResult['allowVideo'], 'PATH_TO_SMILE' => $arParams['PATH_TO_SMILE'], 'SITE_ID' => SITE_ID, ]; CBlogPost::UpdateLog($newID, $arFields, $arBlog, $arParamsUpdateLog); } } elseif ( $arFields['PUBLISH_STATUS'] === BLOG_PUBLISH_STATUS_PUBLISH && $arOldPost['PUBLISH_STATUS'] === BLOG_PUBLISH_STATUS_READY ) { CBlogPost::notifyImPublish([ 'TYPE' => 'POST', 'TITLE' => ($arFields['TITLE'] ?? $arOldPost['TITLE']), 'TO_USER_ID' => $arFields['AUTHOR_ID'], 'POST_URL' => CComponentEngine::MakePathFromTemplate(htmlspecialcharsBack($arParams['PATH_TO_POST']), [ '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"]; if (!$allowEmptyDetailText) { $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'; } } $filesList = ( is_array($arFields["UF_BLOG_POST_FILE"] ?? null) ? array_values($arFields["UF_BLOG_POST_FILE"]) : [] ); $filesList = array_values(array_filter($filesList, static function($val) { return !empty($val); })); $diff1 = array_diff($logRights, $arFields["SOCNET_RIGHTS"]); $diff2 = array_diff($arFields["SOCNET_RIGHTS"], $logRights); if ( empty($filesList) // no files && !$bNeedAddGrat // no gratitudes && empty($_POST['UF_MAIL_MESSAGE']) && (int)$arDuplPost['BLOG_ID'] === (int)$arFields['BLOG_ID'] && (int)$arDuplPost['AUTHOR_ID'] === (int)$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"] = Loc::getMessage('B_B_PC_DUPLICATE_POST'); } } } if ( !$bError && ($arParams['MOBILE'] ?? '') === 'Y' && empty($arFields["UF_BLOG_POST_URL_PRV"]) && in_array("UF_BLOG_POST_URL_PRV", $arParams["POST_PROPERTY"], true) && ($urlPreviewValue = ComponentHelper::getUrlPreviewValue($arFields["DETAIL_TEXT"])) ) { $arFields["UF_BLOG_POST_URL_PRV"] = $urlPreviewValue; } if (!$bError) { $newID = CBlogPost::Add($arFields); $socnetRightsOld = Array("U" => Array()); $bAdd = true; $bNeedMail = false; } $analytics = FeedAnalytics::getInstance(); $postType = ''; switch($this->request->get('changePostFormTab')) { case 'message': $postType = $analytics::TYPE_POST; break; case 'vote': $postType = $analytics::TYPE_POLL; break; case 'grat': $postType = $analytics::TYPE_APPRECIATION; break; case 'important': $postType = $analytics::TYPE_ANNOUNCEMENT; break; } $analytics->onPostCreate( $arParams['SOCNET_GROUP_ID'] > 0 ? $analytics::SECTION_PROJECT : $analytics::SECTION_FEED , '', $newID > 0, $postType, ); } if ((int)$newID > 0) { if ( $bNeedAddGrat && !empty($arUsersFromPOST) && is_array($arUsersFromPOST) && Loader::includeModule("iblock") ) { $arGratFromPOST = false; foreach ($arResult["PostToShow"]["GRATS"] as $arGrat) { if (mb_strtolower($arGrat["XML_ID"]) === mb_strtolower($_POST["GRAT_TYPE"])) { $arGratFromPOST = $arGrat; break; } } if ($arGratFromPOST) { $new_grat_element_id = \Bitrix\Socialnetwork\Helper\Gratitude::create([ 'medal' => $arGratFromPOST['XML_ID'], 'employees' => $arUsersFromPOST ]); if ($new_grat_element_id > 0) { CBlogPost::Update($newID, array( "DETAIL_TEXT_TYPE" => "text", "UF_GRATITUDE" => $new_grat_element_id )); } } } CBlogPostCategory::DeleteByPostID($newID); foreach ($categoryIdList as $categoryId) { CBlogPostCategory::add([ 'BLOG_ID' => $arBlog['ID'], 'POST_ID' => $newID, 'CATEGORY_ID' => $categoryId, ]); } $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($categoryIdList)) { $bHasTag = true; } if (CBlogImage::GetList( [], [ 'BLOG_ID' => $arBlog['ID'], 'POST_ID' => $newID, 'IS_COMMENT' => 'N', ], false, false, [ 'ID' ] )->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"], true) ) { $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); } $logEntryActivated = false; if ( ($arOldPost["PUBLISH_STATUS"] ?? '') != BLOG_PUBLISH_STATUS_PUBLISH && ($arFields["PUBLISH_STATUS"] ?? '') == BLOG_PUBLISH_STATUS_PUBLISH ) { if ($postItem = \Bitrix\Blog\Item\Post::getById($newID)) { if ($logEntryActivated = $postItem->activateLogEntry()) { $logId = $postItem->getLogId(); } } } if ( ( $bAdd && $newID && $arFields["PUBLISH_STATUS"] == BLOG_PUBLISH_STATUS_PUBLISH ) || ( ($arOldPost["PUBLISH_STATUS"] ?? null) != BLOG_PUBLISH_STATUS_PUBLISH && $arFields["PUBLISH_STATUS"] == BLOG_PUBLISH_STATUS_PUBLISH ) ) { $arFields["ID"] = $newID; if (!$logEntryActivated) { $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([ 'siteId' => SITE_ID, 'pathToBlog' => $arParams['PATH_TO_BLOG'], 'blogFields' => $arBlog, ]); } } if ( isset($newID) && $newID > 0 && (string)$arResult['ERROR_MESSAGE'] === '' ) // Record saved successfully { if ((int) ($logId ?? null) <= 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) && (int)$logId > 0 ) { $logFields = array( "EVENT_ID" => \Bitrix\Socialnetwork\Item\Helper::getBlogPostEventId([ 'postId' => $newID ]) ); if ($post = \Bitrix\Blog\Item\Post::getById($newID)) { $logFields["TAG"] = $post->getTags(); } CSocNetLog::Update((int)$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([ 'post' => [ 'ID' => $newID, 'TITLE' => $arFields["TITLE"], 'AUTHOR_ID' => $arParams["USER_ID"] ], 'siteId' => SITE_ID, 'postUrl' => $postUrl, 'socnetRights' => (isset($logId) && (int)$logId > 0 ? \Bitrix\Socialnetwork\Item\LogRight::get($logId) : $arFields["SOCNET_RIGHTS"]), 'socnetRightsOld' => (!empty($socnetRightsOld) ? $socnetRightsOld : []), 'mentionListOld' => $mentionListOld, 'mentionList' => $mentionList, 'gratData' => (!empty($newGratData) ? $newGratData : []) ]); 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 = mb_substr($v, 2); if ((int)$group_id_tmp > 0) { CSocNetGroup::SetLastActivity((int)$group_id_tmp); } } } if ( in_array( $arParams['PAGE_ID'] ?? '', [ 'user_blog_post_edit_profile', 'user_blog_post_edit_grat', ] ) ) { $redirectUrl = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_POST_EDIT_PROFILE"], array("post_id"=>$newID, "user_id" => $arBlog["OWNER_ID"])).'?IFRAME=Y'; } elseif (($arParams['PAGE_ID'] ?? '') === 'user_blog_post_edit_post') { $redirectUrl = CComponentEngine::makePathFromTemplate( $arParams['PATH_TO_POST_EDIT_POST'], array( 'post_id' => $newID, 'user_id' => $arBlog['OWNER_ID'] ) ) . '?IFRAME=Y&successPostId=' . $newID; } elseif (($_POST["apply"] ?? '') == '') { if ( $arFields["PUBLISH_STATUS"] === BLOG_PUBLISH_STATUS_DRAFT || ($_POST["draft"] ?? '') <> '' ) { $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"])); } if ( !$bAdd && ( !isset($arParams["MOBILE"]) || $arParams['MOBILE'] !== 'Y' ) ) { $redirectUrl .= '#post'.$newID; } } 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(); } $uri = new Bitrix\Main\Web\Uri($redirectUrl); $uri->deleteParams([ 'b24statAction', 'b24statTab', 'b24statAddEmailUserCrmContact' ]); $redirectUrl = $uri->getUri(); LocalRedirect($redirectUrl); } else { $DB->Rollback(); if ((string)$arResult['ERROR_MESSAGE'] === '') { if ($ex = $APPLICATION->GetException()) { if ( $ex instanceof CAdminException && ($errors = $ex->GetMessages()) && isset($_POST["MOBILE"]) && $_POST['MOBILE'] === 'Y' && is_array($errors) && !empty($errors) ) { $errorTextList = []; foreach ($errors as $error) { $errorTextList[] = $error['text']; } $arResult["ERROR_MESSAGE"] = implode("\n", $errorTextList); } else { $arResult["ERROR_MESSAGE"] = $ex->GetString(); } } else { $arResult["ERROR_MESSAGE"] = "Error saving data to database.<br />"; } } } } } else { $arResult["ERROR_MESSAGE"] = GetMessage("BPE_SESS"); } } elseif (isset($_POST["reset"])) { if ($arFields["PUBLISH_STATUS"] === BLOG_PUBLISH_STATUS_DRAFT) { LocalRedirect(CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_DRAFT"], [ "user_id" => $arBlog["OWNER_ID"], ])); } elseif ($arResult["bGroupMode"]) { LocalRedirect(CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_GROUP_BLOG"], [ "group_id" => $arParams["SOCNET_GROUP_ID"], ])); } else { LocalRedirect(CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_BLOG"], [ "user_id" => $arBlog["OWNER_ID"], ])); } } if ( $arParams["ID"] > 0 && $arResult["ERROR_MESSAGE"] == '' ) // 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"]] ?? null) && 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"]] ?? null) || !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"] = isset($_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'] = []; } if (empty($_POST['SPERM'])) { if ($arParams['SOCNET_GROUP_ID'] > 0) { $arResult['PostToShow']['SPERM']['SG'][$arParams['SOCNET_GROUP_ID']] = ''; } if ((int) ($arParams['SOCNET_USER_ID'] ?? 0) > 0) { $arResult['PostToShow']['SPERM']['U'][(int)$arParams['SOCNET_USER_ID']] = ''; } } else { foreach ($_POST['SPERM'] as $k => $v) { foreach ($v as $vv1) { if ($vv1 <> '') { 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"]) ) || isset($_POST["GRAT_TYPE"]) || isset($_GET["gratCode"]) ) { 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) && (int)$matches[1] > 0 ) { $arUsersFromPOST[] = (int)$matches[1]; } } if (!empty($arUsersFromPOST)) { $dbUsers = CUser::GetList( [ 'last_name' => 'asc', 'IS_ONLINE' => 'desc', ], '', [ 'ID' => implode('|', $arUsersFromPOST), ], [ 'FIELDS' => [ "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"] : " ") ); } } } $gratType = false; if ( isset($_POST["GRAT_TYPE"]) && $_POST["GRAT_TYPE"] <> '' ) { $gratType = $_POST["GRAT_TYPE"]; } elseif ( isset($_GET["gratCode"]) && $_GET["gratCode"] <> '' ) { $gratType = $_GET["gratCode"]; } if ( $gratType && is_array($arResult["PostToShow"]["GRATS"]) ) foreach ($arResult["PostToShow"]["GRATS"] as $arGrat) { if ($arGrat["XML_ID"] == $gratType) { $arResult["PostToShow"]["GRAT_CURRENT"]["TYPE"] = $arGrat; break; } } } if ( isset($_REQUEST['moder']) && $_REQUEST['moder'] === 'y' ) { $arResult['OK_MESSAGE'] = Loc::getMessage('BPE_HIDDEN_POSTED'); } } if ($arResult["SHOW_FULL_FORM"]) { /* @deprecated */ $arResult["Smiles"] = CBlogSmile::GetSmilesList(); } $arResult["Images"] = Array(); if ( !empty($arBlog) && ( ( isset($arPost["ID"]) && $arPost["ID"] > 0 ) || $arResult["ERROR_MESSAGE"] <> '' ) ) { $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"] = mb_substr($aImgNew["src"], mb_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 (mb_strpos($arResult["PostToShow"]["CATEGORY_ID"] ?? '', ",") !== false) { $arResult["PostToShow"]["CATEGORY_ID"] = explode(",", trim($arResult["PostToShow"]["CATEGORY_ID"])); } $arResult["Category"] = []; if ( ($arResult["PostToShow"]["CategoryText"] ?? '') == '' && !empty($arResult["PostToShow"]["CATEGORY_ID"]) ) { $selectedCategoriesList = []; $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 ((int)$arCategory['ID'] === (int)$arResult['PostToShow']['CATEGORY_ID']) { $arCategory["Selected"] = "Y"; } if (($arCategory['Selected'] ?? null) === 'Y') { $selectedCategoriesList[(int)$arCategory['ID']] = $arCategory["~NAME"]; } $arResult["Category"][$arCategory["ID"]] = $arCategory; } $categoryIdList = $arResult["PostToShow"]["CATEGORY_ID"]; if (!is_array($categoryIdList)) { $categoryIdList = [ $categoryIdList ]; } $selectedCategoriesNameList = []; foreach ($categoryIdList as $categoryId) { if (!isset($selectedCategoriesList[(int)$categoryId])) { continue; } $selectedCategoriesNameList[] = $selectedCategoriesList[(int)$categoryId]; } $arResult['PostToShow']['CategoryText'] = implode(',', $selectedCategoriesNameList); } foreach ($arParams["POST_PROPERTY"] as $FIELD_NAME) { $arPostField = $arPostFields[$FIELD_NAME] ?? null; 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 = (int)$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 ($serverName == '') { $serverName = ( defined("SITE_SERVER_NAME") && SITE_SERVER_NAME <> '' ? SITE_SERVER_NAME : COption::GetOptionString("main", "server_name") ); if ($serverName == '') { $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.mb_substr($arResult["PATH_TO_POST"], 0, mb_strpos($arResult["PATH_TO_POST"], "#post_id#")); $arResult["PATH_TO_POST2"] = mb_substr($arResult["PATH_TO_POST"], mb_strpos($arResult["PATH_TO_POST"], "#post_id#") + mb_strlen("#post_id#")); } CJSCore::Init(array('socnetlogdest')); // socialnetwork if ($arResult["SHOW_FULL_FORM"]) { $arResult['PostToShow']['FEED_DESTINATION'] = [ 'LAST' => [], ]; if ($arResult['SELECTOR_VERSION'] < 2) { $dataAdditional = []; $arResult['DEST_SORT'] = CSocNetLogDestination::getDestinationSort([ 'DEST_CONTEXT' => 'BLOG_POST', 'ALLOW_EMAIL_INVITATION' => $arResult['ALLOW_EMAIL_INVITATION'] ], $dataAdditional); CSocNetLogDestination::fillLastDestination( $arResult['DEST_SORT'], $arResult['PostToShow']['FEED_DESTINATION']['LAST'], [ 'EMAILS' => ($arResult['ALLOW_EMAIL_INVITATION'] ? 'Y' : 'N'), 'DATA_ADDITIONAL' => $dataAdditional ] ); } if ( $arResult['SELECTOR_VERSION'] < 2 || ( empty($arResult['PostToShow']['SPERM']) && $arResult['bExtranetUser'] ) ) { $limitReached = false; $arResult['PostToShow']['FEED_DESTINATION']['SONETGROUPS'] = ComponentHelper::getSonetGroupAvailable([ 'limit' => 100, ], $limitReached); if ( $arResult['bExtranetUser'] && !empty($arResult['PostToShow']['FEED_DESTINATION']['LAST']['SONETGROUPS']) && !$limitReached ) { $sonetGroupAvailable = ( !empty($arResult['PostToShow']['FEED_DESTINATION']['SONETGROUPS']) ? $arResult['PostToShow']['FEED_DESTINATION']['SONETGROUPS'] : [] ); foreach ($arResult['PostToShow']['FEED_DESTINATION']['LAST']['SONETGROUPS'] as $key => $value) { if (!in_array($value, $sonetGroupAvailable)) { unset($arResult['PostToShow']['FEED_DESTINATION']['LAST']['SONETGROUPS'][$key]); } } } $arResult['PostToShow']['FEED_DESTINATION']['SONETGROUPS_LIMITED'] = ($limitReached ? 'Y' : 'N'); if ( !empty($arResult['PostToShow']['FEED_DESTINATION']['LAST']['SONETGROUPS']) && !empty($arResult['PostToShow']['FEED_DESTINATION']['SONETGROUPS']) ) { $arDestSonetGroup = []; foreach ($arResult['PostToShow']['FEED_DESTINATION']['LAST']['SONETGROUPS'] as $value) { if (!array_key_exists($value, $arResult['PostToShow']['FEED_DESTINATION']['SONETGROUPS'])) { $arDestSonetGroup[] = (int)mb_substr($value, 2); } } if (!empty($arDestSonetGroup)) { $sonetGroupsAdditionalList = CSocNetLogDestination::getSocnetGroup([ 'features' => $arResult['PostToShow']['FEED_DESTINATION']['SONETGROUPS_FEATURES'], 'id' => $arDestSonetGroup, ]); if (!empty($sonetGroupsAdditionalList)) { $arResult['PostToShow']['FEED_DESTINATION']['SONETGROUPS'] = array_merge($arResult['PostToShow']['FEED_DESTINATION']['SONETGROUPS'], $sonetGroupsAdditionalList); } } } } $arDestUser = [ 'LAST' => [], 'SELECTED' => [] ]; $arResult['PostToShow']['FEED_DESTINATION']['SELECTED'] = []; if (empty($arResult['PostToShow']['SPERM'])) { $requestDestData = $request->get('destTo'); if (!empty($requestDestData)) { if (!is_array($requestDestData)) { $requestDestData = [ $requestDestData ]; } foreach ($requestDestData as $dest) { if (preg_match('/^U(\d+)$/', $dest, $matches)) { $arResult['PostToShow']['FEED_DESTINATION']['SELECTED'][$dest] = 'users'; } elseif (preg_match('/^SG(\d+)$/', $dest, $matches)) { $arResult['PostToShow']['FEED_DESTINATION']['SELECTED'][$dest] = 'sonetgroups'; } elseif (preg_match('/^DR(\d+)$/', $dest, $matches)) { $arResult['PostToShow']['FEED_DESTINATION']['SELECTED'][$dest] = 'department'; } elseif ($dest === 'UA') { $arResult['PostToShow']['FEED_DESTINATION']['SELECTED'][$dest] = 'groups'; } } } elseif ($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'] = Loc::getMessage('BLOG_SONET_MODULE_NOT_AVAIBLE'); } } elseif ($bDefaultToAll) { if (ModuleManager::isModuleInstalled('intranet')) { $siteDepartmentID = Option::get('main', 'wizard_departament', false, SITE_ID, true); if ((int)$siteDepartmentID > 0) { $arResult['PostToShow']['FEED_DESTINATION']['SELECTED']['DR' . (int)$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)) { continue; } foreach ($ar as $id => $value) { if ($type === 'U') { if ( $id === 'A' || $value === 'A' ) { if ($bAllowToAll) { $arResult['PostToShow']['FEED_DESTINATION']['SELECTED']['UA'] = 'groups'; } } else { $arResult['PostToShow']['FEED_DESTINATION']['SELECTED']['U' . $id] = 'users'; $arDestUser['SELECTED'][] = $id; } } elseif ($type === 'SG') { $arResult['PostToShow']['FEED_DESTINATION']['SELECTED']['SG' . $id] = 'sonetgroups'; } elseif ($type === 'DR') { $arResult['PostToShow']['FEED_DESTINATION']['SELECTED']['DR' . $id] = 'department'; } } } } $arResult['PostToShow']['FEED_DESTINATION']['EXTRANET_USER'] = ($arResult["bExtranetUser"] ? 'Y' : 'N'); if ($arResult['SELECTOR_VERSION'] < 2) { $arResult['PostToShow']['FEED_DESTINATION']['HIDDEN_GROUPS'] = []; $arHiddenGroups = []; $arUserCodesSelected = []; $arDepartmentCodesSelected = []; if (!empty($arResult['PostToShow']['FEED_DESTINATION']['SELECTED'])) { foreach ($arResult['PostToShow']['FEED_DESTINATION']['SELECTED'] as $groupId => $value) { if ( $value === 'sonetgroups' && empty($arResult['PostToShow']['FEED_DESTINATION']['SONETGROUPS'][$groupId]) ) { $arHiddenGroups[] = mb_substr($groupId, 2); } elseif ($value === 'users') { $arUserCodesSelected[] = $groupId; } elseif ($value === 'department') { $arDepartmentCodesSelected[] = $groupId; } } } if (!empty($arHiddenGroups)) { $res = \Bitrix\Socialnetwork\WorkgroupTable::getList([ 'filter' => [ '@ID' => $arHiddenGroups, ], 'select' => [ 'ID', 'NAME', 'DESCRIPTION', 'OPENED' ], ]); while ($group = $res->fetch()) { if ( $group['OPENED'] === 'Y' || CSocNetUser::isCurrentUserModuleAdmin() ) { $arResult['PostToShow']['FEED_DESTINATION']['SONETGROUPS']['SG' . $group['ID']] = [ 'id' => 'SG' . $group['ID'], 'entityId' => $group['ID'], 'name' => $group['NAME'], 'desc' => $group['DESCRIPTION'], ]; } else { $arResult['PostToShow']['FEED_DESTINATION']['HIDDEN_GROUPS'][$group['ID']] = [ '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'] = Loc::getMessage('B_B_HIDDEN_GROUP'); } } } $tmp = $arResult['PostToShow']['FEED_DESTINATION']['HIDDEN_GROUPS']; $arResult['PostToShow']['FEED_DESTINATION']['HIDDEN_GROUPS'] = []; 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([ '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']; if ($arResult['bExtranetUser']) { $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); } } $destinationUsersLast = []; $destinationUsersSelected = []; if (!empty($arDestUser['LAST'])) { $destinationUsersLast = CSocNetLogDestination::getUsers([ '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']) { CSocNetLogDestination::fillEmails($arResult['PostToShow']['FEED_DESTINATION']); } } foreach ($arUserCodesSelected as $selectedUserCode) { if (array_key_exists($selectedUserCode, $arResult['PostToShow']["FEED_DESTINATION"]['USERS'])) { continue; } $arResult['PostToShow']['FEED_DESTINATION']['HIDDEN_ITEMS'][$selectedUserCode] = [ 'ID' => mb_substr($selectedUserCode, 1), 'NAME' => Loc::getMessage('B_B_HIDDEN_USER'), 'TYPE' => 'users', 'PREFIX' => 'U', ]; } foreach ($arDepartmentCodesSelected as $selectedDepartmentCode) { $departrmentIdToCheckList = []; if (!array_key_exists($selectedDepartmentCode, $arResult['PostToShow']['FEED_DESTINATION']['DEPARTMENT'])) { $departrmentIdToCheckList[] = mb_substr($selectedDepartmentCode, 2); } if ( !empty($departrmentIdToCheckList) && Loader::includeModule('iblock') && (($structureIBlockId = Option::get('intranet', 'iblock_structure', 0)) > 0) ) { $res = CIBlockSection::getList( [], [ '=IBLOCK_ID' => $structureIBlockId, 'ID' => $departrmentIdToCheckList, '=ACTIVE' => 'Y', ], false, [ 'ID' ] ); while ($section = $res->fetch()) { $arResult['PostToShow']['FEED_DESTINATION']['HIDDEN_ITEMS'][$selectedDepartmentCode] = [ 'ID' => $section['ID'], 'NAME' => Loc::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'] = Loc::getMessage('BLOG_ERR_NO_RIGHTS'); } CSocNetTools::InitGlobalExtranetArrays(); Loader::includeModule('intranet'); // for gov/public language messages $this->includeComponentTemplate();