1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
admin_notify.php
См. документацию.
1<?php
2
4
6{
7 const TYPE_NORMAL = 'M';
8 const TYPE_ERROR = 'E';
9
10 protected static function CleanCache()
11 {
12 global $CACHE_MANAGER;
13
14 $rsLangs = CLanguage::GetList('lid');
15 while ($arLang = $rsLangs->Fetch())
16 {
17 $CACHE_MANAGER->Clean("admin_notify_list_" . $arLang['LANGUAGE_ID']);
18 }
19 $CACHE_MANAGER->Clean("admin_notify_list");
20 }
21
22 public static function Add($arFields)
23 {
24 global $DB;
25
26 if (!self::CheckFields($arFields))
27 {
28 return false;
29 }
30
31 if (!isset($arFields['ENABLE_CLOSE']))
32 {
33 $arFields['ENABLE_CLOSE'] = 'Y';
34 }
35
36 if (isset($arFields['TAG']) && trim($arFields['TAG']) <> '')
37 {
38 $arFields['TAG'] = trim($arFields['TAG']);
40 }
41 else
42 {
43 $arFields['TAG'] = "";
44 }
45
46 $arFields['PUBLIC_SECTION'] = (isset($arFields['PUBLIC_SECTION']) && $arFields['PUBLIC_SECTION'] == 'Y' ? 'Y' : 'N');
47 if (!isset($arFields['NOTIFY_TYPE']) || !in_array($arFields['NOTIFY_TYPE'], [self::TYPE_NORMAL, self::TYPE_ERROR]))
48 {
49 $arFields['NOTIFY_TYPE'] = self::TYPE_NORMAL;
50 }
51
52 $arFields_i = [
53 'MODULE_ID' => isset($arFields['MODULE_ID']) ? trim($arFields['MODULE_ID']) : "",
54 'TAG' => $arFields['TAG'],
55 'MESSAGE' => trim($arFields['MESSAGE']),
56 'ENABLE_CLOSE' => $arFields['ENABLE_CLOSE'],
57 'PUBLIC_SECTION' => $arFields['PUBLIC_SECTION'],
58 'NOTIFY_TYPE' => $arFields['NOTIFY_TYPE'],
59 ];
60 $ID = $DB->Add('b_admin_notify', $arFields_i, ['MESSAGE']);
61
62 if ($ID)
63 {
64 if (!empty($arFields['LANG']) && is_array($arFields['LANG']))
65 {
66 foreach ($arFields['LANG'] as $strLang => $strMess)
67 {
68 $arFields_l = [
69 'NOTIFY_ID' => $ID,
70 'LID' => $strLang,
71 'MESSAGE' => trim($strMess),
72 ];
73 $DB->Add('b_admin_notify_lang', $arFields_l, ['MESSAGE']);
74 }
75 }
76 }
77
79 return $ID;
80 }
81
82 private static function CheckFields($arFields)
83 {
84 $aMsg = [];
85
86 if (is_set($arFields, 'MODULE_ID') && trim($arFields['MODULE_ID']) == '')
87 {
88 $aMsg[] = ['id' => 'MODULE_ID', 'text' => GetMessage('MAIN_AN_ERROR_MODULE_ID')];
89 }
90 if (is_set($arFields, 'TAG') && trim($arFields['TAG']) == '')
91 {
92 $aMsg[] = ['id' => 'TAG', 'text' => GetMessage('MAIN_AN_ERROR_TAG')];
93 }
94 if (!is_set($arFields, 'MESSAGE') || trim($arFields['MESSAGE']) == '')
95 {
96 $aMsg[] = ['id' => 'MESSAGE', 'text' => GetMessage('MAIN_AN_ERROR_MESSAGE')];
97 }
98 if (is_set($arFields, 'ENABLE_CLOSE') && !($arFields['ENABLE_CLOSE'] == 'Y' || $arFields['ENABLE_CLOSE'] == 'N'))
99 {
100 $aMsg[] = ['id' => 'ENABLE_CLOSE', 'text' => GetMessage('MAIN_AN_ERROR_ENABLE_CLOSE')];
101 }
102
103 if (!empty($aMsg))
104 {
105 $e = new CAdminException($aMsg);
106 $GLOBALS['APPLICATION']->ThrowException($e);
107 return false;
108 }
109
110 return true;
111 }
112
113 public static function Delete($ID)
114 {
115 global $DB;
116 $ID = (int)$ID;
117 if ($ID <= 0)
118 {
119 return false;
120 }
121
122 $strSql = "DELETE FROM b_admin_notify_lang WHERE NOTIFY_ID = " . $ID;
123 $DB->Query($strSql);
124
125 $strSql = "DELETE FROM b_admin_notify WHERE ID = " . $ID;
126 $DB->Query($strSql);
127
129 return true;
130 }
131
132 public static function DeleteByModule($moduleId)
133 {
134 global $DB;
135
136 $strSql = "DELETE FROM b_admin_notify_lang WHERE NOTIFY_ID IN (SELECT ID FROM b_admin_notify WHERE MODULE_ID = '" . $DB->ForSQL($moduleId) . "')";
137 $DB->Query($strSql);
138
139 $strSql = "DELETE FROM b_admin_notify WHERE MODULE_ID = '" . $DB->ForSQL($moduleId) . "'";
140 $DB->Query($strSql);
141
143 return true;
144 }
145
146 public static function DeleteByTag($tagId)
147 {
148 global $DB;
149
150 $tagId = (string)$tagId;
151 if ($tagId == '')
152 {
153 return false;
154 }
155
156 $strSql = "DELETE FROM b_admin_notify_lang WHERE NOTIFY_ID IN (SELECT ID FROM b_admin_notify WHERE TAG like '%" . $DB->ForSQL($tagId) . "%')";
157 $DB->Query($strSql);
158
159 $strSql = "DELETE FROM b_admin_notify WHERE TAG like '%" . $DB->ForSQL($tagId) . "%'";
160 $DB->Query($strSql);
161
163 return true;
164 }
165
166 public static function GetHtml()
167 {
168 global $CACHE_MANAGER;
169 $arNotify = false;
170
171 if ($CACHE_MANAGER->Read(86400, "admin_notify_list_" . LANGUAGE_ID))
172 {
173 $arNotify = $CACHE_MANAGER->Get("admin_notify_list_" . LANGUAGE_ID);
174 }
175
176 if ($arNotify === false)
177 {
178 $arNotify = [];
179 $CBXSanitizer = new CBXSanitizer;
180 $CBXSanitizer->AddTags([
181 'a' => ['href', 'style'],
182 'b' => [],
183 'u' => [],
184 'i' => [],
185 'br' => [],
186 'span' => ['style'],
187 ]);
189 while ($ar = $dbRes->Fetch())
190 {
191 $ar["MESSAGE"] = $CBXSanitizer->SanitizeHtml(('' != $ar['MESSAGE_LANG'] ? $ar['MESSAGE_LANG'] : $ar['MESSAGE']));
192 $arNotify[] = $ar;
193 }
194 $CACHE_MANAGER->Set("admin_notify_list_" . LANGUAGE_ID, $arNotify);
195 }
196
197 $html = "";
198 foreach ($arNotify as $value)
199 {
200 $className = ($value['NOTIFY_TYPE'] == self::TYPE_ERROR ? 'adm-warning-block adm-warning-block-red' : 'adm-warning-block');
201 $html .= '<div class="' . $className . '" data-id="' . (int)$value['ID'] . '" data-ajax="Y"><span class="adm-warning-text">' . $value['MESSAGE'] . '</span><span class="adm-warning-icon"></span>' . ($value['ENABLE_CLOSE'] == 'Y' ? '<span onclick="BX.adminPanel ? BX.adminPanel.hideNotify(this.parentNode) : BX.admin.panel.hideNotify(this.parentNode);" class="adm-warning-close"></span>' : '') . '</div>';
202 }
203
204 return $html;
205 }
206
207 public static function GetList($arSort = [], $arFilter = [])
208 {
209 global $DB;
210
211 $arSqlSearch = [];
212
213 if (!is_array($arFilter))
214 {
215 $arFilter = [];
216 }
217 if (!isset($arFilter['LID']))
218 {
219 $arFilter['LID'] = LANGUAGE_ID;
220 }
221 if (!isset($arFilter['PUBLIC_SECTION']))
222 {
223 $arFilter['PUBLIC_SECTION'] = 'N';
224 }
225
226 $strFrom = '';
227 $strSelect = "AN.*";
228
229 if (is_array($arFilter))
230 {
231 foreach ($arFilter as $key => $val)
232 {
233 if ((string)$val == '' || $val == 'NOT_REF')
234 {
235 continue;
236 }
237 switch (strtoupper($key))
238 {
239 case 'ID':
240 $arSqlSearch[] = GetFilterQuery('AN.ID', $val, 'N');
241 break;
242 case 'MODULE_ID':
243 $arSqlSearch[] = GetFilterQuery('AN.MODULE_ID', $val);
244 break;
245 case 'TAG':
246 $arSqlSearch[] = GetFilterQuery('AN.TAG', $val);
247 break;
248 case 'MESSAGE':
249 $arSqlSearch[] = GetFilterQuery('AN.MESSAGE', $val);
250 break;
251 case 'ENABLE_CLOSE':
252 $arSqlSearch[] = ($val == 'Y') ? "AN.ENABLE_CLOSE='Y'" : "AN.ENABLE_CLOSE='N'";
253 break;
254 case 'LID':
255 $strSelect .= ", ANL.MESSAGE as MESSAGE_LANG";
256 $strFrom = 'LEFT JOIN b_admin_notify_lang ANL ON (AN.ID = ANL.NOTIFY_ID AND ANL.LID = \'' . $DB->ForSQL($val) . '\')';
257 break;
258 case 'PUBLIC_SECTION':
259 $arSqlSearch[] = ($val == 'Y') ? "AN.PUBLIC_SECTION='Y'" : "AN.PUBLIC_SECTION='N'";
260 }
261 }
262 }
263
264 $sOrder = '';
265 foreach ($arSort as $key => $val)
266 {
267 $ord = (strtoupper($val) <> 'ASC' ? 'DESC' : 'ASC');
268 switch (strtoupper($key))
269 {
270 case 'ID':
271 $sOrder .= ', AN.ID ' . $ord;
272 break;
273 case 'MODULE_ID':
274 $sOrder .= ', AN.MODULE_ID ' . $ord;
275 break;
276 case 'ENABLE_CLOSE':
277 $sOrder .= ', AN.ENABLE_CLOSE ' . $ord;
278 break;
279 }
280 }
281
282 if ($sOrder == '')
283 {
284 $sOrder = 'AN.ID DESC';
285 }
286
287 $strSqlOrder = ' ORDER BY ' . trim($sOrder, ', ');
288 $strSqlSearch = GetFilterSqlSearch($arSqlSearch);
289
290 $strSql = "SELECT " . $strSelect . " FROM b_admin_notify AN " . $strFrom . " WHERE " . $strSqlSearch . " " . $strSqlOrder;
291 $res = $DB->Query($strSql);
292
293 return $res;
294 }
295}
Определения admin_notify.php:6
static Delete($ID)
Определения admin_notify.php:113
const TYPE_ERROR
Определения admin_notify.php:8
const TYPE_NORMAL
Определения admin_notify.php:7
static GetHtml()
Определения admin_notify.php:166
static Add($arFields)
Определения admin_notify.php:22
static GetList($arSort=[], $arFilter=[])
Определения admin_notify.php:207
static CleanCache()
Определения admin_notify.php:10
static DeleteByModule($moduleId)
Определения admin_notify.php:132
static DeleteByTag($tagId)
Определения admin_notify.php:146
static GetList($by="sort", $order="asc", $arFilter=[])
Определения language.php:12
Определения sanitizer.php:23
AddTags($arTags)
Определения sanitizer.php:136
global $CACHE_MANAGER
Определения clear_component_cache.php:7
$arFields
Определения dblapprove.php:5
GetFilterQuery($field, $val, $procent="Y", $ex_sep=array(), $clob="N", $div_fields="Y", $clob_upper="N")
Определения filter_tools.php:383
if($ajaxMode) $ID
Определения get_user.php:27
$moduleId
global $DB
Определения cron_frame.php:29
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
Определения tools.php:3778
is_set($a, $k=false)
Определения tools.php:2133
GetMessage($name, $aReplace=null)
Определения tools.php:3397
$ar
Определения options.php:199
if(empty($signedUserToken)) $key
Определения quickway.php:257
$val
Определения options.php:1793
$GLOBALS['_____370096793']
Определения update_client.php:1
$arFilter
Определения user_search.php:106
$dbRes
Определения yandex_detail.php:168