1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
blog_user.php
См. документацию.
1<?php
2require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/blog/general/blog_user.php");
3
5{
6 /*************** ADD, UPDATE, DELETE *****************/
7 public static function Add($arFields)
8 {
9 global $DB;
10
11 $path = '';
12 if (($arFields["PATH"] ?? '') <> '')
13 {
14 $path = $arFields["PATH"];
15 unset($arFields["PATH"]);
16 }
17
18 $arFields1 = array();
19 foreach ($arFields as $key => $value)
20 {
21 if (mb_substr($key, 0, 1) == "=")
22 {
23 $arFields1[mb_substr($key, 1)] = $value;
24 unset($arFields[$key]);
25 }
26 }
27
29 return false;
30
31 if (
32 array_key_exists("AVATAR", $arFields)
33 && is_array($arFields["AVATAR"])
34 && (
35 !array_key_exists("MODULE_ID", $arFields["AVATAR"])
36 || $arFields["AVATAR"]["MODULE_ID"] == ''
37 )
38 )
39 $arFields["AVATAR"]["MODULE_ID"] = "blog";
40
41 CFile::SaveForDB($arFields, "AVATAR", "blog/avatar");
42
43 $arInsert = $DB->PrepareInsert("b_blog_user", $arFields);
44
45 foreach ($arFields1 as $key => $value)
46 {
47 if ($arInsert[0] <> '')
48 $arInsert[0] .= ", ";
49 $arInsert[0] .= $key;
50 if ($arInsert[1] <> '')
51 $arInsert[1] .= ", ";
52 $arInsert[1] .= $value;
53 }
54
55 $ID = False;
56 if ($arInsert[0] <> '')
57 {
58 $strSql =
59 "INSERT INTO b_blog_user(".$arInsert[0].") ".
60 "VALUES(".$arInsert[1].")";
61 $DB->Query($strSql);
62
63 $ID = intval($DB->LastID());
64 }
65
66 if ($ID)
67 {
68 if (CModule::IncludeModule("search"))
69 {
70 $arBlogUser = CBlogUser::GetByID($ID);
71
72 $dbUser = CUser::GetByID($arBlogUser["USER_ID"]);
73 $arUser = $dbUser->Fetch();
74
75 $arBlog = CBlog::GetByOwnerID($arBlogUser["USER_ID"]);
76 if ($arBlog)
77 {
78 $arGroup = CBlogGroup::GetByID($arBlog["GROUP_ID"]);
79 if($path <> '')
80 {
81 $arPostSite = array($arGroup["SITE_ID"] => $path);
82 }
83 else
84 {
85 $arPostSite = array(
86 $arGroup["SITE_ID"] => CBlogUser::PreparePath(
87 $arBlogUser["USER_ID"],
88 $arGroup["SITE_ID"]
89 )
90 );
91 }
92 }
93 else
94 {
95 if($arUser["LID"] == '')
96 $arUser["LID"] = SITE_ID;
97 if($path <> '')
98 {
99 $arPostSite = array($arUser["LID"] => $path);
100 }
101 else
102 {
103 $arPostSite = array($arUser["LID"] => CBlogUser::PreparePath($arBlogUser["USER_ID"], $arUser["LID"]));
104 }
105 }
106
107 $arSearchIndex = array(
108 "SITE_ID" => $arPostSite,
109 "LAST_MODIFIED" => ConvertTimeStamp(false, "FULL", false),
110 "PARAM1" => "USER",
111 "PARAM2" => $arBlogUser["USER_ID"],
112 "PERMISSIONS" => array(2),
113 "TITLE" => CBlogUser::GetUserName($arBlogUser["ALIAS"], $arUser["NAME"], $arUser["LAST_NAME"], $arUser["LOGIN"], $arUser["SECOND_NAME"]),
114 "BODY" => blogTextParser::killAllTags($arBlogUser["INTERESTS"]." ".$arBlogUser["DESCRIPTION"])
115 );
116
117 CSearch::Index("blog", "U".$ID, $arSearchIndex);
118 }
119 }
120
121 return $ID;
122 }
123
124 public static function Update($ID, $arFields)
125 {
126 global $DB;
127
128 $ID = intval($ID);
129
130 $path = '';
131 if (($arFields["PATH"] ?? '') <> '')
132 {
133 $path = $arFields["PATH"];
134 unset($arFields["PATH"]);
135 }
136
137 $arFields1 = array();
138 foreach ($arFields as $key => $value)
139 {
140 if (mb_substr($key, 0, 1) == "=")
141 {
142 $arFields1[mb_substr($key, 1)] = $value;
143 unset($arFields[$key]);
144 }
145 }
146
147 if (!CBlogUser::CheckFields("UPDATE", $arFields, $ID))
148 return false;
149
150 if (
151 array_key_exists("AVATAR", $arFields)
152 && is_array($arFields["AVATAR"])
153 && (
154 !array_key_exists("MODULE_ID", $arFields["AVATAR"])
155 || $arFields["AVATAR"]["MODULE_ID"] == ''
156 )
157 )
158 $arFields["AVATAR"]["MODULE_ID"] = "blog";
159
160 CFile::SaveForDB($arFields, "AVATAR", "blog/avatar");
161
162 $strUpdate = $DB->PrepareUpdate("b_blog_user", $arFields);
163
164 foreach ($arFields1 as $key => $value)
165 {
166 if ($strUpdate <> '')
167 $strUpdate .= ", ";
168 $strUpdate .= $key."=".$value." ";
169 }
170
171 if ($strUpdate <> '')
172 {
174
175 $strSql =
176 "UPDATE b_blog_user SET ".
177 " ".$strUpdate." ".
178 "WHERE ID = ".$ID." ";
179 $DB->Query($strSql);
180
181 unset($GLOBALS["BLOG_USER"]["BLOG_USER_CACHE_".$ID]);
182 unset($GLOBALS["BLOG_USER"]["BLOG_USER1_CACHE_".$arUser["USER_ID"]]);
183 }
184 else
185 {
186 $ID = false;
187 }
188
189 if ($ID && !(count($arFields1)==1 && $arFields1["LAST_VISIT"] <> ''))
190 {
191 if (CModule::IncludeModule("search"))
192 {
193 $arBlogUser = CBlogUser::GetByID($ID);
194
195 $dbUser = CUser::GetByID($arBlogUser["USER_ID"]);
196 $arUser = $dbUser->Fetch();
197
198 $arBlog = CBlog::GetByOwnerID($arBlogUser["USER_ID"]);
199 if ($arBlog)
200 {
201 $arGroup = CBlogGroup::GetByID($arBlog["GROUP_ID"]);
202 if($path <> '')
203 {
204 $arPostSite = array($arGroup["SITE_ID"] => $path);
205 }
206 else
207 {
208 $arPostSite = array(
209 $arGroup["SITE_ID"] => CBlogUser::PreparePath(
210 $arBlogUser["USER_ID"],
211 $arGroup["SITE_ID"]
212 )
213 );
214 }
215 }
216 else
217 {
218 if($arUser["LID"] == '')
219 $arUser["LID"] = SITE_ID;
220 if($path <> '')
221 {
222 $arPostSite = array($arUser["LID"] => $path);
223 }
224 else
225 {
226 $arPostSite = array($arUser["LID"] => CBlogUser::PreparePath($arBlogUser["USER_ID"], $arUser["LID"]));
227 }
228 }
229 if($arBlogUser["LAST_VISIT"] == '')
230 $arBlogUser["LAST_VISIT"] = ConvertTimeStamp(false, "FULL", false);
231 $arSearchIndex = array(
232 "SITE_ID" => $arPostSite,
233 "LAST_MODIFIED" => $arBlogUser["LAST_VISIT"],
234 "PARAM1" => "USER",
235 "PARAM2" => $arBlogUser["USER_ID"],
236 "PERMISSIONS" => array(2),
237 "TITLE" => CBlogUser::GetUserName($arBlogUser["ALIAS"], $arUser["NAME"], $arUser["LAST_NAME"], $arUser["LOGIN"], $arUser["SECOND_NAME"]),
238 "BODY" => blogTextParser::killAllTags($arBlogUser["INTERESTS"]." ".$arBlogUser["DESCRIPTION"])
239 );
240
241 CSearch::Index("blog", "U".$ID, $arSearchIndex);
242 }
243 }
244
245 return $ID;
246 }
247
248 //*************** SELECT *********************/
249 public static function GetList($arOrder = Array("ID" => "DESC"), $arFilter = Array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
250 {
251 global $DB;
252
253 if (count($arSelectFields) <= 0)
254 $arSelectFields = array("ID", "USER_ID", "ALIAS", "DESCRIPTION", "AVATAR", "INTERESTS", "LAST_VISIT", "DATE_REG", "ALLOW_POST");
255
256 // FIELDS -->
258 "ID" => array("FIELD" => "B.ID", "TYPE" => "int"),
259 "USER_ID" => array("FIELD" => "B.USER_ID", "TYPE" => "int"),
260 "ALIAS" => array("FIELD" => "B.ALIAS", "TYPE" => "string"),
261 "DESCRIPTION" => array("FIELD" => "B.DESCRIPTION", "TYPE" => "string"),
262 "AVATAR" => array("FIELD" => "B.AVATAR", "TYPE" => "int"),
263 "INTERESTS" => array("FIELD" => "B.INTERESTS", "TYPE" => "string"),
264 "LAST_VISIT" => array("FIELD" => "B.LAST_VISIT", "TYPE" => "datetime"),
265 "DATE_REG" => array("FIELD" => "B.DATE_REG", "TYPE" => "datetime"),
266 "ALLOW_POST" => array("FIELD" => "B.ALLOW_POST", "TYPE" => "char"),
267
268 "USER_LOGIN" => array("FIELD" => "U.LOGIN", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (B.USER_ID = U.ID)"),
269 "USER_NAME" => array("FIELD" => "U.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (B.USER_ID = U.ID)"),
270 "USER_LAST_NAME" => array("FIELD" => "U.LAST_NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (B.USER_ID = U.ID)"),
271 "USER_SECOND_NAME" => array("FIELD" => "U.SECOND_NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (B.USER_ID = U.ID)"),
272 "USER_EMAIL" => array("FIELD" => "U.EMAIL", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (B.USER_ID = U.ID)"),
273 "USER" => array("FIELD" => "U.LOGIN,U.NAME,U.LAST_NAME,U.SECOND_NAME,U.EMAIL,U.ID", "WHERE_ONLY" => "Y", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (B.USER_ID = U.ID)"),
274
275 "GROUP_GROUP_ID" => array("FIELD" => "U2UG.USER_GROUP_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_blog_user2user_group U2UG ON (B.USER_ID = U2UG.USER_ID)"),
276 "GROUP_BLOG_ID" => array("FIELD" => "U2UG.BLOG_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_blog_user2user_group U2UG ON (B.USER_ID = U2UG.USER_ID)"),
277 );
278 // <-- FIELDS
279
280 $arSqls = CBlog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
281
282 $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
283
284 if (is_array($arGroupBy) && count($arGroupBy)==0)
285 {
286 $strSql =
287 "SELECT ".$arSqls["SELECT"]." ".
288 "FROM b_blog_user B ".
289 " ".$arSqls["FROM"]." ";
290 if ($arSqls["WHERE"] <> '')
291 $strSql .= "WHERE ".$arSqls["WHERE"]." ";
292 if ($arSqls["GROUPBY"] <> '')
293 $strSql .= "GROUP BY ".$arSqls["GROUPBY"]." ";
294
295 //echo "!1!=".htmlspecialcharsbx($strSql)."<br>";
296
297 $dbRes = $DB->Query($strSql);
298 if ($arRes = $dbRes->Fetch())
299 return $arRes["CNT"];
300 else
301 return False;
302 }
303
304 $strSql =
305 "SELECT ".$arSqls["SELECT"]." ".
306 "FROM b_blog_user B ".
307 " ".$arSqls["FROM"]." ";
308 if ($arSqls["WHERE"] <> '')
309 $strSql .= "WHERE ".$arSqls["WHERE"]." ";
310 if ($arSqls["GROUPBY"] <> '')
311 $strSql .= "GROUP BY ".$arSqls["GROUPBY"]." ";
312 if ($arSqls["ORDERBY"] <> '')
313 $strSql .= "ORDER BY ".$arSqls["ORDERBY"]." ";
314
315 if (is_array($arNavStartParams) && intval($arNavStartParams["nTopCount"])<=0)
316 {
317 $strSql_tmp =
318 "SELECT COUNT('x') as CNT ".
319 "FROM b_blog_user B ".
320 " ".$arSqls["FROM"]." ";
321 if ($arSqls["WHERE"] <> '')
322 $strSql_tmp .= "WHERE ".$arSqls["WHERE"]." ";
323 if ($arSqls["GROUPBY"] <> '')
324 $strSql_tmp .= "GROUP BY ".$arSqls["GROUPBY"]." ";
325
326 //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>";
327
328 $dbRes = $DB->Query($strSql_tmp);
329 $cnt = 0;
330 if ($arSqls["GROUPBY"] == '')
331 {
332 if ($arRes = $dbRes->Fetch())
333 $cnt = $arRes["CNT"];
334 }
335 else
336 {
337 $cnt = $dbRes->SelectedRowsCount();
338 }
339
340 $dbRes = new CDBResult();
341
342 //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>";
343
344 $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
345 }
346 else
347 {
348 if (is_array($arNavStartParams) && intval($arNavStartParams["nTopCount"]) > 0)
349 $strSql .= "LIMIT ".intval($arNavStartParams["nTopCount"]);
350
351 //echo "!3!=".htmlspecialcharsbx($strSql)."<br>";
352
353 $dbRes = $DB->Query($strSql);
354 }
355
356 return $dbRes;
357 }
358
359 public static function GetUserFriendsList($ID, $userID = False, $bAuth = False, $limit = 20, $arGroup = Array())
360 {
361 global $DB;
362
363 $ID = intval($ID);
364 $userID = intval($userID);
365 $bAuth = ($bAuth ? True : False);
366 $limit = intval($limit);
367 if ($limit <= 0)
368 $limit = 20;
369
370 $strSql =
371 "SELECT BP.ID, BP.DATE_PUBLISH, B.ID as BLOG_ID, B.URL ".
372 "FROM b_blog B1 ".
373 " INNER JOIN b_blog_user2user_group U2UG ".
374 " ON (B1.ID = U2UG.BLOG_ID) ".
375 " INNER JOIN b_blog B ".
376 " ON (U2UG.USER_ID = B.OWNER_ID) ".
377 " INNER JOIN b_blog_post BP ".
378 " ON (B.ID = BP.BLOG_ID ".
379 " AND BP.DATE_PUBLISH <= ".$DB->CurrentTimeFunction()." ".
380 " AND BP.PUBLISH_STATUS = '".$DB->ForSql(BLOG_PUBLISH_STATUS_PUBLISH)."') ".
381 " INNER JOIN b_blog_user_group_perms UGP2 ".
382 " ON (B.ID = UGP2.BLOG_ID ".
383 " AND UGP2.USER_GROUP_ID = 1 ".
384 " AND BP.ID = UGP2.POST_ID) ";
385
386 if ($bAuth)
387 $strSql .=
388 " INNER JOIN b_blog_user_group_perms UGP3 ".
389 " ON (B.ID = UGP3.BLOG_ID ".
390 " AND UGP3.USER_GROUP_ID = 2 ".
391 " AND BP.ID = UGP3.POST_ID) ";
392
393 $strSql .=
394 " LEFT JOIN b_blog_user2user_group U2UG1 ".
395 " ON (B.ID = U2UG1.BLOG_ID AND U2UG1.USER_ID = ".$userID.") ".
396 " LEFT JOIN b_blog_user_group_perms UGP ".
397 " ON (B.ID = UGP.BLOG_ID ".
398 " AND U2UG1.USER_GROUP_ID = UGP.USER_GROUP_ID ".
399 " AND BP.ID = UGP.POST_ID) ".
400 "WHERE B1.OWNER_ID = ".$ID." ".
401 " AND B.ACTIVE = 'Y' ".
402 " AND B1.ACTIVE = 'Y' ";
403
404 if(!empty($arGroup))
405 {
406 foreach($arGroup as $k => $v)
407 {
408 if(intval($v) <= 0)
409 unset($arGroup[$k]);
410 else
411 $arGroup[$k] = intval($v);
412 }
413 $strGroupID = implode(",", $arGroup);
414
415 $strSql .= " AND B.GROUP_ID in (".$strGroupID.") ".
416 " AND B1.GROUP_ID in (".$strGroupID.") ";
417 }
418
419 $strSql .= " AND (UGP.PERMS > '".$DB->ForSql(BLOG_PERMS_DENY)."' ".
420 " OR UGP2.PERMS > '".$DB->ForSql(BLOG_PERMS_DENY)."' ";
421
422 if ($bAuth)
423 $strSql .= " OR UGP3.PERMS > '".$DB->ForSql(BLOG_PERMS_DENY)."' ";
424
425 $strSql .=
426 ") ".
427 "GROUP BY BP.ID, BP.DATE_PUBLISH, B.ID, B.URL ".
428 "ORDER BY BP.DATE_PUBLISH DESC ".
429 "LIMIT ".$limit." ";
430
431 $dbResult = $DB->Query($strSql);
432
433 return $dbResult;
434 }
435}
436?>
$path
Определения access_edit.php:21
const BLOG_BY_BLOG_USER_ID
Определения include.php:56
const BLOG_PERMS_DENY
Определения include.php:5
const BLOG_PUBLISH_STATUS_PUBLISH
Определения include.php:47
static GetByID($ID)
Определения blog_group.php:64
static GetByOwnerID($ID, $arGroup=Array())
Определения blog.php:968
static PrepareSql(&$arFields, $arOrder, &$arFilter, $arGroupBy, $arSelectFields, $obUserFieldsSql=false)
Определения blog.php:487
Определения blog_user.php:12
static CheckFields($ACTION, &$arFields, $ID=0)
Определения blog_user.php:46
static GetUserName($alias, $name, $lastName, $login, $secondName="")
Определения blog_user.php:569
static PreparePath($userID=0, $siteID=False, $is404=True)
Определения blog_user.php:579
static GetByID($ID, $selectType=BLOG_BY_BLOG_USER_ID)
Определения blog_user.php:354
static Index($MODULE_ID, $ITEM_ID, $arFields, $bOverWrite=false, $SEARCH_SESS_ID='')
Определения search.php:1302
Определения blog_user.php:5
static Add($arFields)
Определения blog_user.php:7
static GetList($arOrder=Array("ID"=> "DESC"), $arFilter=Array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
Определения blog_user.php:249
static GetUserFriendsList($ID, $userID=False, $bAuth=False, $limit=20, $arGroup=Array())
Определения blog_user.php:359
static Update($ID, $arFields)
Определения blog_user.php:124
static killAllTags($text)
Определения functions.php:473
$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
if($ajaxMode) $ID
Определения get_user.php:27
$_SERVER["DOCUMENT_ROOT"]
Определения cron_frame.php:9
global $DB
Определения cron_frame.php:29
if(empty($signedUserToken)) $key
Определения quickway.php:257
</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
$arRes
Определения options.php:104
const SITE_ID
Определения sonet_set_content_view.php:12
$k
Определения template_pdf.php:567
$GLOBALS['_____370096793']
Определения update_client.php:1
$dbResult
Определения updtr957.php:3
$arFilter
Определения user_search.php:106
$dbRes
Определения yandex_detail.php:168