1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
sticker.php
См. документацию.
1<?
3
5{
6 static $Params = null;
7 public static $TextParser;
8
9 public static function GetOperations()
10 {
11 global $USER;
12 static $arOp;
13
14 $userGroups = $USER->GetUserGroupArray();
15 $key = implode('-', $userGroups);
16
17 if (!is_array($arOp))
18 $arOp = array();
19
20 if (!is_array($arOp[$key] ?? null))
21 {
23 $arOp[$key] = array();
24 $bDefaultTask = false;
25
26 $count = 0;
27 foreach ($res as $group_id => $task_id)
28 if (in_array($group_id, $userGroups))
29 {
30 $arOp[$key] = array_merge($arOp[$key], CTask::GetOperations($task_id, true));
31 $count++;
32 }
33
34 if ($count < count($userGroups))
35 {
36 $defaultAccess = COption::GetOptionString('fileman', 'stickers_default_access', false);
37 if ($defaultAccess !== false)
38 $arOp[$key] = array_merge($arOp[$key], CTask::GetOperations($defaultAccess, true));
39 }
40 }
41 return $arOp[$key];
42 }
43
44 public static function CanDoOperation($operation)
45 {
46 if ($GLOBALS["USER"]->IsAdmin())
47 return true;
48
50 return in_array($operation, $arOp);
51 }
52
53
54 public static function GetAccessPermissions()
55 {
56 global $DB;
57
58 $strSql = 'SELECT * FROM b_sticker_group_task SGT';
59 $res = $DB->Query($strSql );
60
61 $arResult = array();
62 while($arRes = $res->Fetch())
63 $arResult[intval($arRes['GROUP_ID'])] = intval($arRes['TASK_ID']);
64
65 return $arResult;
66 }
67
68 public static function SaveAccessPermissions($arTaskPerm)
69 {
70 global $DB;
71 $DB->Query("DELETE FROM b_sticker_group_task WHERE 1=1");
72
73 foreach($arTaskPerm as $group_id => $task_id)
74 {
75 $arInsert = $DB->PrepareInsert("b_sticker_group_task", array("GROUP_ID" => $group_id, "TASK_ID" => $task_id));
76 $strSql = "INSERT INTO b_sticker_group_task(".$arInsert[0].") VALUES(".$arInsert[1].")";
77 $DB->Query($strSql );
78 }
79 }
80
81 public static function GetTasks()
82 {
83 $arTasks = Array();
84 $res = CTask::GetList(Array('LETTER' => 'asc'), Array('MODULE_ID' => 'fileman', 'BINDING' => 'stickers'));
85 while($arRes = $res->Fetch())
86 {
87 $name = '';
88 if ($arRes['SYS'])
89 $name = GetMessage('TASK_NAME_'.mb_strtoupper($arRes['NAME']));
90 if ($name == '')
91 $name = $arRes['TITLE'];
92 $arTasks[$arRes['ID']] = Array('title' => $name, 'letter' => $arRes['LETTER']);
93 }
94 return $arTasks;
95 }
96
97 public static function GetList($Params = array())
98 {
99 if (!CSticker::CanDoOperation('sticker_view'))
100 return false;
101
102 global $DB, $USER;
103 $bDBResult = isset($Params['bDBResult'])? $Params['bDBResult']: false;
104 $Params['arFilter']['PAGE_URL'] = str_replace(' ', '%20', $Params['arFilter']['PAGE_URL'] ?? '');
105 $arFilter = $Params['arFilter'];
106 $arOrder = isset($Params['arOrder']) ? $Params['arOrder'] : Array('ID' => 'asc');
107
108 // Cache
109 $cachePath = "stickers/";
110 $cacheTime = 36000000;
111 $bCache = true;
112
113 static $arFields = array(
114 "ID" => Array("FIELD_NAME" => "ST.ID", "FIELD_TYPE" => "int"),
115 "SITE_ID" => Array("FIELD_NAME" => "ST.SITE_ID", "FIELD_TYPE" => "string"),
116 "PAGE_URL" => Array("FIELD_NAME" => "ST.PAGE_URL", "FIELD_TYPE" => "string"),
117 "PAGE_TITLE" => Array("FIELD_NAME" => "ST.PAGE_TITLE", "FIELD_TYPE" => "string"),
118 "DATE_CREATE" => Array("FIELD_NAME" => "ST.DATE_CREATE", "FIELD_TYPE" => "date"),
119 "DATE_UPDATE" => Array("FIELD_NAME" => "ST.DATE_UPDATE", "FIELD_TYPE" => "date"),
120 "MODIFIED_BY" => Array("FIELD_NAME" => "ST.MODIFIED_BY", "FIELD_TYPE" => "int"),
121 "CREATED_BY" => Array("FIELD_NAME" => "ST.CREATED_BY", "FIELD_TYPE" => "int"),
122 "PERSONAL" => Array("FIELD_NAME" => "ST.PERSONAL", "FIELD_TYPE" => "string"),
123 "CONTENT" => Array("FIELD_NAME" => "ST.CONTENT ", "FIELD_TYPE" => "string"),
124 "POS_TOP" => Array("FIELD_NAME" => "ST.POS_TOP", "FIELD_TYPE" => "int"),
125 "POS_LEFT" => Array("FIELD_NAME" => "ST.POS_LEFT", "FIELD_TYPE" => "int"),
126 "WIDTH" => Array("FIELD_NAME" => "ST.WIDTH", "FIELD_TYPE" => "int"),
127 "HEIGHT" => Array("FIELD_NAME" => "ST.HEIGHT", "FIELD_TYPE" => "int"),
128 "COLOR" => Array("FIELD_NAME" => "ST.COLOR", "FIELD_TYPE" => "int"),
129
130 "COLLAPSED" => Array("FIELD_NAME" => "ST.COLLAPSED ", "FIELD_TYPE" => "string"),
131 "CLOSED" => Array("FIELD_NAME" => "ST.CLOSED ", "FIELD_TYPE" => "string"),
132 "DELETED" => Array("FIELD_NAME" => "ST.DELETED ", "FIELD_TYPE" => "string"),
133
134 "MARKER_TOP" => Array("FIELD_NAME" => "ST.MARKER_TOP", "FIELD_TYPE" => "int"),
135 "MARKER_LEFT" => Array("FIELD_NAME" => "ST.MARKER_LEFT", "FIELD_TYPE" => "int"),
136 "MARKER_WIDTH" => Array("FIELD_NAME" => "ST.MARKER_WIDTH", "FIELD_TYPE" => "int"),
137 "MARKER_HEIGHT" => Array("FIELD_NAME" => "ST.MARKER_HEIGHT", "FIELD_TYPE" => "int"),
138 "MARKER_ADJUST" => Array("FIELD_NAME" => "ST.MARKER_ADJUST", "FIELD_TYPE" => "string")
139 );
140
141 $arSqlSearch = array();
142 $strSqlSearch = "";
143
144 if ($bCache)
145 {
146 $cache = new CPHPCache;
147 $cacheId = serialize(array($arFilter, $bDBResult));
148 if(($tzOffset = CTimeZone::GetOffset()) <> 0)
149 $cacheId .= "_".$tzOffset;
150
151 if ($cache->InitCache($cacheTime, $cacheId, $cachePath))
152 {
153 $cachedRes = $cache->GetVars();
154 if (!empty($cachedRes['stickers']))
155 return $cachedRes['stickers'];
156 }
157 }
158
159 if(is_array($arFilter))
160 {
161 $filter_keys = array_keys($arFilter);
162 for($i=0, $l = count($filter_keys); $i<$l; $i++)
163 {
164 $n = mb_strtoupper($filter_keys[$i]);
165 $val = $arFilter[$filter_keys[$i]];
166 if(is_string($val) && $val == '')
167 continue;
168
169 if ($n == 'ID')
170 $arSqlSearch[] = GetFilterQuery("ST.ID", $val, 'N');
171 if ($n == 'PAGE_URL')
172 $arSqlSearch[] = GetFilterQuery("ST.PAGE_URL", $val, 'N');
173 if ($n == 'SITE_ID')
174 $arSqlSearch[] = GetFilterQuery("ST.SITE_ID", $val, 'N');
175 elseif(isset($arFields[$n]))
176 $arSqlSearch[] = GetFilterQuery($arFields[$n]["FIELD_NAME"], $val);
177 }
178 }
179
180 $strOrderBy = '';
181 foreach($arOrder as $by=>$order)
182 if(isset($arFields[mb_strtoupper($by)]))
183 $strOrderBy .= $arFields[mb_strtoupper($by)]["FIELD_NAME"].' '.(mb_strtolower($order) == 'desc'?'desc'.($DB->type == "ORACLE"?" NULLS LAST":""):'asc'.($DB->type == "ORACLE"?" NULLS FIRST":"")).',';
184
185 if($strOrderBy <> '')
186 $strOrderBy = "ORDER BY ".rtrim($strOrderBy, ",");
187
188 $strSqlSearch = GetFilterSqlSearch($arSqlSearch);
189 if (is_array($arFilter['COLORS'] ?? null))
190 {
191 $strColors = "";
192 for($i=0; $i < count($arFilter['COLORS']); $i++)
193 $strColors .= ",".intval($arFilter['COLORS'][$i]);
194 $strSqlSearch .= "\n AND COLOR in (".trim($strColors, ", ").")";
195 }
196
197 $strSql = "
198 SELECT
199 ST.*, ".$DB->DateToCharFunction("ST.DATE_UPDATE")." as DATE_UPDATE2,
200 ".$DB->DateToCharFunction("ST.DATE_CREATE")." as DATE_CREATE2
201 FROM
202 b_sticker ST
203 WHERE
204 $strSqlSearch
205 $strOrderBy";
206
207 $res = $DB->Query($strSql);
208
209 if ($arFilter['USER_ID'] > 0 || !$bDBResult)
210 {
211 $arResult = Array();
212 while($arRes = $res->Fetch())
213 {
214 if ($arFilter['USER_ID'] > 0 && $arRes['CREATED_BY'] != $arFilter['USER_ID'] &&
215 ($arRes['PERSONAL'] == 'Y'/* It's another user's personal sticker*/
216 || ($arFilter['ONLY_OWNER'] ?? null) == 'Y'/* display only owner's stickers*/))
217 continue;
218
219 if (!$bDBResult)
220 {
221 $arRes['AUTHOR'] = CSticker::GetUserName($arRes['CREATED_BY']);
222 $arRes['INFO'] = CSticker::GetStickerInfo($arRes['CREATED_BY'], $arRes['DATE_CREATE2'], $arRes['MODIFIED_BY'], $arRes['DATE_UPDATE2']);
223 $arRes['HTML_CONTENT'] = CSticker::BBParseToHTML($arRes['CONTENT']);
224 $arRes['MARKER_ADJUST'] = unserialize($arRes['MARKER_ADJUST'], ['allowed_classes' => false]);
225 }
226
227 $arResult[] = $arRes;
228 }
229
230 if ($bDBResult)
231 $res->InitFromArray($arResult);
232 }
233
234 if ($bDBResult)
235 $arResult = $res;
236
237 if ($bCache)
238 {
239 $cache->StartDataCache($cacheTime, $cacheId, $cachePath);
240 $cache->EndDataCache(array("stickers" => $arResult));
241 }
242
243 return $arResult;
244 }
245
246 public static function ClearCache()
247 {
248 global $CACHE_MANAGER;
249 $cache = new CPHPCache;
250 $cache->CleanDir("stickers/");
251 $CACHE_MANAGER->CleanDir("fileman_stickers_count");
252 }
253
254 public static function GetById($id)
255 {
256 global $USER;
258 array(
259 'arFilter' => array(
260 'USER_ID' => $USER->GetId(),
261 'ID' => intval($id),
262 )
263 ));
264 if ($res && is_array($res) && count($res) > 0)
265 return $res[0];
266 return false;
267 }
268
269 public static function GetPagesList($site)
270 {
271 if (!CSticker::CanDoOperation('sticker_view'))
272 return false;
273
274 global $USER, $DB;
275 $userId = $USER->GetId();
276
277 $cachePath = "stickers/";
278 $cacheTime = 36000000;
279 $bCache = true;
280
281 if ($bCache)
282 {
283 $cache = new CPHPCache;
284 $cacheId = 'page_list_'.$userId;
285
286 if ($cache->InitCache($cacheTime, $cacheId, $cachePath))
287 {
288 $cachedRes = $cache->GetVars();
289 if (!empty($cachedRes['page_list']))
290 return $cachedRes['page_list'];
291 }
292 }
293 $strSql = "
294 select PAGE_URL, PAGE_TITLE, max(DATE_UPDATE) as MAX_DATE_UPDATE
295 from b_sticker
296 where
297 DELETED='N'
298 AND SITE_ID='".$DB->ForSql($site)."'
299 AND ((PERSONAL='Y' AND CREATED_BY=".intval($userId).") OR PERSONAL='N')
300 group by PAGE_URL, PAGE_TITLE
301 order by MAX_DATE_UPDATE desc";
302
303 $strSql = $DB->TopSQL($strSql, 10);
304
305 $res = $DB->Query($strSql);
306
307 $arResult = array();
308 while($arRes = $res->Fetch())
309 $arResult[] = $arRes;
310
311 if ($bCache)
312 {
313 $cache->StartDataCache($cacheTime, $cacheId, $cachePath);
314 $cache->EndDataCache(array("page_list" => $arResult));
315 }
316
317 return $arResult;
318 }
319
320 public static function GetCurPageCount()
321 {
322 global $APPLICATION;
324 "PAGE_URL" => str_replace(' ', '%20', $APPLICATION->GetCurPage()),
325 "SITE_ID" => SITE_ID
326 ));
327 }
328
329 public static function GetCount($Params)
330 {
331 global $DB, $USER, $CACHE_MANAGER;
332 $userId = $USER->GetId();
333
334 $cacheId = 'stickers_count_'.$userId."_".$Params["PAGE_URL"];
335 $bCache = CACHED_stickers_count !== false;
336
337 if($bCache && $CACHE_MANAGER->Read(CACHED_stickers_count, $cacheId, "fileman_stickers_count"))
338 return $CACHE_MANAGER->Get($cacheId);
339
340 $strSqlSearch = "((ST.PERSONAL='Y' AND ST.CREATED_BY=".intval($userId).") OR ST.PERSONAL='N')";
341 $strSqlSearch .= "\n AND ST.CLOSED='N' AND ST.DELETED='N' AND ST.SITE_ID='".$DB->ForSql($Params['SITE_ID'])."'";
342
343 if ($Params["PAGE_URL"])
344 $strSqlSearch .= "\n AND ST.PAGE_URL='".$DB->ForSql($Params["PAGE_URL"])."'";
345
346 $strSql = "
347 SELECT
348 COUNT(ST.ID) as CNT
349 FROM
350 b_sticker ST
351 WHERE
352 $strSqlSearch";
353
354 $res = $DB->Query($strSql);
355
356 $count = 0;
357 if($arRes = $res->Fetch())
358 $count = $arRes['CNT'];
359
360 if ($bCache)
361 $CACHE_MANAGER->Set($cacheId, $count);
362
363 return $count;
364 }
365
366 public static function Edit($Params)
367 {
368 if (!CSticker::CanDoOperation('sticker_edit'))
369 return;
370
371 global $DB, $USER;
372 $arFields = $Params['arFields'];
373
375 return false;
376
377 $bNew = !isset($arFields['ID']) || $arFields['ID'] <= 0;
378
379 if (!isset($arFields['~DATE_UPDATE']))
380 $arFields['~DATE_UPDATE'] = $DB->CurrentTimeFunction();
381
382 if (!isset($arFields['MODIFIED_BY']))
383 $arFields['MODIFIED_BY'] = $USER->GetId();
384
385 if (!isset($arFields['SITE_ID']))
386 $arFields['SITE_ID'] = $_REQUEST['site_id'];
387
388 $arFields['PAGE_URL'] = str_replace(' ', '%20', $arFields['PAGE_URL']);
389
390 if ($bNew) // Add
391 {
392 if (!isset($arFields['CREATED_BY']))
393 $arFields['CREATED_BY'] = $arFields['MODIFIED_BY'];
394
395 if (!isset($arFields['~DATE_CREATE']))
396 $arFields['~DATE_CREATE'] = $arFields['~DATE_UPDATE'];
397
398 unset($arFields['ID']);
399
400 $ID = $DB->Add("b_sticker", $arFields, Array("CONTENT","MARKER_ADJUST"));
401 }
402 else // Update
403 {
404 $ID = $arFields['ID'];
405 unset($arFields['ID']);
406
407 $strUpdate = $DB->PrepareUpdate("b_sticker", $arFields);
408 $strSql =
409 "UPDATE b_sticker SET ".
410 $strUpdate.
411 " WHERE ID=".intval($ID);
412
413 $DB->QueryBind($strSql, Array("CONTENT" => $arFields["CONTENT"], "MARKER_ADJUST" => $arFields["MARKER_ADJUST"]));
414 }
415
417 return $ID;
418 }
419
420 public static function DeleteAll()
421 {
422 if (!CSticker::CanDoOperation('sticker_del'))
423 return GetMessage('FMST_DEL_ACCESS_ERROR');
424
425 global $DB;
426 if (!$DB->Query("DELETE FROM b_sticker WHERE 1=1"))
427 return GetMessage('FMST_REQ_ERROR');
428
430 return true;
431 }
432
433 public static function Delete($ids = array())
434 {
435 if (!is_array($ids))
436 $ids = array($ids);
437
438 if (!CSticker::CanDoOperation('sticker_del'))
439 return GetMessage('FMST_DEL_ACCESS_ERROR');
440
441 if (count($ids) == 0)
442 return GetMessage('FMST_NO_ITEMS_WARN');
443
444 global $DB;
445 $strIds = "";
446 for($i=0; $i < count($ids); $i++)
447 $strIds .= ",".intval($ids[$i]);
448 $strSql = "DELETE FROM b_sticker WHERE ID in (".trim($strIds, ", ").")";
449
450 if (!$DB->Query($strSql))
451 return GetMessage('FMST_REQ_ERROR');
452
454 return true;
455 }
456
457 public static function CheckFields()
458 {
459 return true;
460 }
461
462 public static function SetHiden($ids = array(), $bHide = false)
463 {
464 if (!is_array($ids))
465 $ids = array($ids);
466
467 if (!CSticker::CanDoOperation('sticker_edit'))
468 return GetMessage('FMST_EDIT_ACCESS_ERROR');
469
470 if (count($ids) == 0)
471 return GetMessage('FMST_NO_ITEMS_WARN');
472
473 global $DB;
474 $strIds = "";
475 for($i=0; $i < count($ids); $i++)
476 $strIds .= ",".intval($ids[$i]);
477
478 $arFields = array("CLOSED" => $bHide ? "Y" : "N");
479 $strUpdate = $DB->PrepareUpdate("b_sticker", $arFields);
480 $strSql =
481 "UPDATE b_sticker SET ".
482 $strUpdate.
483 " WHERE ID in (".trim($strIds, ", ").")";
484
485 if (!$DB->Query($strSql))
486 return GetMessage('FMST_REQ_ERROR');
487
489 return true;
490 }
491
492 public static function InitJS($Params)
493 {
494 global $APPLICATION, $USER;
495 CUtil::InitJSCore(array('window', 'ajax', 'date'));
496 $APPLICATION->AddHeadScript('/bitrix/js/fileman/sticker.js', true);
497 $APPLICATION->SetAdditionalCSS('/bitrix/js/fileman/sticker.css', true);
498
499 $pageUrl = $APPLICATION->GetCurPage();
500 $pageTitle = $APPLICATION->GetTitle();
501 if ($pageTitle == '')
502 $pageTitle = $pageUrl;
503
504 $listSize = CUtil::GetPopupSize("bx_sticker_list_resize_id", array("width" => 800, "height" => 450));
505 $size = explode("_", COption::GetOptionString("fileman", "stickers_start_sizes", "350_200"));
506 $min_width = 280;
507 $min_height = 160;
508 $JSConfig = array(
509 "access" => CSticker::CanDoOperation('sticker_edit') ? "W" : "R",
510 "sessid_get" => bitrix_sessid_get(),
511 "start_width" => $size[0] > $min_width ? $size[0] : $min_width,
512 "start_height" => $size[1] > $min_height ? $size[1] : $min_height,
513 "min_width" => $min_width,
514 "min_height" => $min_height,
515 "start_color" => CUserOptions::GetOption('fileman', "stickers_last_color", 0),
516 "zIndex" => 5000,
517 "curUserName" => CSticker::GetUserName(),
518 "curUserId" => $USER->GetId(),
519 "pageUrl" => $pageUrl,
520 "pageTitle" => $pageTitle,
521 "bShowStickers" => $Params['bInit'],
522 "listWidth" => $listSize['width'],
523 "listHeight" => $listSize['height'],
524 "listNaviSize" => CUserOptions::GetOption('fileman', "stickers_navi_size", 5),
525 "useHotkeys" => COption::GetOptionString('fileman', "stickers_use_hotkeys", "Y") == "Y",
526 "filterParams" => CSticker::GetFilterParams(),
527 "bHideBottom" => COption::GetOptionString("fileman", "stickers_hide_bottom", "Y") == "Y",
528 "focusOnSticker" => isset($_GET['show_sticker'])? intval($_GET['show_sticker']): 0,
529 "strDate" => FormatDate("j F", time()+CTimeZone::GetOffset()),
530 "curPageCount" => $Params['curPageCount'],
531 "site_id" => SITE_ID
532 );
533
534 if (!is_array($Params['stickers']))
535 $Params['stickers'] = array();
536
537 self::$Params = array("JSCONFIG" => $JSConfig, "STICKERS" => $Params['stickers']);
538 }
539
540 public static function InitJsAfter()
541 {
542 if(is_array(self::$Params))
543 {
544 return '<script>BX.ready(function(){'.CSticker::AppendLangMessages()." window.oBXSticker = new BXSticker(".CUtil::PhpToJSObject(self::$Params['JSCONFIG']).", ".CUtil::PhpToJSObject(self::$Params['STICKERS']).", BXST_MESS);});</script>";
545 }
546 }
547
548 public static function GetUserName($id = false)
549 {
550 global $USER;
551 static $arUsersCache = array();
552
553 if ($id !== false)
554 {
555 if (isset($arUsersCache[$id]))
556 return $arUsersCache[$id];
557
558 $rsu = CUser::GetByID($id);
559 if($arUser = $rsu->Fetch())
560 $arUsersCache[$id] = htmlspecialcharsback(CUser::FormatName(CSite::GetNameFormat(), $arUser));
561 else
562 $arUsersCache[$id] = '- Unknown -';
563 }
564 else
565 {
566 $id = $USER->GetId();
567 if (isset($arUsersCache[$id]))
568 return $arUsersCache[$id];
569
570 $arUsersCache[$id] = htmlspecialcharsback($USER->GetFormattedName());
571 }
572
573 return $arUsersCache[$id];
574 }
575
576 public static function AppendLangMessages()
577 {
578 return 'var BXST_MESS =
579{
580 Public : "'.GetMessage('FMST_TYPE_PUBLIC').'",
581 Personal : "'.GetMessage('FMST_TYPE_PERSONAL').'",
582 Close : "'.GetMessage('FMST_CLOSE').'",
583 Collapse : "'.GetMessage('FMST_COLLAPSE').'",
584 UnCollapse : "'.GetMessage('FMST_UNCOLLAPSE').'",
585 UnCollapseTitle : "'.GetMessage('FMST_UNCOLLAPSE_TITLE').'",
586 SetMarkerArea : "'.GetMessage('FMST_SET_MARKER_AREA').'",
587 SetMarkerEl : "'.GetMessage('FMST_SET_MARKER_ELEMENT').'",
588 Color : "'.GetMessage('FMST_COLOR').'",
589 Add : "'.GetMessage('FMST_ADD').'",
590 PersonalTitle : "'.GetMessage('FMST_TYPE_PERSONAL_TITLE').'",
591 PublicTitle : "'.GetMessage('FMST_TYPE_PUBLIC_TITLE').'",
592 CursorHint : "'.GetMessage('FMST_CURSOR_HINT').'",
593 Yellow : "'.GetMessage('FMST_COL_YELLOW').'",
594 Green : "'.GetMessage('FMST_COL_GREEN').'",
595 Blue : "'.GetMessage('FMST_COL_BLUE').'",
596 Red : "'.GetMessage('FMST_COL_RED').'",
597 Purple : "'.GetMessage('FMST_COL_PURPLE').'",
598 Gray : "'.GetMessage('FMST_COL_GREY').'",
599 StickerListTitle : "'.GetMessage('FMST_PANEL_STICKER_LIST').'",
600 CompleteLabel : "'.GetMessage('FMST_COMPLETE_LABEL').'",
601 DelConfirm : "'.GetMessage('FMST_LIST_DEL_CONFIRM').'",
602 CloseConfirm : "'.GetMessage('FMST_CLOSE_CONFIRM').'",
603 Complete : "'.GetMessage('FMST_COMPLETE').'",
604 CloseNotify : "'.GetMessage('FMST_CLOSE_MESSAGE').'"
605};';
606 }
607
608 public static function Init($Params = array())
609 {
610 global $APPLICATION, $USER;
611
612 if (!CSticker::CanDoOperation('sticker_view'))
613 return;
614 // Dectect - show stickers or No
615 $bGetStickers = CSticker::GetBShowStickers();
616
617 $Stickers = array();
618 if ($bGetStickers)
619 {
620 $Stickers = CSticker::GetList(array(
621 'arFilter' => array(
622 'USER_ID' => $USER->GetId(),
623 'PAGE_URL' => $APPLICATION->GetCurPage(),
624 'CLOSED' => 'N',
625 'DELETED' => 'N',
626 'SITE_ID' => SITE_ID
627 )
628 ));
629 }
630 else
631 {
632 $Stickers = array();
633 }
634
635 $curPageCount = isset($Params['curPageCount']) ? $Params['curPageCount'] : CSticker::GetCurPageCount();
636
638 'bInit' => $bGetStickers,
639 'stickers' => $Stickers,
640 'curPageCount' => $curPageCount
641 ));
642 }
643
644 public static function GetScriptStr($mode)
645 {
646 if ($mode == 'add')
647 return "if (window.oBXSticker){window.oBXSticker.AddSticker();}";
648 elseif($mode == 'list_cur')
649 return "if (window.oBXSticker){window.oBXSticker.ShowList('current');}";
650 elseif($mode == 'list_all')
651 return "if (window.oBXSticker){window.oBXSticker.ShowList('all');}";
652 elseif($mode == 'show')
653 return "if (window.oBXSticker){window.oBXSticker.ShowAll();}";
654 return '';
655 }
656
657 public static function GetBShowStickers()
658 {
659 if (isset($_SESSION["SESS_SHOW_STICKERS"]) && $_SESSION["SESS_SHOW_STICKERS"] == "Y")
660 return true;
661 if (isset($_GET['show_sticker']) && intval($_GET['show_sticker']) > 0)
662 return true;
663 return false;
664 }
665
666 public static function SetBShowStickers($bShow = false)
667 {
668 $_SESSION["SESS_SHOW_STICKERS"] = $bShow ? "Y" : "N";
669 return $bShow;
670 }
671
672 public static function BBParseToHTML($text, $bForList = false)
673 {
674 if ($text != "")
675 {
676 if (!is_object(self::$TextParser))
677 {
678 self::$TextParser = new CTextParser();
679 self::$TextParser->allow = array("HTML" => "N", "ANCHOR" => "Y", "BIU" => "Y", "IMG" => "N", "QUOTE" => "N", "CODE" => "N", "FONT" => "Y", "LIST" => "Y", "SMILES" => "N", "NL2BR" => "N", "VIDEO" => "N", "TABLE" => "N", "CUT_ANCHOR" => "N", "ALIGN" => "N");
680 }
681
682 $html = self::$TextParser->convertText($text);
683
684 if ($bForList)
685 {
686 $html = preg_replace(array(
687 "/\[st_title\](.+?)\[\/st_title\]/isu",
688 "/<br(.+?)>/isu",
689 "/<\/??ol(.+?)>/isu",
690 "/<\/??ul(.+?)>/isu",
691 "/<\/??li(.+?)>/isu",
692 "/<\/??w+(.+?)>/isu"
693 ), " ", $html);
694
695 $html = preg_replace(
696 array(
697 "/\[st_title\]/isu",
698 "/\[\/st_title\]/isu",
699 ),
700 "",
701 $html
702 );
703
704 if (mb_strlen($html) > 40)
705 $html = mb_substr($html, 0, 40)."...";
706 }
707 else
708 {
709 $html = preg_replace(
710 "/\[st_title\](.*?)\[\/st_title\]/isu",
711 "<span class=\"bxst-title\">\\1</span> ",
712 $html
713 );
714
715 // ?
716 $html = preg_replace(
717 array(
718 "/\[st_title\]/isu",
719 "/\[\/st_title\]/isu",
720 ),
721 "",
722 $html
723 );
724 }
725 }
726
727 return $html;
728 }
729
730 public static function GetStickerInfo($createdBy, $dateCreate, $modBy, $dateMod)
731 {
732 $str = GetMessage("FMST_CREATED").": <b>".htmlspecialcharsEx(CSticker::GetUserName($createdBy))."</b> ".CSticker::GetUsableDate($dateCreate).
733 "<br/>".
734 GetMessage("FMST_UPDATED").": <b>".htmlspecialcharsEx(CSticker::GetUserName($modBy))."</b> ".CSticker::GetUsableDate($dateMod);
735 return $str;
736 }
737
738 public static function GetUsableDate($d)
739 {
740 $ts = MakeTimeStamp(ConvertDateTime($d, "DD.MM.YYYY HH:MI"), "DD.MM.YYYY HH:MI");
741 return FormatDate("FULL", $ts);
742 }
743
744 public static function SetFilterParams($Filter)
745 {
746 CUserOptions::SetOption('fileman', "stickers_list_filter", serialize($Filter));
747 }
748
749 public static function GetFilterParams()
750 {
751 $result = array(
752 'type' => 'all',
753 'colors' => 'all',
754 'status' => 'opened',
755 'page' => 'all'
756 );
757
758 $res = CUserOptions::GetOption('fileman', "stickers_list_filter", false);
759 if ($res !== false && CheckSerializedData($res))
760 {
761 $Filter = unserialize($res, ['allowed_classes' => false]);
762 if (is_array($Filter))
763 {
764 if ($Filter['type'])
765 $result['type'] = $Filter['type'] == 'my' ? 'my' : 'all';
766 if (($Filter['status'] ?? null) && in_array($Filter['status'], array('all', 'opened', 'closed')))
767 $result['status'] = $Filter['status'];
768 if ($Filter['page'])
769 $result['page'] = $Filter['page'];
770 if ($Filter['colors'])
771 $result['colors'] = $Filter['colors'];
772 }
773 }
774
775 return $result;
776 }
777}
$count
Определения admin_tab.php:4
global $APPLICATION
Определения include.php:80
$arResult
Определения generate_coupon.php:16
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
Определения check_mail.php:18
static GetOperations($ID, $return_names=false)
Определения task.php:230
static GetList($arOrder=['MODULE_ID'=> 'asc', 'LETTER'=> 'asc'], $arFilter=[])
Определения task.php:185
Определения sticker.php:5
static GetCount($Params)
Определения sticker.php:329
static GetUserName($id=false)
Определения sticker.php:548
static GetAccessPermissions()
Определения sticker.php:54
static GetCurPageCount()
Определения sticker.php:320
static $TextParser
Определения sticker.php:7
static GetStickerInfo($createdBy, $dateCreate, $modBy, $dateMod)
Определения sticker.php:730
static Edit($Params)
Определения sticker.php:366
static $Params
Определения sticker.php:6
static GetScriptStr($mode)
Определения sticker.php:644
static Init($Params=array())
Определения sticker.php:608
static GetTasks()
Определения sticker.php:81
static GetUsableDate($d)
Определения sticker.php:738
static SetBShowStickers($bShow=false)
Определения sticker.php:666
static CheckFields()
Определения sticker.php:457
static DeleteAll()
Определения sticker.php:420
static GetOperations()
Определения sticker.php:9
static GetList($Params=array())
Определения sticker.php:97
static InitJS($Params)
Определения sticker.php:492
static GetPagesList($site)
Определения sticker.php:269
static BBParseToHTML($text, $bForList=false)
Определения sticker.php:672
static SetFilterParams($Filter)
Определения sticker.php:744
static GetById($id)
Определения sticker.php:254
static GetFilterParams()
Определения sticker.php:749
static SetHiden($ids=array(), $bHide=false)
Определения sticker.php:462
static AppendLangMessages()
Определения sticker.php:576
static ClearCache()
Определения sticker.php:246
static SaveAccessPermissions($arTaskPerm)
Определения sticker.php:68
static CanDoOperation($operation)
Определения sticker.php:44
static GetBShowStickers()
Определения sticker.php:657
static Delete($ids=array())
Определения sticker.php:433
static InitJsAfter()
Определения sticker.php:540
Определения textparser.php:21
global $CACHE_MANAGER
Определения clear_component_cache.php:7
$str
Определения commerceml2.php:63
$arFields
Определения dblapprove.php:5
for($fileNumber="";; $fileNumber++) $pageTitle
Определения file_new.php:204
</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
GetFilterSqlSearch($arSqlSearch=array(), $FilterLogic="FILTER_logic")
Определения filter_tools.php:397
GetFilterQuery($field, $val, $procent="Y", $ex_sep=array(), $clob="N", $div_fields="Y", $clob_upper="N")
Определения filter_tools.php:383
$_REQUEST["admin_mnu_menu_id"]
Определения get_menu.php:8
$result
Определения get_property_values.php:14
if($ajaxMode) $ID
Определения get_user.php:27
global $DB
Определения cron_frame.php:29
global $USER
Определения csv_new_run.php:40
$l
Определения options.php:783
$arTasks
Определения options.php:777
CheckSerializedData($str, $max_depth=200)
Определения tools.php:4949
ConvertDateTime($datetime, $to_format=false, $from_site=false, $bSearchInSitesOnly=false)
Определения tools.php:724
FormatDate($format="", $timestamp=false, $now=false, ?string $languageId=null)
Определения tools.php:871
htmlspecialcharsback($str)
Определения tools.php:2693
htmlspecialcharsEx($str)
Определения tools.php:2685
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
Определения tools.php:3778
GetMessage($name, $aReplace=null)
Определения tools.php:3397
MakeTimeStamp($datetime, $format=false)
Определения tools.php:538
bitrix_sessid_get($varname='sessid')
Определения tools.php:4695
$name
Определения menu_edit.php:35
$order
Определения payment.php:8
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
if(empty($signedUserToken)) $key
Определения quickway.php:257
$text
Определения template_pdf.php:79
$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
$arRes
Определения options.php:104
const SITE_ID
Определения sonet_set_content_view.php:12
$GLOBALS['_____370096793']
Определения update_client.php:1
$n
Определения update_log.php:107
$arFilter
Определения user_search.php:106
$site
Определения yandex_run.php:614