| @@ -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 »' ); ?></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 »' ); ?></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 »' ), | |
| 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 | -?> | |