1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
clearfilteragent.php
См. документацию.
1<?php
2
4
7
9{
10 protected const CLEAR_LOG_SELECT_LIMIT = 50000;
11 protected const CLEAR_LOG_DELETE_LIMIT = 1000;
12
13 public static function getName()
14 {
15 return static::class . '::execute();';
16 }
17
18 public static function execute()
19 {
20 $days = 180;
22 {
23 $days = (int)Main\Config\Option::get('bizproc', 'search_cleanup_days', 180);
24 }
25
26 static::clear($days);
27
28 return static::getName();
29 }
30
31 private static function clear(int $days): void
32 {
33 $connection = Application::getConnection();
34 $helper = $connection->getSqlHelper();
35 $limit = static::CLEAR_LOG_SELECT_LIMIT;
36 $partLimit = static::CLEAR_LOG_DELETE_LIMIT;
37 $sqlInterval = $helper->addDaysToDateTime(-1 * $days);
38
39 $strSql = "SELECT DISTINCT WORKFLOW_ID FROM b_bp_workflow_user "
40 . "WHERE WORKFLOW_STATUS = 1 AND MODIFIED < {$sqlInterval} LIMIT {$limit}";
41 $ids = $connection->query($strSql)->fetchAll();
42
43 if (!$ids)
44 {
45 return;
46 }
47
48 while ($partIds = array_splice($ids, 0, $partLimit))
49 {
50 $inSql = "'" . implode("','", array_column($partIds, 'WORKFLOW_ID')) . "'";
51 $connection->query(
52 sprintf(
53 'DELETE from b_bp_workflow_filter WHERE WORKFLOW_ID IN(%s)',
54 $inSql,
55 )
56 );
57 }
58 }
59}
$connection
Определения actionsdefinitions.php:38
static isModuleInstalled($moduleName)
Определения modulemanager.php:125