14 $userID = intval($userID);
21 if (intval($arBlog[
"OWNER_ID"]) == $userID && $arBlog[
"ACTIVE"] ==
"Y")
30 $userID = intval($userID);
40 if ($blogModulePermissions >=
"N")
63 $userID = intval($userID);
68 $blogModulePermissions =
$APPLICATION->GetGroupRight(
"blog");
69 if ($blogModulePermissions >=
"W")
82 $userID = intval($userID);
84 $arAvailPerms = array_keys(
$GLOBALS[
"AR_BLOG_PERMS"]);
86 $blogModulePermissions =
$APPLICATION->GetGroupRight(
"blog");
87 if ($blogModulePermissions >=
"W")
88 return $arAvailPerms[
count($arAvailPerms) - 1];
91 return $arAvailPerms[
count($arAvailPerms) - 1];
98 if ($arBlogUser && $arBlogUser[
"ALLOW_POST"] !=
"Y")
103 return $arAvailPerms[0];
109 return $arAvailPerms[0];
116 $userID = intval($userID);
118 $arAvailPerms = array_keys(
$GLOBALS[
"AR_BLOG_PERMS"]);
120 $blogModulePermissions =
$APPLICATION->GetGroupRight(
"blog");
121 if ($blogModulePermissions >=
"W")
122 return $arAvailPerms[
count($arAvailPerms) - 1];
125 return $arAvailPerms[
count($arAvailPerms) - 1];
128 if ($arBlog[
"ENABLE_COMMENTS"] !=
"Y")
129 return $arAvailPerms[0];
132 if ($arBlogUser && $arBlogUser[
"ALLOW_POST"] !=
"Y")
133 return $arAvailPerms[0];
141 return $arAvailPerms[0];
173 $urlCheck = preg_replace(
"/[^a-zA-Z0-9_-]/is",
"",
$arFields[
"URL"]);
187 if (in_array(mb_strtolower(
$arFields[
"URL"]),
$GLOBALS[
"AR_BLOG_RESERVED_NAMES"]))
218 if (intval(
$arFields[
"OWNER_ID"] ?? 0) > 0)
273 foreach(
GetModuleEvents(
"blog",
"OnBeforeBlogDelete",
true) as $arEvent)
286 $DB->StartTransaction();
289 $bSuccess =
$DB->Query(
"DELETE FROM b_blog_user2blog WHERE BLOG_ID = ".
$ID.
"",
true);
291 $bSuccess =
$DB->Query(
"DELETE FROM b_blog_user_group_perms WHERE BLOG_ID = ".
$ID.
"",
true);
293 $bSuccess =
$DB->Query(
"DELETE FROM b_blog_user2user_group WHERE BLOG_ID = ".
$ID.
"",
true);
295 $bSuccess =
$DB->Query(
"DELETE FROM b_blog_user_group WHERE BLOG_ID = ".
$ID.
"",
true);
297 $bSuccess =
$DB->Query(
"DELETE FROM b_blog_trackback WHERE BLOG_ID = ".
$ID.
"",
true);
299 $bSuccess =
$DB->Query(
"DELETE FROM b_blog_comment WHERE BLOG_ID = ".
$ID.
"",
true);
301 $bSuccess =
$DB->Query(
"DELETE FROM b_blog_post WHERE BLOG_ID = ".
$ID.
"",
true);
303 $bSuccess =
$DB->Query(
"DELETE FROM b_blog_category WHERE BLOG_ID = ".
$ID.
"",
true);
308 unset(
$GLOBALS[
"BLOG"][
"BLOG4OWNER_CACHE_".$arBlog[
"OWNER_ID"]]);
312 $bSuccess =
$DB->Query(
"DELETE FROM b_blog WHERE ID = ".
$ID.
"",
true);
321 if (CModule::IncludeModule(
"search"))
332 while($aImg =
$res->Fetch())
336 $GLOBALS[
"USER_FIELD_MANAGER"]->Delete(
"BLOG_BLOG",
$ID);
351 foreach ($arPerms as
$key => $value)
357 "USER_GROUP_ID" =>
$key,
358 "PERMS_TYPE" => $permsType,
365 if ($arGroupPerms = $dbGroupPerms->Fetch())
369 array(
"PERMS" => $value)
376 "BLOG_ID" => $arBlog[
"ID"],
377 "USER_GROUP_ID" =>
$key,
378 "PERMS_TYPE" => $permsType,
394 CTimeZone::Disable();
396 array(
"DATE_PUBLISH" =>
"DESC"),
399 "<=DATE_PUBLISH" => ConvertTimeStamp(
false,
"FULL",
false),
403 array(
"nTopCount" => 1),
404 array(
"ID",
"DATE_PUBLISH")
408 if ($arBlogPost = $dbBlogPost->Fetch())
411 "LAST_POST_ID" => $arBlogPost[
"ID"],
412 "LAST_POST_DATE" => $arBlogPost[
"DATE_PUBLISH"],
413 "=DATE_UPDATE" =>
$DB->CurrentTimeFunction()
419 "LAST_POST_ID" =>
false,
420 "LAST_POST_DATE" =>
false,
421 "=DATE_UPDATE" =>
$DB->CurrentTimeFunction()
431 if (mb_substr(
$key, 0, 1) ==
"!")
438 if (mb_substr(
$key, 0, 1) ==
"+")
444 if (mb_substr(
$key, 0, 2) ==
">=")
447 $strOperation =
">=";
457 $strOperation =
"<=";
467 $strOperation =
"IN";
472 $strOperation =
"LIKE";
477 $strOperation =
"QUERY";
484 return array(
"FIELD" =>
$key,
"NEGATIVE" => $strNegative,
"OPERATION" => $strOperation,
"OR_NULL" => $strOrNull);
497 $arGroupByFunct =
array(
"COUNT",
"AVG",
"MIN",
"MAX",
"SUM");
499 $arAlreadyJoined =
array();
502 if (is_array($arGroupBy) &&
count($arGroupBy)>0)
504 $arSelectFields = $arGroupBy;
505 foreach ($arGroupBy as
$key =>
$val)
511 if ($strSqlGroupBy <>
'')
512 $strSqlGroupBy .=
", ";
519 if ($strSqlFrom <>
'')
532 if (is_array($arGroupBy) &&
count($arGroupBy)==0)
534 $strSqlSelect =
"COUNT(%%_DISTINCT_%% ".$arFields[$arFieldsKeys[0]][
"FIELD"].
") as CNT ";
538 if (isset($arSelectFields) && !is_array($arSelectFields) && is_string($arSelectFields) && $arSelectFields <>
'' && array_key_exists($arSelectFields,
$arFields))
539 $arSelectFields =
array($arSelectFields);
541 if (!isset($arSelectFields)
542 || !is_array($arSelectFields)
543 ||
count($arSelectFields)<=0
544 || in_array(
"*", $arSelectFields))
546 foreach($arFieldsKeys as $fkey)
551 if ($strSqlSelect <>
'')
552 $strSqlSelect .=
", ";
554 if (
$arFields[$fkey][
"TYPE"] ==
"datetime")
556 if (array_key_exists($fkey, $arOrder))
557 $strSqlSelect .=
$arFields[$fkey][
"FIELD"].
" as ".$fkey.
"_X1, ";
559 $strSqlSelect .=
$DB->DateToCharFunction(
$arFields[$fkey][
"FIELD"],
"FULL").
" as ".$fkey;
563 if (array_key_exists($fkey, $arOrder))
564 $strSqlSelect .=
$arFields[$fkey][
"FIELD"].
" as ".$fkey.
"_X1, ";
566 $strSqlSelect .=
$DB->DateToCharFunction(
$arFields[$fkey][
"FIELD"],
"SHORT").
" as ".$fkey;
569 $strSqlSelect .=
$arFields[$fkey][
"FIELD"].
" as ".$fkey;
573 && !in_array(
$arFields[$fkey][
"FROM"], $arAlreadyJoined))
575 if ($strSqlFrom <>
'')
578 $arAlreadyJoined[] =
$arFields[$fkey][
"FROM"];
584 foreach ($arSelectFields as
$key =>
$val)
590 if ($strSqlSelect <>
'')
591 $strSqlSelect .=
", ";
593 if (in_array(
$key, $arGroupByFunct))
601 if (array_key_exists(
$val, $arOrder))
608 if (array_key_exists(
$val, $arOrder))
621 if ($strSqlFrom <>
'')
630 if ($strSqlGroupBy <>
'')
632 if ($strSqlSelect <>
'')
633 $strSqlSelect .=
", ";
634 $strSqlSelect .=
"COUNT(%%_DISTINCT_%% ".$arFields[$arFieldsKeys[0]][
"FIELD"].
") as CNT";
637 $strSqlSelect =
"%%_DISTINCT_%% ".$strSqlSelect;
642 $arSqlSearch = Array();
645 $filter_keys = Array();
649 foreach($filter_keys as $fkey)
652 if (!is_array($vals))
653 $vals =
array($vals);
657 $key = $key_res[
"FIELD"];
658 $strNegative = $key_res[
"NEGATIVE"];
659 $strOperation = $key_res[
"OPERATION"];
660 $strOrNull = $key_res[
"OR_NULL"];
662 $arSqlSearch_tmp =
array();
665 if (
count($vals) > 0)
667 if ($strOperation ==
"IN")
671 $arSqlSearch_tmp1 = call_user_func_array(
675 if ($arSqlSearch_tmp1 !==
false)
676 $arSqlSearch_tmp[] = $arSqlSearch_tmp1;
688 $vals = array_unique($vals);
689 $val = implode(
",", $vals);
691 if (
count($vals) <= 0)
692 $arSqlSearch_tmp[] =
"(1 = 2)";
694 $arSqlSearch_tmp[] = (($strNegative ==
"Y") ?
" NOT " :
"").
"(".
$arFields[
$key][
"FIELD"].
" IN (".
$val.
"))";
701 $item = (float)$item;
704 $vals = array_unique($vals);
705 $val = implode(
",", $vals);
707 if (
count($vals) <= 0)
708 $arSqlSearch_tmp[] =
"(1 = 2)";
710 $arSqlSearch_tmp[] = (($strNegative ==
"Y") ?
" NOT " :
"").
"(".
$arFields[
$key][
"FIELD"].
" ".$strOperation.
" (".
$val.
"))";
717 $item =
"'".$GLOBALS[
"DB"]->ForSql($item).
"'";
720 $vals = array_unique($vals);
721 $val = implode(
",", $vals);
723 if (
count($vals) <= 0)
724 $arSqlSearch_tmp[] =
"(1 = 2)";
726 $arSqlSearch_tmp[] = (($strNegative ==
"Y") ?
" NOT " :
"").
"(".
$arFields[
$key][
"FIELD"].
" ".$strOperation.
" (".
$val.
"))";
733 $item =
$GLOBALS[
"DB"]->CharToDateFunction($item,
"FULL");
736 $vals = array_unique($vals);
737 $val = implode(
",", $vals);
739 if (
count($vals) <= 0)
740 $arSqlSearch_tmp[] =
"1 = 2";
742 $arSqlSearch_tmp[] = ($strNegative==
"Y"?
" NOT ":
"").
"(".
$arFields[
$key][
"FIELD"].
" ".$strOperation.
" (".
$val.
"))";
749 $item =
$GLOBALS[
"DB"]->CharToDateFunction($item,
"SHORT");
752 $vals = array_unique($vals);
753 $val = implode(
",", $vals);
755 if (
count($vals) <= 0)
756 $arSqlSearch_tmp[] =
"1 = 2";
758 $arSqlSearch_tmp[] = ($strNegative==
"Y"?
" NOT ":
"").
"(".
$arFields[
$key][
"FIELD"].
" ".$strOperation.
" (".
$val.
"))";
764 foreach($vals as
$val)
768 $arSqlSearch_tmp1 = call_user_func_array(
772 if ($arSqlSearch_tmp1 !==
false)
773 $arSqlSearch_tmp[] = $arSqlSearch_tmp1;
779 if ((intval(
$val) == 0) && (mb_strpos($strOperation,
"=") !== False))
780 $arSqlSearch_tmp[] =
"(".$arFields[
$key][
"FIELD"].
" IS ".(($strNegative ==
"Y") ?
"NOT " :
"").
"NULL) ".(($strNegative ==
"Y") ?
"AND" :
"OR").
" ".(($strNegative ==
"Y") ?
"NOT " :
"").
"(".
$arFields[
$key][
"FIELD"].
" ".$strOperation.
" 0)";
782 $arSqlSearch_tmp[] = (($strNegative ==
"Y") ?
" ".$arFields[
$key][
"FIELD"].
" IS NULL OR NOT " :
"").
"(".
$arFields[
$key][
"FIELD"].
" ".$strOperation.
" ".intval(
$val).
" )";
788 if ((DoubleVal(
$val) == 0) && (mb_strpos($strOperation,
"=") !== False))
789 $arSqlSearch_tmp[] =
"(".$arFields[
$key][
"FIELD"].
" IS ".(($strNegative ==
"Y") ?
"NOT " :
"").
"NULL) ".(($strNegative ==
"Y") ?
"AND" :
"OR").
" ".(($strNegative ==
"Y") ?
"NOT " :
"").
"(".
$arFields[
$key][
"FIELD"].
" ".$strOperation.
" 0)";
791 $arSqlSearch_tmp[] = (($strNegative ==
"Y") ?
" ".$arFields[
$key][
"FIELD"].
" IS NULL OR NOT " :
"").
"(".
$arFields[
$key][
"FIELD"].
" ".$strOperation.
" ".DoubleVal(
$val).
" )";
795 if ($strOperation ==
"QUERY")
801 if ((
$val ==
'') && (mb_strpos($strOperation,
"=") !== False))
802 $arSqlSearch_tmp[] =
"(".$arFields[
$key][
"FIELD"].
" IS ".(($strNegative ==
"Y") ?
"NOT " :
"").
"NULL) ".(($strNegative ==
"Y") ?
"AND NOT" :
"OR").
" (".
$DB->Length(
$arFields[
$key][
"FIELD"]).
" <= 0) ".(($strNegative ==
"Y") ?
"AND NOT" :
"OR").
" (".
$arFields[
$key][
"FIELD"].
" ".$strOperation.
" '".
$DB->ForSql(
$val).
"' )";
804 $arSqlSearch_tmp[] = (($strNegative ==
"Y") ?
" ".$arFields[
$key][
"FIELD"].
" IS NULL OR NOT " :
"").
"(".
$arFields[
$key][
"FIELD"].
" ".$strOperation.
" '".
$DB->ForSql(
$val).
"' )";
810 $arSqlSearch_tmp[] = ($strNegative==
"Y"?
"NOT":
"").
"(".
$arFields[
$key][
"FIELD"].
" IS NULL)";
812 $arSqlSearch_tmp[] = ($strNegative==
"Y"?
" ".$arFields[
$key][
"FIELD"].
" IS NULL OR NOT ":
"").
"(".
$arFields[
$key][
"FIELD"].
" ".$strOperation.
" ".
$DB->CharToDateFunction(
$DB->ForSql(
$val),
"FULL").
")";
817 $arSqlSearch_tmp[] = ($strNegative==
"Y"?
"NOT":
"").
"(".
$arFields[
$key][
"FIELD"].
" IS NULL)";
819 $arSqlSearch_tmp[] = ($strNegative==
"Y"?
" ".$arFields[
$key][
"FIELD"].
" IS NULL OR NOT ":
"").
"(".
$arFields[
$key][
"FIELD"].
" ".$strOperation.
" ".
$DB->CharToDateFunction(
$DB->ForSql(
$val),
"SHORT").
")";
830 if ($strSqlFrom <>
'')
836 $strSqlSearch_tmp =
"";
837 foreach($arSqlSearch_tmp as $arSqlS)
839 if ($strSqlSearch_tmp <>
'')
840 $strSqlSearch_tmp .= ($strNegative==
"Y" ?
" AND " :
" OR ");
841 $strSqlSearch_tmp .=
"(".$arSqlS.
")";
843 if ($strOrNull ==
"Y")
845 if ($strSqlSearch_tmp <>
'')
846 $strSqlSearch_tmp .= ($strNegative==
"Y" ?
" AND " :
" OR ");
847 $strSqlSearch_tmp .=
"(".$arFields[
$key][
"FIELD"].
" IS ".($strNegative==
"Y" ?
"NOT " :
"").
"NULL)";
849 if ($strSqlSearch_tmp <>
'')
850 $strSqlSearch_tmp .= ($strNegative==
"Y" ?
" AND " :
" OR ");
852 $strSqlSearch_tmp .=
"(".$arFields[
$key][
"FIELD"].
" ".($strNegative==
"Y" ?
"<>" :
"=").
" 0)";
854 $strSqlSearch_tmp .=
"(".$arFields[
$key][
"FIELD"].
" ".($strNegative==
"Y" ?
"<>" :
"=").
" '')";
857 if ($strSqlSearch_tmp !=
"")
858 $arSqlSearch[] =
"(".$strSqlSearch_tmp.
")";
862 foreach($arSqlSearch as $sqlS)
864 if ($strSqlWhere <>
'')
865 $strSqlWhere .=
" AND ";
866 $strSqlWhere .=
"(".$sqlS.
")";
871 $arSqlOrder = Array();
872 foreach ($arOrder as $by =>
$order)
874 $by = mb_strtoupper($by);
888 && !in_array(
$arFields[$by][
"FROM"], $arAlreadyJoined))
890 if ($strSqlFrom <>
'')
893 $arAlreadyJoined[] =
$arFields[$by][
"FROM"];
898 $arSqlOrder[] =
" ".$obUserFieldsSql->GetOrder($by).
" ".
$order.
" ";
904 foreach($arSqlOrder as $sqlO)
906 if ($strSqlOrderBy <>
'')
907 $strSqlOrderBy .=
", ";
909 if(
$DB->type ==
"ORACLE")
911 if(mb_substr($sqlO, -3) ==
"ASC")
912 $strSqlOrderBy .= $sqlO.
" NULLS FIRST";
914 $strSqlOrderBy .= $sqlO.
" NULLS LAST";
917 $strSqlOrderBy .= $sqlO;
922 "SELECT" => $strSqlSelect,
923 "FROM" => $strSqlFrom,
924 "WHERE" => $strSqlWhere,
925 "GROUPBY" => $strSqlGroupBy,
926 "ORDERBY" => $strSqlOrderBy
943 "SELECT B.ID, B.NAME, B.DESCRIPTION, B.ACTIVE, B.OWNER_ID, B.URL, B.GROUP_ID, ".
944 " B.ENABLE_COMMENTS, B.ENABLE_IMG_VERIF, B.EMAIL_NOTIFY, B.ENABLE_RSS, B.REAL_URL, ".
945 " B.LAST_POST_ID, B.AUTO_GROUPS, B.ALLOW_HTML, B.SEARCH_INDEX, B.SOCNET_GROUP_ID, B.USE_SOCNET, ".
946 " B.EDITOR_USE_FONT, B.EDITOR_USE_LINK, B.EDITOR_USE_IMAGE, B.EDITOR_USE_FORMAT, B.EDITOR_USE_VIDEO, ".
947 " ".$DB->DateToCharFunction(
"B.DATE_CREATE",
"FULL").
" as DATE_CREATE, ".
948 " ".$DB->DateToCharFunction(
"B.DATE_UPDATE",
"FULL").
" as DATE_UPDATE, ".
949 " ".$DB->DateToCharFunction(
"B.LAST_POST_DATE",
"FULL").
" as LAST_POST_DATE ".
951 "WHERE B.ID = ".$ID.
"";
962 return $GLOBALS[
"BLOG"][
"BLOG_CACHE_".$ID];
977 if(is_array($arGroup) && !empty($arGroup))
980 foreach($arGroup as $v)
998 "SELECT B.ID, B.NAME, B.DESCRIPTION, B.ACTIVE, B.OWNER_ID, B.URL, B.GROUP_ID, ".
999 " B.ENABLE_COMMENTS, B.ENABLE_IMG_VERIF, B.EMAIL_NOTIFY, B.ENABLE_RSS, B.REAL_URL, ".
1000 " B.LAST_POST_ID, B.AUTO_GROUPS, B.ALLOW_HTML, B.SEARCH_INDEX, B.SOCNET_GROUP_ID, B.USE_SOCNET, ".
1001 " B.EDITOR_USE_FONT, B.EDITOR_USE_LINK, B.EDITOR_USE_IMAGE, B.EDITOR_USE_FORMAT, B.EDITOR_USE_VIDEO, ".
1002 " ".$DB->DateToCharFunction(
"B.DATE_CREATE",
"FULL").
" as DATE_CREATE, ".
1003 " ".$DB->DateToCharFunction(
"B.DATE_UPDATE",
"FULL").
" as DATE_UPDATE, ".
1004 " ".$DB->DateToCharFunction(
"B.LAST_POST_DATE",
"FULL").
" as LAST_POST_DATE ".
1006 "WHERE B.OWNER_ID = ".$ID.
" ";
1008 $strSql .=
" AND B.GROUP_ID IN (".$groups.
")";
1026 public static function GetByUrl($BLOG_URL, $arGroup = Array())
1030 $BLOG_URL = preg_replace(
"/[^a-zA-Z0-9_-]/is",
"", Trim($BLOG_URL ??
''));
1035 if(is_array($arGroup) && !empty($arGroup))
1038 foreach($arGroup as $v)
1055 "SELECT B.ID, B.NAME, B.DESCRIPTION, B.ACTIVE, B.OWNER_ID, B.URL, B.GROUP_ID, ".
1056 " B.ENABLE_COMMENTS, B.ENABLE_IMG_VERIF, B.EMAIL_NOTIFY, B.ENABLE_RSS, B.REAL_URL, ".
1057 " B.LAST_POST_ID, B.AUTO_GROUPS, B.ALLOW_HTML, B.SEARCH_INDEX, B.SOCNET_GROUP_ID, B.USE_SOCNET, ".
1058 " B.EDITOR_USE_FONT, B.EDITOR_USE_LINK, B.EDITOR_USE_IMAGE, B.EDITOR_USE_FORMAT, B.EDITOR_USE_VIDEO, ".
1059 " ".$DB->DateToCharFunction(
"B.DATE_CREATE",
"FULL").
" as DATE_CREATE, ".
1060 " ".$DB->DateToCharFunction(
"B.DATE_UPDATE",
"FULL").
" as DATE_UPDATE, ".
1061 " ".$DB->DateToCharFunction(
"B.LAST_POST_DATE",
"FULL").
" as LAST_POST_DATE ".
1063 "WHERE B.URL = '".$DB->ForSql($BLOG_URL).
"' ";
1065 $strSql .=
" AND B.GROUP_ID IN (".$groups.
")";
1091 if(is_array($arGroup) && !empty($arGroup))
1094 foreach($arGroup as $v)
1111 "SELECT B.ID, B.NAME, B.DESCRIPTION, B.ACTIVE, B.OWNER_ID, B.URL, B.GROUP_ID, ".
1112 " B.ENABLE_COMMENTS, B.ENABLE_IMG_VERIF, B.EMAIL_NOTIFY, B.ENABLE_RSS, B.REAL_URL, ".
1113 " B.LAST_POST_ID, B.AUTO_GROUPS, B.ALLOW_HTML, B.SEARCH_INDEX, B.SOCNET_GROUP_ID, B.USE_SOCNET, ".
1114 " ".$DB->DateToCharFunction(
"B.DATE_CREATE",
"FULL").
" as DATE_CREATE, ".
1115 " ".$DB->DateToCharFunction(
"B.DATE_UPDATE",
"FULL").
" as DATE_UPDATE, ".
1116 " ".$DB->DateToCharFunction(
"B.LAST_POST_DATE",
"FULL").
" as LAST_POST_DATE ".
1118 "WHERE B.SOCNET_GROUP_ID = ".$ID.
" ";
1120 $strSql .=
" AND B.GROUP_ID IN (".$groups.
")";
1137 public static function BuildRSS(
$ID,
$type =
"RSS .92", $numPosts = 10, $blogTemplate=
"", $postTemplate=
"", $userTemplate=
"", $bSoNet =
false,
$arParams = Array())
1144 $numPosts = intval($numPosts);
1145 $type = mb_strtolower(preg_replace(
"/[^a-zA-Z0-9.]/is",
"",
$type));
1152 if (($arBlog && $arBlog[
"ACTIVE"] ==
"Y" && $arBlog[
"ENABLE_RSS"] ==
"Y") ||
$arParams[
"USE_SOCNET"] ==
"Y")
1155 if($arGroup && $arGroup[
"SITE_ID"] ==
SITE_ID ||
$arParams[
"USE_SOCNET"] ==
"Y")
1158 $nowISO = date(
"Y-m-d\\TH:i:s").mb_substr(date(
"O"), 0, 3).
":".mb_substr(date(
"O"), -2, 2);
1163 $dbSite = CSite::GetList(
"sort",
"asc",
array(
"LID" =>
SITE_ID));
1164 if ($arSite = $dbSite->Fetch())
1166 $serverName = $arSite[
"SERVER_NAME"];
1167 $charset = $arSite[
"CHARSET"];
1168 $language = $arSite[
"LANGUAGE_ID"];
1171 if ($serverName ==
'')
1173 if (defined(
"SITE_SERVER_NAME") && SITE_SERVER_NAME <>
'')
1174 $serverName = SITE_SERVER_NAME;
1176 $serverName = COption::GetOptionString(
"main",
"server_name",
"");
1178 $serverName = HtmlFilter::encode($serverName);
1185 $charset =
"windows-1251";
1188 $user_id = intval(
$USER->GetID());
1192 if(intval(
$arParams[
"SOCNET_GROUP_ID"]) > 0)
1198 if (CSocNetFeaturesPerms::CanPerformOperation($user_id,
SONET_ENTITY_GROUP,
$arParams[
"SOCNET_GROUP_ID"],
"blog",
"full_post", CSocNetUser::IsCurrentUserModuleAdmin()) ||
$GLOBALS[
"APPLICATION"]->GetGroupRight(
"blog") >=
"W")
1223 $dbUser = CUser::GetByID(
$arParams[
"USER_ID"]);
1224 if ($arUser = $dbUser->Fetch())
1226 $blogName =
htmlspecialcharsbx(
GetMessage(
"BLG_RSS_NAME_SONET", Array(
"#AUTHOR_NAME#" => CUser::FormatName(CSite::GetNameFormat(
false), $arUser,
true))));
1227 $blogURL =
"http://".$serverName.htmlspecialcharsbx(CComponentEngine::MakePathFromTemplate($blogTemplate,
array(
"user_id" =>
$arParams[
"USER_ID"])));
1232 if ($arGroupSoNet = CSocNetGroup::GetByID(
$arParams[
"SOCNET_GROUP_ID"]))
1235 $blogURL =
"http://".$serverName.htmlspecialcharsbx(CComponentEngine::MakePathFromTemplate($blogTemplate,
array(
"group_id" =>
$arParams[
"SOCNET_GROUP_ID"])));
1242 if ($blogTemplate <>
'')
1243 $blogURL =
"http://".$serverName.htmlspecialcharsbx(CComponentEngine::MakePathFromTemplate($blogTemplate,
array(
"blog" => $arBlog[
"URL"],
"user_id" => $arBlog[
"OWNER_ID"],
"group_id" => $arBlog[
"SOCNET_GROUP_ID"])));
1245 $blogURL =
"http://".$serverName.htmlspecialcharsbx(
CBlog::PreparePath($arBlog[
"URL"], $arGroup[
"SITE_ID"]));
1252 if (
$type ==
"rss.92")
1254 $rssText .=
"<".
"?xml version=\"1.0\" encoding=\"".$charset.
"\"?".
">\n\n";
1255 $rssText .=
"<rss version=\".92\">\n";
1256 $rssText .=
" <channel>\n";
1257 $rssText .=
" <title>".$blogName.
"</title>\n";
1258 $rssText .=
" <link>".$blogURL.
"</link>\n";
1259 $rssText .=
" <description>".$blogDescr.
"</description>\n";
1260 $rssText .=
" <language>".$language.
"</language>\n";
1261 $rssText .=
" <docs>http://backend.userland.com/rss092</docs>\n";
1266 $rssText .=
"<".
"?xml version=\"1.0\" encoding=\"".$charset.
"\"?".
">\n\n";
1267 $rssText .=
"<rss version=\"2.0\">\n";
1268 $rssText .=
" <channel>\n";
1269 $rssText .=
" <title>".$blogName.
"</title>\n";
1271 $rssText .=
" <link>".$blogURL.
"</link>\n";
1272 $rssText .=
" <description>".$blogDescr.
"</description>\n";
1273 $rssText .=
" <language>".$language.
"</language>\n";
1274 $rssText .=
" <docs>http://backend.userland.com/rss2</docs>\n";
1275 $rssText .=
" <pubDate>".$now.
"</pubDate>\n";
1280 $atomID =
"tag:".$serverName.
",".date(
"Y-m-d").
":".
$ID;
1282 $rssText .=
"<".
"?xml version=\"1.0\" encoding=\"".$charset.
"\"?".
">\n\n";
1283 $rssText .=
"<feed version=\"0.3\" xmlns=\"http://purl.org/atom/ns#\" xml:lang=\"".$language.
"\">\n";
1284 $rssText .=
" <title>".$blogName.
"</title>\n";
1285 $rssText .=
" <tagline>".$blogURL.
"</tagline>\n";
1287 $rssText .=
" <id>".$atomID.
"</id>\n";
1288 $rssText .=
" <link rel=\"alternate\" type=\"text/html\" href=\"".$blogURL.
"\" />\n";
1289 $rssText .=
" <copyright>Copyright (c) ".$blogURL.
"</copyright>\n";
1290 $rssText .=
" <modified>".$nowISO.
"</modified>\n";
1297 $arParserParams = Array(
1298 "imageWidth" =>
$arParams[
"IMAGE_MAX_WIDTH"],
1299 "imageHeight" =>
$arParams[
"IMAGE_MAX_HEIGHT"],
1304 "<=DATE_PUBLISH" => ConvertTimeStamp(
false,
"FULL",
false),
1306 "BLOG_ACTIVE" =>
"Y",
1307 "BLOG_GROUP_SITE_ID" =>
SITE_ID,
1309 if(intval(
$arParams[
"SOCNET_GROUP_ID"]) > 0)
1321 "<=DATE_PUBLISH" => ConvertTimeStamp(
false,
"FULL",
false),
1327 CTimeZone::Disable();
1329 array(
"DATE_PUBLISH" =>
"DESC"),
1332 array(
"nTopCount" => $numPosts),
1333 array(
"ID",
"TITLE",
"DETAIL_TEXT",
"DATE_PUBLISH",
"AUTHOR_ID",
"AUTHOR_NAME",
"AUTHOR_LAST_NAME",
"BLOG_USER_ALIAS",
"DETAIL_TEXT_TYPE",
"CODE",
"PATH")
1335 CTimeZone::Enable();
1337 while ($arPost = $dbPosts->Fetch())
1348 array(
"&",
"<",
">",
"\""),
1349 array(
"&",
"<",
">",
"""),
1352 $arImages = Array();
1354 while ($arImage =
$res->Fetch())
1355 $arImages[$arImage[
'ID']] = $arImage[
'FILE_ID'];
1357 $arDate =
ParseDateTime($arPost[
"DATE_PUBLISH"], CSite::GetDateFormat(
"FULL", $arGroup[
"SITE_ID"]));
1358 $date = date(
"r", mktime($arDate[
"HH"], $arDate[
"MI"], $arDate[
"SS"], $arDate[
"MM"], $arDate[
"DD"], $arDate[
"YYYY"]));
1360 if($arPost[
"PATH"] <>
'')
1361 $url =
"http://".$serverName.htmlspecialcharsbx(str_replace(
"#post_id#",
CBlogPost::GetPostID($arPost[
"ID"], $arPost[
"CODE"],
$arParams[
"ALLOW_POST_CODE"]), $arPost[
"PATH"]));
1362 elseif($postTemplate <>
'')
1363 $url =
"http://".$serverName.htmlspecialcharsbx(CComponentEngine::MakePathFromTemplate($postTemplate,
array(
"blog" => $arBlog[
"URL"],
"post_id"=>
CBlogPost::GetPostID($arPost[
"ID"], $arPost[
"CODE"],
$arParams[
"ALLOW_POST_CODE"]),
"user_id" => (intval(
$arParams[
"USER_ID"]) > 0 ?
$arParams[
"USER_ID"] : $arBlog[
"OWNER_ID"]),
"group_id" => (intval(
$arParams[
"SOCNET_GROUP_ID"]) > 0 ?
$arParams[
"SOCNET_GROUP_ID"] : $arBlog[
"SOCNET_GROUP_ID"]))));
1370 $dbUser = CUser::GetByID($arPost[
"AUTHOR_ID"]);
1371 $arUser = $dbUser->Fetch();
1372 $author = htmlspecialcharsex(
CBlogUser::GetUserName($BlogUser[
"ALIAS"], $arUser[
"NAME"], $arUser[
"LAST_NAME"], $arUser[
"LOGIN"], $arUser[
"SECOND_NAME"]));
1374 if($userTemplate <>
'')
1375 $authorURL =
"http://".$serverName.htmlspecialcharsbx(CComponentEngine::MakePathFromTemplate($userTemplate,
array(
"user_id"=>$arPost[
"AUTHOR_ID"])));
1377 $authorURL =
"http://".$serverName.htmlspecialcharsbx(
CBlogUser::PreparePath($arPost[
"AUTHOR_ID"], $arGroup[
"SITE_ID"]));
1379 if($arPost[
"DETAIL_TEXT_TYPE"] ==
"html")
1380 $text = $parser->convert_to_rss($arPost[
"DETAIL_TEXT"], $arImages,
array(
"HTML" =>
"Y",
"ANCHOR" =>
"Y",
"IMG" =>
"Y",
"SMILES" =>
"Y",
"NL2BR" =>
"N",
"QUOTE" =>
"Y",
"CODE" =>
"Y"),
true, $arParserParams);
1382 $text = $parser->convert_to_rss($arPost[
"DETAIL_TEXT"], $arImages,
false, !$bSoNet, $arParserParams);
1385 $text .=
"<br /><a href=\"".$url.
"\">".
GetMessage(
"BLG_GB_RSS_DETAIL").
"</a>";
1387 $text =
"<![CDATA[".$text.
"]]>";
1390 if (
$type ==
"rss.92")
1392 $rssText .=
" <item>\n";
1393 $rssText .=
" <title>".$title.
"</title>\n";
1394 $rssText .=
" <description>".$text.
"</description>\n";
1395 $rssText .=
" <link>".$url.
"</link>\n";
1396 $rssText .=
" </item>\n";
1401 $rssText .=
" <item>\n";
1402 $rssText .=
" <title>".$title.
"</title>\n";
1403 $rssText .=
" <description>".$text.
"</description>\n";
1404 $rssText .=
" <link>".$url.
"</link>\n";
1405 $rssText .=
" <guid>".$url.
"</guid>\n";
1406 $rssText .=
" <pubDate>".$date.
"</pubDate>\n";
1408 $rssText .=
" <category>".$category.
"</category>\n";
1409 $rssText .=
" </item>\n";
1414 $atomID =
"tag:".$serverName.
":".$arBlog[
"URL"].
"/".$arPost[
"ID"];
1416 $timeISO = mktime($arDate[
"HH"], $arDate[
"MI"], $arDate[
"SS"], $arDate[
"MM"], $arDate[
"DD"], $arDate[
"YYYY"]);
1417 $dateISO = date(
"Y-m-d\\TH:i:s", $timeISO).mb_substr(date(
"O", $timeISO), 0, 3).
":".mb_substr(date(
"O", $timeISO), -2, 2);
1421 $rssText .=
"<entry>\n";
1422 $rssText .=
" <title type=\"text/html\">".$title.
"</title>\n";
1423 $rssText .=
" <link rel=\"alternate\" type=\"text/html\" href=\"".$url.
"\"/>\n";
1424 $rssText .=
" <issued>".$dateISO.
"</issued>\n";
1425 $rssText .=
" <modified>".$nowISO.
"</modified>\n";
1426 $rssText .=
" <id>".$atomID.
"</id>\n";
1427 $rssText .=
" <content type=\"text/html\" mode=\"escaped\" xml:lang=\"".$language.
"\" xml:base=\"".$blogURL.
"\">\n";
1428 $rssText .=
$text.
"\n";
1429 $rssText .=
" </content>\n";
1430 $rssText .=
" <link rel=\"related\" type=\"text/html\" href=\"".$url.
"\" title=\"".$titleRel.
"\"/>\n";
1431 $rssText .=
" <author>\n";
1432 $rssText .=
" <name>".$author.
"</name>\n";
1433 $rssText .=
" <url>".$authorURL.
"</url>\n";
1434 $rssText .=
" </author>\n";
1435 $rssText .=
"</entry>\n";
1441 if (
$type ==
"rss.92")
1442 $rssText .=
" </channel>\n</rss>";
1444 $rssText .=
" </channel>\n</rss>";
1446 $rssText .=
"\n\n</feed>";
1455 $blogUrl = Trim($blogUrl);
1460 while(
$arPath = $dbPath->Fetch())
1467 if($groupID > 0 &&
$arPaths[
"G"] <>
'')
1495 $userID = intval($userID);
1497 if (
$ID <= 0 || $userID <= 0)
1502 array(
"USER_ID" => $userID,
"GROUP_BLOG_ID" =>
$ID),
1509 public static function BuildRSSAll($GroupId = 0,
$type =
"RSS .92", $numPosts = 10,
$siteID =
SITE_ID, $postTemplate=
"", $userTemplate=
"", $arAvBlog = Array(), $arPathTemplates = Array(), $arGroupID = Array(), $bUserSocNet =
"N")
1513 $GroupId = intval($GroupId);
1514 $numPosts = intval($numPosts);
1515 $user_id = intval(
$USER->GetID());
1516 $type = mb_strtolower(preg_replace(
"/[^a-zA-Z0-9.]/is",
"",
$type));
1521 $groupIdArray =
array();
1526 if((!empty($arGroupID) && in_array($GroupId, $arGroupID)) || empty($arGroupID))
1533 $nowISO = date(
"Y-m-d\\TH:i:s").mb_substr(date(
"O"), 0, 3).
":".mb_substr(date(
"O"), -2, 2);
1538 $dbSite = CSite::GetList(
"sort",
"asc",
array(
"LID" =>
SITE_ID));
1539 if ($arSite = $dbSite->Fetch())
1541 $serverName = $arSite[
"SERVER_NAME"];
1542 $charset = $arSite[
"CHARSET"];
1543 $language = $arSite[
"LANGUAGE_ID"];
1546 if ($serverName ==
'')
1548 if (defined(
"SITE_SERVER_NAME") && SITE_SERVER_NAME <>
'')
1549 $serverName = SITE_SERVER_NAME;
1551 $serverName = COption::GetOptionString(
"main",
"server_name",
"");
1553 $serverName = HtmlFilter::encode($serverName);
1560 $charset =
"windows-1251";
1563 $blogURL =
"http://".$serverName;
1570 if (
$type ==
"rss.92")
1572 $rssText .=
"<".
"?xml version=\"1.0\" encoding=\"".$charset.
"\"?".
">\n\n";
1573 $rssText .=
"<rss version=\".92\">\n";
1574 $rssText .=
" <channel>\n";
1575 $rssText .=
" <title>".$blogName.
"</title>\n";
1576 $rssText .=
" <link>".$blogURL.
"</link>\n";
1577 $rssText .=
" <guid>".$blogURL.
"</guid>\n";
1578 $rssText .=
" <language>".$language.
"</language>\n";
1579 $rssText .=
" <docs>http://backend.userland.com/rss092</docs>\n";
1584 $rssText .=
"<".
"?xml version=\"1.0\" encoding=\"".$charset.
"\"?".
">\n\n";
1585 $rssText .=
"<rss version=\"2.0\">\n";
1586 $rssText .=
" <channel>\n";
1587 $rssText .=
" <title>".$blogName.
"</title>\n";
1588 $rssText .=
" <description>".$blogName.
"</description>\n";
1589 $rssText .=
" <link>".$blogURL.
"</link>\n";
1590 $rssText .=
" <language>".$language.
"</language>\n";
1591 $rssText .=
" <docs>http://backend.userland.com/rss2</docs>\n";
1592 $rssText .=
" <pubDate>".$now.
"</pubDate>\n";
1597 $atomID =
"tag:".$serverName.
",".date(
"Y-m-d");
1599 $rssText .=
"<".
"?xml version=\"1.0\" encoding=\"".$charset.
"\"?".
">\n\n";
1600 $rssText .=
"<feed version=\"0.3\" xmlns=\"http://purl.org/atom/ns#\" xml:lang=\"".$language.
"\">\n";
1601 $rssText .=
" <title>".$blogName.
"</title>\n";
1602 $rssText .=
" <tagline>".$blogURL.
"</tagline>\n";
1603 $rssText .=
" <id>".$atomID.
"</id>\n";
1604 $rssText .=
" <link rel=\"alternate\" type=\"text/html\" href=\"".$blogURL.
"\" />\n";
1605 $rssText .=
" <copyright>Copyright (c) ".$blogURL.
"</copyright>\n";
1606 $rssText .=
" <modified>".$nowISO.
"</modified>\n";
1611 $arParserParams = Array(
1612 "imageWidth" => $arPathTemplates[
"IMAGE_MAX_WIDTH"],
1613 "imageHeight" => $arPathTemplates[
"IMAGE_MAX_HEIGHT"],
1617 "<=DATE_PUBLISH" => ConvertTimeStamp(
false,
"FULL",
false),
1619 "BLOG_ENABLE_RSS" =>
"Y",
1623 $arSelFields =
array(
"ID",
"TITLE",
"DETAIL_TEXT",
"DATE_PUBLISH",
"AUTHOR_ID",
"BLOG_USER_ALIAS",
"BLOG_ID",
"DETAIL_TEXT_TYPE",
"BLOG_URL",
"BLOG_OWNER_ID",
"BLOG_SOCNET_GROUP_ID",
"BLOG_GROUP_SITE_ID",
"CODE",
"PATH");
1625 if(!empty($arGroup))
1626 $arFilter[
"BLOG_GROUP_ID"] = $arGroup[
"ID"];
1628 $arFilter[
"BLOG_GROUP_ID"] = $arGroupID;
1629 if(
count($arAvBlog) > 0)
1633 if($bUserSocNet ==
"Y")
1640 CTimeZone::Disable();
1642 array(
"DATE_PUBLISH" =>
"DESC"),
1645 array(
"nTopCount" => $numPosts),
1648 CTimeZone::Enable();
1650 while ($arPost = $dbPosts->Fetch())
1656 $dbUser = CUser::GetByID($arPost[
"AUTHOR_ID"]);
1657 $arUser = $dbUser->Fetch();
1658 $author =
CBlogUser::GetUserName($arPost[
"BLOG_USER_ALIAS"], $arUser[
"NAME"], $arUser[
"LAST_NAME"], $arUser[
"LOGIN"], $arUser[
"SECOND_NAME"]);
1661 array(
"&",
"<",
">",
"\""),
1662 array(
"&",
"<",
">",
"""),
1663 $author.
": ".$arPost[
"TITLE"]);
1666 $arImages = Array();
1668 while ($arImage =
$res->Fetch())
1669 $arImages[$arImage[
'ID']] = $arImage[
'FILE_ID'];
1671 $arDate =
ParseDateTime($arPost[
"DATE_PUBLISH"], CSite::GetDateFormat(
"FULL", $arPost[
"BLOG_GROUP_SITE_ID"]));
1672 $date = date(
"r", mktime($arDate[
"HH"], $arDate[
"MI"], $arDate[
"SS"], $arDate[
"MM"], $arDate[
"DD"], $arDate[
"YYYY"]));
1674 if($arPost[
"PATH"] <>
'')
1676 $url =
"http://".$serverName.htmlspecialcharsbx(str_replace(
"#post_id#",
CBlogPost::GetPostID($arPost[
"ID"], $arPost[
"CODE"], $arPathTemplates[
"ALLOW_POST_CODE"]), $arPost[
"PATH"]));
1678 elseif(!empty($arPathTemplates))
1680 if(intval($arPost[
"BLOG_SOCNET_GROUP_ID"]) > 0 && $arPathTemplates[
"GROUP_BLOG_POST"] <>
'')
1681 $url =
"http://".$serverName.htmlspecialcharsbx(CComponentEngine::MakePathFromTemplate($arPathTemplates[
"GROUP_BLOG_POST"],
array(
"blog" => $arPost[
"BLOG_URL"],
"post_id" =>
CBlogPost::GetPostID($arPost[
"ID"], $arPost[
"CODE"], $arPathTemplates[
"ALLOW_POST_CODE"]),
"user_id"=>$arPost[
"BLOG_OWNER_ID"],
"group_id"=>$arPost[
"BLOG_SOCNET_GROUP_ID"])));
1683 $url =
"http://".$serverName.htmlspecialcharsbx(CComponentEngine::MakePathFromTemplate($arPathTemplates[
"BLOG_POST"],
array(
"blog" => $arPost[
"BLOG_URL"],
"post_id" =>
CBlogPost::GetPostID($arPost[
"ID"], $arPost[
"CODE"], $arPathTemplates[
"ALLOW_POST_CODE"]),
"user_id"=>$arPost[
"BLOG_OWNER_ID"],
"group_id"=>$arPost[
"BLOG_SOCNET_GROUP_ID"])));
1685 elseif($postTemplate <>
'')
1687 $url =
"http://".$serverName.htmlspecialcharsbx(CComponentEngine::MakePathFromTemplate($postTemplate,
array(
"blog" => $arPost[
"BLOG_URL"],
"post_id"=>$arPost[
"ID"],
"user_id"=>$arPost[
"BLOG_OWNER_ID"],
"group_id"=>$arPost[
"BLOG_SOCNET_GROUP_ID"])));
1695 if($arPathTemplates[
"USER"] <>
'')
1697 $authorURL =
"http://".$serverName.htmlspecialcharsbx(CComponentEngine::MakePathFromTemplate($arPathTemplates[
"USER"],
array(
"user_id"=>$arPost[
"AUTHOR_ID"],
"group_id"=>$arPost[
"BLOG_SOCNET_GROUP_ID"])));
1699 elseif($userTemplate <>
'')
1700 $authorURL =
"http://".$serverName.htmlspecialcharsbx(CComponentEngine::MakePathFromTemplate($userTemplate,
array(
"user_id"=>$arPost[
"AUTHOR_ID"],
"group_id"=>$arPost[
"BLOG_SOCNET_GROUP_ID"])));
1702 $authorURL =
"http://".$serverName.htmlspecialcharsbx(
CBlogUser::PreparePath($arPost[
"AUTHOR_ID"], $arPost[
"BLOG_GROUP_SITE_ID"]));
1704 if($arPost[
"DETAIL_TEXT_TYPE"] ==
"html")
1705 $text = $parser->convert_to_rss($arPost[
"DETAIL_TEXT"], $arImages,
array(
"HTML" =>
"Y",
"ANCHOR" =>
"Y",
"IMG" =>
"Y",
"SMILES" =>
"Y",
"NL2BR" =>
"N",
"QUOTE" =>
"Y",
"CODE" =>
"Y"),
true, $arParserParams);
1707 $text = $parser->convert_to_rss($arPost[
"DETAIL_TEXT"], $arImages,
false,
true, $arParserParams);
1709 if($bUserSocNet !=
"Y")
1710 $text .=
"<br /><a href=\"".$url.
"\">".
GetMessage(
"BLG_GB_RSS_DETAIL").
"</a>";
1711 $text =
"<![CDATA[".$text.
"]]>";
1713 if (
$type ==
"rss.92")
1715 $rssText .=
" <item>\n";
1716 $rssText .=
" <title>".$title.
"</title>\n";
1717 $rssText .=
" <description>".$text.
"</description>\n";
1718 $rssText .=
" <link>".$url.
"</link>\n";
1719 $rssText .=
" </item>\n";
1724 $rssText .=
" <item>\n";
1725 $rssText .=
" <title>".$title.
"</title>\n";
1726 $rssText .=
" <description>".$text.
"</description>\n";
1727 $rssText .=
" <link>".$url.
"</link>\n";
1728 $rssText .=
" <guid>".$url.
"</guid>\n";
1729 $rssText .=
" <pubDate>".$date.
"</pubDate>\n";
1731 $rssText .=
" <category>".$category.
"</category>\n";
1732 $rssText .=
" </item>\n";
1737 $atomID =
"tag:".$serverName.
":/".$arPost[
"ID"];
1739 $timeISO = mktime($arDate[
"HH"], $arDate[
"MI"], $arDate[
"SS"], $arDate[
"MM"], $arDate[
"DD"], $arDate[
"YYYY"]);
1740 $dateISO = date(
"Y-m-d\\TH:i:s", $timeISO).mb_substr(date(
"O", $timeISO), 0, 3).
":".mb_substr(date(
"O", $timeISO), -2, 2);
1744 $rssText .=
"<entry>\n";
1745 $rssText .=
" <title type=\"text/html\">".$title.
"</title>\n";
1746 $rssText .=
" <link rel=\"alternate\" type=\"text/html\" href=\"".$url.
"\"/>\n";
1747 $rssText .=
" <issued>".$dateISO.
"</issued>\n";
1748 $rssText .=
" <modified>".$nowISO.
"</modified>\n";
1749 $rssText .=
" <id>".$atomID.
"</id>\n";
1750 $rssText .=
" <content type=\"text/html\" mode=\"escaped\" xml:lang=\"".$language.
"\" xml:base=\"".$blogURL.
"\">\n";
1751 $rssText .=
$text.
"\n";
1752 $rssText .=
" </content>\n";
1753 $rssText .=
" <link rel=\"related\" type=\"text/html\" href=\"".$url.
"\" title=\"".$titleRel.
"\"/>\n";
1754 $rssText .=
" <author>\n";
1755 $rssText .=
" <name>".htmlspecialcharsbx($author).
"</name>\n";
1756 $rssText .=
" <url>".$authorURL.
"</url>\n";
1757 $rssText .=
" </author>\n";
1758 $rssText .=
"</entry>\n";
1763 if (
$type ==
"rss.92")
1764 $rssText .=
" </channel>\n</rss>";
1766 $rssText .=
" </channel>\n</rss>";
1768 $rssText .=
"\n\n</feed>";
1779 return $DB->Query(
"DELETE FROM b_blog_socnet WHERE BLOG_ID = ".
$ID.
"",
true);
1788 $dbRes =
$DB->Query(
"select BLOG_ID from b_blog_socnet WHERE BLOG_ID = ".
$ID.
"",
true);
1794 public static function SendPing($blogName, $blogUrl, $blogXml =
"")
1801 $query =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>
1803 <methodName>weblogUpdates.ping</methodName>
1806 <value>".htmlspecialcharsEx($blogName).
"</value>
1813 <value>".htmlspecialcharsEx($blogXml).
"</value>
1818 if($urls = COption::GetOptionString(
"blog",
"send_blog_ping_address",
"http://ping.blogs.yandex.ru/RPC2\r\nhttp://rpc.weblogs.com/RPC2"))
1820 $arUrls = explode(
"\r\n", $urls);
1821 foreach($arUrls as $v)
1825 $v = str_replace(
"http://",
"", $v);
1826 $pingUrl = str_replace(
"https://",
"", $v);
1827 $arPingUrl = explode(
"/", $v);
1829 $host = trim($arPingUrl[0]);
1830 unset($arPingUrl[0]);
1831 $path =
"/".trim(implode(
"/", $arPingUrl));
1833 $arHost = explode(
":",
$host);
1834 $port = ((
count($arHost) > 1) ? $arHost[1] : 80);
1839 $fp = @fsockopen(
$host, $port, $errnum, $errstr, 30);
1843 $out .=
"POST ".$path.
" HTTP/1.1\r\n";
1844 $out .=
"Host: ".$host.
" \r\n";
1845 $out .=
"Content-type: text/xml\r\n";
1846 $out .=
"User-Agent: bitrixBlog\r\n";
1847 $out .=
"Content-length: ".mb_strlen(
$query).
"\r\n\r\n";
1861 if(CModule::IncludeModule(
"socialnetwork"))
1863 if(intval($user_id) <= 0)
1865 $user_id = intval($user_id);
1870 $strSql =
"SELECT b.ENTITY_ID as ID, bf.OPERATION_ID, bf.ROLE, bu.USER_ID, blg.NAME as BLOG_NAME, blg.ID as BLOG_ID, g.NAME
1871 FROM b_sonet_features b
1872 INNER JOIN b_sonet_features2perms bf ON (b.ID = bf.FEATURE_ID AND bf.OPERATION_ID in ('write_post', 'full_post', 'premoderate_post', 'moderate_post'))
1873 LEFT JOIN b_blog blg ON blg.SOCNET_GROUP_ID = b.ENTITY_ID
1874 LEFT JOIN b_blog_group blgg ON (blg.GROUP_ID = blgg.ID AND blgg.SITE_ID = '".$DB->ForSql(
$site_id).
"')
1875 LEFT JOIN b_sonet_user2group bu ON (b.ENTITY_ID = bu.GROUP_ID AND bf.ROLE = bu.ROLE AND bu.USER_ID = '".$user_id.
"')
1876 LEFT JOIN b_sonet_group g on (b.ENTITY_ID = g.ID)
1878 b.FEATURE='blog' AND b.ACTIVE='Y' AND b.ENTITY_TYPE = 'G'";
1882 $strSql =
"SELECT b.ENTITY_ID as ID, bf.OPERATION_ID, bf.ROLE, ur.FIRST_USER_ID, ur.SECOND_USER_ID, blg.NAME as BLOG_NAME, blg.ID as BLOG_ID, u.LOGIN, u.NAME, u.LAST_NAME
1883 FROM b_sonet_features b
1884 INNER JOIN b_sonet_features2perms bf ON (b.ID = bf.FEATURE_ID AND bf.OPERATION_ID in ('write_post', 'full_post', 'premoderate_post', 'moderate_post'))
1885 LEFT JOIN b_blog blg ON (blg.OWNER_ID = b.ENTITY_ID AND blg.USE_SOCNET = 'Y')
1886 LEFT JOIN b_blog_group blgg ON (blg.GROUP_ID = blgg.ID AND blgg.SITE_ID = '".$DB->ForSql(
$site_id).
"')
1887 LEFT JOIN b_sonet_user_relations ur ON (((ur.FIRST_USER_ID = '".$user_id.
"' AND ur.SECOND_USER_ID=b.ENTITY_ID)
1888 OR (ur.SECOND_USER_ID = '".$user_id.
"' AND ur.FIRST_USER_ID=b.ENTITY_ID))
1889 AND ur.RELATION = 'F')
1890 LEFT JOIN b_user u ON (b.ENTITY_ID = u.ID)
1892 b.FEATURE='blog' AND b.ACTIVE='Y' AND b.ENTITY_TYPE = 'U'";
const BLOG_PUBLISH_STATUS_PUBLISH
static GetByOwnerID($ID, $arGroup=Array())
static GetFilterOperation($key)
static GetSocnetReadByBlog($ID)
static GetBlogUserPostPerms($ID, $userID=0)
static SendPing($blogName, $blogUrl, $blogXml="")
static GetBlogUserCommentPerms($ID, $userID)
static BuildRSSAll($GroupId=0, $type="RSS .92", $numPosts=10, $siteID=SITE_ID, $postTemplate="", $userTemplate="", $arAvBlog=Array(), $arPathTemplates=Array(), $arGroupID=Array(), $bUserSocNet="N")
static GetWritableSocnetBlogs($user_id=0, $type="U", $site_id=SITE_ID)
static PrepareSql(&$arFields, $arOrder, &$arFilter, $arGroupBy, $arSelectFields, $obUserFieldsSql=false)
static CanUserCreateBlog($userID=0)
static DeleteSocnetRead($ID)
static CheckFields($ACTION, &$arFields, $ID=0)
static BuildRSS($ID, $type="RSS .92", $numPosts=10, $blogTemplate="", $postTemplate="", $userTemplate="", $bSoNet=false, $arParams=Array())
static GetBySocNetGroupID($ID, $arGroup=Array())
static SetBlogPerms($ID, $arPerms=array(), $permsType=BLOG_PERMS_POST)
static CanUserManageBlog($ID, $userID=0)
static IsBlogOwner($ID, $userID)
static GetByUrl($BLOG_URL, $arGroup=Array())
static CanUserViewBlogs($arUserGroups=array())
static PreparePath($blogUrl, $siteID=False, $is404=True, $userID=0, $groupID=0)
static IsFriend($ID, $userID)
static GetPostID($postID, $code, $allowCode=false)
static GetBlogUserPostPerms($id, $userId)
static PreparePath($blogUrl, $postID=0, $siteID=False, $is404=True, $userID=0, $groupID=0)
static GetUserPerms($arGroups, $blogID, $postID=0, $permsType=BLOG_PERMS_POST, $selectType=BLOG_BY_BLOG_USER_ID)
static GetUserName($alias, $name, $lastName, $login, $secondName="")
static GetUserGroups($ID, $blogID, $joinStatus="", $selectType=BLOG_BY_BLOG_USER_ID, $bUrl=false)
static PreparePath($userID=0, $siteID=False, $is404=True)
static GetByID($ID, $selectType=BLOG_BY_BLOG_USER_ID)
static DeleteIndex($MODULE_ID, $ITEM_ID=false, $PARAM1=false, $PARAM2=false, $SITE_ID=false)
static GetList($arOrder=Array("ID"=> "DESC"), $arFilter=Array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
static Update($ID, $arFields)
static GetList($arOrder=Array("ID"=> "DESC"), $arFilter=Array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
static GetList( $arOrder=["ID"=> "DESC"], $arFilter=[], $arGroupBy=false, $arNavStartParams=false, $arSelectFields=[])
static GetList($arOrder=Array("ID"=> "DESC"), $arFilter=Array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
static GetList($arOrder=Array("ID"=> "DESC"), $arFilter=Array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
static Update($ID, $arFields)
static GetList($arOrder=Array("ID"=> "DESC"), $arFilter=Array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
ExecuteModuleEventEx($arEvent, $arParams=[])
ParseDateTime($datetime, $format=false)
DelDuplicateSort(&$arSort)
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
GetMessage($name, $aReplace=null)
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']