????JFIF??x?x????'
| Server IP : 79.136.114.73 / Your IP : 216.73.216.55 Web Server : Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.29 OpenSSL/1.0.1f System : Linux b8009 3.13.0-170-generic #220-Ubuntu SMP Thu May 9 12:40:49 UTC 2019 x86_64 User : www-data ( 33) PHP Version : 5.5.9-1ubuntu4.29 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /var/www/www.astacus.se/wp-content/plugins/cornerstone/includes/utility/ |
Upload File : |
<?php
/**
* Ever wanted a clean slate on the WordPress front end?
* This class strips the entire page. All styles and scripts are removed.
*
* Usage:
* 1. Call `WP_Clean_Slate::init();`
* 2. Enqueue scripts and styles via wp_enqueue_scripts_clean
* 3. Output custom content with wp_clean_slate_content
*
* The following hooks are available:
* wp_enqueue_scripts_clean Enqueue your styles here
* wp_clean_slate_content Output any content you want following the opening body tag
* wp_clean_slate_options Override default options (filter)
* wp_clean_slate_head Outputs before wp_head
* wp_clean_slate_footer Outputs after wp_footer
*/
class WP_Clean_Slate {
/**
* I am a singleton
* @var object
*/
private static $instance;
/**
* Filterable options for enabling / disabling various outputs
* @var array
*/
private $options;
/**
* Instantiate class with filterable defaults
*/
public function __construct() {
$this->options = apply_filters( 'wp_clean_slate_options', array(
'addTitle' => true,
'addCharset' => true,
'addViewport' => true,
'addBodyClasses' => true,
'injectTemplate' => true, // Set false if you are filtering template_include yourself
'removejQueryMigrate' => false, // We have full control, so we can probaly be sure we're using up to date jQuery APIs
'mediaTemplates' => true,
'resetFooter' => true,
'showAdminBar' => false
));
if ($this->options['removejQueryMigrate'])
add_action( 'wp_default_scripts', array( $this, 'removejQueryMigrate' ) );
add_action( 'template_redirect', array( $this, 'hooks' ), 99999 );
}
/**
* Attach required actions and filters
* Strip WP actions
* @return none
*/
public function hooks() {
if ($this->options['addTitle']) {
add_action( 'wp_clean_slate_head', array( $this, 'addTitle' ) );
}
if ($this->options['addCharset'])
add_action( 'wp_clean_slate_head', array( $this, 'addCharset' ) );
if ($this->options['addViewport'])
add_action( 'wp_clean_slate_head', array( $this, 'addViewport' ) );
// Override Theme
add_filter( 'template_include', array( $this, 'injectTemplate' ), 999999 );
// Remove ALL actions to strip 3rd party plugins and unwanted WP functions
remove_all_actions( 'wp_head' );
remove_all_actions( 'wp_print_styles' );
remove_all_actions( 'wp_print_head_scripts' );
// Add back WP native actions that we need
add_action( 'wp_head', 'wp_enqueue_scripts', 1 );
add_action( 'wp_head', 'wp_print_styles', 8 );
add_action( 'wp_head', 'wp_print_head_scripts', 9 );
// No Toolbar
if ($this->options['showAdminBar'] == false) {
add_filter( 'show_admin_bar', '__return_false' );
} else {
if ( !class_exists('WP_Admin_Bar') ) {
_wp_admin_bar_init();
}
add_action('wp_enqueue_scripts_clean', array( $this, 'adminBarEnqueue' ));
}
// Strip all scripts and styles
add_action( 'wp_head', array( $this, 'stripEnqueues' ), -1 );
}
/**
* Output our header, content, and footer.
* Returning false will also block WordPress from including a file
* @return boolean always false
*/
public function injectTemplate() {
$this->renderHeader();
do_action( 'wp_clean_slate_content' );
$this->renderFooter();
return false;
}
/**
* Output opening HTML with wp_head and optional elements
* @return none
*/
public function renderHeader() {
?><!DOCTYPE html><html <?php language_attributes(); ?>><head><?php do_action( 'wp_clean_slate_head' ); wp_head(); ?></head><body <?php if ( $this->options['addBodyClasses'] ) : body_class(); endif; ?>><?php
}
/**
* Output wp_footer and closing HTML
* @return none
*/
public function renderFooter() {
if ($this->options['resetFooter']) {
$this->resetFooter();
}
wp_footer(); do_action( 'wp_clean_slate_footer' );?></body></html><?php
}
/**
* Output wp_title
*/
public function addTitle() {
echo '<title>'; wp_title(); echo '</title>';
}
/**
* Output charset meta tag
*/
public function addCharset() {
echo '<meta charset="'; bloginfo( 'charset' ); echo '">';
}
/**
* Output viewport meta tag
*/
public function addViewport() {
echo '<meta name="viewport" content="width=device-width, initial-scale=1.0">';
}
/**
* Remove jQuery Migrate as a dependency from jQuery
*/
public function removejQueryMigrate( &$scripts ) {
$jquery = $scripts->registered['jquery'];
$version = $jquery->ver;
$scripts->remove('jquery');
$scripts->remove('jquery-migrate');
$scripts->add('jquery', false, array('jquery-core'), $version );
}
/**
* Remove all enqueue actions as early as possible
*/
public function stripEnqueues() {
remove_all_actions( 'wp_enqueue_scripts' );
add_action( 'wp_enqueue_scripts', array( $this, 'resetEnqueues' ), 999999 );
}
/**
* Reset the style and script registries in case anything is still registered
*
*/
public function resetEnqueues() {
global $wp_styles;
global $wp_scripts;
$wp_styles = new WP_Styles();
$wp_scripts = new WP_Scripts();
do_action( 'wp_enqueue_scripts_clean' );
}
/**
* Reset wp_footer to the minimum
*/
public function resetFooter() {
remove_all_actions( 'wp_footer' );
add_action( 'wp_footer', 'wp_print_footer_scripts', 20 );
add_action( 'wp_footer', 'wp_admin_bar_render', 1000 );
if ($this->options['mediaTemplates'] && function_exists( 'wp_underscore_playlist_templates' ) && function_exists( 'wp_print_media_templates' ) ) {
add_action( 'wp_footer', 'wp_underscore_playlist_templates', 0 );
add_action( 'wp_footer', 'wp_print_media_templates' );
}
}
/**
* Re-enqueue the Admin bar scripts and styles
* @return none
*/
public function adminBarEnqueue() {
wp_enqueue_script( 'admin-bar' );
wp_enqueue_style( 'admin-bar' );
}
/**
* Instance accessor. If instance doesn't exist, we'll initialize the class.
* @return object WP_Clean_Slate::$instance
*/
public static function instance() {
if (!isset(self::$instance))
self::$instance = new WP_Clean_Slate;
return self::$instance;
}
/**
* Alias for ::instance
* For semantics. init can be called when the intention is the first initialization
* @return object WP_Clean_Slate::$instance
*/
public static function init() {
return self::instance();
}
}