PluginProbe
QuickWebP – WebP & AVIF Image Optimizer, Compression & SEO for WordPress / 3.0.0
QuickWebP – WebP & AVIF Image Optimizer, Compression & SEO for WordPress v3.0.0
4.1.2 4.1.1 4.1.0 4.0.1 4.0.0 3.3.1 3.3.0 trunk 1.0.0 2.0.0 2.1.0 3.0.0 3.1.0 3.2.0 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8
quickwebp / admin / class-wp-media-extends.php

class-wp-media-extends.php in QuickWebP – WebP & AVIF Image Optimizer, Compression & SEO for WordPress 3.0.0, at admin/class-wp-media-extends.php

241 lines 7.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * The class for wp_media extends
4 *
5 * @link http://webdeclic.com
6 * @since 1.0.0
7 *
8 * @package Quickwebp
9 * @subpackage Quickwebp/admin
10 */
11 class Quickwebp_Wp_Media_Extends {
12
13 /**
14 * The ID of this plugin.
15 *
16 * @since 1.0.0
17 * @access private
18 * @var string $plugin_name The ID of this plugin.
19 */
20 private $plugin_name;
21
22 /**
23 * The version of this plugin.
24 *
25 * @since 1.0.0
26 * @access private
27 * @var string $version The current version of this plugin.
28 */
29 private $version;
30
31 /**
32 * Initialize the class and set its properties.
33 *
34 * @since 1.0.0
35 * @param string $plugin_name The name of this plugin.
36 * @param string $version The version of this plugin.
37 */
38 public function __construct( $plugin_name, $version ) {
39
40 $this->plugin_name = $plugin_name;
41 $this->version = $version;
42
43 }
44
45 public function enqueue_scripts(){
46 global $pagenow;
47
48 if ( get_option('quickwebp_settings_paste_image', quickwebp_settings_default('quickwebp_settings_paste_image')) == '1' ){
49
50 $wp_media_extends_assets = include( QUICKWEBP_PLUGIN_PATH . 'public/assets/build/wp-media-extends.asset.php' );
51 wp_enqueue_style( 'quickwebp-wp-media-extends', QUICKWEBP_PLUGIN_URL . 'public/assets/build/wp-media-extends.css', array(), $wp_media_extends_assets['version'], 'all' );
52 wp_enqueue_script( 'quickwebp-wp-media-extends', QUICKWEBP_PLUGIN_URL . 'public/assets/build/wp-media-extends.js', $wp_media_extends_assets['dependencies'], $wp_media_extends_assets['version'], true );
53 wp_localize_script( 'quickwebp-wp-media-extends', 'quickwebp_wp_media_extends', array(
54 'is_upload_page' => $pagenow ? $pagenow === 'upload.php' : false,
55 'nonce' => wp_create_nonce( 'media-form' ),
56 'tmpl_tab_media_paste' => file_get_contents( QUICKWEBP_PLUGIN_PATH . 'admin/templates/tab-media-paste.php' ),
57 'tmpl_button_media_paste' => file_get_contents( QUICKWEBP_PLUGIN_PATH . 'admin/templates/button-media-paste.php' ),
58 'l10n' => array(
59 'prompt_text' => __( 'Please enter the name of your image', QUICKWEBP_TEXT_DOMAIN ),
60 'button_text' => __( 'Quickwebp paste image', QUICKWEBP_TEXT_DOMAIN ),
61 'click_paste' => __( 'Click here, and paste your image.', QUICKWEBP_TEXT_DOMAIN )
62 )
63 ));
64 }
65
66 $admin_attachment_assets = include( QUICKWEBP_PLUGIN_PATH . 'public/assets/build/admin-attachment.asset.php' );
67 wp_enqueue_style( 'quickwebp-admin-attachment', QUICKWEBP_PLUGIN_URL . 'public/assets/build/admin-attachment.css', array(), $admin_attachment_assets['version'], 'all' );
68 wp_enqueue_script( 'quickwebp-admin-attachment', QUICKWEBP_PLUGIN_URL . 'public/assets/build/admin-attachment.js', $admin_attachment_assets['dependencies'], $admin_attachment_assets['version'], true );
69 wp_localize_script( 'quickwebp-admin-attachment', 'QUICKWEBP_ADMIN_ATTACHMENT', array(
70 'nonce' => wp_create_nonce( 'quickwebp_admin_attachment' ),
71 'ajaxUrl' => admin_url( 'admin-ajax.php' )
72 ));
73 }
74
75 /**
76 * Add "Quickwebp" column in the Media Uploader
77 */
78 public function add_attachment_fields_to_edit( $form_fields, $post ) {
79 global $pagenow;
80
81 if ( 'post.php' === $pagenow ) {
82 return $form_fields;
83 }
84
85 if ( ! $this->valid_mimetype( $post->ID ) ) {
86 return $form_fields;
87 }
88
89 $data = get_post_meta( $post->ID, 'quickwebp_data', true );
90
91 if ( ! is_array( $data ) ) {
92
93 $html = $this->optimize_btn( $post->ID );
94
95 } else {
96
97 $html = $this->attachment_data( $data, $post->ID );
98 }
99
100 $form_fields['quickwebp'] = array(
101 'label' => 'Quickwebp',
102 'input' => 'html',
103 'html' => $html,
104 'show_in_edit' => true,
105 'show_in_modal' => true
106 );
107
108 return $form_fields;
109 }
110
111 /**
112 * Add "quickwebp" column in upload.php
113 */
114 public function add_media_columns( $columns ) {
115
116 $columns['quickwebp'] = __( 'Quickwebp', QUICKWEBP_TEXT_DOMAIN );
117
118 return $columns;
119 }
120
121 /**
122 * Add "Quickwebp" column in the Media list table
123 */
124 public function add_media_custom_column( $column_name, $attachment_id ) {
125
126 if ( 'quickwebp' !== $column_name ) {
127 return;
128 }
129
130 if ( ! $this->valid_mimetype( $attachment_id ) ) {
131 echo __( 'Image type not supported', QUICKWEBP_TEXT_DOMAIN );
132 return;
133 }
134
135 $data = get_post_meta( $attachment_id, 'quickwebp_data', true );
136
137 if ( ! is_array( $data ) ) {
138
139 echo $this->optimize_btn( $attachment_id );
140
141 } else {
142
143 echo $this->attachment_data( $data, $attachment_id );
144 }
145 }
146
147 /**
148 * Add a "Optimize" button or the Imagify optimization data in the attachment submit area.
149 */
150 public function add_attachment_submitbox_misc_actions() {
151 global $post;
152
153 if ( ! $this->valid_mimetype( $post->ID ) ) {
154 return;
155 }
156
157 $data = get_post_meta( $post->ID, 'quickwebp_data', true );
158
159 if ( ! is_array( $data ) ) {
160
161 echo '<table><tr><td>' . $this->optimize_btn( $post->ID ) . '</td></tr></table>';
162
163 } else {
164
165 echo '<table><tr><td>' . $this->attachment_data( $data, $post->ID ) . '</td></tr></table>';
166 }
167
168 }
169
170 /**
171 * Get all data to display for a specific media
172 */
173 public function attachment_data( $data, $attachment_id ) {
174
175 $full_image_data = $data['full'] ?? array();
176
177 if ( ! empty( $full_image_data ) ) {
178
179 ob_start();
180
181 ?>
182 <div>
183 <strong><?php _e( 'Original Image: ', QUICKWEBP_TEXT_DOMAIN ); ?></strong>
184 <span><?php echo round( $full_image_data['original_size'] / 1024, 2 ) . 'KB'; ?></span>
185 </div>
186 <div>
187 <strong><?php _e( 'Webp: ', QUICKWEBP_TEXT_DOMAIN ); ?></strong>
188 <span><?php echo round( $full_image_data['optimized_size'] / 1024, 2 ) . 'KB'; ?></span>
189 </div>
190 <div>
191 <strong><?php _e( 'Save: ', QUICKWEBP_TEXT_DOMAIN ); ?></strong>
192 <span><?php echo $full_image_data['percent'] . '%'; ?></span>
193 </div>
194 <div>
195 <button class="button button-sacondary quickwebp-undo-single-optimization-btn" data-attachment-id="<?php echo esc_attr( $attachment_id ); ?>">
196 <?php _e( 'Undo optimization', QUICKWEBP_TEXT_DOMAIN ); ?>
197 <div class="spinner"></div>
198 </button>
199 <div class="quickwebp-undo-single-optimization-msg"></div>
200 </div>
201 <?php
202
203 return ob_get_clean();
204 }
205
206 }
207
208 /**
209 * Display optimize button in the media uploader
210 */
211 public function optimize_btn( $attachment_id ) {
212
213 ob_start();
214
215 ?>
216 <button class="button button-sacondary quickwebp-single-optimization-btn" data-attachment-id="<?php echo esc_attr( $attachment_id ); ?>">
217 <?php _e( 'Optimize', QUICKWEBP_TEXT_DOMAIN ); ?>
218 <div class="spinner"></div>
219 </button>
220 <div class="quickwebp-single-optimization-msg"></div>
221 <?php
222
223 return ob_get_clean();
224 }
225
226 /**
227 * Check the mimetype of the file
228 */
229 public function valid_mimetype( $post_id ) {
230
231 // check the mime type
232 $image_optimizer = new Quickwebp_Image_Optimizer( $this->plugin_name, $this->version );
233 $mime_types = $image_optimizer->allowed_mime_types;
234 $index = array_search( 'image/webp', $mime_types );
235 unset( $mime_types[$index] );
236 $mime_type = get_post_mime_type( $post_id );
237
238 return in_array( $mime_type, $mime_types );
239 }
240
241 }