%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
)
);
}
?>