16 |
16 |
17 function page_Admin_CacheManager() |
17 function page_Admin_CacheManager() |
18 { |
18 { |
19 global $db, $session, $paths, $template, $plugins; // Common objects |
19 global $db, $session, $paths, $template, $plugins; // Common objects |
20 global $lang; |
20 global $lang; |
|
21 global $cache; |
21 if ( $session->auth_level < USER_LEVEL_ADMIN || $session->user_level < USER_LEVEL_ADMIN ) |
22 if ( $session->auth_level < USER_LEVEL_ADMIN || $session->user_level < USER_LEVEL_ADMIN ) |
22 { |
23 { |
23 $login_link = makeUrlNS('Special', 'Login/' . $paths->nslist['Special'] . 'Administration', 'level=' . USER_LEVEL_ADMIN, true); |
24 $login_link = makeUrlNS('Special', 'Login/' . $paths->nslist['Special'] . 'Administration', 'level=' . USER_LEVEL_ADMIN, true); |
24 echo '<h3>' . $lang->get('adm_err_not_auth_title') . '</h3>'; |
25 echo '<h3>' . $lang->get('adm_err_not_auth_title') . '</h3>'; |
25 echo '<p>' . $lang->get('adm_err_not_auth_body', array( 'login_link' => $login_link )) . '</p>'; |
26 echo '<p>' . $lang->get('adm_err_not_auth_body', array( 'login_link' => $login_link )) . '</p>'; |
26 return; |
27 return; |
27 } |
28 } |
28 |
29 |
|
30 // validation/actions |
|
31 if ( isset($_POST['refresh']) || isset($_POST['clear']) ) |
|
32 { |
|
33 $success = false; |
|
34 |
|
35 $target = ( isset($_POST['refresh']) ) ? $_POST['refresh'] : $_POST['clear']; |
|
36 $do_refresh = isset($_POST['refresh']); |
|
37 switch ( $target ) |
|
38 { |
|
39 case 'page': |
|
40 $success = $cache->purge('page_meta'); |
|
41 if ( $do_refresh && $success ) |
|
42 $success = $paths->update_metadata_cache(); |
|
43 break; |
|
44 case 'ranks': |
|
45 $success = $cache->purge('ranks'); |
|
46 if ( $do_refresh && $success ) |
|
47 $success = generate_cache_userranks(); |
|
48 break; |
|
49 case 'sidebar': |
|
50 $success = $cache->purge('anon_sidebar'); |
|
51 break; |
|
52 case 'plugins': |
|
53 $success = $cache->purge('plugins'); |
|
54 if ( $do_refresh && $success ) |
|
55 $success = $plugins->generate_plugins_cache(); |
|
56 break; |
|
57 case 'template': |
|
58 if ( $dh = opendir(ENANO_ROOT . '/cache') ) |
|
59 { |
|
60 while ( $file = @readdir($dh) ) |
|
61 { |
|
62 $fullpath = ENANO_ROOT . "/cache/$file"; |
|
63 // we don't want to mess with directories |
|
64 if ( !is_file($fullpath) ) |
|
65 continue; |
|
66 |
|
67 if ( preg_match('/\.(?:tpl|css)\.php$/', $file) ) |
|
68 { |
|
69 unlink($fullpath); |
|
70 } |
|
71 } |
|
72 $success = true; |
|
73 } |
|
74 break; |
|
75 case 'aes': |
|
76 $success = @unlink(ENANO_ROOT . '/cache/aes_decrypt.php'); |
|
77 break; |
|
78 case 'lang': |
|
79 if ( $dh = opendir(ENANO_ROOT . '/cache') ) |
|
80 { |
|
81 while ( $file = @readdir($dh) ) |
|
82 { |
|
83 $fullpath = ENANO_ROOT . "/cache/$file"; |
|
84 // we don't want to mess with directories |
|
85 if ( !is_file($fullpath) ) |
|
86 continue; |
|
87 |
|
88 if ( preg_match('/^lang_json_(?:[a-f0-9]+?)\.php$/', $file) || preg_match('/^(?:cache_)?lang_(?:[0-9]+?)\.php$/', $file) ) |
|
89 unlink($fullpath); |
|
90 } |
|
91 $success = true; |
|
92 } |
|
93 if ( $do_refresh && $success ) |
|
94 { |
|
95 // for each language in the database, call regen_caches() |
|
96 $q = $db->sql_query('SELECT lang_id FROM ' . table_prefix . 'language;'); |
|
97 if ( !$q ) |
|
98 $db->_die(); |
|
99 while ( $row = $db->fetchrow($q) ) |
|
100 { |
|
101 $lang_local = ( $row['lang_id'] == $lang->lang_id ) ? $lang : new Language($row['lang_id']); |
|
102 $success = $lang_local->regen_caches(); |
|
103 if ( !$success ) |
|
104 break 2; |
|
105 } |
|
106 } |
|
107 break; |
|
108 case 'js': |
|
109 if ( $dh = opendir(ENANO_ROOT . '/cache') ) |
|
110 { |
|
111 while ( $file = @readdir($dh) ) |
|
112 { |
|
113 $fullpath = ENANO_ROOT . "/cache/$file"; |
|
114 // we don't want to mess with directories |
|
115 if ( !is_file($fullpath) ) |
|
116 continue; |
|
117 |
|
118 // compressed javascript |
|
119 if ( preg_match('/^jsres_(?:[A-z0-9_-]+)\.js\.json$/', $file) ) |
|
120 unlink($fullpath); |
|
121 // tinymce stuff |
|
122 else if ( preg_match('/^tiny_mce_(?:[a-f0-9]+)\.gz$/', $file) ) |
|
123 unlink($fullpath); |
|
124 } |
|
125 $success = true; |
|
126 } |
|
127 break; |
|
128 case 'thumbs': |
|
129 if ( $dh = opendir(ENANO_ROOT . '/cache') ) |
|
130 { |
|
131 while ( $file = @readdir($dh) ) |
|
132 { |
|
133 $fullpath = ENANO_ROOT . "/cache/$file"; |
|
134 // we don't want to mess with directories |
|
135 if ( !is_file($fullpath) ) |
|
136 continue; |
|
137 |
|
138 if ( preg_match('/^(?:[a-z0-9\._,-]+)-(?:[0-9]{10})-[0-9]+x[0-9]+\.([a-z0-9_-]+)$/i', $file) ) |
|
139 unlink($fullpath); |
|
140 } |
|
141 $success = true; |
|
142 } |
|
143 break; |
|
144 case 'all': |
|
145 $success = purge_all_caches(); |
|
146 if ( $do_refresh ) |
|
147 { |
|
148 // |
|
149 // refresh all static (non-incremental) caches |
|
150 // |
|
151 |
|
152 // pages |
|
153 $success = $paths->update_metadata_cache(); |
|
154 if ( !$success ) |
|
155 break; |
|
156 |
|
157 // user ranks |
|
158 $success = generate_cache_userranks(); |
|
159 if ( !$success ) |
|
160 break; |
|
161 |
|
162 // plugins |
|
163 $success = $plugins->generate_plugins_cache(); |
|
164 if ( !$success ) |
|
165 break; |
|
166 |
|
167 // languages |
|
168 $q = $db->sql_query('SELECT lang_id FROM ' . table_prefix . 'language;'); |
|
169 if ( !$q ) |
|
170 $db->_die(); |
|
171 while ( $row = $db->fetchrow($q) ) |
|
172 { |
|
173 $lang_local = ( $row['lang_id'] == $lang->lang_id ) ? $lang : new Language($row['lang_id']); |
|
174 $success = $lang_local->regen_caches(); |
|
175 if ( !$success ) |
|
176 break 2; |
|
177 } |
|
178 } |
|
179 break; |
|
180 default: |
|
181 $code = $plugins->setHook('acp_cache_manager_action'); |
|
182 foreach ( $code as $cmd ) |
|
183 { |
|
184 eval($cmd); |
|
185 } |
|
186 break; |
|
187 } |
|
188 if ( $success ) |
|
189 { |
|
190 echo '<div class="info-box">' . $lang->get('acpcm_msg_action_success') . '</div>'; |
|
191 } |
|
192 else |
|
193 { |
|
194 echo '<div class="error-box">' . $lang->get('acpcm_err_action_failed') . '</div>'; |
|
195 } |
|
196 } |
|
197 else if ( isset($_POST['save']) ) |
|
198 { |
|
199 $config_value = ( isset($_POST['cache_thumbs']) ) ? '1' : '0'; |
|
200 setConfig('cache_thumbs', $config_value); |
|
201 echo '<div class="info-box">' . $lang->get('acpcm_msg_action_success') . '</div>'; |
|
202 } |
|
203 |
29 echo '<h3><img alt=" " src="' . scriptPath . '/images/icons/applets/cachemanager.png" /> ' . $lang->get('acpcm_heading_main') . '</h3>'; |
204 echo '<h3><img alt=" " src="' . scriptPath . '/images/icons/applets/cachemanager.png" /> ' . $lang->get('acpcm_heading_main') . '</h3>'; |
30 echo '<p>' . $lang->get('acpcm_intro') . '</p>'; |
205 echo '<p>' . $lang->get('acpcm_intro') . '</p>'; |
|
206 |
|
207 echo '<div class="warning-box">' . $lang->get('acpcm_msg_refresh_warning') . '</div>'; |
31 |
208 |
32 acp_start_form(); |
209 acp_start_form(); |
33 ?> |
210 ?> |
34 <div class="tblholder"> |
211 <div class="tblholder"> |
35 <table border="0" cellspacing="1" cellpadding="4"> |
212 <table border="0" cellspacing="1" cellpadding="4"> |
54 </td> |
231 </td> |
55 </tr> |
232 </tr> |
56 |
233 |
57 <!-- CLEAR ALL --> |
234 <!-- CLEAR ALL --> |
58 <tr> |
235 <tr> |
59 <td class="row2"> |
236 <td class="row2" style="width: 120px; text-align: center;"> |
60 <input type="submit" name="clear_all" value="<?php echo $lang->get('acpcm_btn_clear_all'); ?>" /> |
237 <button name="clear" value="all"><?php echo $lang->get('acpcm_btn_clear_all'); ?></button> |
61 </td> |
238 </td> |
62 <td class="row2"> |
239 <td class="row2"> |
63 <?php echo $lang->get('acpcm_hint_clear_all'); ?> |
240 <?php echo $lang->get('acpcm_hint_clear_all'); ?> |
64 </td> |
241 </td> |
65 </tr> |
242 </tr> |
66 |
243 |
|
244 <?php |
|
245 // if caching is disabled, might as well break off here |
|
246 if ( getConfig('cache_thumbs') == '1' ): |
|
247 ?> |
|
248 |
67 <!-- REFRESH ALL --> |
249 <!-- REFRESH ALL --> |
68 <tr> |
250 <tr> |
69 <td class="row1"> |
251 <td class="row1" style="text-align: center;"> |
70 <input type="submit" name="refresh_all" value="<?php echo $lang->get('acpcm_btn_refresh_all'); ?>" /> |
252 <button name="refresh" value="all"><?php echo $lang->get('acpcm_btn_refresh_all'); ?></button> |
71 </td> |
253 </td> |
72 <td class="row1"> |
254 <td class="row1"> |
73 <?php echo $lang->get('acpcm_hint_refresh_all'); ?> |
255 <?php echo $lang->get('acpcm_hint_refresh_all'); ?> |
74 </td> |
256 </td> |
75 </tr> |
257 </tr> |
|
258 |
|
259 <!-- INDIVIDUAL CACHES --> |
|
260 <tr> |
|
261 <th class="subhead" colspan="2"> |
|
262 <?php echo $lang->get('acpcm_th_individual_caches'); ?> |
|
263 </th> |
|
264 </tr> |
|
265 |
|
266 <?php |
|
267 $class = 'row2'; |
|
268 $cache_list = array('page', 'ranks', 'sidebar', 'plugins', 'template', 'aes', 'lang', 'js', 'thumbs'); |
|
269 $code = $plugins->setHook('acp_cache_manager_list_caches'); |
|
270 foreach ( $code as $cmd ) |
|
271 { |
|
272 eval($cmd); |
|
273 } |
|
274 foreach ( $cache_list as $target ) |
|
275 { |
|
276 $class = ( $class == 'row1' ) ? 'row2' : 'row1'; |
|
277 ?><tr> |
|
278 <td class="<?php echo $class; ?>" style="text-align: center;"> |
|
279 <button name="refresh" value="<?php echo $target; ?>"<?php if ( in_array($target, array('template', 'sidebar', 'aes', 'js', 'thumbs')) ) echo ' disabled="disabled"'; ?>> |
|
280 <?php echo $lang->get('acpcm_btn_refresh'); ?> |
|
281 </button> |
|
282 <button name="clear" value="<?php echo $target; ?>"> |
|
283 <?php echo $lang->get('acpcm_btn_clear'); ?> |
|
284 </button> |
|
285 </td> |
|
286 <td class="<?php echo $class; ?>"> |
|
287 <b><?php echo $lang->get("acpcm_cache_{$target}_desc_title"); ?></b> – |
|
288 <?php echo $lang->get("acpcm_cache_{$target}_desc_body"); ?> |
|
289 </td> |
|
290 </tr> |
|
291 <?php |
|
292 } |
|
293 |
|
294 // getConfig('cache_thumbs') == '1' |
|
295 endif; |
|
296 ?> |
76 |
297 |
77 <!-- SAVE CHANGES --> |
298 <!-- SAVE CHANGES --> |
78 <tr> |
299 <tr> |
79 <th colspan="2" class="subhead"> |
300 <th colspan="2" class="subhead"> |
80 <input type="submit" name="save" value="<?php echo $lang->get('etc_save_changes'); ?>" style="font-weight: bold;" /> |
301 <input type="submit" name="save" value="<?php echo $lang->get('etc_save_changes'); ?>" style="font-weight: bold;" /> |