| @@ -1,22 +1,32 @@ | ||
| 1 | -<?php if (!defined('WPO_VERSION')) die('No direct access allowed'); ?> | |
| 1 | +<?php if (!defined('ABSPATH')) die('No direct access allowed'); ?> | |
| 2 | + | |
| 3 | +<?php | |
| 4 | +if (isset($log->error)) { | |
| 5 | + ?> | |
| 6 | + <div class="wpo_min_file_error"><?php echo wp_kses_post($log->error); ?></div> | |
| 7 | + <?php | |
| 8 | + return; | |
| 9 | +} | |
| 10 | +?> | |
| 11 | + | |
| 2 | 12 | <h5><?php echo esc_html($log->header); ?></h5> |
| 3 | 13 | <ul><?php |
| 4 | 14 | foreach ((array) $log->files as $handle => $file) { |
| 5 | 15 | $file_path = untrailingslashit(get_home_path()) . $file->url; |
| 6 | - $file_size = file_exists($file_path) ? ' (' . WP_Optimize()->format_size(@filesize($file_path)) . ')' : ''; // phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged | |
| 16 | + $file_size = file_exists($file_path) ? ' (' . WP_Optimize()->format_size(@filesize($file_path)) . ')' : ''; // phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- suppress warning in case of file permission issues | |
| 7 | 17 | |
| 8 | - echo '<li'.($file->success ? '' : ' class="failed"').'><span class="wpo_min_file_url"><a href="'.esc_url(get_home_url().$file->url).'" target="_blank">'.htmlspecialchars($file->url).'</a>'.$file_size.'</span>'; | |
| 9 | - if (property_exists($file, 'debug')) echo '<span class="wpo_min_file_debug">'.htmlspecialchars($file->debug).'</span>'; | |
| 18 | + echo '<li'.($file->success ? '' : ' class="failed"').'><span class="wpo_min_file_url"><a href="'.esc_url(get_home_url().$file->url).'" target="_blank">'.esc_html($file->url).'</a>'.esc_html($file_size).'</span>'; | |
| 19 | + if (property_exists($file, 'debug')) echo '<span class="wpo_min_file_debug">'.esc_html($file->debug).'</span>'; | |
| 10 | 20 | echo ' <span class="wrapper">'; |
| 11 | - printf(' <a href="#" data-url="%1$s" class="exclude">%2$s</a>', htmlspecialchars($file->url), __('Exclude', 'wp-optimize')); | |
| 12 | - $minify_config = get_option('wpo_minify_config'); | |
| 21 | + printf(' <a href="#" data-url="%1$s" class="exclude">%2$s</a>', esc_attr($file->url), esc_html__('Exclude', 'wp-optimize')); | |
| 22 | + | |
| 13 | 23 | if (preg_match('/\.js$/i', $file->url, $matches)) { |
| 14 | - if ('individual' === $minify_config['enable_defer_js']) { | |
| 15 | - printf(' | <a href="#" data-url="%1$s" class="defer">%2$s</a>', htmlspecialchars($file->url), __('Defer loading', 'wp-optimize')); | |
| 24 | + if ('individual' === $minify_config['enable_defer_js'] && (property_exists($file, 'uses_loading_strategy') && !$file->uses_loading_strategy)) { | |
| 25 | + printf(' | <a href="#" data-url="%1$s" class="defer">%2$s</a>', esc_attr($file->url), esc_html__('Defer loading', 'wp-optimize')); | |
| 16 | 26 | } |
| 17 | 27 | } elseif (preg_match('/\.css$/i', $file->url, $matches)) { |
| 18 | - printf(' | <a href="#" data-url="%1$s" class="async">%2$s</a>', htmlspecialchars($file->url), __('Load asynchronously', 'wp-optimize')); | |
| 28 | + printf(' | <a href="#" data-url="%1$s" class="async">%2$s</a>', esc_attr($file->url), esc_html__('Load asynchronously', 'wp-optimize')); | |
| 19 | 29 | } |
| 20 | 30 | echo '</span></li>'; |
| 21 | 31 | } |
| 22 | 32 | ?> |