File "admincssmu.php"

Full Path: /home/rrterraplen/public_html/wp-includes/wp-includes/wp-content/plugins/admin-css-mu/admincssmu.php
File size: 11.82 KB
MIME-type: text/x-php
Charset: utf-8

<?php
/*
Plugin Name: Admin CSS MU
Plugin URI: http://millionclues.com
Description: A plugin to load a CSS file to style the admin side. Works with Multisite.
Author: Arun Basil Lal
Author URI: http://millionclues.com
Version: 2.10
Text Domain: admin-css-mu
Domain Path: /languages
License: GPL v2 - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*/

/**
 * ::TODO::
 * - Update version number ADMINCSSMU_VERSION_NUM on every update
 */
 
// Exit If Accessed Directly
if ( ! defined( 'ABSPATH' ) ) exit;

/*------------------------------------------*/
/*			Plugin Setup Functions			*/
/*------------------------------------------*/


// Add Admin Sub Menu: Appearance > Admin CSS MU
function admincssmu_add_menu_links() {
	if ( is_multisite() ) {
		if ( get_current_blog_id() == SITE_ID_CURRENT_SITE ) {
			add_theme_page ( __('Admin CSS MU','admin-css-mu'), __('Admin CSS MU','admin-css-mu'), 'update_core', 'admin-css-mu','admincssmu_admin_interface_render'  );
		}
	}
	else {
		add_theme_page ( __('Admin CSS MU','admin-css-mu'), __('Admin CSS MU','admin-css-mu'), 'update_core', 'admin-css-mu','admincssmu_admin_interface_render'  );
	}
}
add_action( 'admin_menu', 'admincssmu_add_menu_links' );


// Print Direct Link To Admin CSS MU Options Page In Plugins List
function admincssmu_settings_link( $links ) {
	return array_merge(
		array(
			'settings' => '<a href="' . admin_url( 'themes.php?page=admin-css-mu' ) . '">' . __( 'Add CSS', 'admin-css-mu' ) . '</a>'
		),
		$links
	);
}
add_filter( 'plugin_action_links_' . plugin_basename(__FILE__), 'admincssmu_settings_link' );


// Add Links to Plugins list
function admincssmu_plugin_row_meta( $links, $file ) {
	if ( strpos( $file, 'admincssmu.php' ) !== false ) {
		$new_links = array(
				'donate' => '<a href="http://millionclues.com/donate/" target="_blank">Donate</a>',
				'hireme' 	=> '<a href="http://millionclues.com/portfolio/" target="_blank">Hire Me For A Project</a>',
				);
		$links = array_merge( $links, $new_links );
	}
	return $links;
}
add_filter( 'plugin_row_meta', 'admincssmu_plugin_row_meta', 10, 2 ); 


// Load Text Domain
function admincssmu_load_plugin_textdomain() {
    load_plugin_textdomain( 'admin-css-mu', FALSE, basename( dirname( __FILE__ ) ) . '/languages/' );
}
add_action( 'plugins_loaded', 'admincssmu_load_plugin_textdomain' );


// Register Settings
function admincssmu_register_settings() {
	register_setting( 'admincssmu_settings_group', 'admincssmu_custom_css', 'admincssmu_clean_css_with_csstidy' );
}
add_action( 'admin_init', 'admincssmu_register_settings' );

/**
 * Add plugin version to database
 *
 * @since 		2.4
 * @constant 	ADMINCSSMU_VERSION_NUM		the version number of the current version
 * @refer		https://codex.wordpress.org/Creating_Tables_with_Plugins#Adding_an_Upgrade_Function
 */
if ( !defined( 'ADMINCSSMU_VERSION_NUM' ) ) {
	define( 'ADMINCSSMU_VERSION_NUM', '2.10' );
	// update_option('abl_admincssmu_version', ADMINCSSMU_VERSION_NUM);	// Disabled to set default values for Load Admin CSS checkbox
}

/**
 * Set default values for Load CSS checkboxes
 *
 * @since	2.4
 */
if ( is_multisite() ) {
	$installed_ver = get_blog_option( SITE_ID_CURRENT_SITE, 'abl_admincssmu_version' );
}
else {
	$installed_ver = get_option( 'abl_admincssmu_version' );
}

if ($installed_ver == '' ) {
	if ( is_multisite() ) {
		$admincssmu_custom_css_option = get_blog_option( get_current_blog_id(), 'admincssmu_custom_css' );
	}
	else {
		$admincssmu_custom_css_option = get_option( 'admincssmu_custom_css' );
	}
	
	// All CSS loaded by default
	$admincssmu_custom_css_option['load_css'] = 1;
	
	if ( is_multisite() ) {
		update_blog_option(SITE_ID_CURRENT_SITE, 'admincssmu_custom_css', $admincssmu_custom_css_option);
		update_blog_option(SITE_ID_CURRENT_SITE, 'abl_admincssmu_version', ADMINCSSMU_VERSION_NUM);
	}
	else {
		update_option('admincssmu_custom_css', $admincssmu_custom_css_option);
		update_option('abl_admincssmu_version', ADMINCSSMU_VERSION_NUM);
	}
}


// Delete Options During Uninstall
function admincssmu_uninstall_plugin() {
	delete_option( 'admincssmu_custom_css' );
	delete_option( 'abl_admincssmu_version' );
}
register_uninstall_hook(__FILE__, 'admincssmu_uninstall_plugin' );


/**
 * Admin footer text
 *
 * @since	2.3
 */
function admincssmu_footer_text($default) {
    
	// Retun default on non-plugin pages
	$screen = get_current_screen();
	if ( $screen->id !== "appearance_page_admin-css-mu" ) {
		return $default;
	}
	
    $admincssmu_footer_text = sprintf( __( 'If you like this plugin, please <a href="%s" target="_blank">make a donation</a> or leave a <a href="%s" target="_blank">&#9733;&#9733;&#9733;&#9733;&#9733;</a> rating to support continued development. Thanks a bunch!', 'admin-css-mu' ), 
								'http://millionclues.com/donate/',
								'https://wordpress.org/support/plugin/admin-css-mu/reviews/?rate=5#new-post' 
						);
	
	return $admincssmu_footer_text;
}
add_filter('admin_footer_text', 'admincssmu_footer_text');


/*--------------------------------------*/
/*			Admin Options Page			*/
/*--------------------------------------*/

// Load Syntax Highlighter
function admincssmu_register_highlighter( $hook ) {
	if ( 'appearance_page_admin-css-mu' === $hook ) {
		wp_enqueue_style( 'highlighter-css', plugins_url( basename( dirname( __FILE__ ) ) . '/highlighter/codemirror.css' ) );
		wp_enqueue_script( 'highlighter-js', plugins_url( basename( dirname( __FILE__ ) ) . '/highlighter/codemirror.js' ), array(), '20140329', true );
		wp_enqueue_script( 'highlighter-css-js', plugins_url( basename( dirname( __FILE__ ) ) . '/highlighter/css.js' ), array(), '20140329', true );
	}
}
add_action( 'admin_enqueue_scripts', 'admincssmu_register_highlighter' );


// Sanitize CSS with CSS Tidy - Uses CSS Tidy Modified By The Jetpack Team. 
function admincssmu_clean_css_with_csstidy ( $input ) {
	$input['admincssmu_admin_css'] 		= admincssmu_csstidy_helper ( $input['admincssmu_admin_css'] );
	return $input;
}

// Scrub And Clean With CSS Tidy
function admincssmu_csstidy_helper ( $css, $minify=false ) {
	
	include_once('csstidy/class.csstidy.php');
	
	$csstidy = new csstidy();
	$csstidy->set_cfg( 'remove_bslash',              false );
	$csstidy->set_cfg( 'compress_colors',            false );
	$csstidy->set_cfg( 'compress_font-weight',       false );
	$csstidy->set_cfg( 'optimise_shorthands',        0 );
	$csstidy->set_cfg( 'remove_last_;',              false );
	$csstidy->set_cfg( 'case_properties',            false );
	$csstidy->set_cfg( 'discard_invalid_properties', true );
	$csstidy->set_cfg( 'css_level',                  'CSS3.0' );
	$csstidy->set_cfg( 'preserve_css',               true );
	
	if ($minify === false) {
		$csstidy->set_cfg( 'template', dirname( __FILE__ ) . '/csstidy/wordpress-standard.tpl' );
	} else {
		$csstidy->set_cfg( 'template', 'highest');
	}
	
	$css = preg_replace( '/\\\\([0-9a-fA-F]{4})/', '\\\\\\\\$1', $css );
	$css = str_replace( '<=', '&lt;=', $css );
	$css = wp_kses_split( $css, array(), array() );
	$css = str_replace( '&gt;', '>', $css ); // kses replaces lone '>' with &gt;
	$css = strip_tags( $css );
	
	$csstidy->parse( $css );
	$css = $csstidy->print->plain();

	return $css;
}

// Admin Interface: Appearance > Admin CSS MU
function admincssmu_admin_interface_render () {

	if ( is_multisite() ) {
		$admincssmu_custom_css_option = get_blog_option( get_current_blog_id(), 'admincssmu_custom_css' );
	}
	else {
		$admincssmu_custom_css_option = get_option( 'admincssmu_custom_css' );
	}
	
	$admincssmu_admin_css_content = isset( $admincssmu_custom_css_option['admincssmu_admin_css'] ) && ! empty( $admincssmu_custom_css_option['admincssmu_admin_css'] ) ? $admincssmu_custom_css_option['admincssmu_admin_css'] : __( "/* Enter Your Custom Admin CSS Here */\r\n", 'admin-css-mu' );

?>
	<div class="wrap">
		<h1><?php _e('Admin CSS MU','admin-css-mu') ?></h1>
		<p><?php _e('Enter your custom CSS below and it will be loaded on all Admin Pages.','admin-css-mu') ?></p>
		
		<form method="post" action="options.php" enctype="multipart/form-data">
		
			<?php settings_fields( 'admincssmu_settings_group' ); ?>

			<textarea rows="10" class="large-text code" id="admincssmu_custom_css[admincssmu_admin_css]" name="admincssmu_custom_css[admincssmu_admin_css]"><?php echo esc_textarea( $admincssmu_admin_css_content ); ?></textarea><br>
			
			<div style="margin-top: 5px;">
				<input type="checkbox" name="admincssmu_custom_css[load_css]" id="admincssmu_custom_css[load_css]" value="1" 
				<?php if ( isset( $admincssmu_custom_css_option['load_css'] ) ) { checked( '1', $admincssmu_custom_css_option['load_css'] ); } ?>>
				<label for="admincssmu_custom_css[load_css]" style="vertical-align: unset;"><?php _e('Load Admin CSS', 'admin-css-mu') ?></label>
			</div>
			
			<div style="margin-top: 5px;">
				<input type="checkbox" name="admincssmu_custom_css[minfy_css]" id="admincssmu_custom_css[minfy_css]" value="1"
					<?php if ( isset( $admincssmu_custom_css_option['minfy_css'] ) ) { checked( '1', $admincssmu_custom_css_option['minfy_css'] ); } ?>>
					<label for="admincssmu_custom_css[minfy_css]" style="vertical-align: unset;"><?php _e('Minify CSS', 'admin-css-mu') ?></label>
			</div>
			
			<?php submit_button( __( 'Save CSS', 'admin-css-mu' ), 'primary', 'submit', true ); ?>
		</form>
		
		<?php // Highlighter ?>
		<script language="javascript">
			jQuery( document ).ready( function() {
				var editor_admin_css = CodeMirror.fromTextArea( document.getElementById( "admincssmu_custom_css[admincssmu_admin_css]" ), {lineNumbers: true, lineWrapping: true} );
			});
		</script>
	</div><?php
}



/*----------------------------------*/
/*			Load CSS Styles			*/
/*----------------------------------*/

// Load Admin CSS Submited Via Admin
function admincssmu_load_admin_css_from_admin() { 
	
	if ( is_multisite() ) {
		$admincssmu_custom_css_option = get_blog_option( SITE_ID_CURRENT_SITE, 'admincssmu_custom_css' );
	}
	else {
		$admincssmu_custom_css_option = get_option( 'admincssmu_custom_css' );
	}
	
	// Check if Load CSS is checked
	if ( !((isset($admincssmu_custom_css_option['load_css'])) && (boolval($admincssmu_custom_css_option['load_css']))) ) {
		return;
	}
	
	$admincssmu_admin_css_content = isset( $admincssmu_custom_css_option['admincssmu_admin_css'] ) && ! empty( $admincssmu_custom_css_option['admincssmu_admin_css'] ) ? $admincssmu_custom_css_option['admincssmu_admin_css'] : '' ; 
	
	$admincssmu_admin_css_content = wp_kses( $admincssmu_admin_css_content, array( '\'', '\"' ) );
	$admincssmu_admin_css_content = str_replace( '&gt;', '>', $admincssmu_admin_css_content );	
	
	// Minify
	if ( (isset($admincssmu_custom_css_option['minfy_css'])) && (boolval($admincssmu_custom_css_option['minfy_css'])) ) {
		$admincssmu_admin_css_content = admincssmu_csstidy_helper($admincssmu_admin_css_content, true);
	} ?>
    <style type="text/css">
        <?php echo $admincssmu_admin_css_content; ?>
    </style><?php 
}
add_filter( 'admin_enqueue_scripts' , 'admincssmu_load_admin_css_from_admin' );


// Load Admin CSS From /wp-content/themes/custom_admin.css For Backward Compatibility With Version 1.0
if ( file_exists ( get_theme_root() . '/custom_admin.css' )) {
	function admincssmu_load_custom_admin_css() {
		wp_enqueue_style('admincssmu_custom_css', get_theme_root_uri() . '/custom_admin.css');
	}
	add_action( 'admin_enqueue_scripts', 'admincssmu_load_custom_admin_css' );
}

/**
 * Get the boolean value of a variable
 *
 * @param 	mixed 	The scalar value being converted to a boolean.
 * @return 	boolean The boolean value of var.
 * @refer	https://millionclues.com/wordpress-tips/solved-fatal-error-call-to-undefined-function-boolval/
 */
if( !function_exists('boolval')) {
  
  function boolval($var){
    return !! $var;
  }
}