/home/arranoyd/magicraft/wp-content/plugins/autoptimize/classes/autoptimizeConfig.php
<?php
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
class autoptimizeConfig {
private $config = null;
static private $instance = null;
//Singleton: private construct
private function __construct() {
if( is_admin() ) {
//Add the admin page and settings
add_action('admin_menu',array($this,'addmenu'));
add_action('admin_init',array($this,'registersettings'));
//Set meta info
if(function_exists('plugin_row_meta')) {
//2.8+
add_filter('plugin_row_meta',array($this,'setmeta'),10,2);
} elseif(function_exists('post_class')) {
//2.7
$plugin = plugin_basename(AUTOPTIMIZE_PLUGIN_DIR.'autoptimize.php');
add_filter('plugin_action_links_'.$plugin,array($this,'setmeta'));
}
//Clean cache?
if(get_option('autoptimize_cache_clean')) {
autoptimizeCache::clearall();
update_option('autoptimize_cache_clean',0);
}
}
//Add the Autoptimize Toolbar to the Admin bar
//(we loaded outside the verification of is_admin to also be displayed on the frontend toolbar)
$toolbar = new autoptimizeToolbar();
}
static public function instance() {
//Only one instance
if (self::$instance == null) {
self::$instance = new autoptimizeConfig();
}
return self::$instance;
}
public function show() {
?>
<style>
/* title and button */
#ao_title_and_button:after {content:''; display:block; clear:both;}
#ao_adv_button{float:right;}
#ao_hide_adv:before, #ao_show_adv:before {
display: inline-block;
float: left;
height: 20px;
width: 35px;
background: none;
color: #b4b9be;
font: normal 20px/26px dashicons;
letter-spacing: -4px;
text-align: left;
speak: none;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
#ao_hide_adv:before {
content: "\f108 \f142";
}
#ao_show_adv:before {
content: "\f108 \f140";
}
/* animate "show adv" button */
#ao_show_adv { animation: watchmenow 3s linear 5s 10; }
#ao_show_adv:hover { animation: none; }
@keyframes watchmenow {
0% { box-shadow: unset; }
100% { box-shadow: 0px 0px 20px yellow; }
}
/* form */
.itemDetail {
background: #fff;
border: 1px solid #ccc;
padding: 15px;
margin: 15px 10px 10px 0;
}
.itemTitle {
margin-top: 0;
}
input[type=url]:invalid {color: red; border-color:red;} .form-table th{font-weight:100;}
#autoptimize_main .cb_label {display: block; padding-left: 25px; text-indent: -25px;}
/* rss block */
#futtta_feed ul{list-style:outside;}
#futtta_feed {font-size:medium; margin:0px 20px;}
/* banner + unslider */
.autoptimize_banner {
margin: 0 38px;
padding-bottom: 5px;
}
.autoptimize_banner ul li {
font-size:medium;
text-align:center;
}
.unslider {
position:relative;
}
.unslider-arrow {
display: block;
left: unset;
margin-top: -35px;
margin-left: 7px;
margin-right: 7px;
border-radius: 32px;
background: rgba(0, 0, 0, 0.10) no-repeat 50% 50%;
color: rgba(255, 255, 255, 0.8);
font: normal 20px/1 dashicons;
speak: none;
padding: 3px 2px 3px 4px;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.unslider-arrow:hover {
background-color: rgba(0, 0, 0, 0.20);
color: #FFF;
}
.unslider-arrow.prev {
padding: 3px 4px 3px 2px;
}
.unslider-arrow.next {
right: 0px;
}
.unslider-arrow.prev::before {
content: "\f341";
}
.unslider-arrow.next::before {
content: "\f345";
}
/* responsive stuff: hide admin-feed on smaller screens */
@media (min-width: 961px) {
#autoptimize_main {float:left;width:69%;}
#autoptimize_admin_feed{float:right;width:30%;display:block !important;}
}
@media (max-width: 960px) {
#autoptimize_main {width:100%;}
#autoptimize_admin_feed {width:0%;display:none !important;}
}
@media (max-width: 782px) {
#ao_hide_adv span, #ao_show_adv span {display: none;}
#ao_hide_adv,#ao_show_adv {height: 34px;padding: 4px 12px 8px 8px;}
#ao_hide_adv:before,#ao_show_adv:before {font-size: 25px;}
#autoptimize_main input[type="checkbox"] {margin-left: 10px;}
#autoptimize_main .cb_label {display: block; padding-left: 45px; text-indent: -45px;}
}
</style>
<div class="wrap">
<?php if (version_compare(PHP_VERSION, '5.3.0') < 0) { ?>
<div class="notice-error notice"><?php echo '<p>' . sprintf( __('<strong>You are using a very old version of PHP</strong> which will not be supported as from the upcoming Autoptimize 2.4 any more, cfr. <a href=%s>this blogpost for more info</a>. please ask your hoster to provide you with an upgrade path to 7.x.','autoptimize'), '"https://blog.futtta.be/2018/02/13/introducing-zytzagoos-major-changes-for-autoptimize-2-4/" target="_blank"' ) . '</p>'; ?></div>
<?php } ?>
<?php if (defined('AUTOPTIMIZE_LEGACY_MINIFIERS')) { ?>
<div class="notice-error notice"><?php echo '<p>' . sprintf( __('You are forcing Autoptimize to use the "legacy minifiers" by setting the AUTOPTIMIZE_LEGACY_MINIFIERS constant in /wp-config.php. The "legacy minifiers" will not be supported as from the upcoming Autoptimize 2.4 any more, cfr. <a href=%s>this blogpost for more info</a>.','autoptimize'), '"https://blog.futtta.be/2018/02/13/introducing-zytzagoos-major-changes-for-autoptimize-2-4/" target="_blank"') . '</p>'; ?></div>
<?php } ?>
<div id="autoptimize_main">
<div id="ao_title_and_button">
<h1 id="ao_title"><?php _e('Autoptimize Settings','autoptimize'); ?>
<span id="ao_adv_button">
<?php
if (get_option('autoptimize_show_adv','0')=='1') {
?>
<a href="javascript:void(0);" id="ao_show_adv" class="button" style="display:none;"><span><?php _e("Show advanced settings","autoptimize") ?></span></a>
<a href="javascript:void(0);" id="ao_hide_adv" class="button"><span><?php _e("Hide advanced settings","autoptimize") ?></span></a>
<style>tr.ao_adv{display:table-row;} li.ao_adv{display:list-item;}</style>
<?php
$hiddenClass="";
} else {
?>
<a href="javascript:void(0);" id="ao_show_adv" class="button"><span><?php _e("Show advanced settings","autoptimize") ?></span></a>
<a href="javascript:void(0);" id="ao_hide_adv" class="button" style="display:none;"><span><?php _e("Hide advanced settings","autoptimize") ?></span></a>
<?php
$hiddenClass="hidden ";
}
?>
</span>
</h1>
</div>
<?php echo $this->ao_admin_tabs(); ?>
<form method="post" action="options.php">
<?php settings_fields('autoptimize'); ?>
<ul>
<li class="itemDetail">
<h2 class="itemTitle"><?php _e('HTML Options','autoptimize'); ?></h2>
<table class="form-table">
<tr valign="top">
<th scope="row"><?php _e('Optimize HTML Code?','autoptimize'); ?></th>
<td><input type="checkbox" id="autoptimize_html" name="autoptimize_html" <?php echo get_option('autoptimize_html')?'checked="checked" ':''; ?>/></td>
</tr>
<tr class="<?php echo $hiddenClass;?>html_sub ao_adv" valign="top">
<th scope="row"><?php _e('Keep HTML comments?','autoptimize'); ?></th>
<td><label class="cb_label"><input type="checkbox" name="autoptimize_html_keepcomments" <?php echo get_option('autoptimize_html_keepcomments')?'checked="checked" ':''; ?>/>
<?php _e('Enable this if you want HTML comments to remain in the page.','autoptimize'); ?></label></td>
</tr>
</table>
</li>
<li class="itemDetail">
<h2 class="itemTitle"><?php _e('JavaScript Options','autoptimize'); ?></h2>
<table class="form-table">
<tr valign="top">
<th scope="row"><?php _e('Optimize JavaScript Code?','autoptimize'); ?></th>
<td><input type="checkbox" id="autoptimize_js" name="autoptimize_js" <?php echo get_option('autoptimize_js')?'checked="checked" ':''; ?>/></td>
</tr>
<tr valign="top" class="<?php echo $hiddenClass;?>js_sub ao_adv">
<th scope="row"><?php _e('Force JavaScript in <head>?','autoptimize'); ?></th>
<td><label class="cb_label"><input type="checkbox" name="autoptimize_js_forcehead" <?php echo get_option('autoptimize_js_forcehead')?'checked="checked" ':''; ?>/>
<?php _e('Load JavaScript early, this can potentially fix some JS-errors, but makes the JS render blocking.','autoptimize'); ?></label></td>
</tr>
<?php if (get_option('autoptimize_js_justhead')) { ?>
<tr valign="top" class="<?php echo $hiddenClass;?>js_sub ao_adv">
<th scope="row"><?php _e('Look for scripts only in <head>?','autoptimize'); echo ' <i>'. __('(deprecated)','autoptimize') . '</i>'; ?></th>
<td><label class="cb_label"><input type="checkbox" name="autoptimize_js_justhead" <?php echo get_option('autoptimize_js_justhead')?'checked="checked" ':''; ?>/>
<?php _e('Mostly useful in combination with previous option when using jQuery-based templates, but might help keeping cache size under control.','autoptimize'); ?></label></td>
</tr>
<?php } ?>
<tr valign="top" class="<?php echo $hiddenClass;?>js_sub ao_adv">
<th scope="row"><?php _e('Also aggregate inline JS?','autoptimize'); ?></th>
<td><label class="cb_label"><input type="checkbox" name="autoptimize_js_include_inline" <?php echo get_option('autoptimize_js_include_inline')?'checked="checked" ':''; ?>/>
<?php _e('Let Autoptimize also extract JS from the HTML. <strong>Warning</strong>: this can make Autoptimize\'s cache size grow quickly, so only enable this if you know what you\'re doing.','autoptimize'); ?></label></td>
</tr>
<tr valign="top" class="<?php echo $hiddenClass;?>js_sub ao_adv">
<th scope="row"><?php _e('Exclude scripts from Autoptimize:','autoptimize'); ?></th>
<td><label><input type="text" style="width:100%;" name="autoptimize_js_exclude" value="<?php echo get_option('autoptimize_js_exclude',"seal.js, js/jquery/jquery.js"); ?>"/><br />
<?php _e('A comma-separated list of scripts you want to exclude from being optimized, for example \'whatever.js, another.js\' (without the quotes) to exclude those scripts from being aggregated and minimized by Autoptimize.','autoptimize'); ?></label></td>
</tr>
<tr valign="top" class="<?php echo $hiddenClass;?>js_sub ao_adv">
<th scope="row"><?php _e('Add try-catch wrapping?','autoptimize'); ?></th>
<td><label class="cb_label"><input type="checkbox" name="autoptimize_js_trycatch" <?php echo get_option('autoptimize_js_trycatch')?'checked="checked" ':''; ?>/>
<?php _e('If your scripts break because of a JS-error, you might want to try this.','autoptimize'); ?></label></td>
</tr>
</table>
</li>
<li class="itemDetail">
<h2 class="itemTitle"><?php _e('CSS Options','autoptimize'); ?></h2>
<table class="form-table">
<tr valign="top">
<th scope="row"><?php _e('Optimize CSS Code?','autoptimize'); ?></th>
<td><input type="checkbox" id="autoptimize_css" name="autoptimize_css" <?php echo get_option('autoptimize_css')?'checked="checked" ':''; ?>/></td>
</tr>
<tr class="<?php echo $hiddenClass;?>css_sub ao_adv" valign="top">
<th scope="row"><?php _e('Generate data: URIs for images?','autoptimize'); ?></th>
<td><label class="cb_label"><input type="checkbox" name="autoptimize_css_datauris" <?php echo get_option('autoptimize_css_datauris')?'checked="checked" ':''; ?>/>
<?php _e('Enable this to include small background-images in the CSS itself instead of as separate downloads.','autoptimize'); ?></label></td>
</tr>
<?php if (get_option('autoptimize_css_justhead')) { ?>
<tr valign="top" class="<?php echo $hiddenClass;?>css_sub ao_adv">
<th scope="row"><?php _e('Look for styles only in <head>?','autoptimize'); echo ' <i>'. __('(deprecated)','autoptimize') . '</i>'; ?></th>
<td><label class="cb_label"><input type="checkbox" name="autoptimize_css_justhead" <?php echo get_option('autoptimize_css_justhead')?'checked="checked" ':''; ?>/>
<?php _e('Don\'t autoptimize CSS outside the head-section. If the cache gets big, you might want to enable this.','autoptimize'); ?></label></td>
</tr>
<?php } ?>
<tr valign="top" class="<?php echo $hiddenClass;?>css_sub ao_adv">
<th scope="row"><?php _e('Also aggregate inline CSS?','autoptimize'); ?></th>
<td><label class="cb_label"><input type="checkbox" name="autoptimize_css_include_inline" <?php echo get_option('autoptimize_css_include_inline','1')?'checked="checked" ':''; ?>/>
<?php _e('Check this option for Autoptimize to also aggregate CSS in the HTML.','autoptimize'); ?></label></td>
</tr>
<tr valign="top" class="<?php echo $hiddenClass;?>css_sub ao_adv">
<th scope="row"><?php _e('Inline and Defer CSS?','autoptimize'); ?></th>
<td><label class="cb_label"><input type="checkbox" name="autoptimize_css_defer" id="autoptimize_css_defer" <?php echo get_option('autoptimize_css_defer')?'checked="checked" ':''; ?>/>
<?php _e('Inline "above the fold CSS" while loading the main autoptimized CSS only after page load. <a href="http://wordpress.org/plugins/autoptimize/faq/" target="_blank">Check the FAQ</a> before activating this option!','autoptimize'); ?></label></td>
</tr>
<tr valign="top" class="<?php echo $hiddenClass;?>css_sub ao_adv" id="autoptimize_css_defer_inline">
<th scope="row"></th>
<td><label><textarea rows="10" cols="10" style="width:100%;" placeholder="<?php _e('Paste the above the fold CSS here.','autoptimize'); ?>" name="autoptimize_css_defer_inline"><?php echo get_option('autoptimize_css_defer_inline'); ?></textarea></label></td>
</tr>
<tr valign="top" class="<?php echo $hiddenClass;?>ao_adv css_sub">
<th scope="row"><?php _e('Inline all CSS?','autoptimize'); ?></th>
<td><label class="cb_label"><input type="checkbox" id="autoptimize_css_inline" name="autoptimize_css_inline" <?php echo get_option('autoptimize_css_inline')?'checked="checked" ':''; ?>/>
<?php _e('Inlining all CSS can improve performance for sites with a low pageviews/ visitor-rate, but may slow down performance otherwise.','autoptimize'); ?></label></td>
</tr>
<tr valign="top" class="<?php echo $hiddenClass;?>ao_adv css_sub">
<th scope="row"><?php _e('Exclude CSS from Autoptimize:','autoptimize'); ?></th>
<td><label><input type="text" style="width:100%;" name="autoptimize_css_exclude" value="<?php echo get_option('autoptimize_css_exclude','wp-content/cache/, wp-content/uploads/, admin-bar.min.css, dashicons.min.css'); ?>"/><br />
<?php _e('A comma-separated list of CSS you want to exclude from being optimized.','autoptimize'); ?></label></td>
</tr>
</table>
</li>
<li class="itemDetail">
<h2 class="itemTitle"><?php _e('CDN Options','autoptimize'); ?></h2>
<table class="form-table">
<tr valign="top">
<th scope="row"><?php _e('CDN Base URL','autoptimize'); ?></th>
<td><label><input id="cdn_url" type="text" name="autoptimize_cdn_url" pattern="^(https?:)?\/\/([\da-z\.-]+)\.([\da-z\.]{2,6})([\/\w \.-]*)*(:\d{2,5})?\/?$" style="width:100%" value="<?php echo esc_url(get_option('autoptimize_cdn_url',''),array("http","https")); ?>" /><br />
<?php _e('Enter your CDN root URL to enable CDN for Autoptimized files. The URL can be http, https or protocol-relative (e.g. <code>//cdn.example.com/</code>). This is not needed for Cloudflare.','autoptimize'); ?></label></td>
</tr>
</table>
</li>
<li class="<?php echo $hiddenClass;?>itemDetail ao_adv">
<h2 class="itemTitle"><?php _e('Cache Info','autoptimize'); ?></h2>
<table class="form-table" >
<tr valign="top" class="<?php echo $hiddenClass;?>ao_adv">
<th scope="row"><?php _e('Cache folder','autoptimize'); ?></th>
<td><?php echo htmlentities(AUTOPTIMIZE_CACHE_DIR); ?></td>
</tr>
<tr valign="top" class="<?php echo $hiddenClass;?>ao_adv">
<th scope="row"><?php _e('Can we write?','autoptimize'); ?></th>
<td><?php echo (autoptimizeCache::cacheavail() ? __('Yes','autoptimize') : __('No','autoptimize')); ?></td>
</tr>
<tr valign="top" class="<?php echo $hiddenClass;?>ao_adv">
<th scope="row"><?php _e('Cached styles and scripts','autoptimize'); ?></th>
<td><?php
$AOstatArr=autoptimizeCache::stats();
$AOcacheSize=round($AOstatArr[1]/1024);
printf( __( '%1$s files, totalling %2$s Kbytes (calculated at %3$s)', 'autoptimize'), $AOstatArr[0], $AOcacheSize, date("H:i e", $AOstatArr[2]) );
?></td>
</tr>
</table>
</li>
<li class="<?php echo $hiddenClass;?>itemDetail ao_adv">
<h2 class="itemTitle"><?php _e('Misc Options','autoptimize'); ?></h2>
<table class="form-table">
<tr valign="top" class="<?php echo $hiddenClass;?>ao_adv">
<th scope="row"><?php _e('Save aggregated script/css as static files?','autoptimize'); ?></th>
<td><label class="cb_label"><input type="checkbox" name="autoptimize_cache_nogzip" <?php echo get_option('autoptimize_cache_nogzip','1')?'checked="checked" ':''; ?>/>
<?php _e('By default files saved are static css/js, uncheck this option if your webserver doesn\'t properly handle the compression and expiry.','autoptimize'); ?></label>
</td>
</tr>
<tr valign="top" class="<?php echo $hiddenClass;?>ao_adv">
<th scope="row"><?php _e('Also optimize for logged in users?','autoptimize'); ?></th>
<td><label class="cb_label"><input type="checkbox" name="autoptimize_optimize_logged" <?php echo get_option('autoptimize_optimize_logged','1')?'checked="checked" ':''; ?>/>
<?php _e('By default Autoptimize is also active for logged on users, uncheck not to optimize when logged in e.g. to use a pagebuilder.','autoptimize'); ?></label>
</td>
</tr>
<?php
if ( function_exists("is_checkout") || function_exists("is_cart") || function_exists("edd_is_checkout") || function_exists("wpsc_is_cart") || function_exists("wpsc_is_checkout") ) {
?>
<tr valign="top" class="<?php echo $hiddenClass;?>ao_adv">
<th scope="row"><?php _e('Also optimize shop cart/ checkout?','autoptimize'); ?></th>
<td><label class="cb_label"><input type="checkbox" name="autoptimize_optimize_checkout" <?php echo get_option('autoptimize_optimize_checkout','1')?'checked="checked" ':''; ?>/>
<?php _e('By default Autoptimize is also active on your shop\'s cart/ checkout, uncheck not to optimize those.','autoptimize'); ?></label>
</td>
</tr>
<?php
}
?>
</table>
</li>
</ul>
<input type="hidden" id="autoptimize_show_adv" name="autoptimize_show_adv" value="<?php echo get_option('autoptimize_show_adv','0'); ?>">
<p class="submit">
<input type="submit" class="button-secondary" value="<?php _e('Save Changes','autoptimize') ?>" />
<input type="submit" class="button-primary" name="autoptimize_cache_clean" value="<?php _e('Save Changes and Empty Cache','autoptimize') ?>" />
</p>
</form>
</div>
<div id="autoptimize_admin_feed" class="hidden">
<div class="autoptimize_banner hidden">
<ul>
<?php
if (apply_filters('autoptimize_settingsscreen_remotehttp',true)) {
$AO_banner=get_transient("autoptimize_banner");
if (empty($AO_banner)) {
$banner_resp = wp_remote_get("http://misc.optimizingmatters.com/autoptimize_news.html");
if (!is_wp_error($banner_resp)) {
if (wp_remote_retrieve_response_code($banner_resp)=="200") {
$AO_banner = wp_kses_post(wp_remote_retrieve_body($banner_resp));
set_transient("autoptimize_banner",$AO_banner,DAY_IN_SECONDS);
}
}
}
echo $AO_banner;
}
?>
<li><?php _e("Need help? <a href='https://wordpress.org/plugins/autoptimize/faq/'>Check out the FAQ here</a>.","autoptimize"); ?></li>
<li><?php _e("Happy with Autoptimize?","autoptimize"); ?><br /><a href="<?php echo network_admin_url(); ?>plugin-install.php?tab=search&type=author&s=optimizingmatters"><?php _e("Try my other plugins!","autoptimize"); ?></a></li>
</ul>
</div>
<div style="margin-left:10px;margin-top:-5px;">
<h2>
<?php _e("futtta about","autoptimize") ?>
<select id="feed_dropdown" >
<option value="1"><?php _e("Autoptimize","autoptimize") ?></option>
<option value="2"><?php _e("WordPress","autoptimize") ?></option>
<option value="3"><?php _e("Web Technology","autoptimize") ?></option>
</select>
</h2>
<div id="futtta_feed">
<div id="autoptimizefeed">
<?php $this->getFutttaFeeds("http://feeds.feedburner.com/futtta_autoptimize"); ?>
</div>
<div id="wordpressfeed">
<?php $this->getFutttaFeeds("http://feeds.feedburner.com/futtta_wordpress"); ?>
</div>
<div id="webtechfeed">
<?php $this->getFutttaFeeds("http://feeds.feedburner.com/futtta_webtech"); ?>
</div>
</div>
</div>
<div style="float:right;margin:50px 15px;"><a href="http://blog.futtta.be/2013/10/21/do-not-donate-to-me/" target="_blank"><img width="100px" height="85px" src="<?php echo plugins_url().'/'.plugin_basename(dirname(__FILE__)).'/external/do_not_donate_smallest.png'; ?>" title="<?php _e("Do not donate for this plugin!","autoptimize"); ?>"></a></div>
</div>
<script type="text/javascript">
var feed = new Array;
feed[1]="autoptimizefeed";
feed[2]="wordpressfeed";
feed[3]="webtechfeed";
cookiename="autoptimize_feed";
jQuery(document).ready(function() {
check_ini_state();
jQuery('#autoptimize_admin_feed').fadeTo("slow",1).show();
jQuery('.autoptimize_banner').unslider({autoplay:true, delay:3500, infinite: false, arrows:{prev:'<a class="unslider-arrow prev"></a>', next:'<a class="unslider-arrow next"></a>'}}).fadeTo("slow",1).show();
jQuery( "#feed_dropdown" ).change(function() {
jQuery("#futtta_feed").fadeTo(0,0);
jQuery("#futtta_feed").fadeTo("slow",1);
});
jQuery( "#ao_show_adv" ).click(function() {
jQuery( "#ao_show_adv" ).hide();
jQuery( "#ao_hide_adv" ).show();
jQuery( ".ao_adv" ).removeClass("hidden");
jQuery( ".ao_adv" ).show("slow");
if (jQuery("#autoptimize_css").attr('checked')) {
jQuery(".css_sub:visible").fadeTo("fast",1);
if (!jQuery("#autoptimize_css_defer").attr('checked')) {
jQuery("#autoptimize_css_defer_inline").hide();
}
}
if (jQuery("#autoptimize_js").attr('checked')) {
jQuery(".js_sub:visible").fadeTo("fast",1);
}
check_ini_state()
jQuery( "input#autoptimize_show_adv" ).val("1");
});
jQuery( "#ao_hide_adv" ).click(function() {
jQuery( "#ao_hide_adv" ).hide();
jQuery( "#ao_show_adv" ).show();
jQuery( ".ao_adv" ).hide("slow");
jQuery( ".ao_adv" ).addClass("hidden");
if (!jQuery("#autoptimize_css").attr('checked')) {
jQuery(".css_sub:visible").fadeTo("fast",.33);
}
if (!jQuery("#autoptimize_js").attr('checked')) {
jQuery(".js_sub:visible").fadeTo("fast",.33);
}
check_ini_state()
jQuery( "input#autoptimize_show_adv" ).val("0");
});
jQuery( "#autoptimize_html" ).change(function() {
if (this.checked) {
jQuery(".html_sub:visible").fadeTo("fast",1);
} else {
jQuery(".html_sub:visible").fadeTo("fast",.33);
}
});
jQuery( "#autoptimize_js" ).change(function() {
if (this.checked) {
jQuery(".js_sub:visible").fadeTo("fast",1);
} else {
jQuery(".js_sub:visible").fadeTo("fast",.33);
}
});
jQuery( "#autoptimize_css" ).change(function() {
if (this.checked) {
jQuery(".css_sub:visible").fadeTo("fast",1);
} else {
jQuery(".css_sub:visible").fadeTo("fast",.33);
}
});
jQuery( "#autoptimize_css_inline" ).change(function() {
if (this.checked) {
jQuery("#autoptimize_css_defer").prop("checked",false);
jQuery("#autoptimize_css_defer_inline").hide("slow");
}
});
jQuery( "#autoptimize_css_defer" ).change(function() {
if (this.checked) {
jQuery("#autoptimize_css_inline").prop("checked",false);
jQuery("#autoptimize_css_defer_inline").show("slow");
} else {
jQuery("#autoptimize_css_defer_inline").hide("slow");
}
});
jQuery("#feed_dropdown").change(function() { show_feed(jQuery("#feed_dropdown").val()) });
feedid=jQuery.cookie(cookiename);
if(typeof(feedid) !== "string") feedid=1;
show_feed(feedid);
})
// validate cdn_url
var cdn_url=document.getElementById("cdn_url");
cdn_url_baseCSS=cdn_url.style.cssText;
if ("validity" in cdn_url) {
jQuery("#cdn_url").focusout(function (event) {
if (cdn_url.validity.valid) {
cdn_url.style.cssText=cdn_url_baseCSS;
} else {
cdn_url.style.cssText=cdn_url_baseCSS+"border:1px solid #f00;color:#f00;box-shadow: 0 0 2px #f00;";
}});
}
function check_ini_state() {
if (!jQuery("#autoptimize_css_defer").attr('checked')) {
jQuery("#autoptimize_css_defer_inline").hide();
}
if (!jQuery("#autoptimize_html").attr('checked')) {
jQuery(".html_sub:visible").fadeTo('fast',.33);
}
if (!jQuery("#autoptimize_css").attr('checked')) {
jQuery(".css_sub:visible").fadeTo('fast',.33);
}
if (!jQuery("#autoptimize_js").attr('checked')) {
jQuery(".js_sub:visible").fadeTo('fast',.33);
}
}
function show_feed(id) {
jQuery('#futtta_feed').children().hide();
jQuery('#'+feed[id]).show();
jQuery("#feed_dropdown").val(id);
jQuery.cookie(cookiename,id,{ expires: 365 });
}
</script>
</div>
<?php
}
public function addmenu() {
$hook=add_options_page(__('Autoptimize Options','autoptimize'),'Autoptimize','manage_options','autoptimize',array($this,'show'));
add_action( 'admin_print_scripts-'.$hook,array($this,'autoptimize_admin_scripts'));
add_action( 'admin_print_styles-'.$hook,array($this,'autoptimize_admin_styles'));
}
public function autoptimize_admin_scripts() {
wp_enqueue_script('jqcookie', plugins_url('/external/js/jquery.cookie.min.js', __FILE__), array('jquery'),null,true);
wp_enqueue_script('unslider', plugins_url('/external/js/unslider-min.js', __FILE__), array('jquery'),null,true);
}
public function autoptimize_admin_styles() {
wp_enqueue_style('unslider', plugins_url('/external/js/unslider.css', __FILE__));
wp_enqueue_style('unslider-dots', plugins_url('/external/js/unslider-dots.css', __FILE__));
}
public function registersettings() {
register_setting('autoptimize','autoptimize_html');
register_setting('autoptimize','autoptimize_html_keepcomments');
register_setting('autoptimize','autoptimize_js');
register_setting('autoptimize','autoptimize_js_exclude');
register_setting('autoptimize','autoptimize_js_trycatch');
register_setting('autoptimize','autoptimize_js_justhead');
register_setting('autoptimize','autoptimize_js_forcehead');
register_setting('autoptimize','autoptimize_js_include_inline');
register_setting('autoptimize','autoptimize_css');
register_setting('autoptimize','autoptimize_css_exclude');
register_setting('autoptimize','autoptimize_css_justhead');
register_setting('autoptimize','autoptimize_css_datauris');
register_setting('autoptimize','autoptimize_css_defer');
register_setting('autoptimize','autoptimize_css_defer_inline');
register_setting('autoptimize','autoptimize_css_inline');
register_setting('autoptimize','autoptimize_css_include_inline');
register_setting('autoptimize','autoptimize_cdn_url');
register_setting('autoptimize','autoptimize_cache_clean');
register_setting('autoptimize','autoptimize_cache_nogzip');
register_setting('autoptimize','autoptimize_show_adv');
register_setting('autoptimize','autoptimize_optimize_logged');
register_setting('autoptimize','autoptimize_optimize_checkout');
}
public function setmeta($links,$file=null) {
//Inspired on http://wpengineer.com/meta-links-for-wordpress-plugins/
//Do it only once - saves time
static $plugin;
if(empty($plugin))
$plugin = plugin_basename(AUTOPTIMIZE_PLUGIN_DIR.'autoptimize.php');
if($file===null) {
//2.7
$settings_link = sprintf('<a href="options-general.php?page=autoptimize">%s</a>', __('Settings'));
array_unshift($links,$settings_link);
} else {
//2.8
//If it's us, add the link
if($file === $plugin) {
$newlink = array(sprintf('<a href="options-general.php?page=autoptimize">%s</a>',__('Settings')));
$links = array_merge($links,$newlink);
}
}
return $links;
}
public function get($key) {
if(!is_array($this->config)) {
//Default config
$config = array('autoptimize_html' => 0,
'autoptimize_html_keepcomments' => 0,
'autoptimize_js' => 0,
'autoptimize_js_exclude' => "seal.js, js/jquery/jquery.js",
'autoptimize_js_trycatch' => 0,
'autoptimize_js_justhead' => 0,
'autoptimize_js_include_inline' => 0,
'autoptimize_js_forcehead' => 0,
'autoptimize_css' => 0,
'autoptimize_css_exclude' => "admin-bar.min.css, dashicons.min.css, wp-content/cache/, wp-content/uploads/",
'autoptimize_css_justhead' => 0,
'autoptimize_css_include_inline' => 1,
'autoptimize_css_defer' => 0,
'autoptimize_css_defer_inline' => "",
'autoptimize_css_inline' => 0,
'autoptimize_css_datauris' => 0,
'autoptimize_cdn_url' => "",
'autoptimize_cache_nogzip' => 1,
'autoptimize_show_adv' => 0,
'autoptimize_optimize_logged' => 1,
'autoptimize_optimize_checkout' => 1
);
//Override with user settings
foreach(array_keys($config) as $name) {
$conf = get_option($name);
if($conf!==false) {
//It was set before!
$config[$name] = $conf;
}
}
//Save for next question
$this->config = apply_filters( 'autoptimize_filter_get_config', $config );
}
if(isset($this->config[$key]))
return $this->config[$key];
return false;
}
private function getFutttaFeeds($url) {
if (apply_filters('autoptimize_settingsscreen_remotehttp',true)) {
$rss = fetch_feed( $url );
$maxitems = 0;
if ( ! is_wp_error( $rss ) ) {
$maxitems = $rss->get_item_quantity( 7 );
$rss_items = $rss->get_items( 0, $maxitems );
}
?>
<ul>
<?php if ( $maxitems == 0 ) : ?>
<li><?php _e( 'No items', 'autoptimize' ); ?></li>
<?php else : ?>
<?php foreach ( $rss_items as $item ) : ?>
<li>
<a href="<?php echo esc_url( $item->get_permalink() ); ?>"
title="<?php printf( __( 'Posted %s', 'autoptimize' ), $item->get_date('j F Y | g:i a') ); ?>">
<?php echo esc_html( $item->get_title() ); ?>
</a>
</li>
<?php endforeach; ?>
<?php endif; ?>
</ul>
<?php
}
}
// based on http://wordpress.stackexchange.com/a/58826
static function ao_admin_tabs(){
$tabs = apply_filters('autoptimize_filter_settingsscreen_tabs',array('autoptimize' => __('Main','autoptimize')));
$tabContent="";
if (count($tabs)>1) {
if(isset($_GET['page'])){
$currentId = $_GET['page'];
} else {
$currentId = "autoptimize";
}
$tabContent .= "<h2 class=\"nav-tab-wrapper\">";
foreach($tabs as $tabId => $tabName){
if($currentId == $tabId){
$class = " nav-tab-active";
} else{
$class = "";
}
$tabContent .= '<a class="nav-tab'.$class.'" href="?page='.$tabId.'">'.$tabName.'</a>';
}
$tabContent .= "</h2>";
} else {
$tabContent = "<hr/>";
}
return $tabContent;
}
}