%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/components/bitrix/socialnetwork.blog.post/ |
Current File : //home/bitrix/www/bitrix/components/bitrix/socialnetwork.blog.post/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 */ global $CACHE_MANAGER, $USER_FIELD_MANAGER; use Bitrix\Socialnetwork\Livefeed; use Bitrix\Main\ModuleManager; use Bitrix\Socialnetwork\ComponentHelper; if (!CModule::IncludeModule("blog")) { ShowError(GetMessage("BLOG_MODULE_NOT_INSTALL")); return; } if (!CModule::IncludeModule("socialnetwork")) { return; } if ( !isset($arParams["CHECK_PERMISSIONS_DEST"]) || strLen($arParams["CHECK_PERMISSIONS_DEST"]) <= 0 ) { $arParams["CHECK_PERMISSIONS_DEST"] = "N"; } $arResult["bFromList"] = ($arParams["FROM_LOG"] == "Y" || $arParams["TYPE"] == "DRAFT" || $arParams["TYPE"] == "MODERATION"); $arResult["bIntranetInstalled"] = ModuleManager::isModuleInstalled("intranet"); $arResult["bExtranetInstalled"] = ($arResult["bIntranetInstalled"] && CModule::IncludeModule("extranet")); $arResult["bExtranetSite"] = ($arResult["bExtranetInstalled"] && CExtranet::IsExtranetSite()); $arResult["bExtranetUser"] = ($arResult["bExtranetInstalled"] && !CExtranet::IsIntranetUser()); $arResult["ReadOnly"] = (isset($arParams["GROUP_READ_ONLY"]) && $arParams["GROUP_READ_ONLY"] == "Y"); $folderUsers = COption::GetOptionString("socialnetwork", "user_page", false, SITE_ID); $arParams["PATH_TO_LOG_TAG"] = $folderUsers."log/?TAG=#tag#"; if (SITE_TEMPLATE_ID == 'bitrix24') { $arParams["PATH_TO_LOG_TAG"] .= "&apply_filter=Y"; } if ($arResult["bExtranetUser"]) { $arUserIdVisible = CExtranet::GetMyGroupsUsersSimple(SITE_ID); } 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]); } } $arResult["bPublicPage"] = (isset($arParams["PUB"]) && $arParams["PUB"] == "Y"); $arResult["bTasksInstalled"] = CModule::IncludeModule("tasks"); $arResult["bTasksAvailable"] = ( !$arResult["bPublicPage"] && $arResult["bTasksInstalled"] && ( !CModule::IncludeModule('bitrix24') || CBitrix24BusinessTools::isToolAvailable($USER->GetID(), "tasks") ) ); if (!$arResult["bPublicPage"]) { 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_POST_IMPORTANT"] = trim($arParams["PATH_TO_POST_IMPORTANT"]); if(strlen($arParams["PATH_TO_POST_IMPORTANT"])<=0) $arParams["PATH_TO_POST_IMPORTANT"] = "/company/personal/user/#user_id#/blog/important/"; $arParams["PATH_TO_BLOG_CATEGORY"] = trim($arParams["PATH_TO_BLOG_CATEGORY"]); if(strlen($arParams["PATH_TO_BLOG_CATEGORY"])<=0) $arParams["PATH_TO_BLOG_CATEGORY"] = htmlspecialcharsbx($applicationCurPage."?".$arParams["PAGE_VAR"]."=blog&".$arParams["BLOG_VAR"]."=#blog#"."&category=#category_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"] = "/company/personal/user/#user_id#/blog/edit/#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#"); if(strlen($arParams["PATH_TO_SEARCH_TAG"])<=0) $arParams["PATH_TO_SEARCH_TAG"] = SITE_DIR."search/?tags=#tag#"; if (!isset($arParams["PATH_TO_CONPANY_DEPARTMENT"]) || strlen($arParams["PATH_TO_CONPANY_DEPARTMENT"]) <= 0) $arParams["PATH_TO_CONPANY_DEPARTMENT"] = "/company/structure.php?set_filter_structure=Y&structure_UF_DEPARTMENT=#ID#"; } $arParams["PATH_TO_POST"] = trim($arParams["PATH_TO_POST"]); if (strlen($arParams["PATH_TO_POST"]) <= 0) { $arParams["PATH_TO_POST"] = "/company/personal/user/#user_id#/blog/#post_id#/"; } $arParams["PATH_TO_SMILE"] = strlen(trim($arParams["PATH_TO_SMILE"]))<=0 ? false : trim($arParams["PATH_TO_SMILE"]); if (!isset($arParams["PATH_TO_MESSAGES_CHAT"]) || strlen($arParams["PATH_TO_MESSAGES_CHAT"]) <= 0) $arParams["PATH_TO_MESSAGES_CHAT"] = "/company/personal/messages/chat/#user_id#/"; if (!isset($arParams["PATH_TO_VIDEO_CALL"]) || strlen($arParams["PATH_TO_VIDEO_CALL"]) <= 0) $arParams["PATH_TO_VIDEO_CALL"] = "/company/personal/video/#user_id#/"; $arParams["CACHE_TIME"] = 3600*24*365; if (strlen(trim($arParams["NAME_TEMPLATE"])) <= 0) { $arParams["NAME_TEMPLATE"] = CSite::GetNameFormat(); } $arParams['SHOW_LOGIN'] = $arParams['SHOW_LOGIN'] != "N" ? "Y" : "N"; $arParams['DATE_TIME_FORMAT_S'] = $arParams['DATE_TIME_FORMAT']; CSocNetLogComponent::processDateTimeFormatParams($arParams); // activation rating CRatingsComponentsMain::GetShowRating($arParams); $arParams["USE_CUT"] = $arParams["USE_CUT"] == "Y" ? "Y" : "N"; $arParams["SEF"] = (isset($arParams["SEF"]) && $arParams["SEF"] == "N" ? "N" : "Y"); $arParams["IMAGE_MAX_WIDTH"] = IntVal($arParams["IMAGE_MAX_WIDTH"]); $arParams["IMAGE_MAX_HEIGHT"] = IntVal($arParams["IMAGE_MAX_HEIGHT"]); if(IntVal($arParams["IMAGE_MAX_WIDTH"]) <= 0) $arParams["IMAGE_MAX_WIDTH"] = \Bitrix\Blog\Util::getImageMaxWidth(); if(IntVal($arParams["IMAGE_MAX_HEIGHT"]) <= 0) $arParams["IMAGE_MAX_HEIGHT"] = \Bitrix\Blog\Util::getImageMaxHeight(); $arParams["ATTACHED_IMAGE_MAX_WIDTH_SMALL"] = (IntVal($arParams["ATTACHED_IMAGE_MAX_WIDTH_SMALL"]) > 0 ? IntVal($arParams["ATTACHED_IMAGE_MAX_WIDTH_SMALL"]) : 70); $arParams["ATTACHED_IMAGE_MAX_HEIGHT_SMALL"] = (IntVal($arParams["ATTACHED_IMAGE_MAX_HEIGHT_SMALL"]) > 0 ? IntVal($arParams["ATTACHED_IMAGE_MAX_HEIGHT_SMALL"]) : 70); $arParams["ATTACHED_IMAGE_MAX_WIDTH_FULL"] = (IntVal($arParams["ATTACHED_IMAGE_MAX_WIDTH_FULL"]) > 0 ? IntVal($arParams["ATTACHED_IMAGE_MAX_WIDTH_FULL"]) : 1000); $arParams["ATTACHED_IMAGE_MAX_HEIGHT_FULL"] = (IntVal($arParams["ATTACHED_IMAGE_MAX_HEIGHT_FULL"]) > 0 ? IntVal($arParams["ATTACHED_IMAGE_MAX_HEIGHT_FULL"]) : 1000); $arParams["AVATAR_SIZE_COMMON"] = (isset($arParams["AVATAR_SIZE_COMMON"]) && intval($arParams["AVATAR_SIZE_COMMON"]) > 0) ? intval($arParams["AVATAR_SIZE_COMMON"]) : 100; $arParams["AVATAR_SIZE"] = (isset($arParams["AVATAR_SIZE"]) && intval($arParams["AVATAR_SIZE"]) > 0) ? intval($arParams["AVATAR_SIZE"]) : 100; $arParams["AVATAR_SIZE_COMMENT"] = (isset($arParams["AVATAR_SIZE_COMMENT"]) && intval($arParams["AVATAR_SIZE_COMMENT"]) > 0) ? intval($arParams["AVATAR_SIZE_COMMENT"]) : 100; $arParams["ALLOW_POST_CODE"] = $arParams["ALLOW_POST_CODE"] !== "N"; $arParams["CHECK_COMMENTS_PERMS"] = (isset($arParams["CHECK_COMMENTS_PERMS"]) && $arParams["CHECK_COMMENTS_PERMS"] == "Y" ? "Y" : "N"); if(empty($arParams["POST_PROPERTY"])) $arParams["POST_PROPERTY"] = array(); $arParams["POST_PROPERTY_SOURCE"] = $arParams["POST_PROPERTY"]; $arParams["POST_PROPERTY"][] = "UF_BLOG_POST_DOC"; $arParams["POST_PROPERTY"][] = "UF_BLOG_POST_IMPRTNT"; if ( CModule::IncludeModule("webdav") || CModule::IncludeModule("disk") ) { $arParams["POST_PROPERTY"][] = "UF_BLOG_POST_FILE"; $arParams["POST_PROPERTY"][] = "UF_BLOG_POST_D_FILE"; } if(IsModuleInstalled("vote")) { $arParams["POST_PROPERTY"][] = "UF_BLOG_POST_VOTE"; } if($arResult["bIntranetInstalled"]) { $arParams["POST_PROPERTY"][] = "UF_GRATITUDE"; } $arParams["POST_PROPERTY"][] = "UF_BLOG_POST_URL_PRV"; if ( !array_key_exists("GET_FOLLOW", $arParams) || strLen($arParams["GET_FOLLOW"]) <= 0 || (defined("DisableSonetLogFollow") && DisableSonetLogFollow === true) ) { $arParams["GET_FOLLOW"] = "N"; } $user_id = IntVal($USER->GetID()); $arResult["USER_ID"] = $user_id; $arResult["TZ_OFFSET"] = CTimeZone::GetOffset(); $arResult["ALLOW_EMAIL_INVITATION"] = ( IsModuleInstalled('mail') && $arResult["bIntranetInstalled"] && ( !\Bitrix\Main\Loader::includeModule('bitrix24') || \CBitrix24::isEmailConfirmed() ) ); if ( !$arResult["bFromList"] && !$arResult["bPublicPage"] ) { $arParams["USE_CUT"] = "N"; $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; if($USER->IsAuthorized()) { CSocNetTools::InitGlobalExtranetArrays(); if (isset($GLOBALS["arExtranetGroupID"])) { $arResult["arExtranetGroupID"] = $GLOBALS["arExtranetGroupID"]; } } } $arParams["ID"] = trim($arParams["ID"]); if(preg_match("/^[1-9][0-9]*\$/", $arParams["ID"])) { $arParams["ID"] = IntVal($arParams["ID"]); } else { $arParams["ID"] = preg_replace("/[^a-zA-Z0-9_-]/is", "", Trim($arParams["~ID"])); $arParams["ID"] = CBlogPost::GetID($arParams["ID"], $arBlog["ID"]); } if ( $arParams["ID"] == "" && !$arResult["bFromList"] ) { ShowError(GetMessage("B_B_MES_NO_POST")); @define("ERROR_404", "Y"); CHTTP::SetStatus("404 Not Found"); return; } $arPost = array(); $cacheTtl = 2592000; $cacheId = 'blog_post_socnet_general_'.$arParams["ID"].'_'.LANGUAGE_ID.($arResult["TZ_OFFSET"] <> 0 ? "_".$arResult["TZ_OFFSET"] : "")."_".Bitrix\Main\Context::getCurrent()->getCulture()->getDateTimeFormat(); $cacheDir = ComponentHelper::getBlogPostCacheDir(array( 'TYPE' => 'post_general', 'POST_ID' => $arParams["ID"] )); $obCache = new CPHPCache; if($obCache->InitCache($cacheTtl, $cacheId, $cacheDir)) { $arPost = $obCache->GetVars(); $postItem = new \Bitrix\Blog\Item\Post; $postItem->setFields($arPost); } else { $obCache->StartDataCache(); $postItem = \Bitrix\Blog\Item\Post::getById($arParams["ID"]); $arPost = $postItem->getFields(); $obCache->EndDataCache($arPost); } if ( !empty($arPost) && $arPost["PUBLISH_STATUS"] != BLOG_PUBLISH_STATUS_PUBLISH && !in_array($arParams["TYPE"], array("DRAFT", "MODERATION")) ) { unset($arPost); } $a = new CAccess; $a->UpdateCodes(); if( ( !empty($arBlog) && $arBlog["ACTIVE"] == "Y" ) || $arResult["bFromList"] || $arResult["bPublicPage"] ) { if(!empty($arPost)) { $bNoLogEntry = false; if ( ( ( $arParams["GET_FOLLOW"] == "Y" && ( !array_key_exists("FOLLOW", $arParams) || strlen($arParams["FOLLOW"]) <= 0 ) ) || intval($arParams["LOG_ID"]) <= 0 || $arResult["bPublicPage"] ) && CModule::IncludeModule("socialnetwork") ) { $blogPostLivefeedProvider = new \Bitrix\Socialnetwork\Livefeed\BlogPost; $arFilter = array( "EVENT_ID" => $blogPostLivefeedProvider->getEventId(), "SOURCE_ID" => $arParams["ID"], ); if (CModule::IncludeModule('extranet') && CExtranet::IsExtranetSite()) { $arFilter["SITE_ID"] = SITE_ID; } elseif (!$arResult["bPublicPage"]) { $arFilter["SITE_ID"] = array(SITE_ID, false); } $rsLogSrc = CSocNetLog::GetList( array(), $arFilter, false, false, ($arParams["GET_FOLLOW"] == "Y" ? array("ID", "FOLLOW", "FAVORITES_USER_ID") : array("ID", "FAVORITES_USER_ID")), ($arParams["GET_FOLLOW"] == "Y" ? array("USE_FOLLOW" => "Y") : array()) ); if ($arLogSrc = $rsLogSrc->Fetch()) { $arParams["LOG_ID"] = $arLogSrc["ID"]; $arParams["FAVORITES_USER_ID"] = $arLogSrc["FAVORITES_USER_ID"]; if ($arParams["GET_FOLLOW"] == "Y") { $arParams["FOLLOW"] = $arLogSrc["FOLLOW"]; } } elseif (!$arResult["bFromList"]) { $bNoLogEntry = true; } } if ( !$arResult["bFromList"] && $_SERVER["REQUEST_METHOD"] != "POST" ) { CBlogPost::counterInc($arPost["ID"]); if ($liveFeedEntity = Livefeed\BlogPost::init(array( 'ENTITY_TYPE' => Livefeed\Provider::DATA_ENTITY_TYPE_BLOG_POST, 'ENTITY_ID' => $arPost["ID"], 'LOG_ID' => (isset($arParams["LOG_ID"]) ? intval($arParams["LOG_ID"]) : false) ))) { $liveFeedEntity->setContentView(); } } $arPost = CBlogTools::htmlspecialcharsExArray($arPost); if($arPost["AUTHOR_ID"] == $user_id) { $arPost["perms"] = $arResult["PostPerm"] = BLOG_PERMS_FULL; } elseif ($arResult["bFromList"]) { $arPost["perms"] = $arResult["PostPerm"] = BLOG_PERMS_READ; if ( CSocNetUser::IsCurrentUserModuleAdmin(SITE_ID, (!isset($arParams["MOBILE"]) || $arParams["MOBILE"] != "Y")) || $APPLICATION->GetGroupRight("blog") >= "W" ) { $arPost["perms"] = $arResult["PostPerm"] = BLOG_PERMS_FULL; } } else { if ($bNoLogEntry) { $arPost["perms"] = $arResult["PostPerm"] = \Bitrix\Blog\Item\Permissions::DENY; } elseif ( CSocNetUser::IsCurrentUserModuleAdmin(SITE_ID, (!isset($arParams["MOBILE"]) || $arParams["MOBILE"] != "Y")) || $APPLICATION->GetGroupRight("blog") >= "W" ) { $arPost["perms"] = $arResult["PostPerm"] = BLOG_PERMS_FULL; } else { $permsResult = $postItem->getSonetPerms(array( "PUBLIC" => $arResult["bPublicPage"], "CHECK_FULL_PERMS" => true, "LOG_ID" => (isset($arParams["LOG_ID"]) ? $arParams["LOG_ID"] : false) )); $arPost["perms"] = $arResult["PostPerm"] = $permsResult['PERM']; $arResult["ReadOnly"] = ( $permsResult['PERM'] <= \Bitrix\Blog\Item\Permissions::READ && $permsResult['READ_BY_OSG'] ); } } $arResult["Post"] = $arPost; $arResult["PostSrc"] = $arPost; $arResult["Blog"] = $arBlog; $arResult["PostSrc"]["PATH_TO_CONPANY_DEPARTMENT"] = $arParams["PATH_TO_CONPANY_DEPARTMENT"]; $arResult["PostSrc"]["PATH_TO_GROUP"] = $arParams["PATH_TO_GROUP"]; $arResult["PostSrc"]["bExtranetSite"] = $arResult["bExtranetSite"]; $arResult["urlToPost"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_POST"], array("post_id"=>CBlogPost::GetPostID($arResult["Post"]["ID"], $arResult["Post"]["CODE"], $arParams["ALLOW_POST_CODE"]), "user_id" => $arPost["AUTHOR_ID"])); if ( !$arResult["bPublicPage"] && is_set($arParams["PATH_TO_GROUP"]) ) { $strSiteWorkgroupsPage = COption::GetOptionString("socialnetwork", "workgroups_page", SITE_DIR."workgroups/", SITE_ID); if (strlen($strSiteWorkgroupsPage) > 0) { if (strpos($arParams["PATH_TO_GROUP"], $strSiteWorkgroupsPage) === 0) { $arParams["PATH_TO_GROUP"] = "#GROUPS_PATH#".substr($arParams["PATH_TO_GROUP"], strlen($strSiteWorkgroupsPage), strlen($arParams["PATH_TO_GROUP"]) - strlen($strSiteWorkgroupsPage)); } } } if ( $_GET["delete"] == "Y" && !$arResult["bFromList"] && !$arResult["bPublicPage"] ) { if (check_bitrix_sessid()) { if ($arResult["PostPerm"] >= BLOG_PERMS_FULL) { CBlogPost::DeleteLog($arParams["ID"]); if (CBlogPost::Delete($arParams["ID"])) { BXClearCache(true, ComponentHelper::getBlogPostCacheDir(array( 'TYPE' => 'posts_popular', 'SITE_ID' => SITE_ID ))); $url = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_BLOG"], array("blog" => $arBlog["URL"], "user_id" => $arBlog["OWNER_ID"], "group_id" => $arBlog["SOCNET_GROUP_ID"])); if(strpos($url, "?") === false) $url .= "?"; else $url .= "&"; $url .= "del_id=".$arParams["ID"]."&success=Y"; 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, CComponentEngine::MakeComponentPath("bitrix:socialnetwork.blog.blog")); LocalRedirect($url); } else $arResult["ERROR_MESSAGE"] .= GetMessage("BLOG_BLOG_BLOG_MES_DEL_ERROR").'<br />'; } $arResult["ERROR_MESSAGE"] .= GetMessage("BLOG_BLOG_BLOG_MES_DEL_NO_RIGHTS").'<br />'; } else $arResult["ERROR_MESSAGE"] .= GetMessage("BLOG_BLOG_SESSID_WRONG").'<br />'; } if ( $_GET["hide"] == "Y" && !$arResult["bFromList"] && !$arResult["bPublicPage"] ) { if (check_bitrix_sessid()) { if ($arResult["PostPerm"] >= BLOG_PERMS_MODERATE) { if(CBlogPost::Update($arParams["ID"], Array("PUBLISH_STATUS" => BLOG_PUBLISH_STATUS_READY))) { BXClearCache(True, ComponentHelper::getBlogPostCacheDir(array( 'TYPE' => 'posts_popular', 'SITE_ID' => SITE_ID ))); BXClearCache(true, ComponentHelper::getBlogPostCacheDir(array( 'TYPE' => 'post', 'POST_ID' => $arParams["ID"] ))); BXClearCache(true, ComponentHelper::getBlogPostCacheDir(array( 'TYPE' => 'post_general', 'POST_ID' => $arParams["ID"] ))); CBlogPost::DeleteLog($arParams["ID"]); $url = ( isset($_REQUEST["SONET_GROUP_ID"]) && intval($_REQUEST["SONET_GROUP_ID"]) > 0 && !empty($arParams["PATH_TO_GROUP_BLOG"]) ? CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_GROUP_BLOG"], array("group_id" => intval($_REQUEST["SONET_GROUP_ID"]))) : CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_BLOG"], array("user_id" => $arBlog["OWNER_ID"])) ); if(strpos($url, "?") === false) $url .= "?"; else $url .= "&"; $url .= "hide_id=".$arParams["ID"]."&success=Y"; LocalRedirect($url); } else { $arResult["ERROR_MESSAGE"] .= GetMessage("BLOG_BLOG_BLOG_MES_HIDE_ERROR").'<br />'; } } else { $arResult["ERROR_MESSAGE"] .= GetMessage("BLOG_BLOG_BLOG_MES_HIDE_NO_RIGHTS").'<br />'; } } else { $arResult["ERROR_MESSAGE"] .= GetMessage("BLOG_BLOG_SESSID_WRONG").'<br />'; } } if ($arResult["PostPerm"] > BLOG_PERMS_DENY) { /* share */ if( $_SERVER["REQUEST_METHOD"] == "POST" && $_POST["act"] == "share" && check_bitrix_sessid() && $USER->IsAuthorized() ) { CUtil::JSPostUnescape(); $APPLICATION->RestartBuffer(); $spermNew = $_POST["SPERM"]; $spermOld = CBlogPost::GetSocNetPerms($arParams["ID"]); $perms2update = array(); $arNewRights = array(); $comId = false; foreach($spermOld as $type => $val) { foreach($val as $id => $values) { if($type != "U") { $perms2update[] = $type.$id; } else { $perms2update[] = ( in_array("US".$id, $values) ? "UA" : $type.$id ); } } } $tmp = $_POST; $tmp['SPERM'] = $spermNew; ComponentHelper::processBlogPostNewMailUser($tmp, $arResult); $spermNew = $tmp['SPERM']; $bCurrentUserAdmin = CSocNetUser::IsCurrentUserModuleAdmin(); $canPublish = true; foreach($spermNew as $type => $val) { foreach($val as $id => $code) { if(in_array($type, array("U", "SG", "DR", "CRMCONTACT"))) { if(!in_array($code, $perms2update)) { if ($type == 'SG') { $oGrId = IntVal(str_replace("SG", "", $code)); $canPublish = ( $bCurrentUserAdmin || CSocNetFeaturesPerms::CanPerformOperation($user_id, SONET_ENTITY_GROUP, $oGrId, "blog", "write_post") || CSocNetFeaturesPerms::CanPerformOperation($user_id, SONET_ENTITY_GROUP, $oGrId, "blog", "moderate_post") || CSocNetFeaturesPerms::CanPerformOperation($user_id, SONET_ENTITY_GROUP, $oGrId, "blog", "full_post") ); if (!$canPublish) { break; } } $perms2update[] = $code; $arNewRights[] = $code; } } elseif($type == "UA") { if(!in_array("UA", $perms2update)) { $perms2update[] = "UA"; $arNewRights[] = "UA"; } } } if (!$canPublish) { break; } } if ( !empty($arNewRights) && $canPublish ) { ComponentHelper::processBlogPostShare( array( "POST_ID" => $arParams["ID"], "BLOG_ID" => $arPost["BLOG_ID"], "SITE_ID" => SITE_ID, "SONET_RIGHTS" => $perms2update, "NEW_RIGHTS" => $arNewRights, "USER_ID" => $user_id ), array_merge($arParams, array( "CAN_USER_COMMENT" => (!$arResult["ReadOnly"] ? 'Y' : 'N') )) ); } elseif (!$canPublish) { $response = array( 'errorMessage' => GetMessage('SBP_SHARE_PREMODERATION'), 'status' => "error", ); $APPLICATION->restartBuffer(); while (ob_end_clean()); header('Content-Type:application/json; charset=UTF-8'); ?><?=\Bitrix\Main\Web\Json::encode($response)?><? CMain::finalActions(); die; } die(); } /* end share */ if(!$arResult["bFromList"]) { $strTitle = ($arPost["MICRO"] != "Y" ? $arPost["TITLE"] : htmlspecialcharsback(TruncateText(blogTextParser::killAllTags($arPost["DETAIL_TEXT"]), 100))); if ($arResult["bIntranetInstalled"]) { $APPLICATION->SetPageProperty("title", $strTitle); } else { $APPLICATION->SetTitle($strTitle); } } if ($arParams["SET_NAV_CHAIN"] == "Y") { $APPLICATION->AddChainItem($arBlog["NAME"], CComponentEngine::MakePathFromTemplate(htmlspecialcharsback($arParams["PATH_TO_BLOG"]), array("blog" => $arBlog["URL"], "user_id" => $arPost["AUTHOR_ID"], "group_id" => $arParams["SOCNET_GROUP_ID"]))); } $cache = new CPHPCache; $arCacheID = array(); $arKeys = array( "MOBILE", "USE_CUT", "PATH_TO_SMILE", "ATTACHED_IMAGE_MAX_WIDTH_SMALL", "ATTACHED_IMAGE_MAX_HEIGHT_SMALL", "ATTACHED_IMAGE_MAX_WIDTH_FULL", "ATTACHED_IMAGE_MAX_HEIGHT_FULL", "POST_PROPERTY", "PATH_TO_USER", "PATH_TO_POST", "PATH_TO_GROUP", "PATH_TO_SEARCH_TAG", "PATH_TO_LOG_TAG", "IMAGE_MAX_WIDTH", "IMAGE_MAX_HEIGHT", "DATE_TIME_FORMAT", "DATE_TIME_FORMAT_S", "ALLOW_POST_CODE", "AVATAR_SIZE_COMMENT", "NAME_TEMPLATE", "SHOW_LOGIN", "LAZYLOAD", "PUB" ); foreach($arKeys as $param_key) { $arCacheID[$param_key] = (array_key_exists($param_key, $arParams) ? $arParams[$param_key] : false); } $cache_id = "blog_socnet_post_".md5(serialize($arCacheID))."_".LANGUAGE_ID."_".$arParams["DATE_TIME_FORMAT"]; if ($arResult["TZ_OFFSET"] <> 0) { $cache_id .= "_".$arResult["TZ_OFFSET"]; } if ( !empty($arParams["MOBILE"]) && $arParams["MOBILE"] == "Y" && CModule::IncludeModule('mobile') ) { $imageResizeWidth = CMobileHelper::getDeviceResizeWidth(); if ($imageResizeWidth) { $cache_id .= "_".$imageResizeWidth; } } $cache_path = ComponentHelper::getBlogPostCacheDir(array( 'TYPE' => 'post', 'POST_ID' => $arPost["ID"] )); if ( $arParams["CACHE_TIME"] > 0 && $cache->InitCache($arParams["CACHE_TIME"], $cache_id, $cache_path) ) { $Vars = $cache->GetVars(); $arResult["POST_PROPERTY"] = $Vars["POST_PROPERTY"]; $arResult["Post"] = $Vars["Post"]; $arResult["images"] = $Vars["images"]; $arResult["Category"] = $Vars["Category"]; $arResult["GRATITUDE"] = $Vars["GRATITUDE"]; $arResult["URL_PREVIEW"] = (isset($Vars["URL_PREVIEW"]) ? $Vars["URL_PREVIEW"] : ''); $arResult["POST_PROPERTIES"] = $Vars["POST_PROPERTIES"]; $arResult["arUser"] = $Vars["arUser"]; $arResult["Assets"] = (isset($Vars["Assets"]) ? $Vars["Assets"] : array()); if (!empty($arResult["Assets"])) { if (!empty($arResult["Assets"]["CSS"])) { foreach($arResult["Assets"]["CSS"] as $cssFile) { \Bitrix\Main\Page\Asset::getInstance()->addCss($cssFile); } } if (!empty($arResult["Assets"]["JS"])) { foreach($arResult["Assets"]["JS"] as $jsFile) { \Bitrix\Main\Page\Asset::getInstance()->addJs($jsFile); } } } $cache->Output(); } else { $arResult["Post"]["hasVideoInline"] = false; $arResult["Assets"] = array( "CSS" => array(), "JS" => array() ); if ($arParams["CACHE_TIME"] > 0) { $cache->StartDataCache($arParams["CACHE_TIME"], $cache_id, $cache_path); if (defined("BX_COMP_MANAGED_CACHE")) { $CACHE_MANAGER->StartTagCache($cache_path); $CACHE_MANAGER->RegisterTag("USER_NAME_".intval($arPost["AUTHOR_ID"])); } } $p = new blogTextParser(false, $arParams["PATH_TO_SMILE"], array("bPublic" => $arResult["bPublicPage"])); $p->bMobile = (isset($arParams["MOBILE"]) && $arParams["MOBILE"] == "Y"); $arResult["POST_PROPERTIES"] = array("SHOW" => "N"); $bHasImg = false; $bHasTag = false; $bHasProps = false; $bHasOnlyAll = false; if (!empty($arParams["POST_PROPERTY"])) { if($arPost["HAS_PROPS"] != "N") { $arPostFields = $USER_FIELD_MANAGER->GetUserFields("BLOG_POST", $arPost["ID"], LANGUAGE_ID); if (count($arParams["POST_PROPERTY"]) > 0) { foreach ($arPostFields as $FIELD_NAME => $arPostField) { if (!in_array($FIELD_NAME, $arParams["POST_PROPERTY"])) { continue; } elseif( $FIELD_NAME == "UF_GRATITUDE" && array_key_exists("VALUE", $arPostField) && intval($arPostField["VALUE"]) > 0 ) { $bHasProps = true; $gratValue = $arPostField["VALUE"]; if (CModule::IncludeModule("iblock")) { if ( !is_array($GLOBALS["CACHE_HONOUR"]) || !array_key_exists("honour_iblock_id", $GLOBALS["CACHE_HONOUR"]) || intval($GLOBALS["CACHE_HONOUR"]["honour_iblock_id"]) <= 0 ) { $rsIBlock = CIBlock::GetList(array(), array("=CODE" => "honour", "=TYPE" => "structure")); if ($arIBlock = $rsIBlock->Fetch()) $GLOBALS["CACHE_HONOUR"]["honour_iblock_id"] = $arIBlock["ID"]; } if (intval($GLOBALS["CACHE_HONOUR"]["honour_iblock_id"]) > 0) { $arGrat = array( "USERS" => array(), "USERS_FULL" => array(), "TYPE" => false ); $rsElementProperty = CIBlockElement::GetProperty( $GLOBALS["CACHE_HONOUR"]["honour_iblock_id"], $gratValue ); while ($arElementProperty = $rsElementProperty->GetNext()) { if ( $arElementProperty["CODE"] == "USERS" && intval($arElementProperty["VALUE"]) > 0 ) { $arGrat["USERS"][] = $arElementProperty["VALUE"]; } elseif ($arElementProperty["CODE"] == "GRATITUDE") { $arGrat["TYPE"] = array( "VALUE_ENUM" => $arElementProperty["VALUE_ENUM"], "XML_ID" => $arElementProperty["VALUE_XML_ID"] ); } } if (count($arGrat["USERS"]) > 0) { if ($arParams["CACHE_TIME"] > 0 && defined("BX_COMP_MANAGED_CACHE")) { foreach($arGrat["USERS"] as $i => $grat_user_id) { $CACHE_MANAGER->RegisterTag("USER_NAME_".intval($grat_user_id)); } } $arGratUsers = array(); $rsUser = CUser::GetList( ($by = ""), ($ord = ""), array( "ID" => implode("|", $arGrat["USERS"]) ), array( "FIELDS" => array( "ID", "PERSONAL_GENDER", "PERSONAL_PHOTO", "LOGIN", "NAME", "LAST_NAME", "SECOND_NAME", "EMAIL", "WORK_POSITION" ) ) ); while ($arGratUser = $rsUser->Fetch()) { $arGratUser["AVATAR_SRC"] = CSocNetLogTools::FormatEvent_CreateAvatar($arGratUser, array("AVATAR_SIZE" => (isset($arParams["AVATAR_SIZE_COMMON"]) ? $arParams["AVATAR_SIZE_COMMON"] : 58)), ""); $arGratUser["AVATAR_SIZE"] = ($arParams["MOBILE"] == "Y" ? 58 : (count($arGrat["USERS"]) <= 4 ? 50 : 26)); $arGratUser["URL"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arGratUser["ID"])); $arGratUsers[] = $arGratUser; } $arGrat["USERS_FULL"] = $arGratUsers; } if (count($arGrat["USERS_FULL"]) > 0) { $arResult["GRATITUDE"] = $arGrat; } } } } elseif( $FIELD_NAME == "UF_BLOG_POST_URL_PRV" && array_key_exists("VALUE", $arPostField) && intval($arPostField["VALUE"]) > 0 ) { $bHasProps = true; $arCss = $APPLICATION->sPath2css; $arJs = $APPLICATION->arHeadScripts; $arResult['URL_PREVIEW'] = ComponentHelper::getUrlPreviewContent($arPostField, array( "LAZYLOAD" => $arParams["LAZYLOAD"], "MOBILE" => (isset($arParams["MOBILE"]) && $arParams["MOBILE"] == "Y" ? "Y" : "N"), "NAME_TEMPLATE" => $arParams["NAME_TEMPLATE"], "PATH_TO_USER" => $arParams["~PATH_TO_USER"] )); $arResult["Assets"]["CSS"] = array_merge($arResult["Assets"]["CSS"], array_diff($APPLICATION->sPath2css, $arCss)); $arResult["Assets"]["JS"] = array_merge($arResult["Assets"]["JS"], array_diff($APPLICATION->arHeadScripts, $arJs)); } else { $arPostField["EDIT_FORM_LABEL"] = strLen($arPostField["EDIT_FORM_LABEL"]) > 0 ? $arPostField["EDIT_FORM_LABEL"] : $arPostField["FIELD_NAME"]; $arPostField["EDIT_FORM_LABEL"] = htmlspecialcharsEx($arPostField["EDIT_FORM_LABEL"]); $arPostField["~EDIT_FORM_LABEL"] = $arPostField["EDIT_FORM_LABEL"]; $arResult["POST_PROPERTIES"]["DATA"][$FIELD_NAME] = $arPostField; if(!empty($arPostField["VALUE"])) $bHasProps = true; } } } if (!empty($arResult["POST_PROPERTIES"]["DATA"])) $arResult["POST_PROPERTIES"]["SHOW"] = "Y"; } } if($arPost["HAS_IMAGES"] != "N") { $res = CBlogImage::GetList(array("ID"=>"ASC"),array("POST_ID"=>$arPost['ID'], "IS_COMMENT" => "N")); while ($arImage = $res->Fetch()) { $bHasImg = true; $arImages[$arImage['ID']] = $arImage['FILE_ID']; $arResult["images"][$arImage['ID']] = Array( "small" => "/bitrix/components/bitrix/blog/show_file.php?fid=".$arImage['ID']."&width=".$arParams["ATTACHED_IMAGE_MAX_WIDTH_SMALL"]."&height=".$arParams["ATTACHED_IMAGE_MAX_HEIGHT_SMALL"]."&type=square" ); $arResult["images"][$arImage['ID']]["full"] = "/bitrix/components/bitrix/blog/show_file.php?fid=".$arImage['ID']."&width=".$arParams["ATTACHED_IMAGE_MAX_WIDTH_FULL"]."&height=".$arParams["ATTACHED_IMAGE_MAX_HEIGHT_FULL"]; } } $arParserParams = Array( "imageWidth" => $arParams["IMAGE_MAX_WIDTH"], "imageHeight" => $arParams["IMAGE_MAX_HEIGHT"], "pathToUser" => $arParams["PATH_TO_USER"], ); if ($p->bMobile) { $arParserParams["imageWidth"] = 275; $arParserParams["imageHeight"] = 416; } if (!empty($arParams["LOG_ID"])) { $arParserParams["pathToUserEntityType"] = 'LOG_ENTRY'; $arParserParams["pathToUserEntityId"] = intval($arParams["LOG_ID"]); } $arAllow = array( "HTML" => "N", "ANCHOR" => "Y", "BIU" => "Y", "IMG" => "Y", "QUOTE" => "Y", "CODE" => "Y", "FONT" => "Y", "LIST" => "Y", "SMILES" => "Y", "NL2BR" => "N", "VIDEO" => "Y", "USER" => "Y", "TAG" => "Y", "SHORT_ANCHOR" => "Y" ); if(COption::GetOptionString("blog","allow_video", "Y") != "Y") { $arAllow["VIDEO"] = "N"; } if (is_array($arResult["POST_PROPERTIES"]["DATA"]["UF_BLOG_POST_FILE"])) { $p->arUserfields = array("UF_BLOG_POST_FILE" => array_merge($arResult["POST_PROPERTIES"]["DATA"]["UF_BLOG_POST_FILE"], array("TAG" => "DOCUMENT ID"))); } $p->LAZYLOAD = (isset($arParams["LAZYLOAD"]) && $arParams["LAZYLOAD"] == "Y" ? "Y" : "N"); $arResult["Post"]["textFormated"] = $p->convert($arPost["~DETAIL_TEXT"], ($arParams["USE_CUT"] == "Y" ? true : false), $arImages, $arAllow, $arParserParams); if ($arAllow["VIDEO"] == "Y") { $arResult["Post"]["hasVideoInline"] = preg_match( "/<video([^>]*)>(.+?)<\\/video[\\s]*>/is".BX_UTF_PCRE_MODIFIER, $arResult["Post"]["textFormated"] ); } if ( is_array($arResult["POST_PROPERTIES"]["DATA"]["UF_BLOG_POST_FILE"]) && is_array($arResult["POST_PROPERTIES"]["DATA"]["UF_BLOG_POST_FILE"]["VALUE"]) ) { $arResult["POST_PROPERTIES"]["DATA"]["UF_BLOG_POST_FILE"]["SOURCE_VALUE"] = $arResult["POST_PROPERTIES"]["DATA"]["UF_BLOG_POST_FILE"]["VALUE"]; } if ( $arParams["USE_CUT"] == "Y" && preg_match("/(\[CUT\])/i", $arPost['~DETAIL_TEXT']) ) { $arResult["Post"]["CUT"] = "Y"; } if(!empty($p->showedImages) && !empty($arResult["images"])) { foreach($p->showedImages as $val) { if(!empty($arResult["images"][$val])) { unset($arResult["images"][$val]); } } } $arResult["Post"]["DATE_PUBLISH_FORMATED"] = FormatDateFromDB($arResult["Post"]["DATE_PUBLISH"], $arParams["DATE_TIME_FORMAT"], true); $arResult["Post"]["DATE_PUBLISH_DATE"] = FormatDateFromDB($arResult["Post"]["DATE_PUBLISH"], FORMAT_DATE); if (strcasecmp(LANGUAGE_ID, 'EN') !== 0 && strcasecmp(LANGUAGE_ID, 'DE') !== 0) { $arResult["Post"]["DATE_PUBLISH_FORMATED"] = ToLower($arResult["Post"]["DATE_PUBLISH_FORMATED"]); $arResult["Post"]["DATE_PUBLISH_DATE"] = ToLower($arResult["Post"]["DATE_PUBLISH_DATE"]); } // strip current year if (!empty($arParams['DATE_TIME_FORMAT_S']) && ($arParams['DATE_TIME_FORMAT_S'] == 'j F Y G:i' || $arParams['DATE_TIME_FORMAT_S'] == 'j F Y g:i a')) { $arResult["Post"]["DATE_PUBLISH_FORMATED"] = ltrim($arResult["Post"]["DATE_PUBLISH_FORMATED"], '0'); $arResult["Post"]["DATE_PUBLISH_DATE"] = ltrim($arResult["Post"]["DATE_PUBLISH_DATE"], '0'); $curYear = date('Y'); $arResult["Post"]["DATE_PUBLISH_FORMATED"] = str_replace(array('-'.$curYear, '/'.$curYear, ' '.$curYear, '.'.$curYear), '', $arResult["Post"]["DATE_PUBLISH_FORMATED"]); $arResult["Post"]["DATE_PUBLISH_DATE"] = str_replace(array('-'.$curYear, '/'.$curYear, ' '.$curYear, '.'.$curYear), '', $arResult["Post"]["DATE_PUBLISH_DATE"]); } $arResult["Post"]["DATE_PUBLISH_TIME"] = FormatDateFromDB( $arResult["Post"]["DATE_PUBLISH"], ( strpos($arParams["DATE_TIME_FORMAT_S"], 'a') !== false || ( $arParams["DATE_TIME_FORMAT_S"] == 'FULL' && IsAmPmMode() ) !== false ? (strpos(FORMAT_DATETIME, 'TT')!==false ? 'G:MI TT': 'G:MI T') : 'GG:MI' ) ); if (strcasecmp(LANGUAGE_ID, 'EN') !== 0 && strcasecmp(LANGUAGE_ID, 'DE') !== 0) { $arResult["Post"]["DATE_PUBLISH_TIME"] = ToLower($arResult["Post"]["DATE_PUBLISH_TIME"]); } $arResult["arUser"] = CBlogUser::GetUserInfo($arPost["AUTHOR_ID"], $arParams["PATH_TO_USER"], array("AVATAR_SIZE" => (isset($arParams["AVATAR_SIZE_COMMON"]) ? $arParams["AVATAR_SIZE_COMMON"] : $arParams["AVATAR_SIZE"]), "AVATAR_SIZE_COMMENT" => $arParams["AVATAR_SIZE_COMMENT"])); $arResult["arUser"]["isExtranet"] = (intval($arPost["AUTHOR_ID"]) > 0 && is_array($GLOBALS["arExtranetUserID"]) && in_array($arPost["AUTHOR_ID"], $GLOBALS["arExtranetUserID"])); if (!$arResult["bPublicPage"]) { $arResult["arUser"]["url"] .= (strpos($arResult["arUser"]["url"], '?') === false ? '?' : '&')."entityType=LOG_ENTRY&entityId=".$arParams["LOG_ID"]; } $arResult["Post"]["urlToPost"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_POST"], array("post_id"=> CBlogPost::GetPostID($arPost["ID"], $arPost["CODE"], $arParams["ALLOW_POST_CODE"]), "user_id" => $arPost["AUTHOR_ID"])); if(strlen($arPost["CATEGORY_ID"])>0) { $bHasTag = true; $arCategory = explode(",", $arPost["CATEGORY_ID"]); $dbCategory = CBlogCategory::GetList(Array(), Array("@ID" => $arCategory)); while($arCatTmp = $dbCategory->Fetch()) { $arCatTmp["~NAME"] = $arCatTmp["NAME"]; $arCatTmp["NAME"] = htmlspecialcharsEx($arCatTmp["NAME"]); $arCatTmp["urlToCategory"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_LOG_TAG"], array("tag" => urlencode($arCatTmp["NAME"]))); $arResult["Category"][] = $arCatTmp; } } $SGClosedList = array(); $bAll = false; $bCrmModuleIncluded = CModule::IncludeModule('crm'); $arResult["Post"]["SPERM"] = Array(); if($arPost["HAS_SOCNET_ALL"] != "Y") { $arSPERM = CBlogPost::GetSocnetPermsName($arResult["Post"]["ID"]); $arModuleEvents = array(); $db_events = GetModuleEvents("socialnetwork", "OnSocNetLogFormatDestination"); while ($arEvent = $db_events->Fetch()) { $arModuleEvents[] = $arEvent; } $arUserId = array(); foreach($arSPERM as $type => $v) { foreach($v as $vv) { $name = $link = $id = $CRMPrefix = ""; $isExtranet = $isEmail = false; if($type == "SG") { if($arSocNetGroup = CSocNetGroup::GetByID($vv["ENTITY_ID"])) { $SGClosedList[] = $arSocNetGroup["CLOSED"]; $name = $arSocNetGroup["NAME"]; $link = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_GROUP"], array("group_id" => $vv["ENTITY_ID"])); $groupSiteID = false; $rsGroupSite = CSocNetGroup::GetSite($vv["ENTITY_ID"]); while($arGroupSite = $rsGroupSite->Fetch()) { if ( !$arResult["bExtranetInstalled"] || $arGroupSite["LID"] != CExtranet::GetExtranetSiteID() ) { $groupSiteID = $arGroupSite["LID"]; break; } } if ($groupSiteID) { $arTmp = CSocNetLogTools::ProcessPath(array("GROUP_URL" => $link), $user_id, $groupSiteID); // user_id is not important parameter $link = (strlen($arTmp["URLS"]["GROUP_URL"]) > 0 ? $arTmp["SERVER_NAME"].$arTmp["URLS"]["GROUP_URL"] : $link); } $isExtranet = (is_array($GLOBALS["arExtranetGroupID"]) && in_array($vv["ENTITY_ID"], $GLOBALS["arExtranetGroupID"])); } } elseif($type == "U") { if(in_array("US".$vv["ENTITY_ID"], $vv["ENTITY"])) { $name = "All"; if ( !$arResult["bExtranetSite"] && defined("BITRIX24_PATH_COMPANY_STRUCTURE_VISUAL") ) { $link = BITRIX24_PATH_COMPANY_STRUCTURE_VISUAL; } $bAll = true; } else { $arTmpUser = array( "NAME" => $vv["~U_NAME"], "LAST_NAME" => $vv["~U_LAST_NAME"], "SECOND_NAME" => $vv["~U_SECOND_NAME"], "LOGIN" => $vv["~U_LOGIN"], "NAME_LIST_FORMATTED" => "", ); $name = CUser::FormatName($arParams["NAME_TEMPLATE"], $arTmpUser, ($arParams["SHOW_LOGIN"] != "N" ? true : false)); $id = $vv["ENTITY_ID"]; $link = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $vv["ENTITY_ID"])); $isExtranet = (is_array($GLOBALS["arExtranetUserID"]) && in_array($vv["ENTITY_ID"], $GLOBALS["arExtranetUserID"])); $isEmail = (isset($vv["U_EXTERNAL_AUTH_ID"]) && $vv["U_EXTERNAL_AUTH_ID"] == 'email'); if ($isEmail) { $link .= (strpos($link, '?') === false ? '?' : '&')."entityType=LOG_ENTRY&entityId=".$arParams["LOG_ID"]; } if (defined("BX_COMP_MANAGED_CACHE")) { $CACHE_MANAGER->RegisterTag("USER_NAME_".intval($vv["ENTITY_ID"])); } $arUserId[] = $id; } } elseif($type == "DR") { $name = $vv["EL_NAME"]; $id = $vv["ENTITY_ID"]; $link = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_CONPANY_DEPARTMENT"], array("ID" => $vv["ENTITY_ID"])); } $arDestination = $arRights = array(); $arDestinationParams = array( 'MOBILE' => $arParams['MOBILE'], 'PATH_TO_CRMCONTACT' => (!empty($arParams['PATH_TO_CRMCONTACT']) ? $arParams['PATH_TO_CRMCONTACT'] : ''), ); foreach ($arModuleEvents as $arEvent) { ExecuteModuleEventEx($arEvent, array(&$arDestination, $vv['~ENTITY'], $arRights, $arDestinationParams, true)); } if ( !empty($arDestination) && !empty($arDestination[0]) ) { $name = $arDestination[0]['TITLE']; $link = $arDestination[0]['URL']; $id = $arDestination[0]['ID']; $isExtranet = false; $isEmail = false; $CRMPrefix = $arDestination[0]['CRM_PREFIX']; } if(strlen($name) > 0) { $arResult["Post"]["SPERM"][$type][$vv["ENTITY_ID"]] = array( "NAME" => $name, "URL" => $link, "ID" => $id, "IS_EXTRANET" => ($isExtranet ? "Y" : "N"), "IS_EMAIL" => ($isEmail ? "Y" : "N"), "CRM_PREFIX" => $CRMPrefix ); } } } if ( !empty($arUserId) && IsModuleInstalled('crm') ) { $dbUsers = CUser::GetList( ($sort_by = array('id'=> 'asc')), ($dummy=''), array( "ID" => implode('|', $arUserId) ), Array( "FIELDS" => array("ID"), "SELECT" => array("UF_USER_CRM_ENTITY") ) ); while ($arUser = $dbUsers->GetNext()) { if ( !empty($arUser["UF_USER_CRM_ENTITY"]) && isset($arResult["Post"]["SPERM"]["U"][$arUser["ID"]]) ) { $arResult["Post"]["SPERM"]["U"][$arUser["ID"]]["CRM_ENTITY"] = $arUser["UF_USER_CRM_ENTITY"]; } } } if ( count($arResult["Post"]["SPERM"]) == 1 && count($arResult["Post"]["SPERM"]["U"]) == 1 && $bAll ) { $bHasOnlyAll = true; } } else { $arResult["Post"]["SPERM"]["U"][1] = Array( "NAME" => "All", "URL" => ( !$arResult["bExtranetSite"] && defined("BITRIX24_PATH_COMPANY_STRUCTURE_VISUAL") ? BITRIX24_PATH_COMPANY_STRUCTURE_VISUAL : "" ), "ID" => "" ); } $arResult["Post"]["LIMITED_VIEW"] = ComponentHelper::getBlogPostLimitedViewStatus(array( 'logId' => intval($arParams["LOG_ID"]), 'postId' => intval($arResult["Post"]["ID"]), 'authorId' => $arResult["Post"]["AUTHOR_ID"], 'blogPostPerms' => $arResult["Post"]["SPERM"] )); $arResult["Post"]["ONLY_CLOSED_GROUPS"] = (!empty($SGClosedList) && !in_array('N', $SGClosedList)); $arFieldsHave = array(); if($arPost["HAS_IMAGES"] == "") $arFieldsHave["HAS_IMAGES"] = ($bHasImg ? "Y" : "N"); if($arPost["HAS_TAGS"] == "") $arFieldsHave["HAS_TAGS"] = ($bHasTag ? "Y" : "N"); if($arPost["HAS_PROPS"] == "") $arFieldsHave["HAS_PROPS"] = ($bHasProps ? "Y" : "N"); if($arPost["HAS_SOCNET_ALL"] == "") $arFieldsHave["HAS_SOCNET_ALL"] = ($bHasOnlyAll ? "Y" : "N"); if (!empty($arFieldsHave)) { CBlogPost::Update($arPost["ID"], $arFieldsHave); } if ( $bAll || $arPost["HAS_SOCNET_ALL"] == "Y" ) { $arResult["Post"]["HAVE_ALL_IN_ADR"] = "Y"; } if ($arParams["CACHE_TIME"] > 0) { $arCacheData = Array( "Post" => $arResult["Post"], "images" => $arResult["images"], "Category" => $arResult["Category"], "GRATITUDE" => $arResult["GRATITUDE"], "URL_PREVIEW" => (isset($arResult["URL_PREVIEW"]) ? $arResult["URL_PREVIEW"] : ''), "POST_PROPERTIES" => $arResult["POST_PROPERTIES"], "arUser" => $arResult["arUser"], "Assets" => (isset($arResult["Assets"]) ? $arResult["Assets"] : array()), ); if(defined("BX_COMP_MANAGED_CACHE")) { $CACHE_MANAGER->EndTagCache(); } $cache->EndDataCache($arCacheData); } } $arResult["arUser"]["urlToPostImportant"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_POST_IMPORTANT"], array("user_id"=> $arPost["AUTHOR_ID"])); $arResult["CanComment"] = ( !$arResult["ReadOnly"] && ( !isset($arResult["Post"]["ONLY_CLOSED_GROUPS"]) || !$arResult["Post"]["ONLY_CLOSED_GROUPS"] || COption::GetOptionString("socialnetwork", "work_with_closed_groups", "N") == "Y" ) ); $arResult["dest_users"] = array(); foreach ($arResult["Post"]["SPERM"] as $key => $value) { foreach($value as $kk => $vv) { $arResult["PostSrc"]["SPERM"][$key][] = $kk; if($key == "U") { $arResult["dest_users"][] = $kk; } } } $arResult["PostSrc"]["HAVE_ALL_IN_ADR"] = $arResult["Post"]["HAVE_ALL_IN_ADR"]; if ( $arParams["CHECK_PERMISSIONS_DEST"] == "N" && !CSocNetUser::IsCurrentUserModuleAdmin() && is_object($USER) ) { $arResult["Post"]["SPERM_HIDDEN"] = 0; $arGroupID = CSocNetLogTools::GetAvailableGroups( ($arResult["bExtranetUser"] ? "Y" : "N"), ($arResult["bExtranetSite"] ? "Y" : "N") ); if ( !$arResult["bExtranetUser"] && CModule::IncludeModule("extranet") ) { $arAvailableExtranetUserID = CExtranet::GetMyGroupsUsersSimple(CExtranet::GetExtranetSiteID()); } foreach($arResult["Post"]["SPERM"] as $group_code => $arBlogSPerm) { foreach($arBlogSPerm as $entity_id => $arBlogSPermDesc) { if ( ( $group_code == "SG" && !in_array($entity_id, $arGroupID) ) || ( $group_code == "DR" && $arResult["bExtranetUser"] ) || ( $group_code == "U" && isset($arUserIdVisible) && is_array($arUserIdVisible) && !in_array($entity_id, $arUserIdVisible) ) || ( $group_code == "U" && isset($arBlogSPermDesc["IS_EXTRANET"]) && $arBlogSPermDesc["IS_EXTRANET"] == "Y" && isset($arAvailableExtranetUserID) && is_array($arAvailableExtranetUserID) && !in_array($entity_id, $arAvailableExtranetUserID) ) ) { unset($arResult["Post"]["SPERM"][$group_code][$entity_id]); $arResult["Post"]["SPERM_HIDDEN"]++; $arResult["PostSrc"]["SPERM_HIDDEN"][] = $group_code.$entity_id; } } } } $arResult["CommentPerm"] = BLOG_PERMS_WRITE; if ( $arParams["CHECK_COMMENTS_PERMS"] == "Y" && !CSocNetUser::IsCurrentUserModuleAdmin() && is_object($USER) && $USER->GetId() != $arResult["Post"]["AUTHOR_ID"] && !empty($arResult["Post"]["SPERM"]['SG']) // if has sonet groups && count($arResult["Post"]["SPERM"]) === 1 // and only sonet groups ) { $arResult["CommentPerm"] = CBlogComment::GetSocNetUserPerms($arResult["Post"]["ID"], $arResult["Post"]["AUTHOR_ID"]); } $arResult["PostSrc"]["SPERM_NAME"] = $arResult["Post"]["SPERM"]; if( $arResult["PostPerm"] > BLOG_PERMS_MODERATE || ( $arResult["PostPerm"] >= BLOG_PERMS_WRITE && $arPost["AUTHOR_ID"] == $arResult["USER_ID"] ) ) { $arResult["urlToEdit"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_POST_EDIT"], array("post_id"=>$arPost["ID"], "user_id" => $arPost["AUTHOR_ID"])); if(in_array($arParams["TYPE"], array("DRAFT", "MODERATION"))) { $arResult["Post"]["urlToPost"] = $arResult["urlToEdit"]; } } if($arParams["FROM_LOG"] != "Y") { if($arResult["PostPerm"]>=BLOG_PERMS_MODERATE) { $arResult["urlToHide"] = htmlspecialcharsex($APPLICATION->GetCurPageParam("hide=Y"."&".bitrix_sessid_get(), Array("sessid", "success", "hide", "delete"))); } if($arResult["PostPerm"] >= BLOG_PERMS_FULL) { if(in_array($arParams["TYPE"], array("DRAFT", "MODERATION"))) { $arResult["urlToDelete"] = $arResult["urlToEdit"]; if(strpos($arResult["urlToDelete"], "?") === false) $arResult["urlToDelete"] .= "?"; else $arResult["urlToDelete"] .= "&"; $arResult["urlToDelete"] .= "delete_blog_post_id=#del_post_id#&ajax_blog_post_delete=Y"."&".bitrix_sessid_get(); } else $arResult["urlToDelete"] = htmlspecialcharsex($APPLICATION->GetCurPageParam("delete=Y"."&".bitrix_sessid_get(), Array("sessid", "delete", "hide", "success"))); $arResult["canDelete"] = "Y"; } } else { if($arResult["PostPerm"] >= BLOG_PERMS_FULL) { $arResult["urlToDelete"] = $arResult["urlToEdit"]; if(strpos($arResult["urlToDelete"], "?") === false) $arResult["urlToDelete"] .= "?"; else $arResult["urlToDelete"] .= "&"; $arResult["urlToDelete"] .= "delete_blog_post_id=#del_post_id#&ajax_blog_post_delete=Y"."&".bitrix_sessid_get(); $arResult["canDelete"] = "Y"; } } if( $arParams["SHOW_RATING"] == "Y" && !empty($arResult["Post"]) ) { $arResult['RATING'][$arResult["Post"]["ID"]] = ( array_key_exists("RATING_ENTITY_ID", $arParams) && intval($arParams["RATING_ENTITY_ID"]) > 0 && array_key_exists("RATING_TOTAL_VALUE", $arParams) && is_numeric($arParams["RATING_TOTAL_VALUE"]) && array_key_exists("RATING_TOTAL_VOTES", $arParams) && intval($arParams["RATING_TOTAL_VOTES"]) >= 0 && array_key_exists("RATING_TOTAL_POSITIVE_VOTES", $arParams) && intval($arParams["RATING_TOTAL_POSITIVE_VOTES"]) >= 0 && array_key_exists("RATING_TOTAL_NEGATIVE_VOTES", $arParams) && intval($arParams["RATING_TOTAL_NEGATIVE_VOTES"]) >= 0 && array_key_exists("RATING_USER_VOTE_VALUE", $arParams) && is_numeric($arParams["RATING_USER_VOTE_VALUE"]) ? array( "USER_VOTE" => $arParams["RATING_USER_VOTE_VALUE"], "USER_HAS_VOTED" => ($arParams["RATING_USER_VOTE_VALUE"] == 0 ? "N" : "Y"), "TOTAL_VOTES" => $arParams["RATING_TOTAL_VOTES"], "TOTAL_POSITIVE_VOTES" => $arParams["RATING_TOTAL_POSITIVE_VOTES"], "TOTAL_NEGATIVE_VOTES" => $arParams["RATING_TOTAL_NEGATIVE_VOTES"], "TOTAL_VALUE" => $arParams["RATING_TOTAL_VALUE"] ) : CRatings::GetRatingVoteResult('BLOG_POST', $arResult["Post"]["ID"]) ); } if ($arParams["IS_UNREAD"]) $arResult["Post"]["new"] = "Y"; if ($arParams["IS_HIDDEN"]) $arResult["Post"]["hidden"] = "Y"; $arResult["Post"]["IS_IMPORTANT"] = false; if ( is_array($arResult["POST_PROPERTIES"]["DATA"]["UF_BLOG_POST_IMPRTNT"]) && intval($arResult["POST_PROPERTIES"]["DATA"]["UF_BLOG_POST_IMPRTNT"]["VALUE"]) > 0 ) { $arResult["Post"]["IS_IMPORTANT"] = true; unset($arResult["POST_PROPERTIES"]["DATA"]["UF_BLOG_POST_IMPRTNT"]); $arResult["Post"]["IMPORTANT"] = array(); if ($USER->IsAuthorized()) { $arResult["Post"]["IMPORTANT"] = array( "COUNT" => 0, "IS_READ" => false, "USER" => array() ); $cache = new CPHPCache; $cache_path = ComponentHelper::getBlogPostCacheDir(array( 'TYPE' => 'post', 'POST_ID' => $arPost["ID"] )); $cache_id = "blog_socnet_post_read_".$USER->GetID(); if ($cache->InitCache($arParams["CACHE_TIME"], $cache_id, $cache_path)) $arResult["Post"]["IMPORTANT"] = $cache->GetVars(); else { $cache->StartDataCache($arParams["CACHE_TIME"], $cache_id, $cache_path); if (defined("BX_COMP_MANAGED_CACHE")) { $CACHE_MANAGER->StartTagCache($cache_path); $CACHE_MANAGER->RegisterTag("BLOG_POST_IMPRTNT".$arPost["ID"]); } $db_user = CUser::GetById($USER->GetId()); $arResult["Post"]["IMPORTANT"]["USER"] = $db_user->Fetch(); $db_res = CBlogUserOptions::GetList( array( "ID" => "ASC" ), array( "POST_ID" => $arResult["Post"]["ID"], "NAME" => "BLOG_POST_IMPRTNT", "VALUE" => "Y", "USER_ACTIVE" => "Y" ), array( "bCount" => true ) ); if ($db_res && ($res = $db_res->Fetch()) && $res["CNT"] > 0) { $arResult["Post"]["IMPORTANT"]["COUNT"] = $res["CNT"]; $arResult["Post"]["IMPORTANT"]["IS_READ"] = CBlogUserOptions::GetOption( $arPost["ID"], "BLOG_POST_IMPRTNT", "N", $USER->GetId() ); } if(defined("BX_COMP_MANAGED_CACHE")) $CACHE_MANAGER->EndTagCache(); $cache->EndDataCache($arResult["Post"]["IMPORTANT"]); } } } if ( isset($arResult["GRATITUDE"]) && isset($arResult["GRATITUDE"]["USERS"]) && is_array($arResult["GRATITUDE"]["USERS"]) && !empty($arResult["GRATITUDE"]["USERS"]) && isset($arUserIdVisible) && is_array($arUserIdVisible) ) { foreach($arResult["GRATITUDE"]["USERS_FULL"] as $key => $arUserTmp) { if (!in_array($arUserTmp["ID"], $arUserIdVisible)) { $arResult["GRATITUDE"]["USERS_FULL"][$key]["URL"] = false; } } if (empty($arResult["GRATITUDE"]["USERS_FULL"])) { unset($arResult["GRATITUDE"]); } } $arResult["CONTENT_ID"] = (!empty($arParams["CONTENT_ID"]) ? $arParams["CONTENT_ID"] : 'BLOG_POST-'.intval($arResult["Post"]["ID"])); if (isset($arParams["CONTENT_VIEW_CNT"])) { $arResult["CONTENT_VIEW_CNT"] = intval($arParams["CONTENT_VIEW_CNT"]); } else { if ( ($contentViewData = \Bitrix\Socialnetwork\Item\UserContentView::getViewData(array( 'contentId' => array($arResult["CONTENT_ID"]) ))) && !empty($contentViewData[$arResult["CONTENT_ID"]]) ) { $arResult["CONTENT_VIEW_CNT"] = intval($contentViewData[$arResult["CONTENT_ID"]]["CNT"]); } else { $arResult["CONTENT_VIEW_CNT"] = 0; } } } else { $arResult["FATAL_MESSAGE"] .= GetMessage("B_B_MES_NO_RIGHTS")."<br />"; $arResult["FATAL_CODE"] = "NO_RIGHTS"; } } elseif(!$arResult["bFromList"]) { $arResult["FATAL_MESSAGE"] = GetMessage("B_B_MES_NO_POST"); $arResult["FATAL_CODE"] = "NO_POST"; CHTTP::SetStatus("404 Not Found"); } } else { $arResult["FATAL_MESSAGE"] = GetMessage("B_B_MES_NO_BLOG"); $arResult["FATAL_CODE"] = "NO_BLOG"; CHTTP::SetStatus("404 Not Found"); } include_once('destination.php'); if ( !isset($arParams["RETURN_ERROR"]) || $arParams["RETURN_ERROR"] != "Y" || empty($arResult["FATAL_MESSAGE"]) ) { $this->IncludeComponentTemplate(); } if ($arParams["RETURN_DATA"] == "Y") { return array( "BLOG_DATA" => $arResult["Blog"], "POST_DATA" => $arResult["PostSrc"], "ERROR" => ( !empty($arResult["FATAL_MESSAGE"]) ? $arResult["FATAL_MESSAGE"] : false ), "ERROR_CODE" => ( !empty($arResult["FATAL_CODE"]) ? $arResult["FATAL_CODE"] : false ) ); } ?>