1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
idea.php
См. документацию.
1<?
3{
4 //User Fields Id
5 const UFBlockPostDocField = 'UF_BLOG_POST_DOC';
6 const UFStatusField = 'UF_STATUS';
7 const UFAnswerIdField = 'UF_ANSWER_ID';
8 const UFCategroryCodeField = 'UF_CATEGORY_CODE';
9 const UFOriginalIdField = 'UF_ORIGINAL_ID';
10 //End -> User Fields Id
11
12 //Instance
13 protected static $Instance = NULL;
14 public static function getInstance()
15 {
16 if(self::$Instance == NULL)
17 self::$Instance = new self;
18
19 return self::$Instance;
20 }
21 private function __clone(){}
22 private function __construct(){}
23
24 public function IsAvailable()
25 {
26 return CModule::IncludeModule('blog') && CModule::IncludeModule('iblock');
27 }
28
29 public function GetUserFieldsArray()
30 {
31 return array(
32 self::UFBlockPostDocField,
33 self::UFStatusField,
34 self::UFAnswerIdField,
35 self::UFCategroryCodeField,
36 self::UFOriginalIdField,
37 );
38 }
39
40 //xAlias
41 public function Idea($IdeaId = false)
42 {
43 return CIdeaManagmentIdea::GetInstance($IdeaId);
44 }
45 //xAlias
46 public function IdeaComment($CommentId = false)
47 {
48 return new CIdeaManagmentIdeaComment($CommentId);
49 }
50 //xAlias
51 public function Notification($arNotification = array())
52 {
53 return new CIdeaManagmentNotify($arNotification);
54 }
55
56 /*************TOOLS**********/
57 public function GetRSS($BlogCode, $type = "rss2.0", $numPosts = 10, $siteID = SITE_ID, $arPathTemplates = Array(), $arFilterExt = array())
58 {
59 if(!$this->IsAvailable())
60 return false;
61
62 global $USER;
63 //Post CNT
64 $numPosts = intval($numPosts);
65 //RSS type
66 $type = mb_strtolower(preg_replace("/[^a-zA-Z0-9.]/is", "", $type));
67 if(!in_array($type, array("rss2.0", "atom.03", "rss.92")))
68 $type = "rss.92";
69
70
71 //Prepare Extended filter
72 if(!is_array($arFilterExt))
73 $arFilterExt = array();
74
75 $arSettings = array(
76 "BLOG_CODE" => $BlogCode,
77 "NOW" => date("r"),
78 "NOW_ISO" => date("Y-m-d\TH:i:s").mb_substr(date("O"), 0, 3).":".mb_substr(date("O"), -2, 2),
79 "SERVER_NAME" => "",
80 "CHARSET" => "",
81 "LANGUAGE" => "",
82 "RSS" => "", //RSS Content
83 "RSS_TYPE" => $type,
84 "CURRENT_USER_ID" => $USER->IsAuthorized() ?$USER->GetID() :0,
85 "CATEGORIES" => CIdeaManagment::getInstance()->Idea()->GetCategoryList(),
86 );
87
88
89 //Get Settings if possible
90 if ($arSite = CSite::GetList("sort", "asc", array("LID" => SITE_ID))->Fetch())
91 {
92 $arSettings["SERVER_NAME"] = $arSite["SERVER_NAME"];
93 $arSettings["CHARSET"] = $arSite["CHARSET"];
94 $arSettings["LANGUAGE"] = $arSite["LANGUAGE_ID"];
95 }
96 //Get Server Name
97 if ($arSettings["SERVER_NAME"] == '')
98 {
99 if (defined("SITE_SERVER_NAME") && SITE_SERVER_NAME <> '')
100 $arSettings["SERVER_NAME"] = SITE_SERVER_NAME;
101 else
102 $arSettings["SERVER_NAME"] = COption::GetOptionString("main", "server_name", "");
103 }
104 //Get Site Charset
105 if ($arSettings["CHARSET"] == '')
106 {
107 if (defined("SITE_CHARSET") && SITE_CHARSET <> '')
108 $arSettings["CHARSET"] = SITE_CHARSET;
109 else
110 $arSettings["CHARSET"] = "windows-1251";
111 }
112
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"] <> '')
117 $arSettings["BLOG_NAME"] = htmlspecialcharsbx($arPathTemplates["CUSTOM_TITLE"]);
118 else
119 $arSettings["BLOG_NAME"] = "\"".htmlspecialcharsbx($arSite["NAME"])."\" (".$arSettings["SERVER_NAME"].")";
120
121 //Prepare Head Type part
122 if ($arSettings["RSS_TYPE"] == "rss.92")
123 {
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";
133 }
134 elseif ($arSettings["RSS_TYPE"] == "rss2.0")
135 {
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";
146 }
147 elseif ($arSettings["RSS_TYPE"] == "atom.03")
148 {
149 $atomID = "tag:".htmlspecialcharsbx($arSettings["SERVER_NAME"]).",".date("Y-m-d");
150
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";
160 }
161
162 $arParserParams = Array(
163 "imageWidth" => $arPathTemplates["IMAGE_MAX_WIDTH"],
164 "imageHeight" => $arPathTemplates["IMAGE_MAX_HEIGHT"],
165 );
166 //Text Parser
167 $parser = new blogTextParser();
168
169 //SELECT
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);
171 //WHERE
173 "<=DATE_PUBLISH" => ConvertTimeStamp(false, "FULL", false),
174 "PUBLISH_STATUS" => BLOG_PUBLISH_STATUS_PUBLISH,
175 "BLOG_ENABLE_RSS" => "Y",
176 "MICRO" => "N",
177 );
178 if(intval($arSettings["BLOG_CODE"]) === $arSettings["BLOG_CODE"])
179 $arFilter["BLOG_ID"] = $arSettings["BLOG_CODE"];
180 else
181 $arFilter["BLOG_URL"] = $arSettings["BLOG_CODE"];
182 //Extend standart filter
183 $arFilter = array_merge($arFilter, $arFilterExt);
184
185
186 CTimeZone::Disable();
187 $dbPosts = CBlogPost::GetList(
188 array("DATE_PUBLISH" => "DESC"),
189 $arFilter,
190 false,
191 array("nTopCount" => $numPosts),
192 $arSelFields
193 );
194 CTimeZone::Enable();
195
196 while($arPost = $dbPosts->Fetch())
197 {
198 //Can read
199 if (CBlogPost::GetBlogUserPostPerms($arPost["ID"], $arSettings["CURRENT_USER_ID"]) < BLOG_PERMS_READ)
200 continue;
201
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"]);
204
205 $title = str_replace(
206 array("&", "<", ">", "\""),
207 array("&amp;", "&lt;", "&gt;", "&quot;"),
208 $author.": ".$arPost["TITLE"]
209 );
210
211 //Idea Images
212 $arImages = Array();
213 $res = CBlogImage::GetList(array("ID"=>"ASC"),array("POST_ID"=>$arPost["ID"], "BLOG_ID"=>$arPost["BLOG_ID"], "IS_COMMENT" => "N"));
214 while ($arImage = $res->Fetch())
215 $arImages[$arImage['ID']] = $arImage['FILE_ID'];
216
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"]));
219
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"])));
222 else
223 $url = htmlspecialcharsbx("http://".$arSettings["SERVER_NAME"].CBlogPost::PreparePath(htmlspecialcharsbx($arPost["BLOG_URL"]), $arPost["ID"], $arPost["BLOG_GROUP_SITE_ID"]));
224
225 $category = "";
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"]);
228
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"])));
231 else
232 $authorURL = htmlspecialcharsbx("http://".$arSettings["SERVER_NAME"].CBlogUser::PreparePath($arPost["AUTHOR_ID"], $arPost["BLOG_GROUP_SITE_ID"]));
233
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);
236 else
237 $IdeaText = $parser->convert_to_rss($arPost["DETAIL_TEXT"], $arImages, false, true, $arParserParams);
238
239 $IdeaText .= "<br /><a href=\"".$url."\">".GetMessage("BLG_GB_RSS_DETAIL")."</a>";
240 $IdeaText = "<![CDATA[".$IdeaText."]]>";
241
242 if ($arSettings["RSS_TYPE"] == "rss.92")
243 {
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";
250 }
251 elseif ($arSettings["RSS_TYPE"] == "rss2.0")
252 {
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";
259 if($category <> '')
260 $arSettings["RSS"] .= " <category>".$category."</category>\n";
261 $arSettings["RSS"] .= " </item>\n";
262 $arSettings["RSS"] .= "\n";
263 }
264 elseif ($arSettings["RSS_TYPE"] == "atom.03")
265 {
266 $atomID = "tag:".htmlspecialcharsbx($arSettings["SERVER_NAME"]).":".$arBlog["URL"]."/".$arPost["ID"];
267
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);
270
271 $titleRel = htmlspecialcharsbx($arPost["TITLE"]);
272
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";
289 }
290 }
291
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>";
298
299 return $arSettings["RSS"];
300 }
301
302 //DEPRECATED!!! DON'T USE!!! Will Be Removed
303 //Alias
304 public function GetCategoryList($CategoryIB = false)
305 {
306 if($CategoryIB>0)
307 $this->SetCategoryListId($CategoryIB);
308 return CIdeaManagment::getInstance()->Idea()->GetCategoryList();
309 }
310 //Alias
311 public function SetCategoryListId($ID)
312 {
313 CIdeaManagment::getInstance()->Idea()->SetCategoryListId($ID);
314 return $this;
315 }
316 //Alias
317 public function GetStatusList()
318 {
319 return CIdeaManagment::getInstance()->Idea()->GetStatusList();
320 }
321 //Alias
322 function GetCategorySequenceByCode($CODE, $arCategoryList = false)
323 {
324 return CIdeaManagment::getInstance()->Idea()->GetCategorySequence($CODE);
325 }
326}
327?>
$type
Определения options.php:106
const BLOG_PERMS_READ
Определения include.php:6
const BLOG_PUBLISH_STATUS_PUBLISH
Определения include.php:47
static GetPostID($postID, $code, $allowCode=false)
Определения blog_post.php:1219
static GetBlogUserPostPerms($id, $userId)
Определения blog_post.php:109
static PreparePath($blogUrl, $postID=0, $siteID=False, $is404=True, $userID=0, $groupID=0)
Определения blog_post.php:620
static GetUserName($alias, $name, $lastName, $login, $secondName="")
Определения blog_user.php:569
static PreparePath($userID=0, $siteID=False, $is404=True)
Определения blog_user.php:579
static GetList($arOrder=Array("ID"=> "DESC"), $arFilter=Array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
Определения blog_image.php:122
static GetList( $arOrder=["ID"=> "DESC"], $arFilter=[], $arGroupBy=false, $arNavStartParams=false, $arSelectFields=[])
Определения blog_post.php:554
Определения functions.php:6
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$res
Определения filter_act.php:7
if($ajaxMode) $ID
Определения get_user.php:27
Class CIdeaManagment
Определения idea.php:3
const UFOriginalIdField
Определения idea.php:9
const UFStatusField
Определения idea.php:6
GetCategoryList($CategoryIB=false)
Определения idea.php:304
const UFCategroryCodeField
Определения idea.php:8
SetCategoryListId($ID)
Определения idea.php:311
const UFAnswerIdField
Определения idea.php:7
GetCategorySequenceByCode($CODE, $arCategoryList=false)
Определения idea.php:322
GetStatusList()
Определения idea.php:317
IdeaComment($CommentId=false)
Определения idea.php:46
IsAvailable()
Определения idea.php:24
Notification($arNotification=array())
Определения idea.php:51
Idea($IdeaId=false)
Определения idea.php:41
GetUserFieldsArray()
Определения idea.php:29
GetRSS($BlogCode, $type="rss2.0", $numPosts=10, $siteID=SITE_ID, $arPathTemplates=Array(), $arFilterExt=array())
Определения idea.php:57
Class CIdeaManagmentIdeaComment
Определения idea_idea_comment.php:3
Class CIdeaManagmentNotify
Определения idea_notify.php:3
$siteID
Определения cron_frame.php:12
global $USER
Определения csv_new_run.php:40
const SITE_CHARSET
Определения include.php:62
ParseDateTime($datetime, $format=false)
Определения tools.php:638
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)
Определения tools.php:2701
GetMessage($name, $aReplace=null)
Определения tools.php:3397
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
$dateISO
Определения result_rec.php:112
$title
Определения pdf.php:123
const SITE_ID
Определения sonet_set_content_view.php:12
$arFilter
Определения user_search.php:106
$url
Определения iframe.php:7