1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
user.php
См. документацию.
1<?php
2
4
5require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/sale/general/user.php");
6
8{
9 //********** SELECT **************//
10 public static function GetByID($ID)
11 {
12 global $DB;
13
14 $ID = (int)$ID;
15 if ($ID <= 0)
16 return false;
17
18 if (isset($GLOBALS["SALE_USER_ACCOUNT"]["SALE_USER_ACCOUNT_CACHE_".$ID]) && is_array($GLOBALS["SALE_USER_ACCOUNT"]["SALE_USER_ACCOUNT_CACHE_".$ID]) && is_set($GLOBALS["SALE_USER_ACCOUNT"]["SALE_USER_ACCOUNT_CACHE_".$ID], "ID"))
19 {
20 return $GLOBALS["SALE_USER_ACCOUNT"]["SALE_USER_ACCOUNT_CACHE_".$ID];
21 }
22 else
23 {
24 $strSql =
25 "SELECT UA.ID, UA.USER_ID, UA.CURRENT_BUDGET, UA.CURRENCY, UA.NOTES, UA.LOCKED, ".
26 " ".$DB->DateToCharFunction("UA.TIMESTAMP_X", "FULL")." as TIMESTAMP_X, ".
27 " ".$DB->DateToCharFunction("UA.DATE_LOCKED", "FULL")." as DATE_LOCKED ".
28 "FROM b_sale_user_account UA ".
29 "WHERE UA.ID = ".$ID." ";
30
31 $dbUserAccount = $DB->Query($strSql);
32 if ($arUserAccount = $dbUserAccount->Fetch())
33 {
34 $GLOBALS["SALE_USER_ACCOUNT"]["SALE_USER_ACCOUNT_CACHE_".$ID] = $arUserAccount;
35 return $arUserAccount;
36 }
37 }
38
39 return false;
40 }
41
42 public static function GetByUserID($userID, $currency)
43 {
44 global $DB;
45
46 $userID = (int)$userID;
47 if ($userID <= 0)
48 return false;
49
50 $currency = trim($currency);
51 $currency = preg_replace("#[\W]+#", "", $currency);
52 if ($currency == '')
53 return false;
54
55 if (isset($GLOBALS["SALE_USER_ACCOUNT"]["SALE_USER_ACCOUNT_CACHE_".$userID."_".$currency]) && is_array($GLOBALS["SALE_USER_ACCOUNT"]["SALE_USER_ACCOUNT_CACHE_".$userID."_".$currency]) && is_set($GLOBALS["SALE_USER_ACCOUNT"]["SALE_USER_ACCOUNT_CACHE_".$userID."_".$currency], "ID"))
56 {
57 return $GLOBALS["SALE_USER_ACCOUNT"]["SALE_USER_ACCOUNT_CACHE_".$userID."_".$currency];
58 }
59 else
60 {
61 $strSql =
62 "SELECT UA.ID, UA.USER_ID, UA.CURRENT_BUDGET, UA.CURRENCY, UA.NOTES, UA.LOCKED, ".
63 " ".$DB->DateToCharFunction("UA.TIMESTAMP_X", "FULL")." as TIMESTAMP_X, ".
64 " ".$DB->DateToCharFunction("UA.DATE_LOCKED", "FULL")." as DATE_LOCKED ".
65 "FROM b_sale_user_account UA ".
66 "WHERE UA.USER_ID = ".$userID." ".
67 " AND UA.CURRENCY = '".$DB->ForSql($currency)."' ";
68
69 $dbUserAccount = $DB->Query($strSql);
70 if ($arUserAccount = $dbUserAccount->Fetch())
71 {
72 $GLOBALS["SALE_USER_ACCOUNT"]["SALE_USER_ACCOUNT_CACHE_".$userID."_".$currency] = $arUserAccount;
73 return $arUserAccount;
74 }
75 }
76
77 return false;
78 }
79
80 public static function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
81 {
82 global $DB;
83
84 if (empty($arSelectFields))
85 $arSelectFields = array("ID", "USER_ID", "CURRENT_BUDGET", "CURRENCY", "LOCKED", "NOTES", "TIMESTAMP_X", "DATE_LOCKED");
86
87 // FIELDS -->
89 "ID" => array("FIELD" => "UA.ID", "TYPE" => "int"),
90 "USER_ID" => array("FIELD" => "UA.USER_ID", "TYPE" => "int"),
91 "CURRENT_BUDGET" => array("FIELD" => "UA.CURRENT_BUDGET", "TYPE" => "double"),
92 "CURRENCY" => array("FIELD" => "UA.CURRENCY", "TYPE" => "string"),
93 "LOCKED" => array("FIELD" => "UA.LOCKED", "TYPE" => "char"),
94 "NOTES" => array("FIELD" => "UA.NOTES", "TYPE" => "string"),
95 "TIMESTAMP_X" => array("FIELD" => "UA.TIMESTAMP_X", "TYPE" => "datetime"),
96 "DATE_LOCKED" => array("FIELD" => "UA.DATE_LOCKED", "TYPE" => "datetime"),
97 "USER_LOGIN" => array("FIELD" => "U.LOGIN", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (UA.USER_ID = U.ID)"),
98 "USER_ACTIVE" => array("FIELD" => "U.ACTIVE", "TYPE" => "char", "FROM" => "INNER JOIN b_user U ON (UA.USER_ID = U.ID)"),
99 "USER_NAME" => array("FIELD" => "U.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (UA.USER_ID = U.ID)"),
100 "USER_LAST_NAME" => array("FIELD" => "U.LAST_NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (UA.USER_ID = U.ID)"),
101 "USER_EMAIL" => array("FIELD" => "U.EMAIL", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (UA.USER_ID = U.ID)"),
102 "USER_USER" => array("FIELD" => "U.LOGIN,U.NAME,U.LAST_NAME,U.EMAIL,U.ID", "WHERE_ONLY" => "Y", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (UA.USER_ID = U.ID)")
103 );
104 // <-- FIELDS
105
106 $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
107
108 $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
109
110 if (empty($arGroupBy) && is_array($arGroupBy))
111 {
112 $strSql =
113 "SELECT ".$arSqls["SELECT"]." ".
114 "FROM b_sale_user_account UA ".
115 " ".$arSqls["FROM"]." ";
116 if ($arSqls["WHERE"] <> '')
117 $strSql .= "WHERE ".$arSqls["WHERE"]." ";
118 if ($arSqls["GROUPBY"] <> '')
119 $strSql .= "GROUP BY ".$arSqls["GROUPBY"]." ";
120
121 //echo "!1!=".htmlspecialcharsbx($strSql)."<br>";
122
123 $dbRes = $DB->Query($strSql);
124 if ($arRes = $dbRes->Fetch())
125 return $arRes["CNT"];
126 else
127 return false;
128 }
129
130 $strSql =
131 "SELECT ".$arSqls["SELECT"]." ".
132 "FROM b_sale_user_account UA ".
133 " ".$arSqls["FROM"]." ";
134 if ($arSqls["WHERE"] <> '')
135 $strSql .= "WHERE ".$arSqls["WHERE"]." ";
136 if ($arSqls["GROUPBY"] <> '')
137 $strSql .= "GROUP BY ".$arSqls["GROUPBY"]." ";
138 if ($arSqls["ORDERBY"] <> '')
139 $strSql .= "ORDER BY ".$arSqls["ORDERBY"]." ";
140
141 if (is_array($arNavStartParams) && intval($arNavStartParams["nTopCount"])<=0)
142 {
143 $strSql_tmp =
144 "SELECT COUNT('x') as CNT ".
145 "FROM b_sale_user_account UA ".
146 " ".$arSqls["FROM"]." ";
147 if ($arSqls["WHERE"] <> '')
148 $strSql_tmp .= "WHERE ".$arSqls["WHERE"]." ";
149 if ($arSqls["GROUPBY"] <> '')
150 $strSql_tmp .= "GROUP BY ".$arSqls["GROUPBY"]." ";
151
152 //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>";
153
154 $dbRes = $DB->Query($strSql_tmp);
155 $cnt = 0;
156 if ($arSqls["GROUPBY"] == '')
157 {
158 if ($arRes = $dbRes->Fetch())
159 $cnt = $arRes["CNT"];
160 }
161 else
162 {
163 // FOR MYSQL!!! ANOTHER CODE FOR ORACLE
164 $cnt = $dbRes->SelectedRowsCount();
165 }
166
167 $dbRes = new CDBResult();
168
169 //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>";
170
171 $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
172 }
173 else
174 {
175 if (is_array($arNavStartParams) && intval($arNavStartParams["nTopCount"])>0)
176 $strSql .= "LIMIT ".intval($arNavStartParams["nTopCount"]);
177
178 //echo "!3!=".htmlspecialcharsbx($strSql)."<br>";
179
180 $dbRes = $DB->Query($strSql);
181 }
182
183 return $dbRes;
184 }
185
186 public static function Add($arFields)
187 {
188 global $DB;
189
190 $arFields1 = [];
191 foreach ($arFields as $key => $value)
192 {
193 if (mb_substr($key, 0, 1) == "=")
194 {
195 $arFields1[mb_substr($key, 1)] = $value;
196 unset($arFields[$key]);
197 }
198 }
199
201 {
202 return false;
203 }
204
205 foreach (GetModuleEvents('sale', 'OnBeforeUserAccountAdd', true) as $arEvent)
206 {
207 if (ExecuteModuleEventEx($arEvent, array(&$arFields))===false)
208 {
209 return false;
210 }
211 }
212
213 if (!isset($arFields1['TIMESTAMP_X']))
214 {
215 $connection = Application::getConnection();
216 $helper = $connection->getSqlHelper();
217 unset($arFields['TIMESTAMP_X']);
218 $arFields['~TIMESTAMP_X'] = $helper->getCurrentDateTimeFunction();
219 unset($helper, $connection);
220 }
221
222 $arInsert = $DB->PrepareInsert("b_sale_user_account", $arFields);
223
224 foreach ($arFields1 as $key => $value)
225 {
226 if ($arInsert[0] <> '') $arInsert[0] .= ", ";
227 $arInsert[0] .= $key;
228 if ($arInsert[1] <> '') $arInsert[1] .= ", ";
229 $arInsert[1] .= $value;
230 }
231
232 $strSql = "INSERT INTO b_sale_user_account(".$arInsert[0].") VALUES(".$arInsert[1].")";
233 $DB->Query($strSql);
234
235 $ID = (int)$DB->LastID();
236
237 foreach (GetModuleEvents('sale', 'OnAfterUserAccountAdd', true) as $arEvent)
238 {
239 ExecuteModuleEventEx($arEvent, Array($ID, $arFields));
240 }
241
242 return $ID;
243 }
244
245 public static function Update($ID, $arFields)
246 {
247 global $DB;
248
249 $ID = (int)$ID;
250 if ($ID <= 0)
251 return false;
252
253 $arFields1 = array();
254 foreach ($arFields as $key => $value)
255 {
256 if (mb_substr($key, 0, 1) == "=")
257 {
258 $arFields1[mb_substr($key, 1)] = $value;
259 unset($arFields[$key]);
260 }
261 }
262
264 {
265 return false;
266 }
267
268 foreach (GetModuleEvents('sale', 'OnBeforeUserAccountUpdate', true) as $arEvent)
269 {
270 if (ExecuteModuleEventEx($arEvent, array($ID, &$arFields))===false)
271 {
272 return false;
273 }
274 }
275
276 $arOldUserAccount = CSaleUserAccount::GetByID($ID);
277
278 if (!isset($arFields1['TIMESTAMP_X']))
279 {
280 $connection = Application::getConnection();
281 $helper = $connection->getSqlHelper();
282 unset($arFields['TIMESTAMP_X']);
283 $arFields['~TIMESTAMP_X'] = $helper->getCurrentDateTimeFunction();
284 unset($helper, $connection);
285 }
286
287 $strUpdate = $DB->PrepareUpdate("b_sale_user_account", $arFields);
288
289 foreach ($arFields1 as $key => $value)
290 {
291 if ($strUpdate <> '') $strUpdate .= ", ";
292 $strUpdate .= $key."=".$value." ";
293 }
294
295 $strSql = "UPDATE b_sale_user_account SET ".$strUpdate." WHERE ID = ".$ID." ";
296 $DB->Query($strSql);
297
298 unset($GLOBALS["SALE_USER_ACCOUNT"]["SALE_USER_ACCOUNT_CACHE_".$ID]);
299 unset($GLOBALS["SALE_USER_ACCOUNT"]["SALE_USER_ACCOUNT_CACHE_".$arOldUserAccount["USER_ID"]."_".$arOldUserAccount["CURRENCY"]]);
300
301 foreach (GetModuleEvents('sale', 'OnAfterUserAccountUpdate', true) as $arEvent)
302 {
304 }
305
306 return $ID;
307 }
308}
$connection
Определения actionsdefinitions.php:38
static PrepareSql(&$arFields, $arOrder, &$arFilter, $arGroupBy, $arSelectFields, $obUserFieldsSql=false, $callback=false, $arOptions=array())
Определения order.php:1070
Определения user.php:12
static CheckFields($ACTION, &$arFields, $ID=0)
Определения user.php:59
Определения dbresult.php:88
Определения user.php:8
static Add($arFields)
Определения user.php:186
static GetByID($ID)
Определения user.php:10
static GetList($arOrder=array(), $arFilter=array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
Определения user.php:80
static Update($ID, $arFields)
Определения user.php:245
static GetByUserID($userID, $currency)
Определения user.php:42
$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
ExecuteModuleEventEx($arEvent, $arParams=[])
Определения tools.php:5214
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
Определения tools.php:5177
is_set($a, $k=false)
Определения tools.php:2133
if(empty($signedUserToken)) $key
Определения quickway.php:257
$currency
Определения template.php:266
$arRes
Определения options.php:104
$GLOBALS['_____370096793']
Определения update_client.php:1
$arFilter
Определения user_search.php:106
$dbRes
Определения yandex_detail.php:168