5 const UFBlockPostDocField =
'UF_BLOG_POST_DOC';
13 protected static $Instance = NULL;
14 public static function getInstance()
16 if(self::$Instance == NULL)
17 self::$Instance =
new self;
19 return self::$Instance;
21 private function __clone(){}
22 private function __construct(){}
26 return CModule::IncludeModule(
'blog') && CModule::IncludeModule(
'iblock');
32 self::UFBlockPostDocField,
34 self::UFAnswerIdField,
35 self::UFCategroryCodeField,
36 self::UFOriginalIdField,
41 public function Idea($IdeaId =
false)
43 return CIdeaManagmentIdea::GetInstance($IdeaId);
64 $numPosts = intval($numPosts);
66 $type = mb_strtolower(preg_replace(
"/[^a-zA-Z0-9.]/is",
"",
$type));
67 if(!in_array(
$type,
array(
"rss2.0",
"atom.03",
"rss.92")))
72 if(!is_array($arFilterExt))
73 $arFilterExt =
array();
76 "BLOG_CODE" => $BlogCode,
78 "NOW_ISO" => date(
"Y-m-d\TH:i:s").mb_substr(date(
"O"), 0, 3).
":".mb_substr(date(
"O"), -2, 2),
84 "CURRENT_USER_ID" =>
$USER->IsAuthorized() ?
$USER->GetID() :0,
85 "CATEGORIES" => CIdeaManagment::getInstance()->Idea()->GetCategoryList(),
90 if ($arSite = CSite::GetList(
"sort",
"asc",
array(
"LID" =>
SITE_ID))->Fetch())
92 $arSettings[
"SERVER_NAME"] = $arSite[
"SERVER_NAME"];
93 $arSettings[
"CHARSET"] = $arSite[
"CHARSET"];
94 $arSettings[
"LANGUAGE"] = $arSite[
"LANGUAGE_ID"];
97 if ($arSettings[
"SERVER_NAME"] ==
'')
99 if (defined(
"SITE_SERVER_NAME") && SITE_SERVER_NAME <>
'')
100 $arSettings[
"SERVER_NAME"] = SITE_SERVER_NAME;
102 $arSettings[
"SERVER_NAME"] = COption::GetOptionString(
"main",
"server_name",
"");
105 if ($arSettings[
"CHARSET"] ==
'')
110 $arSettings[
"CHARSET"] =
"windows-1251";
113 $arSettings[
"BLOG_URL"] =
"http://".$arSettings[
"SERVER_NAME"];
114 if(!empty($arPathTemplates) && $arPathTemplates[
"INDEX"] <>
'')
115 $arSettings[
"BLOG_URL"] .= $arPathTemplates[
"INDEX"];
116 if(!empty($arPathTemplates) && $arPathTemplates[
"CUSTOM_TITLE"] <>
'')
119 $arSettings[
"BLOG_NAME"] =
"\"".htmlspecialcharsbx($arSite[
"NAME"]).
"\" (".$arSettings[
"SERVER_NAME"].
")";
122 if ($arSettings[
"RSS_TYPE"] ==
"rss.92")
124 $arSettings[
"RSS"] .=
"<".
"?xml version=\"1.0\" encoding=\"".$arSettings[
"CHARSET"].
"\"?".
">\n\n";
125 $arSettings[
"RSS"] .=
"<rss version=\".92\">\n";
126 $arSettings[
"RSS"] .=
" <channel>\n";
127 $arSettings[
"RSS"] .=
" <title>".$arSettings[
"BLOG_NAME"].
"</title>\n";
128 $arSettings[
"RSS"] .=
" <link>".$arSettings[
"BLOG_URL"].
"</link>\n";
129 $arSettings[
"RSS"] .=
" <guid>".$arSettings[
"BLOG_URL"].
"</guid>\n";
130 $arSettings[
"RSS"] .=
" <language>".$arSettings[
"LANGUAGE"].
"</language>\n";
131 $arSettings[
"RSS"] .=
" <docs>http://backend.userland.com/rss092</docs>\n";
132 $arSettings[
"RSS"] .=
"\n";
134 elseif ($arSettings[
"RSS_TYPE"] ==
"rss2.0")
136 $arSettings[
"RSS"] .=
"<".
"?xml version=\"1.0\" encoding=\"".$arSettings[
"CHARSET"].
"\"?".
">\n\n";
137 $arSettings[
"RSS"] .=
"<rss version=\"2.0\">\n";
138 $arSettings[
"RSS"] .=
" <channel>\n";
139 $arSettings[
"RSS"] .=
" <title>".$arSettings[
"BLOG_NAME"].
"</title>\n";
140 $arSettings[
"RSS"] .=
" <description>".$arSettings[
"BLOG_NAME"].
"</description>\n";
141 $arSettings[
"RSS"] .=
" <link>".$arSettings[
"BLOG_URL"].
"</link>\n";
142 $arSettings[
"RSS"] .=
" <language>".$arSettings[
"LANGUAGE"].
"</language>\n";
143 $arSettings[
"RSS"] .=
" <docs>http://backend.userland.com/rss2</docs>\n";
144 $arSettings[
"RSS"] .=
" <pubDate>".$arSettings[
"NOW"].
"</pubDate>\n";
145 $arSettings[
"RSS"] .=
"\n";
147 elseif ($arSettings[
"RSS_TYPE"] ==
"atom.03")
149 $atomID =
"tag:".htmlspecialcharsbx($arSettings[
"SERVER_NAME"]).
",".date(
"Y-m-d");
151 $arSettings[
"RSS"] .=
"<".
"?xml version=\"1.0\" encoding=\"".$arSettings[
"CHARSET"].
"\"?".
">\n\n";
152 $arSettings[
"RSS"] .=
"<feed version=\"0.3\" xmlns=\"http://purl.org/atom/ns#\" xml:lang=\"".$arSettings[
"LANGUAGE"].
"\">\n";
153 $arSettings[
"RSS"] .=
" <title>".$arSettings[
"BLOG_NAME"].
"</title>\n";
154 $arSettings[
"RSS"] .=
" <tagline>".$arSettings[
"BLOG_URL"].
"</tagline>\n";
155 $arSettings[
"RSS"] .=
" <id>".$atomID.
"</id>\n";
156 $arSettings[
"RSS"] .=
" <link rel=\"alternate\" type=\"text/html\" href=\"".$arSettings[
"BLOG_URL"].
"\" />\n";
157 $arSettings[
"RSS"] .=
" <copyright>Copyright (c) ".$arSettings[
"SERVER_NAME"].
"</copyright>\n";
158 $arSettings[
"RSS"] .=
" <modified>".$arSettings[
"NOW_ISO"].
"</modified>\n";
159 $arSettings[
"RSS"] .=
"\n";
162 $arParserParams = Array(
163 "imageWidth" => $arPathTemplates[
"IMAGE_MAX_WIDTH"],
164 "imageHeight" => $arPathTemplates[
"IMAGE_MAX_HEIGHT"],
170 $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", self::UFCategroryCodeField);
173 "<=DATE_PUBLISH" => ConvertTimeStamp(
false,
"FULL",
false),
175 "BLOG_ENABLE_RSS" =>
"Y",
178 if(intval($arSettings[
"BLOG_CODE"]) === $arSettings[
"BLOG_CODE"])
179 $arFilter[
"BLOG_ID"] = $arSettings[
"BLOG_CODE"];
181 $arFilter[
"BLOG_URL"] = $arSettings[
"BLOG_CODE"];
186 CTimeZone::Disable();
188 array(
"DATE_PUBLISH" =>
"DESC"),
191 array(
"nTopCount" => $numPosts),
196 while($arPost = $dbPosts->Fetch())
202 $arAuthorUser =
$USER->GetByID($arPost[
"AUTHOR_ID"])->Fetch();
203 $author =
CBlogUser::GetUserName($arPost[
"BLOG_USER_ALIAS"], $arAuthorUser[
"NAME"], $arAuthorUser[
"LAST_NAME"], $arAuthorUser[
"LOGIN"], $arAuthorUser[
"SECOND_NAME"]);
206 array(
"&",
"<",
">",
"\""),
207 array(
"&",
"<",
">",
"""),
208 $author.
": ".$arPost[
"TITLE"]
214 while ($arImage =
$res->Fetch())
215 $arImages[$arImage[
'ID']] = $arImage[
'FILE_ID'];
217 $arDate =
ParseDateTime($arPost[
"DATE_PUBLISH"], CSite::GetDateFormat(
"FULL", $arPost[
"BLOG_GROUP_SITE_ID"]));
218 $date = date(
"r", mktime($arDate[
"HH"], $arDate[
"MI"], $arDate[
"SS"], $arDate[
"MM"], $arDate[
"DD"], $arDate[
"YYYY"]));
220 if(!empty($arPathTemplates))
221 $url =
htmlspecialcharsbx(
"http://".$arSettings[
"SERVER_NAME"].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"])));
226 if(isset($arPost[self::UFCategroryCodeField]) && is_array($arSettings[
"CATEGORIES"][mb_strtoupper($arPost[self::UFCategroryCodeField])]))
227 $category =
htmlspecialcharsbx($arSettings[
"CATEGORIES"][mb_strtoupper($arPost[self::UFCategroryCodeField])][
"NAME"]);
229 if($arPathTemplates[
"USER"] <>
'')
230 $authorURL =
htmlspecialcharsbx(
"http://".$arSettings[
"SERVER_NAME"].CComponentEngine::MakePathFromTemplate($arPathTemplates[
"USER"],
array(
"user_id"=>$arPost[
"AUTHOR_ID"],
"group_id"=>$arPost[
"BLOG_SOCNET_GROUP_ID"])));
234 if($arPost[
"DETAIL_TEXT_TYPE"] ==
"html")
235 $IdeaText = $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);
237 $IdeaText = $parser->convert_to_rss($arPost[
"DETAIL_TEXT"], $arImages,
false,
true, $arParserParams);
239 $IdeaText .=
"<br /><a href=\"".$url.
"\">".
GetMessage(
"BLG_GB_RSS_DETAIL").
"</a>";
240 $IdeaText =
"<![CDATA[".$IdeaText.
"]]>";
242 if ($arSettings[
"RSS_TYPE"] ==
"rss.92")
244 $arSettings[
"RSS"] .=
" <item>\n";
245 $arSettings[
"RSS"] .=
" <title>".$title.
"</title>\n";
246 $arSettings[
"RSS"] .=
" <description>".$IdeaText.
"</description>\n";
247 $arSettings[
"RSS"] .=
" <link>".$url.
"</link>\n";
248 $arSettings[
"RSS"] .=
" </item>\n";
249 $arSettings[
"RSS"] .=
"\n";
251 elseif ($arSettings[
"RSS_TYPE"] ==
"rss2.0")
253 $arSettings[
"RSS"] .=
" <item>\n";
254 $arSettings[
"RSS"] .=
" <title>".$title.
"</title>\n";
255 $arSettings[
"RSS"] .=
" <description>".$IdeaText.
"</description>\n";
256 $arSettings[
"RSS"] .=
" <link>".$url.
"</link>\n";
257 $arSettings[
"RSS"] .=
" <guid>".$url.
"</guid>\n";
258 $arSettings[
"RSS"] .=
" <pubDate>".$date.
"</pubDate>\n";
260 $arSettings[
"RSS"] .=
" <category>".$category.
"</category>\n";
261 $arSettings[
"RSS"] .=
" </item>\n";
262 $arSettings[
"RSS"] .=
"\n";
264 elseif ($arSettings[
"RSS_TYPE"] ==
"atom.03")
266 $atomID =
"tag:".htmlspecialcharsbx($arSettings[
"SERVER_NAME"]).
":".$arBlog[
"URL"].
"/".$arPost[
"ID"];
268 $timeISO = mktime($arDate[
"HH"], $arDate[
"MI"], $arDate[
"SS"], $arDate[
"MM"], $arDate[
"DD"], $arDate[
"YYYY"]);
269 $dateISO = date(
"Y-m-d\TH:i:s", $timeISO).mb_substr(date(
"O", $timeISO), 0, 3).
":".mb_substr(date(
"O", $timeISO), -2, 2);
273 $arSettings[
"RSS"] .=
"<entry>\n";
274 $arSettings[
"RSS"] .=
" <title type=\"text/html\">".$title.
"</title>\n";
275 $arSettings[
"RSS"] .=
" <link rel=\"alternate\" type=\"text/html\" href=\"".$url.
"\"/>\n";
276 $arSettings[
"RSS"] .=
" <issued>".$dateISO.
"</issued>\n";
277 $arSettings[
"RSS"] .=
" <modified>".$arSettings[
"NOW_ISO"].
"</modified>\n";
278 $arSettings[
"RSS"] .=
" <id>".$atomID.
"</id>\n";
279 $arSettings[
"RSS"] .=
" <content type=\"text/html\" mode=\"escaped\" xml:lang=\"".$arSettings[
"LANGUAGE"].
"\" xml:base=\"".$arSettings[
"BLOG_URL"].
"\">\n";
280 $arSettings[
"RSS"] .= $IdeaText.
"\n";
281 $arSettings[
"RSS"] .=
" </content>\n";
282 $arSettings[
"RSS"] .=
" <link rel=\"related\" type=\"text/html\" href=\"".$url.
"\" title=\"".$titleRel.
"\"/>\n";
283 $arSettings[
"RSS"] .=
" <author>\n";
284 $arSettings[
"RSS"] .=
" <name>".htmlspecialcharsbx($author).
"</name>\n";
285 $arSettings[
"RSS"] .=
" <url>".$authorURL.
"</url>\n";
286 $arSettings[
"RSS"] .=
" </author>\n";
287 $arSettings[
"RSS"] .=
"</entry>\n";
288 $arSettings[
"RSS"] .=
"\n";
292 if ($arSettings[
"RSS_TYPE"] ==
"rss.92")
293 $arSettings[
"RSS"] .=
" </channel>\n</rss>";
294 elseif ($arSettings[
"RSS_TYPE"] ==
"rss2.0")
295 $arSettings[
"RSS"] .=
" </channel>\n</rss>";
296 elseif ($arSettings[
"RSS_TYPE"] ==
"atom.03")
297 $arSettings[
"RSS"] .=
"\n\n</feed>";
299 return $arSettings[
"RSS"];
308 return CIdeaManagment::getInstance()->Idea()->GetCategoryList();
313 CIdeaManagment::getInstance()->Idea()->SetCategoryListId(
$ID);
319 return CIdeaManagment::getInstance()->Idea()->GetStatusList();
324 return CIdeaManagment::getInstance()->Idea()->GetCategorySequence($CODE);
const BLOG_PUBLISH_STATUS_PUBLISH
static GetPostID($postID, $code, $allowCode=false)
static GetBlogUserPostPerms($id, $userId)
static PreparePath($blogUrl, $postID=0, $siteID=False, $is404=True, $userID=0, $groupID=0)
static GetUserName($alias, $name, $lastName, $login, $secondName="")
static PreparePath($userID=0, $siteID=False, $is404=True)
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=[])
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
GetCategoryList($CategoryIB=false)
const UFCategroryCodeField
GetCategorySequenceByCode($CODE, $arCategoryList=false)
IdeaComment($CommentId=false)
Notification($arNotification=array())
GetRSS($BlogCode, $type="rss2.0", $numPosts=10, $siteID=SITE_ID, $arPathTemplates=Array(), $arFilterExt=array())
Class CIdeaManagmentNotify
ParseDateTime($datetime, $format=false)
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)
GetMessage($name, $aReplace=null)
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)