wp_back/wp-content/plugins/shortpixel-critical-css/shortpixel-critical-css.php
2024-05-20 15:37:46 +03:00

257 lines
8.5 KiB
PHP

<?php
/**
* Plugin Name: ShortPixel Critical CSS
* Plugin URI: https://shortpixel.com/
* Description: Use ShortPixel's Critical CSS web service to automatically generate the required CSS for the "above the fold" area and improve your website performance
* Version: 1.0.1
* Author: ShortPixel
* GitHub Plugin URI: https://github.com/short-pixel-optimizer/shortpixel-critical-css
* Primary Branch: main
* Author URI: https://shortpixel.com
* License: GPL3
*/
/**
* Activation hooks
*/
//ini_set('display_errors', 1);
//ini_set('display_startup_errors', 1);
//error_reporting(E_ALL);
use Dice\Dice;
use \ShortPixel\CriticalCSS\FileLog;
use ShortPixel\CriticalCSS\Settings\ApiKeyTools;
/**
* @SuppressWarnings(PHPMD.StaticAccess)
* @return \ShortPixel\CriticalCSS
* @alias SPCCSS()
*/
function shortpixel_critical_css() {
return shortpixel_critical_css_container()->create( 'ShortPixel\CriticalCSS' );
}
function shortpixel_critical_css_container($env = 'prod' ) {
static $container;
if ( empty( $container ) ) {
$container = new Dice();
include __DIR__ . "/config_{$env}.php";
}
return $container;
}
/**
* Init function shortcut
*/
function shortpixel_critical_css_init() {
shortpixel_critical_css()->init();
$settings = shortpixel_critical_css()->settings_manager->get_settings();
if( empty($settings['ccss_spio_apikey_found_dismissed']) && !ApiKeyTools::getApiKey() && ApiKeyTools::getSPIOApiKey() ) {
add_action( 'admin_notices', 'shortpixel_critical_css_spio_apikey_found' );
}
if(defined('DISABLE_WP_CRON') && DISABLE_WP_CRON && empty($settings['ccss_cron_disabled_notice_dismissed'])) {
add_action( 'admin_notices', 'shortpixel_critical_css_cron_disabled_notice' );
}
}
/**
* API run function shortcut
*/
function shortpixel_critical_css_api_run() {
return shortpixel_critical_css()->api_run(intval($_POST['queue_id']));
}
/**
* API remove function shortcut
*/
function shortpixel_critical_css_api_remove() {
return shortpixel_critical_css()->api_queue_remove(intval($_POST['queue_id']));
}
function shortpixel_critical_css_web_run() {
return shortpixel_critical_css()->web_queue_run(intval($_POST['queue_id']));
}
function shortpixel_critical_css_web_remove() {
return shortpixel_critical_css()->web_queue_remove(intval($_POST['queue_id']));
}
/**
* Get CSS function shortcut
*/
function shortpixel_critical_css_get() {
return shortpixel_critical_css()->get_ccss();
}
/**
* Contact function shortcut
*/
function shortpixel_critical_css_contact() {
return shortpixel_critical_css()->contact();
}
/**
* Contact function shortcut
*/
function shortpixel_critical_css_usekey() {
return shortpixel_critical_css()->use_spio_key();
}
function shortpixel_critical_css_getapikey() {
return shortpixel_critical_css()->get_apikey();
}
function shortpixel_critical_css_updateapikey() {
return shortpixel_critical_css()->update_apikey();
}
function shortpixel_critical_css_dismiss() {
return shortpixel_critical_css()->dismiss_notification();
}
function shortpixel_critical_css_switch_theme() {
return shortpixel_critical_css()->switch_theme();
}
function shortpixel_critical_css_force_web_check() {
return shortpixel_critical_css()->force_web_check();
}
/**
* Activate function shortcut
*/
function shortpixel_critical_css_activate() {
shortpixel_critical_css()->init();
shortpixel_critical_css()->activate();
}
/**
* Deactivate function shortcut
*/
function shortpixel_critical_css_deactivate() {
shortpixel_critical_css()->deactivate();
}
/**
* Error for older php
*/
function shortpixel_critical_css_php_upgrade_notice() {
$info = get_plugin_data( __FILE__ );
_e(
sprintf(
'
<div class="error notice">
<p>Oops! %s requires a minimum PHP version of 5.4.0. Your current version is: %s. Please contact your host to upgrade.</p>
</div>', $info['Name'], PHP_VERSION
)
);
}
/**
* Error for WP CRON disabled
*/
function shortpixel_critical_css_cron_disabled_notice() {
$info = get_plugin_data( __FILE__ );
_e(
sprintf(
'
<div class="spccss_notice error notice is-dismissible" data-dismissed-causer="ccss_cron_disabled_notice">
<div class="body-wrap">
<div class="message-wrap" style="padding-bottom: 10px;">
<button style="float:right;margin: 2px 5px 0 20px;" class="button button-primary dismiss-button">Dismiss</button>
<p>%s requires the WP Cron to be active, please check your wp-config.php file and remove the "DISABLE_WP_CRON" define. If you\'re using a server-side scheduled job to run the WP Cron, then you can safely ignore this message.</p>
</div>
</div>
</div>', $info['Name']
)
);
}
function shortpixel_critical_css_spio_apikey_found() {
$info = get_plugin_data( __FILE__ );
_e(
'
<div class="spccss_notice notice notice-warning is-dismissible" data-dismissed-causer="ccss_spio_apikey_found">
<p>You already have a ShortPixel account for this website. Do you want to use ShortPixel Critical CSS with this account?</p>
<p><button class="button button-primary" id="spccss_usekey">Use this account</button> <button class="button button-primary dismiss-button">Dismiss</button></p>
</div>'
);
}
/**
* Error if vendors autoload is missing
*/
function shortpixel_critical_css_php_vendor_missing() {
$info = get_plugin_data( __FILE__ );
_e(
sprintf(
'
<div class="error notice">
<p>Opps! %s is corrupted it seems, please re-install the plugin.</p>
</div>', $info['Name']
)
);
}
function shortpixel_critical_css_generate_plugin_links($links)
{
$in = '<a href="options-general.php?page=' . \ShortPixel\CriticalCSS::LANG_DOMAIN . '">' . __( 'Settings' ) . '</a>';
array_unshift($links, $in);
return $links;
}
function shortpixel_critical_css_admin_init() {
shortpixel_critical_css()->first_install();
}
function shortpixel_critical_css_rewrite_disabled()
{
?>
<div class="error notice">
<p><?php _e( 'The URL Rewrites are disabled. The ShortPixel CriticalCSS plugin may not work as intended. Please go to <a href="options-permalink.php">Permalinks Settings</a> and choose any option except Plain. If the Permalinks are not set to plain, you might need to check with your hosting or admin why the rewrites are not working.' ); ?></p>
</div>
<?php
}
if ( empty($GLOBALS['wp_rewrite']) ) {
$GLOBALS['wp_rewrite'] = new WP_Rewrite();
}
if ( !$GLOBALS['wp_rewrite']->using_mod_rewrite_permalinks() ) {
add_action( 'admin_notices', 'shortpixel_critical_css_rewrite_disabled' );
}
if ( version_compare( PHP_VERSION, '5.4.0' ) < 0 ) {
add_action( 'admin_notices', 'shortpixel_critical_css_php_upgrade_notice' );
} else {
if ( file_exists( __DIR__ . '/vendor/autoload.php' ) ) {
include_once __DIR__ . '/vendor/autoload.php';
add_action( 'admin_init', 'shortpixel_critical_css_admin_init' );
add_action( 'plugins_loaded', 'shortpixel_critical_css_init', 11 );
add_action( 'wp_ajax_shortpixel_critical_css_web_run', 'shortpixel_critical_css_web_run' );
add_action( 'wp_ajax_shortpixel_critical_css_web_remove', 'shortpixel_critical_css_web_remove' );
add_action( 'wp_ajax_shortpixel_critical_css_api_run', 'shortpixel_critical_css_api_run' );
add_action( 'wp_ajax_shortpixel_critical_css_api_remove', 'shortpixel_critical_css_api_remove' );
add_action( 'wp_ajax_shortpixel_critical_css_get', 'shortpixel_critical_css_get' );
add_action( 'wp_ajax_shortpixel_critical_css_contact', 'shortpixel_critical_css_contact' );
add_action( 'wp_ajax_shortpixel_critical_css_usekey', 'shortpixel_critical_css_usekey' );
add_action( 'wp_ajax_shortpixel_critical_css_getapikey', 'shortpixel_critical_css_getapikey' );
add_action( 'wp_ajax_shortpixel_critical_css_updateapikey', 'shortpixel_critical_css_updateapikey' );
add_action( 'wp_ajax_shortpixel_critical_css_dismiss', 'shortpixel_critical_css_dismiss' );
add_action( 'switch_theme', 'shortpixel_critical_css_switch_theme');
add_action( 'wp_ajax_shortpixel_critical_css_force_web_check', 'shortpixel_critical_css_force_web_check' );
add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), 'shortpixel_critical_css_generate_plugin_links' ); //for plugin settings page
register_activation_hook( __FILE__, 'shortpixel_critical_css_activate' );
register_deactivation_hook( __FILE__, 'shortpixel_critical_css_deactivate' );
} else {
add_action( 'admin_notices', 'shortpixel_critical_css_php_vendor_missing' );
}
}
if ( !defined( 'SPCCSS_DEBUG' ) ) {
define( 'SPCCSS_DEBUG', isset( $_GET[ 'SPCCSS_DEBUG' ] ) ? intval($_GET[ 'SPCCSS_DEBUG' ])
: false);
//: FileLog::DEBUG_AREA_ALL);
}