1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
log_counter.php
См. документацию.
1<?php
2
6
8{
9 static $moduleManagerClass = ModuleManager::class;
10 static $logClass = CSocNetLog::class;
11 static $logCommentClass = CSocNetLogComments::class;
12 static $allowedClass = CSocNetAllowed::class;
13 static $optionClass = Option::class;
14 static $logRightTableClass = Bitrix\Socialnetwork\LogRightTable::class;
15 static $userTableClass = Bitrix\Main\UserTable::class;
16
17 public static function GetSubSelect2($entityId, array $arParams = [])
18 {
20 [
21 "LOG_ID" => $entityId,
22 "TYPE" => (
23 !empty($arParams["TYPE"])
24 ? $arParams["TYPE"]
26 ),
27 "CODE" => (
28 !empty($arParams["CODE"])
29 ? $arParams["CODE"]
30 : false
31 ),
32 "DECREMENT" => (bool) ($arParams["DECREMENT"] ?? false),
33 "FOR_ALL_ACCESS" => (bool) ($arParams["FOR_ALL_ACCESS"] ?? false),
34 "FOR_ALL_ACCESS_ONLY" => (bool) ($arParams["FOR_ALL_ACCESS_ONLY"] ?? false),
35 'WORKGROUP_MODE' => (bool) ($arParams['WORKGROUP_MODE'] ?? false),
36 "TAG_SET" => (
37 !empty($arParams["TAG_SET"])
38 ? $arParams["TAG_SET"]
39 : false
40 ),
41 "MULTIPLE" => (
42 !empty($arParams["MULTIPLE"])
43 && $arParams["MULTIPLE"] === "Y"
44 ? "Y"
45 : "N"
46 ),
47 "SET_TIMESTAMP" => (
48 !empty($arParams["SET_TIMESTAMP"])
49 && $arParams["SET_TIMESTAMP"] === "Y"
50 ? "Y"
51 : "N"
52 ),
53 "SEND_TO_AUTHOR" => (
54 !isset($arParams["SEND_TO_AUTHOR"])
55 || $arParams["SEND_TO_AUTHOR"] !== "Y"
56 ? "N"
57 : "Y"
58 ),
59 "USER_ID" => (
60 isset($arParams["USER_ID"])
61 && is_array($arParams["USER_ID"])
62 ? $arParams["USER_ID"]
63 : []
64 ),
65 ]
66 );
67 }
68
69 public static function GetSubSelect(
70 $counterEntityId,
71 $counterEntityType = '',
72 $logEntityId = false,
73 $logEventId = '',
74 $createdById = 0,
75 $entitiesList = null,
76 $adminList = false,
77 $transport = false,
78 $visible = "Y",
80 $params = array(),
81 $decrement = false,
82 $forAllAccess = false
83 )
84 {
85 global $DB;
87 $helper = $connection->getSqlHelper();
88
89 if (
90 is_array($counterEntityId)
91 && isset($counterEntityId["LOG_ID"])
92 )
93 {
94 $arFields = $counterEntityId;
95
96 $counterEntityId = (int)$arFields["LOG_ID"];
97 $counterEntityType = (string)($arFields["ENTITY_TYPE"] ?? '');
98 $logEventId = (string)($arFields["EVENT_ID"] ?? '');
99 $createdById = (int)($arFields["CREATED_BY_ID"] ?? 0);
101 $code = ($arFields["CODE"] ?? false);
102 $params = ($arFields["PARAMS"] ?? []);
103 $decrement = ($arFields["DECREMENT"] ?? false);
104 $multiple = (isset($arFields['MULTIPLE']) && $arFields['MULTIPLE'] === 'Y');
105 $setTimestamp = (isset($arFields['SET_TIMESTAMP']) && $arFields['SET_TIMESTAMP'] === 'Y');
106
107 $forAllAccessOnly = false;
108 if (isset($arFields["FOR_ALL_ACCESS_ONLY"]))
109 {
110 $forAllAccessOnly = ($arFields["FOR_ALL_ACCESS_ONLY"] ? "Y" : "N");
111 }
112
113 $forAllAccess = (
114 $forAllAccessOnly === 'Y'
115 ? true
116 : ($arFields["FOR_ALL_ACCESS"] ?? false)
117 );
118 $tagSet = ($arFields["TAG_SET"] ?? false);
119
120 $sendToAuthor = (
121 isset($arFields['SEND_TO_AUTHOR'])
122 && $arFields['SEND_TO_AUTHOR'] === 'Y'
123 );
124 $userIdListToIncrement = (
125 isset($arFields["USER_ID"])
126 && is_array($arFields["USER_ID"])
127 ? $arFields["USER_ID"]
128 : []
129 );
130 $workgroupMode = (bool)($arFields["WORKGROUP_MODE"] ?? false);
131 }
132 else
133 {
134 $sendToAuthor = false;
135 $forAllAccessOnly = false;
136 $multiple = false;
137 $tagSet = false;
138 $code = false;
139 $setTimestamp = false;
140 $userIdListToIncrement = [];
141 $workgroupMode = false;
142 }
143
144 $intranetInstalled = static::$moduleManagerClass::isModuleInstalled('intranet');
145 if ((int)$counterEntityId <= 0)
146 {
147 return '';
148 }
149
150 $arSocNetAllowedSubscribeEntityTypesDesc = static::$allowedClass::GetAllowedEntityTypesDesc();
151
152 if (!$code)
153 {
154 $code = CUserCounter::LIVEFEED_CODE . ($multiple ? $type.$counterEntityId : "");
155
156 if ($workgroupMode)
157 {
158 $code .= 'SG';
159 }
160
161 $code = "'" . $code . "'";
162 }
163
164 $params = (
165 is_array($params)
166 ? $params
167 : []
168 );
169
170 $params['CODE'] = (
171 !empty($params['CODE'])
172 ? $params['CODE']
173 : $code
174 );
175
176 if (
178 && ($arLog = static::$logClass::GetByID($counterEntityId))
179 )
180 {
181 $logId = $counterEntityId;
182 $counterEntityType = (string)$arLog["ENTITY_TYPE"];
183 $logEventId = (string)$arLog["EVENT_ID"];
184 $createdById = (int)$arLog["USER_ID"];
185 }
186 elseif (
188 && ($arLogComment = static::$logCommentClass::GetByID($counterEntityId))
189 )
190 {
191 $counterEntityType = (string)$arLogComment["ENTITY_TYPE"];
192 $logEventId = (string)$arLogComment["EVENT_ID"];
193 $createdById = (int)$arLogComment["USER_ID"];
194 $logId = $arLogComment["LOG_ID"]; // recalculate log_id
195 }
196 else
197 {
198 $logId = $counterEntityId;
199 }
200
201 if (
202 $logEventId === ''
203 || !in_array($counterEntityType, static::$allowedClass::GetAllowedEntityTypes(), true)
204 )
205 {
206 return '';
207 }
208
209 $logRightCodes = [];
210 $res = static::$logRightTableClass::getList([
211 'filter' => [
212 '=LOG_ID' => $logId,
213 ],
214 'select' => [ 'GROUP_CODE' ],
215 ]);
216 while ($logRightFields = $res->fetch())
217 {
218 $logRightCodes[] = $logRightFields['GROUP_CODE'];
219 }
220
221 $useUASubSelect = false;
222
223 $useFollow = (
224 !$workgroupMode
226 && (
227 !defined('DisableSonetLogFollow')
228 || DisableSonetLogFollow !== true
229 )
230 );
231
232 $defaultFollowValue = static::$optionClass::get('socialnetwork', 'follow_default_type', 'Y');
233
234 $followJoin = '';
235 $followWhere = '';
236
237 if ($useFollow)
238 {
239 if ($defaultFollowValue === 'Y')
240 {
241 $followWhere = "
242 AND (
243 NOT EXISTS (
244 SELECT USER_ID
245 FROM b_sonet_log_follow
246 WHERE
247 USER_ID = U.ID
248 AND TYPE = 'N'
249 AND (CODE = 'L" . $logId . "' OR CODE = '**')
250 )
251 OR EXISTS (
252 SELECT USER_ID
253 FROM b_sonet_log_follow
254 WHERE
255 USER_ID = U.ID
256 AND TYPE = 'Y' AND CODE = 'L" . $logId . "'
257 )
258 )
259 ";
260 }
261 else
262 {
263 $followJoin = '';
264
265 [ $join, $condition ] = static::getFollowJoin($logId, 'U.ID', 'positive');
266 $followJoin .= $join . ' AND ' . $condition . ' ';
267
268 [ $join, $condition ] = static::getFollowJoin($logId, 'U.ID', 'negative');
269 $followJoin .= $join . ' AND ' . $condition . ' ';
270
271 $wherePositive = static::getFollowWhere('positive');
272 $whereNegative = static::getFollowWhere('negative');
273
274 $followWhere = "
275 AND (LFW.USER_ID IS NOT NULL AND " . $wherePositive .")
276 AND " . $whereNegative . "
277 ";
278 }
279 }
280
281 $viewJoin = "
282 LEFT JOIN b_sonet_log_view LFV
283 ON
284 LFV.USER_ID = U.ID
285 AND LFV.EVENT_ID = '" . $DB->ForSql($logEventId) . "'";
286
287 $viewWhere = "AND (LFV.USER_ID IS NULL OR LFV.TYPE = 'Y')";
288
289 $logRightFilterValue = [];
290
291 if (!empty($userIdListToIncrement))
292 {
293 $userWhere = " AND U.ID IN (".implode(",", $userIdListToIncrement).")";
294 }
295 elseif ($workgroupMode)
296 {
297 $workgroupIdList = [];
298 foreach ($logRightCodes as $rightCode)
299 {
300 if (
301 !preg_match('/^SG(\d+)/i', $rightCode, $matches)
302 || (int)$matches[1] <= 0
303 )
304 {
305 continue;
306 }
307 $workgroupIdList[] = (int)$matches[1];
308 }
309
310 $workgroupIdList = array_unique($workgroupIdList);
311 if (empty($workgroupIdList))
312 {
313 return '';
314 }
315
316 $userWhere = "
317 AND SU2G.GROUP_ID IN (" . static::implodeArrayOfIntegers($workgroupIdList) . ")
318 AND SU2G.ROLE IN (" . static::implodeArrayOfStrings(UserToGroupTable::getRolesMember()) . ")
319 ";
320 }
321 elseif (!$intranetInstalled)
322 {
323 if (static::$optionClass::get('socialnetwork', 'sonet_log_smart_filter', 'N') === 'Y')
324 {
325 $userWhere = "
326 AND (
327 0=1
328 OR (
329 (
330 SLSF.USER_ID IS NULL
331 OR SLSF.TYPE = 'Y'
332 )
333 " . (!$forAllAccess ? ' AND (UA.ACCESS_CODE = SLR.GROUP_CODE)' : '') . "
334 AND (
335 SLR.GROUP_CODE LIKE 'SG%'
336 OR SLR.GROUP_CODE = " . $DB->Concat("'U'", 'U.ID') . "
337 )
338 )
339 OR (
340 SLSF.TYPE <> 'Y'
341 AND (
342 SLR.GROUP_CODE IN ('AU', 'G2')
343 " . (!$forAllAccess ? ' OR (UA.ACCESS_CODE = SLR.GROUP_CODE)' : '') . "
344 )
345 )
346 )
347 ";
348 }
349 else
350 {
351 $userWhere = "
352 AND (
353 0=1
354 OR (
355 (
356 SLSF.USER_ID IS NULL
357 OR SLSF.TYPE <> 'Y'
358 )
359 AND (
360 SLR.GROUP_CODE IN ('AU', 'G2')
361 " . ($forAllAccess ? '' : ' OR (UA.ACCESS_CODE = SLR.GROUP_CODE)') . "
362 )
363 )
364 OR (
365 SLSF.TYPE = 'Y'
366 " . ($forAllAccess ? '' : ' AND (UA.ACCESS_CODE = SLR.GROUP_CODE)') . "
367 AND (
368 SLR.GROUP_CODE LIKE 'SG%'
369 OR SLR.GROUP_CODE = " . $DB->Concat("'U'", 'U.ID') . "
370 )
371 )
372 )
373 ";
374 }
375 }
376 else
377 {
378 $userLogRightsIntersectCondition = '';
379 if (!$forAllAccess && $forAllAccessOnly !== 'Y')
380 {
381 foreach ($logRightCodes as $rightCode)
382 {
383 if (in_array($rightCode, [ 'AU', 'G2' ], true))
384 {
385 continue;
386 }
387
388 $logRightFilterValue[] = $rightCode;
389 }
390
391 $userLogRightsIntersectCondition = (
392 !empty($logRightFilterValue)
393 ? ' OR UA.ACCESS_CODE IN (' . static::implodeArrayOfStrings($logRightFilterValue) . ') '
394 : ' OR UA.ACCESS_CODE = SLR.GROUP_CODE '
395 );
396 }
397
398 if (
399 $useFollow
400 && $defaultFollowValue !== 'Y'
401 && !$forAllAccess
402 && $forAllAccessOnly !== 'Y'
403 && !empty($logRightFilterValue)
404 )
405 {
406 $useUASubSelect = true;
407
408 [ $join, $condition ] = static::getFollowJoin($logId, 'UA.USER_ID', 'positive');
409 $where = static::getFollowWhere('positive');
410
411 $userWhere = "
412 AND U.ID IN (
413 SELECT DISTINCT UA.USER_ID
414 FROM b_user_access UA
415 " . $join . "
416 WHERE
417 UA.ACCESS_CODE IN (" . static::implodeArrayOfStrings($logRightFilterValue) . ")
418 AND " . $where . "
419 AND " . $condition . "
420 )
421 ";
422
423 [ $join, $condition ] = static::getFollowJoin($logId, 'U.ID', 'negative');
424 $where = static::getFollowWhere('negative');
425
426 $followJoin = $join . ' AND ' . $condition . ' ';
427 $followWhere = " AND " . $where . " ";
428 }
429 else
430 {
431 $userWhere = "
432 AND (
433 0=1
434 " . (
435 $forAllAccessOnly !== 'N' || $forAllAccess
436 ? "OR (SLR.GROUP_CODE IN ('AU', 'G2'))"
437 : ''
438 ) . "
439 " . $userLogRightsIntersectCondition . "
440 )
441 ";
442 }
443 }
444
445 $userWhere = (
446 (
448 || (
449 array_key_exists("USE_CB_FILTER", $arSocNetAllowedSubscribeEntityTypesDesc[$counterEntityType])
450 && $arSocNetAllowedSubscribeEntityTypesDesc[$counterEntityType]["USE_CB_FILTER"] === "Y"
451 )
452 )
453 && $createdById > 0
454 && !$sendToAuthor
455 ? " AND U.ID <> " . $createdById
456 : ""
457 ) .
458 $userWhere;
459
460 $strSQL = '';
461
462 if ($workgroupMode)
463 {
464 $strSQL = "
465 SELECT DISTINCT
466 U.ID as ID
467 ," . ($decrement ? "-1" : "1") . " as CNT
468 , '**' as SITE_ID
469 ," . $DB->Concat($params['CODE'], 'SU2G.GROUP_ID') . " as CODE,
470 0 as SENT
471 " . ($tagSet ? ", '" . $DB->ForSQL($tagSet) . "' as TAG" : "") . "
472 " . ($setTimestamp ? ', ' . CDatabase::currentTimeFunction() . ' as TIMESTAMP_X' : '') . "
473 FROM
474 b_user U
475 INNER JOIN b_sonet_user2group SU2G ON SU2G.USER_ID = U.ID" .
476 $viewJoin . "
477 WHERE
478 U.ACTIVE = 'Y'
479 AND U.LAST_ACTIVITY_DATE IS NOT NULL
480 AND U.LAST_ACTIVITY_DATE > " . $helper->addDaysToDateTime(-14) . "
481 AND CASE WHEN U.EXTERNAL_AUTH_ID IN ('".implode("','", static::$userTableClass::getExternalUserTypes())."') THEN 'N' ELSE 'Y' END = 'Y'
482 " .
483 $userWhere . " " .
484 $viewWhere . "
485 ";
486 }
487 else
488 {
489 $strSQL = "
490 SELECT DISTINCT
491 U.ID as ID
492 ," . ($decrement ? "-1" : "1")." as CNT
493 , " .$DB->IsNull("SLS.SITE_ID", "'**'")." as SITE_ID
494 ," . $params['CODE']." as CODE,
495 0 as SENT
496 " . ($tagSet ? ", '".$DB->ForSQL($tagSet)."' as TAG" : "") . "
497 " . ($setTimestamp ? ', ' . CDatabase::currentTimeFunction() . ' as TIMESTAMP_X' : '') . "
498 FROM
499 b_user U
500 INNER JOIN b_sonet_log_right SLR ON SLR.LOG_ID = ".$logId."
501 " . (
502 !$forAllAccess && !$useUASubSelect
503 ? 'INNER JOIN b_user_access UA
504 ON UA.USER_ID = U.ID' .
505 (!empty($logRightFilterValue) ? ' AND (UA.ACCESS_CODE = SLR.GROUP_CODE)' : '')
506 : ''
507 )."
508 LEFT JOIN b_sonet_log_site SLS ON SLS.LOG_ID = SLR.LOG_ID
509 " . ($followJoin !== '' ? $followJoin : "") . "
510 " . $viewJoin . "
511 ".(!$intranetInstalled ? "LEFT JOIN b_sonet_log_smartfilter SLSF ON SLSF.USER_ID = U.ID " : "")."
512
513 WHERE
514 U.ACTIVE = 'Y'
515 AND U.LAST_ACTIVITY_DATE IS NOT NULL
516 AND U.LAST_ACTIVITY_DATE > " . $helper->addDaysToDateTime(-14) . "
517 AND CASE WHEN U.EXTERNAL_AUTH_ID IN ('".implode("','", static::$userTableClass::getExternalUserTypes())."') THEN 'N' ELSE 'Y' END = 'Y'
518 " .
519 $userWhere."
520 ".
521 $followWhere .
522 $viewWhere . "
523 ";
524 }
525
526 return $strSQL;
527 }
528
529 private static function isComment(string $type): bool
530 {
532 }
533
534 protected static function getFollowJoin(int $logId = 0, string $userIdReference = 'U.ID', string $mode = ''): array
535 {
536 if (!in_array($mode, [ 'positive', 'negative' ], true))
537 {
538 return [ '', '' ];
539 }
540
541 if ($mode === 'positive')
542 {
543 $join = "
544 INNER JOIN b_sonet_log_follow LFW
545 ON LFW.USER_ID = " . $userIdReference . "
546 ";
547
548 $condition = " (LFW.CODE = 'L" . $logId . "' OR LFW.CODE = '**') ";
549 }
550 else
551 {
552 $join = "
553 LEFT JOIN b_sonet_log_follow LFW2
554 ON LFW2.USER_ID = " . $userIdReference . "
555 ";
556
557 $condition = " (LFW2.CODE = 'L" . $logId . "' AND LFW2.TYPE = 'N') ";
558 }
559
560 return [ $join, $condition ];
561 }
562
563 protected static function getFollowWhere(string $mode = ''): string
564 {
565 if (!in_array($mode, [ 'positive', 'negative' ], true))
566 {
567 return '';
568 }
569
570 if ($mode === 'positive')
571 {
572 $result = " LFW.TYPE = 'Y' ";
573 }
574 else
575 {
576 $result = " LFW2.USER_ID IS NULL ";
577 }
578
579 return $result;
580 }
581
582 protected static function implodeArrayOfStrings(array $list = []): string
583 {
584 global $DB;
585
586 return implode(', ', array_map(static function($item) use ($DB) {
587 return "'" . $DB->forSql($item) . "'";
588 }, $list));
589 }
590
591 protected static function implodeArrayOfIntegers(array $list = []): string
592 {
593 return implode(', ', array_map(static function($item) {
594 return (int)$item;
595 }, $list));
596 }
597
599 public static function GetValueByUserID($user_id, $site_id = SITE_ID)
600 {
601 global $DB;
602 $user_id = (int)$user_id;
603
604 if ($user_id <= 0)
605 return false;
606
607 $strSQL = "
608 SELECT SUM(CNT) CNT
609 FROM b_sonet_log_counter
610 WHERE USER_ID = ".$user_id."
611 AND (SITE_ID = '".$site_id."' OR SITE_ID = '**')
612 AND CODE = '**'
613 ";
614
615 $dbRes = $DB->Query($strSQL);
616 if ($arRes = $dbRes->Fetch())
617 {
618 return $arRes["CNT"];
619 }
620
621 return 0;
622 }
623
625 public static function GetCodeValuesByUserID($user_id, $site_id = SITE_ID)
626 {
627 global $DB;
628 $result = array();
629 $user_id = (int)$user_id;
630
631 if($user_id > 0)
632 {
633 $strSQL = "
634 SELECT CODE, SUM(CNT) CNT
635 FROM b_sonet_log_counter
636 WHERE USER_ID = ".$user_id."
637 AND (SITE_ID = '".$site_id."' OR SITE_ID = '**')
638 GROUP BY CODE
639 ";
640
641 $dbRes = $DB->Query($strSQL);
642 while ($arRes = $dbRes->Fetch())
643 $result[$arRes["CODE"]] = $arRes["CNT"];
644 }
645
646 return $result;
647 }
648
650 public static function GetLastDateByUserAndCode($user_id, $site_id = SITE_ID, $code = "**")
651 {
652 global $DB;
653 $result = 0;
654 $user_id = (int)$user_id;
655
656 if($user_id > 0)
657 {
658 $strSQL = "
659 SELECT ".$DB->DateToCharFunction("LAST_DATE", "FULL")." LAST_DATE
660 FROM b_sonet_log_counter
661 WHERE USER_ID = ".$user_id."
662 AND (SITE_ID = '".$DB->ForSql($site_id)."' OR SITE_ID = '**')
663 AND CODE = '".$DB->ForSql($code)."'
664 ";
665
666 $dbRes = $DB->Query($strSQL);
667 if ($arRes = $dbRes->Fetch())
668 {
669 $result = MakeTimeStamp($arRes["LAST_DATE"]);
670 }
671 }
672
673 return $result;
674 }
675
677 public static function GetList($arFilter = Array(), $arSelectFields = [])
678 {
679 global $DB;
680
681 if (count($arSelectFields) <= 0)
682 {
683 $arSelectFields = array("LAST_DATE", "PAGE_SIZE", "PAGE_LAST_DATE_1");
684 }
685
686 // FIELDS -->
688 "USER_ID" => Array("FIELD" => "SLC.USER_ID", "TYPE" => "int"),
689 "SITE_ID" => Array("FIELD" => "SLC.SITE_ID", "TYPE" => "string"),
690 "CODE" => Array("FIELD" => "SLC.CODE", "TYPE" => "string"),
691 "LAST_DATE" => Array("FIELD" => "SLC.LAST_DATE", "TYPE" => "datetime"),
692 "PAGE_SIZE" => array("FIELD" => "SLC.PAGE_SIZE", "TYPE" => "int"),
693 "PAGE_LAST_DATE_1" => Array("FIELD" => "SLC.PAGE_LAST_DATE_1", "TYPE" => "datetime"),
694 );
695 // <-- FIELDS
696
697 $arSqls = CSocNetGroup::PrepareSql($arFields, array(), $arFilter, false, $arSelectFields);
698
699 $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
700
701 $strSql =
702 "SELECT ".$arSqls["SELECT"]." ".
703 "FROM b_sonet_log_counter SLC ".
704 " ".$arSqls["FROM"]." ";
705
706 if ($arSqls["WHERE"] <> '')
707 {
708 $strSql .= "WHERE ".$arSqls["WHERE"]." ";
709 }
710
711 return $DB->Query($strSql);
712 }
713}
$arParams
Определения access_dialog.php:21
$connection
Определения actionsdefinitions.php:38
$type
Определения options.php:106
static getConnection($name="")
Определения application.php:638
static getFollowJoin(int $logId=0, string $userIdReference='U.ID', string $mode='')
Определения log_counter.php:534
static $logCommentClass
Определения log_counter.php:11
static GetSubSelect( $counterEntityId, $counterEntityType='', $logEntityId=false, $logEventId='', $createdById=0, $entitiesList=null, $adminList=false, $transport=false, $visible="Y", $type=CSocNetLogCounter::TYPE_LOG_ENTRY, $params=array(), $decrement=false, $forAllAccess=false)
Определения log_counter.php:69
static $logRightTableClass
Определения log_counter.php:14
static $userTableClass
Определения log_counter.php:15
static $logClass
Определения log_counter.php:10
static GetLastDateByUserAndCode($user_id, $site_id=SITE_ID, $code="**")
Определения log_counter.php:650
static $allowedClass
Определения log_counter.php:12
static $moduleManagerClass
Определения log_counter.php:9
static GetSubSelect2($entityId, array $arParams=[])
Определения log_counter.php:17
static implodeArrayOfIntegers(array $list=[])
Определения log_counter.php:591
static GetCodeValuesByUserID($user_id, $site_id=SITE_ID)
Определения log_counter.php:625
static $optionClass
Определения log_counter.php:13
static GetValueByUserID($user_id, $site_id=SITE_ID)
Определения log_counter.php:599
static GetList($arFilter=Array(), $arSelectFields=[])
Определения log_counter.php:677
static getFollowWhere(string $mode='')
Определения log_counter.php:563
static implodeArrayOfStrings(array $list=[])
Определения log_counter.php:582
const TYPE_LOG_COMMENT
Определения log_counter.php:12
const TYPE_LOG_ENTRY
Определения log_counter.php:11
$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
$res
Определения filter_act.php:7
$result
Определения get_property_values.php:14
$adminList
Определения iblock_catalog_list.php:44
global $DB
Определения cron_frame.php:29
if(!is_null($config))($config as $configItem)(! $configItem->isVisible()) $code
Определения options.php:195
MakeTimeStamp($datetime, $format=false)
Определения tools.php:538
$entityId
Определения payment.php:4
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
</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
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']
Определения template.php:799
$matches
Определения index.php:22
$arRes
Определения options.php:104
$site_id
Определения sonet_set_content_view.php:9
const SITE_ID
Определения sonet_set_content_view.php:12
$arFilter
Определения user_search.php:106
$dbRes
Определения yandex_detail.php:168