diff --git a/README.md b/README.md index 40b00a99..facb25e7 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Nginx Helper # +# EasyEngine Cache Helper for Nginx & Cloudflare (formerly Nginx Helper) # [![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active) **Contributors:** rtcamp, rahul286, saurabhshukla, manishsongirkar36, faishal, desaiuditd, darren-slatten, jk3us, daankortenbach, telofy, pjv, llonchj, jinnko, weskoop, bcole808, gungeekatx, rohanveer, chandrapatel, gagan0123, ravanh, michaelbeil, samedwards, niwreg, entr, nuvoPoint, iam404, rittesh.patel, vishalkakadiya, BhargavBhandari90, bryant1410, 1gor, matt-h, dotsam, nathanielks, rigagoogoo, dslatten, jinschoi, kelin1003, vaishuagola27, rahulsprajapati, utkarshpatel, gsayed786, shashwatmittal, sudhiryadav, thrijith, stayallive, jaredwsmith, abhijitrakas, umeshnevase, sid177, souptik, arafatkn, subscriptiongroup, akrocks, vedantgandhi28, GridPane, stefanfisk, SGr33n, agvs, diepbui4157, pratiklondhe, webdados, ghost, ravanh, tjalexander70, mrrobot47, alexliii, joelmcdwebworks, bozzmedia, millionleave, kubajosef, alexsina, tomeryatir, minzak, peterdowney01, rayeason, gnif @@ -17,7 +17,7 @@ **Donate Link:** http://rt.cx/eedonate -Cleans nginx's fastcgi/proxy cache or redis-cache whenever a post is edited/published. Also does a few more things. +Cleans nginx's fastcgi/proxy cache or redis-cache whenever a post is edited/published. Also provides cloudflare edge cache purging with Cache-Tags. ## Description ## @@ -25,6 +25,7 @@ Cleans nginx's fastcgi/proxy cache or redis-cache whenever a post is edited/publ 1. Adds support for purging redis-cache when used as full-page cache created using [nginx-srcache-module](https://github.com/openresty/srcache-nginx-module#caching-with-redis) 1. Adds support for nginx fastcgi_cache_purge & proxy_cache_purge directive from [module](https://github.com/FRiCKLE/ngx_cache_purge "ngx_cache_purge module"). Provides settings so you can customize purging rules. 1. Adds support for nginx `map{..}` on a WordPress-multisite network installation. Using it, Nginx can serve PHP file uploads even if PHP/MySQL crashes. Please check the tutorial list below for related Nginx configurations. +1. Add support for purging on Cloudflare Edge Cache with Cache-Tags. ### Tutorials ### @@ -78,12 +79,12 @@ Yes. It handles all post-types the same way. **Q. How can I purge cache automatically after WordPress/plugin/theme updates?** -By default, Nginx Helper does **not** purge cache on WordPress core, plugin, or theme updates. +By default, Nginx Helper does **not** purge cache on WordPress core, plugin, or theme updates. If you want this behavior, you can enable it using a filter: `add_filter( 'rt_wp_nginx_helper_enable_auto_purge_on_any_update', '__return_true' );` -Once enabled, cache will be purged automatically whenever WordPress core, plugins, or themes are updated. +Once enabled, cache will be purged automatically whenever WordPress core, plugins, or themes are updated. If left disabled (default), Nginx Helper will instead show an admin notice after updates, reminding you to purge cache manually. **Q. How do I know my Nginx config is correct for fastcgi purging?** @@ -127,6 +128,10 @@ This ensures customers always see up-to-date stock status and product informatio Note: This option will only be visible if WooCommerce is active. +**Q. What are the two different options for ngx_cache_purge module?** + +We have added support for two versions of the ngx_cache_purge module. The module developed by FRiCKLE is the original implementation that we have supported for a long time. We have now added support for a fork of the module developed by torden, which introduces Nginx module-level wildcard-based purging to help improve performance up to a certain level. You can purge it directly using the following format: `https://example.com/*` with the PURGE method, which will purge the cache of all descendants. + ### FAQ - Nginx Redis Cache ### **Q. Can I override the redis hostname, port and prefix?** @@ -172,6 +177,27 @@ Most likely yes. A wordpress plugin, if not using explicitly any Apache-only mod wp option patch update rt_wp_nginx_helper_options ``` +### FAQ - Cloudflare Edge Cache ### + +**Q. Why is the setup cache rule button not visible?** + +You need to enter the Zone ID and a API key to allow setting up the Cache Rule. + +**Q. Why is my cache rule setup failing?** + +Always ensure that the API key has the permissions listed in the description under the API Key field. If any of the permission is missing, we will not be able to set up the cache rule. + +**Q. What happens if I already have rulesets for Cloudflare Edge Cache?** + +The plugin will update those rules to add the required configuration. + +**Q. How can I purge the entire cache when Cloudflare Edge Cache is activated?** + +You can use the default Purge Entire Cache button on the settings page to purge the cache. It will purge the Nginx cache if it is activated as well as Cloudflare Edge Cache. + +**Q. How can I purge the cache of a single page only for Cloudflare Edge Cache?** + +If you are logged in as a user with purge permissions, you can purge a page by visiting it (for example, https://mydomain.com/my-page) and clicking the `Clear Cloudflare Edge Cache` button in the admin toolbar. ### Still need help! ### @@ -179,13 +205,13 @@ Please post your problem in [our free support forum](https://github.com/rtCamp/n ## Screenshots ## -### 1. Nginx plugin settings ### +### 1. Nginx settings ### -![Nginx plugin settings](https://ps.w.org/nginx-helper/assets/screenshot-1.png) +![Nginx plugin settings](wpassets/screenshot-1.png) -### 2. Remaining settings ### +### 2. Cloudflare settings ### -![Remaining settings](https://ps.w.org/nginx-helper/assets/screenshot-2.png) +![Remaining settings](wpassets/screenshot-2.png) ## Changelog ## diff --git a/admin/class-nginx-helper-admin.php b/admin/class-nginx-helper-admin.php index da385426..e8e5089c 100644 --- a/admin/class-nginx-helper-admin.php +++ b/admin/class-nginx-helper-admin.php @@ -9,7 +9,7 @@ * @subpackage nginx-helper/admin */ -use EasyCache\Cloudflare_Client; +use EECacheHelper\Cloudflare_Client; /** * The admin-specific functionality of the plugin. @@ -106,13 +106,9 @@ public function initialize_setting_tab() { 'rt_nginx_helper_settings_tabs', array( 'general' => array( - 'menu_title' => __( 'General', 'nginx-helper' ), + 'menu_title' => __( 'Nginx', 'nginx-helper' ), 'menu_slug' => 'general', ), - 'support' => array( - 'menu_title' => __( 'Support', 'nginx-helper' ), - 'menu_slug' => 'support', - ), 'cloudflare' => array( 'menu_title' => __( 'Cloudflare', 'nginx-helper' ), 'menu_slug' => 'cloudflare', @@ -196,8 +192,8 @@ public function nginx_helper_admin_menu() { add_submenu_page( 'settings.php', - __( 'Nginx Helper', 'nginx-helper' ), - __( 'Nginx Helper', 'nginx-helper' ), + __( 'EasyEngine Cache Helper for Nginx & Cloudflare', 'nginx-helper' ), + __( 'EasyEngine Cache Helper for Nginx & Cloudflare', 'nginx-helper' ), 'manage_options', 'nginx', array( &$this, 'nginx_helper_setting_page' ) @@ -207,8 +203,8 @@ public function nginx_helper_admin_menu() { add_submenu_page( 'options-general.php', - __( 'Nginx Helper', 'nginx-helper' ), - __( 'Nginx Helper', 'nginx-helper' ), + __( 'EasyEngine Cache Helper for Nginx & Cloudflare', 'nginx-helper' ), + __( 'EasyEngine Cache Helper for Nginx & Cloudflare', 'nginx-helper' ), 'manage_options', 'nginx', array( &$this, 'nginx_helper_setting_page' ) @@ -362,10 +358,10 @@ public function get_cloudflare_default_settings() { public function get_cloudflare_settings() { $default_settings = $this->get_cloudflare_default_settings(); - $stored_options = get_site_option( 'easycache_cf_settings', array() ); + $stored_options = get_site_option( 'easyengine_cache_manager_cf_settings', array() ); - if ( defined( 'EASYCACHE_CLOUDFLARE_API_TOKEN' ) && !empty( EASYCACHE_CLOUDFLARE_API_TOKEN ) ) { - $stored_options['api_token'] = EASYCACHE_CLOUDFLARE_API_TOKEN; + if ( defined( 'EASYENGINE_CACHE_MANAGER_CLOUDFLARE_API_TOKEN' ) && !empty( EASYENGINE_CACHE_MANAGER_CLOUDFLARE_API_TOKEN ) ) { + $stored_options['api_token'] = EASYENGINE_CACHE_MANAGER_CLOUDFLARE_API_TOKEN; $stored_options['api_token_enabled_by_constant'] = true; } @@ -384,11 +380,11 @@ public function get_cloudflare_settings() { public function store_cloudflare_settings() { $default_settings = $this->get_cloudflare_default_settings(); - $stored_options = get_site_option( 'easycache_cf_settings', array() ); + $stored_options = get_site_option( 'easyengine_cache_manager_cf_settings', array() ); $diff_options = wp_parse_args( $stored_options, $default_settings ); - add_site_option( 'easycache_cf_settings', $diff_options ); + add_site_option( 'easyengine_cache_manager_cf_settings', $diff_options ); } /** @@ -526,7 +522,7 @@ public function nginx_helper_get_feeds() { $rss_items = array(); // Get a SimplePie feed object from the specified feed source. - $rss = fetch_feed( 'https://rtcamp.com/blog/feed/' ); + $rss = fetch_feed( 'https://easyengine.io/blog/feed/' ); if ( ! is_wp_error( $rss ) ) { // Checks that the object is created correctly. @@ -614,7 +610,7 @@ public function add_timestamps() { } $timestamps = "\n\n" . ''; @@ -1208,15 +1204,15 @@ public function purge_product_cache_on_update( $product_id ) { * @return void */ public function handle_cf_cache_rule_update() { - $nonce = isset( $_POST['easycache_add_cache_rule_nonce'] ) ? wp_unslash( $_POST['easycache_add_cache_rule_nonce'] ) : ''; + $nonce = isset( $_POST['easyengine_cache_manager_add_cache_rule_nonce'] ) ? wp_unslash( $_POST['easyengine_cache_manager_add_cache_rule_nonce'] ) : ''; - if ( wp_verify_nonce( $nonce, 'easycache_add_cache_rule_nonce' ) ) { + if ( wp_verify_nonce( $nonce, 'easyengine_cache_manager_add_cache_rule_nonce' ) ) { if ( ! current_user_can( 'manage_options' ) ) { return; } - $result = EasyCache\Cloudflare_Client::setupCacheRule(); + $result = EECacheHelper\Cloudflare_Client::setupCacheRule(); set_transient( 'ec_page_rule_save_state_admin_notice', $result, 60 ); } @@ -1261,9 +1257,9 @@ public static function add_cloudflare_admin_bar_purge( $wp_admin_bar ) { } if ( ! empty( $_GET['message'] ) && 'ec-cleared-url-cache' === $_GET['message'] ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended - $title = esc_html__( 'URL Cache Cleared', 'easycache' ); + $title = esc_html__( 'URL Cache Cleared', 'nginx-helper' ); } else { - $title = esc_html__( 'Clear URL Cache', 'easycache' ); + $title = esc_html__( 'Clear Cloudflare Edge Cache', 'nginx-helper' ); } $request_uri = isset( $_SERVER['REQUEST_URI'] ) ? sanitize_text_field( $_SERVER['REQUEST_URI'] ) : ''; @@ -1272,7 +1268,7 @@ public static function add_cloudflare_admin_bar_purge( $wp_admin_bar ) { 'id' => 'clear-page-cache', 'title' => $title, 'meta' => [ - 'title' => __( 'Purge the current URL from Cloudflare cache.', 'easycache' ), + 'title' => __( 'Purge the current URL from Cloudflare cache.', 'nginx-helper' ), ], 'href' => wp_nonce_url( admin_url( 'admin-ajax.php?action=ec_clear_url_cache&path=' . rawurlencode( home_url( $request_uri ) ) ), 'ec-clear-url-cache' ), ] ); @@ -1288,17 +1284,17 @@ public static function handle_cloudflare_clear_cache_ajax() { if ( empty( $nonce ) || ! wp_verify_nonce( $nonce, 'ec-clear-url-cache' ) || ! current_user_can( 'manage_options' ) ) { - wp_die( esc_html__( "You shouldn't be doing this.", 'easycache' ) ); + wp_die( esc_html__( "You shouldn't be doing this.", 'nginx-helper' ) ); } $path = isset( $_GET['path'] ) ? esc_url_raw( $_GET['path'] ) : ''; if ( empty( $path ) ) { - wp_die( esc_html__( 'No path provided.', 'easycache' ) ); + wp_die( esc_html__( 'No path provided.', 'nginx-helper' ) ); } $ret = Cloudflare_Client::purgeByUrls( [ $path ] ); if ( ! $ret ) { - wp_die( esc_html__( 'Failed to clear URL cache.', 'easycache' ) ); + wp_die( esc_html__( 'Failed to clear URL cache.', 'nginx-helper' ) ); } wp_safe_redirect( add_query_arg( 'message', 'ec-cleared-url-cache', $path ) ); diff --git a/admin/css/nginx-helper-admin.css b/admin/css/nginx-helper-admin.css index ddf47ce4..8a54d916 100644 --- a/admin/css/nginx-helper-admin.css +++ b/admin/css/nginx-helper-admin.css @@ -36,8 +36,9 @@ pre#map { padding: 10px; } .wrap h2.rt_option_title { - background: url(../icons/nginx-icon-32x32.png) 0 6px no-repeat rgba(0, 0, 0, 0); + background: url(../icons/icon-64x64.png) 0 6px no-repeat rgba(0, 0, 0, 0); padding-left: 40px; + background-size: 36px 36px; } #poststuff h2 { padding: 0 0 0 10px; diff --git a/admin/icons/icon-64x64.png b/admin/icons/icon-64x64.png new file mode 100644 index 00000000..50caa422 Binary files /dev/null and b/admin/icons/icon-64x64.png differ diff --git a/admin/icons/nginx-icon-32x32.png b/admin/icons/nginx-icon-32x32.png deleted file mode 100644 index d3e4b12e..00000000 Binary files a/admin/icons/nginx-icon-32x32.png and /dev/null differ diff --git a/admin/partials/easycache-cloudflare-options.php b/admin/partials/easyengine-cache-manager-cloudflare-options.php similarity index 77% rename from admin/partials/easycache-cloudflare-options.php rename to admin/partials/easyengine-cache-manager-cloudflare-options.php index 4e4a26eb..f94da9af 100644 --- a/admin/partials/easycache-cloudflare-options.php +++ b/admin/partials/easyengine-cache-manager-cloudflare-options.php @@ -16,8 +16,8 @@ 'api_token', 'zone_id', 'default_cache_ttl', - 'easycache_cf_settings_nonce', - 'easycache_settings_save' + 'easyengine_cache_manager_cf_settings_nonce', + 'easyengine_cache_manager_settings_save' ); foreach ( $settings_save_args as $val ) { @@ -26,9 +26,9 @@ } } -if ( isset( $all_inputs['easycache_settings_save'] ) && isset( $all_inputs['easycache_cf_settings_nonce'] ) && wp_verify_nonce( $all_inputs['easycache_cf_settings_nonce'], 'easycache_cf_settings_nonce' ) ) { - unset( $all_inputs['easycache_cf_settings_nonce'] ); - unset( $all_inputs['easycache_settings_save'] ); +if ( isset( $all_inputs['easyengine_cache_manager_settings_save'] ) && isset( $all_inputs['easyengine_cache_manager_cf_settings_nonce'] ) && wp_verify_nonce( $all_inputs['easyengine_cache_manager_cf_settings_nonce'], 'easyengine_cache_manager_cf_settings_nonce' ) ) { + unset( $all_inputs['easyengine_cache_manager_cf_settings_nonce'] ); + unset( $all_inputs['easyengine_cache_manager_settings_save'] ); if ( ! $nginx_helper_admin || ! method_exists( $nginx_helper_admin, 'get_cloudflare_default_settings' ) ) { return; @@ -38,7 +38,7 @@ $args = wp_parse_args( $all_inputs, $default_args ); - update_site_option( 'easycache_cf_settings', $args ); + update_site_option( 'easyengine_cache_manager_cf_settings', $args ); echo '

' . esc_html__( 'Settings saved.', 'nginx-helper' ) . '

'; } @@ -57,9 +57,9 @@ ?>
-
- - + + +

@@ -129,7 +129,7 @@ class="dashicons dashicons-hidden password-input-icon">
@@ -137,10 +137,10 @@ class="dashicons dashicons-hidden password-input-icon"> -
+
diff --git a/admin/partials/nginx-helper-admin-display.php b/admin/partials/nginx-helper-admin-display.php index 44251dbd..859b4731 100644 --- a/admin/partials/nginx-helper-admin-display.php +++ b/admin/partials/nginx-helper-admin-display.php @@ -18,7 +18,7 @@

- +

@@ -46,11 +46,8 @@ case 'general': include plugin_dir_path( __FILE__ ) . 'nginx-helper-general-options.php'; break; - case 'support': - include plugin_dir_path( __FILE__ ) . 'nginx-helper-support-options.php'; - break; case 'cloudflare': - include plugin_dir_path( __FILE__ ) . 'easycache-cloudflare-options.php'; + include plugin_dir_path( __FILE__ ) . 'easyengine-cache-manager-cloudflare-options.php'; break; } diff --git a/admin/partials/nginx-helper-sidebar-display.php b/admin/partials/nginx-helper-sidebar-display.php index 8095da61..34a559b8 100644 --- a/admin/partials/nginx-helper-sidebar-display.php +++ b/admin/partials/nginx-helper-sidebar-display.php @@ -37,7 +37,7 @@ printf( '%s %s.', esc_html__( 'Please use our', 'nginx-helper' ), - esc_url( 'http://rtcamp.com/support/forum/wordpress-nginx/' ), + esc_url( 'https://wordpress.org/support/plugin/nginx-helper/' ), esc_html__( 'free support forum', 'nginx-helper' ) ); ?> @@ -52,8 +52,8 @@
- - + +
@@ -64,16 +64,13 @@
  • - +
  • - -
  • -
  • - +
diff --git a/admin/partials/nginx-helper-support-options.php b/admin/partials/nginx-helper-support-options.php deleted file mode 100644 index 178b05a7..00000000 --- a/admin/partials/nginx-helper-support-options.php +++ /dev/null @@ -1,44 +0,0 @@ - - - -
-

- -

-
- - - - - - - - - -
- - - - - -
- - - - - -
-
-
diff --git a/composer.json b/composer.json index fcb7e634..bacef63e 100644 --- a/composer.json +++ b/composer.json @@ -14,7 +14,7 @@ "cloudflare", "cloudflare-edge-cache", "cache-tags", - "easycache" + "easyengine cache helper" ], "homepage": "https://rtcamp.com/nginx-helper/", "license": "GPL-2.0+", diff --git a/includes/class-cli.php b/includes/class-cli.php index 21cc8c4a..bb343e93 100644 --- a/includes/class-cli.php +++ b/includes/class-cli.php @@ -2,15 +2,15 @@ /** * WP-CLI commands for managing the Advanced Cloudflare Cache. * - * @package EasyCache + * @package EECacheHelper * * @phpcs :disable Squiz.Commenting.FunctionComment.MissingParamTag */ -namespace EasyCache; +namespace EECacheHelper; use WP_CLI; -use EasyCache\Cloudflare_Client; +use EECacheHelper\Cloudflare_Client; /** * Manage the Advanced Cloudflare Cache. diff --git a/includes/class-cloudflare-client.php b/includes/class-cloudflare-client.php index c4d9338d..da8e83b0 100644 --- a/includes/class-cloudflare-client.php +++ b/includes/class-cloudflare-client.php @@ -2,10 +2,10 @@ /** * A wrapper for the Cloudflare API client. * - * @package EasyCache + * @package EECacheHelper */ -namespace EasyCache; +namespace EECacheHelper; use Cloudflare\API\Auth\APIToken; use Cloudflare\API\Adapter\Guzzle; @@ -205,7 +205,7 @@ public static function setupCacheRule() { 'action_parameters' => [ 'cache' => true, ], - 'description' => 'EasyEngine Cache Manager Ruleset', + 'description' => 'EasyEngine Cache Helper Ruleset', ]; // If no cache rule exist then we can directly create a new. @@ -214,7 +214,7 @@ public static function setupCacheRule() { 'name' => 'default', 'kind' => 'zone', 'phase' => 'http_request_cache_settings', - 'description' => 'Set\'s the edge cache rules by Nginx-Helper Cache Manager.', + 'description' => 'Set\'s the edge cache rules by Nginx-Helper Cache Helper.', 'rules' => [ $rule ], ]; @@ -255,7 +255,7 @@ public static function setupCacheRule() { $rule_exists = false; foreach ( $existing_rules as $existing_rule ) { - if ( isset( $existing_rule['description'] ) && 'EasyEngine Cache Manager Ruleset' === $existing_rule['description'] ) { + if ( isset( $existing_rule['description'] ) && 'EasyEngine Cache Helper Ruleset' === $existing_rule['description'] ) { $rule_exists = true; break; } diff --git a/includes/class-cloudflare-purger.php b/includes/class-cloudflare-purger.php index be7cccf3..3fc82e09 100644 --- a/includes/class-cloudflare-purger.php +++ b/includes/class-cloudflare-purger.php @@ -2,12 +2,12 @@ /** * Purges the cache based on a variety of WordPress events. * - * @package EasyCache + * @package EECacheHelper */ -namespace EasyCache; +namespace EECacheHelper; -use EasyCache\Cloudflare_Client; +use EECacheHelper\Cloudflare_Client; /** * Purges the appropriate cache tag based on the event. diff --git a/includes/class-cloudflare-tag-emitter.php b/includes/class-cloudflare-tag-emitter.php index 4022f205..c9ad5c98 100644 --- a/includes/class-cloudflare-tag-emitter.php +++ b/includes/class-cloudflare-tag-emitter.php @@ -2,10 +2,10 @@ /** * Generates and emits cache tags based on the current request. * - * @package EasyCache + * @package EECacheHelper */ -namespace EasyCache; +namespace EECacheHelper; /** * Generates and emits cache tags based on the current request. diff --git a/includes/class-nginx-helper.php b/includes/class-nginx-helper.php index 085e7a2f..a909f718 100644 --- a/includes/class-nginx-helper.php +++ b/includes/class-nginx-helper.php @@ -12,8 +12,8 @@ * @subpackage nginx-helper/includes */ -use EasyCache\Cloudflare_Purger; -use EasyCache\CloudFlare_Tag_Emitter; +use EECacheHelper\Cloudflare_Purger; +use EECacheHelper\CloudFlare_Tag_Emitter; /** * The core plugin class. @@ -432,7 +432,7 @@ public function handle_cloudflare_headers( $headers ) { $headers['Expires'] = 'Wed, 11 Jan 1984 05:00:00 GMT'; // Date in the past } else { // Page is for an anonymous user and is cacheable. - $options = get_option( 'easycache_cf_settings' ); + $options = get_option( 'easyengine_cache_manager_cf_settings' ); $ttl = isset( $options['default_cache_ttl'] ) ? (int) $options['default_cache_ttl'] : 0; if ( $ttl > 0 ) { diff --git a/nginx-helper.php b/nginx-helper.php index d2e610b5..6e3bc570 100644 --- a/nginx-helper.php +++ b/nginx-helper.php @@ -1,8 +1,8 @@ Please post your problem in [our free support forum](https://github.com/rtCamp/nginx-helper/issues). == Screenshots == -1. Nginx plugin settings -2. Remaining settings +1. Nginx settings +2. Cloudflare settings == Changelog == diff --git a/utils/autoloader.php b/utils/autoloader.php index 94125dc1..0bdf8d7e 100644 --- a/utils/autoloader.php +++ b/utils/autoloader.php @@ -12,12 +12,12 @@ spl_autoload_register( function ( $class ) { $class = ltrim( $class, '\\' ); - if ( 0 !== stripos( $class, 'EasyCache\\' ) ) { + if ( 0 !== stripos( $class, 'EECacheHelper\\' ) ) { return; } $parts = explode( '\\', $class ); - array_shift( $parts ); // Don't need "EasyCache". + array_shift( $parts ); // Don't need "EECacheHelper". $last = array_pop( $parts ); // File should be 'class-[...].php'. $last = 'class-' . $last . '.php'; $parts[] = $last; diff --git a/wpassets/icon-128x128.png b/wpassets/icon-128x128.png index 05f8a287..208a253e 100644 Binary files a/wpassets/icon-128x128.png and b/wpassets/icon-128x128.png differ diff --git a/wpassets/icon-256x256.png b/wpassets/icon-256x256.png index 3fa78a6f..566a4037 100644 Binary files a/wpassets/icon-256x256.png and b/wpassets/icon-256x256.png differ diff --git a/wpassets/screenshot-1.png b/wpassets/screenshot-1.png index 8c16551f..bf16e909 100644 Binary files a/wpassets/screenshot-1.png and b/wpassets/screenshot-1.png differ diff --git a/wpassets/screenshot-2.png b/wpassets/screenshot-2.png index d14e3196..4c00246d 100644 Binary files a/wpassets/screenshot-2.png and b/wpassets/screenshot-2.png differ