Sindbad~EG File Manager
<?php
class SinglePreloadWPFC{
public static $id = 0;
public static $urls = array();
public static function init($id = false){
if($id){
self::set_id($id);
}else if(isset($_GET["post"]) && $_GET["post"]){
self::set_id($_GET["post"]);
}
SinglePreloadWPFC::set_urls();
SinglePreloadWPFC::set_urls_with_terms();
}
public static function add_meta_box(){
add_meta_box(
'auto_cache_custom_meta_box', // this is HTML id
'Auto Cache Settings',
array("SinglePreloadWPFC", "auto_cache_custom_box_html"), // the callback function
array('page', 'post', 'product'),
'side',
'high'
);
}
public static function auto_cache_custom_box_html(){
$yes_selected = "";
$no_selected = "";
if($data = get_option("WpFastestCache_autocache")){
if($data == "yes"){
$yes_selected = "selected";
}else if($data == "no"){
$no_selected = "selected";
}
}else{
$no_selected = "selected";
}
?>
<p>
<label>Enable:</label>
<select data-type='auto-cache-enable'>
<option <?php echo $yes_selected; ?> value="yes">Yes</option>
<option <?php echo $no_selected; ?> value="no">No</option>
</select>
<span class="spinner" style="float: none;display: inline-block;margin:0;"></span>
</p>
<p id="wpfc-single-preload-process" style="display: none;">
<label>Status: <span id="wpfc-single-preload-status-runnig">Running</span><span id="wpfc-single-preload-status-completed" style="display: none; color: #33CD32; font-weight: bold;">Completed</span></label><br>
<label>Total: <span id="wpfc-single-preload-total-number"><?php echo count(self::$urls); ?></span></label><br>
<label>Cached: <span id="wpfc-single-preload-cached-number">0</span></label><br>
<label>Errors: <span id="wpfc-single-preload-error-number">0</span></label>
</p>
<p class="post-attributes-help-text">The cache will be created automatically after the contents are saved. <a href="https://www.wpfastestcache.com/features/automatic-cache/" target="_blank">More Info</a></p>
<script type="text/javascript">
var Wpfc_Single_Preload_save_settings = function(){
var enable_form = jQuery("#auto_cache_custom_meta_box select[data-type='auto-cache-enable']");
if(enable_form.length == 1){
enable_form.change(function(){
enable_form.attr("disabled", true);
jQuery("#auto_cache_custom_meta_box span.spinner").css({"visibility" : "visible"});
jQuery.ajax({
type: 'POST',
url: ajaxurl,
data: {"action": "wpfc_preload_single_save_settings", "is_enable": jQuery(this).val(), "nonce" : wpfc_nonce},
dataType: "json",
cache: false,
success: function(data){
enable_form.attr("disabled", false);
jQuery("#auto_cache_custom_meta_box span.spinner").css({"visibility" : "hidden"});
console.log(data);
},
error: function(error){
enable_form.attr("disabled", false);
jQuery("#auto_cache_custom_meta_box span.spinner").css({"visibility" : "hidden"});
console.log(error.statusText);
}
});
});
}
};
Wpfc_Single_Preload_save_settings();
</script>
<?php
// Add the HTML for the post meta
}
public static function save_settings(){
if(current_user_can('manage_options')){
$res = array("success" => true);
if(get_option("WpFastestCache_autocache")){
update_option("WpFastestCache_autocache", sanitize_text_field($_POST["is_enable"]));
}else{
add_option("WpFastestCache_autocache", sanitize_text_field($_POST["is_enable"]), null, "yes");
}
wp_send_json($res);
}
wp_die("Must be admin");
}
public static function set_id($id) {
$id = (int)$id;
if(get_post_status($id) === "publish"){
self::$id = $id;
}
}
public static function create_cache_for_all_urls(){
if(preg_match("/include\s*\(\s*[\'\"]\/themes\//i", wp_debug_backtrace_summary())){
return array("success" => false, "error_message" => "You cannot call this function in any theme file");
}
if(empty(self::$urls)){
return false;
}
$res_arr = array();
foreach (self::$urls as $url) {
$res = $GLOBALS["wp_fastest_cache"]->wpfc_remote_get($url["url"], $url["user-agent"]);
array_push($res_arr, array("url" => $url["url"], "success" => $res));
}
return $res_arr;
}
public static function create_cache(){
$res = $GLOBALS["wp_fastest_cache"]->wpfc_remote_get($_GET["url"], $_GET["user_agent"]);
if($res){
die("true");
}
}
public static function is_mobile_active(){
if(isset($GLOBALS["wp_fastest_cache_options"]->wpFastestCacheMobile) && isset($GLOBALS["wp_fastest_cache_options"]->wpFastestCacheMobileTheme)){
return true;
}else{
return false;
}
}
public static function set_term_urls($term_taxonomy_id){
$term = get_term_by("term_taxonomy_id", $term_taxonomy_id);
if($term && !is_wp_error($term)){
$url = get_term_link($term->term_id, $term->taxonomy);
array_push(static::$urls, array("url" => $url, "user-agent" => "WP Fastest Cache Preload Bot"));
if(self::is_mobile_active()){
array_push(static::$urls, array("url" => $url, "user-agent" => "WP Fastest Cache Preload iPhone Mobile Bot"));
}
if($term->parent > 0){
$parent = get_term_by("id", $term->parent, $term->taxonomy);
static::set_term_urls($parent->term_taxonomy_id);
}
}
}
public static function set_urls_with_terms(){
global $wpdb;
$terms = $wpdb->get_results("SELECT * FROM `".$wpdb->prefix."term_relationships` WHERE `object_id`=".static::$id, ARRAY_A);
foreach ($terms as $term_key => $term_val){
static::set_term_urls($term_val["term_taxonomy_id"]);
}
}
public static function set_urls(){
if(static::$id){
$permalink = get_permalink(static::$id);
array_push(static::$urls, array("url" => $permalink, "user-agent" => "WP Fastest Cache Preload Bot"));
if(self::is_mobile_active()){
array_push(static::$urls, array("url" => $permalink, "user-agent" => "WP Fastest Cache Preload iPhone Mobile Bot"));
}
}
}
public static function put_inline_js(){
if($data = get_option("WpFastestCache_autocache")){
if($data == "no"){
return false;
}
}else{
return false;
}
?>
<script type="text/javascript">
var WpfcSinglePreload = {
error_message: "",
init: function(){
jQuery("#wpfc-single-preload-process").show("slow")
},
change_status: function(){
var error_number = jQuery("#wpfc-single-preload-error-number").text();
var cached_number = jQuery("#wpfc-single-preload-cached-number").text();
var total_number = jQuery("#wpfc-single-preload-total-number").text();
error_number = parseInt(error_number);
cached_number = parseInt(cached_number);
total_number = parseInt(total_number);
if(total_number == (cached_number + error_number)){
jQuery("#wpfc-single-preload-status-completed").show();
jQuery("#wpfc-single-preload-status-runnig").hide();
}
},
increase_error: function(){
var number = jQuery("#wpfc-single-preload-error-number").text();
number = parseInt(number) + 1;
jQuery("#wpfc-single-preload-error-number").text(number);
WpfcSinglePreload.change_status();
},
increase_cached: function(){
var number = jQuery("#wpfc-single-preload-cached-number").text();
number = parseInt(number) + 1;
jQuery("#wpfc-single-preload-cached-number").text(number);
WpfcSinglePreload.change_status();
},
running_animation: function(){
let label = jQuery("#wpfc-single-preload-status-runnig");
let text = label.text();
let dot = 0;
label.text(text + ".");
self.interval = setInterval(function(){
text = label.text();
dot = text.match(/\./g);
if(dot){
if(dot.length < 3){
label.text(text + ".");
}else{
label.text(text.replace(/\.+$/, ""));
}
}else{
label.text(text + ".");
}
}, 300);
},
create_cache: function(list){
var action = function(url, user_agent, list){
var self = this;
jQuery("#wpfc-single-preload").show();
jQuery.ajax({
type: 'GET',
url: ajaxurl,
data: {"action": "wpfc_preload_single", "url": url, "user_agent": user_agent, "nonce" : wpfc_nonce},
dataType: "html",
timeout: 10000,
cache: false,
success: function(data){
if(data == "true"){
WpfcSinglePreload.increase_cached();
}else{
self.error_message = data;
WpfcSinglePreload.increase_error();
}
if(typeof list == "object"){
WpfcSinglePreload.create_cache(list);
}
},
error: function(error){
self.error_message = error.statusText;
WpfcSinglePreload.increase_error();
if(typeof list == "object"){
WpfcSinglePreload.create_cache(list);
}
}
});
};
let number_to_used = 3;
let sliced = list.slice(0, number_to_used);
list.splice(0, number_to_used);
jQuery.each(sliced, function( index, value ) {
console.log( value["url"] );
if(index == (number_to_used-1)){
setTimeout(function(){
action(value["url"], value["user-agent"], list);
}, 500);
}else{
setTimeout(function(){
action(value["url"], value["user-agent"], false);
}, 500);
}
});
}
};
jQuery(document).ready(function(){
if(!jQuery("#auto_cache_custom_meta_box").is(":visible")){
return;
}
if(jQuery("#message").find("a").attr("href")){
WpfcSinglePreload.init();
WpfcSinglePreload.running_animation();
WpfcSinglePreload.create_cache(<?php echo json_encode(self::$urls); ?>);
}
});
</script>
<?php
}
}
?>
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists