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/**********************************************************************/
13class CForumNew extends CAllForumNew
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
31 $ID = $DB->Add('b_forum', $arFields);
32
33 if ($ID > 0)
34 {
35 foreach ($arFields["SITES"] as $key => $value)
36 {
37 $DB->Query("INSERT INTO b_forum2site (FORUM_ID, SITE_ID, PATH2FORUM_MESSAGE) VALUES(".$ID.", '".$DB->ForSql($key, 2)."', '".$DB->ForSql($value, 250)."')");
38 }
39 if (is_set($arFields, "GROUP_ID") && is_array($arFields["GROUP_ID"]))
40 {
42 }
43 }
44/***************** Event onAfterForumAdd ***************************/
45 foreach (GetModuleEvents("forum", "onAfterForumAdd", true) as $arEvent)
47/***************** /Event ******************************************/
48 return $ID;
49 }
50
51 public static function reindex(&$NS, $oCallback = NULL, $callback_method = "")
52 {
53 global $DB;
54
55 $join = array();
56 $filter = array();
57
58 $lastMessageId = intval($NS["ID"]);
59 if ($NS["MODULE"] == "forum" && $lastMessageId > 0)
60 {
61 $filter[] = ( intval($NS["CNT"]) > 0 ?
62 "FM.ID>".$lastMessageId :
63 "FM.ID>=".$lastMessageId
64 );
65 }
66
67 if ($NS["SITE_ID"] != "")
68 {
69 $join[] = " INNER JOIN b_forum2site FS ON (FS.FORUM_ID=F.ID) ";
70 $filter[] = "FS.SITE_ID='".$DB->ForSQL($NS["SITE_ID"])."' ";
71 }
72 if (array_key_exists("FILTER", $NS))
73 foreach ($NS["FILTER"] as $f)
74 $filter[] = $f;
75 if (array_key_exists("JOIN", $NS))
76 foreach ($NS["JOIN"] as $j)
77 $join[] = $j;
78 $NS["SKIPPED"] = array();
79
80 $strSql =
81 "SELECT FT.ID as TID, FM.ID as MID,
82 ".CForumTopic::GetSelectFields(array("sPrefix" => "FT_", "sReturnResult" => "string")).",
83 FM.*, ".$DB->DateToCharFunction("FM.POST_DATE", "FULL")." as POST_DATE,
84 ".$DB->DateToCharFunction("FM.EDIT_DATE", "FULL")." as EDIT_DATE,
85 FU.SHOW_NAME, FU.DESCRIPTION, FU.NUM_POSTS, FU.POINTS as NUM_POINTS, FU.SIGNATURE, FU.AVATAR, FU.RANK_ID,
86 ".$DB->DateToCharFunction("FU.DATE_REG", "SHORT")." as DATE_REG,
87 U.EMAIL, U.PERSONAL_ICQ, U.LOGIN, U.NAME, U.SECOND_NAME, U.LAST_NAME, U.PERSONAL_PHOTO
88 FROM b_forum_message FM
89 LEFT JOIN b_forum_topic FT ON (FM.TOPIC_ID = FT.ID)
90 LEFT JOIN b_forum F ON (F.ID = FT.FORUM_ID)
91 LEFT JOIN b_forum_user FU ON (FM.AUTHOR_ID = FU.USER_ID)
92 LEFT JOIN b_user U ON (FM.AUTHOR_ID = U.ID)
93 ".implode(" ", $join)."
94 WHERE (F.INDEXATION = 'Y' AND FM.APPROVED = 'Y') ".(empty($filter) ? "" : " AND ".implode(" AND ", $filter))."
95 ORDER BY FM.ID ASC ";
96 $cnt = intval(COption::GetOptionInt("forum", "search_message_count", 50));
97 if ($cnt > 0)
98 $strSql .= " LIMIT ".$cnt;
99
100 $db_res = $DB->Query($strSql);
101 if (COption::GetOptionString("forum", "FILTER", "Y") == "Y")
103
104 $return = array();
105
106 $rownum = 0;
107 $lastMessageId = 0;
108 if ($res = $db_res->Fetch())
109 {
110 static $permissions = array();
111 static $sites = array();
112 do
113 {
114 $lastMessageId = $res["ID"];
115 $rownum++;
116 if (!array_key_exists($res["FORUM_ID"], $permissions))
117 {
118 $permissions[$res["FORUM_ID"]] = array();
120 foreach ($groups as $group)
121 {
122 if ($group[1] >= "E")
123 {
124 $permissions[$res["FORUM_ID"]][] = $group[0];
125 if ($group[0]==2)
126 break;
127 }
128 }
129 }
130
131 $result = array(
132 "ID" => $res["ID"],
133 "LID" => array(),
134 "LAST_MODIFIED" => ((!empty($res["EDIT_DATE"])) ? $res["EDIT_DATE"] : $res["POST_DATE"]),
135 "PARAM1" => $res["FORUM_ID"],
136 "PARAM2" => $res["TOPIC_ID"],
137 "USER_ID" => $res["AUTHOR_ID"],
138 "ENTITY_TYPE_ID" => ($res["NEW_TOPIC"] == "Y" ? "FORUM_TOPIC" : "FORUM_POST"),
139 "ENTITY_ID" => ($res["NEW_TOPIC"] == "Y" ? $res["TOPIC_ID"] : $res["ID"]),
140 "PERMISSIONS" => $permissions[$res["FORUM_ID"]],
141 "TITLE" => $res["FT_TITLE"].($res["NEW_TOPIC"] == "Y" && !empty($res["FT_DESCRIPTION"]) ?
142 ", ".$res["FT_DESCRIPTION"] : ""),
143 "TAGS" => ($res["NEW_TOPIC"] == "Y" ? $res["FT_TAGS"] : ""),
144 "BODY" => GetMessage("AVTOR_PREF")." ".$res["AUTHOR_NAME"].". ".
146 COption::GetOptionString("forum", "FILTER", "Y") != "Y" ? $res["POST_MESSAGE"] : $res["POST_MESSAGE_FILTER"]),
147 "URL" => "",
148 "INDEX_TITLE" => $res["NEW_TOPIC"] == "Y",
149 );
150 if (!array_key_exists($res["FORUM_ID"], $sites))
151 $sites[$res["FORUM_ID"]] = CForumNew::GetSites($res["FORUM_ID"]);
152 foreach ($sites[$res["FORUM_ID"]] as $key => $val)
153 {
155 array(
156 "FORUM_ID"=>$res["FORUM_ID"],
157 "TOPIC_ID"=>$res["TOPIC_ID"],
158 "TITLE_SEO"=>$res["FT_TITLE_SEO"],
159 "MESSAGE_ID"=>$res["ID"],
160 "SOCNET_GROUP_ID" =>$res["FT_SOCNET_GROUP_ID"],
161 "OWNER_ID" => $res["FT_OWNER_ID"],
162 "PARAM1" => $res["PARAM1"],
163 "PARAM2" => $res["PARAM2"]));
164 if (empty($result["URL"]) && !empty($result["LID"][$key]))
165 $result["URL"] = $result["LID"][$key];
166 }
167
168 if (empty($result["URL"]))
169 {
170 static $defaultUrl = array();
171 if (array_key_exists($res["FORUM_ID"], $defaultUrl))
172 {
173 $defaultUrl[$res["FORUM_ID"]] = "/";
174 foreach ($sites[$res["FORUM_ID"]] as $key => $val)
175 {
176 if (($lang = CLang::GetByID($key)->Fetch()) && !empty($lang))
177 {
178 $defaultUrl[$res["FORUM_ID"]] = $lang["DIR"];
179 break;
180 }
181 }
182 $defaultUrl[$res["FORUM_ID"]] .= COption::GetOptionString("forum", "REL_FPATH", "")."forum/read.php?FID=#FID#&TID=#TID#&MID=#MID##message#MID#";
183 }
185 $defaultUrl[$res["FORUM_ID"]],
186 array(
187 "FORUM_ID"=>$res["FORUM_ID"],
188 "TOPIC_ID"=>$res["TOPIC_ID"],
189 "TITLE_SEO"=>$res["FT_TITLE_SEO"],
190 "MESSAGE_ID"=>$res["ID"],
191 "SOCNET_GROUP_ID" =>$res["FT_SOCNET_GROUP_ID"],
192 "OWNER_ID" => $res["FT_OWNER_ID"],
193 "PARAM1" => $res["PARAM1"],
194 "PARAM2" => $res["PARAM2"]
195 )
196 );
197 }
198 /***************** Events onMessageIsIndexed ***********************/
199 $index = true;
200 foreach(GetModuleEvents("forum", "onMessageIsIndexed", true) as $arEvent)
201 {
202 if (ExecuteModuleEventEx($arEvent, array($res["ID"], $res, &$result)) === false)
203 {
204 $index = false;
205 break;
206 }
207 }
208 /***************** /Events *****************************************/
209 if ($index === true)
210 {
211 if ($oCallback && !call_user_func(array($oCallback, $callback_method), $result))
212 {
213 return $result["ID"];
214 }
215 $return[] = $result;
216 }
217 else
218 {
219 $NS["SKIPPED"][] = $res["ID"];
220 }
221 } while ($res = $db_res->Fetch());
222 }
223
224 if ($oCallback && ($cnt > 0) && ($rownum >= ($cnt - 1)))
225 return $lastMessageId;
226 if ($oCallback)
227 return false;
228 return $return;
229 }
230
231 public static function GetNowTime($ResultType = "timestamp")
232 {
233 global $DB;
234 static $result = array();
235 $ResultType = (in_array($ResultType, array("timestamp", "time")) ? $ResultType : "timestamp");
236 if (empty($result)):
237 $db_res = $DB->Query("SELECT ".$DB->DateToCharFunction($DB->GetNowFunction(), "FULL")." FORUM_DATE");
238 $res = $db_res->Fetch();
239 $result["time"] = $res["FORUM_DATE"];
240 $result["timestamp"] = MakeTimeStamp($res["FORUM_DATE"]);
241 endif;
242 return $result[$ResultType];
243 }
244
245 public static function Concat($glue = "", $pieces = array())
246 {
247 return "TRIM(BOTH '".$glue."' FROM REPLACE(CONCAT_WS('".$glue."',".implode(",", $pieces)."), '".$glue.$glue."', '".$glue."'))";
248 }
249}
250
251/**********************************************************************/
252/************** FORUM GROUP *******************************************/
253/**********************************************************************/
254class CForumGroup extends CAllForumGroup
255{
256 public static function Add($arFields)
257 {
258 global $DB;
259
261 return false;
262 if(CACHED_b_forum_group !== false)
263 $GLOBALS["CACHE_MANAGER"]->CleanDir("b_forum_group");
264/***************** Event onBeforeGroupForumsAdd ********************/
265 $events = GetModuleEvents("forum", "onBeforeGroupForumsAdd");
266 while ($arEvent = $events->Fetch())
267 {
268 if (ExecuteModuleEventEx($arEvent, array(&$arFields)) === false)
269 return false;
270 }
271/***************** /Event ******************************************/
272 if (empty($arFields))
273 return false;
274
275 $ID = $DB->Add('b_forum_group', $arFields);
276
277 if (array_key_exists("LANG", $arFields))
278 {
279 foreach ($arFields["LANG"] as $l)
280 {
281 $arInsert = $DB->PrepareInsert("b_forum_group_lang", $l);
282 $strSql = "INSERT INTO b_forum_group_lang(FORUM_GROUP_ID, ".$arInsert[0].") VALUES(".$ID.", ".$arInsert[1].")";
283 $DB->Query($strSql);
284 }
285 }
287/***************** Event onAfterGroupForumsAdd *********************/
288 foreach (GetModuleEvents("forum", "onAfterGroupForumsAdd", true) as $arEvent)
290/***************** /Event ******************************************/
291 return $ID;
292 }
293
294 public static function Update($ID, $arFields)
295 {
296 global $DB;
297 $ID = intval($ID);
298 if ($ID <= 0):
299 return false;
300 endif;
301
302 if (!CForumGroup::CheckFields("UPDATE", $arFields, $ID))
303 return false;
304 if(CACHED_b_forum_group !== false)
305 $GLOBALS["CACHE_MANAGER"]->CleanDir("b_forum_group");
306/***************** Event onBeforeGroupForumsUpdate *****************/
307 foreach (GetModuleEvents("forum", "onBeforeGroupForumsUpdate", true) as $arEvent)
308 {
309 if (ExecuteModuleEventEx($arEvent, array(&$ID, &$arFields)) === false)
310 return false;
311 }
312/***************** /Event ******************************************/
313 if (empty($arFields))
314 return false;
315 $strUpdate = $DB->PrepareUpdate("b_forum_group", $arFields);
316 if (!empty($strUpdate))
317 {
318 $strSql = "UPDATE b_forum_group SET ".$strUpdate." WHERE ID = ".$ID;
319 $DB->Query($strSql);
320 }
321 if (is_set($arFields, "LANG"))
322 {
323 $DB->Query("DELETE FROM b_forum_group_lang WHERE FORUM_GROUP_ID = ".$ID);
324
325 foreach ($arFields["LANG"] as $l)
326 {
327 $arInsert = $DB->PrepareInsert("b_forum_group_lang", $l);
328 $strSql = "INSERT INTO b_forum_group_lang(FORUM_GROUP_ID, ".$arInsert[0].") VALUES(".$ID.", ".$arInsert[1].")";
329 $DB->Query($strSql);
330 }
331 }
333/***************** Event onAfterGroupForumsUpdate *****************/
334 foreach (GetModuleEvents("forum", "onAfterGroupForumsUpdate", true) as $arEvent)
336/***************** /Event ******************************************/
337 return $ID;
338 }
339}
$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:256
static Update($ID, $arFields)
Определения forum_new.php:294
Определения forum_new.php:14
static reindex(&$NS, $oCallback=NULL, $callback_method="")
Определения forum_new.php:51
static Add($arFields)
Определения forum_new.php:15
static GetNowTime($ResultType="timestamp")
Определения forum_new.php:231
static Concat($glue="", $pieces=array())
Определения forum_new.php:245
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