1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
filepreviewtable.php
См. документацию.
1<?php
2
4
11
28final class FilePreviewTable extends DataManager
29{
31 protected static $alreadyDeleted = [];
32
38 public static function getTableName()
39 {
40 return 'b_file_preview';
41 }
42
51 public static function getMap()
52 {
53 return [
54 new Fields\IntegerField('ID', [
55 'primary' => true,
56 'autocomplete' => true,
57 ]),
58 new Fields\IntegerField('FILE_ID', [
59 'required' => true,
60 ]),
61 new Fields\IntegerField('PREVIEW_ID'),
62 new Fields\IntegerField('PREVIEW_IMAGE_ID'),
63 new Fields\DatetimeField('CREATED_AT', [
64 'default_value' => function () {
65 return new DateTime();
66 },
67 ]),
68 new Fields\DatetimeField('TOUCHED_AT', [
69 'default_value' => function () {
70 return new DateTime();
71 },
72 ]),
73 new Fields\Relations\Reference('FILE',FileTable::class,
74 ['=this.FILE_ID' => 'ref.ID'],
75 ['join_type' => 'INNER']
76 ),
77 new Fields\Relations\Reference('PREVIEW',FileTable::class,
78 ['=this.PREVIEW_ID' => 'ref.ID'],
79 ['join_type' => 'LEFT']
80 ),
81 new Fields\Relations\Reference('PREVIEW_IMAGE',FileTable::class,
82 ['=this.PREVIEW_IMAGE_ID' => 'ref.ID'],
83 ['join_type' => 'LEFT']
84 ),
85 ];
86 }
87
88 public static function deleteOld($dayToDeath = 22, $portion = 20)
89 {
90 $deathTime = new Date();
91 $deathTime->add("-{$dayToDeath} day");
92
94 $filter = $query::filter()
95 ->logic('or')
96 ->whereNull('TOUCHED_AT')
97 ->where('TOUCHED_AT', '<', $deathTime)
98 ;
99
101 'select' => ['ID', 'PREVIEW_IMAGE_ID', 'PREVIEW_ID'],
102 'filter' => $filter,
103 'limit' => $portion,
104 ]);
105
106 foreach ($files as $file)
107 {
108 $keepImage = isset($file['PREVIEW_IMAGE_ID']);
109
110 self::deleteContent($file, $keepImage);
111 if (!$keepImage)
112 {
113 self::delete($file['ID']);
114 }
115 }
116 }
117
118 public static function deleteOldAgent($dayToDeath = 22, $portion = 20)
119 {
120 self::deleteOld($dayToDeath, $portion);
121
122 return "\\Bitrix\\Main\\UI\\Viewer\\FilePreviewTable::deleteOldAgent({$dayToDeath}, {$portion});";
123 }
124
125 public static function onDelete(Event $event)
126 {
127 $id = $event->getParameter('primary')['ID'];
128 if (isset(self::$alreadyDeleted[$id]))
129 {
130 return;
131 }
132
133 $file = self::getRowById($id);
134 if (!$file)
135 {
136 return;
137 }
138
139 self::deleteContent($file);
140 }
141
142 protected static function deleteContent(array $file, $keepImage = false)
143 {
144 if (isset(self::$alreadyDeleted[$file['ID']]))
145 {
146 return;
147 }
148
149 self::$alreadyDeleted[$file['ID']] = true;
150
151 \CFile::delete($file['PREVIEW_ID']);
152 \CFile::delete($file['PREVIEW_IMAGE_ID']);
153 }
154
163 public static function onFileDelete($bfile)
164 {
165 if (empty($bfile['ID']))
166 {
167 return;
168 }
169
170 $file = self::getRow([
171 'filter' => [
172 '=FILE_ID' => $bfile['ID'],
173 ]
174 ]);
175
176 if (!$file)
177 {
178 return;
179 }
180
181 self::deleteContent($file);
182 self::delete($file['ID']);
183 }
184}
Определения event.php:5
Определения file.php:45
static getRowById($id, array $parameters=[])
Определения datamanager.php:380
static getRow(array $parameters)
Определения datamanager.php:398
static getList(array $parameters=array())
Определения datamanager.php:431
static delete($primary)
Определения datamanager.php:1644
Определения date.php:9
static onFileDelete($bfile)
Определения filepreviewtable.php:163
static deleteOld($dayToDeath=22, $portion=20)
Определения filepreviewtable.php:88
static onDelete(Event $event)
Определения filepreviewtable.php:125
static deleteOldAgent($dayToDeath=22, $portion=20)
Определения filepreviewtable.php:118
static deleteContent(array $file, $keepImage=false)
Определения filepreviewtable.php:142
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$query
Определения get_search.php:11
$filter
Определения iblock_catalog_list.php:54
$files
Определения mysql_to_pgsql.php:30
$event
Определения prolog_after.php:141