Create New Item
×
Item Type
File
Folder
Item Name
×
Search file in folder and subfolders...
File Manager
/
wp-content
/
plugins
/
wp-rocket
/
inc
/
admin
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php defined('ABSPATH') || exit; function rocket_settings_action_links($actions) { if (!current_user_can('rocket_manage_options')) { return $actions; } array_unshift($actions, sprintf('<a href="%s">%s</a>', 'https://wp-rocket.me/support/?utm_source=wp_plugin&utm_medium=wp_rocket', __('Support', 'rocket'))); array_unshift($actions, sprintf('<a href="%s">%s</a>', get_rocket_documentation_url(), __('Docs', 'rocket'))); array_unshift($actions, sprintf('<a href="%s">%s</a>', get_rocket_faq_url(), __('FAQ', 'rocket'))); array_unshift($actions, sprintf('<a href="%s">%s</a>', admin_url('options-general.php?page=' . WP_ROCKET_PLUGIN_SLUG), __('Settings', 'rocket'))); return $actions; } add_filter('plugin_action_links_' . plugin_basename(WP_ROCKET_FILE), 'rocket_settings_action_links'); function rocket_plugin_row_meta($plugin_meta, $plugin_file) { if ('wp-rocket/wp-rocket.php' === $plugin_file) { $update_plugins = get_site_transient('update_plugins'); if (false !== $update_plugins && isset($update_plugins->response[$plugin_file]) && empty($update_plugins->response[$plugin_file]->package)) { $link = '<span class="dashicons dashicons-update rocket-dashicons"></span> <span class="rocket-renew">Renew your licence of WP Rocket to receive access to automatic upgrades and support.</span> <a href="http://wp-rocket.me" target="_blank" class="rocket-purchase">Purchase now</a>.'; $plugin_meta = array_merge((array) $link, $plugin_meta); } } return $plugin_meta; } add_action('plugin_row_meta', 'rocket_plugin_row_meta', 10, 2); function rocket_post_row_actions($actions, $post) { if (!current_user_can('rocket_purge_posts')) { return $actions; } $url = wp_nonce_url(admin_url('admin-post.php?action=purge_cache&type=post-' . $post->ID), 'purge_cache_post-' . $post->ID); $actions['rocket_purge'] = sprintf('<a href="%s">%s</a>', $url, __('Clear this cache', 'rocket')); return $actions; } add_filter('page_row_actions', 'rocket_post_row_actions', 10, 2); add_filter('post_row_actions', 'rocket_post_row_actions', 10, 2); function rocket_user_row_actions($actions, $user) { if (!current_user_can('rocket_purge_users') || !get_rocket_option('cache_logged_user', false)) { return $actions; } $url = wp_nonce_url(admin_url('admin-post.php?action=purge_cache&type=user-' . $user->ID), 'purge_cache_user-' . $user->ID); $actions['rocket_purge'] = sprintf('<a href="%s">%s</a>', $url, __('Clear this cache', 'rocket')); return $actions; } add_filter('user_row_actions', 'rocket_user_row_actions', 10, 2); function rocket_dismiss_boxes($args = array()) { global $pagenow; $args = empty($args) ? $_GET : $args; if (!isset($args['box'], $args['action'], $args['_wpnonce'])) { return; } if (!wp_verify_nonce($args['_wpnonce'], "{$args['action']}_{$args['box']}")) { if (rocket_get_constant('DOING_AJAX')) { wp_send_json(['error' => 1]); } else { wp_nonce_ays(''); } return; } rocket_dismiss_box($args['box']); if ('admin-post.php' === $pagenow) { if (rocket_get_constant('DOING_AJAX')) { wp_send_json(['error' => 0]); } else { wp_safe_redirect(esc_url_raw(wp_get_referer())); rocket_get_constant('WP_ROCKET_IS_TESTING', false) ? wp_die() : exit; } } } add_action('wp_ajax_rocket_ignore', 'rocket_dismiss_boxes'); add_action('admin_post_rocket_ignore', 'rocket_dismiss_boxes'); function rocket_dismiss_plugin_box($plugin) { if (plugin_basename(WP_ROCKET_FILE) !== $plugin) { rocket_renew_box('rocket_warning_plugin_modification'); } } add_action('activated_plugin', 'rocket_dismiss_plugin_box'); add_action('deactivated_plugin', 'rocket_dismiss_plugin_box'); function rocket_deactivate_plugin() { if (!isset($_GET['plugin'], $_GET['_wpnonce'])) { return; } if (!wp_verify_nonce(sanitize_key($_GET['_wpnonce']), 'deactivate_plugin')) { wp_nonce_ays(''); } deactivate_plugins(sanitize_text_field(wp_unslash($_GET['plugin']))); wp_safe_redirect(wp_get_referer()); die; } add_action('admin_post_deactivate_plugin', 'rocket_deactivate_plugin'); function rocket_do_options_export() { if (!isset($_GET['_wpnonce']) || !wp_verify_nonce(sanitize_key($_GET['_wpnonce']), 'rocket_export')) { wp_nonce_ays(''); } $filename = sprintf('wp-rocket-settings-%s-%s.json', date('Y-m-d'), uniqid()); $gz = 'gz' . strrev('etalfed'); $options = wp_json_encode(get_option(WP_ROCKET_SLUG)); nocache_headers(); @header('Content-Type: application/json'); @header('Content-Disposition: attachment; filename="' . $filename . '"'); @header('Content-Transfer-Encoding: binary'); @header('Content-Length: ' . strlen($options)); @header('Connection: close'); echo $options; exit; } add_action('admin_post_rocket_export', 'rocket_do_options_export'); function rocket_rollback() { if (!isset($_GET['_wpnonce']) || !wp_verify_nonce(sanitize_key($_GET['_wpnonce']), 'rocket_rollback')) { wp_nonce_ays(''); } $plugin_transient = get_site_transient('update_plugins'); $plugin_folder = plugin_basename(dirname(WP_ROCKET_FILE)); $plugin = $plugin_folder . '/' . basename(WP_ROCKET_FILE); $plugin_transient->response[$plugin] = (object) ['slug' => $plugin_folder, 'new_version' => WP_ROCKET_LASTVERSION, 'url' => 'https://wp-rocket.me', 'package' => sprintf('https://wp-rocket.me/%s/wp-rocket_%s.zip', get_rocket_option('consumer_key'), WP_ROCKET_LASTVERSION)]; set_site_transient('update_plugins', $plugin_transient); require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; $title = sprintf(__('%s Update Rollback', 'rocket'), WP_ROCKET_PLUGIN_NAME); $nonce = 'upgrade-plugin_' . $plugin; $url = 'update.php?action=upgrade-plugin&plugin=' . rawurlencode($plugin); $upgrader_skin = new Plugin_Upgrader_Skin(compact('title', 'nonce', 'url', 'plugin')); $upgrader = new Plugin_Upgrader($upgrader_skin); remove_filter('site_transient_update_plugins', 'rocket_check_update', 1); add_filter('update_plugin_complete_actions', 'rocket_rollback_add_return_link'); rocket_put_content(WP_CONTENT_DIR . '/advanced-cache.php', ''); $upgrader->upgrade($plugin); wp_die('', esc_html(sprintf(__('%s Update Rollback', 'rocket'), WP_ROCKET_PLUGIN_NAME)), ['response' => 200]); } add_action('admin_post_rocket_rollback', 'rocket_rollback'); function rocket_rollback_add_return_link($update_actions) { if (!isset($update_actions['plugins_page'])) { return $update_actions; } $update_actions['plugins_page'] = sprintf(__('%1$sReturn to WP Rocket%2$s or %3$sgo to Plugins page%2$s', 'rocket'), '<a href="' . esc_url(admin_url('options-general.php?page=' . WP_ROCKET_PLUGIN_SLUG) . '#tools') . '" target="_parent">', '</a>', '<a href="' . esc_url(admin_url('plugins.php')) . '" target="_parent">'); return $update_actions; } if (!defined('DOING_AJAX') && !defined('DOING_AUTOSAVE')) { add_action('admin_init', 'rocket_init_cache_dir'); add_action('admin_init', 'rocket_maybe_generate_advanced_cache_file'); add_action('admin_init', 'rocket_maybe_generate_config_files'); } function rocket_maybe_generate_advanced_cache_file() { if (!defined('WP_ROCKET_ADVANCED_CACHE') || defined('WP_ROCKET_ADVANCED_CACHE_PROBLEM') && WP_ROCKET_ADVANCED_CACHE_PROBLEM) { rocket_generate_advanced_cache_file(); } } function rocket_maybe_generate_config_files() { $home = get_rocket_parse_url(rocket_get_home_url()); $path = !empty($home['path']) ? str_replace('/', '.', untrailingslashit($home['path'])) : ''; if (!file_exists(WP_ROCKET_CONFIG_PATH . strtolower($home['host']) . $path . '.php')) { rocket_generate_config_file(); } } function rocket_add_imagify_api_result($result, $action, $args) { if (empty($args->browse)) { return $result; } if ('featured' !== $args->browse && 'recommended' !== $args->browse && 'popular' !== $args->browse) { return $result; } if (!isset($result->info['page']) || 1 < $result->info['page']) { return $result; } if (is_plugin_active('imagify/imagify.php') || is_plugin_active_for_network('imagify/imagify.php')) { return $result; } $result_slugs = wp_list_pluck($result->plugins, 'slug'); if (in_array('imagify', $result_slugs, true)) { return $result; } $query_args = ['slug' => 'imagify', 'fields' => ['icons' => true, 'active_installs' => true, 'short_description' => true, 'group' => true]]; $imagify_data = plugins_api('plugin_information', $query_args); if (is_wp_error($imagify_data)) { return $result; } if ('featured' === $args->browse) { array_push($result->plugins, $imagify_data); } else { array_unshift($result->plugins, $imagify_data); } return $result; } add_filter('plugins_api_result', 'rocket_add_imagify_api_result', 11, 3); function rocket_analytics_data() { global $wp_version, $is_nginx, $is_apache, $is_iis7, $is_IIS; if (!is_array(get_option(WP_ROCKET_SLUG))) { return false; } $untracked_wp_rocket_options = ['license' => 1, 'consumer_email' => 1, 'consumer_key' => 1, 'secret_key' => 1, 'secret_cache_key' => 1, 'minify_css_key' => 1, 'minify_js_key' => 1, 'cloudflare_email' => 1, 'cloudflare_api_key' => 1, 'cloudflare_zone_id' => 1, 'cloudflare_old_settings' => 1, 'submit_optimize' => 1, 'analytics_enabled' => 1]; $theme = wp_get_theme(); $data = array_diff_key(get_option(WP_ROCKET_SLUG), $untracked_wp_rocket_options); $locale = explode('_', get_locale()); $data['web_server'] = 'Unknown'; if ($is_nginx) { $data['web_server'] = 'NGINX'; } elseif ($is_apache) { $data['web_server'] = 'Apache'; } elseif ($is_iis7) { $data['web_server'] = 'IIS 7'; } elseif ($is_IIS) { $data['web_server'] = 'IIS'; } $data['php_version'] = preg_replace('@^(\\d\\.\\d+).*@', '\\1', phpversion()); $data['wordpress_version'] = preg_replace('@^(\\d\\.\\d+).*@', '\\1', $wp_version); $data['current_theme'] = $theme->get('Name'); $data['active_plugins'] = rocket_get_active_plugins(); $data['locale'] = $locale[0]; $data['multisite'] = is_multisite(); if (!empty($data['cdn_cnames']) && is_array($data['cdn_cnames'])) { $data['cdn_cnames'] = count($data['cdn_cnames']); } else { $data['cdn_cnames'] = 0; } if (!empty($data['sitemaps']) && is_array($data['sitemaps'])) { $data['sitemaps'] = array_map('rocket_clean_exclude_file', $data['sitemaps']); } else { $data['sitemaps'] = []; } return $data; } function rocket_send_analytics_data() { if (!get_rocket_option('analytics_enabled')) { return false; } if (!current_user_can('administrator')) { return false; } if (false === get_transient('rocket_send_analytics_data')) { set_transient('rocket_send_analytics_data', 1, 7 * DAY_IN_SECONDS); return true; } return false; } function rocket_analytics_optin() { if (!isset($_GET['_wpnonce']) || !wp_verify_nonce(sanitize_key($_GET['_wpnonce']), 'analytics_optin')) { wp_nonce_ays(''); } if (!current_user_can('administrator')) { wp_safe_redirect(wp_get_referer()); die; } if (isset($_GET['value']) && 'yes' === $_GET['value']) { update_rocket_option('analytics_enabled', 1); set_transient('rocket_analytics_optin', 1); } update_option('rocket_analytics_notice_displayed', 1); wp_safe_redirect(wp_get_referer()); die; } add_action('admin_post_rocket_analytics_optin', 'rocket_analytics_optin'); function rocket_handle_settings_import() { check_ajax_referer('rocket_import_settings', 'rocket_import_settings_nonce'); if (!current_user_can('rocket_manage_options')) { rocket_settings_import_redirect(__('Settings import failed: you do not have the permissions to do this.', 'rocket'), 'error'); } if (!isset($_FILES['import']) || isset($_FILES['import']['size']) && 0 === $_FILES['import']['size']) { rocket_settings_import_redirect(__('Settings import failed: no file uploaded.', 'rocket'), 'error'); } if (isset($_FILES['import']['name']) && !preg_match('/wp-rocket-settings-20\\d{2}-\\d{2}-\\d{2}-[a-f0-9]{13}\\.(?:txt|json)/', sanitize_file_name($_FILES['import']['name']))) { rocket_settings_import_redirect(__('Settings import failed: incorrect filename.', 'rocket'), 'error'); } add_filter('mime_types', 'rocket_allow_json_mime_type'); add_filter('wp_check_filetype_and_ext', 'rocket_check_json_filetype', 10, 4); $mimes = get_allowed_mime_types(); $mimes = rocket_allow_json_mime_type($mimes); $file_data = wp_check_filetype_and_ext($_FILES['import']['tmp_name'], sanitize_file_name($_FILES['import']['name']), $mimes); if ('text/plain' !== $file_data['type'] && 'application/json' !== $file_data['type']) { rocket_settings_import_redirect(__('Settings import failed: incorrect filetype.', 'rocket'), 'error'); } $_post_action = isset($_POST['action']) ? wp_unslash(sanitize_key($_POST['action'])) : ''; $_POST['action'] = 'wp_handle_sideload'; $overrides = []; $overrides['mimes'] = $mimes; $file = wp_handle_sideload($_FILES['import'], $overrides); if (isset($file['error'])) { rocket_settings_import_redirect(__('Settings import failed: ', 'rocket') . $file['error'], 'error'); } $_POST['action'] = $_post_action; $settings = rocket_direct_filesystem()->get_contents($file['file']); remove_filter('mime_types', 'rocket_allow_json_mime_type'); remove_filter('wp_check_filetype_and_ext', 'rocket_check_json_filetype', 10); if ('text/plain' === $file_data['type']) { $gz = 'gz' . strrev('etalfni'); $settings = $gz($settings); $settings = maybe_unserialize($settings); } elseif ('application/json' === $file_data['type']) { $settings = json_decode($settings, true); if (null === $settings) { rocket_settings_import_redirect(__('Settings import failed: unexpected file content.', 'rocket'), 'error'); } } rocket_put_content($file['file'], ''); rocket_direct_filesystem()->delete($file['file']); if (is_array($settings)) { $options_api = new WP_Rocket\Admin\Options('wp_rocket_'); $current_options = $options_api->get('settings', []); $settings['consumer_key'] = $current_options['consumer_key']; $settings['consumer_email'] = $current_options['consumer_email']; $settings['secret_key'] = $current_options['secret_key']; $settings['secret_cache_key'] = $current_options['secret_cache_key']; $settings['minify_css_key'] = $current_options['minify_css_key']; $settings['minify_js_key'] = $current_options['minify_js_key']; $settings['version'] = $current_options['version']; $options_api->set('settings', $settings); rocket_settings_import_redirect(__('Settings imported and saved.', 'rocket'), 'updated'); } } add_action('admin_post_rocket_import_settings', 'rocket_handle_settings_import');