9if (file_exists(__DIR__.
"/deprecated.php"))
11 include(
"deprecated.php");
14$arNameStatuses = @unserialize(COption::GetOptionString(
"forum",
"statuses_name"), [
"allowed_classes" =>
false]);
17$name =
array(
"guest" =>
"Guest",
"user" =>
"User",
"moderator" =>
"Moderator",
"editor" =>
"Editor",
"administrator" =>
"Administrator");
19 $name[
$k] = trim(!empty($arMess[
"F_".mb_strtoupper(
$k)]) ? $arMess[
"F_".mb_strtoupper(
$k)] :
$name[
$k]);
30 "TOPIC_INFO" =>
array());
45if(!defined(
"CACHED_b_forum_group"))
46 define(
"CACHED_b_forum_group", 3600);
47if(!defined(
"CACHED_b_forum"))
48 define(
"CACHED_b_forum", 3600);
49if(!defined(
"CACHED_b_forum_perms"))
50 define(
"CACHED_b_forum_perms", 3600);
51if(!defined(
"CACHED_b_forum2site"))
52 define(
"CACHED_b_forum2site", 3600);
53if(!defined(
"CACHED_b_forum_filter"))
54 define(
"CACHED_b_forum_filter", 3600);
55if(!defined(
"CACHED_b_forum_user"))
56 define(
"CACHED_b_forum_user", 3600);
60 "bitrix\\forum\\internals\\basetable" =>
"lib/internals/basetable.php",
61 "bitrix\\forum\\comments\\comment" =>
"lib/comments/comment.php",
62 "bitrix\\forum\\comments\\entity" =>
"lib/comments/entity.php",
63 "bitrix\\forum\\comments\\eventmanager" =>
"lib/comments/eventmanager.php",
64 "bitrix\\forum\\comments\\feed" =>
"lib/comments/feed.php",
65 "bitrix\\forum\\comments\\taskentity" =>
"lib/comments/taskentity.php",
66 "bitrix\\forum\\comments\\user" =>
"lib/comments/user.php",
67 "bitrix\\forum\\forum" =>
"lib/forum.php",
68 "bitrix\\forum\\badwords\\dictionary" =>
"lib/badwords/dictionary.php",
69 "bitrix\\forum\\badwords\\filter" =>
"lib/badwords/filter.php",
70 "bitrix\\forum\\badwords\\letter" =>
"lib/badwords/letter.php",
72 "textParser" =>
"classes/general/functions.php",
73 "forumTextParser" =>
"classes/general/functions.php",
75 "CForumNew" =>
"classes/" .
$dbType .
"/forum_new.php",
76 "CForumGroup" =>
"classes/" .
$dbType .
"/forum_new.php",
77 "CForumSmile" =>
"classes/general/forum_new.php",
78 "_CForumDBResult"=>
"classes/general/forum_new.php",
80 "CForumTopic" =>
"classes/mysql/topic.php",
81 "_CTopicDBResult" =>
"classes/general/topic.php",
83 "CForumMessage" =>
"classes/mysql/message.php",
84 "CForumFiles" =>
"classes/mysql/message.php",
85 "_CMessageDBResult" =>
"classes/general/message.php",
87 "CForumEventLog" =>
"classes/general/event_log.php",
89 "CFilterDictionary" =>
"classes/mysql/filter_dictionary.php",
90 "CFilterLetter" =>
"classes/mysql/filter_dictionary.php",
91 "CFilterUnquotableWords" =>
"classes/mysql/filter_dictionary.php",
93 "CForumPMFolder" =>
"classes/mysql/private_message.php",
94 "CForumPrivateMessage" =>
"classes/mysql/private_message.php",
96 "CForumPoints" =>
"classes/mysql/points.php",
97 "CForumPoints2Post" =>
"classes/mysql/points.php",
98 "CForumUserPoints" =>
"classes/mysql/points.php",
100 "CForumRank" =>
"classes/mysql/user.php",
101 "CForumStat" =>
"classes/mysql/user.php",
102 "CForumSubscribe" =>
"classes/mysql/user.php",
103 "CForumUser" =>
"classes/mysql/user.php",
105 "CForumParameters" =>
"tools/components_lib.php",
106 "CForumEMail" =>
"mail/mail.php",
107 "CForumFormat" =>
"tools/components_lib.php",
108 "CRatingsComponentsForum" =>
"classes/mysql/ratings_components.php",
109 "CEventForum" =>
"classes/general/event_log.php",
111 "CForumCacheManager" =>
"classes/general/functions.php",
112 "CForumAutosave" =>
"classes/general/functions.php",
113 "CForumDBTools" =>
"tools/dbtools.php",
114 "CForumNotifySchema" =>
"classes/general/forum_notify_schema.php",
116 "CForumRestService" =>
"classes/general/rest.php",
124 static $arCache =
array();
125 $arAddParams = (is_array($arAddParams) ? $arAddParams :
array());
126 $arAddParams[
"PERMISSION"] = $arAddParams[
"PERMISSION"] ??
'';
127 if (! isset($arCache[$FID.$arAddParams[
"PERMISSION"]]))
136 if ($strPerms <=
"E")
143 $result = ($strPerms >=
"E" ? $strPerms :
"E");
150 $arCache[$FID.$arAddParams[
"PERMISSION"]] =
$result;
153 return $arCache[$FID.$arAddParams[
"PERMISSION"]];
158 if ($strSite===
false)
166 if ($strSite===
false)
176 $strSite = ($strSite===
false ?
SITE_ID : $strSite);
182 if (!
$USER->IsAuthorized())
184 $arError[] =
GetMessage(
"FORUM_SUB_ERR_AUTH");
189 "USER_ID" =>
$USER->GetID(),
191 "SITE_ID" => $strSite,
192 "TOPIC_ID" => ($TID>0) ? $TID :
false);
193 if($SOCNET_GROUP_ID>0)
194 $arFields[
'SOCNET_GROUP_ID'] = $SOCNET_GROUP_ID;
199 $arError[] =
GetMessage(
"FORUM_SUB_ERR_PERMS");
204 $arError[] =
GetMessage(
"FORUM_SUB_ERR_UNSUBSCR");
207 if (!empty($arError))
210 $strOKMessage .= implode(
".\n", $arNote);
221 $strSite = ($strSite===
false ?
SITE_ID : $strSite);
227 if (!
$USER->IsAuthorized())
229 $arError[] =
GetMessage(
"FORUM_SUB_ERR_AUTH");
233 $arError[] =
GetMessage(
"FORUM_SUB_ERR_PERMS");
238 "USER_ID" =>
$USER->GetID(),
240 "SITE_ID" => $strSite,
241 "TOPIC_ID" => ($TID>0) ? $TID :
false);
242 if($SOCNET_GROUP_ID>0)
243 $arFields[
'SOCNET_GROUP_ID'] = $SOCNET_GROUP_ID;
247 $sError =
GetMessage(
"FORUM_SUB_ERR_ALREADY_TOPIC");
250 if (
$res[
"NEW_TOPIC_ONLY"] ==
"Y")
252 $sError =
GetMessage(
"FORUM_SUB_ERR_ALREADY_NEW");
253 if ($NEW_TOPIC_ONLY !=
$res[
"NEW_TOPIC_ONLY"])
255 GetMessage(
"FORUM_SUB_ERR_ALREADY_ALL_HELP"));
259 $sError =
GetMessage(
"FORUM_SUB_ERR_ALREADY_ALL");
260 if ($NEW_TOPIC_ONLY !=
$res[
"NEW_TOPIC_ONLY"])
262 GetMessage(
"FORUM_SUB_ERR_ALREADY_NEW_HELP"));
265 $arError[] = $sError;
269 $arFields[
"NEW_TOPIC_ONLY"] = ((
$arFields[
"TOPIC_ID"]!==
false) ?
"N" : $NEW_TOPIC_ONLY );
272 if (intval($subid)>0)
275 $arNote[] =
GetMessage(
"FORUM_SUB_OK_MESSAGE_TOPIC");
277 $arNote[] =
GetMessage(
"FORUM_SUB_OK_MESSAGE");
281 $arError[] =
GetMessage(
"FORUM_SUB_ERR_UNKNOWN");
286 if (!empty($arError))
288 if (!empty($arError))
289 $strOKMessage .= implode(
".\n",$arNote);
300 if (!empty(
$_SERVER[
'HTTP_X_FORWARDED_FOR']))
302 $ips = explode(
", ",
$_SERVER[
'HTTP_X_FORWARDED_FOR']);
303 foreach ($ips as $ipst)
306 if (!preg_match(
"/^(10|172\.16|192\.168)\./", $ipst) && preg_match(
"/^[^.]+\.[^.]+\.[^.]+\.[^.]+/", $ipst))
314 return ($ip ? $ip :
$_SERVER[
'REMOTE_ADDR']);
318 $MESSAGE_TYPE, $FID, $TID, $MID, $arFieldsG,
321 $captcha_word =
"", $captcha_sid = 0, $captcha_code =
"")
326 $forum = \Bitrix\Forum\Forum::getById($FID);
327 $usr = \Bitrix\Forum\User::getById(
$USER->GetID());
329 if (!
$USER->IsAuthorized() && $forum[
"USE_CAPTCHA"]==
"Y")
331 $cpt =
new CCaptcha();
332 if ($captcha_code <>
'')
334 if (!$cpt->CheckCodeCrypt($captcha_word, $captcha_code))
336 throw new \Bitrix\Main\AccessDeniedException(
GetMessage(
"FORUM_POSTM_CAPTCHA"));
339 else if (!$cpt->CheckCode($captcha_word, $captcha_sid))
341 throw new \Bitrix\Main\AccessDeniedException(
GetMessage(
"FORUM_POSTM_CAPTCHA"));
346 if ($usr->getPermissionOnForum($FID) < \
Bitrix\Forum\Permission::CAN_MODERATE)
348 if (!empty($arFieldsG[
"PERMISSION_EXTERNAL"]))
350 $usr->setPermissionOnForum($FID, $arFieldsG[
"PERMISSION_EXTERNAL"]);
352 elseif (!empty($arFieldsG[
"SONET_PERMS"]))
354 $externalPermission =
"A";
355 if ($arFieldsG[
"SONET_PERMS"][
"bCanFull"] ===
true)
356 $externalPermission =
"Y";
357 elseif ($arFieldsG[
"SONET_PERMS"][
"bCanNew"] ===
true)
358 $externalPermission =
"M";
359 elseif ($arFieldsG[
"SONET_PERMS"][
"bCanWrite"] ===
true)
360 $externalPermission =
"I";
361 $usr->setPermissionOnForum($FID, $externalPermission);
366 $arFieldsG[
"POST_MESSAGE"] = trim($arFieldsG[
"POST_MESSAGE"]);
367 $arFieldsG[
"USE_SMILES"] = ($arFieldsG[
"USE_SMILES"] ==
"Y" ?
"Y" :
"N");
368 if (array_key_exists(
"ATTACH_IMG", $arFieldsG))
370 if (!empty($arFieldsG[
"ATTACH_IMG"]))
372 $arFieldsG[
"FILES"] = [$arFieldsG[
"ATTACH_IMG"]];
374 unset($arFieldsG[
"ATTACH_IMG"]);
376 $GLOBALS[
"USER_FIELD_MANAGER"]->EditFormAddFields(
"FORUM_MESSAGE", $arFieldsG);
379 if ($MESSAGE_TYPE ==
"EDIT")
381 if (!$usr->canModerate($forum) || $arFieldsG[
"EDIT_ADD_REASON"] ===
"Y")
383 $arFieldsG[
"EDITOR_ID"] = $usr->getId();
384 $arFieldsG[
"EDITOR_NAME"] = $usr->getName();
385 $arFieldsG[
"EDITOR_EMAIL"] = trim($arFieldsG[
"EDITOR_EMAIL"]);
386 $arFieldsG[
"EDIT_REASON"] = trim($arFieldsG[
"EDIT_REASON"]);
387 $arFieldsG[
"EDIT_DATE"] = new \Bitrix\Main\Type\DateTime();
391 $arFieldsG[
"EDITOR_ID"] = 0;
392 $arFieldsG[
"EDITOR_NAME"] =
"";
393 $arFieldsG[
"EDITOR_EMAIL"] =
"";
394 $arFieldsG[
"EDIT_REASON"] =
"";
395 $arFieldsG[
"EDIT_DATE"] =
"";
398 if (array_key_exists(
"TITLE", $arFieldsG))
400 $topic = \Bitrix\Forum\Topic::getById($TID);
402 if (!$usr->canEditTopic($topic))
404 throw new \Bitrix\Main\AccessDeniedException(
GetMessage(
"ADDMESS_NO_PERMS2EDIT"));
406 $result = $topic->edit($arFieldsG);
410 $message = \Bitrix\Forum\Message::getById($MID);
411 if (!$usr->canEditMessage(
$message))
413 throw new \Bitrix\Main\AccessDeniedException(
GetMessage(
"ADDMESS_NO_PERMS2EDIT"));
420 $arFieldsG[
"AUTHOR_ID"] = $usr->getId();
421 $arFieldsG[
"AUTHOR_EMAIL"] = trim($arFieldsG[
"AUTHOR_EMAIL"] ??
'');
422 $arFieldsG[
"AUTHOR_NAME"] = trim($arFieldsG[
"AUTHOR_NAME"] ??
'');
423 if ($arFieldsG[
"AUTHOR_NAME"] ==
'' && $usr->getId() > 0)
425 $arFieldsG[
"AUTHOR_NAME"] = $usr->getName();
427 $arFieldsG[
"APPROVED"] = $forum[
"MODERATION"] !=
"Y" || $usr->canModerate($forum) ?
"Y" :
"N";
428 $arFieldsG[
"POST_DATE"] = new \Bitrix\Main\Type\DateTime();
430 if (\
Bitrix\Main\ModuleManager::isModuleInstalled(
"statistic"))
432 $arFieldsG[
"GUEST_ID"] = $_SESSION[
"SESS_GUEST_ID"];
434 if ($realIp = \
Bitrix\Main\Service\GeoIp\Manager::getRealIp())
436 $arFieldsG[
"AUTHOR_IP"] = $realIp;
437 $arFieldsG[
"AUTHOR_REAL_IP"] = $realIp;
438 if (\
Bitrix\Main\Config\Option::get(
"forum",
"FORUM_GETHOSTBYADDR",
"N") ==
"Y")
440 $arFieldsG[
"AUTHOR_REAL_IP"] = @gethostbyaddr($realIp);
444 if ($MESSAGE_TYPE ==
"NEW")
446 if (!$usr->canAddTopic($forum))
448 throw new \Bitrix\Main\AccessDeniedException(
GetMessage(
"ADDMESS_NO_PERMS2NEW"));
454 $topic = \Bitrix\Forum\Topic::getById($TID);
455 if (!$usr->canAddMessage($topic))
457 throw new \Bitrix\Main\AccessDeniedException(
GetMessage(
"ADDMESS_NO_PERMS2REPLY"));
468 if ($MESSAGE_TYPE ==
"NEW" || $MESSAGE_TYPE ==
"REPLY")
471 if ($arFieldsG[
"APPROVED"] !=
"Y")
473 $strOKMessage =
GetMessage(
"ADDMESS_AFTER_MODERATE").
". \n";
477 $strOKMessage =
GetMessage(
"ADDMESS_SUCCESS_ADD").
". \n";
483 $strOKMessage =
GetMessage(
"ADDMESS_SUCCESS_EDIT").
". \n";
506 $arAddParams = (!is_array($arAddParams) ?
array($arAddParams) : $arAddParams );
507 $arAddParams[
"PERMISSION"] = (!empty($arAddParams[
"PERMISSION"]) ? $arAddParams[
"PERMISSION"] :
false);
511 $arError[] =
GetMessage(
"DELMES_NO_MESS").
". \n";
518 while ($arMessage =
$db_res->Fetch())
522 $arError[] =
GetMessage(
"MODMESS_NO_PERMS").
" (MID=".$arMessage[
"ID"].
"). \n";
529 $TID = $arMessage[
"TOPIC_ID"];
532 foreach (
GetModuleEvents(
"forum",
"onMessageModerate",
true) as $arEvent)
536 "ID" => $arMessage[
"ID"],
537 "AUTHOR_NAME" => $arMessage[
"AUTHOR_NAME"],
538 "POST_MESSAGE" => $arMessage[
"POST_MESSAGE"],
539 "TITLE" => $arTopic[
"TITLE"],
541 "FORUM_ID" => $arMessage[
"FORUM_ID"]
546 $arOK[] =
GetMessage(
"MODMESS_SUCCESS_SHOW").
" (MID=".$arMessage[
"ID"].
"). \n";
552 $arOK[] =
GetMessage(
"MODMESS_SUCCESS_HIDE").
" (MID=".$arMessage[
"ID"].
"). \n";
559 $arError[] =
GetMessage(
"MODMESS_ERROR_MODER").
" (MID=".$arMessage[
"ID"].
"). \n";
565 $arError[] =
GetMessage(
"DELMES_NO_MESS").
". \n";
568 $strOKMessage .= implode(
"", $arOK);
570 if (
count($arError) <= 0)
578 $topicIds = is_array($topicIds) ? $topicIds : [$topicIds];
581 $arAddParams = (is_array($arAddParams) ? $arAddParams : []);
582 $arAddParams[
"PERMISSION"] = (!empty($arAddParams[
"PERMISSION"]) ? $arAddParams[
"PERMISSION"] :
false);
586 $usr = \Bitrix\Forum\User::getById(
$USER->GetID());
587 foreach ($topicIds as $topicId)
589 $topic = \Bitrix\Forum\Topic::getById($topicId);
590 $forum = \Bitrix\Forum\Forum::getById($topic->getForumId());
591 if (is_string($arAddParams[
"PERMISSION"]))
593 $usr->setPermissionOnForum($forum, $arAddParams[
"PERMISSION"]);
595 if (!$usr->canModerate($forum))
597 $arError[] =
GetMessage(
"FMT_NO_PERMS_EDIT") .
" (TID={$topic->getId()})";
601 $result = (
$TYPE ===
"OPEN" ? $topic->open() : $topic->close());
605 $arError[] = (
$TYPE ===
"CLOSE" ?
GetMessage(
"OCTOP_ERROR_CLOSE") :
GetMessage(
"OCTOP_ERROR_OPEN")) .
" (TID={$topic->getId()})";
607 else if (!empty(
$result->getData()))
609 $arOk[] = (
$TYPE ===
"CLOSE" ?
GetMessage(
"OCTOP_SUCCESS_CLOSE") :
GetMessage(
"OCTOP_SUCCESS_OPEN")) .
" (TID={$topic->getId()})";
614 $strOKMessage .= implode(
".\n", $arOk);
616 if (
count($arError) > 0)
631 $arAddParams = (!is_array($arAddParams) ?
array($arAddParams) : $arAddParams );
632 $arAddParams[
"PERMISSION"] = (!empty($arAddParams[
"PERMISSION"]) ? $arAddParams[
"PERMISSION"] :
false);
652 $arError[] =
GetMessage(
"FMT_NO_PERMS_MODERATE").
" (TID=".intval(
$res[
"ID"]).
")";
659 $arError[] =
GetMessage(
"TOTOP_ERROR_TOP").
" (TID=".intval(
$res[
"ID"]).
")";
661 $arError[] =
GetMessage(
"TOTOP_ERROR_TOP1").
" (TID=".intval(
$res[
"ID"]).
")";
665 $forumID =
$res[
'FORUM_ID'];
667 $log = serialize(
$res);
669 $arOk[] =
GetMessage(
"TOTOP_SUCCESS_TOP").
" (TID=".intval(
$res[
"ID"]).
")";
672 $arOk[] =
GetMessage(
"TOTOP_SUCCESS_TOP1").
" (TID=".intval(
$res[
"ID"]).
")";
677 if (intval($forumID) > 0)
685 if (
count($arError) > 0)
687 if (
count($arOk) > 0)
688 $strOKMessage .= implode(
".\n", $arOk).
".\n";
702 $arAddParams = (!is_array($arAddParams) ?
array($arAddParams) : $arAddParams);
703 $arAddParams[
"PERMISSION"] = (!empty($arAddParams[
"PERMISSION"]) ? $arAddParams[
"PERMISSION"] :
false);
724 $arOk[] =
GetMessage(
"DELTOP_OK").
" (TID=".intval(
$res[
"ID"]).
")";
731 $arError[] =
GetMessage(
"DELTOP_NO").
" (TID=".intval(
$res[
"ID"]).
")";
736 $arError[] =
GetMessage(
"DELTOP_NO_PERMS").
" (TID=".intval(
$res[
"ID"]).
")";
746 if (
count($arError) > 0)
748 if (
count($arOk) > 0)
749 $strOKMessage .= implode(
".\n", $arOk).
".\n";
751 if (
count($arError) > 0)
762 $arAddParams = (!is_array($arAddParams) ?
array($arAddParams) : $arAddParams );
763 $arAddParams[
"PERMISSION"] = (!empty($arAddParams[
"PERMISSION"]) ? $arAddParams[
"PERMISSION"] :
false);
775 $arError[] =
GetMessage(
"DELMES_NO_PERMS").
"(MID=".$MID.
")";
780 $arOK[] =
GetMessage(
"DELMES_OK").
"(MID=".$MID.
")";
781 $TID = $arMessage[
"TOPIC_ID"];
783 $arMessage[
"TITLE"] = $arTopic[
"TITLE"];
786 $arError[] =
GetMessage(
"DELMES_NO").
"(MID=".$MID.
")";
791 if (!empty($arError))
794 $strOKMessage .= implode(
".\n", $arOK).
".\n";
795 return (empty($arError) ?
true :
false);
804 $arAddParams = (!is_array($arAddParams) ?
array($arAddParams) : $arAddParams);
805 $arAddParams[
"PERMISSION"] = (!empty($arAddParams[
"PERMISSION"]) ? $arAddParams[
"PERMISSION"] :
false);
825 if ($db_mes && $mes = $db_mes->Fetch() && CModule::IncludeModule(
"mail"))
832 $arOk[] =
GetMessage(
"SPAMTOP_OK").
" (TID=".intval(
$res[
"ID"]).
")";
837 $arError[] =
GetMessage(
"SPAMTOP_NO").
" (TID=".intval(
$res[
"ID"]).
")";
842 $arError[] =
GetMessage(
"SPAMTOP_NO_PERMS").
" (TID=".intval(
$res[
"ID"]).
")";
851 if (
count($arError) > 0)
853 if (
count($arOk) > 0)
854 $strOKMessage .= implode(
".\n", $arOk).
".\n";
856 if (
count($arError) > 0)
867 $arAddParams = (!is_array($arAddParams) ?
array($arAddParams) : $arAddParams );
868 $arAddParams[
"PERMISSION"] = (!empty($arAddParams[
"PERMISSION"]) ? $arAddParams[
"PERMISSION"] :
false);
879 $arError[] =
GetMessage(
"SPAM_NO_PERMS").
"(MID=".$MID.
")";
883 if (CModule::IncludeModule(
"mail"))
888 $arOK[] =
GetMessage(
"SPAM_OK").
"(MID=".$MID.
")";
891 $arError[] =
GetMessage(
"SPAM_NO").
"(MID=".$MID.
")";
896 if (!empty($arError))
899 $strOKMessage .= implode(
".\n", $arOK).
".\n";
900 return (empty($arError) ?
true :
false);
904 $message_exist =
false;
911 if (intval(trim($message_id)) > 0)
913 $result[] = intval(trim($message_id));
914 $message_exist =
true;
937 global $FORUM_MESSAGES_PER_PAGE;
940 if ((!$PAGE_ELEMENTS) && (intval($PAGE_ELEMENTS) <= 0))
941 $PAGE_ELEMENTS = $FORUM_MESSAGES_PER_PAGE;
943 if (mb_strpos($strUrl,
"?") ===
false)
944 $strUrl = $strUrl.
"?";
946 $strUrl = $strUrl.
"&";
948 if ($nMessages > $PAGE_ELEMENTS)
950 $res_str .=
"<small>(".GetMessage(
"FSTP_PAGES").
": ";
952 $nPages = intval(ceil($nMessages / $PAGE_ELEMENTS));
954 for (
$i = 1;
$i <= $nPages;
$i++)
958 $res_str .=
"<a href=\"".$strUrl.$pagen_var.
"=".
$i.
"\">".
$i.
"</a> ";
966 $res_str .=
")</small>";
979 $arNewForum =
array();
980 $arNewTopic =
array();
981 $arCurrUser =
array();
982 $SendSubscribe =
false;
987 $NewTID = intval($NewTID);
992 $arError[] =
GetMessage(
"FMM_NO_TOPIC_SOURCE0");
998 $FID = intval($arTopic[
"FORUM_ID"]);
1002 $arError[] =
GetMessage(
"FMM_NO_TOPIC_SOURCE1");
1005 if (($NewTID <= 0) && (trim(
$arFields[
"TITLE"]) ==
''))
1006 $arError[] =
GetMessage(
"FMM_NO_TOPIC_RECIPIENT0");
1009 if ($NewTID == $TID)
1010 $arError[] =
GetMessage(
"FMM_NO_TOPIC_EQUAL");
1014 $arError[] =
GetMessage(
"FMM_NO_TOPIC_RECIPIENT1");
1015 elseif ($arNewTopic[
"STATE"] ==
"L")
1016 $arError[] =
GetMessage(
"FMM_TOPIC_IS_LINK");
1019 $NewFID = $arNewTopic[
"FORUM_ID"];
1031 if ($arCurrUser[
"Perms"][
"FID"] <
"Q")
1034 $DB->StartTransaction();
1035 if (
count($arError) <= 0)
1040 $arFields[
"APPROVED"] = (isset($arNewForum[
"MODERATION"]) && $arNewForum[
"MODERATION"]==
"Y") ?
"N" :
"Y";
1041 if ($arCurrUser[
"Perms"][
"NewFID"] >=
"Q")
1052 $arFieldsTopic =
array(
1055 "DESCRIPTION" =>
$arFields[
"DESCRIPTION"],
1059 "USER_START_ID" =>
$arRes[
"ID"],
1060 "USER_START_NAME" =>
$arRes[
"NAME"],
1061 "LAST_POSTER_NAME" =>
$arRes[
"NAME"],
1062 "LAST_POSTER_ID" =>
$arRes[
"ID"],
1066 if (intval($NewTID)<=0)
1067 $arError[] =
GetMessage(
"FMM_NO_TOPIC_NOT_CREATED");
1074 $arNewForum = $arForum;
1075 $SendSubscribe =
true;
1078 $arError[] =
GetMessage(
"FMM_NO_TOPIC_NOT_CREATED");
1083 if (
count($arError) <= 0)
1092 $arMessage =
array();
1093 if ($NewFID != $FID)
1095 $arMessage[
"APPROVED"] = ($arNewForum[
"MODERATION"] ==
"Y" ?
"N" :
"Y");
1096 if ($arCurrUser[
"Perms"][
"NewFID"] >=
"Q")
1097 $arMessage[
"APPROVED"] =
"Y";
1099 $arMessage[
"FORUM_ID"] = $NewFID;
1100 $arMessage[
"POST_MESSAGE_HTML"] =
"";
1103 if ($NewTID != $TID)
1105 $arMessage[
"NEW_TOPIC"] =
"N";
1106 $arMessage[
"TOPIC_ID"] = $NewTID;
1109 if (
count($arMessage) > 0)
1112 $res_log = ($SendSubscribe ==
true ?
GetMessage(
"F_MESSAGE_WAS_MOVED_TO_NEW") :
GetMessage(
"F_MESSAGE_WAS_MOVED"));
1113 $res_log = str_replace(
array(
"#ID#",
"#TOPIC_TITLE#",
"#TOPIC_ID#",
"#NEW_TOPIC_TITLE#",
"#NEW_TOPIC_ID#"),
1114 array($MID, $arTopic[
"TITLE"], $arTopic[
"ID"], $arNewTopic[
'TITLE'], $arNewTopic[
'ID']), $res_log);
1115 $res[
"TITLE"] = $arNewTopic[
'TITLE'];
1116 $res[
"TOPIC_ID"] = $arNewTopic[
'ID'];
1117 $res[
"beforeTITLE"] = $arTopic[
"TITLE"];
1118 $res[
"DESCRIPTION"] = $res_log;
1121 if ($db_res2 && $res2 = $db_res2->Fetch())
1127 }
while ($res2 = $db_res2->Fetch());
1128 CForumFiles::UpdateByID(
$arFiles, $arMessage);
1130 if (intval($MID) <= 0)
1132 $arError[] = str_replace(
"##",
$res[
"ID"],
GetMessage(
"FMM_NO_MESSAGE_MOVE"));
1140 if (
count($arError) <= 0)
1157 if ($NewFID != $FID)
1160 if (
count($arError) <= 0)
1165 if (
count($arError) > 0)
1169 $strOKMessage .=
GetMessage(
"FMM_YES_MESSAGE_MOVE");
1172 foreach ($Message as $MID)
1187 $arSmile = CForumSmile::getByType(
"I", LANGUAGE_ID);
1188 $arSmile[] =
array(
'TYPING' =>
'',
'IMAGE' =>
'/bitrix/images/1.gif',
'NAME' =>
'',
'CLASS' =>
'forum-icon-empty');
1189 $strPath2Icons =
"/bitrix/images/forum/icon/";
1190 $num_cols = ($num_cols > 0 ? $num_cols : 7);
1192 $res_str =
'<table border="0" class="forum-icons"><tr>';
1194 foreach ($arSmile as
$res)
1196 $width = (isset(
$res[
"IMAGE_WIDTH"]) &&
$res[
"IMAGE_WIDTH"] > 0 ?
'width="{$res["IMAGE_WIDTH"]}"' :
'');
1197 $height = (isset(
$res[
"IMAGE_HEIGHT"]) &&
$res[
"IMAGE_HEIGHT"] > 0 ?
'width="{$res["IMAGE_HEIGHT"]}"' :
'');
1199 if (trim(
$res[
'TYPING']) == trim($value))
1201 $checked =
'checked="checked"';
1204 $classImg =
$res[
"CLASS"] ??
'';
1207 <img src=
"{$strPath2Icons}{$res["IMAGE
"]}" alt=
"{$res["NAME
"]}" border=
"0" class=
"icons {$classImg}" $width $height />
1208 <input type=
"radio" name=
"ICON" value=
"{$res["TYPING
"]}" $checked />
1215 $res_str .=
"</tr><tr>";
1218 $res_str .=
'</tr></table>';
1230 $num_cols = intval($num_cols);
1231 $num_cols = $num_cols > 0 ? $num_cols : 3;
1232 $strLang = ($strLang ===
false ? LANGUAGE_ID : $strLang);
1233 $strPath2Icons =
"/bitrix/images/forum/smile/";
1234 $arSmile = CForumSmile::getByType(
"S", $strLang);
1238 foreach ($arSmile as
$res)
1240 if ($ind == 0) $res_str .=
"<tr align=\"center\">";
1241 $res_str .=
"<td width=\"".intval(100/$num_cols).
"%\">";
1242 $strTYPING = strtok(
$res[
'TYPING'],
" ");
1243 $res_str .=
"<img src=\"".$strPath2Icons.$res[
'IMAGE'].
"\" alt=\"".
$res[
'NAME'].
"\" title=\"".
$res[
'NAME'].
"\" border=\"0\"";
1244 if (!empty(
$res[
'IMAGE_WIDTH'])) $res_str .=
" width=\"".intval(
$res[
'IMAGE_WIDTH']).
"\"";
1245 if (!empty(
$res[
'IMAGE_HEIGHT'])) $res_str .=
" height=\"".intval(
$res[
'IMAGE_HEIGHT']).
"\"";
1246 $res_str .=
" class=\"smiles-list\" alt=\"smile".$strTYPING.
"\" onclick=\"if(emoticon){emoticon('".$strTYPING.
"');}\" name=\"smile\" id='".$strTYPING.
"' ";
1247 $res_str .=
"/> </td>\n";
1249 if ($ind >= $num_cols)
1252 $res_str .=
"</tr>";
1255 if ($ind < $num_cols)
1257 for (
$i=0;
$i<$num_cols-$ind;
$i++)
1259 $res_str .=
"<td> </td>";
1269 $MID = intval($MID);
1272 $arAddParams = (!is_array($arAddParams) ?
array($arAddParams) : $arAddParams );
1273 $arAddParams[
"PERMISSION"] = (!empty($arAddParams[
"PERMISSION"]) ? $arAddParams[
"PERMISSION"] :
false);
1275 $arError[] =
GetMessage(
"MOVEMES_NO_MESS_EX");
1277 if (!CModule::IncludeModule(
"support"))
1278 $arError[] =
GetMessage(
"MOVEMES_NO_SUPPORT");
1280 if (empty($arError))
1285 $arError[] =
GetMessage(
"MOVEMES_NO_MESS_EX");
1287 elseif (intval($arMessage[
"AUTHOR_ID"])<=0)
1289 $arError[] =
GetMessage(
"MOVEMES_NO_ANONYM");
1293 $arError[] =
GetMessage(
"MOVEMES_NO_PERMS2MOVE");
1298 $arFieldsSu =
array(
1300 "TITLE" => $arTopic[
"TITLE"],
1301 "MESSAGE" => $arMessage[
"POST_MESSAGE"],
1302 "OWNER_USER_ID" => $arMessage[
"AUTHOR_ID"],
1303 "OWNER_SID" => $arMessage[
"AUTHOR_NAME"],
1304 "SOURCE_SID" =>
"forum",
1307 $arIMAGE = CFile::MakeFileArray($arMessage[
"ATTACH_IMG"]);
1308 if(is_array($arIMAGE))
1310 $arIMAGE[
"MODULE_ID"] =
"support";
1311 $arFieldsSu[
"FILES"] =
array($arIMAGE);
1315 $SuID = intval($SuID);
1319 $sNote[] =
GetMessage(
"MOVEMES_SUCCESS_SMOVE");
1323 $arError[] =
GetMessage(
"MOVEMES_ERROR_SMOVE");
1327 if (!empty($arError))
1329 if (!empty($arNote))
1330 $strOKMessage .= implode(
".\n",$arNote).
".\n";
1332 if (empty($arError))
1344 $UID = intval($UID);
1345 $VOTES = intval($VOTES);
1346 $bDelVote = ($bDelVote ? true :
false);
1355 if (!
$USER->IsAuthorized())
1357 $arError[] =
GetMessage(
"FORUM_GV_ERROR_AUTH");
1361 $CurrUserID = intval(
$USER->GetParam(
"USER_ID"));
1372 $arError[] =
GetMessage(
"FORUM_GV_ERROR_NO_VOTE");
1377 $VOTES = intval($arUserRank[
"VOTES"]);
1379 if ($VOTES == 0) $VOTES = 1;
1388 if ($bDelVote || $VOTES<=0)
1391 $arNote[] =
GetMessage(
"FORUM_GV_SUCCESS_UNVOTE");
1393 $arError[] =
GetMessage(
"FORUM_GV_ERROR_VOTE");
1397 if (intval($arUserPoints[
"POINTS"])<intval($arUserRank[
"VOTES"])
1401 $arNote[] =
GetMessage(
"FORUM_GV_SUCCESS_VOTE_UPD");
1403 $arError[] =
GetMessage(
"FORUM_GV_ERROR_VOTE_UPD");
1407 $arError[] =
GetMessage(
"FORUM_GV_ALREADY_VOTE");
1413 if (!$bDelVote && $VOTES>0)
1419 $arNote[] =
GetMessage(
"FORUM_GV_SUCCESS_VOTE_ADD");
1421 $arError[] =
GetMessage(
"FORUM_GV_ERROR_VOTE_ADD");
1433 if (!empty($arError))
1435 if (!empty($arNote))
1436 $strOKMessage .= implode(
".\n", $arNote).
".\n";
1438 if (empty($arError))
1450 $date = Date(CDatabase::DateFormatToPHP(CLang::GetDateFormat(
"FULL",
SITE_ID)), time() - $period + CTimeZone::GetOffset());
1451 $arField =
array(
">=LAST_VISIT" => $date,
"COUNT_GUEST"=>
true);
1453 $arField[
"FORUM_ID"] =
$arFields[
"FORUM_ID"];
1455 $arField[
"TOPIC_ID"] =
$arFields[
"TOPIC_ID"];
1458 $OnLineUser =
array();
1459 $arOnLineUser =
array();
1460 $OnLineUserStr =
"";
1461 $UserHideOnLine = 0;
1467 $OnLineUser[
"USER"] =
array();
1470 if ((
$res[
"USER_ID"] > 0) && (
$res[
"HIDE_FROM_ONLINE"] !=
"Y"))
1472 $OnLineUser[
"USER"][] =
"<a href=\"view_profile.php?UID=".$res[
"USER_ID"].
"\" title='".
GetMessage(
"FORUM_USER_PROFILE").
"'>".
$res[
"SHOW_NAME"].
"</a>";
1473 $arOnLineUser[] = array_merge(
$res,
array(
"UID"=>
$res[
"USER_ID"],
"title" =>
GetMessage(
"FORUM_USER_PROFILE"),
"text" =>
$res[
"SHOW_NAME"]));
1475 elseif((
$res[
"USER_ID"] > 0) && (
$res[
"HIDE_FROM_ONLINE"] ==
"Y"))
1478 $OnLineUser[
"GUEST"] = intval(
$res[
"COUNT_USER"]);
1481 $CountAllUsers =
count($OnLineUser[
"USER"]) + $UserHideOnLine + ($OnLineUser[
"GUEST"] ?? 0);
1482 $result[
"GUEST"] = ($OnLineUser[
"GUEST"] ?? 0);
1483 $result[
"HIDE"] = $UserHideOnLine;
1484 $result[
"REGISTER"] = intval(
count($OnLineUser[
"USER"])+$UserHideOnLine);
1485 $result[
"ALL"] = $CountAllUsers;
1487 if ($CountAllUsers > 0)
1491 $result[
"PERIOD"] = round($period/60);
1492 $result[
"HEAD"] = str_replace(
"##",
"<b>".round($period/60).
"</b>",
GetMessage(
"FORUM_AT_LAST_PERIOD")).
" ".
1493 GetMessage(
"FORUM_COUNT_ALL_USER").
": <b>".$CountAllUsers.
"</b><br/>";
1495 $OnLineUserStr =
GetMessage(
"FORUM_COUNT_GUEST").
": <b>".intval($OnLineUser[
"GUEST"] ?? 0).
"</b>, ".
1496 GetMessage(
"FORUM_COUNT_USER").
": <b>".intval(
count($OnLineUser[
"USER"])+$UserHideOnLine).
"</b>,
1497 ".
GetMessage(
"FORUM_FROM_THIS").
" ".
GetMessage(
"FORUM_COUNT_USER_HIDEFROMONLINE").
": <b>".$UserHideOnLine.
"</b>";
1499 if (
count($OnLineUser[
"USER"]) > 0)
1501 $OnLineUserStr .=
"<br/>".implode(
", ", $OnLineUser[
"USER"]).
"<br/>";
1502 $result[
"USER"] = $arOnLineUser;
1516 $result[
"BODY"] = $OnLineUserStr;
1523 "guest" =>
array(
"guest",
$GLOBALS[
"FORUM_STATUS_NAME"][
"guest"]),
1524 "user" =>
array(
"user",
$GLOBALS[
"FORUM_STATUS_NAME"][
"user"]),
1525 "Q" =>
array(
"moderator",
$GLOBALS[
"FORUM_STATUS_NAME"][
"moderator"]),
1526 "U" =>
array(
"editor",
$GLOBALS[
"FORUM_STATUS_NAME"][
"editor"]),
1527 "Y" =>
array(
"administrator",
$GLOBALS[
"FORUM_STATUS_NAME"][
"administrator"])
1530 if (!empty($userID))
1537 $arRank = (
is_set($arAdditionalParams,
"Rank") ?
1539 if (is_array($arRank) && $arRank[
"NAME"])
1540 $res =
array($arRank[
"CODE"], $arRank[
"NAME"]);
1560 $param = implode(
",",
$val);
1563 if (($param <>
'') || ($addIfNull))
1565 if (mb_strpos($page_url,
$key) !==
false)
1567 $page_url = preg_replace(
"/".
$key.
"\=[^\&]*((\&\;)|(\&)*)/",
"", $page_url);
1576 if (mb_strpos($page_url,
"?") ===
false)
1578 elseif ((mb_substr($page_url, -5, 5) !=
"&") && (mb_substr($page_url, -1, 1) !=
"&") && (mb_substr($page_url, -1, 1) !=
"?"))
1583 if ($htmlSpecialChars)
1586 $page_url .= $strParams;
1607 $result =
ForumAddMessage(
"REPLY",
$arFields[
"FID"],
$arFields[
"TID"], 0,
$arFields, $sError, $sNote,
false,
$arFields[
"captcha_word"], 0,
$arFields[
"captcha_code"],
$arFields[
"NAME_TEMPLATE"]);
1619 case "FORUM_MESSAGE2SUPPORT":
1622 case "FORUM_SUBSCRIBE":
1623 case "TOPIC_SUBSCRIBE":
1624 case "FORUM_SUBSCRIBE_TOPICS":
1627 case "SET_ORDINARY":
1631 if (
$action ==
"SET_ORDINARY")
1654 $result = new \Bitrix\Main\Result();
1655 $usr = \Bitrix\Forum\User::getById(
$USER->GetID());
1656 foreach ($topicIds as $topicId)
1658 $topic = \Bitrix\Forum\Topic::getById($topicId);
1659 $forum = \Bitrix\Forum\Forum::getById($topic->getForumId());
1662 $usr->setPermissionOnForum($forum,
$arFields[
"PERMISSION"]);
1664 if (!$usr->canModerate($forum))
1670 $res = (
$action ==
"HIDE_TOPIC" ? $topic->disapprove() : $topic->approve());
1671 if (!
$res->isSuccess())
1679 $sError = implode(
"",
$result->getErrorMessages());
1695 $strOKMessage = $sNote;
1717 $aSortOrder =
array(
1718 "P" =>
"LAST_POST_DATE",
1722 "D" =>
"START_DATE",
1723 "A" =>
"USER_START_NAME");
1724 if (empty($field_name) && !empty($arForumInfo))
1726 $field_name = trim($arForumInfo[
"ORDER_BY"]);
1727 $direction = trim($arForumInfo[
"ORDER_DIRECTION"]);
1730 $field_name = mb_strtoupper($field_name);
1733 $field_name = (!empty($aSortOrder[$field_name]) ? $aSortOrder[$field_name] : (in_array($field_name, $aSortOrder) ? $field_name :
"LAST_POST_DATE"));
1740 $bShowErrorCode = ($bShowErrorCode ===
true ? true :
false);
1744 if (empty($arError))
1746 elseif (!is_array($arError))
1749 if (!empty($arError[
"title"]) || !empty($arError[
"code"]))
1752 $sReturn .= (!empty(
$res[
"title"]) ?
$res[
"title"] :
$res[
"code"]).
1753 ($bShowErrorCode ?
"[CODE: ".
$res[
"code"].
"]" :
"");
1754 unset($arError[
"code"]); unset($arError[
"title"]);
1756 foreach ($arError as
$res):
1757 $sReturn .= (!empty(
$res[
"title"]) ?
$res[
"title"] :
$res[
"code"]).
1758 ($bShowErrorCode ?
"[CODE: ".
$res[
"code"].
"]" :
"").
" ";
1765 if (empty($components))
1767 $aComponents = (is_array($components) ? $components : explode(
",", $components));
1771 $componentRelativePath = CComponentEngine::MakeComponentPath($component_name);
1772 if ($componentRelativePath <>
'')
1791 $sByVarE = $sByVar . $ii;
1792 $sOrderVarE = $sOrderVar . $ii;
1793 global ${$sByVarE}, ${$sOrderVarE};
1798 $md5Path = md5($Path);
1799 if (!empty(${$sByVarE}))
1800 $_SESSION[
"SESS_SORT_BY_EX"][$md5Path][$sByVarE] = ${$sByVarE};
1802 ${$sByVarE} = $_SESSION[
"SESS_SORT_BY_EX"][$md5Path][$sByVarE];
1804 if(!empty(${$sOrderVarE}))
1805 $_SESSION[
"SESS_SORT_ORDER_EX"][$md5Path][$sOrderVarE] = ${$sOrderVarE};
1807 ${$sOrderVarE} = $_SESSION[
"SESS_SORT_ORDER_EX"][$md5Path][$sOrderVarE];
1809 mb_strtolower(${$sByVarE});
1810 mb_strtolower(${$sOrderVarE});
1811 ${$sByVar} = ${$sByVarE};
1812 ${$sOrderVar} = ${$sOrderVarE};
1817 static $arForumGetEntity =
array();
1818 if (array_key_exists(
$entityId, $arForumGetEntity))
static create($parentObject, array $fields)
static create($parentObject, array $fields)
static getConnection($name="")
static registerAutoLoadClasses($moduleName, array $classes)
static SendMailMessage($MID, $arFields=array(), $strLang=false, $mailTemplate=false)
static GetByID($ID, $arAddParams=array())
static Update($ID, $arFields, $skip_counts=false, $strUploadDir=false)
static CanUserDeleteMessage($MID, $arUserGroups, $iUserID=0, $ExternalPermission=false)
static CanUserUpdateMessage($MID, $arUserGroups, $iUserID=0, $ExternalPermission=false)
static GetUserPermission($ID, $arUserGroups)
static GetPermissionUserDefault($ID)
static SetStat($ID=0, $arParams=array())
static CanUserAddSubscribe($FID, $arUserGroups)
static CanUserDeleteSubscribe($ID, $arUserGroups, $CurrentUserID=0)
static GetListEx($arOrder=array("ID"=>"ASC"), $arFilter=array())
static Update($ID, $arFields, $skip_counts=False)
static CanUserUpdateTopic($TID, $arUserGroups, $iUserID=0, $ExternalPermission=false)
static GetByID($ID, $arAddParams=array())
static SetStat($ID=0, $params=[])
static CanUserDeleteTopic($TID, $arUserGroups, $iUserID=0, $ExternalPermission=false)
static GetUserRank($USER_ID, $strLang=false)
static IsAdmin($userId=false, $arGroups=false)
static Update($FROM_USER_ID, $TO_USER_ID, $arFields)
static GetByID($FROM_USER_ID, $TO_USER_ID)
static Delete($FROM_USER_ID, $TO_USER_ID)
static MarkAsSpam($ID, $bIsSPAM=true, $arRow=false)
static SetTicket($arFields, $ticketID="", $checkRights="Y", $sendEmailToAuthor="Y", $sendEmailToTechsupport="Y")
static GetComponentDescr($componentName)
static ClearTag($type, $ID=0)
static Log($object, $action, $id, $description="", $title="")
static GetList($arOrder=Array("ID"=>"ASC"), $arFilter=Array(), $iNum=0, $arAddParams=array())
static GetList($arOrder=Array("ID"=>"ASC"), $arFilter=Array(), $bCount=false, $iNum=0, $arAddParams=array())
static GetListEx($arOrder=Array("ID"=>"ASC"), $arFilter=Array(), $arAddParams=array())
static GetListEx($arOrder=Array("SORT"=>"ASC"), $arFilter=Array(), $bCount=false, $iNum=0, $arAddParams=[])
if(!is_array($prop["VALUES"])) $tmp
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
ForumDeleteMessage($message, &$strErrorMessage, &$strOKMessage, $arAddParams=array())
ForumAddPageParams($page_url="", $params=array(), $addIfNull=false, $htmlSpecialChars=true)
ForumGetEntity($entityId, $value=true)
ForumMoveMessage2Support($MID, &$strErrorMessage, &$strOKMessage, $arAddParams=array())
ForumClearComponentCache($components)
ShowActiveUser($arFields=array())
ForumSubscribeNewMessages($FID, $TID, &$strErrorMessage, &$strOKMessage, $NEW_TOPIC_ONLY="N", $strSite=false, $SOCNET_GROUP_ID=false)
ForumMoveMessage($FID, $TID, $Message, $NewTID, $arFields, &$strErrorMessage, &$strOKMessage, $iFileSize=false)
ForumUnsubscribeNewMessagesEx($FID, $TID, $NEW_TOPIC_ONLY, &$strErrorMessage, &$strOKMessage, $strSite=false, $SOCNET_GROUP_ID=false)
ForumModerateMessageArray($message, $TYPE, &$strErrorMessage, &$strOKMessage)
ForumUnsubscribeNewMessages($FID, $TID, &$strErrorMessage, &$strOKMessage, $NEW_TOPIC_ONLY="N", $strSite=false, $SOCNET_GROUP_ID=false)
ForumMessageExistInArray($message=array())
ForumSpamMessage($message, &$strErrorMessage, &$strOKMessage, $arAddParams=array())
ForumDataToArray(&$message)
ForumPrintSmilesList($num_cols, $strLang=false)
ForumOpenCloseTopic($topicIds, $TYPE, &$strErrorMessage, &$strOKMessage, $arAddParams=array())
ForumShowError($arError, $bShowErrorCode=false)
ForumActions($action, $arFields, &$strErrorMessage, &$strOKMessage)
ForumDeleteMessageArray($message, &$strErrorMessage, &$strOKMessage)
ForumModerateMessage($message, $TYPE, &$strErrorMessage, &$strOKMessage, $arAddParams=array())
ForumSpamTopic($topic, &$strErrorMessage, &$strOKMessage, $arAddParams=array())
ForumGetTopicSort(&$field_name, &$direction, $arForumInfo=array())
ForumShowTopicPages($nMessages, $strUrl, $pagen_var="PAGEN_1", $PAGE_ELEMENTS=false)
ForumSubscribeNewMessagesEx($FID, $TID, $NEW_TOPIC_ONLY, &$strErrorMessage, &$strOKMessage, $strSite=false, $SOCNET_GROUP_ID=false)
ForumGetUserForumStatus($userID=false, $perm=false, $arAdditionalParams=array())
InitSortingEx($Path=false, $sByVar="by", $sOrderVar="order")
if(file_exists(__DIR__."/deprecated.php")) $arNameStatuses
ForumDeleteTopic($topic, &$strErrorMessage, &$strOKMessage, $arAddParams=array())
ForumTopOrdinaryTopic($topic, $TYPE, &$strErrorMessage, &$strOKMessage, $arAddParams=array())
ForumPrintIconsList($num_cols, $value="")
ForumCurrUserPermissions($FID, $arAddParams=array())
ForumVote4User($UID, $VOTES, $bDelVote, &$strErrorMessage, &$strOKMessage)
ForumAddMessage( $MESSAGE_TYPE, $FID, $TID, $MID, $arFieldsG, &$strErrorMessage, &$strOKMessage, $iFileSize=false, $captcha_word="", $captcha_sid=0, $captcha_code="")
$_SERVER["DOCUMENT_ROOT"]
ExecuteModuleEventEx($arEvent, $arParams=[])
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
GetMessage($name, $aReplace=null)
BXClearCache($full=false, $initdir='')
global_menu_<?echo $menu["menu_id"]?> adm main menu item icon adm main menu item text text adm main menu hover adm submenu menucontainer menu_id menu_id items_id items_id desktop menu_id block none adm global submenu<?=($subMenuDisplay=="block" ? " adm-global-submenu-active" :"")?> global_submenu_<?echo $menu["menu_id"]?> text MAIN_PR_ADMIN_FAV items adm submenu items wrap adm submenu items stretch wrap BX adminMenu itemsStretchScroll()"> <table class if (!empty( $menu["items"])) elseif ( $menu[ 'menu_id']=='desktop') if ( $menu[ 'menu_id']=='desktop') endforeach
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."%"
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']
$GLOBALS['_____370096793']