17 $arSqlSearch =
array();
24 $arSqlSearch[] =
"UO.ID = ".intval(
$val);
28 $arSqlSearch[] =
"UO.USER_ID = ".intval(
$val);
32 $arSqlSearch[] =
"(UO.USER_ID = ".intval(
$val).
" OR UO.COMMON='Y')";
36 $arSqlSearch[] =
"UO.CATEGORY = '".$DB->ForSql(
$val).
"'";
40 $arSqlSearch[] =
"UO.NAME = '".$DB->ForSql(
$val).
"'";
48 $arSqlSearch[] =
"UO.COMMON = '".$DB->ForSql(
$val).
"'";
54 foreach ($arSqlSearch as $condition)
56 $strSqlSearch.=
" AND (".$condition.
") ";
59 SELECT UO.ID, UO.USER_ID, UO.CATEGORY, UO.NAME, UO.COMMON, UO.VALUE
65 $arSqlOrder =
array();
66 if (is_array($arOrder))
68 foreach ($arOrder as $by =>
$order)
70 $by = strtoupper($by);
76 $arSqlOrder[$by] =
" UO.ID ".$order.
" ";
78 $arSqlOrder[$by] =
" UO.USER_ID ".$order.
" ";
80 $arSqlOrder[$by] =
" UO.CATEGORY ".$order.
" ";
82 $arSqlOrder[$by] =
" UO.NAME ".$order.
" ";
84 $arSqlOrder[$by] =
" UO.COMMON ".$order.
" ";
88 if (!empty($arSqlOrder))
89 $strSqlOrder =
"ORDER BY ".implode(
", ", $arSqlOrder);
93 $res =
$DB->Query($strSql.$strSqlOrder);
97 public static function GetOption($category,
$name, $default_value =
false, $user_id =
false)
101 if ($user_id ===
false &&
$USER instanceof CUser)
103 $user_id =
$USER->GetID();
106 $user_id = intval($user_id);
107 $category = strtolower($category);
109 if (!isset(self::$cache[$user_id][$category]))
111 $mcache_id =
"user_option:{$user_id}:{$category}";
114 if ($user_id > 0 &&
$CACHE_MANAGER->read(3600, $mcache_id,
"user_option"))
117 self::$cache[$user_id][$category] =
$CACHE_MANAGER->get($mcache_id);
123 SELECT NAME, VALUE, COMMON
125 WHERE (USER_ID = {$user_id} OR (USER_ID = 0 AND COMMON = 'Y'))
126 AND CATEGORY = '{$DB->ForSql($category)}'
132 if (!isset(self::$cache[$user_id][$category][
$option[
"NAME"]]) ||
$option[
"COMMON"] <>
'Y')
134 self::$cache[$user_id][$category][
$option[
"NAME"]] = unserialize(
$option[
"VALUE"], [
'allowed_classes' =>
false]);
138 if (!isset(self::$cache[$user_id][$category]))
140 self::$cache[$user_id][$category] = [];
145 $CACHE_MANAGER->Set($mcache_id, self::$cache[$user_id][$category]);
149 if (!isset(self::$cache[$user_id][$category][
$name]))
151 self::$cache[$user_id][$category][
$name] =
null;
155 if (!isset(self::$cache[$user_id][$category][
$name]))
157 return $default_value;
160 return self::$cache[$user_id][$category][
$name];
163 public static function SetOption($category,
$name, $value, $bCommon =
false, $user_id =
false)
171 elseif($user_id ===
false)
173 if(!is_object(
$USER))
177 $user_id =
$USER->GetID();
180 $category = strtolower($category);
182 $user_id = intval($user_id);
184 "USER_ID" => $user_id,
185 "CATEGORY" => $category,
187 "VALUE" => serialize($value),
188 "COMMON" => ($bCommon ?
"Y" :
"N"),
191 $arUpdateFields =
array(
196 $sql = $helper->prepareMerge(
"b_user_option",
array(
"USER_ID",
"CATEGORY",
"NAME"),
$arFields, $arUpdateFields);
198 if(!
$DB->Query(current($sql)))
206 self::$cache =
array();
210 $CACHE_MANAGER->clean(
"user_option:".$user_id.
":".$category,
"user_option");
211 unset(self::$cache[$user_id][$category]);
220 foreach ($aOptions as $opt)
222 if ($opt[
"c"] <>
"" && $opt[
"n"] <>
"")
225 if (is_array($opt[
"v"]))
230 foreach ($opt[
"v"] as
$k => $v)
239 if (isset($opt[
"d"]) && $opt[
"d"] ===
"Y" &&
$USER->CanDoOperation(
'edit_other_settings'))
251 if ($user_id ===
false &&
$USER instanceof CUser)
253 $user_id =
$USER->GetID();
256 $user_id = intval($user_id);
258 DELETE FROM b_user_option
259 WHERE ".($bCommon ?
"USER_ID=0 AND COMMON='Y' " :
"USER_ID=".$user_id).
"
260 AND CATEGORY='".
$DB->ForSql($category, 50).
"'
261 AND NAME='".
$DB->ForSql(
$name, 255).
"'
263 if (
$DB->Query($strSql))
268 self::$cache =
array();
272 $CACHE_MANAGER->clean(
"user_option:".$user_id.
":".$category,
"user_option");
273 unset(self::$cache[$user_id][$category]);
284 if (
$DB->Query(
"DELETE FROM b_user_option WHERE COMMON='Y' AND NAME NOT LIKE '~%'"))
287 self::$cache =
array();
297 if (
$DB->Query(
"DELETE FROM b_user_option WHERE USER_ID<>0 AND NAME NOT LIKE '~%' ".($user_id <>
false?
" AND USER_ID=".intval($user_id):
"")))
300 self::$cache =
array();
310 $strSql =
"DELETE FROM b_user_option WHERE CATEGORY='".$DB->ForSql($category, 50).
"' AND NAME='".
$DB->ForSql(
$name, 255).
"'";
311 if (
$DB->Query($strSql))
314 self::$cache =
array();
324 $varCookie =
array();
325 parse_str($_COOKIE[$cookieName], $varCookie);
326 setcookie($cookieName,
false,
false,
"/");
327 if (is_array($varCookie[
"p"]) && $varCookie[
"sessid"] ==
bitrix_sessid())
343 $user_id = intval($user_id);
345 if (
$DB->Query(
"DELETE FROM b_user_option WHERE USER_ID=". $user_id))
348 self::$cache =
array();
static getConnection($name="")
static GetList($arOrder=array("ID"=> "ASC"), $arFilter=array())
static DeleteCommonOptions()
static SetOptionsFromArray($aOptions)
static SetCookieOptions($cookieName)
static OnUserDelete($user_id)
static GetOption($category, $name, $default_value=false, $user_id=false)
static DeleteOptionsByName($category, $name)
static DeleteUsersOptions($user_id=false)
static DeleteOption($category, $name, $bCommon=false, $user_id=false)
static SetOption($category, $name, $value, $bCommon=false, $user_id=false)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
if(empty($signedUserToken)) $key