1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
forum_new.php
См. документацию.
1<?
2##############################################
3# Bitrix Site Manager Forum #
4# Copyright (c) 2002-2009 Bitrix #
5# https://www.bitrixsoft.com #
6# mailto:admin@bitrixsoft.com #
7##############################################
8require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/forum/classes/general/forum_new.php");
9
10/**********************************************************************/
11/************** FORUM *************************************************/
12/**********************************************************************/
14{
15 public static function Add($arFields)
16 {
17 global $DB;
18
20 return false;
21/***************** Event onBeforeForumAdd **************************/
22 foreach (GetModuleEvents("forum", "onBeforeForumAdd", true) as $arEvent)
23 {
24 if (ExecuteModuleEventEx($arEvent, array(&$arFields)) === false)
25 return false;
26 }
27/***************** /Event ******************************************/
28 if (empty($arFields))
29 return false;
30 $arInsert = $DB->PrepareInsert("b_forum", $arFields);
31 $strSql = "INSERT INTO b_forum(".$arInsert[0].") VALUES(".$arInsert[1].")";
32 $DB->Query($strSql);
33 $ID = intval($DB->LastID());
34
35 if ($ID > 0)
36 {
37 foreach ($arFields["SITES"] as $key => $value)
38 {
39 $DB->Query("INSERT INTO b_forum2site (FORUM_ID, SITE_ID, PATH2FORUM_MESSAGE) VALUES(".$ID.", '".$DB->ForSql($key, 2)."', '".$DB->ForSql($value, 250)."')");
40 }
41 if (is_set($arFields, "GROUP_ID") && is_array($arFields["GROUP_ID"]))
42 {
44 }
45 }
46/***************** Event onAfterForumAdd ***************************/
47 foreach (GetModuleEvents("forum", "onAfterForumAdd", true) as $arEvent)
49/***************** /Event ******************************************/
50 return $ID;
51 }
52
53 public static function reindex(&$NS, $oCallback = NULL, $callback_method = "")
54 {
55 global $DB;
56
57 $join = array();
58 $filter = array();
59
60 $lastMessageId = intval($NS["ID"]);
61 if ($NS["MODULE"] == "forum" && $lastMessageId > 0)
62 {
63 $filter[] = ( intval($NS["CNT"]) > 0 ?
64 "FM.ID>".$lastMessageId :
65 "FM.ID>=".$lastMessageId
66 );
67 }
68
69 if ($NS["SITE_ID"] != "")
70 {
71 $join[] = " INNER JOIN b_forum2site FS ON (FS.FORUM_ID=F.ID) ";
72 $filter[] = "FS.SITE_ID='".$DB->ForSQL($NS["SITE_ID"])."' ";
73 }
74 if (array_key_exists("FILTER", $NS))
75 foreach ($NS["FILTER"] as $f)
76 $filter[] = $f;
77 if (array_key_exists("JOIN", $NS))
78 foreach ($NS["JOIN"] as $j)
79 $join[] = $j;
80 $NS["SKIPPED"] = array();
81
82 $strSql =
83 "SELECT STRAIGHT_JOIN FT.ID as TID, FM.ID as MID,
84 ".CForumTopic::GetSelectFields(array("sPrefix" => "FT_", "sReturnResult" => "string")).",
85 FM.*, ".$DB->DateToCharFunction("FM.POST_DATE", "FULL")." as POST_DATE,
86 ".$DB->DateToCharFunction("FM.EDIT_DATE", "FULL")." as EDIT_DATE,
87 FU.SHOW_NAME, FU.DESCRIPTION, FU.NUM_POSTS, FU.POINTS as NUM_POINTS, FU.SIGNATURE, FU.AVATAR, FU.RANK_ID,
88 ".$DB->DateToCharFunction("FU.DATE_REG", "SHORT")." as DATE_REG,
89 U.EMAIL, U.PERSONAL_ICQ, U.LOGIN, U.NAME, U.SECOND_NAME, U.LAST_NAME, U.PERSONAL_PHOTO
90 FROM b_forum_message FM use index (PRIMARY)
91 LEFT JOIN b_forum_topic FT ON (FM.TOPIC_ID = FT.ID)
92 LEFT JOIN b_forum F ON (F.ID = FT.FORUM_ID)
93 LEFT JOIN b_forum_user FU ON (FM.AUTHOR_ID = FU.USER_ID)
94 LEFT JOIN b_user U ON (FM.AUTHOR_ID = U.ID)
95 ".implode(" ", $join)."
96 WHERE (F.INDEXATION = 'Y' AND FM.APPROVED = 'Y') ".(empty($filter) ? "" : " AND ".implode(" AND ", $filter))."
97 ORDER BY FM.ID ASC ";
98 $cnt = intval(COption::GetOptionInt("forum", "search_message_count", 50));
99 if ($cnt > 0)
100 $strSql .= " LIMIT 0, ".$cnt;
101
102 $db_res = $DB->Query($strSql);
103 if (COption::GetOptionString("forum", "FILTER", "Y") == "Y")
105
106 $return = array();
107
108 $rownum = 0;
109 $lastMessageId = 0;
110 if ($res = $db_res->Fetch())
111 {
112 static $permissions = array();
113 static $sites = array();
114 do
115 {
116 $lastMessageId = $res["ID"];
117 $rownum++;
118 if (!array_key_exists($res["FORUM_ID"], $permissions))
119 {
120 $permissions[$res["FORUM_ID"]] = array();
122 foreach ($groups as $group)
123 {
124 if ($group[1] >= "E")
125 {
126 $permissions[$res["FORUM_ID"]][] = $group[0];
127 if ($group[0]==2)
128 break;
129 }
130 }
131 }
132
133 $result = array(
134 "ID" => $res["ID"],
135 "LID" => array(),
136 "LAST_MODIFIED" => ((!empty($res["EDIT_DATE"])) ? $res["EDIT_DATE"] : $res["POST_DATE"]),
137 "PARAM1" => $res["FORUM_ID"],
138 "PARAM2" => $res["TOPIC_ID"],
139 "USER_ID" => $res["AUTHOR_ID"],
140 "ENTITY_TYPE_ID" => ($res["NEW_TOPIC"] == "Y" ? "FORUM_TOPIC" : "FORUM_POST"),
141 "ENTITY_ID" => ($res["NEW_TOPIC"] == "Y" ? $res["TOPIC_ID"] : $res["ID"]),
142 "PERMISSIONS" => $permissions[$res["FORUM_ID"]],
143 "TITLE" => $res["FT_TITLE"].($res["NEW_TOPIC"] == "Y" && !empty($res["FT_DESCRIPTION"]) ?
144 ", ".$res["FT_DESCRIPTION"] : ""),
145 "TAGS" => ($res["NEW_TOPIC"] == "Y" ? $res["FT_TAGS"] : ""),
146 "BODY" => GetMessage("AVTOR_PREF")." ".$res["AUTHOR_NAME"].". ".
148 COption::GetOptionString("forum", "FILTER", "Y") != "Y" ? $res["POST_MESSAGE"] : $res["POST_MESSAGE_FILTER"]),
149 "URL" => "",
150 "INDEX_TITLE" => $res["NEW_TOPIC"] == "Y",
151 );
152 if (!array_key_exists($res["FORUM_ID"], $sites))
153 $sites[$res["FORUM_ID"]] = CForumNew::GetSites($res["FORUM_ID"]);
154 foreach ($sites[$res["FORUM_ID"]] as $key => $val)
155 {
157 array(
158 "FORUM_ID"=>$res["FORUM_ID"],
159 "TOPIC_ID"=>$res["TOPIC_ID"],
160 "TITLE_SEO"=>$res["FT_TITLE_SEO"],
161 "MESSAGE_ID"=>$res["ID"],
162 "SOCNET_GROUP_ID" =>$res["FT_SOCNET_GROUP_ID"],
163 "OWNER_ID" => $res["FT_OWNER_ID"],
164 "PARAM1" => $res["PARAM1"],
165 "PARAM2" => $res["PARAM2"]));
166 if (empty($result["URL"]) && !empty($result["LID"][$key]))
167 $result["URL"] = $result["LID"][$key];
168 }
169
170 if (empty($result["URL"]))
171 {
172 static $defaultUrl = array();
173 if (array_key_exists($res["FORUM_ID"], $defaultUrl))
174 {
175 $defaultUrl[$res["FORUM_ID"]] = "/";
176 foreach ($sites[$res["FORUM_ID"]] as $key => $val)
177 {
178 if (($lang = CLang::GetByID($key)->Fetch()) && !empty($lang))
179 {
180 $defaultUrl[$res["FORUM_ID"]] = $lang["DIR"];
181 break;
182 }
183 }
184 $defaultUrl[$res["FORUM_ID"]] .= COption::GetOptionString("forum", "REL_FPATH", "")."forum/read.php?FID=#FID#&TID=#TID#&MID=#MID##message#MID#";
185 }
187 $defaultUrl[$res["FORUM_ID"]],
188 array(
189 "FORUM_ID"=>$res["FORUM_ID"],
190 "TOPIC_ID"=>$res["TOPIC_ID"],
191 "TITLE_SEO"=>$res["FT_TITLE_SEO"],
192 "MESSAGE_ID"=>$res["ID"],
193 "SOCNET_GROUP_ID" =>$res["FT_SOCNET_GROUP_ID"],
194 "OWNER_ID" => $res["FT_OWNER_ID"],
195 "PARAM1" => $res["PARAM1"],
196 "PARAM2" => $res["PARAM2"]
197 )
198 );
199 }
200 /***************** Events onMessageIsIndexed ***********************/
201 $index = true;
202 foreach(GetModuleEvents("forum", "onMessageIsIndexed", true) as $arEvent)
203 {
204 if (ExecuteModuleEventEx($arEvent, array($res["ID"], $res, &$result)) === false)
205 {
206 $index = false;
207 break;
208 }
209 }
210 /***************** /Events *****************************************/
211 if ($index === true)
212 {
213 if ($oCallback && !call_user_func(array($oCallback, $callback_method), $result))
214 {
215 return $result["ID"];
216 }
217 $return[] = $result;
218 }
219 else
220 {
221 $NS["SKIPPED"][] = $res["ID"];
222 }
223 } while ($res = $db_res->Fetch());
224 }
225
226 if ($oCallback && ($cnt > 0) && ($rownum >= ($cnt - 1)))
227 return $lastMessageId;
228 if ($oCallback)
229 return false;
230 return $return;
231 }
232
233 public static function GetNowTime($ResultType = "timestamp")
234 {
235 global $DB;
236 static $result = array();
237 $ResultType = (in_array($ResultType, array("timestamp", "time")) ? $ResultType : "timestamp");
238 if (empty($result)):
239 $db_res = $DB->Query("SELECT ".$DB->DateToCharFunction($DB->GetNowFunction(), "FULL")." FORUM_DATE");
240 $res = $db_res->Fetch();
241 $result["time"] = $res["FORUM_DATE"];
242 $result["timestamp"] = MakeTimeStamp($res["FORUM_DATE"]);
243 endif;
244 return $result[$ResultType];
245 }
246
247 public static function Concat($glue = "", $pieces = array())
248 {
249 return "TRIM(BOTH '".$glue."' FROM REPLACE(CONCAT_WS('".$glue."',".implode(",", $pieces)."), '".$glue.$glue."', '".$glue."'))";
250 }
251}
252
253/**********************************************************************/
254/************** FORUM GROUP *******************************************/
255/**********************************************************************/
257{
258 public static function Add($arFields)
259 {
260 global $DB;
261
263 return false;
264 if(CACHED_b_forum_group !== false)
265 $GLOBALS["CACHE_MANAGER"]->CleanDir("b_forum_group");
266/***************** Event onBeforeGroupForumsAdd ********************/
267 $events = GetModuleEvents("forum", "onBeforeGroupForumsAdd");
268 while ($arEvent = $events->Fetch())
269 {
270 if (ExecuteModuleEventEx($arEvent, array(&$arFields)) === false)
271 return false;
272 }
273/***************** /Event ******************************************/
274 if (empty($arFields))
275 return false;
276 $arInsert = $DB->PrepareInsert("b_forum_group", $arFields);
277 $strSql = "INSERT INTO b_forum_group(".$arInsert[0].") VALUES(".$arInsert[1].")";
278 $DB->Query($strSql);
279 $ID = intval($DB->LastID());
280
281 if (array_key_exists("LANG", $arFields))
282 {
283 foreach ($arFields["LANG"] as $l)
284 {
285 $arInsert = $DB->PrepareInsert("b_forum_group_lang", $l);
286 $strSql = "INSERT INTO b_forum_group_lang(FORUM_GROUP_ID, ".$arInsert[0].") VALUES(".$ID.", ".$arInsert[1].")";
287 $DB->Query($strSql);
288 }
289 }
291/***************** Event onAfterGroupForumsAdd *********************/
292 foreach (GetModuleEvents("forum", "onAfterGroupForumsAdd", true) as $arEvent)
294/***************** /Event ******************************************/
295 return $ID;
296 }
297
298 public static function Update($ID, $arFields)
299 {
300 global $DB;
301 $ID = intval($ID);
302 if ($ID <= 0):
303 return false;
304 endif;
305
306 if (!CForumGroup::CheckFields("UPDATE", $arFields, $ID))
307 return false;
308 if(CACHED_b_forum_group !== false)
309 $GLOBALS["CACHE_MANAGER"]->CleanDir("b_forum_group");
310/***************** Event onBeforeGroupForumsUpdate *****************/
311 foreach (GetModuleEvents("forum", "onBeforeGroupForumsUpdate", true) as $arEvent)
312 {
313 if (ExecuteModuleEventEx($arEvent, array(&$ID, &$arFields)) === false)
314 return false;
315 }
316/***************** /Event ******************************************/
317 if (empty($arFields))
318 return false;
319 $strUpdate = $DB->PrepareUpdate("b_forum_group", $arFields);
320 if (!empty($strUpdate))
321 {
322 $strSql = "UPDATE b_forum_group SET ".$strUpdate." WHERE ID = ".$ID;
323 $DB->Query($strSql);
324 }
325 if (is_set($arFields, "LANG"))
326 {
327 $DB->Query("DELETE FROM b_forum_group_lang WHERE FORUM_GROUP_ID = ".$ID);
328
329 foreach ($arFields["LANG"] as $l)
330 {
331 $arInsert = $DB->PrepareInsert("b_forum_group_lang", $l);
332 $strSql = "INSERT INTO b_forum_group_lang(FORUM_GROUP_ID, ".$arInsert[0].") VALUES(".$ID.", ".$arInsert[1].")";
333 $DB->Query($strSql);
334 }
335 }
337/***************** Event onAfterGroupForumsUpdate *****************/
338 foreach (GetModuleEvents("forum", "onAfterGroupForumsUpdate", true) as $arEvent)
340/***************** /Event ******************************************/
341 return $ID;
342 }
343}
$db_res
Определения options_user_settings.php:8
Определения message.php:1194
Определения forum_new.php:1918
static Resort($ID=0, $cnt=0, $depth=0)
Определения forum_new.php:2273
static CheckFields($ACTION, &$arFields, $ID=false)
Определения forum_new.php:1935
Определения forum_new.php:15
static GetSites($ID)
Определения forum_new.php:411
static GetAccessPermissions($ID, $TYPE="ONE")
Определения forum_new.php:463
static PreparePath2Message($strPath, $arVals=array())
Определения forum_new.php:1801
static CheckFields($ACTION, &$arFields)
Определения forum_new.php:110
static SetAccessPermissions($ID, $arGROUP_ID)
Определения forum_new.php:549
Определения forum_new.php:257
static Add($arFields)
Определения forum_new.php:258
static Update($ID, $arFields)
Определения forum_new.php:298
Определения forum_new.php:14
static reindex(&$NS, $oCallback=NULL, $callback_method="")
Определения forum_new.php:53
static Add($arFields)
Определения forum_new.php:15
static GetNowTime($ResultType="timestamp")
Определения forum_new.php:233
static Concat($glue="", $pieces=array())
Определения forum_new.php:247
static clearAllTags($text)
Определения textparser.php:2358
$sites
Определения clear_component_cache.php:15
$f
Определения component_props.php:52
$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
$result
Определения get_property_values.php:14
if($ajaxMode) $ID
Определения get_user.php:27
$filter
Определения iblock_catalog_list.php:54
$_SERVER["DOCUMENT_ROOT"]
Определения cron_frame.php:9
global $DB
Определения cron_frame.php:29
endif
Определения csv_new_setup.php:990
if(!defined('SITE_ID')) $lang
Определения include.php:91
$groups
Определения options.php:30
$l
Определения options.php:783
if(!defined('NOT_CHECK_PERMISSIONS')) $NS
Определения backup.php:24
ExecuteModuleEventEx($arEvent, $arParams=[])
Определения tools.php:5214
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
Определения tools.php:5177
is_set($a, $k=false)
Определения tools.php:2133
GetMessage($name, $aReplace=null)
Определения tools.php:3397
MakeTimeStamp($datetime, $format=false)
Определения tools.php:538
if(empty($signedUserToken)) $key
Определения quickway.php:257
$val
Определения options.php:1793
$GLOBALS['_____370096793']
Определения update_client.php:1