File "admin.php"
Full path: /home/kosmetik/public_html/wp-content/plugins/wp-rocket/inc/admin/admin.php
File
size: 15.05 B
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor Back
<?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');