8 public static function CanUserViewTopic($TID, $arUserGroups, $iUserID = 0, $ExternalPermission =
false)
20 if ($strPerms <
"E" || ($strPerms <
"Q" && $arTopic[
"APPROVED"] !=
"Y"))
23 return ($arForum[
"ACTIVE"] ==
"Y" ?
true :
false);
28 public static function CanUserAddTopic($FID, $arUserGroups, $iUserID = 0, $arForum =
false, $ExternalPermission =
false)
30 if (!$arForum || (!is_array($arForum)) || (intval($arForum[
"ID"]) != intval($FID)))
32 if (is_array($arForum) && $arForum[
"ID"] = $FID)
46 return ($arForum[
"ACTIVE"] ==
"Y" ?
true :
false);
51 public static function CanUserUpdateTopic($TID, $arUserGroups, $iUserID = 0, $ExternalPermission =
false)
54 $iUserID = intval($iUserID);
68 elseif ($strPerms <
"M" || ($strPerms <
"Q" && ($arTopic[
"APPROVED"] !=
"Y" || $arTopic[
"STATE"] !=
"Y")))
71 if ($arForum[
"ACTIVE"] !=
"Y")
76 $iCnt = 0; $iOwner = 0;
81 $iCnt++; $iOwner = intval(
$res[
"AUTHOR_ID"]);
85 if ($iOwner <= 0 || $iUserID <= 0 || $iOwner != $iUserID)
92 public static function CanUserDeleteTopic($TID, $arUserGroups, $iUserID = 0, $ExternalPermission =
false)
106 if ($strPerms >=
"Y")
111 return ($arForum[
"ACTIVE"] ==
"Y" ?
true :
false);
130 if ($strPerms >=
"Y")
135 return ($arForum[
"ACTIVE"] ==
"Y" ?
true :
false);
153 $arFields[
"TITLE_SEO"] = CUtil::translit(
$arFields[
"TITLE"], LANGUAGE_ID,
array(
"max_len"=>255,
"safe_chars"=>
".",
"replace_space" =>
'-'));
215 $entity = \Bitrix\Forum\TopicTable::getEntity();
235 $topic = \Bitrix\Forum\Topic::getById(
$ID);
236 $entity = \Bitrix\Forum\TopicTable::getEntity();
240 $k = (mb_strpos(
$k,
"=") === 0? mb_substr(
$k, 1) :
$k);
245 if ($field instanceof \
Bitrix\Main\ORM\Fields\DateField)
247 $data[
$k] = new \Bitrix\Main\Type\DateTime(\
Bitrix\Main\Type\DateTime::isCorrect($v) ? $v :
null);
249 else if (isset($v) && preg_match(
"/{$k}\s*(\+|\-)\s*(\d+)/", $v,
$matches))
251 $data[
$k] = new \Bitrix\Main\DB\SqlExpression(
"?# $matches[1] $matches[2]",
$k);
255 $fieldForEdit = array_intersect_key(
$data, array_flip([
"TITLE",
262 if (!empty($fieldForEdit))
267 if (array_key_exists(
"FORUM_ID",
$data))
269 $topic->moveToForum(
$data[
"FORUM_ID"]);
270 unset(
$GLOBALS[
"FORUM_CACHE"][
"FORUM"]);
271 unset(
$data[
"FORUM_ID"]);
279 unset(
$GLOBALS[
"FORUM_CACHE"][
"TOPIC_FILTER"][
$ID]);
289 $arTopics = (is_array($TID) ? $TID : (intval($TID) > 0 ?
array($TID) :
array()));
290 $leaveLink = (mb_strtoupper($leaveLink) ==
"Y" ?
"Y" :
"N");
297 "id" =>
"FORUM_NOT_EXIST",
298 "text" =>
GetMessage(
"F_ERR_FORUM_NOT_EXIST",
array(
"#FORUM_ID#" => $FID)));
300 if (empty($arTopics))
303 "id" =>
"TOPIC_EMPTY",
310 $GLOBALS[
"APPLICATION"]->ThrowException($e);
314 $arTopicsCopy = $arTopics;
316 foreach ($arTopicsCopy as
$res)
326 if (intval(
$res[
"FORUM_ID"]) == $FID)
329 "id" =>
"FORUM_ID_IDENTICAL",
330 "text" =>
GetMessage(
"F_ERR_THIS_TOPIC_IS_NOT_MOVE",
337 if ($leaveLink !=
"N")
341 "TITLE" =>
$res[
"TITLE"],
342 "DESCRIPTION" =>
$res[
"DESCRIPTION"],
344 "USER_START_NAME" =>
$res[
"USER_START_NAME"],
345 "START_DATE" =>
$res[
"START_DATE"],
346 "ICON" =>
$res[
"ICON"],
349 "FORUM_ID" =>
$res[
"FORUM_ID"],
350 "TOPIC_ID" =>
$res[
"ID"],
351 "APPROVED" =>
$res[
"APPROVED"],
352 "SORT" =>
$res[
"SORT"],
353 "LAST_POSTER_NAME" =>
$res[
"LAST_POSTER_NAME"],
354 "LAST_POST_DATE" =>
$res[
"LAST_POST_DATE"],
355 "HTML" =>
$res[
"HTML"],
356 "USER_START_ID" =>
$res[
"USER_START_ID"],
357 "SOCNET_GROUP_ID" =>
$res[
"SOCNET_GROUP_ID"],
358 "OWNER_ID" =>
$res[
"OWNER_ID"]));
363 $strSql =
"UPDATE b_forum_message SET FORUM_ID=".$FID.
", POST_MESSAGE_HTML='' WHERE TOPIC_ID=".
$res[
"ID"];
366 $strSql =
"UPDATE b_forum_subscribe SET FORUM_ID=".intval($FID).
" WHERE TOPIC_ID=".
$res[
"ID"];
371 unset(
$GLOBALS[
"FORUM_CACHE"][
"TOPIC_FILTER"][
$res[
"ID"]]);
372 $arTopics[intval(
$res[
"ID"])] =
$res;
377 $res_log[
"DESCRIPTION"] = str_replace(
array(
"#TOPIC_TITLE#",
"#TOPIC_ID#",
"#FORUM_TITLE#",
"#FORUM_ID#"),
378 array(
$res[
"TITLE"],
$res[
"ID"], $arForum[
"NAME"], $arForum[
"ID"]),
379 ($leaveLink !=
"N" ?
GetMessage(
"F_LOGS_MOVE_TOPIC_WITH_LINK") :
GetMessage(
"F_LOGS_MOVE_TOPIC")));
380 $res_log[
"FORUM_ID"] = $arForum[
"ID"];
381 $res_log[
"TOPIC_ID"] =
$res[
"ID"];
382 $res_log[
"TITLE"] =
$res[
"TITLE"];
383 $res_log[
"FORUM_TITLE"] = $arForum[
"NAME"];
388 unset(
$GLOBALS[
"FORUM_CACHE"][
"FORUM"][$FID]);
389 if(CACHED_b_forum !==
false)
390 $GLOBALS[
"CACHE_MANAGER"]->CleanDir(
"b_forum");
398 $GLOBALS[
"APPLICATION"]->ThrowException($e);
404 if ($leaveLink !=
"Y")
416 if ($topic = \
Bitrix\Forum\Topic::getById(
$ID))
418 $arTopic = $topic->getData();
422 unset(
$GLOBALS[
"FORUM_CACHE"][
"TOPIC_FILTER"][
$ID]);
425 foreach(
GetModuleEvents(
"forum",
"onAfterTopicDelete",
true) as $arEvent)
435 if (mb_strlen(
$ID) < 1)
return False;
437 $NoFilter = (isset($arAddParams[
"NoFilter"]) && $arAddParams[
"NoFilter"] ==
true) || COption::GetOptionString(
"forum",
"FILTER",
"Y") !=
"Y" ? true :
false;
445 return $GLOBALS[
"FORUM_CACHE"][
"TOPIC_FILTER"][
$ID];
451 FT.TITLE_SEO as TITLE_SEO_REAL,
452 ".CForumNew::Concat(
"-",
array(
"FT.ID",
"FT.TITLE_SEO")).
" as TITLE_SEO,
453 ".
$DB->DateToCharFunction(
"FT.START_DATE",
"FULL").
" as START_DATE,
454 ".
$DB->DateToCharFunction(
"FT.LAST_POST_DATE",
"FULL").
" as LAST_POST_DATE
455 FROM b_forum_topic FT ";
457 if (intval(
$ID) > 0 ||
$ID === 0)
458 $strSql .=
"WHERE FT.ID = ".intval(
$ID);
460 $strSql .=
"WHERE FT.XML_ID = '".$DB->ForSql(
$ID).
"'";
466 if (COption::GetOptionString(
"forum",
"FILTER",
"Y") ==
"Y")
468 $db_res_filter =
new CDBResult;
469 $db_res_filter->InitFromArray(
array(
$res));
471 if ($res_filter = $db_res_filter->Fetch())
472 $GLOBALS[
"FORUM_CACHE"][
"TOPIC_FILTER"][
$ID] = $res_filter;
490 $arAddParams = (is_array($arAddParams) ? $arAddParams :
array($arAddParams));
491 $arAddParams[
"GET_FORUM_INFO"] = (isset($arAddParams[
"GET_FORUM_INFO"]) && $arAddParams[
"GET_FORUM_INFO"] ==
"Y" ?
"Y" :
"N");
493 if (!empty($arAddParams[
"sNameTemplate"]))
495 $arSQL = array_merge_recursive(
498 "sUserTablePrefix" =>
"U_START.",
499 "sForumUserTablePrefix" =>
"FU_START.",
500 "sFieldName" =>
"USER_START_NAME_FRMT",
501 "sUserIDFieldName" =>
"FT.USER_START_ID"))),
504 "sUserTablePrefix" =>
"U_LAST.",
505 "sForumUserTablePrefix" =>
"FU_LAST.",
506 "sFieldName" =>
"LAST_POSTER_NAME_FRMT",
507 "sUserIDFieldName" =>
"FT.LAST_POSTER_ID"))),
510 "sUserTablePrefix" =>
"U_ABS_LAST.",
511 "sForumUserTablePrefix" =>
"FU_ABS_LAST.",
512 "sFieldName" =>
"ABS_LAST_POSTER_NAME_FRMT",
513 "sUserIDFieldName" =>
"FT.ABS_LAST_POSTER_ID"))));
515 if (isset($arAddParams[
"GET_FORUM_INFO"]) && $arAddParams[
"GET_FORUM_INFO"] ==
"Y")
518 $arSQL[
"join"][] =
"INNER JOIN b_forum F ON (FT.FORUM_ID = F.ID)";
520 $arSQL[
"select"] = (!empty($arSQL[
"select"]) ?
",\n\t".implode(
",\n\t", $arSQL[
"select"]) :
"");
521 $arSQL[
"join"] = (!empty($arSQL[
"join"]) ?
"\n\t".implode(
"\n", $arSQL[
"join"]) :
"");
525 " FT.TITLE_SEO as TITLE_SEO_REAL, ".CForumNew::Concat(
"-",
array(
"FT.ID",
"FT.TITLE_SEO")).
" as TITLE_SEO, \n".
526 " ".$DB->DateToCharFunction(
"FT.START_DATE",
"FULL").
" as START_DATE, \n".
527 " ".$DB->DateToCharFunction(
"FT.LAST_POST_DATE",
"FULL").
" as LAST_POST_DATE, \n".
528 " '' as IMAGE, '' as IMAGE_DESCR".$arSQL[
"select"].
"\n".
529 "FROM b_forum_topic FT \n".
530 " ".$arSQL[
"join"].
"\n".
531 "WHERE FT.ID = ".$ID;
539 if ($arAddParams[
"GET_FORUM_INFO"] ==
"Y")
545 if (mb_substr(
$key, 0, 2) ==
"F_")
550 if (!empty(
$res[
"TOPIC_INFO"]))
552 $GLOBALS[
"FORUM_CACHE"][
"TOPIC"][intval(
$res[
"TOPIC_INFO"][
"ID"])] =
$res[
"TOPIC_INFO"];
553 if (COption::GetOptionString(
"forum",
"FILTER",
"Y") ==
"Y")
555 $db_res_filter =
new CDBResult;
556 $db_res_filter->InitFromArray(
array(
$res[
"TOPIC_INFO"]));
558 if ($res_filter = $db_res_filter->Fetch())
559 $GLOBALS[
"FORUM_CACHE"][
"TOPIC_FILTER"][intval(
$res[
"TOPIC_INFO"][
"ID"])] = $res_filter;
562 if (!empty(
$res[
"FORUM_INFO"]))
564 $GLOBALS[
"FORUM_CACHE"][
"FORUM"][intval(
$res[
"FORUM_INFO"][
"ID"])] =
$res[
"FORUM_INFO"];
577 if (!$arTopic)
return False;
581 "FORUM_ID" => $arTopic[
"FORUM_ID"],
582 "<LAST_POST_DATE" => $arTopic[
"LAST_POST_DATE"]
593 "FORUM_ID" => $arTopic[
"FORUM_ID"],
594 ">LAST_POST_DATE" => $arTopic[
"LAST_POST_DATE"]
603 return array($PREV_TOPIC, $NEXT_TOPIC);
609 $arAddParams = (is_array($arAddParams) ? $arAddParams :
array());
610 $arAddParams[
"sPrefix"] =
$DB->ForSql(empty($arAddParams[
"sPrefix"]) ?
"FT." : $arAddParams[
"sPrefix"]);
611 $arAddParams[
"sTablePrefix"] =
$DB->ForSql(empty($arAddParams[
"sTablePrefix"]) ?
"FT." : $arAddParams[
"sTablePrefix"]);
612 $arAddParams[
"sReturnResult"] = ($arAddParams[
"sReturnResult"] ==
"string" ?
"string" :
"array");
617 "TITLE_SEO_REAL" => $arAddParams[
"sTablePrefix"].
"TITLE_SEO",
618 "TITLE_SEO" =>
CForumNew::Concat(
"-",
array($arAddParams[
"sTablePrefix"].
"ID", $arAddParams[
"sTablePrefix"].
"TITLE_SEO")),
620 "DESCRIPTION" =>
"DESCRIPTION",
622 "LAST_POSTER_ID" =>
"LAST_POSTER_ID",
623 "START_DATE" =>
$DB->DateToCharFunction($arAddParams[
"sTablePrefix"].
"START_DATE",
"FULL"),
624 "USER_START_NAME" =>
"USER_START_NAME",
625 "USER_START_ID" =>
"USER_START_ID",
627 "LAST_POSTER_NAME" =>
"LAST_POSTER_NAME",
628 "LAST_POST_DATE" =>
$DB->DateToCharFunction($arAddParams[
"sTablePrefix"].
"LAST_POST_DATE",
"FULL"),
629 "LAST_MESSAGE_ID" =>
"LAST_MESSAGE_ID",
630 "APPROVED" =>
"APPROVED",
632 "FORUM_ID" =>
"FORUM_ID",
633 "TOPIC_ID" =>
"TOPIC_ID",
636 "SOCNET_GROUP_ID" =>
"SOCNET_GROUP_ID",
637 "OWNER_ID" =>
"OWNER_ID",
638 "XML_ID" =>
"XML_ID"),
$fields);
644 $res[$arAddParams[
"sPrefix"].$key] = $arAddParams[
"sTablePrefix"].$val;
648 $res[($arAddParams[
"sPrefix"] == $arAddParams[
"sTablePrefix"] ?
"" : $arAddParams[
"sPrefix"]).
$key] =
$val;
651 if ($arAddParams[
"sReturnResult"] ==
"string")
669 $FID = intval($arTopic[
"FORUM_ID"]);
670 if (is_null($_SESSION[
"read_forum_".$FID]) || $_SESSION[
"read_forum_".$FID] ==
'')
672 $_SESSION[
"read_forum_".$FID] =
"0";
675 $_SESSION[
"first_read_forum_".$FID] = intval($_SESSION[
"first_read_forum_".$FID]);
681 if (intval($_SESSION[
"first_read_forum_".$FID])>0)
682 $arFilter[
">ID"] = intval($_SESSION[
"first_read_forum_".$FID]);
683 if ($_SESSION[
"read_forum_".$FID]!=
"0")
684 $arFilter[
"!@ID"] = $_SESSION[
"read_forum_".$FID];
692 $_SESSION[
"read_forum_".$FID] .=
",".intval(
$ar_res[
"ID"]);
702 $forumUser = \Bitrix\Forum\User::getById(
$USER->getId());
703 if ($updateForum ===
true)
705 $forumUser->readTopicsOnForum(
$ID);
709 $forumUser->readTopic(
$ID);
716 return "CForumTopic::CleanUp();";
730 if (!empty(
$params[
"MESSAGE"][
"TOPIC_ID"]) &&
$params[
"MESSAGE"][
"TOPIC_ID"] ==
$ID)
735 "ABS_LAST_POSTER_ID" =>
$message[
"AUTHOR_ID"],
736 "ABS_LAST_POSTER_NAME" =>
$message[
"AUTHOR_NAME"],
737 "ABS_LAST_POST_DATE" =>
$message[
"POST_DATE"],
738 "ABS_LAST_MESSAGE_ID" =>
$message[
"ID"]
755 $arFields[
"=POSTS_UNAPPROVED"] =
"POSTS_UNAPPROVED+1";
758 else if (isset(
$params[
'DELETED_MESSAGE'])
761 $params[
'DELETED_MESSAGE'][
'ID'] < $arTopic[
'LAST_MESSAGE_ID']
766 $deleteMessage =
$params[
'DELETED_MESSAGE'];
767 if ($deleteMessage[
'APPROVED'] ===
'Y')
773 $arFields[
'=POSTS_UNAPPROVED'] =
'POSTS_UNAPPROVED-1';
779 $res[
"CNT"] = (intval(
$res[
"CNT"]) - intval(
$res[
"CNT_NOT_APPROVED"]));
781 if (intval(
$res[
"ABS_FIRST_MESSAGE_ID"]) > 0 && intval(
$res[
"ABS_FIRST_MESSAGE_ID"]) != intval(
$res[
"FIRST_MESSAGE_ID"]))
783 $GLOBALS[
"DB"]->Query(
"UPDATE b_forum_message SET NEW_TOPIC = (CASE WHEN ID=".intval(
$res[
"ABS_FIRST_MESSAGE_ID"]).
" THEN 'Y' ELSE 'N' END) WHERE TOPIC_ID=".
$ID);
790 "APPROVED" => (
$res[
"CNT"] > 0 ?
"Y" :
"N"),
791 "POSTS" => (
$res[
"CNT"] > 0 ? (
$res[
"CNT"] - 1) : 0),
792 "LAST_POSTER_ID" =>
false,
793 "LAST_POSTER_NAME" =>
false,
794 "LAST_POST_DATE" =>
false,
795 "LAST_MESSAGE_ID" => intval(
$res[
"LAST_MESSAGE_ID"]),
796 "POSTS_UNAPPROVED" => intval(
$res[
"CNT_NOT_APPROVED"]),
797 "ABS_LAST_POSTER_ID" =>
false,
798 "ABS_LAST_POSTER_NAME" =>
false,
799 "ABS_LAST_POST_DATE" =>
false,
800 "ABS_LAST_MESSAGE_ID" => intval(
$res[
"ABS_LAST_MESSAGE_ID"]));
802 if (
$arFields[
"ABS_LAST_MESSAGE_ID"] > 0):
804 $arFields[
"ABS_LAST_POSTER_ID"] = (intval(
$res[
"AUTHOR_ID"]) > 0 ?
$res[
"AUTHOR_ID"] :
false);
807 if (intval(
$arFields[
"LAST_MESSAGE_ID"]) > 0):
811 $arFields[
"LAST_POSTER_ID"] = (intval(
$res[
"AUTHOR_ID"]) > 0 ?
$res[
"AUTHOR_ID"] :
false);
818 "LAST_POST_DATE" =>
"START_DATE",
819 "ABS_LAST_POST_DATE" =>
"START_DATE",
820 "LAST_POSTER_NAME" =>
"USER_START_NAME",
821 "ABS_LAST_POSTER_NAME" =>
"USER_START_NAME") as
$key =>
$val)
835 $ELEMENT_ID = intval($ELEMENT_ID);
836 if ($ELEMENT_ID > 0 && CModule::IncludeModule(
"iblock"))
838 $rsElement = CIBlockElement::GetList(
839 array(
"ID" =>
"ASC"),
842 "SHOW_HISTORY" =>
"Y",
843 "CHECK_PERMISSIONS" =>
"N",
847 array(
"ID",
"WF_PARENT_ELEMENT_ID",
"IBLOCK_ID")
849 $arElement = $rsElement->Fetch();
850 if(is_array($arElement) && $arElement[
"WF_PARENT_ELEMENT_ID"] == 0)
852 $rsProperty = CIBlockElement::GetProperty($arElement[
"IBLOCK_ID"], $arElement[
"ID"],
array(),
array(
"CODE" =>
"FORUM_TOPIC_ID"));
853 if ($rsProperty && $arProperty = $rsProperty->Fetch())
855 if(is_array($arProperty) && $arProperty[
"VALUE"] > 0)
868 static $arCacheCount =
array();
869 static $obCache =
null;
870 static $cacheLabel =
'forum_msg_count';
871 static $notCached = 0;
872 static $TTL = 3600000;
874 if ($approved ===
true) $approved =
"Y";
875 if ($approved ===
false) $approved =
"N";
876 if ($approved ===
null) $approved =
"A";
878 if ($approved !==
"Y" && $approved !==
"N" && $approved !==
"A")
881 if (isset($arCacheCount[$forumID][$topicID][$approved]))
883 return $arCacheCount[$forumID][$topicID][$approved];
886 if ($obCache ===
null)
887 $obCache =
new CPHPCache;
889 $cacheID = md5($cacheLabel.$forumID);
890 $cachePath = str_replace(
array(
":",
"//"),
"/",
"/".
SITE_ID.
"/".$cacheLabel.
"/");
891 if ($obCache->InitCache($TTL, $cacheID, $cachePath))
893 $resCache = $obCache->GetVars();
894 if (is_array($resCache[
'messages']))
895 $arCacheCount[$forumID] = $resCache[
'messages'];
898 if (isset($arCacheCount[$forumID][$topicID][$approved]))
900 return $arCacheCount[$forumID][$topicID][$approved];
905 if ($approved ===
"N" || $approved ===
"Y")
906 $bCount =
"cnt_not_approved";
908 if (intval($topicID) > 0 || $topicID === 0)
921 if ($approved ===
"N")
925 elseif ($approved ===
"Y")
936 $arCacheCount[$forumID][$topicID][$approved] =
$result;
940 $obCache->StartDataCache($TTL, $cacheID, $cachePath);
942 $obCache->EndDataCache(
array(
"messages" => $arCacheCount[$forumID]));
951 private $sNameTemplate =
'';
952 private $noFilter =
false;
953 private static $icons;
957 $this->sNameTemplate = (!empty(
$params[
"sNameTemplate"]) ?
$params[
"sNameTemplate"] :
'');
958 $this->noFilter = (array_key_exists(
'NoFilter',
$params) &&
$params[
'NoFilter'] ===
true);
959 parent::__construct(
$res);
961 protected static function getIcon($iconTyping)
963 if (!is_array(self::$icons))
967 foreach ($smiles as $smile)
968 $result[$smile[
"TYPING"]] = $smile[
"IMAGE"];
971 return (array_key_exists($iconTyping, self::$icons) ? self::$icons[$iconTyping] :
'');
976 if(
$res = parent::Fetch())
978 if (array_key_exists(
"ICON",
$res) && !empty(
$res[
"ICON"]))
983 if ($this->noFilter !==
true)
985 if (COption::GetOptionString(
"forum",
"FILTER",
"Y") ==
"Y")
987 if (!empty(
$res[
"HTML"]))
989 $arr = unserialize(
$res[
"HTML"], [
"allowed_classes" =>
false]);
999 if (!empty(
$res[
"F_HTML"]))
1001 $arr = unserialize(
$res[
"F_HTML"], [
"allowed_classes" =>
false]);
1009 if (!empty(
$res[
"TITLE"]))
1017 $arSqlSearch =
array();
1019 $arSqlSearch[
"FIRST_POST"] =
"FM.ID=".intval(
$res[
"FIRST_POST"]);
1021 $arSqlSearch[
"LAST_POST"] =
"FM.ID=".intval(
$res[
"LAST_POST"]);
1022 if (!empty($arSqlSearch)):
1023 $strSql =
"SELECT FM.ID, ".$DB->DateToCharFunction(
"FM.POST_DATE",
"FULL").
" AS POST_DATE ".
1024 "FROM b_forum_message FM WHERE ".implode(
" OR ", $arSqlSearch);
1030 $res[
"FIRST_POST_DATE"] =
$val[
"POST_DATE"];
1032 $res[
"LAST_POST_DATE"] =
$val[
"POST_DATE"];
1038 if (!empty($this->sNameTemplate))
1042 "USER_START_ID" =>
"USER_START_NAME",
1043 "LAST_POSTER_ID" =>
"LAST_POSTER_NAME",
1044 "ABS_LAST_POSTER_ID" =>
"ABS_LAST_POSTER_NAME") as $id =>
$name)
1047 if (!empty(
$res[$id]))
while($arRes=$dbSites->GetNext()) $arForums
static getIcon($iconTyping)
__construct($res, $params=array())
static update(int $id, array &$data)
static Reindex($ID, &$arMessage=[])
static GetByID($ID, $arAddParams=array())
static GetUserPermission($ID, $arUserGroups)
static GetPermissionUserDefault($ID)
static GetSelectFields($arAddParams=array())
static SetStat($ID=0, $arParams=array())
static Update($ID, $arFields, $skip_counts=False)
static CanUserUpdateTopic($TID, $arUserGroups, $iUserID=0, $ExternalPermission=false)
static GetMessageCount($forumID, $topicID, $approved=null)
static CanUserAddTopic($FID, $arUserGroups, $iUserID=0, $arForum=false, $ExternalPermission=false)
static CanUserDeleteTopicMessage($TID, $arUserGroups, $iUserID=0, $ExternalPermission=false)
static GetByID($ID, $arAddParams=array())
static SetStat($ID=0, $params=[])
static GetByIDEx($ID, $arAddParams=array())
static CheckFields($ACTION, &$arFields)
static SetReadLabelsNew($ID, $updateForum=false, $LastVisit=false, $arAddParams=array())
static SetReadLabels($ID, $arUserGroups)
static CleanUp($period=168)
static OnBeforeIBlockElementDelete($ELEMENT_ID)
static GetSelectFields($arAddParams=array(), $fields=array())
static GetNeighboringTopics($TID, $arUserGroups)
static CanUserViewTopic($TID, $arUserGroups, $iUserID=0, $ExternalPermission=false)
static CanUserDeleteTopic($TID, $arUserGroups, $iUserID=0, $ExternalPermission=false)
static MoveTopic2Forum($TID, $FID, $leaveLink="N")
static IsAdmin($userId=false, $arGroups=false)
static GetFormattedNameByUserID($userID, $template="", $arUser=array())
static ClearTag($type, $ID=0)
static SetTag($path, $tags)
static Log($object, $action, $id, $description="", $title="")
static GetList($arOrder=Array("ID"=>"ASC"), $arFilter=Array(), $bCount=false, $iNum=0, $arAddParams=array())
static Concat($glue="", $pieces=array())
static GetByType($type, $lang)
static GetList($arOrder=Array("SORT"=>"ASC"), $arFilter=Array(), $bCount=false, $iNum=0, $arAddParams=array())
static GetFormattedNameFieldsForSelect($arParams=array(), $bReturnAll=true)
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)
ExecuteModuleEventEx($arEvent, $arParams=[])
IsModuleInstalled($module_id)
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
GetMessage($name, $aReplace=null)
if(intval($iTestTransaction) > 0) $arTmp
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
if(empty($signedUserToken)) $key
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']
$GLOBALS['_____370096793']