3require_once(
$_SERVER[
"DOCUMENT_ROOT"].
"/bitrix/modules/blog/general/blog_post.php");
16 if (mb_substr(
$key, 0, 1) ==
"=")
18 $arFields1[mb_substr(
$key, 1)] = $value;
38 !array_key_exists(
"MODULE_ID",
$arFields[
"ATTACH_IMG"])
39 ||
$arFields[
"ATTACH_IMG"][
"MODULE_ID"] ==
''
42 $arFields[
"ATTACH_IMG"][
"MODULE_ID"] =
"blog";
50 CFile::SaveForDB(
$arFields,
"ATTACH_IMG", $prefix);
52 $arInsert =
$DB->PrepareInsert(
"b_blog_post",
$arFields);
54 foreach ($arFields1 as
$key => $value)
56 if ($arInsert[0] <>
'')
59 if ($arInsert[1] <>
'')
61 $arInsert[1] .= $value;
65 if ($arInsert[0] <>
'')
68 "INSERT INTO b_blog_post(".$arInsert[0].
") ".
69 "VALUES(".$arInsert[1].
")";
72 $ID = intval(
$DB->LastID());
74 foreach(
GetModuleEvents(
"blog",
"OnBeforePostUserFieldUpdate",
true) as $arEvent)
89 if(array_key_exists(
"SOCNET_RIGHTS",
$arFields))
99 if (CModule::IncludeModule(
"search"))
102 $arPost[
"DATE_PUBLISHED"] ==
"Y"
109 if($arBlog[
"SEARCH_INDEX"] ==
"Y")
134 $arBlog[
"SOCNET_GROUP_ID"]
140 $arBlog[
"USE_SOCNET"] ==
"Y"
141 && CModule::IncludeModule(
"extranet")
144 $arPostSiteExt = CExtranet::GetSitesByLogDestinations(
$arFields[
"SC_PERM"]);
145 foreach($arPostSiteExt as $lid)
147 if (!array_key_exists($lid, $arPostSite))
149 $arPostSite[$lid] = str_replace(
150 array(
"#user_id#",
"#post_id#"),
151 array($arBlog[
"OWNER_ID"], $arPost[
"ID"]),
152 COption::GetOptionString(
"socialnetwork",
"userblogpost_page",
false, $lid)
158 if($arPost[
"CATEGORY_ID"] <>
'')
160 $arC = explode(
",", $arPost[
"CATEGORY_ID"]);
165 $arTag[] = $arCategory[
"NAME"];
167 $tag = implode(
",", $arTag);
173 if(intval($arPost[
"AUTHOR_ID"]) > 0)
175 $dbUser = CUser::GetByID($arPost[
"AUTHOR_ID"]);
176 if($arUser = $dbUser->Fetch())
179 "NAME" => $arUser[
"NAME"],
180 "LAST_NAME" => $arUser[
"LAST_NAME"],
181 "SECOND_NAME" => $arUser[
"SECOND_NAME"],
182 "LOGIN" => $arUser[
"LOGIN"],
184 $authorName = CUser::FormatName(CSite::GetNameFormat(), $arTmpUser,
false,
false);
185 if($authorName <>
'')
187 $searchContent .=
"\r\n".$authorName;
192 $arSearchIndex =
array(
193 "SITE_ID" => $arPostSite,
194 "LAST_MODIFIED" => $arPost[
"DATE_PUBLISH"],
196 "PARAM2" => $arPost[
"BLOG_ID"],
197 "PARAM3" => $arPost[
"ID"],
198 "PERMISSIONS" =>
array(2),
202 "USER_ID" => $arPost[
"AUTHOR_ID"],
203 "ENTITY_TYPE_ID" =>
"BLOG_POST",
204 "ENTITY_ID" => $arPost[
"ID"],
207 if($arBlog[
"USE_SOCNET"] ==
"Y")
234 $arFields1 =
array();
237 if (mb_substr(
$key, 0, 1) ==
"=")
239 $arFields1[mb_substr(
$key, 1)] = $value;
249 foreach(
GetModuleEvents(
"blog",
"OnBeforePostUpdate",
true) as $arEvent)
260 !array_key_exists(
"MODULE_ID",
$arFields[
"ATTACH_IMG"])
261 ||
$arFields[
"ATTACH_IMG"][
"MODULE_ID"] ==
''
263 $arFields[
"ATTACH_IMG"][
"MODULE_ID"] =
"blog";
267 $prefix .=
"/".$arFields[
"URL"];
268 CFile::SaveForDB(
$arFields,
"ATTACH_IMG", $prefix);
271 $strUpdate =
$DB->PrepareUpdate(
"b_blog_post",
$arFields);
273 foreach ($arFields1 as
$key => $value)
275 if ($strUpdate <>
'')
277 $strUpdate .=
$key.
"=".$value.
" ";
280 if ($strUpdate <>
'')
285 "UPDATE b_blog_post SET ".
287 "WHERE ID = ".$ID.
" ";
290 unset(static::$arBlogPostCache[
$ID]);
292 foreach(
GetModuleEvents(
"blog",
"OnBeforePostUserFieldUpdate",
true) as $arEvent)
305 if($arNewPost[
"PUBLISH_STATUS"] != $arOldPost[
"PUBLISH_STATUS"] || $arNewPost[
"BLOG_ID"] != $arOldPost[
"BLOG_ID"])
308 if ($arNewPost[
"BLOG_ID"] != $arOldPost[
"BLOG_ID"])
316 if(array_key_exists(
"SOCNET_RIGHTS",
$arFields))
329 && CModule::IncludeModule(
"search")
342 || $arBlog[
"SEARCH_INDEX"] !=
"Y"
354 $arNewPost[
"DATE_PUBLISHED"] ==
"Y"
357 && $arBlog[
"SEARCH_INDEX"] ==
"Y"
366 elseif($arNewPost[
"PATH"] <>
'')
368 $arNewPost[
"PATH"] = (
369 $arNewPost[
"CODE"] <>
''
370 ? str_replace(
"#post_id#", $arNewPost[
"CODE"], $arNewPost[
"PATH"])
371 : str_replace(
"#post_id#",
$ID, $arNewPost[
"PATH"])
373 $arPostSite =
array($arGroup[
"SITE_ID"] => $arNewPost[
"PATH"]);
384 $arBlog[
"SOCNET_GROUP_ID"]
390 $arBlog[
"USE_SOCNET"] ==
"Y"
391 && CModule::IncludeModule(
"extranet")
394 $arPostSiteExt = CExtranet::GetSitesByLogDestinations(
$arFields[
"SC_PERM"] ??
null);
395 foreach($arPostSiteExt as $lid)
397 if (!array_key_exists($lid, $arPostSite))
399 $arPostSite[$lid] = str_replace(
400 array(
"#user_id#",
"#post_id#"),
401 array($arBlog[
"OWNER_ID"], $arNewPost[
"ID"]),
402 COption::GetOptionString(
"socialnetwork",
"userblogpost_page",
false, $lid)
408 if($arNewPost[
"CATEGORY_ID"] <>
'')
410 $arC = explode(
",", $arNewPost[
"CATEGORY_ID"]);
415 $arTag[] = $arCategory[
"NAME"];
417 $tag = implode(
",", $arTag);
421 $searchContent .=
"\r\n" .
$USER_FIELD_MANAGER->OnSearchIndex(
"BLOG_POST", $arNewPost[
"ID"]);
424 if(intval($arNewPost[
"AUTHOR_ID"]) > 0)
426 $dbUser = CUser::GetByID($arNewPost[
"AUTHOR_ID"]);
427 if($arUser = $dbUser->Fetch())
430 "NAME" => $arUser[
"NAME"],
431 "LAST_NAME" => $arUser[
"LAST_NAME"],
432 "SECOND_NAME" => $arUser[
"SECOND_NAME"],
433 "LOGIN" => $arUser[
"LOGIN"],
435 $authorName = CUser::FormatName(CSite::GetNameFormat(), $arTmpUser,
false,
false);
436 if($authorName <>
'')
438 $searchContent .=
"\r\n".$authorName;
443 $arSearchIndex =
array(
444 "SITE_ID" => $arPostSite,
445 "LAST_MODIFIED" => $arNewPost[
"DATE_PUBLISH"],
447 "PARAM2" => $arNewPost[
"BLOG_ID"],
448 "PARAM3" => $arNewPost[
"ID"],
449 "PERMISSIONS" =>
array(2),
453 "USER_ID" => $arNewPost[
"AUTHOR_ID"],
454 "ENTITY_TYPE_ID" =>
"BLOG_POST",
455 "ENTITY_ID" => $arNewPost[
"ID"],
458 $bIndexComment =
false;
459 if($arBlog[
"USE_SOCNET"] ==
"Y")
463 $arSearchIndex[
"PERMISSIONS"] =
$arFields[
"SC_PERM"];
466 $bIndexComment =
true;
471 $arSearchIndex[
"PERMISSIONS"] = CBlogPost::GetSocnetPermsCode(
$ID);
484 $arParamsComment = Array(
485 "BLOG_ID" => $arBlog[
"ID"],
487 "SITE_ID" => $arGroup[
"SITE_ID"],
488 "PATH" => $arPostSite[$arGroup[
"SITE_ID"]].
"?commentId=#comment_id##com#comment_id#",
489 "BLOG_URL" => $arBlog[
"URL"],
490 "OWNER_ID" => $arBlog[
"OWNER_ID"],
491 "SOCNET_GROUP_ID" => $arBlog[
"SOCNET_GROUP_ID"],
492 "USE_SOCNET" => $arBlog[
"USE_SOCNET"],
502 if(defined(
"BX_COMP_MANAGED_CACHE"))
518 !empty(static::$arBlogPostCache[
$ID])
519 &&
is_set(static::$arBlogPostCache[
$ID],
"ID")
522 return static::$arBlogPostCache[
$ID];
529 "SELECT P.*, CASE WHEN P.DATE_PUBLISH <= NOW() THEN 'Y' ELSE 'N' END as DATE_PUBLISHED, ".
530 " ".$DB->DateToCharFunction(
"P.DATE_CREATE",
"FULL").
" as DATE_CREATE, ".
531 " ".$DB->DateToCharFunction(
"P.DATE_PUBLISH",
"FULL").
" as DATE_PUBLISH ".
532 "FROM b_blog_post P ".
555 $arOrder = [
"ID" =>
"DESC"],
558 $arNavStartParams =
false,
563 static $blogPostEventIdList =
null;
566 $obUserFieldsSql->
SetEntity(
"BLOG_POST",
"P.ID");
567 $obUserFieldsSql->SetSelect($arSelectFields);
569 $obUserFieldsSql->SetOrder($arOrder);
573 if (mb_strlen(
$arFilter[
"DATE_PUBLISH_YEAR"]) == 2)
574 $arFilter[
"DATE_PUBLISH_YEAR"] =
"20".$arFilter[
"DATE_PUBLISH_YEAR"];
586 if (mb_strlen(
$arFilter[
"DATE_PUBLISH_YEAR"]) == 2)
587 $arFilter[
"DATE_PUBLISH_YEAR"] =
"20".$arFilter[
"DATE_PUBLISH_YEAR"];
588 $date1 = mktime(0, 0, 0,
$arFilter[
"DATE_PUBLISH_MONTH"], 1,
$arFilter[
"DATE_PUBLISH_YEAR"]);
589 $date2 = mktime(0, 0, 0,
$arFilter[
"DATE_PUBLISH_MONTH"] + 1, 1,
$arFilter[
"DATE_PUBLISH_YEAR"]);
598 if (mb_strlen(
$arFilter[
"DATE_PUBLISH_YEAR"]) == 2)
599 $arFilter[
"DATE_PUBLISH_YEAR"] =
"20".$arFilter[
"DATE_PUBLISH_YEAR"];
600 $date1 = mktime(0, 0, 0, 1, 1,
$arFilter[
"DATE_PUBLISH_YEAR"]);
601 $date2 = mktime(0, 0, 0, 1, 1,
$arFilter[
"DATE_PUBLISH_YEAR"] + 1);
608 if (
count($arSelectFields) <= 0)
609 $arSelectFields =
array(
"ID",
"TITLE",
"BLOG_ID",
"AUTHOR_ID",
"PREVIEW_TEXT",
"PREVIEW_TEXT_TYPE",
"DETAIL_TEXT",
"DETAIL_TEXT_TYPE",
"DATE_CREATE",
"DATE_PUBLISH",
"KEYWORDS",
"PUBLISH_STATUS",
"ATRIBUTE",
"ATTACH_IMG",
"ENABLE_TRACKBACK",
"ENABLE_COMMENTS",
"VIEWS",
"NUM_COMMENTS",
"NUM_COMMENTS_ALL",
"CODE",
"MICRO");
610 if(in_array(
"*", $arSelectFields))
611 $arSelectFields =
array(
"ID",
"TITLE",
"BLOG_ID",
"AUTHOR_ID",
"PREVIEW_TEXT",
"PREVIEW_TEXT_TYPE",
"DETAIL_TEXT",
"DETAIL_TEXT_TYPE",
"DATE_CREATE",
"DATE_PUBLISH",
"KEYWORDS",
"PUBLISH_STATUS",
"ATRIBUTE",
"ATTACH_IMG",
"ENABLE_TRACKBACK",
"ENABLE_COMMENTS",
"NUM_COMMENTS",
"NUM_COMMENTS_ALL",
"NUM_TRACKBACKS",
"VIEWS",
"FAVORITE_SORT",
"CATEGORY_ID",
"PERMS",
"AUTHOR_LOGIN",
"AUTHOR_NAME",
"AUTHOR_LAST_NAME",
"AUTHOR_SECOND_NAME",
"AUTHOR_EMAIL",
"AUTHOR",
"BLOG_USER_ALIAS",
"BLOG_USER_AVATAR",
"BLOG_URL",
"BLOG_OWNER_ID",
"BLOG_ACTIVE",
"BLOG_GROUP_ID",
"BLOG_GROUP_SITE_ID",
"BLOG_SOCNET_GROUP_ID",
"BLOG_ENABLE_RSS",
"BLOG_USE_SOCNET",
"CODE",
"MICRO");
613 if((array_key_exists(
"BLOG_GROUP_SITE_ID",
$arFilter) || in_array(
"BLOG_GROUP_SITE_ID", $arSelectFields)) && !in_array(
"BLOG_URL", $arSelectFields))
614 $arSelectFields[] =
"BLOG_URL";
618 "ID" =>
array(
"FIELD" =>
"P.ID",
"TYPE" =>
"int"),
619 "TITLE" =>
array(
"FIELD" =>
"P.TITLE",
"TYPE" =>
"string"),
620 "CODE" =>
array(
"FIELD" =>
"P.CODE",
"TYPE" =>
"string"),
621 "BLOG_ID" =>
array(
"FIELD" =>
"P.BLOG_ID",
"TYPE" =>
"int"),
622 "AUTHOR_ID" =>
array(
"FIELD" =>
"P.AUTHOR_ID",
"TYPE" =>
"int"),
623 "PREVIEW_TEXT" =>
array(
"FIELD" =>
"P.PREVIEW_TEXT",
"TYPE" =>
"string"),
624 "PREVIEW_TEXT_TYPE" =>
array(
"FIELD" =>
"P.PREVIEW_TEXT_TYPE",
"TYPE" =>
"string"),
625 "DETAIL_TEXT" =>
array(
"FIELD" =>
"P.DETAIL_TEXT",
"TYPE" =>
"string"),
626 "DETAIL_TEXT_TYPE" =>
array(
"FIELD" =>
"P.DETAIL_TEXT_TYPE",
"TYPE" =>
"string"),
627 "DATE_CREATE" =>
array(
"FIELD" =>
"P.DATE_CREATE",
"TYPE" =>
"datetime"),
628 "DATE_PUBLISH" =>
array(
"FIELD" =>
"P.DATE_PUBLISH",
"TYPE" =>
"datetime"),
629 "KEYWORDS" =>
array(
"FIELD" =>
"P.KEYWORDS",
"TYPE" =>
"string"),
630 "PUBLISH_STATUS" =>
array(
"FIELD" =>
"P.PUBLISH_STATUS",
"TYPE" =>
"string"),
631 "ATRIBUTE" =>
array(
"FIELD" =>
"P.ATRIBUTE",
"TYPE" =>
"string"),
632 "ATTACH_IMG" =>
array(
"FIELD" =>
"P.ATTACH_IMG",
"TYPE" =>
"int"),
633 "ENABLE_TRACKBACK" =>
array(
"FIELD" =>
"P.ENABLE_TRACKBACK",
"TYPE" =>
"string"),
634 "ENABLE_COMMENTS" =>
array(
"FIELD" =>
"P.ENABLE_COMMENTS",
"TYPE" =>
"string"),
635 "NUM_COMMENTS" =>
array(
"FIELD" =>
"P.NUM_COMMENTS",
"TYPE" =>
"int"),
636 "NUM_COMMENTS_ALL" =>
array(
"FIELD" =>
"P.NUM_COMMENTS_ALL",
"TYPE" =>
"int"),
637 "NUM_TRACKBACKS" =>
array(
"FIELD" =>
"P.NUM_TRACKBACKS",
"TYPE" =>
"int"),
638 "VIEWS" =>
array(
"FIELD" =>
"P.VIEWS",
"TYPE" =>
"int"),
639 "FAVORITE_SORT" =>
array(
"FIELD" =>
"P.FAVORITE_SORT",
"TYPE" =>
"int"),
640 "CATEGORY_ID" =>
array(
"FIELD" =>
"P.CATEGORY_ID",
"TYPE" =>
"string"),
641 "PATH" =>
array(
"FIELD" =>
"P.PATH",
"TYPE" =>
"string"),
642 "MICRO" =>
array(
"FIELD" =>
"P.MICRO",
"TYPE" =>
"string"),
643 "HAS_IMAGES" =>
array(
"FIELD" =>
"P.HAS_IMAGES",
"TYPE" =>
"string"),
644 "HAS_PROPS" =>
array(
"FIELD" =>
"P.HAS_PROPS",
"TYPE" =>
"string"),
645 "HAS_TAGS" =>
array(
"FIELD" =>
"P.HAS_TAGS",
"TYPE" =>
"string"),
646 "HAS_COMMENT_IMAGES" =>
array(
"FIELD" =>
"P.HAS_COMMENT_IMAGES",
"TYPE" =>
"string"),
647 "HAS_SOCNET_ALL" =>
array(
"FIELD" =>
"P.HAS_SOCNET_ALL",
"TYPE" =>
"string"),
648 "SEO_TITLE" =>
array(
"FIELD" =>
"P.SEO_TITLE",
"TYPE" =>
"string"),
649 "SEO_TAGS" =>
array(
"FIELD" =>
"P.SEO_TAGS",
"TYPE" =>
"string"),
650 "SEO_DESCRIPTION" =>
array(
"FIELD" =>
"P.SEO_DESCRIPTION",
"TYPE" =>
"string"),
654 "AUTHOR_LOGIN" =>
array(
"FIELD" =>
"U.LOGIN",
"TYPE" =>
"string",
"FROM" =>
"LEFT JOIN b_user U ON (P.AUTHOR_ID = U.ID)"),
655 "AUTHOR_NAME" =>
array(
"FIELD" =>
"U.NAME",
"TYPE" =>
"string",
"FROM" =>
"LEFT JOIN b_user U ON (P.AUTHOR_ID = U.ID)"),
656 "AUTHOR_LAST_NAME" =>
array(
"FIELD" =>
"U.LAST_NAME",
"TYPE" =>
"string",
"FROM" =>
"LEFT JOIN b_user U ON (P.AUTHOR_ID = U.ID)"),
657 "AUTHOR_SECOND_NAME" =>
array(
"FIELD" =>
"U.SECOND_NAME",
"TYPE" =>
"string",
"FROM" =>
"LEFT JOIN b_user U ON (P.AUTHOR_ID = U.ID)"),
658 "AUTHOR_EMAIL" =>
array(
"FIELD" =>
"U.EMAIL",
"TYPE" =>
"string",
"FROM" =>
"LEFT JOIN b_user U ON (P.AUTHOR_ID = U.ID)"),
659 "AUTHOR" =>
array(
"FIELD" =>
"U.LOGIN, U.NAME, U.LAST_NAME, U.EMAIL, U.ID",
"WHERE_ONLY" =>
"Y",
"TYPE" =>
"string",
"FROM" =>
"LEFT JOIN b_user U ON (P.AUTHOR_ID = U.ID)"),
661 "CATEGORY_NAME" =>
array(
"FIELD" =>
"PCN.NAME",
"TYPE" =>
"string",
"FROM" =>
"LEFT JOIN b_blog_category PCN ON (P.CATEGORY_ID = PCN.ID)"),
662 "CATEGORY_ID_F" =>
array(
"FIELD" =>
"PC.CATEGORY_ID",
"TYPE" =>
"int",
"FROM" =>
"LEFT JOIN b_blog_post_category PC ON (PC.POST_ID = P.ID)"),
664 "BLOG_USER_ALIAS" =>
array(
"FIELD" =>
"BU.ALIAS",
"TYPE" =>
"string",
"FROM" =>
"LEFT JOIN b_blog_user BU ON (P.AUTHOR_ID = BU.USER_ID)"),
665 "BLOG_USER_AVATAR" =>
array(
"FIELD" =>
"BU.AVATAR",
"TYPE" =>
"int",
"FROM" =>
"LEFT JOIN b_blog_user BU ON (P.AUTHOR_ID = BU.USER_ID)"),
667 "BLOG_URL" =>
array(
"FIELD" =>
"B.URL",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_blog B ON (P.BLOG_ID = B.ID)"),
668 "BLOG_OWNER_ID" =>
array(
"FIELD" =>
"B.OWNER_ID",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_blog B ON (P.BLOG_ID = B.ID)"),
669 "BLOG_ACTIVE" =>
array(
"FIELD" =>
"B.ACTIVE",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_blog B ON (P.BLOG_ID = B.ID)"),
670 "BLOG_GROUP_ID" =>
array(
"FIELD" =>
"B.GROUP_ID",
"TYPE" =>
"int",
"FROM" =>
"INNER JOIN b_blog B ON (P.BLOG_ID = B.ID)"),
671 "BLOG_ENABLE_RSS" =>
array(
"FIELD" =>
"B.ENABLE_RSS",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_blog B ON (P.BLOG_ID = B.ID)"),
672 "BLOG_USE_SOCNET" =>
array(
"FIELD" =>
"B.USE_SOCNET",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_blog B ON (P.BLOG_ID = B.ID)"),
673 "BLOG_NAME" =>
array(
"FIELD" =>
"B.NAME",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_blog B ON (P.BLOG_ID = B.ID)"),
675 "BLOG_GROUP_SITE_ID" =>
array(
"FIELD" =>
"BG.SITE_ID",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_blog_group BG ON (B.GROUP_ID = BG.ID)"),
677 "SOCNET_BLOG_READ" =>
array(
"FIELD" =>
"BSR.BLOG_ID",
"TYPE" =>
"int",
"FROM" =>
"INNER JOIN b_blog_socnet BSR ON (P.BLOG_ID = BSR.BLOG_ID)"),
678 "BLOG_SOCNET_GROUP_ID" =>
array(
"FIELD" =>
"B.SOCNET_GROUP_ID",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_blog B ON (P.BLOG_ID = B.ID)"),
679 "SOCNET_GROUP_ID" =>
array(
"FIELD" =>
"SR1.ENTITY_ID",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_blog_socnet_rights SR1 ON (P.ID = SR1.POST_ID AND SR1.ENTITY_TYPE = 'SG')"),
681 "COMMENT_ID" =>
array(
"FIELD" =>
"PC.ID",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_blog_comment PC ON (P.ID = PC.POST_ID)"),
684 $unreadImportantFilter =
false;
685 if (\
Bitrix\Main\Loader::includeModule(
'socialnetwork'))
687 if ($blogPostEventIdList ===
null)
689 $blogPostLivefeedProvider = new \Bitrix\Socialnetwork\Livefeed\BlogPost;
690 $blogPostEventIdList = $blogPostLivefeedProvider->getEventId();
693 $arFields[
"SOCNET_SITE_ID"] =
array(
"FIELD" =>
"SLS.SITE_ID",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_sonet_log BSL ON (BSL.EVENT_ID in ('".implode(
"', '", $blogPostEventIdList).
"') AND BSL.SOURCE_ID = P.ID) ".
694 "LEFT JOIN b_sonet_log_site SLS ON BSL.ID = SLS.LOG_ID");
701 $k = $key_res[
"FIELD"];
703 $k ==
'POST_PARAM_BLOG_POST_IMPRTNT'
704 && $key_res[
'NEGATIVE'] ==
'Y'
705 && $key_res[
'OR_NULL'] ==
'N'
708 $unreadImportantFilter =
true;
711 elseif (mb_strpos(
$k,
"POST_PARAM_") === 0)
713 $user_id = 0; $ii++; $pref =
"BPP".$ii;
716 $user_id = (isset(
$val[
"USER_ID"]) ? intval(
$val[
"USER_ID"]) : 0);
719 $arSelectFields[] =
$k;
721 "FROM" =>
"LEFT JOIN b_blog_post_param ".$pref.
" ON (P.ID = ".$pref.
".POST_ID AND ".$pref.
".USER_ID".
722 ($user_id <= 0 ?
" IS NULL" :
"=".$user_id).
" AND ".$pref.
".NAME='".
$GLOBALS[
"DB"]->ForSql(mb_substr(
$k, 11), 50).
"')");
726 if(isset(
$arFilter[
"GROUP_CHECK_PERMS"]))
728 if(is_array(
$arFilter[
"GROUP_CHECK_PERMS"]))
735 "FIELD" =>
"BUGP".
$val.
".PERMS",
737 "FROM" =>
"LEFT JOIN b_blog_user_group_perms BUGP".$val.
"
738 ON (P.BLOG_ID = BUGP".
$val.
".BLOG_ID
739 AND P.ID = BUGP".
$val.
".POST_ID
740 AND BUGP".
$val.
".USER_GROUP_ID = ".
$val.
"
743 $arSelectFields[] =
"POST_PERM_".$val;
749 if(intval(
$arFilter[
"GROUP_CHECK_PERMS"])>0)
751 $arFields[
"POST_PERM_".$arFilter[
"GROUP_CHECK_PERMS"]] = Array(
752 "FIELD" =>
"BUGP.PERMS",
754 "FROM" =>
"LEFT JOIN b_blog_user_group_perms BUGP
755 ON (P.BLOG_ID = BUGP.BLOG_ID
756 AND P.ID = BUGP.POST_ID
757 AND BUGP.USER_GROUP_ID = ".
$arFilter[
"GROUP_CHECK_PERMS"].
"
760 $arSelectFields[] =
"POST_PERM_".$arFilter[
"GROUP_CHECK_PERMS"];
768 in_array(
"RATING_TOTAL_VALUE", $arSelectFields) ||
769 in_array(
"RATING_TOTAL_VOTES", $arSelectFields) ||
770 in_array(
"RATING_TOTAL_POSITIVE_VOTES", $arSelectFields) ||
771 in_array(
"RATING_TOTAL_NEGATIVE_VOTES", $arSelectFields) ||
772 array_key_exists(
"RATING_TOTAL_VALUE", $arOrder) ||
773 array_key_exists(
"RATING_TOTAL_VOTES", $arOrder) ||
774 array_key_exists(
"RATING_TOTAL_POSITIVE_VOTES", $arOrder) ||
775 array_key_exists(
"RATING_TOTAL_NEGATIVE_VOTES", $arOrder)
778 $arSelectFields[] =
'RATING_TOTAL_VALUE';
779 $arSelectFields[] =
'RATING_TOTAL_VOTES';
780 $arSelectFields[] =
'RATING_TOTAL_POSITIVE_VOTES';
781 $arSelectFields[] =
'RATING_TOTAL_NEGATIVE_VOTES';
782 $arFields[
"RATING_TOTAL_VALUE"] =
array(
"FIELD" =>
$DB->IsNull(
'RV.TOTAL_VALUE',
'0'),
"ORDER" =>
"RATING_TOTAL_VALUE",
"TYPE" =>
"double",
"FROM" =>
"LEFT JOIN b_rating_voting RV ON ( RV.ENTITY_TYPE_ID = 'BLOG_POST' AND RV.ENTITY_ID = P.ID )");
783 $arFields[
"RATING_TOTAL_VOTES"] =
array(
"FIELD" =>
$DB->IsNull(
'RV.TOTAL_VOTES',
'0'),
"ORDER" =>
"RATING_TOTAL_VALUE",
"TYPE" =>
"int",
"FROM" =>
"LEFT JOIN b_rating_voting RV ON ( RV.ENTITY_TYPE_ID = 'BLOG_POST' AND RV.ENTITY_ID = P.ID )");
784 $arFields[
"RATING_TOTAL_POSITIVE_VOTES"] =
array(
"FIELD" =>
$DB->IsNull(
'RV.TOTAL_POSITIVE_VOTES',
'0'),
"ORDER" =>
"RATING_TOTAL_POSITIVE_VOTES",
"TYPE" =>
"int",
"FROM" =>
"LEFT JOIN b_rating_voting RV ON ( RV.ENTITY_TYPE_ID = 'BLOG_POST' AND RV.ENTITY_ID = P.ID )");
785 $arFields[
"RATING_TOTAL_NEGATIVE_VOTES"] =
array(
"FIELD" =>
$DB->IsNull(
'RV.TOTAL_NEGATIVE_VOTES',
'0'),
"ORDER" =>
"RATING_TOTAL_POSITIVE_VOTES",
"TYPE" =>
"int",
"FROM" =>
"LEFT JOIN b_rating_voting RV ON ( RV.ENTITY_TYPE_ID = 'BLOG_POST' AND RV.ENTITY_ID = P.ID )");
787 if (in_array(
"RATING_USER_VOTE_VALUE", $arSelectFields))
792 $arSelectFields[] =
'RATING_USER_VOTE_VALUE';
793 $arFields[
"RATING_USER_VOTE_VALUE"] = Array(
"FIELD" =>
$DB->IsNull(
'RVV.VALUE',
'0'),
"ORDER" =>
"RATING_USER_VOTE_VALUE",
"TYPE" =>
"double",
"FROM" =>
"LEFT JOIN b_rating_vote RVV ON RVV.ENTITY_TYPE_ID = 'BLOG_POST' AND RVV.ENTITY_ID = P.ID AND RVV.USER_ID = ".intval(
$USER->GetId()));
797 array_key_exists(
"DATE_PUBLISH", $arOrder)
798 && !in_array(
"DATE_PUBLISH", $arSelectFields)
801 $arSelectFields[] =
'DATE_PUBLISH';
804 array_key_exists(
"VIEWS", $arOrder)
805 && !in_array(
"VIEWS", $arSelectFields)
808 $arSelectFields[] =
'VIEWS';
812 $strSqlUFFilter =
'';
813 $bNeedDistinct =
false;
814 $blogModulePermissions =
$APPLICATION->GetGroupRight(
"blog");
815 if ($blogModulePermissions <
"W")
819 $user_id =
$USER->GetID();
829 $strUserGroups =
"0";
830 foreach($arUserGroups as $v)
831 $strUserGroups .=
",".intval($v);
833 $arFields[
"PERMS"] =
array(
"FIELD" =>
"UGP.PERMS",
"TYPE" =>
"string",
"FROM" =>
"INNER JOIN b_blog_user_group_perms UGP ON (P.ID = UGP.POST_ID AND P.BLOG_ID = UGP.BLOG_ID AND UGP.USER_GROUP_ID IN (".$strUserGroups.
") AND UGP.PERMS_TYPE = '".
BLOG_PERMS_POST.
"')");
834 $bNeedDistinct =
true;
846 if(array_key_exists(
"SOCNET_GROUP_ID",
$arFilter))
847 $bNeedDistinct =
true;
848 if(array_key_exists(
"FOR_USER",
$arFilter))
852 if((
$arFilter[
"FOR_USER_TYPE"] ??
'') ==
"ALL")
855 " INNER JOIN b_blog_socnet_rights SR ON (P.ID = SR.POST_ID) ".
856 " LEFT JOIN b_user_access UA ON (UA.ACCESS_CODE = SR.ENTITY AND UA.USER_ID = ".intval(
$arFilter[
"FOR_USER"]).
") ";
857 if($arSqls[
"WHERE"] <>
'')
858 $arSqls[
"WHERE"] .=
" AND ";
859 $arSqls[
"WHERE"] .=
" (SR.ENTITY_TYPE != 'SG') AND ".
860 " (SR.ENTITY = 'U".intval(
$arFilter[
"FOR_USER"]).
"' OR (UA.USER_ID is not NULL AND SR.ENTITY_TYPE = 'DR') OR P.AUTHOR_ID = '".intval(
$arFilter[
"FOR_USER"]).
"')";
865 " INNER JOIN b_blog_socnet_rights SR ON (P.ID = SR.POST_ID) ".
866 " LEFT JOIN b_user_access UA ON (UA.ACCESS_CODE = SR.ENTITY AND UA.USER_ID = ".intval(
$arFilter[
"FOR_USER"]).
") ";
867 if($arSqls[
"WHERE"] <>
'')
868 $arSqls[
"WHERE"] .=
" AND ";
869 $arSqls[
"WHERE"] .=
" (SR.ENTITY = 'U".intval(
$arFilter[
"FOR_USER"]).
"' OR (UA.USER_ID is not NULL AND SR.ENTITY_TYPE = 'DR')) ";
874 " INNER JOIN b_blog_socnet_rights SR ON (P.ID = SR.POST_ID) " .
875 " LEFT JOIN b_user_access UA ON (UA.ACCESS_CODE = SR.ENTITY AND UA.USER_ID = ".intval(
$arFilter[
"FOR_USER"]).
") ";
876 if($arSqls[
"WHERE"] <>
'')
877 $arSqls[
"WHERE"] .=
" AND ";
878 $arSqls[
"WHERE"] .=
" (UA.USER_ID is not NULL AND SR.ENTITY_TYPE = 'DR') ";
882 $currentExtranetSite = (
887 if($arSqls[
"WHERE"] <>
'')
888 $arSqls[
"WHERE"] .=
" AND ";
892 "FROM b_blog_socnet_rights SRX ".
893 "LEFT JOIN b_user_access UA ON (UA.ACCESS_CODE = SRX.ENTITY AND UA.USER_ID = ".intval(
$arFilter[
"FOR_USER"]).
") ".
894 "WHERE P.ID = SRX.POST_ID
896 ".($currentExtranetSite ?
"" :
" (SRX.ENTITY = 'AU') OR ").
"
897 (UA.ACCESS_CODE = SRX.ENTITY AND UA.USER_ID = ".intval(
$arFilter[
"FOR_USER"]).
") ".
898 ($currentExtranetSite ?
" AND NOT (SRX.ENTITY = 'G2') " :
"").
906 " INNER JOIN b_blog_socnet_rights SR ON (P.ID = SR.POST_ID) ".
907 " INNER JOIN b_user_access UA ON (UA.ACCESS_CODE = SR.ENTITY AND UA.USER_ID = 0)";
909 $bNeedDistinct =
true;
912 if ($unreadImportantFilter)
914 if($arSqls[
"WHERE"] <>
'')
915 $arSqls[
"WHERE"] .=
" AND ";
918 "SELECT BPPX.POST_ID ".
919 "FROM b_blog_post_param BPPX ".
920 " WHERE P.ID = BPPX.POST_ID AND BPPX.USER_ID = ".intval(
$arFilter[
"FOR_USER"]).
" AND BPPX.NAME = 'BLOG_POST_IMPRTNT' AND BPPX.VALUE = 'Y' ".
925 $arSqls[
"SELECT"] = str_replace(
"%%_DISTINCT_%%",
"DISTINCT", $arSqls[
"SELECT"]);
927 $arSqls[
"SELECT"] = str_replace(
"%%_DISTINCT_%%",
"", $arSqls[
"SELECT"]);
929 $r = $obUserFieldsSql->GetFilter();
931 $strSqlUFFilter =
" (".$r.
") ";
933 if (is_array($arGroupBy) &&
count($arGroupBy)==0)
936 "SELECT ".$arSqls[
"SELECT"].
" ".
937 $obUserFieldsSql->GetSelect().
" ".
938 "FROM b_blog_post P ".
939 " ".$arSqls[
"FROM"].
" ".
940 $obUserFieldsSql->GetJoin(
"P.ID").
" ";
941 if ($arSqls[
"WHERE"] <>
'')
942 $strSql .=
"WHERE ".$arSqls[
"WHERE"].
" ";
943 if($arSqls[
"WHERE"] <>
'' && $strSqlUFFilter <>
'')
944 $strSql .=
" AND ".$strSqlUFFilter.
" ";
945 elseif($arSqls[
"WHERE"] ==
'' && $strSqlUFFilter <>
'')
946 $strSql .=
" WHERE ".$strSqlUFFilter.
" ";
948 if ($arSqls[
"GROUPBY"] <>
'')
949 $strSql .=
"GROUP BY ".$arSqls[
"GROUPBY"].
" ";
961 "SELECT ".$arSqls[
"SELECT"].
" ".
962 $obUserFieldsSql->GetSelect().
" ".
963 "FROM b_blog_post P ".
964 " ".$arSqls[
"FROM"].
" ".
965 $obUserFieldsSql->GetJoin(
"P.ID").
" ";
966 if ($arSqls[
"WHERE"] <>
'')
967 $strSql .=
"WHERE ".$arSqls[
"WHERE"].
" ";
968 if($arSqls[
"WHERE"] <>
'' && $strSqlUFFilter <>
'')
969 $strSql .=
" AND ".$strSqlUFFilter.
" ";
970 elseif($arSqls[
"WHERE"] ==
'' && $strSqlUFFilter <>
'')
971 $strSql .=
" WHERE ".$strSqlUFFilter.
" ";
973 if ($arSqls[
"GROUPBY"] <>
'')
974 $strSql .=
"GROUP BY ".$arSqls[
"GROUPBY"].
" ";
975 if ($arSqls[
"ORDERBY"] <>
'')
976 $strSql .=
"ORDER BY ".$arSqls[
"ORDERBY"].
" ";
978 is_array($arNavStartParams)
979 && intval($arNavStartParams[
"nTopCount"] ?? 0) <= 0
983 "SELECT COUNT(DISTINCT P.ID) as CNT ".
984 "FROM b_blog_post P ".
985 " ".$arSqls[
"FROM"].
" ".
986 $obUserFieldsSql->GetJoin(
"P.ID").
" ";
987 if ($arSqls[
"WHERE"] <>
'')
988 $strSql_tmp .=
"WHERE ".$arSqls[
"WHERE"].
" ";
989 if($arSqls[
"WHERE"] <>
'' && $strSqlUFFilter <>
'')
990 $strSql_tmp .=
" AND ".$strSqlUFFilter.
" ";
991 elseif($arSqls[
"WHERE"] ==
'' && $strSqlUFFilter <>
'')
992 $strSql_tmp .=
" WHERE ".$strSqlUFFilter.
" ";
994 if ($arSqls[
"GROUPBY"] <>
'')
995 $strSql_tmp .=
"GROUP BY ".$arSqls[
"GROUPBY"].
" ";
1001 if ($arSqls[
"GROUPBY"] ==
'')
1008 $cnt =
$dbRes->SelectedRowsCount();
1011 $dbRes =
new CDBResult();
1016 $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
1020 if (is_array($arNavStartParams) && intval($arNavStartParams[
"nTopCount"]) > 0)
1021 $strSql .=
"LIMIT ".intval($arNavStartParams[
"nTopCount"]);
1036 $blogID = intval($blogID);
1040 && mb_strlen(
$year) == 2
1046 if (
$year && $month && $day)
1048 $date1 = mktime(0, 0, 0, $month, $day,
$year);
1049 $date2 = mktime(0, 0, 0, $month, $day + 1,
$year);
1053 $date1 = mktime(0, 0, 0, $month, 1,
$year);
1054 $date2 = mktime(0, 0, 0, $month + 1, 1,
$year);
1058 $date1 = mktime(0, 0, 0, 1, 1,
$year);
1059 $date2 = mktime(0, 0, 0, 1, 1,
$year + 1);
1061 $datePublishFrom = ConvertTimeStamp($date1,
"SHORT",
SITE_ID);
1062 $datePublishTo = ConvertTimeStamp($date2,
"SHORT",
SITE_ID);
1065 $strUserGroups =
"0";
1066 foreach($arUserGroups as $v)
1067 $strUserGroups .=
",".intval($v);
1070 " LEFT JOIN b_blog_user_group_perms UGP ".
1071 " ON (P.ID = UGP.POST_ID ".
1072 " AND P.BLOG_ID = UGP.BLOG_ID ".
1073 " AND UGP.USER_GROUP_ID IN (".$strUserGroups.
") ".
1075 $strWherePerms =
" AND (UGP.PERMS > 'D') ";
1077 $blogModulePermissions =
$APPLICATION->GetGroupRight(
"blog");
1078 if ($blogModulePermissions >=
"W")
1081 $strWherePerms =
"";
1084 $dateFormatFunction = (strtolower(
$DB->type) ===
'pgsql') ?
'to_char' :
'DATE_FORMAT';
1086 "SELECT $dateFormatFunction(P.DATE_PUBLISH, '%Y-%m-%d') as DATE_PUBLISH1, COUNT(P.ID) as CNT ".
1087 "FROM b_blog_post P ".$strFromPerms.
" ".
1088 "WHERE P.BLOG_ID = ".$blogID.
" ".
1089 " AND P.DATE_PUBLISH >= ".$DB->CharToDateFunction(
$DB->ForSql($datePublishFrom),
"SHORT").
" ".
1090 " AND P.DATE_PUBLISH < ".$DB->CharToDateFunction(
$DB->ForSql($datePublishTo),
"SHORT").
" ".
1092 " ".$strWherePerms.
" ".
1093 "GROUP BY DATE_PUBLISH1 ".
1094 "ORDER BY DATE_PUBLISH1 ";
1101 $arDate = explode(
"-",
$arRes[
"DATE_PUBLISH1"]);
1103 "YEAR" => $arDate[0],
1104 "MONTH" => $arDate[1],
1105 "DAY" => $arDate[2],
1106 "DATE" => ConvertTimeStamp(mktime(0, 0, 0, (
int)$arDate[1], (
int)$arDate[2], (
int)$arDate[0]),
"SHORT", LANG)
const BLOG_PUBLISH_STATUS_PUBLISH
static get($moduleId, $name, $default="", $siteId=false)
static isModuleInstalled($moduleName)
static GetFilterOperation($key)
static PrepareSql(&$arFields, $arOrder, &$arFilter, $arGroupBy, $arSelectFields, $obUserFieldsSql=false)
static IsBlogOwner($ID, $userID)
static SetPostPerms($ID, $arPerms=array(), $permsType=BLOG_PERMS_POST)
static AddSocNetPerms($ID, $perms=array(), $arPost=array())
static CheckFields($ACTION, &$arFields, $ID=0)
static UpdateSocNetPerms($ID, $perms=array(), $arPost=array())
static GetMentionedUserID($arFields)
static PreparePath($blogUrl, $postID=0, $siteID=False, $is404=True, $userID=0, $groupID=0)
static GetSocNetPermsCode($ID)
static GetGroupPerms($ID, $blogID, $postID=0, $permsType=BLOG_PERMS_POST)
static GetUserGroups($ID, $blogID, $joinStatus="", $selectType=BLOG_BY_BLOG_USER_ID, $bUrl=false)
static DeleteIndex($MODULE_ID, $ITEM_ID=false, $PARAM1=false, $PARAM2=false, $SITE_ID=false)
static Index($MODULE_ID, $ITEM_ID, $arFields, $bOverWrite=false, $SEARCH_SESS_ID='')
static GetListCalendar($blogID, $year=false, $month=false, $day=false)
static Update($ID, $arFields, $bSearchIndex=true)
static GetList( $arOrder=["ID"=> "DESC"], $arFilter=[], $arGroupBy=false, $arNavStartParams=false, $arSelectFields=[])
static fillSearchParamsWithMentionData($arMentionedUserID=array(), &$arSearchIndex=array())
static fillSearchPermsWithSonetGroupData($sonetPerms, $authorId, &$arSearchIndex=array(), $arParams=array())
SetEntity($entity_id, $ID)
static killAllTags($text)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
global $USER_FIELD_MANAGER
$_SERVER["DOCUMENT_ROOT"]
ExecuteModuleEventEx($arEvent, $arParams=[])
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
BXClearCache($full=false, $initdir='')
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
if(empty($signedUserToken)) $key
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
$GLOBALS['_____370096793']