1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
wiki_socnet.php
См. документацию.
1<?php
2
3use \Bitrix\Main\Localization\Loc;
4
6
8{
9 public static $bActive = false;
10
11 public static $bInit = false;
12
13 public static $iCatId = 0;
14 public static $iCatLeftBorder = 0;
15 public static $iCatRightBorder = 0;
16
17 public static $iSocNetId = 0;
18
19 public static function Init($SOCNET_GROUP_ID, $IBLOCK_ID)
20 {
21 if (self::$bInit)
22 return self::$bInit;
23
24 if (!self::IsEnabledSocnet())
25 return false;
26
27 self::$iSocNetId = intval($SOCNET_GROUP_ID);
28
29 // detect work group
30 $arFilter = Array();
31 $arFilter['IBLOCK_ID'] = $IBLOCK_ID;
32 $arFilter['SOCNET_GROUP_ID'] = self::$iSocNetId;
33 $arFilter['CHECK_PERMISSIONS'] = 'N';
34 $rsSection = CIBlockSection::GetList(Array($by=>$order), $arFilter, true);
35 $obSection = $rsSection->GetNextElement();
36
37 if ($obSection !== false)
38 {
39 $arResult = $obSection->GetFields();
40 self::$iCatId = $arResult['ID'];
41 self::$iCatLeftBorder = $arResult['LEFT_MARGIN'];
42 self::$iCatRightBorder = $arResult['RIGHT_MARGIN'];
43 }
44 else
45 {
46 $arWorkGroup = CSocNetGroup::GetById(self::$iSocNetId);
47
48 $arFields = Array(
49 'ACTIVE' => 'Y',
50 'IBLOCK_ID' => $IBLOCK_ID,
51 'SOCNET_GROUP_ID' => self::$iSocNetId,
52 'CHECK_PERMISSIONS' => 'N',
53 'NAME' => $arWorkGroup['NAME']
54 );
55 $CIB_S = new CIBlockSection();
56 self::$iCatId = $CIB_S->Add($arFields);
57 if (self::$iCatId == false)
58 {
59 self::$bInit = false;
60 return false;
61 }
62 $rsSection = CIBlockSection::GetList(Array($by=>$order), $arFilter, true);
63 $obSection = $rsSection->GetNextElement();
64 if ($obSection == false)
65 {
66 self::$bInit = false;
67 return false;
68 }
69 $arResult = $obSection->GetFields();
70 self::$iCatLeftBorder = $arResult['LEFT_MARGIN'];
71 self::$iCatRightBorder = $arResult['RIGHT_MARGIN'];
72 }
73
74 self::$bInit = CSocNetFeatures::IsActiveFeature(SONET_ENTITY_GROUP, self::$iSocNetId, 'wiki');
75 return self::$bInit;
76 }
77
78 public static function IsEnabledSocnet()
79 {
80 if (self::$bActive)
81 return self::$bActive;
82
83 $bActive = false;
84 $rsEvents = GetModuleEvents('socialnetwork', 'OnFillSocNetFeaturesList');
85 while($arEvent = $rsEvents->Fetch())
86 {
87 if($arEvent['TO_MODULE_ID'] == 'wiki'
88 && $arEvent['TO_CLASS'] == 'CWikiSocnet')
89 {
90 $bActive = true;
91 break;
92 }
93 }
94 return $bActive;
95 }
96
97 public static function IsSocNet()
98 {
99 return self::$bInit;
100 }
101
102 public static function EnableSocnet($bActive = false)
103 {
104 if($bActive)
105 {
106 if(!self::IsEnabledSocnet())
107 {
108 RegisterModuleDependences('socialnetwork', 'OnFillSocNetFeaturesList', 'wiki', 'CWikiSocnet', 'OnFillSocNetFeaturesList');
109 RegisterModuleDependences('socialnetwork', 'OnFillSocNetMenu', 'wiki', 'CWikiSocnet', 'OnFillSocNetMenu');
110 RegisterModuleDependences('socialnetwork', 'OnParseSocNetComponentPath', 'wiki', 'CWikiSocnet', 'OnParseSocNetComponentPath');
111 RegisterModuleDependences('socialnetwork', 'OnInitSocNetComponentVariables', 'wiki', 'CWikiSocnet', 'OnInitSocNetComponentVariables');
112 }
113 }
114 else
115 {
116 if(self::IsEnabledSocnet())
117 {
118 UnRegisterModuleDependences('socialnetwork', 'OnFillSocNetFeaturesList', 'wiki', 'CWikiSocnet', 'OnFillSocNetFeaturesList');
119 UnRegisterModuleDependences('socialnetwork', 'OnFillSocNetMenu', 'wiki', 'CWikiSocnet', 'OnFillSocNetMenu');
120 UnRegisterModuleDependences('socialnetwork', 'OnParseSocNetComponentPath', 'wiki', 'CWikiSocnet', 'OnParseSocNetComponentPath');
121 UnRegisterModuleDependences('socialnetwork', 'OnInitSocNetComponentVariables', 'wiki', 'CWikiSocnet', 'OnInitSocNetComponentVariables');
122 }
123 }
124 }
125
127 {
129 'allowed' => array(SONET_ENTITY_GROUP),
130 'title' => GetMessage('WIKI_SOCNET_TAB'),
131 'operations' => array(
135 ),
136 'operation_titles' => array(
137 'view' => GetMessage('WIKI_PERM_READ'),
138 'write' => GetMessage('WIKI_PERM_WRITE'),
139 'delete' => GetMessage('WIKI_PERM_DELETE')
140 ),
141 'minoperation' => array('view'),
142 'subscribe_events' => array(
143 'wiki' => array(
144 'ENTITIES' => array(
146 'TITLE' => GetMessage('SOCNET_LOG_WIKI_GROUP'),
147 'TITLE_SETTINGS' => GetMessage('SOCNET_LOG_WIKI_GROUP_SETTINGS'),
148 'TITLE_SETTINGS_1' => GetMessage('SOCNET_LOG_WIKI_GROUP_SETTINGS_1'),
149 'TITLE_SETTINGS_2' => GetMessage('SOCNET_LOG_WIKI_GROUP_SETTINGS_2')
150 ),
151 ),
152 'OPERATION' => 'view',
153 'CLASS_FORMAT' => 'CWikiSocnet',
154 'METHOD_FORMAT' => 'FormatEvent_Wiki',
155 'HAS_CB' => 'Y',
156 'FULL_SET' => array("wiki", "wiki_del", "wiki_comment"),
157 "COMMENT_EVENT" => array(
158 "EVENT_ID" => "wiki_comment",
159 "OPERATION" => "view",
160 "OPERATION_ADD" => "view",
161 "ADD_CALLBACK" => array("CWikiSocnet", "AddComment_Wiki"),
162 "UPDATE_CALLBACK" => array("CSocNetLogTools", "UpdateComment_Forum"),
163 "DELETE_CALLBACK" => array("CSocNetLogTools", "DeleteComment_Forum"),
164 "CLASS_FORMAT" => "CWikiSocnet",
165 "METHOD_FORMAT" => "FormatComment_Wiki",
166 "RATING_TYPE_ID" => "FORUM_POST"
167 )
168 ),
169 'wiki_del' => array(
170 'ENTITIES' => array(
172 'TITLE' => GetMessage('SOCNET_LOG_WIKI_DEL_GROUP')
173 )
174 ),
175 'OPERATION' => 'view',
176 'CLASS_FORMAT' => 'CWikiSocnet',
177 'METHOD_FORMAT' => 'FormatEvent_Wiki',
178 'HIDDEN' => true,
179 'HAS_CB' => 'Y'
180 )
181 )
182 );
183 }
184
185 public static function OnFillSocNetMenu(&$arResult, $arParams = array())
186 {
187 $arResult['AllowSettings']['wiki'] = true;
188
189 $arResult['CanView']['wiki'] = ((array_key_exists('ActiveFeatures', $arResult) ? array_key_exists('wiki', $arResult['ActiveFeatures']) : true) && CSocNetFeaturesPerms::CanPerformOperation($GLOBALS['USER']->GetID(), $arParams['ENTITY_TYPE'], $arParams['ENTITY_ID'], 'wiki', 'view', CSocNetUser::IsCurrentUserModuleAdmin()));
190 $arResult['Title']['wiki'] = (array_key_exists('ActiveFeatures', $arResult) && array_key_exists('wiki', $arResult['ActiveFeatures']) && $arResult['ActiveFeatures']['wiki'] <> '' ? $arResult['ActiveFeatures']['wiki'] : GetMessage('WIKI_SOCNET_TAB'));
191
192 if (!array_key_exists('SEF_MODE', $arResult) || $arResult['SEF_MODE'] != 'N')
193 $arResult['Urls']['wiki'] = $arResult['Urls']['view'].'wiki/';
194 else
195 {
196 if (!array_key_exists('PAGE_VAR', $arResult))
197 $arResult['PAGE_VAR'] = 'page';
198
199 if (!array_key_exists('GROUP_VAR', $arResult))
200 $arResult['GROUP_VAR'] = 'group_id';
201
202 $arResult['Urls']['wiki'] = '?'.$arResult['PAGE_VAR'].'=group_wiki_index&'.$arResult['GROUP_VAR'].'='.$arResult['Group']['ID'];
203 }
204 }
205
206 public static function OnParseSocNetComponentPath(&$arUrlTemplates, &$arCustomPagesPath, $arParams)
207 {
208 if ($arParams['SEF_MODE'] == 'N')
209 {
210 $arMyUrlTemplates = array(
211 'group_wiki_index' => 'page=group_wiki_index&group_id=#group_id#',
212 'group_wiki_categories' => 'page=group_wiki_categories&group_id=#group_id#',
213 'group_wiki_search' => 'page=group_wiki_search&group_id=#group_id#',
214 'group_wiki_post' => 'page=group_wiki_post&group_id=#group_id#&title=#wiki_name#',
215 'group_wiki_post_edit' => 'page=group_wiki_post_edit&group_id=#group_id#&title=#wiki_name#',
216 'group_wiki_post_history' => 'page=group_wiki_post_history&group_id=#group_id#&title=#wiki_name#',
217 'group_wiki_post_history_diff' => 'page=group_wiki_post_history_diff&group_id=#group_id#&title=#wiki_name#',
218 'group_wiki_post_discussion' => 'page=group_wiki_post_discussion&group_id=#group_id#&title=#wiki_name#',
219 'group_wiki_post_category' => 'page=group_wiki_post_category&group_id=#group_id#&title=#wiki_name#',
220 'group_wiki_post_comment' => 'page=group_wiki_post_comment&#message_id=#message_id#'
221 );
222 }
223 else
224 {
225 $arMyUrlTemplates = array(
226 'group_wiki_index' => 'group/#group_id#/wiki/',
227 'group_wiki_categories' => 'group/#group_id#/wiki/categories/',
228 'group_wiki_search' => 'group/#group_id#/wiki/search/',
229 'group_wiki_post' => 'group/#group_id#/wiki/#wiki_name#/',
230 'group_wiki_post_edit' => 'group/#group_id#/wiki/#wiki_name#/edit/',
231 'group_wiki_post_history' => 'group/#group_id#/wiki/#wiki_name#/history/',
232 'group_wiki_post_history_diff' => 'group/#group_id#/wiki/#wiki_name#/history/diff/',
233 'group_wiki_post_discussion' => 'group/#group_id#/wiki/#wiki_name#/discussion/',
234 'group_wiki_post_category' => 'group/#group_id#/wiki/#wiki_name#/',
235 'group_wiki_post_comment' => 'group/#group_id#/wiki/#wiki_name#/?MID=#message_id##message#message_id#'
236 );
237 }
238
239 static $base_path = false;
240 if(!$base_path)
241 {
242 if(file_exists($_SERVER['DOCUMENT_ROOT'].'/bitrix/php_interface/wiki/'.SITE_ID.'/group_index.php'))
243 $base_path = '/bitrix/php_interface/wiki/'.SITE_ID.'/';
244 elseif(file_exists($_SERVER['DOCUMENT_ROOT'].'/bitrix/php_interface/wiki/group_index.php'))
245 $base_path = '/bitrix/php_interface/wiki/';
246 else
247 $base_path = '/bitrix/modules/wiki/socnet/';
248 }
249
250 foreach($arMyUrlTemplates as $page => $url)
251 {
252 $arUrlTemplates[$page] = $url;
253 $arCustomPagesPath[$page] = $base_path;
254 }
255 }
256
257 public static function OnInitSocNetComponentVariables(&$arVariableAliases, &$arCustomPagesPath)
258 {
259 $arVariableAliases['wiki_name'] = 'wiki_name';
260 $arVariableAliases['title'] = 'title';
261 $arVariableAliases['oper'] = 'oper';
262 $arVariableAliases['message_id'] = 'message_id';
263 }
264
265 public static function FormatEvent_Wiki($arFields, $arParams, $bMail = false)
266 {
267 $GLOBALS['APPLICATION']->SetAdditionalCSS('/bitrix/themes/.default/wiki_sonet_log.css');
268
270 'EVENT' => $arFields,
271 'CREATED_BY' => array(),
272 'ENTITY' => array(),
273 'EVENT_FORMATTED' => array(),
274 "CACHED_CSS_PATH" => array("/bitrix/themes/.default/wiki_sonet_log.css")
275 );
276
278
279 if (!$bMail)
281
282 if (
284 && intval($arFields['ENTITY_ID']) > 0
285 )
286 {
287 if ($bMail)
288 {
289 $arResult['ENTITY']['FORMATTED'] = $arFields['GROUP_NAME'];
290 $arResult['ENTITY']['TYPE_MAIL'] = GetMessage('WIKI_SOCNET_LOG_ENTITY_G');
291 }
292 else
293 {
294 $arSocNetAllowedSubscribeEntityTypesDesc = CSocNetAllowed::GetAllowedEntityTypesDesc();
295 $url = CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_GROUP'], array('group_id' => $arFields['ENTITY_ID']));
296 $arResult['ENTITY']['FORMATTED']['TYPE_NAME'] = $arSocNetAllowedSubscribeEntityTypesDesc[SONET_SUBSCRIBE_ENTITY_GROUP]['TITLE_ENTITY'];
297 $arResult['ENTITY']['FORMATTED']['URL'] = $url;
298 $arResult['ENTITY']['FORMATTED']['NAME'] = $arFields['GROUP_NAME'];
299 }
300 }
301
302 if (
303 !$bMail
304 && array_key_exists('URL', $arFields)
305 && $arFields['URL'] <> ''
306 )
307 $wiki_tmp = '<a href="'.$arFields['URL'].'">'.$arFields['TITLE'].'</a>';
308 else
309 $wiki_tmp = $arFields['TITLE'];
310
311 if ($arFields['EVENT_ID'] == 'wiki')
312 {
313 $title_tmp = ($bMail ? GetMessage('WIKI_SOCNET_LOG_TITLE_MAIL') : GetMessage('WIKI_SOCNET_LOG_TITLE'));
314 $title_tmp_24 = GetMessage("WIKI_SOCNET_LOG_TITLE_24");
315 }
316 elseif ($arFields['EVENT_ID'] === 'wiki_del')
317 {
318 $title_tmp = ($bMail ? Loc::getMessage('WIKI_DEL_SOCNET_LOG_TITLE_MAIL') : Loc::getMessage('WIKI_DEL_SOCNET_LOG_TITLE'));
319 $title_tmp_24 = Loc::getMessage("WIKI_DEL_SOCNET_LOG_TITLE_24", [
320 '#TITLE#' => $arFields['~TITLE']
321 ]);
322 }
323
324 $title = str_replace(
325 array('#TITLE#', '#ENTITY#', '#CREATED_BY#'),
326 array($wiki_tmp, $arResult['ENTITY']['FORMATTED'], ($bMail ? $arResult['CREATED_BY']['FORMATTED'] : '')),
327 $title_tmp
328 );
329
330 $arResult['EVENT_FORMATTED'] = array(
331 "TITLE" => $title,
332 "TITLE_24" => $title_tmp_24,
333 "TITLE_24_2" => $arFields["TITLE"],
334 "MESSAGE" => $arFields['MESSAGE']
335 );
336
337 $sanitizer = new CBXSanitizer();
338 $sanitizer->SetLevel(CBXSanitizer::SECURE_LEVEL_LOW);
339 $arResult['EVENT_FORMATTED']['MESSAGE'] = $sanitizer->SanitizeHtml(htmlspecialcharsback($arResult['EVENT_FORMATTED']['MESSAGE']));
340
341 $arResult['HAS_COMMENTS'] = 'N';
342 if (
343 intval($arFields['SOURCE_ID']) > 0
344 && array_key_exists('PARAMS', $arFields)
345 && $arFields['PARAMS'] <> ''
346 )
347 {
348 $arFieldsParams = explode('&', $arFields['PARAMS']);
349 if (is_array($arFieldsParams) && count($arFieldsParams) > 0)
350 foreach ($arFieldsParams as $tmp)
351 {
352 list($key, $value) = explode('=', $tmp);
353 if ($key == 'forum_id')
354 {
355 $arResult['HAS_COMMENTS'] = 'Y';
356 break;
357 }
358 }
359 }
360
361 if ($bMail)
362 {
364 if ($url <> '')
365 $arResult['EVENT_FORMATTED']['URL'] = $url;
366
367 $parserLog = new logTextParser(false, $arParams["PATH_TO_SMILE"]);
368 $arAllow = array("HTML" => "Y", "ANCHOR" => "Y", "BIU" => "Y", "IMG" => "Y", "QUOTE" => "Y", "CODE" => "Y", "FONT" => "Y", "LIST" => "Y", "SMILES" => "Y", "NL2BR" => "N", "MULTIPLE_BR" => "Y", "VIDEO" => "Y", "LOG_VIDEO" => "Y", "TABLE" => "Y");
369 $arResult["EVENT_FORMATTED"]["MESSAGE"] = $arFields["TEXT_MESSAGE"] ? $arFields["TEXT_MESSAGE"] : HTMLToTxt($parserLog->convert(htmlspecialcharsback($arResult["EVENT_FORMATTED"]["MESSAGE"]), array(), $arAllow));
370 }
371 else
372 {
373 $parserLog = new logTextParser(false, $arParams["PATH_TO_SMILE"]);
374
375 //$arAllow = array("HTML" => "Y", "ANCHOR" => "Y", "BIU" => "Y", "IMG" => "Y", "QUOTE" => "Y", "CODE" => "Y", "FONT" => "Y", "LIST" => "Y", "SMILES" => "Y", "NL2BR" => "Y", "MULTIPLE_BR" => "Y", "VIDEO" => "Y", "LOG_VIDEO" => "N");
376 //$arResult["EVENT_FORMATTED"]["MESSAGE"] = htmlspecialcharsbx($parserLog->convert(htmlspecialcharsback($arResult["EVENT_FORMATTED"]["MESSAGE"]), array(), $arAllow));
377
378 if ($arParams["MOBILE"] != "Y")
379 {
380 $GLOBALS['APPLICATION']->SetAdditionalCSS('/bitrix/components/bitrix/wiki.show/templates/.default/style.css');
381 $arResult["CACHED_CSS_PATH"][] = "/bitrix/components/bitrix/wiki.show/templates/.default/style.css";
382
383 if($arParams["NEW_TEMPLATE"] != "Y")
384 {
385 $arResult["EVENT_FORMATTED"]["SHORT_MESSAGE"] = $parserLog->html_cut(
386 $parserLog->convert(htmlspecialcharsback($arResult["EVENT_FORMATTED"]["MESSAGE"]), array(), $arAllow),
387 1000
388 );
389 $arResult["EVENT_FORMATTED"]["IS_MESSAGE_SHORT"] = CSocNetLogTools::FormatEvent_IsMessageShort($arResult["EVENT_FORMATTED"]["MESSAGE"], $arResult["EVENT_FORMATTED"]["SHORT_MESSAGE"]);
390 }
391 }
392
393 if ($arFields["ENTITY_TYPE"] == SONET_SUBSCRIBE_ENTITY_GROUP)
394 {
395 $arResult["EVENT_FORMATTED"]["DESTINATION"] = array(
396 array(
397 "STYLE" => "sonetgroups",
398 "TITLE" => $arResult["ENTITY"]["FORMATTED"]["NAME"],
399 "URL" => $arResult["ENTITY"]["FORMATTED"]["URL"],
400 "IS_EXTRANET" => (is_array($GLOBALS["arExtranetGroupID"]) && in_array($arFields["ENTITY_ID"], $GLOBALS["arExtranetGroupID"]))
401 )
402 );
403 }
404 }
405
406 return $arResult;
407 }
408
409 public static function FormatComment_Wiki($arFields, $arParams, $bMail = false, $arLog = array())
410 {
412 "EVENT_FORMATTED" => array()
413 );
414
415 if ($bMail)
416 {
419 }
420
421 if (
422 !$bMail
423 && array_key_exists('URL', $arLog)
424 && $arLog['URL'] <> ''
425 )
426 $wiki_tmp = '<a href="'.$arLog['URL'].'">'.$arLog['TITLE'].'</a>';
427 else
428 $wiki_tmp = $arLog['TITLE'];
429
430 $title = str_replace(
431 array('#TITLE#', '#ENTITY#', '#CREATED_BY#'),
432 array($wiki_tmp, $arResult['ENTITY']['FORMATTED'], ($bMail ? $arResult['CREATED_BY']['FORMATTED'] : '')),
433 ($bMail ? GetMessage('WIKI_SOCNET_LOG_COMMENT_TITLE_MAIL') : GetMessage('WIKI_SOCNET_LOG_COMMENT_TITLE'))
434 );
435
436 $arResult["EVENT_FORMATTED"] = array(
437 "TITLE" => $title,
438 "MESSAGE" => ($bMail ? CSocNetTextParser::killAllTags($arFields['MESSAGE']) : htmlspecialcharsBack($arFields['MESSAGE']))
439 );
440
441 if ($bMail)
442 {
444 if ($url <> '')
445 $arResult['EVENT_FORMATTED']['URL'] = $url;
446 }
447 else
448 {
449 static $parserLog = false;
450 if (CModule::IncludeModule("forum"))
451 {
452 if (!$parserLog)
453 $parserLog = new forumTextParser(LANGUAGE_ID);
454
455 $arAllow = array(
456 "HTML" => "N",
457 "ALIGN" => "Y",
458 "ANCHOR" => "Y", "BIU" => "Y",
459 "IMG" => "Y", "QUOTE" => "Y",
460 "CODE" => "Y", "FONT" => "Y",
461 "LIST" => "Y", "SMILES" => "Y",
462 "NL2BR" => "Y", "VIDEO" => "Y",
463 "LOG_VIDEO" => "N", "SHORT_ANCHOR" => "Y",
464 "USERFIELDS" => $arFields["UF"],
465 "USER" => "Y"
466 );
467
468 $parserLog->pathToUser = $parserLog->userPath = $arParams["PATH_TO_USER"];
469 $parserLog->arUserfields = $arFields["UF"];
470 $parserLog->bMobile = ($arParams["MOBILE"] == "Y");
471 $arResult["EVENT_FORMATTED"]["MESSAGE"] = htmlspecialcharsbx($parserLog->convert(htmlspecialcharsback($arResult["EVENT_FORMATTED"]["MESSAGE"]), $arAllow));
472 }
473 else
474 {
475 if (!$parserLog)
476 $parserLog = new logTextParser(false, $arParams["PATH_TO_SMILE"]);
477
478 $arAllow = array(
479 "HTML" => "Y", "ANCHOR" => "Y", "BIU" => "Y",
480 "IMG" => "Y", "LOG_IMG" => "N",
481 "QUOTE" => "Y", "LOG_QUOTE" => "N",
482 "CODE" => "Y", "LOG_CODE" => "N",
483 "FONT" => "Y", "LOG_FONT" => "N",
484 "LIST" => "Y",
485 "SMILES" => "Y",
486 "NL2BR" => "Y",
487 "MULTIPLE_BR" => "Y",
488 "VIDEO" => "Y", "LOG_VIDEO" => "N"
489 );
490
491 $arResult["EVENT_FORMATTED"]["MESSAGE"] = htmlspecialcharsbx($parserLog->convert(htmlspecialcharsback($arResult["EVENT_FORMATTED"]["MESSAGE"]), array(), $arAllow));
492 }
493
494 if (
495 $arParams["MOBILE"] != "Y"
496 && $arParams["NEW_TEMPLATE"] != "Y"
497 )
498 {
499 if (CModule::IncludeModule("forum"))
500 $arResult["EVENT_FORMATTED"]["SHORT_MESSAGE"] = $parserLog->html_cut(
501 $parserLog->convert(htmlspecialcharsback($arResult["EVENT_FORMATTED"]["MESSAGE"]), $arAllow),
502 500
503 );
504 else
505 $arResult["EVENT_FORMATTED"]["SHORT_MESSAGE"] = $parserLog->html_cut(
506 $parserLog->convert(htmlspecialcharsback($arResult["EVENT_FORMATTED"]["MESSAGE"]), array(), $arAllow),
507 500
508 );
509
510 $arResult["EVENT_FORMATTED"]["IS_MESSAGE_SHORT"] = CSocNetLogTools::FormatEvent_IsMessageShort($arResult["EVENT_FORMATTED"]["MESSAGE"], $arResult["EVENT_FORMATTED"]["SHORT_MESSAGE"]);
511 }
512 }
513
514 return $arResult;
515 }
516
517 public static function AddComment_Wiki($arFields)
518 {
519 if (!CModule::IncludeModule('iblock'))
520 return false;
521
522 if (!CModule::IncludeModule('socialnetwork'))
523 return false;
524
525 $ufFileID = array();
526 $ufDocID = array();
527
529 array('ID' => 'DESC'),
530 array('TMP_ID' => $arFields['LOG_ID']),
531 false,
532 false,
533 array('ID', 'SOURCE_ID', 'PARAMS', 'URL')
534 );
535
536 $bFound = false;
537 if ($arLog = $dbResult->Fetch())
538 {
539 if ($arLog['PARAMS'] <> '')
540 {
541 $arFieldsParams = explode('&', $arLog['PARAMS']);
542 if (is_array($arFieldsParams) && count($arFieldsParams) > 0)
543 foreach ($arFieldsParams as $tmp)
544 {
545 list($key, $value) = explode('=', $tmp);
546 if ($key == 'forum_id')
547 {
548 $FORUM_ID = intval($value);
549 break;
550 }
551 }
552 }
553 if ($FORUM_ID > 0 && intval($arLog['SOURCE_ID']) > 0)
554 $bFound = true;
555 }
556
557 if ($bFound)
558 {
559 $arElement = false;
560
561 $arFilter = array('ID' => $arLog['SOURCE_ID']);
562 $arSelectedFields = array(
563 'IBLOCK_ID', 'ID', 'NAME', 'TAGS', 'CODE', 'IBLOCK_SECTION_ID', 'DETAIL_PAGE_URL',
564 'CREATED_BY', 'PREVIEW_PICTURE', 'PREVIEW_TEXT', 'PROPERTY_FORUM_TOPIC_ID', 'PROPERTY_FORUM_MESSAGE_CNT'
565 );
566 $db_res = CIBlockElement::GetList(array(), $arFilter, false, false, $arSelectedFields);
567 if ($db_res && $res = $db_res->GetNext())
568 {
569 $arElement = $res;
570 }
571
572 if ($arElement)
573 {
574 if (
575 isset($arFields["ENTITY_TYPE"])
576 && isset($arFields["ENTITY_ID"])
577 )
578 {
579 $arElement["ENTITY_TYPE"] = $arFields["ENTITY_TYPE"];
580 $arElement["ENTITY_ID"] = $arFields["ENTITY_ID"];
581 }
582
583 // check iblock properties
585
587 array(),
588 array(
589 'FORUM_ID' => $FORUM_ID,
590 'PARAM2' => $arElement['ID']
591 )
592 );
593
594 if (!$arMessage = $dbMessage->Fetch())
595 {
596 // Add Topic and Root Message
597 $TOPIC_ID = CSocNetLogTools::AddComment_Review_CreateRoot($arElement, $FORUM_ID, false);
598 $bNewTopic = true;
599 }
600 else
601 $TOPIC_ID = $arMessage['TOPIC_ID'];
602
603 if(intval($TOPIC_ID) > 0)
604 {
605 // Add comment
606 $messageID = false;
607 $arFieldsMessage = array(
608 'POST_MESSAGE' => $arFields['TEXT_MESSAGE'],
609 'USE_SMILES' => 'Y',
610 'PARAM2' => $arElement['ID'],
611 'APPROVED' => 'Y'
612 );
613
614 $GLOBALS["USER_FIELD_MANAGER"]->EditFormAddFields("SONET_COMMENT", $arTmp);
615 if (is_array($arTmp))
616 {
617 if (array_key_exists("UF_SONET_COM_DOC", $arTmp))
618 $GLOBALS["UF_FORUM_MESSAGE_DOC"] = $arTmp["UF_SONET_COM_DOC"];
619 elseif (array_key_exists("UF_SONET_COM_FILE", $arTmp))
620 {
621 $arFieldsMessage["FILES"] = array();
622 foreach($arTmp["UF_SONET_COM_FILE"] as $file_id)
623 $arFieldsMessage["FILES"][] = array("FILE_ID" => $file_id);
624 }
625 }
626
627 $messageID = ForumAddMessage('REPLY', $FORUM_ID, $TOPIC_ID, 0, $arFieldsMessage, $sError, $sNote);
628
629 if (!$messageID)
630 $strError = GetMessage('SONET_ADD_COMMENT_SOURCE_ERROR');
631 else
632 {
633 $dbAddedMessageFiles = CForumFiles::GetList(array("ID" => "ASC"), array("MESSAGE_ID" => $messageID));
634 while ($arAddedMessageFiles = $dbAddedMessageFiles->Fetch())
635 $ufFileID[] = $arAddedMessageFiles["FILE_ID"];
636
637 $ufDocID = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFieldValue("FORUM_MESSAGE", "UF_FORUM_MESSAGE_DOC", $messageID, LANGUAGE_ID);
638
639 CSocNetLogTools::AddComment_Review_UpdateElement($arElement, $TOPIC_ID, $bNewTopic);
640
641 $userID = $GLOBALS["USER"]->GetID();
642
643 if (
644 CModule::IncludeModule("im")
645 && intval($arElement["CREATED_BY"]) > 0
646 && $arElement["CREATED_BY"] != $userID
647 )
648 {
649 $rsUnFollower = CSocNetLogFollow::GetList(
650 array(
651 "USER_ID" => $arElement["CREATED_BY"],
652 "CODE" => "L".$arLog["ID"],
653 "TYPE" => "N"
654 ),
655 array("USER_ID")
656 );
657
658 $arUnFollower = $rsUnFollower->Fetch();
659 if (!$arUnFollower)
660 {
661 $arMessageFields = array(
662 "MESSAGE_TYPE" => IM_MESSAGE_SYSTEM,
663 "TO_USER_ID" => $arElement["CREATED_BY"],
664 "FROM_USER_ID" => $userID,
665 "LOG_ID" => $arLog["ID"],
666 "NOTIFY_TYPE" => IM_NOTIFY_FROM,
667 "NOTIFY_MODULE" => "wiki",
668 "NOTIFY_EVENT" => "comment",
669 );
670
671 $arParams["TITLE"] = str_replace(Array("\r\n", "\n"), " ", $arElement["NAME"]);
672 $arParams["TITLE"] = TruncateText($arParams["TITLE"], 100);
673 $arParams["TITLE_OUT"] = TruncateText($arParams["TITLE"], 255);
674
675 $arTmp = CSocNetLogTools::ProcessPath(array("ELEMENT_URL" => $arLog["URL"]), $arElement["CREATED_BY"]);
676 $serverName = $arTmp["SERVER_NAME"];
677 $url = $arTmp["URLS"]["ELEMENT_URL"];
678
679 $arMessageFields["NOTIFY_TAG"] = "WIKI|COMMENT|".$arElement['ID'];
680 $arMessageFields["NOTIFY_MESSAGE"] = GetMessage("WIKI_SONET_FROM_LOG_IM_COMMENT", Array(
681 "#title#" => (
682 $url <> ''
683 ? "<a href=\"".$url."\" class=\"bx-notifier-item-action\">".htmlspecialcharsbx($arParams["TITLE"])."</a>"
684 : htmlspecialcharsbx($arParams["TITLE"])
685 )
686 ));
687
688 $arMessageFields["NOTIFY_MESSAGE_OUT"] = GetMessage("WIKI_SONET_FROM_LOG_IM_COMMENT", Array(
689 "#title#" => htmlspecialcharsbx($arParams["TITLE"])
690 )).($url <> ''
691 ? " (".$serverName.$url.")"
692 : ""
693 )."#BR##BR#".$arFields["TEXT_MESSAGE"];
694
695 CIMNotify::Add($arMessageFields);
696 }
697 }
698 }
699 }
700 else
701 $strError = GetMessage('SONET_ADD_COMMENT_SOURCE_ERROR');
702 }
703 else
704 $strError = GetMessage('SONET_ADD_COMMENT_SOURCE_ERROR');
705 }
706 else
707 $strError = GetMessage('SONET_ADD_COMMENT_SOURCE_ERROR');
708
709 return array(
710 'SOURCE_ID' => $messageID,
711 'RATING_TYPE_ID' => 'FORUM_POST',
712 'RATING_ENTITY_ID' => $messageID,
713 'ERROR' => $strError,
714 'NOTES' => '',
715 "UF" => array(
716 "FILE" => $ufFileID,
717 "DOC" => $ufDocID
718 )
719 );
720 }
721
722 public static function RecalcIBlockID($SocNetGroupID)
723 {
724 if(!CModule::IncludeModule('iblock'))
725 return false;
726
727 $arWikiIblockID = array();
728 $iblock_id_tmp = COption::GetOptionString("wiki", "socnet_iblock_id", false, "");
729 if (intval($iblock_id_tmp) > 0)
730 $arWikiIblockID[] = $iblock_id_tmp;
731
732 $rsSite = CSite::GetList("sort", "asc", array("ACTIVE"=>"Y"));
733 while($arSite = $rsSite->Fetch())
734 {
735 $iblock_id_tmp = COption::GetOptionString("wiki", "socnet_iblock_id", false, $arSite["LID"]);
736 if (intval($iblock_id_tmp) > 0)
737 $arWikiIblockID[] = $iblock_id_tmp;
738 }
739
740 if (count($arWikiIblockID) > 0)
741 {
742 $rsWikiSection = CIBlockSection::GetList(
743 array("timestamp_x"=>"desc"),
744 array(
745 "IBLOCK_ID" => array_unique($arWikiIblockID),
746 "SOCNET_GROUP_ID" => $SocNetGroupID
747 ),
748 false,
749 array("IBLOCK_ID")
750 );
751 if ($arWikiSection = $rsWikiSection->Fetch())
752 return $arWikiSection["IBLOCK_ID"];
753 }
754
755 return false;
756 }
757
758 public static function PrepareTextForFeed($text)
759 {
760/* $retText = preg_replace("/(<\s*\/(h(\d+)|li|ul)\s*>)\s*(<\s*br\s*\/*\s*>){0,1}(\s*(\r*\n)\s*){1,2}/ism", "$1##NN##", $text);
761 $retText = preg_replace("/(<\s*(ul)\s*>)\s*(<\s*br\s*\/*\s*>){0,1}(\s*(\r*\n)\s*){1,2}/ism", "$1##NN##", $retText);
762 $retText = preg_replace("/<\s*br\s*\/*\s*>\s*(\r*\n)/ismU", "##BR##", $retText);
763 $retText = preg_replace("/(\r)*\n/ism", "<br />", $retText);
764 $retText = preg_replace("/##NN##/ismU","\n", $retText);
765 $retText = preg_replace("/##BR##/ismU","<br />\n", $retText);
766*/
767 $retText = "<div class='wiki_post_feed'>".$text."</div>";
768
769 return $retText;
770 }
771
772 public static function __ProcessPath($arUrl, $user_id)
773 {
774 return CSocNetLogTools::ProcessPath($arUrl, $user_id);
775 }
776
777 public static function BeforeIndexSocNet($bxSocNetSearch, $arFields)
778 {
779 static $isSonetEnable = false;
780 static $sonetForumId = false;
781
782 if (!$isSonetEnable)
783 {
784 $isSonetEnable = COption::GetOptionString('wiki', 'socnet_enable');
785 }
786
787 if (!$sonetForumId)
788 {
789 $sonetForumId = intval(COption::GetOptionString('wiki', 'socnet_forum_id'));
790 }
791
792 if(
793 $arFields['ENTITY_TYPE_ID'] == 'FORUM_POST'
794 && $isSonetEnable == 'Y'
795 && intval($arFields['PARAM1']) == $sonetForumId
796 && CModule::IncludeModule("socialnetwork")
797 )
798 {
799 if($bxSocNetSearch->_group_id)
800 {
801 $arFields = $bxSocNetSearch->BeforeIndexForum(
802 $arFields,
804 $bxSocNetSearch->_group_id,
805 "wiki",
806 "view",
807 $bxSocNetSearch->Url(
808 str_replace(
809 "#wiki_name#",
810 rawurlencode($arFields["TITLE"]),
811 $bxSocNetSearch->_params["PATH_TO_GROUP_WIKI_POST_COMMENT"]
812 ),
813 array(
814 "MID" => "#message_id#"
815 ),
816 "message#message_id#"
817 )
818 );
819 }
820 }
821
822 return $arFields;
823 }
824}
$arParams
Определения access_dialog.php:21
$db_res
Определения options_user_settings.php:8
$arResult
Определения generate_coupon.php:16
static FormatEvent_CreateAvatar($arFields, $arParams, $source="CREATED_BY_")
Определения log.php:950
Определения sanitizer.php:23
const SECURE_LEVEL_LOW
Определения sanitizer.php:30
static GetList($arOrder=Array("ID"=>"ASC"), $arFilter=Array(), $iNum=0, $arAddParams=array())
Определения message.php:884
static GetList($arOrder=Array("ID"=>"ASC"), $arFilter=Array(), $bCount=false, $iNum=0, $arAddParams=array())
Определения message.php:193
Определения iblocksection.php:5
static GetList($arOrder=Array("ID"=> "DESC"), $arFilter=Array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array(), $arParams=array())
Определения log.php:338
static FormatEvent_GetCreatedBy($arFields, $arParams, $bMail, $bFirstCaps=false)
Определения log_tools.php:534
static AddComment_Review_CheckIBlock($arElement)
Определения log_tools.php:4049
static FormatEvent_GetURL($arFields, $bAbsolute=false)
Определения log_tools.php:661
static AddComment_Review_CreateRoot($arElement, $forumID, $bPostFirstMessage=false, $strFirstMessage="")
Определения log_tools.php:4164
static FormatEvent_GetEntity($arFields, $arParams, $bMail)
Определения log_tools.php:586
static AddComment_Review_UpdateElement($arElement, $topicID, $bNewTopic)
Определения log_tools.php:4315
static ProcessPath($arUrl, $user_id, $explicit_site_id=false)
Определения log_tools.php:5283
static FormatEvent_IsMessageShort($message, $short_message=false)
Определения log_tools.php:514
static killAllTags($text)
Определения functions.php:428
Определения wiki_socnet.php:8
static Init($SOCNET_GROUP_ID, $IBLOCK_ID)
Определения wiki_socnet.php:19
static $iCatRightBorder
Определения wiki_socnet.php:15
static OnFillSocNetMenu(&$arResult, $arParams=array())
Определения wiki_socnet.php:185
static $iCatLeftBorder
Определения wiki_socnet.php:14
static EnableSocnet($bActive=false)
Определения wiki_socnet.php:102
static IsSocNet()
Определения wiki_socnet.php:97
static FormatComment_Wiki($arFields, $arParams, $bMail=false, $arLog=array())
Определения wiki_socnet.php:409
static $bInit
Определения wiki_socnet.php:11
static OnParseSocNetComponentPath(&$arUrlTemplates, &$arCustomPagesPath, $arParams)
Определения wiki_socnet.php:206
static FormatEvent_Wiki($arFields, $arParams, $bMail=false)
Определения wiki_socnet.php:265
static $bActive
Определения wiki_socnet.php:9
static __ProcessPath($arUrl, $user_id)
Определения wiki_socnet.php:772
static BeforeIndexSocNet($bxSocNetSearch, $arFields)
Определения wiki_socnet.php:777
static OnInitSocNetComponentVariables(&$arVariableAliases, &$arCustomPagesPath)
Определения wiki_socnet.php:257
static $iCatId
Определения wiki_socnet.php:13
static PrepareTextForFeed($text)
Определения wiki_socnet.php:758
static $iSocNetId
Определения wiki_socnet.php:17
static IsEnabledSocnet()
Определения wiki_socnet.php:78
static RecalcIBlockID($SocNetGroupID)
Определения wiki_socnet.php:722
static AddComment_Wiki($arFields)
Определения wiki_socnet.php:517
static OnFillSocNetFeaturesList(&$arSocNetFeaturesSettings)
Определения wiki_socnet.php:126
Определения functions.php:18
Определения log_tools.php:6352
if(!is_array($prop["VALUES"])) $tmp
Определения component_props.php:203
$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
$res
Определения filter_act.php:7
ForumAddMessage( $MESSAGE_TYPE, $FID, $TID, $MID, $arFieldsG, &$strErrorMessage, &$strOKMessage, $iFileSize=false, $captcha_word="", $captcha_sid=0, $captcha_code="")
Определения include.php:317
$bFound
Определения get_search.php:40
$dbMessage
Определения group_wiki_post_comment.php:12
const IM_MESSAGE_SYSTEM
Определения include.php:21
const IM_NOTIFY_FROM
Определения include.php:37
$strError
Определения options_user_settings.php:4
$_SERVER["DOCUMENT_ROOT"]
Определения cron_frame.php:9
$IBLOCK_ID
Определения csv_new_run.php:168
htmlspecialcharsback($str)
Определения tools.php:2693
RegisterModuleDependences($FROM_MODULE_ID, $MESSAGE_ID, $TO_MODULE_ID, $TO_CLASS="", $TO_METHOD="", $SORT=100, $TO_PATH="", $TO_METHOD_ARG=[])
Определения tools.php:5295
UnRegisterModuleDependences($FROM_MODULE_ID, $MESSAGE_ID, $TO_MODULE_ID, $TO_CLASS="", $TO_METHOD="", $TO_PATH="", $TO_METHOD_ARG=[])
Определения tools.php:5289
HTMLToTxt($str, $strSiteUrl="", $aDelete=[], $maxlen=70)
Определения tools.php:2587
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)
Определения tools.php:2701
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
Определения tools.php:5177
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
Определения tools.php:3778
GetMessage($name, $aReplace=null)
Определения tools.php:3397
TruncateText($strText, $intLen)
Определения tools.php:2185
$order
Определения payment.php:8
if(intval($iTestTransaction) > 0) $arTmp
Определения payment.php:22
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
if(empty($signedUserToken)) $key
Определения quickway.php:257
$text
Определения template_pdf.php:79
$page
Определения order_form.php:33
</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
$title
Определения pdf.php:123
const SONET_ROLES_USER
Определения include.php:31
const SONET_ENTITY_GROUP
Определения include.php:117
const SONET_SUBSCRIBE_ENTITY_GROUP
Определения include.php:120
const SONET_ROLES_MODERATOR
Определения include.php:30
if( $_SERVER $arSocNetFeaturesSettings['REQUEST_METHOD']=="GET" &&($RestoreDefaults ?? null)<> '' && $SONET_RIGHT=="W" &&check_bitrix_sessid())
Определения options.php:35
const SITE_ID
Определения sonet_set_content_view.php:12
$GLOBALS['_____370096793']
Определения update_client.php:1
$dbResult
Определения updtr957.php:3
$arFilter
Определения user_search.php:106
$url
Определения iframe.php:7