1 <?php
2
3 4 5
6 class rex_media_cache
7 {
8 9 10 11 12
13 public static function delete($filename)
14 {
15 rex_file::delete(rex_path::addonCache('mediapool', $filename . '.media'));
16 rex_media::clearInstance($filename);
17 self::deleteLists();
18 }
19
20 21 22 23 24
25 public static function deleteCategory($category_id)
26 {
27 rex_file::delete(rex_path::addonCache('mediapool', $category_id . '.mcat'));
28 rex_media_category::clearInstance($category_id);
29 self::deleteCategoryLists();
30 }
31
32 33 34
35 public static function deleteLists()
36 {
37 $cachePath = rex_path::addonCache('mediapool');
38
39 $glob = glob($cachePath . '*.mlist');
40 if (is_array($glob)) {
41 foreach ($glob as $file) {
42 rex_file::delete($file);
43 }
44 }
45 rex_media_category::clearInstanceListPool();
46 }
47
48 49 50 51 52
53 public static function deleteList($category_id)
54 {
55 rex_file::delete(rex_path::addonCache('mediapool', $category_id . '.mlist'));
56 rex_media_category::clearInstanceList([$category_id, 'media']);
57 }
58
59 60 61
62 public static function deleteCategoryLists()
63 {
64 $cachePath = rex_path::addonCache('mediapool');
65
66 $glob = glob($cachePath . '*.mclist');
67 if (is_array($glob)) {
68 foreach ($glob as $file) {
69 rex_file::delete($file);
70 }
71 }
72 rex_media_category::clearInstanceListPool();
73 }
74
75 76 77 78 79
80 public static function deleteCategoryList($category_id)
81 {
82 rex_file::delete(rex_path::addonCache('mediapool', $category_id . '.mclist'));
83 rex_media_category::clearInstanceList([$category_id, 'children']);
84 }
85
86 87 88 89 90 91 92
93 public static function generate($filename)
94 {
95 $query = 'SELECT * FROM ' . rex::getTable('media') . ' WHERE filename = ?';
96 $sql = rex_sql::factory();
97
98 $sql->setQuery($query, [$filename]);
99
100 if ($sql->getRows() == 0) {
101 return false;
102 }
103
104 $cacheArray = [];
105 foreach ($sql->getFieldNames() as $fieldName) {
106 switch ($fieldName) {
107 case 'createdate':
108 case 'updatedate':
109 $cacheArray[$fieldName] = $sql->getDateTimeValue($fieldName);
110 break;
111 default:
112 $cacheArray[$fieldName] = $sql->getValue($fieldName);
113 }
114 }
115
116 $media_file = rex_path::addonCache('mediapool', $filename . '.media');
117 if (rex_file::putCache($media_file, $cacheArray)) {
118 return true;
119 }
120
121 return false;
122 }
123
124 125 126 127 128 129 130
131 public static function generateCategory($category_id)
132 {
133
134 if ($category_id < 0) {
135 return false;
136 }
137
138 $query = 'SELECT * FROM ' . rex::getTable('media_category') . ' WHERE id = ?';
139 $sql = rex_sql::factory();
140
141 $sql->setQuery($query, [$category_id]);
142
143 if ($sql->getRows() == 0) {
144 return false;
145 }
146
147 $cacheArray = [];
148 foreach ($sql->getFieldNames() as $fieldName) {
149 switch ($fieldName) {
150 case 'createdate':
151 case 'updatedate':
152 $cacheArray[$fieldName] = $sql->getDateTimeValue($fieldName);
153 break;
154 default:
155 $cacheArray[$fieldName] = $sql->getValue($fieldName);
156 }
157 }
158
159 $cat_file = rex_path::addonCache('mediapool', $category_id . '.mcat');
160 if (rex_file::putCache($cat_file, $cacheArray)) {
161 return true;
162 }
163
164 return false;
165 }
166
167 168 169 170 171 172 173
174 public static function generateList($category_id)
175 {
176
177 if ($category_id < 0) {
178 return false;
179 }
180
181 $query = 'SELECT filename FROM ' . rex::getTable('media') . ' WHERE category_id = ?';
182 $sql = rex_sql::factory();
183 $sql->setQuery($query, [$category_id]);
184
185 $cacheArray = [];
186 for ($i = 0; $i < $sql->getRows(); ++$i) {
187 $cacheArray[] = $sql->getValue('filename');
188 $sql->next();
189 }
190
191 $list_file = rex_path::addonCache('mediapool', $category_id . '.mlist');
192 if (rex_file::putCache($list_file, $cacheArray)) {
193 return true;
194 }
195
196 return false;
197 }
198
199 200 201 202 203 204 205
206 public static function generateCategoryList($category_id)
207 {
208
209 if ($category_id < 0) {
210 return false;
211 }
212
213 $query = 'SELECT id, cast( name AS SIGNED ) AS sort FROM ' . rex::getTable('media_category') . ' WHERE parent_id = ? ORDER BY sort, name';
214 $sql = rex_sql::factory();
215
216 $sql->setQuery($query, [$category_id]);
217
218 $cacheArray = [];
219 for ($i = 0; $i < $sql->getRows(); ++$i) {
220 $cacheArray[] = $sql->getValue('id');
221 $sql->next();
222 }
223
224 $list_file = rex_path::addonCache('mediapool', $category_id . '.mclist');
225 if (rex_file::putCache($list_file, $cacheArray)) {
226 return true;
227 }
228
229 return false;
230 }
231 }
232