File "options.php"

Full path: /home/kosmetik/public_html/wp-content/plugins/wp-rocket/inc/functions/options.php
File size: 14.38 B
MIME-type: text/x-php
Charset: utf-8

Download   Open   Edit   Advanced Editor   Back

<?php

use WP_Rocket\Admin\Options;
use WP_Rocket\Admin\Options_Data;
use WP_Rocket\Logger\Logger;
defined('ABSPATH') || exit;
function get_rocket_option($option, $default = false)
{
    $options_api = new Options('wp_rocket_');
    $options = new Options_Data($options_api->get('settings', []));
    return $options->get($option, $default);
}
function update_rocket_option($key, $value)
{
    $options_api = new Options('wp_rocket_');
    $options = new Options_Data($options_api->get('settings', []));
    $options->set($key, $value);
    $options_api->set('settings', $options->get_options());
}
function rocket_is_plugin_active($plugin)
{
    return in_array($plugin, (array) get_option('active_plugins', []), true) || rocket_is_plugin_active_for_network($plugin);
}
function rocket_is_plugin_active_for_network($plugin)
{
    if (!is_multisite()) {
        return false;
    }
    $plugins = get_site_option('active_sitewide_plugins');
    return isset($plugins[$plugin]);
}
function is_rocket_post_excluded_option($option)
{
    global $post;
    if (!is_object($post)) {
        return false;
    }
    if (is_home()) {
        $post_id = get_queried_object_id();
    }
    if (is_singular() && isset($post)) {
        $post_id = $post->ID;
    }
    return isset($post_id) ? get_post_meta($post_id, '_rocket_exclude_' . $option, true) : false;
}
function is_rocket_cache_mobile()
{
    return get_rocket_option('cache_mobile', false);
}
function is_rocket_generate_caching_mobile_files()
{
    return get_rocket_option('cache_mobile', false) && get_rocket_option('do_caching_mobile_files', false);
}
function rocket_get_dns_prefetch_domains()
{
    $domains = (array) get_rocket_option('dns_prefetch');
    return apply_filters('rocket_dns_prefetch', $domains);
}
function rocket_get_ignored_parameters()
{
    $params = ['utm_source' => 1, 'utm_medium' => 1, 'utm_campaign' => 1, 'utm_expid' => 1, 'utm_term' => 1, 'utm_content' => 1, 'mtm_source' => 1, 'mtm_medium' => 1, 'mtm_campaign' => 1, 'mtm_keyword' => 1, 'mtm_cid' => 1, 'mtm_content' => 1, 'pk_source' => 1, 'pk_medium' => 1, 'pk_campaign' => 1, 'pk_keyword' => 1, 'pk_cid' => 1, 'pk_content' => 1, 'fb_action_ids' => 1, 'fb_action_types' => 1, 'fb_source' => 1, 'fbclid' => 1, 'campaignid' => 1, 'adgroupid' => 1, 'adid' => 1, 'gclid' => 1, 'age-verified' => 1, 'ao_noptimize' => 1, 'usqp' => 1, 'cn-reloaded' => 1, '_ga' => 1, 'sscid' => 1, 'gclsrc' => 1, '_gl' => 1, 'mc_cid' => 1, 'mc_eid' => 1, '_bta_tid' => 1, '_bta_c' => 1, 'trk_contact' => 1, 'trk_msg' => 1, 'trk_module' => 1, 'trk_sid' => 1, 'gdfms' => 1, 'gdftrk' => 1, 'gdffi' => 1, '_ke' => 1, 'redirect_log_mongo_id' => 1, 'redirect_mongo_id' => 1, 'sb_referer_host' => 1, 'mkwid' => 1, 'pcrid' => 1, 'ef_id' => 1, 's_kwcid' => 1, 'msclkid' => 1, 'dm_i' => 1, 'epik' => 1, 'pp' => 1];
    return apply_filters('rocket_cache_ignored_parameters', $params);
}
function get_rocket_cache_reject_uri($force = false)
{
    static $uris;
    global $wp_rewrite;
    if ($force) {
        $uris = null;
    }
    if ($uris) {
        return $uris;
    }
    $uris = (array) get_rocket_option('cache_reject_uri', []);
    $home_root = rocket_get_home_dirname();
    $home_root_escaped = preg_quote($home_root, '/');
    $home_root_len = strlen($home_root);
    if ('' !== $home_root && $uris) {
        foreach ($uris as $i => $uri) {
            if (!preg_match('/' . $home_root_escaped . '\\(?\\//', $uri)) {
                unset($uris[$i]);
                continue;
            }
            $uris[$i] = substr($uri, $home_root_len);
        }
    }
    $uris[] = '/(.+/)?' . $wp_rewrite->feed_base . '/?.+/?';
    $uris[] = '/(?:.+/)?embed/';
    $uris = apply_filters('rocket_cache_reject_uri', $uris);
    $uris = array_filter($uris);
    if (!$uris) {
        return '';
    }
    if ('' !== $home_root) {
        foreach ($uris as $i => $uri) {
            if (preg_match('/' . $home_root_escaped . '\\(?\\//', $uri)) {
                $uris[$i] = substr($uri, $home_root_len);
            }
        }
    }
    $uris = implode('|', $uris);
    if ('' !== $home_root) {
        $uris = $home_root . '(' . $uris . ')';
    }
    return $uris;
}
function get_rocket_cache_reject_cookies()
{
    $logged_in_cookie = explode(COOKIEHASH, LOGGED_IN_COOKIE);
    $logged_in_cookie = array_map('preg_quote', $logged_in_cookie);
    $logged_in_cookie = implode('.+', $logged_in_cookie);
    $cookies = get_rocket_option('cache_reject_cookies', []);
    $cookies[] = $logged_in_cookie;
    $cookies[] = 'wp-postpass_';
    $cookies[] = 'wptouch_switch_toggle';
    $cookies[] = 'comment_author_';
    $cookies[] = 'comment_author_email_';
    $cookies = (array) apply_filters('rocket_cache_reject_cookies', $cookies);
    $cookies = array_filter($cookies);
    $cookies = array_flip(array_flip($cookies));
    return implode('|', $cookies);
}
function get_rocket_cache_mandatory_cookies()
{
    $cookies = [];
    $cookies = (array) apply_filters('rocket_cache_mandatory_cookies', $cookies);
    $cookies = array_filter($cookies);
    $cookies = array_flip(array_flip($cookies));
    return implode('|', $cookies);
}
function get_rocket_cache_dynamic_cookies()
{
    $cookies = [];
    $cookies = (array) apply_filters('rocket_cache_dynamic_cookies', $cookies);
    $cookies = array_filter($cookies);
    $cookies = array_unique($cookies);
    return $cookies;
}
function get_rocket_cache_reject_ua()
{
    $ua = get_rocket_option('cache_reject_ua', []);
    $ua[] = 'facebookexternalhit';
    $ua = (array) apply_filters('rocket_cache_reject_ua', $ua);
    $ua = array_filter($ua);
    $ua = array_flip(array_flip($ua));
    $ua = implode('|', $ua);
    return str_replace([' ', '\\\\ '], '\\ ', $ua);
}
function get_rocket_cache_query_string()
{
    $query_strings = get_rocket_option('cache_query_strings', []);
    $query_strings = (array) apply_filters('rocket_cache_query_strings', $query_strings);
    $query_strings = array_filter($query_strings);
    $query_strings = array_flip(array_flip($query_strings));
    return $query_strings;
}
function rocket_valid_key()
{
    return true;
    $rocket_secret_key = get_rocket_option('secret_key');
    if (!$rocket_secret_key) {
        return false;
    }
    $valid_details = 8 === strlen(get_rocket_option('consumer_key')) && hash_equals($rocket_secret_key, hash('crc32', get_rocket_option('consumer_email')));
    if (!$valid_details) {
        set_transient('rocket_check_key_errors', [__('The provided license data are not valid.', 'rocket') . ' <br>' . sprintf(__('To resolve, please %1$scontact support%2$s.', 'rocket'), '<a href="https://wp-rocket.me/support/" rel="noopener noreferrer" target=_"blank">', '</a>')]);
        return $valid_details;
    }
    delete_transient('rocket_check_key_errors');
    return $valid_details;
}
function rocket_check_key()
{
    $return = rocket_valid_key();
    if ($return) {
        rocket_delete_licence_data_file();
        return $return;
    }
    Logger::info('LICENSE VALIDATION PROCESS STARTED.', ['license validation process']);
    $response = wp_remote_get(rocket_get_constant('WP_ROCKET_WEB_VALID'), ['timeout' => 30]);
    if (is_wp_error($response)) {
        Logger::error('License validation failed.', ['license validation process', 'request_error' => $response->get_error_messages()]);
        set_transient('rocket_check_key_errors', $response->get_error_messages());
        return $return;
    }
    $body = wp_remote_retrieve_body($response);
    $json = json_decode($body);
    if (null === $json) {
        if ('' === $body) {
            Logger::error('License validation failed. No body available in response.', ['license validation process']);
            $message = __('License validation failed. Our server could not resolve the request from your website.', 'rocket') . '<br>' . sprintf(__('Try clicking %1$sSave Changes%2$s below. If the error persists, follow %3$sthis guide%4$s.', 'rocket'), '<em>', '</em>', '<a href="https://docs.wp-rocket.me/article/100-resolving-problems-with-license-validation#general">', '</a>');
            set_transient('rocket_check_key_errors', [$message]);
            return $return;
        }
        Logger::error('License validation failed.', ['license validation process', 'response_body' => $body]);
        if ('NULLED' === $body) {
            $message = __('License validation failed. You may be using a nulled version of the plugin. Please do the following:', 'rocket') . '<ul><li>' . sprintf(__('Login to your WP Rocket %1$saccount%2$s', 'rocket'), '<a href="https://wp-rocket.me/account/" rel="noopener noreferrer" target=_"blank">', '</a>') . '</li><li>' . __('Download the zip file', 'rocket') . '<li></li>' . __('Reinstall', 'rocket') . '</li></ul>' . sprintf(__('If you do not have a WP Rocket account, please %1$spurchase a license%2$s.', 'rocket'), '<a href="https://wp-rocket.me/" rel="noopener noreferrer" target="_blank">', '</a>');
            set_transient('rocket_check_key_errors', [$message]);
            return $return;
        }
        if ('BAD_USER' === $body) {
            $message = __('License validation failed. This user account does not exist in our database.', 'rocket') . '<br>' . sprintf(__('To resolve, please contact support.', 'rocket'), '<a href="https://wp-rocket.me/support/" rel="noopener noreferrer" target=_"blank">', '</a>');
            set_transient('rocket_check_key_errors', [$message]);
            return $return;
        }
        if ('USER_BLOCKED' === $body) {
            $message = __('License validation failed. This user account is blocked.', 'rocket') . '<br>' . sprintf(__('Please see %1$sthis guide%2$s for more info.', 'rocket'), '<a href="https://docs.wp-rocket.me/article/100-resolving-problems-with-license-validation#errors" rel="noopener noreferrer" target=_"blank">', '</a>');
            set_transient('rocket_check_key_errors', [$message]);
            return $return;
        }
        $message = __('License validation failed. Our server could not resolve the request from your website.', 'rocket') . '<br>' . sprintf(__('Try clicking %1$sSave Changes%2$s below. If the error persists, follow %3$sthis guide%4$s.', 'rocket'), '<em>', '</em>', '<a href="https://docs.wp-rocket.me/article/100-resolving-problems-with-license-validation#general" rel="noopener noreferrer" target=_"blank">', '</a>');
        set_transient('rocket_check_key_errors', [$message]);
        return $return;
    }
    $rocket_options = [];
    $rocket_options['consumer_key'] = $json->data->consumer_key;
    $rocket_options['consumer_email'] = $json->data->consumer_email;
    if (!$json->success) {
        $messages = ['BAD_LICENSE' => __('Your license is not valid.', 'rocket') . '<br>' . sprintf(__('Make sure you have an active %1$sWP Rocket license%2$s.', 'rocket'), '<a href="https://wp-rocket.me/" rel="noopener noreferrer" target="_blank">', '</a>'), 'BAD_NUMBER' => __('You have added as many sites as your current license allows.', 'rocket') . '<br>' . sprintf(__('Upgrade your %1$saccount%2$s or %3$stransfer your license%2$s to this domain.', 'rocket'), '<a href="https://wp-rocket.me/account/" rel="noopener noreferrer" target=_"blank">', '</a>', '<a href="https://docs.wp-rocket.me/article/28-transfering-your-license-to-another-site" rel="noopener noreferrer" target=_"blank">'), 'BAD_SITE' => __('This website is not allowed.', 'rocket') . '<br>' . sprintf(__('Please %1$scontact support%2$s.', 'rocket'), '<a href="https://wp-rocket.me/support/" rel="noopener noreferrer" target=_"blank">', '</a>'), 'BAD_KEY' => __('This license key is not recognized.', 'rocket') . '<ul><li>' . sprintf(__('Login to your WP Rocket %1$saccount%2$s', 'rocket'), '<a href="https://wp-rocket.me/account/" rel="noopener noreferrer" target=_"blank">', '</a>') . '</li><li>' . __('Download the zip file', 'rocket') . '<li></li>' . __('Reinstall', 'rocket') . '</li></ul>' . sprintf(__('If the issue persists, please %1$scontact support%2$s.', 'rocket'), '<a href="https://wp-rocket.me/support/" rel="noopener noreferrer" target=_"blank">', '</a>')];
        $rocket_options['secret_key'] = '';
        set_transient('rocket_check_key_errors', [sprintf(__('License validation failed: %s', 'rocket'), $messages[$json->data->reason])]);
        Logger::error('License validation failed.', ['license validation process', 'response_error' => $json->data->reason]);
        set_transient(rocket_get_constant('WP_ROCKET_SLUG'), $rocket_options);
        return $rocket_options;
    }
    $rocket_options['secret_key'] = $json->data->secret_key;
    if (!get_rocket_option('license')) {
        $rocket_options['license'] = '1';
    }
    Logger::info('License validation successful.', ['license validation process']);
    set_transient(rocket_get_constant('WP_ROCKET_SLUG'), $rocket_options);
    delete_transient('rocket_check_key_errors');
    rocket_delete_licence_data_file();
    return $rocket_options;
}
function rocket_delete_licence_data_file()
{
    if (is_multisite()) {
        return;
    }
    $rocket_path = rocket_get_constant('WP_ROCKET_PATH');
    if (!rocket_direct_filesystem()->exists($rocket_path . 'licence-data.php')) {
        return;
    }
    rocket_direct_filesystem()->delete($rocket_path . 'licence-data.php');
}
function rocket_is_subfolder_install()
{
    global $wpdb;
    static $subfolder_install;
    if (isset($subfolder_install)) {
        return $subfolder_install;
    }
    if (is_multisite()) {
        $subfolder_install = !is_subdomain_install();
    } elseif (!is_null($wpdb->sitemeta)) {
        $subfolder_install = !$wpdb->get_var("SELECT meta_value FROM {$wpdb->sitemeta} WHERE site_id = 1 AND meta_key = 'subdomain_install'");
    } else {
        $subfolder_install = false;
    }
    return $subfolder_install;
}
function rocket_get_home_dirname()
{
    static $home_root;
    if (isset($home_root)) {
        return $home_root;
    }
    $home_root = wp_parse_url(rocket_get_main_home_url());
    if (!empty($home_root['path'])) {
        $home_root = '/' . trim($home_root['path'], '/');
        $home_root = rtrim($home_root, '/');
    } else {
        $home_root = '';
    }
    return $home_root;
}
function rocket_get_main_home_url()
{
    static $root_url;
    if (isset($root_url)) {
        return $root_url;
    }
    if (!is_multisite() || is_main_site()) {
        $root_url = rocket_get_home_url('/');
        return $root_url;
    }
    $current_network = get_network();
    if ($current_network) {
        $root_url = set_url_scheme('https://' . $current_network->domain . $current_network->path);
        $root_url = trailingslashit($root_url);
    } else {
        $root_url = rocket_get_home_url('/');
    }
    return $root_url;
}