1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
points.php
См. документацию.
1<?php
2
3##############################################
4# Bitrix Site Manager Forum #
5# Copyright (c) 2002-2007 Bitrix #
6# https://www.bitrixsoft.com #
7# mailto:admin@bitrixsoft.com #
8##############################################
9
10IncludeModuleLangFile(__FILE__);
11
12/**********************************************************************/
13/************** POINTS ************************************************/
14/**********************************************************************/
16{
17 //---------------> Points insert, update, delete
18 public static function CanUserAddPoints($arUserGroups)
19 {
20 if (in_array(1, $arUserGroups)) return True;
21 return False;
22 }
23
24 public static function CanUserUpdatePoints($ID, $arUserGroups)
25 {
26 if (in_array(1, $arUserGroups)) return True;
27 return False;
28 }
29
30 public static function CanUserDeletePoints($ID, $arUserGroups)
31 {
32 if (in_array(1, $arUserGroups)) return True;
33 return False;
34 }
35
36 public static function CheckFields($ACTION, &$arFields, $ID = 0)
37 {
38 $aMsg = array();
39
40 if (is_set($arFields, "LANG") || $ACTION=="ADD")
41 {
42 if (!isset($arFields["LANG"]) || !is_array($arFields["LANG"]))
43 $arFields["LANG"] = array();
44
45 $db_lang = CLangAdmin::GetList();
46 while ($arLang = $db_lang->Fetch())
47 {
48 $bFound = False;
49 foreach ($arFields["LANG"] as $key => $res)
50 {
51 if (is_array($res) && $res["LID"] == $arLang["LID"])
52 {
53 $arFields["LANG"][$key]["NAME"] = trim($res["NAME"]);
54 if (isset($arFields["LANG"][$key]) && $arFields["LANG"][$key]["NAME"] <> '')
55 {
56 $bFound = True;
57 break;
58 }
59 }
60 }
61 if (!$bFound)
62 {
63 $aMsg[] = array(
64 "id"=>'POINTS[NAME][LID]['.$arLang["LID"].']',
65 "text" => str_replace("#LANG#", $arLang["NAME"]." [".$arLang["LID"]."]", GetMessage("FORUM_PE_ERROR_NONAME")));
66 }
67 }
68 }
69
70 if (is_set($arFields, "MIN_POINTS") || $ACTION=="ADD")
71 {
72 $arFields["MIN_POINTS"] = trim($arFields["MIN_POINTS"]);
73 if ($arFields["MIN_POINTS"] == '')
74 {
75 $aMsg[] = array(
76 "id"=>'POINTS[MIN_POINTS]',
77 "text" => GetMessage("FORUM_PE_ERROR_MIN_POINTS_EMPTY"));
78 }
79 elseif (preg_match("/[^0-9]/", $arFields["MIN_POINTS"]))
80 {
81 $aMsg[] = array(
82 "id"=>'POINTS[MIN_POINTS]',
83 "text" => GetMessage("FORUM_PE_ERROR_MIN_POINTS_BAD"));
84 }
85 else
86 {
87 $arFields["MIN_POINTS"] = intval($arFields["MIN_POINTS"]);
88 $db_res = CForumPoints::GetList(array(), array("MIN_POINTS" => $arFields["MIN_POINTS"]));
89 if ($db_res && $res = $db_res->GetNext())
90 {
91 if ($ACTION=="ADD" || $ID == 0 || $ID != $res["ID"])
92 {
93 $aMsg[] = array(
94 "id"=>'POINTS[MIN_POINTS]',
95 "text" => GetMessage("FORUM_PE_ERROR_MIN_POINTS_EXIST"));
96 }
97 }
98 }
99 }
100 $arFields["VOTES"] = isset($arFields["VOTES"]) ? intval($arFields["VOTES"]) : null;
101
102 if(!empty($aMsg))
103 {
104 $e = new CAdminException(array_reverse($aMsg));
105 $GLOBALS["APPLICATION"]->ThrowException($e);
106 return false;
107 }
108
109 return true;
110 }
111
112 public static function Update($ID, $arFields)
113 {
114 global $DB;
115 $ID = intval($ID);
116 if ($ID <= 0)
117 return False;
118
119 if (!CForumPoints::CheckFields("UPDATE", $arFields, $ID))
120 return false;
121
122 $strUpdate = $DB->PrepareUpdate("b_forum_points", $arFields);
123 $strSql = "UPDATE b_forum_points SET ".$strUpdate." WHERE ID = ".$ID;
124 $DB->Query($strSql);
125
126 if (is_set($arFields, "LANG"))
127 {
128 $DB->Query("DELETE FROM b_forum_points_lang WHERE POINTS_ID = ".$ID."");
129
130 for ($i = 0; $i<count($arFields["LANG"]); $i++)
131 {
132 $arInsert = $DB->PrepareInsert("b_forum_points_lang", $arFields["LANG"][$i]);
133 $strSql = "INSERT INTO b_forum_points_lang(POINTS_ID, ".$arInsert[0].") VALUES(".$ID.", ".$arInsert[1].")";
134 $DB->Query($strSql);
135 }
136 }
137 return $ID;
138 }
139
140 public static function Delete($ID)
141 {
142 global $DB;
143 $ID = intval($ID);
144
145 $DB->Query("DELETE FROM b_forum_points_lang WHERE POINTS_ID = ".$ID, True);
146 $DB->Query("DELETE FROM b_forum_points WHERE ID = ".$ID, True);
147
148 return true;
149 }
150
151 public static function GetList($arOrder = array("MIN_POINTS"=>"ASC"), $arFilter = array())
152 {
153 global $DB;
154 $arSqlSearch = Array();
155 $strSqlSearch = "";
156 $arSqlOrder = Array();
157 $strSqlOrder = "";
158 $arFilter = (is_array($arFilter) ? $arFilter : array());
159
160 foreach ($arFilter as $key => $val)
161 {
163 $key = mb_strtoupper($key_res["FIELD"]);
164 $strNegative = $key_res["NEGATIVE"];
165 $strOperation = $key_res["OPERATION"];
166
167 switch ($key)
168 {
169 case "ID":
170 case "MIN_POINTS":
171 if (intval($val)<=0)
172 $arSqlSearch[] = ($strNegative=="Y"?"NOT":"")."(FR.".$key." IS NULL OR FR.".$key."<=0)";
173 else
174 $arSqlSearch[] = ($strNegative=="Y"?" FR.".$key." IS NULL OR NOT ":"")."(FR.".$key." ".$strOperation." ".intval($val)." )";
175 break;
176 case "CODE":
177 if ($val == '')
178 $arSqlSearch[] = ($strNegative=="Y"?"NOT":"")."(FR.CODE IS NULL)";
179 else
180 $arSqlSearch[] = ($strNegative=="Y"?" FR.CODE IS NULL OR NOT ":"")."(FR.CODE ".$strOperation." '".$DB->ForSql($val)."' )";
181 break;
182 }
183 }
184 if (!empty($arSqlSearch))
185 $strSqlSearch = "WHERE (".implode(") AND (", $arSqlSearch).")";
186
187 foreach ($arOrder as $by=>$order)
188 {
189 $by = mb_strtoupper($by);
190 $order = mb_strtoupper($order);
191 if ($order!="ASC") $order = "DESC";
192
193 if ($by == "ID") $arSqlOrder[] = " FR.ID ".$order." ";
194 elseif ($by == "CODE") $arSqlOrder[] = " FR.CODE ".$order." ";
195 elseif ($by == "VOTES") $arSqlOrder[] = " FR.VOTES ".$order." ";
196 else
197 {
198 $arSqlOrder[] = " FR.MIN_POINTS ".$order." ";
199 $by = "MIN_POINTS";
200 }
201 }
202 DelDuplicateSort($arSqlOrder);
203 if (!empty($arSqlOrder))
204 $strSqlOrder = " ORDER BY ".implode(", ", $arSqlOrder);
205
206 $strSql =
207 "SELECT FR.ID, FR.MIN_POINTS, FR.CODE, FR.VOTES ".
208 "FROM b_forum_points FR ".
209 $strSqlSearch.
210 $strSqlOrder;
211
212 //echo htmlspecialcharsbx($strSql);
213 return $DB->Query($strSql);
214 }
215
216 public static function GetListEx($arOrder = array("MIN_POINTS"=>"ASC"), $arFilter = array())
217 {
218 global $DB;
219 $arSqlSearch = Array();
220 $strSqlSearch = "";
221 $arSqlOrder = Array();
222 $strSqlOrder = "";
223 $arFilter = (is_array($arFilter) ? $arFilter : array());
224
225 foreach ($arFilter as $key => $val)
226 {
228 $key = mb_strtoupper($key_res["FIELD"]);
229 $strNegative = $key_res["NEGATIVE"];
230 $strOperation = $key_res["OPERATION"];
231
232 switch ($key)
233 {
234 case "ID":
235 case "MIN_POINTS":
236 if (intval($val)<=0)
237 $arSqlSearch[] = ($strNegative=="Y"?"NOT":"")."(FR.".$key." IS NULL OR FR.".$key."<=0)";
238 else
239 $arSqlSearch[] = ($strNegative=="Y"?" FR.".$key." IS NULL OR NOT ":"")."(FR.".$key." ".$strOperation." ".intval($val)." )";
240 break;
241 case "CODE":
242 if ($val == '')
243 $arSqlSearch[] = ($strNegative=="Y"?"NOT":"")."(FR.CODE IS NULL)";
244 else
245 $arSqlSearch[] = ($strNegative=="Y"?" FR.CODE IS NULL OR NOT ":"")."(FR.CODE ".$strOperation." '".$DB->ForSql($val)."' )";
246 break;
247 case "LID":
248 if ($val == '')
249 $arSqlSearch[] = ($strNegative=="Y"?"NOT":"")."(FRL.LID IS NULL OR ".($DB->type == "MSSQL" ? "LEN" : "LENGTH")."(FRL.LID)<=0)";
250 else
251 $arSqlSearch[] = ($strNegative=="Y"?" FRL.LID IS NULL OR NOT ":"")."(FRL.LID ".$strOperation." '".$DB->ForSql($val)."' )";
252 break;
253 }
254 }
255 if (!empty($arSqlSearch))
256 $strSqlSearch = " WHERE (".implode(") AND (", $arSqlSearch).") ";
257
258 foreach ($arOrder as $by=>$order)
259 {
260 $by = mb_strtoupper($by);
261 $order = mb_strtoupper($order);
262 if ($order!="ASC") $order = "DESC";
263
264 if ($by == "ID") $arSqlOrder[] = " FR.ID ".$order." ";
265 elseif ($by == "LID") $arSqlOrder[] = " FRL.LID ".$order." ";
266 elseif ($by == "NAME") $arSqlOrder[] = " FRL.NAME ".$order." ";
267 elseif ($by == "CODE") $arSqlOrder[] = " FR.CODE ".$order." ";
268 elseif ($by == "VOTES") $arSqlOrder[] = " FR.VOTES ".$order." ";
269 else
270 {
271 $arSqlOrder[] = " FR.MIN_POINTS ".$order." ";
272 $by = "MIN_POINTS";
273 }
274 }
275 DelDuplicateSort($arSqlOrder);
276 if (!empty($arSqlOrder))
277 $strSqlOrder = " ORDER BY ".implode(", ", $arSqlOrder);
278
279 $strSql =
280 "SELECT FR.ID, FR.MIN_POINTS, FR.CODE, FR.VOTES, FRL.LID, FRL.NAME ".
281 "FROM b_forum_points FR ".
282 " LEFT JOIN b_forum_points_lang FRL ON FR.ID = FRL.POINTS_ID ".
283 $strSqlSearch." ".
284 $strSqlOrder;
285
286 //echo htmlspecialcharsbx($strSql);
287 return $DB->Query($strSql);
288 }
289
290 public static function GetByID($ID)
291 {
292 global $DB;
293
294 $ID = intval($ID);
295 $strSql =
296 "SELECT FR.ID, FR.MIN_POINTS, FR.CODE, FR.VOTES ".
297 "FROM b_forum_points FR ".
298 "WHERE FR.ID = ".$ID."";
299 $db_res = $DB->Query($strSql);
300
301 if ($res = $db_res->Fetch())
302 {
303 return $res;
304 }
305 return False;
306 }
307
308 public static function GetByIDEx($ID, $strLang)
309 {
310 global $DB;
311
312 $ID = intval($ID);
313 $strSql =
314 "SELECT FR.ID, FR.MIN_POINTS, FR.CODE, FR.VOTES, FRL.LID, FRL.NAME ".
315 "FROM b_forum_points FR ".
316 " LEFT JOIN b_forum_points_lang FRL ON (FR.ID = FRL.POINTS_ID AND FRL.LID = '".$DB->ForSql($strLang)."') ".
317 "WHERE FR.ID = ".$ID."";
318 $db_res = $DB->Query($strSql);
319
320 if ($res = $db_res->Fetch())
321 {
322 return $res;
323 }
324 return False;
325 }
326
327 public static function GetLangByID($POINTS_ID, $strLang)
328 {
329 global $DB;
330
331 $POINTS_ID = intval($POINTS_ID);
332 $strSql =
333 "SELECT FRL.POINTS_ID, FRL.LID, FRL.NAME ".
334 "FROM b_forum_points_lang FRL ".
335 "WHERE FRL.POINTS_ID = ".$POINTS_ID." ".
336 " AND FRL.LID = '".$DB->ForSql($strLang)."' ";
337 $db_res = $DB->Query($strSql);
338
339 if ($res = $db_res->Fetch())
340 {
341 return $res;
342 }
343 return False;
344 }
345}
346
347
348/**********************************************************************/
349/************** POINTS2POST *******************************************/
350/**********************************************************************/
352{
353 //---------------> Insert, update, delete
354 public static function CanUserAddPoints2Post($arUserGroups)
355 {
356 if (in_array(1, $arUserGroups)) return True;
357 return False;
358 }
359
360 public static function CanUserUpdatePoints2Post($ID, $arUserGroups)
361 {
362 if (in_array(1, $arUserGroups)) return True;
363 return False;
364 }
365
366 public static function CanUserDeletePoints2Post($ID, $arUserGroups)
367 {
368 if (in_array(1, $arUserGroups)) return True;
369 return False;
370 }
371
372 public static function CheckFields($ACTION, &$arFields, $ID = 0)
373 {
374 $aMsg = array();
375 if (is_set($arFields, "MIN_NUM_POSTS") || $ACTION=="ADD")
376 {
377 $arFields["MIN_NUM_POSTS"] = trim($arFields["MIN_NUM_POSTS"]);
378 if (empty($arFields["MIN_NUM_POSTS"]))
379 {
380 $aMsg[] = array(
381 "id"=>'POINTS2POST[MIN_NUM_POSTS]',
382 "text" => GetMessage("FORUM_PE_ERROR_MIN_NUM_POSTS_EMPTY"));
383 }
384 elseif (mb_strlen($arFields["MIN_NUM_POSTS"]) > 18 || preg_match("/[^0-9]/", $arFields["MIN_NUM_POSTS"]))
385 {
386 $aMsg[] = array(
387 "id"=>'POINTS2POST[MIN_NUM_POSTS]',
388 "text" => GetMessage("FORUM_PE_ERROR_MIN_NUM_POSTS_BAD"));
389 }
390 else
391 {
392 $arFields["MIN_NUM_POSTS"] = intval($arFields["MIN_NUM_POSTS"]);
393 $db_res = CForumPoints2Post::GetList(array(), array("MIN_NUM_POSTS" => $arFields["MIN_NUM_POSTS"]));
394 if ($db_res && $res = $db_res->GetNext())
395 {
396 if ($ACTION=="ADD" || $ID == 0 || $ID != $res["ID"])
397 {
398 $aMsg[] = array(
399 "id"=>'POINTS2POST[MIN_NUM_POSTS]',
400 "text" => GetMessage("FORUM_PE_ERROR_MIN_NUM_POSTS_EXIST"));
401 }
402 }
403 }
404 }
405 if ((is_set($arFields, "POINTS_PER_POST") || $ACTION=="ADD") && DoubleVal($arFields["POINTS_PER_POST"])<=0)
406 $arFields["POINTS_PER_POST"] = 0;
407 else {
408 $arFields["POINTS_PER_POST"] = round(doubleval($arFields["POINTS_PER_POST"]), 4);
409 if (mb_strlen(round($arFields["POINTS_PER_POST"], 0)) > 14 || mb_strlen(mb_strstr($arFields["POINTS_PER_POST"], ".")) > 5 ||
410 preg_match("/[^0-9.]/", $arFields["POINTS_PER_POST"]))
411 $aMsg[] = array(
412 "id" => 'POINTS2POST[POINTS_PER_POST]',
413 "text" => GetMessage("FORUM_PE_ERROR_MIN_POINTS_BAD"));
414 }
415
416 if(!empty($aMsg))
417 {
418 $e = new CAdminException(array_reverse($aMsg));
419 $GLOBALS["APPLICATION"]->ThrowException($e);
420 return false;
421 }
422
423 return true;
424
425 return True;
426 }
427
428 // User points is not recount.
429 public static function Update($ID, $arFields)
430 {
431 global $DB;
432 $ID = intval($ID);
433 if ($ID<=0) return False;
434
436 return false;
437 $strUpdate = $DB->PrepareUpdate("b_forum_points2post", $arFields);
438 $strSql = "UPDATE b_forum_points2post SET ".$strUpdate." WHERE ID = ".$ID;
439 $DB->Query($strSql);
440
441 return $ID;
442 }
443
444 // User points is not recount.
445 public static function Delete($ID)
446 {
447 global $DB;
448 $ID = intval($ID);
449
450 $DB->Query("DELETE FROM b_forum_points2post WHERE ID = ".$ID, True);
451
452 return true;
453 }
454
455 public static function GetList($arOrder = array("MIN_NUM_POSTS"=>"ASC"), $arFilter = array())
456 {
457 global $DB;
458
459 $arSqlSearch = array();
460 $arSqlOrder = Array();
461 $strSqlSearch = "";
462 $strSqlOrder = "";
463 $arFilter = (is_array($arFilter) ? $arFilter : array());
464
465 foreach ($arFilter as $key => $val)
466 {
468 $key = mb_strtoupper($key_res["FIELD"]);
469 $strNegative = $key_res["NEGATIVE"];
470 $strOperation = $key_res["OPERATION"];
471
472 switch ($key)
473 {
474 case "ID":
475 case "MIN_NUM_POSTS":
476 if (intval($val)<=0)
477 $arSqlSearch[] = ($strNegative=="Y"?"NOT":"")."(FR.".$key." IS NULL OR FR.".$key."<=0)";
478 else
479 $arSqlSearch[] = ($strNegative=="Y"?" FR.".$key." IS NULL OR NOT ":"")."(FR.".$key." ".$strOperation." ".intval($val)." )";
480 break;
481 }
482 }
483 if (count($arSqlSearch) > 0)
484 $strSqlSearch = "WHERE (".implode(") AND (", $arSqlSearch).") ";
485
486 foreach ($arOrder as $by=>$order)
487 {
488 $by = mb_strtoupper($by);
489 $order = mb_strtoupper($order);
490 if ($order!="ASC") $order = "DESC";
491 if ($by == "ID") $arSqlOrder[] = " FR.ID ".$order." ";
492 elseif ($by == "MIN_NUM_POSTS") $arSqlOrder[] = " FR.MIN_NUM_POSTS ".$order." ";
493 else
494 {
495 $arSqlOrder[] = " FR.POINTS_PER_POST ".$order." ";
496 $by = "POINTS_PER_POST";
497 }
498 }
499
500 DelDuplicateSort($arSqlOrder);
501 if (count($arSqlOrder) > 0)
502 $strSqlOrder = " ORDER BY ".implode(", ", $arSqlOrder);
503
504 $strSql =
505 "SELECT FR.ID, FR.MIN_NUM_POSTS, FR.POINTS_PER_POST
506 FROM b_forum_points2post FR
507 ".$strSqlSearch."
508 ".$strSqlOrder;
509
510 $db_res = $DB->Query($strSql);
511 return $db_res;
512 }
513
514 public static function GetByID($ID)
515 {
516 global $DB;
517
518 $ID = intval($ID);
519 $strSql =
520 "SELECT FR.ID, FR.MIN_NUM_POSTS, FR.POINTS_PER_POST ".
521 "FROM b_forum_points2post FR ".
522 "WHERE FR.ID = ".$ID."";
523 $db_res = $DB->Query($strSql);
524
525 if ($res = $db_res->Fetch())
526 {
527 return $res;
528 }
529 return False;
530 }
531}
532
533
534/**********************************************************************/
535/************** FORUM USER POINTS *************************************/
536/**********************************************************************/
538{
539 //---------------> Insert, update, delete
540 public static function CanUserAddUserPoints($iUserID)
541 {
542 if (CForumUser::IsLocked($iUserID)) return False;
543 return True;
544 }
545
546 public static function CanUserUpdateUserPoints($iUserID)
547 {
548 if (CForumUser::IsLocked($iUserID)) return False;
549 return True;
550 }
551
552 public static function CanUserDeleteUserPoints($iUserID)
553 {
554 if (CForumUser::IsLocked($iUserID)) return False;
555 return True;
556 }
557
558 public static function CheckFields($ACTION, &$arFields)
559 {
560 if ((is_set($arFields, "FROM_USER_ID") || $ACTION=="ADD") && intval($arFields["FROM_USER_ID"])<=0) return false;
561 if ((is_set($arFields, "TO_USER_ID") || $ACTION=="ADD") && intval($arFields["TO_USER_ID"])<=0) return false;
562 if ((is_set($arFields, "POINTS") || $ACTION=="ADD") && intval($arFields["POINTS"])<=0) return false;
563
564 return True;
565 }
566
567 public static function Update($FROM_USER_ID, $TO_USER_ID, $arFields)
568 {
569 global $DB;
570
571 $FROM_USER_ID = intval($FROM_USER_ID);
572 if ($FROM_USER_ID<=0) return False;
573
574 $TO_USER_ID = intval($TO_USER_ID);
575 if ($TO_USER_ID<=0) return False;
576
578 return false;
579
580 $strUpdate = $DB->PrepareUpdate("b_forum_user_points", $arFields);
581
582 $strDatePostValue = "";
583 if (!is_set($arFields, "DATE_UPDATE"))
584 {
585 $strDatePostValue .= ", DATE_UPDATE = ".$DB->GetNowFunction()." ";
586 }
587
588 $strSql = "UPDATE b_forum_user_points SET ".$strUpdate.$strDatePostValue." WHERE FROM_USER_ID = ".$FROM_USER_ID." AND TO_USER_ID = ".$TO_USER_ID;
589 $DB->Query($strSql);
590
591 // Recount user points.
592 $arUserFields = array();
593 $arUserFields["POINTS"] = CForumUser::CountUserPoints($TO_USER_ID);
594
595 $arUser = CForumUser::GetByUSER_ID($TO_USER_ID);
596 if ($arUser)
597 {
598 CForumUser::Update($arUser["ID"], $arUserFields);
599 }
600 else
601 {
602 $arUserFields["USER_ID"] = $TO_USER_ID;
603 $ID_tmp = CForumUser::Add($arUserFields);
604 }
605
606 return true;
607 }
608
609 public static function Delete($FROM_USER_ID, $TO_USER_ID)
610 {
611 global $DB;
612
613 $FROM_USER_ID = intval($FROM_USER_ID);
614 if ($FROM_USER_ID<=0) return False;
615
616 $TO_USER_ID = intval($TO_USER_ID);
617 if ($TO_USER_ID<=0) return False;
618
619 $DB->Query("DELETE FROM b_forum_user_points WHERE FROM_USER_ID = ".$FROM_USER_ID." AND TO_USER_ID = ".$TO_USER_ID);
620
621 // Recount user points.
622 $arUserFields = array();
623 $arUserFields["POINTS"] = CForumUser::CountUserPoints($TO_USER_ID);
624
625 $arUser = CForumUser::GetByUSER_ID($TO_USER_ID);
626 if ($arUser)
627 {
628 CForumUser::Update($arUser["ID"], $arUserFields);
629 }
630 else
631 {
632 $arUserFields["USER_ID"] = $TO_USER_ID;
633 $ID_tmp = CForumUser::Add($arUserFields);
634 }
635
636 return true;
637 }
638
639 public static function GetList($arOrder = array("TO_USER_ID"=>"ASC"), $arFilter = array())
640 {
641 global $DB;
642 $arSqlSearch = Array();
643 $strSqlSearch = "";
644 $arSqlOrder = Array();
645 $strSqlOrder = "";
646 $arFilter = (is_array($arFilter) ? $arFilter : array());
647
648 foreach ($arFilter as $key => $val)
649 {
651 $key = mb_strtoupper($key_res["FIELD"]);
652 $strNegative = $key_res["NEGATIVE"];
653 $strOperation = $key_res["OPERATION"];
654
655 switch ($key)
656 {
657 case "FROM_USER_ID":
658 case "TO_USER_ID":
659 if (intval($val)<=0)
660 $arSqlSearch[] = ($strNegative=="Y"?"NOT":"")."(FR.".$key." IS NULL OR FR.".$key."<=0)";
661 else
662 $arSqlSearch[] = ($strNegative=="Y"?" FR.".$key." IS NULL OR NOT ":"")."(FR.".$key." ".$strOperation." ".intval($val)." )";
663 break;
664 }
665 }
666 if (!empty($arSqlSearch))
667 $strSqlSearch = " WHERE (".implode(") AND (", $arSqlSearch).") ";
668
669 foreach ($arOrder as $by=>$order)
670 {
671 $by = mb_strtoupper($by);
672 $order = mb_strtoupper($order);
673 if ($order!="ASC") $order = "DESC";
674
675 if ($by == "FROM_USER_ID") $arSqlOrder[] = " FR.FROM_USER_ID ".$order." ";
676 elseif ($by == "POINTS") $arSqlOrder[] = " FR.POINTS ".$order." ";
677 elseif ($by == "DATE_UPDATE") $arSqlOrder[] = " FR.DATE_UPDATE ".$order." ";
678 else
679 {
680 $arSqlOrder[] = " FR.TO_USER_ID ".$order." ";
681 $by = "TO_USER_ID";
682 }
683 }
684 DelDuplicateSort($arSqlOrder);
685 if (!empty($arSqlOrder))
686 $strSqlOrder = " ORDER BY ".implode(", ", $arSqlOrder);
687
688 $strSql =
689 "SELECT FR.FROM_USER_ID, FR.TO_USER_ID, FR.POINTS, FR.DATE_UPDATE ".
690 "FROM b_forum_user_points FR ".
691 $strSqlSearch." ".
692 $strSqlOrder;
693 $db_res = $DB->Query($strSql);
694 return $db_res;
695 }
696
697 public static function GetByID($FROM_USER_ID, $TO_USER_ID)
698 {
699 global $DB;
700
701 $FROM_USER_ID = intval($FROM_USER_ID);
702 if ($FROM_USER_ID<=0)
703 return False;
704
705 $TO_USER_ID = intval($TO_USER_ID);
706 if ($TO_USER_ID<=0)
707 return False;
708
709 $strSql =
710 "SELECT FR.FROM_USER_ID, FR.TO_USER_ID, FR.POINTS, FR.DATE_UPDATE
711 FROM b_forum_user_points FR
712 WHERE FR.FROM_USER_ID = ".$FROM_USER_ID."
713 AND FR.TO_USER_ID = ".$TO_USER_ID."";
714 $db_res = $DB->Query($strSql);
715 if ($res = $db_res->Fetch())
716 return $res;
717 return False;
718 }
719
720 public static function CountSumPoints($TO_USER_ID)
721 {
722 global $DB;
723
724 $TO_USER_ID = intval($TO_USER_ID);
725 if ($TO_USER_ID<=0) return 0;
726
727 $strSql =
728 "SELECT SUM(FR.POINTS) as SM ".
729 "FROM b_forum_user_points FR ".
730 "WHERE FR.TO_USER_ID = ".$TO_USER_ID."";
731 $db_res = $DB->Query($strSql);
732
733 if ($res = $db_res->Fetch())
734 {
735 return intval($res["SM"]);
736 }
737 return 0;
738 }
739}
$db_res
Определения options_user_settings.php:8
static GetFilterOperation($key)
Определения forum_new.php:582
Определения points.php:352
static CanUserDeletePoints2Post($ID, $arUserGroups)
Определения points.php:366
static Delete($ID)
Определения points.php:445
static GetList($arOrder=array("MIN_NUM_POSTS"=>"ASC"), $arFilter=array())
Определения points.php:455
static GetByID($ID)
Определения points.php:514
static CanUserAddPoints2Post($arUserGroups)
Определения points.php:354
static CheckFields($ACTION, &$arFields, $ID=0)
Определения points.php:372
static CanUserUpdatePoints2Post($ID, $arUserGroups)
Определения points.php:360
static Update($ID, $arFields)
Определения points.php:429
Определения points.php:16
static Delete($ID)
Определения points.php:140
static GetByID($ID)
Определения points.php:290
static CanUserDeletePoints($ID, $arUserGroups)
Определения points.php:30
static CheckFields($ACTION, &$arFields, $ID=0)
Определения points.php:36
static GetLangByID($POINTS_ID, $strLang)
Определения points.php:327
static GetListEx($arOrder=array("MIN_POINTS"=>"ASC"), $arFilter=array())
Определения points.php:216
static CanUserUpdatePoints($ID, $arUserGroups)
Определения points.php:24
static GetByIDEx($ID, $strLang)
Определения points.php:308
static GetList($arOrder=array("MIN_POINTS"=>"ASC"), $arFilter=array())
Определения points.php:151
static Update($ID, $arFields)
Определения points.php:112
static CanUserAddPoints($arUserGroups)
Определения points.php:18
static CountUserPoints($USER_ID=0, $iCnt=false)
Определения user.php:806
static IsLocked($userID)
Определения user.php:82
static GetByUSER_ID($USER_ID)
Определения user.php:517
static Add($fields, $strUploadDir=false)
Определения user.php:269
static Update($ID, $arFields, $strUploadDir=false, $UpdateByUserId=false)
Определения user.php:297
Определения points.php:538
static CountSumPoints($TO_USER_ID)
Определения points.php:720
static CanUserUpdateUserPoints($iUserID)
Определения points.php:546
static Update($FROM_USER_ID, $TO_USER_ID, $arFields)
Определения points.php:567
static CheckFields($ACTION, &$arFields)
Определения points.php:558
static CanUserDeleteUserPoints($iUserID)
Определения points.php:552
static GetList($arOrder=array("TO_USER_ID"=>"ASC"), $arFilter=array())
Определения points.php:639
static GetByID($FROM_USER_ID, $TO_USER_ID)
Определения points.php:697
static CanUserAddUserPoints($iUserID)
Определения points.php:540
static Delete($FROM_USER_ID, $TO_USER_ID)
Определения points.php:609
static GetList($by="sort", $order="asc", $arFilter=[])
Определения language.php:12
$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
$bFound
Определения get_search.php:40
if($ajaxMode) $ID
Определения get_user.php:27
global $DB
Определения cron_frame.php:29
$ACTION
Определения csv_new_setup.php:27
DelDuplicateSort(&$arSort)
Определения tools.php:2055
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
Определения tools.php:3778
is_set($a, $k=false)
Определения tools.php:2133
GetMessage($name, $aReplace=null)
Определения tools.php:3397
$order
Определения payment.php:8
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
if(empty($signedUserToken)) $key
Определения quickway.php:257
$i
Определения factura.php:643
</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
$val
Определения options.php:1793
$GLOBALS['_____370096793']
Определения update_client.php:1
$arFilter
Определения user_search.php:106