1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
private_message.php
См. документацию.
1<?
2require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/forum/classes/general/private_message.php");
3
5{
6 public static function GetListEx($arOrder = Array("ID"=>"ASC"), $arFilter = Array(), $bCount = false, $iNum = 0, $arAddParams = array())
7 {
8 global $DB;
9 $arSqlSearch = array();
10 $arSqlOrder = array();
11 $strSqlSearch = "";
12 $strSqlOrder = "";
13 $strSqlFrom = "";
14 $arFilter = (is_array($arFilter) ? $arFilter : array());
15 if (is_array($bCount) && empty($arAddParams)){
16 $arAddParams = $bCount;
17 $bCount = false;
18 $iNum = 0;
19 }
20 $arAddParams = (is_array($arAddParams) ? $arAddParams : array($arAddParams));
21 if (is_set($arAddParams, "nameTemplate"))
22 $arAddParams["sNameTemplate"] = $arAddParams["nameTemplate"];
23 $arAddParams["bCount"] = (!!$bCount || (isset($arAddParams["bCount"]) && !!$arAddParams["bCount"]));
24 $arAddParams["nTopCount"] = ($iNum > 0 ? $iNum : (isset($arAddParams["nTopCount"]) && $arAddParams["nTopCount"] > 0 ? $arAddParams["nTopCount"] : 0));
25
26 foreach ($arFilter as $key => $val)
27 {
29 $key = mb_strtoupper($key_res["FIELD"]);
30 $strNegative = $key_res["NEGATIVE"];
31 $strOperation = $key_res["OPERATION"];
32
33 switch ($key)
34 {
35 case "ID":
36 case "FOLDER_ID":
37 case "AUTHOR_ID":
38 case "RECIPIENT_ID":
39 case "USER_ID":
40 if (intval($val)<=0)
41 $arSqlSearch[] = ($strNegative=="Y"?"NOT":"")."(PM.".$key." IS NULL OR PM.".$key."<=0)";
42 elseif (mb_strtoupper($strOperation) == "IN")
43 $arSqlSearch[] = ($strNegative=="Y"?" PM.".$key." IS NULL OR NOT ":"")."(PM.".$key." ".$strOperation." (".intval($val).") )";
44 else
45 $arSqlSearch[] = ($strNegative=="Y"?" PM.".$key." IS NULL OR NOT ":"")."(PM.".$key." ".$strOperation." ".intval($val)." )";
46 break;
47 case "OWNER_ID":
48 if (COption::GetOptionString("forum", "UsePMVersion", "2") == 2)
49 {
50 $user_id = 0;
51 if (is_array($val) && intval($val["USER_ID"]) > 0)
52 $user_id = intval($val["USER_ID"]);
53 else
54 $user_id = intval($val);
55 $arSqlSearch[] =
56 "(PM.USER_ID=".$user_id." AND ((PM.FOLDER_ID=2) OR (PM.FOLDER_ID=3)))";
57 }
58 else
59 {
60 $arSqlSearch[] =
61 "((PM.AUTHOR_ID=".intval($val).") AND (PM.IS_READ='N')) OR (PM.USER_ID=".intval($val)." AND (PM.FOLDER_ID=2))";
62 }
63 break;
64 case "POST_SUBJ":
65 case "POST_MESSAGE":
66 case "USE_SMILES":
67 case "IS_READ":
68 if ($val == '')
69 $arSqlSearch[] = ($strNegative=="Y"?"NOT":"")."(PM.".$key." IS NULL OR LENGTH(PM.".$key.")<=0)";
70 elseif (mb_strtoupper($strOperation) == "IN")
71 $arSqlSearch[] = ($strNegative=="Y"?" PM.".$key." IS NULL OR NOT ":"")."(PM.".$key." ".$strOperation." ('".$DB->ForSql($val)."') )";
72 else
73 $arSqlSearch[] = ($strNegative=="Y"?" PM.".$key." IS NULL OR NOT ":"")."(PM.".$key." ".$strOperation." '".$DB->ForSql($val)."' )";
74 break;
75 case "POST_DATE":
76 if ($val == '')
77 $arSqlSearch[] = ($strNegative=="Y"?"NOT":"")."(PM.".$key." IS NULL OR LENGTH(PM.".$key.")<=0)";
78 else
79 $arSqlSearch[] = ($strNegative=="Y"?" PM.".$key." IS NULL OR NOT ":"")."(PM.".$key." ".$strOperation." ".$DB->CharToDateFunction($DB->ForSql($val), "FULL")." )";
80 break;
81 }
82 }
83 if (!empty($arSqlSearch))
84 $strSqlSearch = " AND (".implode(") AND (", $arSqlSearch).") ";
85
86 $iCnt = 0;
87 if ($arAddParams["bCount"] || is_set($arAddParams, "bDescPageNumbering"))
88 {
89 $strSql = "SELECT COUNT(PM.ID) AS CNT FROM b_forum_private_message PM WHERE (1=1) ".$strSqlSearch;
90 $db_res = $DB->Query($strSql);
91 $iCnt = ($db_res && ($res = $db_res->Fetch()) ? intval($res["CNT"]) : 0);
92 if ($arAddParams["bCount"])
93 return $iCnt;
94 }
95
96 foreach ($arOrder as $by=>$order)
97 {
98 $by = mb_strtoupper($by);
99 $order = mb_strtoupper($order);
100 if ($order!="ASC") $order = "DESC";
101
102 if ($by == "AUTHOR_NAME") $arSqlOrder[] = " AUTHOR_NAME ".$order." ";
103 elseif ($by == "RECIPIENT_NAME") $arSqlOrder[] = " RECIPIENT_NAME ".$order." ";
104 elseif ($by == "AUTHOR_ID") $arSqlOrder[] = " PM.AUTHOR_ID ".$order." ";
105 elseif ($by == "RECIPIENT_ID") $arSqlOrder[] = " PM.RECIPIENT_ID ".$order." ";
106 elseif ($by == "POST_DATE") $arSqlOrder[] = " PM.POST_DATE ".$order." ";
107 elseif ($by == "POST_SUBJ") $arSqlOrder[] = " PM.POST_SUBJ ".$order." ";
108 elseif ($by == "POST_MESSAGE") $arSqlOrder[] = " PM.POST_MESSAGE ".$order." ";
109 elseif ($by == "IS_READ") $arSqlOrder[] = " PM.IS_READ ".$order." ";
110 elseif ($by == "USE_SMILES") $arSqlOrder[] = " PM.USE_SMILES ".$order." ";
111 else
112 {
113 $arSqlOrder[] = " PM.POST_DATE ".$order." ";
114 $by = "POST_DATE";
115 }
116 }
117 DelDuplicateSort($arSqlOrder);
118 if(!empty($arSqlOrder))
119 $strSqlOrder = " ORDER BY ".implode(", ", $arSqlOrder);
120
121 $strSql =
122 "SELECT
123 PM.ID, PM.POST_SUBJ, PM.POST_MESSAGE, PM.FOLDER_ID, PM.IS_READ, PM.USE_SMILES, PM.REQUEST_IS_READ,
124 ".$DB->DateToCharFunction("PM.POST_DATE", "FULL")." as POST_DATE,
125 PM.USER_ID,
126
127 PM.AUTHOR_ID, U.EMAIL AS AUTHOR_EMAIL, U.LOGIN AS AUTHOR_LOGIN,
128 CASE
129 WHEN ((FU.SHOW_NAME='Y') AND (LENGTH(TRIM(CONCAT_WS('',".CForumUser::GetNameFieldsForQuery($arAddParams["sNameTemplate"] ?? null).")))>0))
130 THEN TRIM(REPLACE(CONCAT_WS(' ',".CForumUser::GetNameFieldsForQuery($arAddParams["sNameTemplate"] ?? null)."), ' ', ' '))
131 ELSE U.LOGIN
132 END AS AUTHOR_NAME,
133 PM.RECIPIENT_ID, UU.EMAIL AS RECIPIENT_EMAIL, UU.LOGIN AS RECIPIENT_LOGIN,
134 CASE
135 WHEN ((FUU.SHOW_NAME='Y') AND (LENGTH(TRIM(CONCAT_WS('',".CForumUser::GetNameFieldsForQuery($arAddParams["sNameTemplate"] ?? null,"UU.").")))>0))
136 THEN TRIM(REPLACE(CONCAT_WS(' ',".CForumUser::GetNameFieldsForQuery($arAddParams["sNameTemplate"] ?? null,"UU.")."), ' ', ' '))
137 ELSE UU.LOGIN
138 END AS RECIPIENT_NAME
139 FROM b_forum_private_message PM
140 LEFT JOIN b_forum_user FU ON (PM.AUTHOR_ID = FU.USER_ID)
141 LEFT JOIN b_forum_user FUU ON (PM.RECIPIENT_ID = FUU.USER_ID)
142 LEFT JOIN b_user U ON (PM.AUTHOR_ID = U.ID)
143 LEFT JOIN b_user UU ON (PM.RECIPIENT_ID = UU.ID)
144 WHERE 1=1 ".$strSqlSearch."
145 ".$strSqlOrder;
146
147 if (is_set($arAddParams, "bDescPageNumbering")) {
148 $db_res = new CDBResult();
149 $db_res->NavQuery($strSql, $iCnt, $arAddParams);
150 } else {
151 if ($arAddParams["nTopCount"] > 0)
152 $strSql .= " LIMIT 0,".$arAddParams["nTopCount"];
153 $db_res = $DB->Query($strSql);
154 }
155 return $db_res;
156 }
157}
158
159class CForumPMFolder extends CAllForumPMFolder
160{
161 //
162}
$db_res
Определения options_user_settings.php:8
static GetFilterOperation($key)
Определения forum_new.php:582
static GetListEx($arOrder=Array("ID"=>"ASC"), $arFilter=Array(), $bCount=false, $iNum=0, $arAddParams=array())
Определения private_message.php:6
static GetNameFieldsForQuery($sNameTemplate, $userTablePrefix="U.")
Определения user.php:610
</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
$_SERVER["DOCUMENT_ROOT"]
Определения cron_frame.php:9
global $DB
Определения cron_frame.php:29
DelDuplicateSort(&$arSort)
Определения tools.php:2055
is_set($a, $k=false)
Определения tools.php:2133
$order
Определения payment.php:8
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
if(empty($signedUserToken)) $key
Определения quickway.php:257
$val
Определения options.php:1793
$arFilter
Определения user_search.php:106