1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
blog_comment.php
См. документацию.
1<?php
2
3require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/blog/general/blog_comment.php");
4
6{
7 /*************** ADD, UPDATE, DELETE *****************/
8 public static function Add($arFields, $bSearchIndex = true)
9 {
11
12 $arFields1 = array();
13 foreach ($arFields as $key => $value)
14 {
15 if (mb_substr($key, 0, 1) == "=")
16 {
17 $arFields1[mb_substr($key, 1)] = $value;
18 unset($arFields[$key]);
19 }
20 }
21
23 return false;
24 elseif(!$USER_FIELD_MANAGER->CheckFields("BLOG_COMMENT", 0, $arFields, (isset($arFields["AUTHOR_ID"]) && intval($arFields["AUTHOR_ID"]) > 0 ? intval($arFields["AUTHOR_ID"]) : false)))
25 return false;
26
27 foreach(GetModuleEvents("blog", "OnBeforeCommentAdd", true) as $arEvent)
28 {
29 if (ExecuteModuleEventEx($arEvent, Array(&$arFields))===false)
30 return false;
31 }
32
33 $arInsert = $DB->PrepareInsert("b_blog_comment", $arFields);
34
35 foreach ($arFields1 as $key => $value)
36 {
37 if ($arInsert[0] <> '')
38 $arInsert[0] .= ", ";
39 $arInsert[0] .= $key;
40 if ($arInsert[1] <> '')
41 $arInsert[1] .= ", ";
42 $arInsert[1] .= $value;
43 }
44
45 $ID = False;
46 if ($arInsert[0] <> '')
47 {
48 $strSql =
49 "INSERT INTO b_blog_comment(".$arInsert[0].") ".
50 "VALUES(".$arInsert[1].")";
51 $DB->Query($strSql);
52
53 $ID = intval($DB->LastID());
54 }
55
56 if ($ID)
57 {
58 $USER_FIELD_MANAGER->Update("BLOG_COMMENT", $ID, $arFields, (isset($arFields["AUTHOR_ID"]) && intval($arFields["AUTHOR_ID"]) > 0 ? intval($arFields["AUTHOR_ID"]) : false));
59
60 $arComment = CBlogComment::GetByID($ID);
61
62 $arPostFields = array("=NUM_COMMENTS_ALL" => "NUM_COMMENTS_ALL + 1");
63 if ($arComment["PUBLISH_STATUS"] == BLOG_PUBLISH_STATUS_PUBLISH)
64 {
65 $arPostFields["=NUM_COMMENTS"] = "NUM_COMMENTS + 1";
66 }
67 CBlogPost::Update($arComment["POST_ID"], $arPostFields, false);
68 }
69
70 $arBlog = CBlog::GetByID($arComment["BLOG_ID"]);
71 if ($arBlog["USE_SOCNET"] == "Y")
72 {
73 $arFields["SC_PERM"] = CBlogComment::GetSocNetCommentPerms($arComment["POST_ID"]);
74 }
75
76 foreach(GetModuleEvents("blog", "OnCommentAdd", true) as $arEvent)
77 {
78 ExecuteModuleEventEx($arEvent, Array($ID, &$arFields));
79 }
80
81 if (
82 $bSearchIndex
83 && CModule::IncludeModule("search")
84 )
85 {
86 if (CBlogUserGroup::GetGroupPerms(1, $arComment["BLOG_ID"], $arComment["POST_ID"], BLOG_PERMS_POST) >= BLOG_PERMS_READ)
87 {
88 if (
89 $arBlog["SEARCH_INDEX"] == "Y"
90 && $arComment["PUBLISH_STATUS"] == BLOG_PUBLISH_STATUS_PUBLISH
91 )
92 {
93 $arGroup = CBlogGroup::GetByID(isset($arFields["SEARCH_GROUP_ID"]) && intval($arFields["SEARCH_GROUP_ID"]) > 0 ? $arFields["SEARCH_GROUP_ID"] : $arBlog["GROUP_ID"]);
94
95 if (($arFields["PATH"] ?? '') <> '')
96 {
97 $arFields["PATH"] = str_replace("#comment_id#", $ID, $arFields["PATH"]);
98 $arCommentSite = array($arGroup["SITE_ID"] => $arFields["PATH"]);
99 }
100 else
101 {
102 $arCommentSite = array(
103 $arGroup["SITE_ID"] => CBlogPost::PreparePath(
104 $arBlog["URL"],
105 $arComment["POST_ID"],
106 $arGroup["SITE_ID"],
107 false,
108 $arBlog["OWNER_ID"],
109 $arBlog["SOCNET_GROUP_ID"]
110 )
111 );
112 }
113
114 if (
115 $arBlog["USE_SOCNET"] == "Y"
116 && CModule::IncludeModule("extranet")
117 )
118 {
119 $arPostSiteExt = CExtranet::GetSitesByLogDestinations($arFields["SC_PERM"]);
120 foreach($arPostSiteExt as $lid)
121 {
122 if (!array_key_exists($lid, $arCommentSite))
123 {
124 $arCommentSite[$lid] = str_replace(
125 array("#user_id#", "#post_id#"),
126 array($arBlog["OWNER_ID"], $arComment["POST_ID"]),
127 COption::GetOptionString("socialnetwork", "userblogpost_page", false, $lid)
128 );
129 }
130 }
131 }
132
133 $searchContent = blogTextParser::killAllTags($arComment["POST_TEXT"]);
134 $searchContent .= "\r\n" . $USER_FIELD_MANAGER->OnSearchIndex("BLOG_COMMENT", $arComment["ID"]);
135
136 $arSearchIndex = array(
137 "SITE_ID" => $arCommentSite,
138 "LAST_MODIFIED" => $arComment["DATE_CREATE"],
139 "PARAM1" => "COMMENT",
140 "PARAM2" => $arComment["BLOG_ID"]."|".$arComment["POST_ID"],
141 "PERMISSIONS" => array(2),
142 "TITLE" => CSearch::KillTags($arComment["TITLE"]),
143 "BODY" => CSearch::KillTags($searchContent),
144 "INDEX_TITLE" => false,
145 "USER_ID" => (intval($arComment["AUTHOR_ID"]) > 0) ? $arComment["AUTHOR_ID"] : false,
146 "ENTITY_TYPE_ID" => "BLOG_COMMENT",
147 "ENTITY_ID" => $arComment["ID"],
148 );
149
150 if($arBlog["USE_SOCNET"] == "Y")
151 {
152 CBlogSearch::fillSearchPermsWithSonetGroupData($arFields["SC_PERM"], $arComment["AUTHOR_ID"], $arSearchIndex, array("INIT_PERMISSIONS" => "Y"));
153 }
154
155 if (
156 $arBlog["USE_SOCNET"] == "Y"
157 || mb_strpos($arBlog["URL"], "idea_") === 0
158 )
159 {
160 // get mentions
162 }
163
164 if($arComment["TITLE"] == '')
165 {
166 $arSearchIndex["TITLE"] = mb_substr(CSearch::KillTags($searchContent), 0, 100);
167 }
168
169 CSearch::Index("blog", "C".$ID, $arSearchIndex);
170 }
171 }
172 }
173
174 return $ID;
175 }
176
177 public static function Update($ID, $arFields, $bSearchIndex = true)
178 {
179 global $DB, $USER_FIELD_MANAGER;
180
181 $ID = intval($ID);
182
183 if (($arFields["PATH"] ?? null) <> '')
184 {
185 $arFields["PATH"] = str_replace("#comment_id#", $ID, $arFields["PATH"]);
186 }
187
188 $arFields1 = array();
189 foreach ($arFields as $key => $value)
190 {
191 if (mb_substr($key, 0, 1) == "=")
192 {
193 $arFields1[mb_substr($key, 1)] = $value;
194 unset($arFields[$key]);
195 }
196 }
197
198 if (!CBlogComment::CheckFields("UPDATE", $arFields, $ID))
199 return false;
200 elseif(!$USER_FIELD_MANAGER->CheckFields("BLOG_COMMENT", $ID, $arFields, (isset($arFields["AUTHOR_ID"]) && intval($arFields["AUTHOR_ID"]) > 0 ? intval($arFields["AUTHOR_ID"]) : false)))
201 return false;
202
203 foreach(GetModuleEvents("blog", "OnBeforeCommentUpdate", true) as $arEvent)
204 {
205 if (ExecuteModuleEventEx($arEvent, Array($ID, &$arFields))===false)
206 return false;
207 }
208
209 $strUpdate = $DB->PrepareUpdate("b_blog_comment", $arFields);
210
211 foreach ($arFields1 as $key => $value)
212 {
213 if ($strUpdate <> '')
214 $strUpdate .= ", ";
215 $strUpdate .= $key."=".$value." ";
216 }
217
218 if ($strUpdate <> '')
219 {
220 if (!empty($arFields["PUBLISH_STATUS"]))
221 {
222 $arComment = CBlogComment::GetByID($ID);
223 if($arComment["PUBLISH_STATUS"] == BLOG_PUBLISH_STATUS_PUBLISH && $arFields["PUBLISH_STATUS"] != BLOG_PUBLISH_STATUS_PUBLISH)
224 CBlogPost::Update($arComment["POST_ID"], array("=NUM_COMMENTS" => "NUM_COMMENTS - 1"), false);
225 elseif($arComment["PUBLISH_STATUS"] != BLOG_PUBLISH_STATUS_PUBLISH && $arFields["PUBLISH_STATUS"] == BLOG_PUBLISH_STATUS_PUBLISH)
226 CBlogPost::Update($arComment["POST_ID"], array("=NUM_COMMENTS" => "NUM_COMMENTS + 1"), false);
227 }
228
229 $strSql =
230 "UPDATE b_blog_comment SET ".
231 " ".$strUpdate." ".
232 "WHERE ID = ".$ID." ";
233 $DB->Query($strSql);
234 unset($GLOBALS["BLOG_COMMENT"]["BLOG_COMMENT_CACHE_".$ID]);
235
236 $USER_FIELD_MANAGER->Update("BLOG_COMMENT", $ID, $arFields, (isset($arFields["AUTHOR_ID"]) && intval($arFields["AUTHOR_ID"]) > 0 ? intval($arFields["AUTHOR_ID"]) : false));
237
238 $arComment = CBlogComment::GetByID($ID);
239 $arBlog = CBlog::GetByID($arComment["BLOG_ID"]);
240 if($arBlog["USE_SOCNET"] == "Y")
241 $arFields["SC_PERM"] = CBlogComment::GetSocNetCommentPerms($arComment["POST_ID"]);
242
243 foreach(GetModuleEvents("blog", "OnCommentUpdate", true) as $arEvent)
244 ExecuteModuleEventEx($arEvent, Array($ID, &$arFields));
245
246 if ($bSearchIndex && CModule::IncludeModule("search"))
247 {
248 $newPostPerms = CBlogUserGroup::GetGroupPerms(1, $arComment["BLOG_ID"], $arComment["POST_ID"], BLOG_PERMS_POST);
249
250 if ($arBlog["SEARCH_INDEX"] != "Y" || $arComment["PUBLISH_STATUS"] != BLOG_PUBLISH_STATUS_PUBLISH)
251 {
252 CSearch::Index("blog", "C".$ID,
253 array(
254 "TITLE" => "",
255 "BODY" => ""
256 )
257 );
258 }
259 else
260 {
261 $arGroup = CBlogGroup::GetByID(isset($arFields["SEARCH_GROUP_ID"]) && intval($arFields["SEARCH_GROUP_ID"]) > 0 ? $arFields["SEARCH_GROUP_ID"] : $arBlog["GROUP_ID"]);
262
263 if (($arFields["PATH"] ?? '') <> '')
264 {
265 $arFields["PATH"] = str_replace("#comment_id#", $ID, $arFields["PATH"]);
266 $arPostSite = array($arGroup["SITE_ID"] => $arFields["PATH"]);
267 }
268 elseif(($arComment["PATH"] ?? '') <> '')
269 {
270 $arComment["PATH"] = str_replace("#comment_id#", $ID, $arComment["PATH"]);
271 $arPostSite = array($arGroup["SITE_ID"] => $arComment["PATH"]);
272 }
273 else
274 {
275 $arPostSite = array(
276 $arGroup["SITE_ID"] => CBlogPost::PreparePath(
277 $arBlog["URL"],
278 $arComment["POST_ID"],
279 $arGroup["SITE_ID"],
280 false,
281 $arBlog["OWNER_ID"],
282 $arBlog["SOCNET_GROUP_ID"]
283 )
284 );
285 }
286
287 $searchContent = blogTextParser::killAllTags($arComment["POST_TEXT"]);
288 $searchContent .= "\r\n" . $USER_FIELD_MANAGER->OnSearchIndex("BLOG_COMMENT", $arComment["ID"]);
289
290 $arSearchIndex = array(
291 "SITE_ID" => $arPostSite,
292 "LAST_MODIFIED" => $arComment["DATE_CREATE"],
293 "PARAM1" => "COMMENT",
294 "PARAM2" => $arComment["BLOG_ID"]."|".$arComment["POST_ID"],
295 "PERMISSIONS" => array(2),
296 "TITLE" => CSearch::KillTags($arComment["TITLE"]),
297 "BODY" => CSearch::KillTags($searchContent),
298 "USER_ID" => (intval($arComment["AUTHOR_ID"]) > 0) ? $arComment["AUTHOR_ID"] : false,
299 "ENTITY_TYPE_ID" => "BLOG_COMMENT",
300 "ENTITY_ID" => $arComment["ID"],
301 );
302
303 if($arBlog["USE_SOCNET"] == "Y")
304 {
305 CBlogSearch::fillSearchPermsWithSonetGroupData($arFields["SC_PERM"], $arComment["AUTHOR_ID"], $arSearchIndex, array("INIT_PERMISSIONS" => "Y"));
306 }
307
308 if (
309 $arBlog["USE_SOCNET"] == "Y"
310 || mb_strpos($arBlog["URL"], "idea_") === 0
311 )
312 {
313 // get mentions
315 }
316
317 if($arComment["TITLE"] == '')
318 {
319 //$arPost = CBlogPost::GetByID($arComment["POST_ID"]);
320 $arSearchIndex["TITLE"] = mb_substr(CSearch::KillTags($searchContent), 0, 100);
321 }
322
323 CSearch::Index("blog", "C".$ID, $arSearchIndex, True);
324 }
325 }
326
327 return $ID;
328 }
329
330 return False;
331 }
332
333 //*************** SELECT *********************/
334 public static function GetList($arOrder = Array("ID" => "DESC"), $arFilter = Array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
335 {
337
338 $obUserFieldsSql = new CUserTypeSQL;
339 $obUserFieldsSql->SetEntity("BLOG_COMMENT", "C.ID");
340 $obUserFieldsSql->SetSelect($arSelectFields);
341 $obUserFieldsSql->SetFilter($arFilter);
342 $obUserFieldsSql->SetOrder($arOrder);
343
344 if (count($arSelectFields) <= 0)
345 $arSelectFields = array("ID", "BLOG_ID", "POST_ID", "PARENT_ID", "AUTHOR_ID", "AUTHOR_NAME", "AUTHOR_EMAIL", "AUTHOR_IP", "AUTHOR_IP1", "TITLE", "POST_TEXT");
346 if(in_array("*", $arSelectFields))
347 $arSelectFields = array("ID", "BLOG_ID", "POST_ID", "PARENT_ID", "AUTHOR_ID", "AUTHOR_NAME", "AUTHOR_EMAIL", "AUTHOR_IP", "AUTHOR_IP1", "TITLE", "POST_TEXT", "SHARE_DEST", "DATE_CREATE", "USER_LOGIN", "USER_NAME", "USER_LAST_NAME", "USER_SECOND_NAME", "USER_EMAIL", "USER", "BLOG_USER_ALIAS", "BLOG_USER_AVATAR", "BLOG_URL", "BLOG_OWNER_ID", "BLOG_SOCNET_GROUP_ID", "BLOG_ACTIVE", "BLOG_GROUP_ID", "BLOG_GROUP_SITE_ID", "BLOG_USE_SOCNET", "PERMS", "PUBLISH_STATUS");
348 if((array_key_exists("BLOG_GROUP_SITE_ID", $arFilter) || in_array("BLOG_GROUP_SITE_ID", $arSelectFields)) && !in_array("BLOG_URL", $arSelectFields))
349 $arSelectFields[] = "BLOG_URL";
350
351
352 // FIELDS -->
354 "ID" => array("FIELD" => "C.ID", "TYPE" => "int"),
355 "BLOG_ID" => array("FIELD" => "C.BLOG_ID", "TYPE" => "int"),
356 "POST_ID" => array("FIELD" => "C.POST_ID", "TYPE" => "int"),
357 "PARENT_ID" => array("FIELD" => "C.PARENT_ID", "TYPE" => "int"),
358 "AUTHOR_ID" => array("FIELD" => "C.AUTHOR_ID", "TYPE" => "int"),
359 "AUTHOR_NAME" => array("FIELD" => "C.AUTHOR_NAME", "TYPE" => "string"),
360 "AUTHOR_EMAIL" => array("FIELD" => "C.AUTHOR_EMAIL", "TYPE" => "string"),
361 "AUTHOR_IP" => array("FIELD" => "C.AUTHOR_IP", "TYPE" => "string"),
362 "AUTHOR_IP1" => array("FIELD" => "C.AUTHOR_IP1", "TYPE" => "string"),
363 "TITLE" => array("FIELD" => "C.TITLE", "TYPE" => "string"),
364 "POST_TEXT" => array("FIELD" => "C.POST_TEXT", "TYPE" => "string"),
365 "DATE_CREATE" => array("FIELD" => "C.DATE_CREATE", "TYPE" => "datetime"),
366 "DATE_CREATE_TS" => array("FIELD" => "UNIX_TIMESTAMP(C.DATE_CREATE)", "TYPE" => "int"),
367 "PATH" => array("FIELD" => "C.PATH", "TYPE" => "string"),
368 "PUBLISH_STATUS" => array("FIELD" => "C.PUBLISH_STATUS", "TYPE" => "string"),
369 "HAS_PROPS" => array("FIELD" => "C.HAS_PROPS", "TYPE" => "string"),
370 "SHARE_DEST" => array("FIELD" => "C.SHARE_DEST", "TYPE" => "string"),
371
372 "USER_LOGIN" => array("FIELD" => "U.LOGIN", "TYPE" => "string", "FROM" => "LEFT JOIN b_user U ON (C.AUTHOR_ID = U.ID)"),
373 "USER_NAME" => array("FIELD" => "U.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_user U ON (C.AUTHOR_ID = U.ID)"),
374 "USER_LAST_NAME" => array("FIELD" => "U.LAST_NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_user U ON (C.AUTHOR_ID = U.ID)"),
375 "USER_SECOND_NAME" => array("FIELD" => "U.SECOND_NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_user U ON (C.AUTHOR_ID = U.ID)"),
376 "USER_EMAIL" => array("FIELD" => "U.EMAIL", "TYPE" => "string", "FROM" => "LEFT JOIN b_user U ON (C.AUTHOR_ID = U.ID)"),
377 "USER" => 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 (C.AUTHOR_ID = U.ID)"),
378
379 "BLOG_USER_ALIAS" => array("FIELD" => "BU.ALIAS", "TYPE" => "string", "FROM" => "LEFT JOIN b_blog_user BU ON (C.AUTHOR_ID = BU.USER_ID)"),
380 "BLOG_USER_AVATAR" => array("FIELD" => "BU.AVATAR", "TYPE" => "int", "FROM" => "LEFT JOIN b_blog_user BU ON (C.AUTHOR_ID = BU.USER_ID)"),
381
382 "BLOG_URL" => array("FIELD" => "B.URL", "TYPE" => "string", "FROM" => "INNER JOIN b_blog B ON (C.BLOG_ID = B.ID)"),
383 "BLOG_OWNER_ID" => array("FIELD" => "B.OWNER_ID", "TYPE" => "string", "FROM" => "INNER JOIN b_blog B ON (C.BLOG_ID = B.ID)"),
384 "BLOG_SOCNET_GROUP_ID" => array("FIELD" => "B.SOCNET_GROUP_ID", "TYPE" => "string", "FROM" => "INNER JOIN b_blog B ON (C.BLOG_ID = B.ID)"),
385 "BLOG_ACTIVE" => array("FIELD" => "B.ACTIVE", "TYPE" => "string", "FROM" => "INNER JOIN b_blog B ON (C.BLOG_ID = B.ID)"),
386 "BLOG_GROUP_ID" => array("FIELD" => "B.GROUP_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_blog B ON (C.BLOG_ID = B.ID)"),
387 "BLOG_USE_SOCNET" => array("FIELD" => "B.USE_SOCNET", "TYPE" => "string", "FROM" => "INNER JOIN b_blog B ON (C.BLOG_ID = B.ID)"),
388 "BLOG_NAME" => array("FIELD" => "B.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_blog B ON (C.BLOG_ID = B.ID)"),
389
390 "BLOG_GROUP_SITE_ID" => array("FIELD" => "BG.SITE_ID", "TYPE" => "string", "FROM" => "
391 INNER JOIN b_blog BGS ON (C.BLOG_ID = BGS.ID)
392 INNER JOIN b_blog_group BG ON (BGS.GROUP_ID = BG.ID)"),
393 "PERMS" => Array(),
394
395 "SOCNET_BLOG_READ" => array("FIELD" => "BSR.BLOG_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_blog_socnet BSR ON (C.BLOG_ID = BSR.BLOG_ID)"),
396
397 "POST_CODE" => array("FIELD" => "BP.CODE", "TYPE" => "string", "FROM" => "INNER JOIN b_blog_post BP ON (C.POST_ID = BP.ID)"),
398 "POST_TITLE" => array("FIELD" => "BP.TITLE", "TYPE" => "string", "FROM" => "INNER JOIN b_blog_post BP ON (C.POST_ID = BP.ID)"),
399 "BLOG_POST_PUBLISH_STATUS" => array("FIELD" => "BP.PUBLISH_STATUS", "TYPE" => "string", "FROM" => "INNER JOIN b_blog_post BP ON (C.POST_ID = BP.ID)"),
400 "BLOG_POST_MICRO" => array("FIELD" => "BP.MICRO", "TYPE" => "string", "FROM" => "INNER JOIN b_blog_post BP ON (C.POST_ID = BP.ID)"),
401 );
402
403 if(isset($arFilter["GROUP_CHECK_PERMS"]))
404 {
405 if(is_array($arFilter["GROUP_CHECK_PERMS"]))
406 {
407 foreach($arFilter["GROUP_CHECK_PERMS"] as $val)
408 {
409 if(intval($val)>0)
410 {
411 $arFields["POST_PERM_".$val] = Array(
412 "FIELD" => "BUGP".$val.".PERMS",
413 "TYPE" => "string",
414 "FROM" => "LEFT JOIN b_blog_user_group_perms BUGP".$val."
415 ON (C.BLOG_ID = BUGP".$val.".BLOG_ID
416 AND C.POST_ID = BUGP".$val.".POST_ID
417 AND BUGP".$val.".USER_GROUP_ID = ".$val."
418 AND BUGP".$val.".PERMS_TYPE = '".BLOG_PERMS_COMMENT."')"
419 );
420 $arSelectFields[] = "POST_PERM_".$val;
421 }
422 }
423 }
424 else
425 {
426 if(intval($arFilter["GROUP_CHECK_PERMS"])>0)
427 {
428 $arFields["POST_PERM_".$arFilter["GROUP_CHECK_PERMS"]] = Array(
429 "FIELD" => "BUGP.PERMS",
430 "TYPE" => "string",
431 "FROM" => "LEFT JOIN b_blog_user_group_perms BUGP
432 ON (C.BLOG_ID = BUGP.BLOG_ID
433 AND C.POST_ID = BUGP.POST_ID
434 AND BUGP.USER_GROUP_ID = ".$arFilter["GROUP_CHECK_PERMS"]."
435 AND BUGP.PERMS_TYPE = '".BLOG_PERMS_COMMENT."')"
436 );
437 $arSelectFields[] = "POST_PERM_".$arFilter["GROUP_CHECK_PERMS"];
438 }
439 }
440 unset($arFilter["GROUP_CHECK_PERMS"]);
441 }
442
443 // rating variable
444 if (
445 in_array("RATING_TOTAL_VOTES", $arSelectFields) ||
446 in_array("RATING_TOTAL_POSITIVE_VOTES", $arSelectFields) ||
447 in_array("RATING_TOTAL_NEGATIVE_VOTES", $arSelectFields) ||
448 array_key_exists("RATING_TOTAL_VALUE", $arOrder) ||
449 array_key_exists("RATING_TOTAL_VOTES", $arOrder)
450 )
451 {
452 $arFields["RATING_TOTAL_VALUE"] = array("FIELD" => $DB->IsNull('RV.TOTAL_VALUE', '0'), "TYPE" => "double", "FROM" => "LEFT JOIN b_rating_voting RV ON ( RV.ENTITY_TYPE_ID = 'BLOG_COMMENT' AND RV.ENTITY_ID = C.ID )");
453 $arFields["RATING_TOTAL_VOTES"] = array("FIELD" => $DB->IsNull('RV.TOTAL_VOTES', '0'), "TYPE" => "int", "FROM" => "LEFT JOIN b_rating_voting RV ON ( RV.ENTITY_TYPE_ID = 'BLOG_COMMENT' AND RV.ENTITY_ID = C.ID )");
454 $arFields["RATING_TOTAL_POSITIVE_VOTES"] = array("FIELD" => $DB->IsNull('RV.TOTAL_POSITIVE_VOTES', '0'), "TYPE" => "int", "FROM" => "LEFT JOIN b_rating_voting RV ON ( RV.ENTITY_TYPE_ID = 'BLOG_COMMENT' AND RV.ENTITY_ID = C.ID )");
455 $arFields["RATING_TOTAL_NEGATIVE_VOTES"] = array("FIELD" => $DB->IsNull('RV.TOTAL_NEGATIVE_VOTES', '0'), "TYPE" => "int", "FROM" => "LEFT JOIN b_rating_voting RV ON ( RV.ENTITY_TYPE_ID = 'BLOG_COMMENT' AND RV.ENTITY_ID = C.ID )");
456 }
457
458 $strSqlUFFilter = '';
459 $bNeedDistinct = false;
460 $blogModulePermissions = $APPLICATION->GetGroupRight("blog");
461 if ($blogModulePermissions < "W")
462 {
463 $userId = ((is_object($USER) && $USER->IsAuthorized()) ? $USER->GetID() : 0);
464 $arUserGroups = CBlogUser::GetUserGroups($userId, 0, "Y", BLOG_BY_USER_ID);
465 $strUserGroups = "0";
466 foreach($arUserGroups as $v)
467 $strUserGroups .= ",".intval($v);
468
469 $arFields["PERMS"] = array("FIELD" => "UGP.PERMS", "TYPE" => "char", "FROM" => "INNER JOIN b_blog_user_group_perms UGP ON (C.POST_ID = UGP.POST_ID AND C.BLOG_ID = UGP.BLOG_ID AND UGP.USER_GROUP_ID IN (".$strUserGroups.") AND UGP.PERMS_TYPE = '".BLOG_PERMS_COMMENT."')");
470 $bNeedDistinct = true;
471 }
472 else
473 {
474 $arFields["PERMS"] = array("FIELD" => "'W'", "TYPE" => "string");
475 }
476
477 $arSqls = CBlog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields, $obUserFieldsSql);
478 if(array_key_exists("FOR_USER", $arFilter))
479 {
480 if(intval($arFilter["FOR_USER"]) > 0) //authorized user
481 {
482 $arSqls["FROM"] .=
483 " INNER JOIN b_blog_socnet_rights SR ON (C.POST_ID = SR.POST_ID) " .
484 " LEFT JOIN b_user_access UA ON (UA.ACCESS_CODE = SR.ENTITY AND UA.USER_ID = ".intval($arFilter["FOR_USER"]).") ";
485 if($arSqls["WHERE"] <> '')
486 $arSqls["WHERE"] .= " AND ";
487 $arSqls["WHERE"] .= " (UA.USER_ID is not NULL OR SR.ENTITY = 'AU') ";
488 }
489 else
490 {
491 $arSqls["FROM"] .=
492 " INNER JOIN b_blog_socnet_rights SR ON (C.POST_ID = SR.POST_ID) ".
493 " INNER JOIN b_user_access UA ON (UA.ACCESS_CODE = SR.ENTITY AND UA.USER_ID = 0)";
494 }
495 $bNeedDistinct = true;
496 }
497
498 if($bNeedDistinct)
499 $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "DISTINCT", $arSqls["SELECT"]);
500 else
501 $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
502
503 $r = $obUserFieldsSql->GetFilter();
504 if($r <> '')
505 $strSqlUFFilter = " (".$r.") ";
506
507 if (is_array($arGroupBy) && count($arGroupBy)==0)
508 {
509 $strSql =
510 "SELECT ".$arSqls["SELECT"]." ".
511 $obUserFieldsSql->GetSelect()." ".
512 "FROM b_blog_comment C ".
513 " ".$arSqls["FROM"]." ".
514 $obUserFieldsSql->GetJoin("C.ID")." ";
515 if ($arSqls["WHERE"] <> '')
516 $strSql .= "WHERE ".$arSqls["WHERE"]." ";
517 if($arSqls["WHERE"] <> '' && $strSqlUFFilter <> '')
518 $strSql .= " AND ".$strSqlUFFilter." ";
519 elseif($arSqls["WHERE"] == '' && $strSqlUFFilter <> '')
520 $strSql .= " WHERE ".$strSqlUFFilter." ";
521
522 if ($arSqls["GROUPBY"] <> '')
523 $strSql .= "GROUP BY ".$arSqls["GROUPBY"]." ";
524
525 //echo "!1!=".htmlspecialcharsbx($strSql)."<br>";
526
527 $dbRes = $DB->Query($strSql);
528 if ($arRes = $dbRes->Fetch())
529 return $arRes["CNT"];
530 else
531 return False;
532 }
533
534 $strSql =
535 "SELECT ".$arSqls["SELECT"]." ".
536 $obUserFieldsSql->GetSelect()." ".
537 "FROM b_blog_comment C ".
538 " ".$arSqls["FROM"]." ".
539 $obUserFieldsSql->GetJoin("C.ID")." ";
540 if ($arSqls["WHERE"] <> '')
541 $strSql .= "WHERE ".$arSqls["WHERE"]." ";
542 if($arSqls["WHERE"] <> '' && $strSqlUFFilter <> '')
543 $strSql .= " AND ".$strSqlUFFilter." ";
544 elseif($arSqls["WHERE"] == '' && $strSqlUFFilter <> '')
545 $strSql .= " WHERE ".$strSqlUFFilter." ";
546 if ($arSqls["GROUPBY"] <> '')
547 $strSql .= "GROUP BY ".$arSqls["GROUPBY"]." ";
548 if ($arSqls["ORDERBY"] <> '')
549 $strSql .= "ORDER BY ".$arSqls["ORDERBY"]." ";
550
551 if (is_array($arNavStartParams) && intval($arNavStartParams["nTopCount"])<=0)
552 {
553 $strSql_tmp =
554 "SELECT COUNT(".($bNeedDistinct? "DISTINCT ": "")."C.ID) as CNT ".
555 $obUserFieldsSql->GetSelect()." ".
556 "FROM b_blog_comment C ".
557 " ".$arSqls["FROM"]." ".
558 $obUserFieldsSql->GetJoin("C.ID")." ";
559 if ($arSqls["WHERE"] <> '')
560 $strSql_tmp .= "WHERE ".$arSqls["WHERE"]." ";
561 if($arSqls["WHERE"] <> '' && $strSqlUFFilter <> '')
562 $strSql_tmp .= " AND ".$strSqlUFFilter." ";
563 elseif($arSqls["WHERE"] == '' && $strSqlUFFilter <> '')
564 $strSql_tmp .= " WHERE ".$strSqlUFFilter." ";
565 if ($arSqls["GROUPBY"] <> '')
566 $strSql_tmp .= "GROUP BY ".$arSqls["GROUPBY"]." ";
567
568 //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>";
569
570 $dbRes = $DB->Query($strSql_tmp);
571 $cnt = 0;
572 if ($arSqls["GROUPBY"] == '')
573 {
574 if ($arRes = $dbRes->Fetch())
575 $cnt = $arRes["CNT"];
576 }
577 else
578 {
579 $cnt = $dbRes->SelectedRowsCount();
580 }
581
582 $dbRes = new CDBResult();
583
584 //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>";
585 $dbRes->SetUserFields($USER_FIELD_MANAGER->GetUserFields("BLOG_POST"));
586 $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
587 }
588 else
589 {
590 if (is_array($arNavStartParams) && intval($arNavStartParams["nTopCount"]) > 0)
591 $strSql .= "LIMIT ".intval($arNavStartParams["nTopCount"]);
592
593 //echo "!3!=".htmlspecialcharsbx($strSql)."<br>";
594
595 $dbRes = $DB->Query($strSql);
596 $dbRes->SetUserFields($USER_FIELD_MANAGER->GetUserFields("BLOG_POST"));
597 }
598 return $dbRes;
599 }
600}
const BLOG_PERMS_COMMENT
Определения include.php:43
const BLOG_BY_USER_ID
Определения include.php:55
const BLOG_PERMS_POST
Определения include.php:42
const BLOG_PERMS_READ
Определения include.php:6
const BLOG_PUBLISH_STATUS_PUBLISH
Определения include.php:47
global $APPLICATION
Определения include.php:80
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
Определения check_mail.php:18
Определения blog_comment.php:8
static GetByID($ID)
Определения blog_comment.php:170
static GetSocNetCommentPerms($postID=0)
Определения blog_comment.php:629
static CheckFields($ACTION, &$arFields, $ID=0)
Определения blog_comment.php:11
static GetMentionedUserID($arFields)
Определения blog_comment.php:888
static GetByID($ID)
Определения blog_group.php:64
static GetByID($ID)
Определения blog.php:931
static PrepareSql(&$arFields, $arOrder, &$arFilter, $arGroupBy, $arSelectFields, $obUserFieldsSql=false)
Определения blog.php:487
static PreparePath($blogUrl, $postID=0, $siteID=False, $is404=True, $userID=0, $groupID=0)
Определения blog_post.php:620
static GetGroupPerms($ID, $blogID, $postID=0, $permsType=BLOG_PERMS_POST)
Определения blog_user_group.php:209
static GetUserGroups($ID, $blogID, $joinStatus="", $selectType=BLOG_BY_BLOG_USER_ID, $bUrl=false)
Определения blog_user.php:436
static KillTags($str)
Определения search.php:2092
static Index($MODULE_ID, $ITEM_ID, $arFields, $bOverWrite=false, $SEARCH_SESS_ID='')
Определения search.php:1302
Определения blog_comment.php:6
static Add($arFields, $bSearchIndex=true)
Определения blog_comment.php:8
static Update($ID, $arFields, $bSearchIndex=true)
Определения blog_comment.php:177
static GetList($arOrder=Array("ID"=> "DESC"), $arFilter=Array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
Определения blog_comment.php:334
static Update($ID, $arFields, $bSearchIndex=true)
Определения blog_post.php:224
static fillSearchParamsWithMentionData($arMentionedUserID=array(), &$arSearchIndex=array())
Определения blog_search.php:77
static fillSearchPermsWithSonetGroupData($sonetPerms, $authorId, &$arSearchIndex=array(), $arParams=array())
Определения blog_search.php:7
Определения usertypesql.php:4
SetEntity($entity_id, $ID)
Определения usertypesql.php:16
static killAllTags($text)
Определения functions.php:473
$arFields
Определения dblapprove.php:5
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
global $USER_FIELD_MANAGER
Определения attempt.php:6
if($ajaxMode) $ID
Определения get_user.php:27
$_SERVER["DOCUMENT_ROOT"]
Определения cron_frame.php:9
global $DB
Определения cron_frame.php:29
global $USER
Определения csv_new_run.php:40
ExecuteModuleEventEx($arEvent, $arParams=[])
Определения tools.php:5214
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
Определения tools.php:5177
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
if(empty($signedUserToken)) $key
Определения quickway.php:257
</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."%"
Определения waybill.php:936
$val
Определения options.php:1793
$arRes
Определения options.php:104
$GLOBALS['_____370096793']
Определения update_client.php:1
$arFilter
Определения user_search.php:106
$dbRes
Определения yandex_detail.php:168