PluginProbe
Plus WebP or AVIF / 4.11
Plus WebP or AVIF v4.11
5.21 5.20 5.12 5.11 trunk 1.00 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.10 1.11 1.12 1.13 2.00 2.01 2.02 2.03 2.04 2.05 All 47 releases
← All changes | lib/class-pluswebpadmin.php +242 -195 1.044.11 View file →
@@ -32,14 +32,15 @@
32 32 * @since 1.00
33 33 */
34 34 public function __construct() {
35 35
36 + add_action( 'admin_init', array( $this, 'register_settings' ) );
37 +
36 38 add_action( 'admin_menu', array( $this, 'plugin_menu' ) );
37 - add_action( 'admin_enqueue_scripts', array( $this, 'load_custom_wp_admin_style' ) );
38 39 add_filter( 'plugin_action_links', array( $this, 'settings_link' ), 10, 2 );
39 40
40 - add_action( 'AllImagesRegenerateHook', array( $this, 'allimages_regenerate' ), 10, 1 );
41 -
41 + add_action( 'admin_enqueue_scripts', array( $this, 'admin_scripts' ), 10, 1 );
42 + add_action( 'rest_api_init', array( $this, 'register_rest' ) );
42 43 }
43 44
44 45 /** ==================================================
45 46 * Add a "Settings" link to the plugins page
@@ -54,9 +55,9 @@
54 55 if ( empty( $this_plugin ) ) {
55 56 $this_plugin = 'plus-webp/pluswebp.php';
56 57 }
57 58 if ( $file === $this_plugin ) {
58 - $links[] = '<a href="' . admin_url( 'tools.php?page=pluswebp' ) . '">' . esc_html__( 'Bulk Generate', 'plus-webp' ) . '</a>';
59 + $links[] = '<a href="' . admin_url( 'upload.php?page=plus-webp' ) . '">' . esc_html__( 'Settings' ) . ' & ' . esc_html__( 'Bulk Generate', 'plus-webp' ) . '</a>';
59 60 }
60 61 return $links;
61 62 }
62 63
@@ -65,156 +66,235 @@
65 66 *
66 67 * @since 1.00
67 68 */
68 69 public function plugin_menu() {
69 - add_management_page( 'Plus WebP', 'Plus WebP', 'manage_options', 'pluswebp', array( $this, 'plugin_options' ) );
70 +
71 + add_media_page(
72 + 'Plus WebP',
73 + 'Plus WebP',
74 + 'manage_options',
75 + 'plus-webp',
76 + array( $this, 'plus_webp_generate_setteings' )
77 + );
70 78 }
71 79
72 80 /** ==================================================
73 - * Add Css and Script
81 + * Generate and Settings page
74 82 *
75 - * @since 1.00
83 + * @since 4.00
76 84 */
77 - public function load_custom_wp_admin_style() {
78 - if ( $this->is_my_plugin_screen() ) {
79 - wp_enqueue_style( 'jquery-responsiveTabs', plugin_dir_url( __DIR__ ) . 'css/responsive-tabs.css', array(), '1.4.0' );
80 - wp_enqueue_style( 'jquery-responsiveTabs-style', plugin_dir_url( __DIR__ ) . 'css/style.css', array(), '1.4.0' );
81 - wp_enqueue_script( 'jquery' );
82 - wp_enqueue_script( 'jquery-responsiveTabs', plugin_dir_url( __DIR__ ) . 'js/jquery.responsiveTabs.min.js', array(), '1.4.0', false );
83 - wp_enqueue_script( 'pluswebp-admin-js', plugin_dir_url( __DIR__ ) . 'js/jquery.pluswebp.admin.js', array( 'jquery' ), array(), '1.00', false );
84 - }
85 + public function plus_webp_generate_setteings() {
86 +
87 + echo '<div id="plus-webp-page"></div>';
85 88 }
86 89
87 90 /** ==================================================
88 - * For only admin style
91 + * Load script
89 92 *
90 - * @since 1.00
93 + * @param string $hook_suffix hook_suffix.
94 + * @since 4.00
91 95 */
92 - private function is_my_plugin_screen() {
93 - $screen = get_current_screen();
94 - if ( is_object( $screen ) && 'tools_page_pluswebp' === $screen->id ) {
95 - return true;
96 - } else {
97 - return false;
96 + public function admin_scripts( $hook_suffix ) {
97 +
98 + if ( 'media_page_plus-webp' !== $hook_suffix ) {
99 + return;
98 100 }
101 +
102 + $asset_file = include plugin_dir_path( __DIR__ ) . 'guten/dist/plus-webp.asset.php';
103 +
104 + wp_enqueue_style(
105 + 'plus-webp-style',
106 + plugin_dir_url( __DIR__ ) . 'guten/dist/plus-webp.css',
107 + array( 'wp-components' ),
108 + '1.0.0',
109 + );
110 +
111 + wp_enqueue_script(
112 + 'plus-webp',
113 + plugin_dir_url( __DIR__ ) . 'guten/dist/plus-webp.js',
114 + $asset_file['dependencies'],
115 + $asset_file['version'],
116 + true
117 + );
118 +
119 + $pluswebp_settings = get_option( 'pluswebp' );
120 +
121 + list( $post_ids, $no_file_ids ) = apply_filters( 'pluswebp_get_allimages', $pluswebp_settings['types'] );
122 +
123 + $non_generate_description = null;
124 + if ( ! empty( $no_file_ids ) ) {
125 + /* translators: Count of no file Media */
126 + $non_generate_description = sprintf( __( 'Found %1$d media(id: %2$s), exists in the database, but the file does not, so the conversion is not performed.', 'plus-webp' ), count( $no_file_ids ), implode( ',', $no_file_ids ) );
127 + }
128 +
129 + wp_localize_script(
130 + 'plus-webp',
131 + 'pluswebpgenerate_data',
132 + array(
133 + 'bulk_label' => __( 'Bulk Generate', 'plus-webp' ),
134 + 'description_label' => __( 'To perform "Bulk Generate" after changing the following settings, press "Check" and then press "Generate".', 'plus-webp' ),
135 + 'wp_cli_label' => __( 'WP-CLI commands are available. If you have a large number of files, WP-CLI commands is more reliable. Command line options allow you to specify whether or not email is sent and the source media ID.', 'plus-webp' ),
136 + 'generate_label' => __( 'Generate', 'plus-webp' ),
137 + 'generate_description_label' => __( 'Notified by email with details of the generate results.', 'plus-webp' ),
138 + 'generate_end_label' => __( 'Generation has been completed.', 'plus-webp' ),
139 + 'stop_label' => __( 'Stop', 'plus-webp' ),
140 + 'check_label' => __( 'Check', 'plus-webp' ),
141 + /* translators: Count of Media */
142 + 'generate_description' => sprintf( __( 'Found %1$d media that can be generated.', 'plus-webp' ), count( $post_ids ) ),
143 + 'non_description' => __( 'Cannot find any media that can be generated.', 'plus-webp' ),
144 + 'non_generate_description' => $non_generate_description,
145 + 'title_label' => __( 'Title' ) . ': ',
146 + 'filename_label' => __( 'File name:' ) . ' ',
147 + 'datetime_label' => __( 'Date/Time' ) . ': ',
148 + 'filesize_label' => __( 'File size:' ) . ' ',
149 + 'post_ids' => wp_json_encode( $post_ids, JSON_UNESCAPED_SLASHES ),
150 + )
151 + );
152 +
153 + wp_localize_script(
154 + 'plus-webp',
155 + 'pluswebpsettings_data',
156 + array(
157 + 'settings_label' => __( 'Settings' ),
158 + 'quality_label' => __( 'Quality', 'plus-webp' ),
159 + 'lowreso_label' => __( 'low resolution', 'plus-webp' ),
160 + 'highreso_label' => __( 'high resolution', 'plus-webp' ),
161 + 'quality_description_label' => __( 'Specifies the quality of WebP. The higher the number, the better the quality and the larger the file size.', 'plus-webp' ),
162 + 'type_label' => __( 'Type' ),
163 + 'type_description_label' => __( 'Check the images you want to convert to WebP.', 'plus-webp' ),
164 + 'append_label' => __( 'Append the webp extension to the original filename', 'plus-webp' ),
165 + 'apply_label' => __( 'Apply' ),
166 + 'append_description_label' => __( 'Checking this setting, the extension webp will be appended to the name of the file, including the extension. Not checking, only the extension is changed.', 'plus-webp' ),
167 + 'replace_label' => __( 'WebP replacement of images and contents', 'plus-webp' ),
168 + 'replace_description_label' => __( 'Checking this setting will replace image files with WebP when adding new media, and delete the original image file. Also, when generating all images, the original image file ID will be overwritten as WebP and the original image file will be deleted. All URLs in the content are also replaced.', 'plus-webp' ),
169 + 'replace_advanced_description_label' => __( 'If you want to replace other databases besides content, use the "plus_webp_advanced_change_db" filter hook.', 'plus-webp' ),
170 + 'replace_advanced_link' => __( 'https://wordpress.org/plugins/plus-webp/', 'plus-webp' ),
171 + 'replace_advanced_text' => __( '"plus_webp_advanced_change_db" filter hook', 'plus-webp' ),
172 + 'settings' => wp_json_encode( $pluswebp_settings, JSON_UNESCAPED_SLASHES ),
173 + )
174 + );
175 +
176 + $this->credit_gutenberg( 'plus-webp' );
99 177 }
100 178
101 179 /** ==================================================
102 - * Settings page
180 + * Register Rest API
103 181 *
104 - * @since 1.00
182 + * @since 4.00
105 183 */
106 - public function plugin_options() {
184 + public function register_rest() {
107 185
108 - if ( ! current_user_can( 'manage_options' ) ) {
109 - wp_die( esc_html__( 'You do not have sufficient permissions to access this page.' ) );
110 - }
186 + register_rest_route(
187 + 'rf/plus-webp-generate_api',
188 + '/token',
189 + array(
190 + 'methods' => 'POST',
191 + 'callback' => array( $this, 'generate_api_save' ),
192 + 'permission_callback' => array( $this, 'rest_permission' ),
193 + ),
194 + );
111 195
112 - if ( isset( $_POST['Generatewebp'] ) && ! empty( $_POST['Generatewebp'] ) ) {
113 - if ( check_admin_referer( 'pwp_gnt', 'pluswebp_gnt' ) ) {
114 - $user = wp_get_current_user();
115 - $to = $user->user_email;
116 - $userid = $user->ID;
117 - // 30seconds
118 - wp_schedule_single_event( time() + 30, 'AllImagesRegenerateHook', array( $to ) );
119 - echo '<div class="notice notice-success is-dismissible"><ul><li>' . esc_html__( 'After 30 seconds background generation starts.', 'plus-webp' ) . '</li></ul></div>';
120 - }
121 - }
196 + register_rest_route(
197 + 'rf/plus-webp-settings_api',
198 + '/token',
199 + array(
200 + 'methods' => 'POST',
201 + 'callback' => array( $this, 'settings_api_save' ),
202 + 'permission_callback' => array( $this, 'rest_permission' ),
203 + ),
204 + );
205 + }
122 206
123 - $this->options_updated();
207 + /** ==================================================
208 + * Rest Permission
209 + *
210 + * @since 4.00
211 + */
212 + public function rest_permission() {
124 213
125 - $scriptname = admin_url( 'tools.php?page=pluswebp' );
126 - $pluswebp_settings = get_option( 'pluswebp' );
214 + return current_user_can( 'manage_options' );
215 + }
127 216
128 - ?>
217 + /** ==================================================
218 + * Rest API save for Generate
219 + *
220 + * @param object $request changed data.
221 + * @since 4.00
222 + */
223 + public function generate_api_save( $request ) {
129 224
130 - <div class="wrap">
131 - <h2>Plus WebP</h2>
225 + $args = json_decode( $request->get_body(), true );
132 226
133 - <div id="pluswebp-admin-tabs">
134 - <ul>
135 - <li><a href="#pluswebp-admin-tabs-1"><?php esc_html_e( 'Bulk Generate', 'plus-webp' ); ?></a></li>
136 - <li><a href="#pluswebp-admin-tabs-2"><?php esc_html_e( 'Settings' ); ?></a></li>
137 - <li><a href="#pluswebp-admin-tabs-3"><?php esc_html_e( 'Donate to this plugin &#187;' ); ?></a></li>
138 - </ul>
139 - <div id="pluswebp-admin-tabs-1">
140 - <div class="wrap">
141 - <h2><?php esc_html_e( 'Bulk Generate', 'plus-webp' ); ?></h2>
227 + $count = absint( $args['count'] );
228 + $max_count = absint( $args['max_count'] );
229 + $attach_id = absint( $args['post_id'] );
230 + $messages = get_option( 'pluswebp_messages', array() );
142 231
143 - <div style="margin: 5px; padding: 5px;">
144 - <p class="description">
145 - <?php esc_html_e( 'Press the following button to start WebP generation after 30 seconds in the background. When finished, you will receive an email.', 'plus-webp' ); ?>
146 - </p>
147 - </div>
232 + if ( $args['generate'] ) {
233 + $metadata_org = wp_get_attachment_metadata( $attach_id );
148 234
149 - <form method="post" action="<?php echo esc_url( $scriptname ); ?>">
150 - <?php wp_nonce_field( 'pwp_gnt', 'pluswebp_gnt' ); ?>
151 - <?php submit_button( __( 'Generate', 'plus-webp' ), 'primary', 'Generatewebp', true ); ?>
152 - </form>
153 - </div>
154 - </div>
235 + delete_option( 'pluswebp_generate' );
236 + do_action( 'wp_generate_attachment_metadata', $metadata_org, $attach_id );
237 + $webp_id = get_option( 'pluswebp_generate' );
238 + delete_option( 'pluswebp_generate' );
155 239
156 - <div id="pluswebp-admin-tabs-2">
157 - <div class="wrap">
158 - <h2><?php esc_html_e( 'Settings' ); ?></h2>
240 + if ( $webp_id ) {
241 + list( $tmp, $messages ) = apply_filters( 'pluswebp_mail_messages', $messages, $webp_id );
242 + update_option( 'pluswebp_messages', $messages );
243 + }
244 + if ( $count === $max_count ) {
245 + do_action( 'pluswebp_mail_generate_message', $messages, $max_count );
246 + delete_option( 'pluswebp_messages' );
247 + }
248 + } else {
249 + do_action( 'pluswebp_mail_generate_message', $messages, count( $messages ) );
250 + delete_option( 'pluswebp_messages' );
251 + }
159 252
160 - <form method="post" action="<?php echo esc_url( $scriptname ) . '#pluswebp-admin-tabs-2'; ?>">
161 - <?php wp_nonce_field( 'pwp_set', 'pluswebp_set' ); ?>
253 + return new WP_REST_Response( $args, 200 );
254 + }
162 255
163 - <div style="width: 100%; height: 100%; margin: 5px; padding: 5px; border: #CCC 2px solid;">
164 - <h3><?php esc_html_e( 'Quality', 'plus-webp' ); ?></h3>
165 - <div style="margin: 5px; padding: 5px;">
166 - <?php esc_html_e( 'low resolution', 'plus-webp' ); ?>
167 - <input type="range" style="vertical-align:middle;" name="quality" value="<?php echo esc_attr( $pluswebp_settings['quality'] ); ?>" min="0" max="100" step="1">
168 - <?php esc_html_e( 'high resolution', 'plus-webp' ); ?>
169 - <div style="margin: 5px; padding: 5px;">
170 - <p class="description">
171 - <?php esc_html_e( 'Specifies the quality of WebP. The higher the resolution, the larger the file size.', 'plus-webp' ); ?>
172 - </p>
173 - </div>
174 - </div>
175 - </div>
256 + /** ==================================================
257 + * Rest API save for Settings
258 + *
259 + * @param object $request changed data.
260 + * @since 4.00
261 + */
262 + public function settings_api_save( $request ) {
176 263
177 - <div style="width: 100%; height: 100%; margin: 5px; padding: 5px; border: #CCC 2px solid;">
178 - <h3><?php esc_html_e( 'WebP replacement of images and contents', 'plus-webp' ); ?></h3>
179 - <div style="margin: 5px; padding: 5px;">
180 - <input type="checkbox" name="replace" value="1" <?php checked( '1', $pluswebp_settings['replace'] ); ?>><?php esc_html_e( 'Apply' ); ?>
181 - <div style="margin: 5px; padding: 5px;">
182 - <p class="description">
183 - <?php esc_html_e( 'Checking this setting will replace image files with WebP when adding new media, and delete the original image file. Also, when generating all images, the original image file ID will be overwritten as WebP and the original image file will be deleted. All URLs in the content are also replaced.', 'plus-webp' ); ?>
184 - </p>
185 - </div>
186 - </div>
187 - </div>
264 + $args = json_decode( $request->get_body(), true );
188 265
189 - <?php submit_button( __( 'Save Changes' ), 'large', 'Manageset', false ); ?>
190 - </form>
191 - </div>
192 - </div>
266 + $options = array();
267 + $options['quality'] = intval( $args['quality'] );
268 + $options['types'] = filter_var(
269 + wp_unslash( $args['types'] ),
270 + FILTER_CALLBACK,
271 + array(
272 + 'options' => function ( $value ) {
273 + return sanitize_text_field( $value );
274 + },
275 + )
276 + );
277 + $options['addext'] = boolval( $args['addext'] );
278 + $options['replace'] = boolval( $args['replace'] );
193 279
194 - <div id="pluswebp-admin-tabs-3">
195 - <div class="wrap">
196 - <?php $this->credit(); ?>
197 - </div>
198 - </div>
280 + update_option( 'pluswebp', $options );
199 281
200 - </div>
201 -
202 - </div>
203 - <?php
282 + return new WP_REST_Response( $args, 200 );
204 283 }
205 284
206 285 /** ==================================================
207 - * Credit
286 + * Credit for Gutenberg
208 287 *
209 - * @since 1.00
288 + * @param string $handle handle.
289 + * @since 4.00
210 290 */
211 - private function credit() {
291 + private function credit_gutenberg( $handle ) {
212 292
213 293 $plugin_name = null;
214 294 $plugin_ver_num = null;
215 295 $plugin_path = plugin_dir_path( __DIR__ );
216 - $plugin_dir = untrailingslashit( $plugin_path );
296 + $plugin_dir = untrailingslashit( wp_normalize_path( $plugin_path ) );
217 297 $slugs = explode( '/', $plugin_dir );
218 298 $slug = end( $slugs );
219 299 $files = scandir( $plugin_dir );
220 300 foreach ( $files as $file ) {
@@ -238,101 +318,68 @@
238 318 }
239 319 }
240 320 }
241 321 }
242 - $plugin_version = esc_html__( 'Version:' ) . ' ' . $plugin_ver_num;
243 - $faq = esc_html__( 'https://wordpress.org/plugins/' . $slug . '/faq', $slug );
244 - $support = 'https://wordpress.org/support/plugin/' . $slug;
245 - $review = 'https://wordpress.org/support/view/plugin-reviews/' . $slug;
246 - $translate = 'https://translate.wordpress.org/projects/wp-plugins/' . $slug;
247 - $facebook = 'https://www.facebook.com/katsushikawamori/';
248 - $twitter = 'https://twitter.com/dodesyo312';
249 - $youtube = 'https://www.youtube.com/channel/UC5zTLeyROkvZm86OgNRcb_w';
250 - $donate = esc_html__( 'https://shop.riverforest-wp.info/donate/', $slug );
251 322
252 - ?>
253 - <span style="font-weight: bold;">
254 - <div>
255 - <?php echo esc_html__( $plugin_version ); ?> |
256 - <a style="text-decoration: none;" href="<?php echo esc_url( $faq ); ?>" target="_blank"><?php esc_html_e( 'FAQ' ); ?></a> | <a style="text-decoration: none;" href="<?php echo esc_url( $support ); ?>" target="_blank"><?php esc_html_e( 'Support Forums' ); ?></a> | <a style="text-decoration: none;" href="<?php echo esc_url( $review ); ?>" target="_blank"><?php esc_html_e( 'Reviews', $slug ); ?></a>
257 - </div>
258 - <div>
259 - <a style="text-decoration: none;" href="<?php echo esc_url( $translate ); ?>" target="_blank"><?php echo sprintf( esc_html__( 'Translations for %s' ), esc_html( $plugin_name ) ); ?></a> | <a style="text-decoration: none;" href="<?php echo esc_url( $facebook ); ?>" target="_blank"><span class="dashicons dashicons-facebook"></span></a> | <a style="text-decoration: none;" href="<?php echo esc_url( $twitter ); ?>" target="_blank"><span class="dashicons dashicons-twitter"></span></a> | <a style="text-decoration: none;" href="<?php echo esc_url( $youtube ); ?>" target="_blank"><span class="dashicons dashicons-video-alt3"></span></a>
260 - </div>
261 - </span>
262 -
263 - <div style="width: 250px; height: 180px; margin: 5px; padding: 5px; border: #CCC 2px solid;">
264 - <h3><?php esc_html_e( 'Please make a donation if you like my work or would like to further the development of this plugin.', $slug ); ?></h3>
265 - <div style="text-align: right; margin: 5px; padding: 5px;"><span style="padding: 3px; color: #ffffff; background-color: #008000">Plugin Author</span> <span style="font-weight: bold;">Katsushi Kawamori</span></div>
266 - <button type="button" style="margin: 5px; padding: 5px;" onclick="window.open('<?php echo esc_url( $donate ); ?>')"><?php esc_html_e( 'Donate to this plugin &#187;' ); ?></button>
267 - </div>
268 -
269 - <?php
270 -
323 + wp_localize_script(
324 + $handle,
325 + 'credit',
326 + array(
327 + 'links' => __( 'Various links of this plugin', 'plus-webp' ),
328 + 'plugin_version' => __( 'Version:' ) . ' ' . $plugin_ver_num,
329 + /* translators: FAQ Link & Slug */
330 + 'faq' => sprintf( __( 'https://wordpress.org/plugins/%1$s/faq', 'plus-webp' ), $slug ),
331 + 'support' => 'https://wordpress.org/support/plugin/' . $slug,
332 + 'review' => 'https://wordpress.org/support/view/plugin-reviews/' . $slug,
333 + 'translate' => 'https://translate.wordpress.org/projects/wp-plugins/' . $slug,
334 + /* translators: Plugin translation link */
335 + 'translate_text' => sprintf( __( 'Translations for %s' ), $plugin_name ),
336 + 'facebook' => 'https://www.facebook.com/katsushikawamori/',
337 + 'twitter' => 'https://twitter.com/dodesyo312',
338 + 'youtube' => 'https://www.youtube.com/channel/UC5zTLeyROkvZm86OgNRcb_w',
339 + 'donate' => __( 'https://shop.riverforest-wp.info/donate/', 'plus-webp' ),
340 + 'donate_text' => __( 'Please make a donation if you like my work or would like to further the development of this plugin.', 'plus-webp' ),
341 + 'donate_button' => __( 'Donate to this plugin &#187;' ),
342 + )
343 + );
271 344 }
272 345
273 346 /** ==================================================
274 - * Regenerate All Images ('image/jpeg','image/png','image/bmp','image/gif')
347 + * Settings register
275 348 *
276 - * @param string $to mail address.
277 349 * @since 1.00
278 350 */
279 - public function allimages_regenerate( $to ) {
351 + public function register_settings() {
280 352
281 - global $wpdb;
282 - $post_ids = $wpdb->get_col(
283 - "
284 - SELECT ID
285 - FROM $wpdb->posts
286 - WHERE post_type = 'attachment'
287 - AND post_mime_type IN('image/jpeg','image/png','image/bmp','image/gif')
288 - AND post_status = 'inherit'
289 - "
290 - );
291 -
292 - include_once ABSPATH . 'wp-admin/includes/image.php';
293 -
294 - foreach ( $post_ids as $attach_id ) {
295 - $postdate = get_the_date( 'Y-m-d H:i:s', $attach_id );
296 - $postdategmt = get_gmt_from_date( $postdate );
297 - $fullpath_filename = get_attached_file( $attach_id );
298 - $metadata = wp_get_attachment_metadata( $attach_id );
299 - do_action( 'wp_generate_attachment_metadata', $metadata, $attach_id );
300 - }
301 -
302 - $subject = sprintf( __( '[%s] WebP generate', 'plus-webp' ), get_option( 'blogname' ) );
303 - $message = __( 'Generation of WebP is complete.', 'plus-webp' ) . "\r\n\r\n";
304 -
305 - wp_mail( $to, $subject, $message );
306 -
307 - wp_clear_scheduled_hook( 'AllImagesRegenerateHook' );
308 -
309 - }
310 -
311 - /** ==================================================
312 - * Update wp_options table.
313 - *
314 - * @since 1.02
315 - */
316 - private function options_updated() {
317 -
318 - if ( isset( $_POST['Manageset'] ) && ! empty( $_POST['Manageset'] ) ) {
319 - if ( check_admin_referer( 'pwp_set', 'pluswebp_set' ) ) {
320 - $pluswebp_settings = get_option( 'pluswebp' );
321 - if ( isset( $_POST['replace'] ) && ! empty( $_POST['replace'] ) ) {
322 - $pluswebp_settings['replace'] = true;
323 - } else {
324 - $pluswebp_settings['replace'] = false;
325 - }
326 - if ( isset( $_POST['quality'] ) ) {
327 - $pluswebp_settings['quality'] = intval( $_POST['quality'] );
328 - }
353 + if ( get_option( 'pluswebp' ) ) {
354 + $pluswebp_settings = get_option( 'pluswebp' );
355 + /* 'types' from ver 1.08 */
356 + if ( ! array_key_exists( 'types', $pluswebp_settings ) ) {
357 + $pluswebp_settings['types'] = array(
358 + 'image/jpeg',
359 + 'image/png',
360 + 'image/bmp',
361 + 'image/gif',
362 + );
329 363 update_option( 'pluswebp', $pluswebp_settings );
330 - echo '<div class="notice notice-success is-dismissible"><ul><li>' . esc_html__( 'Settings' ) . ' --> ' . esc_html__( 'Settings saved.' ) . '</li></ul></div>';
331 364 }
365 + /* 'addext' from ver 1.13 */
366 + if ( ! array_key_exists( 'addext', $pluswebp_settings ) ) {
367 + $pluswebp_settings['addext'] = false;
368 + update_option( 'pluswebp', $pluswebp_settings );
369 + }
370 + } else {
371 + $pswp_tbl = array(
372 + 'quality' => 80,
373 + 'replace' => false,
374 + 'addext' => false,
375 + 'types' => array(
376 + 'image/jpeg',
377 + 'image/png',
378 + 'image/bmp',
379 + 'image/gif',
380 + ),
381 + );
382 + update_option( 'pluswebp', $pswp_tbl );
332 383 }
333 -
334 384 }
335 -
336 385 }
337 -
338 -?>