}else if(is_file($mobile_path)){ @unlink($mobile_path); } } } } } public function singleDeleteCache($comment_id = false, $post_id = false, $to_clear_parents = true){ if($varnish_datas = get_option("WpFastestCacheVarnish")){ include_once('inc/varnish.php'); VarnishWPFC::purge_cache($varnish_datas); } include_once('inc/cdn.php'); CdnWPFC::cloudflare_clear_cache(); $to_clear_feed = true; // not to clear cache of homepage/cats/tags after ajax request by other plugins if(isset($_POST) && isset($_POST["action"])){ // kk Star Rating if($_POST["action"] == "kksr_ajax"){ $to_clear_parents = false; } // All In One Schema.org Rich Snippets if(preg_match("/bsf_(update|submit)_rating/i", $_POST["action"])){ $to_clear_parents = false; } // Yet Another Stars Rating if($_POST["action"] == "yasr_send_visitor_rating"){ $to_clear_parents = false; $post_id = sanitize_text_field($_POST["post_id"]); } // All In One Schema.org Rich Snippets if(preg_match("/bsf_(update|submit)_rating/i", $_POST["action"])){ $to_clear_feed = false; } } if($comment_id){ $comment_id = intval($comment_id); $comment = get_comment($comment_id); if($comment && $comment->comment_post_ID){ $post_id = $comment->comment_post_ID; } } if($post_id){ $post_id = intval($post_id); $permalink = get_permalink($post_id); $permalink = urldecode(get_permalink($post_id)); //for trash contents if(preg_match("/\/\?(p|page_id)\=\d+/i", $permalink)){ $post = get_post($post_id); $clone_post = clone $post; $clone_post->post_status = 'publish'; $permalink = get_permalink($clone_post); $permalink = rtrim($permalink, "/"); $permalink = preg_replace("/__trashed$/", "", $permalink); //for /%postname%/%post_id% : sample-url__trashed/57595 $permalink = preg_replace("/__trashed\/(\d+)$/", "/$1", $permalink); } if(preg_match("/https?:\/\/[^\/]+\/(.+)/", $permalink, $out)){ $path = $this->getWpContentDir("/cache/all/").$out[1]; $mobile_path = $this->getWpContentDir("/cache/wpfc-mobile-cache/").$out[1]; if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){ include_once $this->get_premium_path("logs.php"); $log = new WpFastestCacheLogs("delete"); $log->action(); } $files = array(); if(is_dir($path)){ array_push($files, $path); } if(is_dir($mobile_path)){ array_push($files, $mobile_path); } if(defined('WPFC_CACHE_QUERYSTRING') && WPFC_CACHE_QUERYSTRING){ $files_with_query_string = glob($path."\?*"); $mobile_files_with_query_string = glob($mobile_path."\?*"); if(is_array($files_with_query_string) && (count($files_with_query_string) > 0)){ $files = array_merge($files, $files_with_query_string); } if(is_array($mobile_files_with_query_string) && (count($mobile_files_with_query_string) > 0)){ $files = array_merge($files, $mobile_files_with_query_string); } } if($to_clear_feed){ // to clear cache of /feed if(preg_match("/https?:\/\/[^\/]+\/(.+)/", get_feed_link(), $feed_out)){ array_push($files, $this->getWpContentDir("/cache/all/").$feed_out[1]); } // to clear cache of /comments/feed/ if(preg_match("/https?:\/\/[^\/]+\/(.+)/", get_feed_link("comments_"), $comment_feed_out)){ array_push($files, $this->getWpContentDir("/cache/all/").$comment_feed_out[1]); } } foreach((array)$files as $file){ $this->rm_folder_recursively($file); } } if($to_clear_parents){ // to clear cache of homepage $this->deleteHomePageCache(); // to clear cache of author page $this->delete_author_page_cache($post_id); // to clear sitemap cache $this->delete_sitemap_cache(); // to clear cache of next post and cache of prev post $this->delete_next_prev_cache($post_id); // to clear cache of cats and tags which contains the post (only first page) global $wpdb; $terms = $wpdb->get_results("SELECT * FROM `".$wpdb->prefix."term_relationships` WHERE `object_id`=".$post_id, ARRAY_A); foreach ($terms as $term_key => $term_val){ $this->delete_cache_of_term($term_val["term_taxonomy_id"]); } } $this->delete_multiple_domain_mapping_cache(); } } public function delete_next_prev_cache($post_id){ global $wpdb; $post = get_post($post_id); $next_post_query = "SELECT * FROM `".$wpdb->prefix."posts` WHERE ID = (SELECT min(ID) FROM `".$wpdb->prefix."posts` where ID > ".$post_id." AND `post_type` = '".$post->post_type."' AND `post_status` = 'publish')"; $prev_post_query = "SELECT * FROM `".$wpdb->prefix."posts` WHERE ID = (SELECT max(ID) FROM `".$wpdb->prefix."posts` where ID < ".$post_id." AND `post_type` = '".$post->post_type."' AND `post_status` = 'publish')"; $res = $wpdb->get_results($next_post_query." UNION ".$prev_post_query); if(isset($res[0])){ foreach ($res as $key => $value) { $permalink = urldecode(get_permalink($value->ID)); if(preg_match("/https?:\/\/[^\/]+\/(.+)/", $permalink, $out)){ $path = $this->getWpContentDir("/cache/all/").$out[1]; $mobile_path = $this->getWpContentDir("/cache/wpfc-mobile-cache/").$out[1]; if(is_dir($path)){ $this->rm_folder_recursively($path); } if(is_dir($mobile_path)){ $this->rm_folder_recursively($mobile_path); } } } } } public function delete_sitemap_cache(){ //to clear sitemap.xml and sitemap-(.+).xml $files = array_merge(glob($this->getWpContentDir("/cache/all/")."sitemap*.xml"), glob($this->getWpContentDir("/cache/wpfc-mobile-cache/")."sitemap*.xml")); foreach((array)$files as $file){ $this->rm_folder_recursively($file); } } public function delete_multiple_domain_mapping_cache($minified = false){ //https://wordpress.org/plugins/multiple-domain-mapping-on-single-site/ if($this->isPluginActive("multiple-domain-mapping-on-single-site/multidomainmapping.php")){ $multiple_arr = get_option('falke_mdm_mappings'); if(isset($multiple_arr) && isset($multiple_arr["mappings"]) && isset($multiple_arr["mappings"][0])){ foreach($multiple_arr["mappings"] as $mapping_key => $mapping_value){ if($minified){ $mapping_domain_path = preg_replace("/(\/cache\/[^\/]+\/all\/)/", "/cache/".$mapping_value["domain"]."/", $this->getWpContentDir("/cache/all/")); if(is_dir($mapping_domain_path)){ if(@rename($mapping_domain_path, $this->getWpContentDir("/cache/tmpWpfc/").$mapping_value["domain"]."_".time())){ } } }else{ $mapping_domain_path = preg_replace("/(\/cache\/[^\/]+\/all)/", "/cache/".$mapping_value["domain"]."/all", $this->getWpContentDir("/cache/all/index.html")); @unlink($mapping_domain_path); } } } } } public function delete_author_page_cache($post_id){ $author_id = get_post_field ('post_author', $post_id); $permalink = get_author_posts_url($author_id); if(preg_match("/https?:\/\/[^\/]+\/(.+)/", $permalink, $out)){ $path = $this->getWpContentDir("/cache/all/").$out[1]; $mobile_path = $this->getWpContentDir("/cache/wpfc-mobile-cache/").$out[1]; $this->move_folder_to_tmpWpfc($path); $this->move_folder_to_tmpWpfc($mobile_path); } } public function move_folder_to_tmpWpfc($path = false){ if(!is_dir($this->getWpContentDir("/cache/tmpWpfc"))){ @mkdir($this->getWpContentDir("/cache/tmpWpfc"), 0755, true); } if(!$path){ return false; } if(!is_dir($this->getWpContentDir("/cache/tmpWpfc"))){ return false; } if(is_dir($path)){ preg_match("/\/([^\/]+)\/?$/", $path, $type); if(isset($type[1])){ if(preg_match("/\/cache\/wpfc-mobile-cache\//", $path)){ $type[1] = "m_".$type[1]; } $move_to = $this->getWpContentDir("/cache/tmpWpfc/").$type[1]."_".time(); rename($path, $move_to); } } } public function delete_cache_of_term($term_taxonomy_id){ $term = get_term_by("term_taxonomy_id", $term_taxonomy_id); if(!$term || is_wp_error($term)){ return false; } //if(preg_match("/cat|tag|store|listing/", $term->taxonomy)){} $url = get_term_link($term->term_id, $term->taxonomy); if(preg_match("/^http/", $url)){ $path = preg_replace("/https?\:\/\/[^\/]+/i", "", $url); $path = trim($path, "/"); $path = urldecode($path); // to remove the cache of tag/cat if(file_exists($this->getWpContentDir("/cache/all/").$path."/index.html")){ @unlink($this->getWpContentDir("/cache/all/").$path."/index.html"); } if(file_exists($this->getWpContentDir("/cache/wpfc-mobile-cache/").$path."/index.html")){ @unlink($this->getWpContentDir("/cache/wpfc-mobile-cache/").$path."/index.html"); } // to remove the cache of the pages $this->rm_folder_recursively($this->getWpContentDir("/cache/all/").$path."/page"); $this->rm_folder_recursively($this->getWpContentDir("/cache/wpfc-mobile-cache/").$path."/page"); // to remove the cache of the feeds $this->rm_folder_recursively($this->getWpContentDir("/cache/all/").$path."/feed"); $this->rm_folder_recursively($this->getWpContentDir("/cache/wpfc-mobile-cache/").$path."/feed"); } if($term->parent > 0){ $parent = get_term_by("id", $term->parent, $term->taxonomy); if(isset($parent->term_taxonomy_id)){ $this->delete_cache_of_term($parent->term_taxonomy_id); } } } public function unlink($path){ if(file_exists($path)){ unlink($path); } } public function deleteHomePageCache($log = true){ if($varnish_datas = get_option("WpFastestCacheVarnish")){ include_once('inc/varnish.php'); VarnishWPFC::purge_cache($varnish_datas); } include_once('inc/cdn.php'); CdnWPFC::cloudflare_clear_cache(); $site_url_path = preg_replace("/https?\:\/\/[^\/]+/i", "", site_url()); $home_url_path = preg_replace("/https?\:\/\/[^\/]+/i", "", home_url()); if($site_url_path){ $site_url_path = trim($site_url_path, "/"); if($site_url_path){ $this->unlink($this->getWpContentDir("/cache/all/").$site_url_path."/index.html"); $this->unlink($this->getWpContentDir("/cache/wpfc-mobile-cache/").$site_url_path."/index.html"); //to clear pagination of homepage cache $this->rm_folder_recursively($this->getWpContentDir("/cache/all/").$site_url_path."/page"); $this->rm_folder_recursively($this->getWpContentDir("/cache/wpfc-mobile-cache/").$site_url_path."/page"); } } if($home_url_path){ $home_url_path = trim($home_url_path, "/"); if($home_url_path){ $this->unlink($this->getWpContentDir("/cache/all/").$home_url_path."/index.html"); $this->unlink($this->getWpContentDir("/cache/wpfc-mobile-cache/").$home_url_path."/index.html"); //to clear pagination of homepage cache $this->rm_folder_recursively($this->getWpContentDir("/cache/all/").$home_url_path."/page"); $this->rm_folder_recursively($this->getWpContentDir("/cache/wpfc-mobile-cache/").$home_url_path."/page"); } } if(function_exists("wc_get_page_id")){ if($shop_id = wc_get_page_id('shop')){ $store_url_path = preg_replace("/https?\:\/\/[^\/]+/i", "", get_permalink($shop_id)); if($store_url_path){ $store_url_path = trim($store_url_path, "/"); if($store_url_path){ if(file_exists($this->getWpContentDir("/cache/all/").$store_url_path."/index.html")){ @unlink($this->getWpContentDir("/cache/all/").$store_url_path."/index.html"); } if(file_exists($this->getWpContentDir("/cache/wpfc-mobile-cache/").$store_url_path."/index.html")){ @unlink($this->getWpContentDir("/cache/wpfc-mobile-cache/").$store_url_path."/index.html"); } //to clear pagination of store homepage cache $this->rm_folder_recursively($this->getWpContentDir("/cache/all/").$store_url_path."/page"); $this->rm_folder_recursively($this->getWpContentDir("/cache/wpfc-mobile-cache/").$store_url_path."/page"); } } } } $this->unlink($this->getWpContentDir("/cache/all/index.html")); $this->unlink($this->getWpContentDir("/cache/wpfc-mobile-cache/index.html")); //to clear pagination of homepage cache $this->rm_folder_recursively($this->getWpContentDir("/cache/all/page")); $this->rm_folder_recursively($this->getWpContentDir("/cache/wpfc-mobile-cache/page")); // options-reading.php - static posts page if($page_for_posts_id = get_option('page_for_posts')){ $page_for_posts_permalink = urldecode(get_permalink($page_for_posts_id)); $page_for_posts_permalink = rtrim($page_for_posts_permalink, "/"); $page_for_posts_permalink = preg_replace("/__trashed$/", "", $page_for_posts_permalink); //for /%postname%/%post_id% : sample-url__trashed/57595 $page_for_posts_permalink = preg_replace("/__trashed\/(\d+)$/", "/$1", $page_for_posts_permalink); if(preg_match("/https?:\/\/[^\/]+\/(.+)/", $page_for_posts_permalink, $out)){ $page_for_posts_path = $this->getWpContentDir("/cache/all/").$out[1]; $page_for_posts_mobile_path = $this->getWpContentDir("/cache/wpfc-mobile-cache/").$out[1]; $this->rm_folder_recursively($page_for_posts_path); $this->rm_folder_recursively($page_for_posts_mobile_path); } } if($log){ if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){ include_once $this->get_premium_path("logs.php"); $log = new WpFastestCacheLogs("delete"); $log->action(); } } } public function deleteCache($minified = false){ if($varnish_datas = get_option("WpFastestCacheVarnish")){ include_once('inc/varnish.php'); VarnishWPFC::purge_cache($varnish_datas); } include_once('inc/cdn.php'); CdnWPFC::cloudflare_clear_cache(); $this->set_preload(); $created_tmpWpfc = false; $cache_deleted = false; $minifed_deleted = false; $cache_path = $this->getWpContentDir("/cache/all"); $minified_cache_path = $this->getWpContentDir("/cache/wpfc-minified"); if(class_exists("WpFcMobileCache")){ if(is_dir($this->getWpContentDir("/cache/wpfc-mobile-cache"))){ if(is_dir($this->getWpContentDir("/cache/tmpWpfc"))){ rename($this->getWpContentDir("/cache/wpfc-mobile-cache"), $this->getWpContentDir("/cache/tmpWpfc/mobile_").time()); }else if(@mkdir($this->getWpContentDir("/cache/tmpWpfc"), 0755, true)){ rename($this->getWpContentDir("/cache/wpfc-mobile-cache"), $this->getWpContentDir("/cache/tmpWpfc/mobile_").time()); } } } if(!is_dir($this->getWpContentDir("/cache/tmpWpfc"))){ if(@mkdir($this->getWpContentDir("/cache/tmpWpfc"), 0755, true)){ $created_tmpWpfc = true; }else{ $created_tmpWpfc = false; //$this->systemMessage = array("Permission of /wp-content/cache must be 755", "error"); } }else{ $created_tmpWpfc = true; } //to clear widget cache path $this->deleteWidgetCache(); $this->delete_multiple_domain_mapping_cache($minified); if(is_dir($cache_path)){ if(@rename($cache_path, $this->getWpContentDir("/cache/tmpWpfc/").time())){ delete_option("WpFastestCacheHTML"); delete_option("WpFastestCacheHTMLSIZE"); delete_option("WpFastestCacheMOBILE"); delete_option("WpFastestCacheMOBILESIZE"); $cache_deleted = true; } }else{ $cache_deleted = true; } if($minified){ if(is_dir($minified_cache_path)){ if(@rename($minified_cache_path, $this->getWpContentDir("/cache/tmpWpfc/m").time())){ delete_option("WpFastestCacheCSS"); delete_option("WpFastestCacheCSSSIZE"); delete_option("WpFastestCacheJS"); delete_option("WpFastestCacheJSSIZE"); $minifed_deleted = true; } }else{ $minifed_deleted = true; } }else{ $minifed_deleted = true; } if($created_tmpWpfc && $cache_deleted && $minifed_deleted){ do_action('wpfc_delete_cache'); $this->notify(array("All cache files have been deleted", "updated")); if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){ include_once $this->get_premium_path("logs.php"); $log = new WpFastestCacheLogs("delete"); $log->action(); } }else{ $this->notify(array("Permissions Problem: Read More", "error")); } // for ajax request if(isset($_GET["action"]) && in_array($_GET["action"], array("wpfc_delete_cache", "wpfc_delete_cache_and_minified"))){ die(json_encode($this->systemMessage)); } } public function checkCronTime(){ $crons = _get_cron_array(); foreach ((array)$crons as $cron_key => $cron_value) { foreach ( (array) $cron_value as $hook => $events ) { if(preg_match("/^wp\_fastest\_cache(.*)/", $hook, $id)){ if(!$id[1] || preg_match("/^\_(\d+)$/", $id[1])){ foreach ( (array) $events as $event_key => $event ) { add_action("wp_fastest_cache".$id[1], array($this, 'setSchedule')); } } } } } add_action($this->slug()."_Preload", array($this, 'create_preload_cache'), 11); } public function set_preload(){ include_once('inc/preload.php'); PreloadWPFC::set_preload($this->slug()); } public function create_preload_cache(){ $this->options = $this->getOptions(); include_once('inc/preload.php'); PreloadWPFC::create_preload_cache($this->options); } public function wpfc_remote_get($url, $user_agent, $return_content = false){ //$response = wp_remote_get($url, array('timeout' => 10, 'sslverify' => false, 'headers' => array("cache-control" => array("no-store, no-cache, must-revalidate", "post-check=0, pre-check=0"),'user-agent' => $user_agent))); $response = wp_remote_get($url, array('user-agent' => $user_agent, 'timeout' => 10, 'sslverify' => false, 'headers' => array("cache-control" => "no-store, no-cache, must-revalidate, post-check=0, pre-check=0"))); if (!$response || is_wp_error($response)){ echo $response->get_error_message()." - "; return false; }else{ if(wp_remote_retrieve_response_code($response) != 200){ return false; } if($return_content){ if(wp_remote_retrieve_response_code($response) == 200){ $data = wp_remote_retrieve_body($response); return $data; } } } return true; } public function setSchedule($args = ""){ if($args){ $rule = json_decode($args); if($rule->prefix == "all"){ $this->deleteCache(); }else if($rule->prefix == "homepage"){ $this->deleteHomePageCache(); if(isset($this->options->wpFastestCachePreload_homepage) && $this->options->wpFastestCachePreload_homepage){ $this->wpfc_remote_get(get_option("home"), "WP Fastest Cache Preload Bot - After Cache Timeout"); $this->wpfc_remote_get(get_option("home"), "WP Fastest Cache Preload iPhone Mobile Bot - After Cache Timeout"); } }else if($rule->prefix == "startwith"){ if(!is_dir($this->getWpContentDir("/cache/tmpWpfc"))){ if(@mkdir($this->getWpContentDir("/cache/tmpWpfc"), 0755, true)){} } $rule->content = trim($rule->content, "/"); $files = glob($this->getWpContentDir("/cache/all/").$rule->content."*"); foreach ((array)$files as $file) { $mobile_file = str_replace("/cache/all/", "/cache/wpfc-mobile-cache/", $file); @rename($file, $this->getWpContentDir("/cache/tmpWpfc/").time()); @rename($mobile_file, $this->getWpContentDir("/cache/tmpWpfc/mobile_").time()); } }else if($rule->prefix == "exact"){ $rule->content = trim($rule->content, "/"); @unlink($this->getWpContentDir("/cache/all/").$rule->content."/index.html"); @unlink($this->getWpContentDir("/cache/wpfc-mobile-cache/").$rule->content."/index.html"); } if($rule->prefix != "all"){ if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){ include_once $this->get_premium_path("logs.php"); $log = new WpFastestCacheLogs("delete"); $log->action($rule); } } }else{ //for old cron job $this->deleteCache(); } } public function modify_htaccess_for_new_user($user_id){ $path = ABSPATH; if($this->is_subdirectory_install()){ $path = $this->getABSPATH(); } $htaccess = @file_get_contents($path.".htaccess"); if(preg_match("/\#\s?Start_WPFC_Exclude_Admin_Cookie/", $htaccess)){ $rules = $this->excludeAdminCookie(); $htaccess = preg_replace("/\#\s?Start_WPFC_Exclude_Admin_Cookie[^\#]*\#\s?End_WPFC_Exclude_Admin_Cookie\s+/", $rules, $htaccess); } @file_put_contents($path.".htaccess", $htaccess); } public function excludeAdminCookie(){ $usernames = array(); $users_groups = array_chunk(get_users(array("role" => "administrator", "fields" => array("user_login"))), 5); foreach ($users_groups as $group_key => $group) { $tmp_user = ""; $tmp_rule = ""; foreach ($group as $key => $value) { $tmp_user = sanitize_user(wp_unslash($value->user_login), true); /* to replace spaces with %20 1. Empty space character causes 500 internal server error 2. "\s" is not detected by htaccess so we added "%20" */ $tmp_user = preg_replace("/\s/", "%20", $tmp_user); array_push($usernames, $tmp_user); } } $rule = "# Start_WPFC_Exclude_Admin_Cookie\n"; $rule = $rule."RewriteCond %{HTTP:Cookie} !wordpress_logged_in_[^\=]+\=".implode("|", $usernames); $rule = $rule."\n# End_WPFC_Exclude_Admin_Cookie\n"; return $rule; } public function excludeRules(){ $htaccess_page_rules = ""; $htaccess_page_useragent = ""; $htaccess_page_cookie = ""; $rules_json = get_option("WpFastestCacheExclude"); if(!empty($rules_json) && $rules_json !== "null"){ $rules_std = json_decode($rules_json); // JSON hatalıysa çık if (json_last_error() !== JSON_ERROR_NONE || !is_array($rules_std)) { return ""; } foreach ($rules_std as $value) { // default type $value->type = isset($value->type) ? $value->type : "page"; // content yoksa skip if(empty($value->content)){ continue; } // HTML entity decode (örn: < >) $content = html_entity_decode($value->content, ENT_QUOTES, 'UTF-8'); // ---------- PAGE RULES ---------- if($value->type == "page"){ // REGEX (escape yok!) if(isset($value->prefix) && $value->prefix == "regex"){ // basit regex validation (çok kırılmayı önler) if(@preg_match("/".$content."/", null) === false){ continue; // hatalı regex skip } $htaccess_page_rules .= "RewriteCond %{REQUEST_URI} !".$content." [NC]\n"; } // NORMAL RULES (escape var) else{ // regex injection önleme $safe_content = preg_quote($content, "/"); if($value->prefix == "startwith"){ $safe_content = ltrim($safe_content, "/"); $htaccess_page_rules .= "RewriteCond %{REQUEST_URI} !^/".$safe_content." [NC]\n"; } if($value->prefix == "contain"){ $htaccess_page_rules .= "RewriteCond %{REQUEST_URI} !".$safe_content." [NC]\n"; } if($value->prefix == "exact"){ $safe_content = trim($safe_content, "/"); $htaccess_page_rules .= "RewriteCond %{REQUEST_URI} !^/".$safe_content."$ [NC]\n"; } } } // ---------- USER AGENT ---------- else if($value->type == "useragent"){ $safe_content = preg_quote($content, "/"); $htaccess_page_useragent .= "RewriteCond %{HTTP_USER_AGENT} !".$safe_content." [NC]\n"; } // ---------- COOKIE ---------- else if($value->type == "cookie"){ if($value->prefix == "contain"){ $safe_content = preg_quote($content, "/"); $htaccess_page_cookie .= "RewriteCond %{HTTP:Cookie} !".$safe_content." [NC]\n"; }else if($value->prefix == "regex"){ // basit regex validation (çok kırılmayı önler) if(@preg_match("/".$content."/", null) === false){ continue; // hatalı regex skip } $htaccess_page_cookie .= "RewriteCond %{HTTP:Cookie} !".$content." [NC]\n"; } } } } return "# Start WPFC Exclude\n" .$htaccess_page_rules .$htaccess_page_useragent .$htaccess_page_cookie ."# End WPFC Exclude\n"; } public function getABSPATH(){ if(function_exists("get_home_path")){ return get_home_path(); }else{ $path = ABSPATH; $siteUrl = site_url(); $homeUrl = home_url(); $diff = str_replace($homeUrl, "", $siteUrl); $diff = trim($diff,"/"); $pos = strrpos($path, $diff); if($pos !== false){ $path = substr_replace($path, "", $pos, strlen($diff)); $path = trim($path,"/"); $path = "/".$path."/"; } return $path; } } public function rm_folder_recursively($dir, &$i = 1) { if (!is_dir($dir)) { return true; } $files = @scandir($dir); if ($files === false) { return true; } foreach ($files as $file) { if ($file === '.' || $file === '..') { continue; } if ($i > 100 && !preg_match("/wp-fastest-cache-premium/i", $dir)) { return true; } $path = $dir . '/' . $file; if (is_dir($path)) { $this->rm_folder_recursively($path, $i); } else { if (file_exists($path)) { @unlink($path); $i++; } } } if (is_dir($dir)) { $files_tmp = @scandir($dir); if ($files_tmp !== false && count($files_tmp) <= 2) { @rmdir($dir); } } return true; } public function is_subdirectory_install(){ if(strlen(site_url()) > strlen(home_url())){ return true; } return false; } protected function getMobileUserAgents(){ return implode("|", $this->get_mobile_browsers())."|".implode("|", $this->get_operating_systems()); } public function get_premium_path($name){ return WPFC_WP_PLUGIN_DIR."/wp-fastest-cache-premium/pro/library/".$name; } public function cron_add_minute( $schedules ) { $schedules['everyminute'] = array( 'interval' => 60*1, 'display' => __( 'Once Every 1 Minute' ), 'wpfc' => true ); $schedules['everyfiveminute'] = array( 'interval' => 60*5, 'display' => __( 'Once Every 5 Minutes' ), 'wpfc' => true ); $schedules['everyfifteenminute'] = array( 'interval' => 60*15, 'display' => __( 'Once Every 15 Minutes' ), 'wpfc' => true ); $schedules['twiceanhour'] = array( 'interval' => 60*30, 'display' => __( 'Twice an Hour' ), 'wpfc' => true ); $schedules['onceanhour'] = array( 'interval' => 60*60, 'display' => __( 'Once an Hour' ), 'wpfc' => true ); $schedules['everytwohours'] = array( 'interval' => 60*60*2, 'display' => __( 'Once Every 2 Hours' ), 'wpfc' => true ); $schedules['everythreehours'] = array( 'interval' => 60*60*3, 'display' => __( 'Once Every 3 Hours' ), 'wpfc' => true ); $schedules['everyfourhours'] = array( 'interval' => 60*60*4, 'display' => __( 'Once Every 4 Hours' ), 'wpfc' => true ); $schedules['everyfivehours'] = array( 'interval' => 60*60*5, 'display' => __( 'Once Every 5 Hours' ), 'wpfc' => true ); $schedules['everysixhours'] = array( 'interval' => 60*60*6, 'display' => __( 'Once Every 6 Hours' ), 'wpfc' => true ); $schedules['everysevenhours'] = array( 'interval' => 60*60*7, 'display' => __( 'Once Every 7 Hours' ), 'wpfc' => true ); $schedules['everyeighthours'] = array( 'interval' => 60*60*8, 'display' => __( 'Once Every 8 Hours' ), 'wpfc' => true ); $schedules['everyninehours'] = array( 'interval' => 60*60*9, 'display' => __( 'Once Every 9 Hours' ), 'wpfc' => true ); $schedules['everytenhours'] = array( 'interval' => 60*60*10, 'display' => __( 'Once Every 10 Hours' ), 'wpfc' => true ); $schedules['onceaday'] = array( 'interval' => 60*60*24, 'display' => __( 'Once a Day' ), 'wpfc' => true ); $schedules['everythreedays'] = array( 'interval' => 60*60*24*3, 'display' => __( 'Once Every 3 Days' ), 'wpfc' => true ); $schedules['everysevendays'] = array( 'interval' => 60*60*24*7, 'display' => __( 'Once Every 7 Days' ), 'wpfc' => true ); $schedules['everytendays'] = array( 'interval' => 60*60*24*10, 'display' => __( 'Once Every 10 Days' ), 'wpfc' => true ); $schedules['everyfifteendays'] = array( 'interval' => 60*60*24*15, 'display' => __( 'Once Every 15 Days' ), 'wpfc' => true ); $schedules['montly'] = array( 'interval' => 60*60*24*30, 'display' => __( 'Once a Month' ), 'wpfc' => true ); $schedules['yearly'] = array( 'interval' => 60*60*24*30*12, 'display' => __( 'Once a Year' ), 'wpfc' => true ); return $schedules; } public function setCustomInterval(){ add_filter( 'cron_schedules', array($this, 'cron_add_minute')); } public function isPluginActive( $plugin ) { return in_array( $plugin, (array) get_option( 'active_plugins', array() ) ) || $this->isPluginActiveForNetwork( $plugin ); } public function isPluginActiveForNetwork( $plugin ) { if ( !is_multisite() ) return false; $plugins = get_site_option( 'active_sitewide_plugins'); if ( isset($plugins[$plugin]) ) return true; return false; } public function current_url(){ global $wp; $current_url = home_url($_SERVER['REQUEST_URI']); return $current_url; // if(defined('WP_CLI')){ // $_SERVER["SERVER_NAME"] = isset($_SERVER["SERVER_NAME"]) ? $_SERVER["SERVER_NAME"] : ""; // $_SERVER["SERVER_PORT"] = isset($_SERVER["SERVER_PORT"]) ? $_SERVER["SERVER_PORT"] : 80; // } // $pageURL = 'http'; // if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on'){ // $pageURL .= 's'; // } // $pageURL .= '://'; // if($_SERVER['SERVER_PORT'] != '80'){ // $pageURL .= $_SERVER['SERVER_NAME'].':'.$_SERVER['SERVER_PORT'].$_SERVER['REQUEST_URI']; // }else{ // $pageURL .= $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; // } // return $pageURL; } public function wpfc_load_plugin_textdomain(){ load_plugin_textdomain('wp-fastest-cache', FALSE, basename( dirname( __FILE__ ) ) . '/languages/' ); } public function cdn_replace_urls($matches){ if(count($this->cdn) > 0){ foreach ($this->cdn as $key => $cdn) { if($cdn->id == "cloudflare"){ continue; } if(isset($cdn->status) && $cdn->status == "pause"){ continue; } if(preg_match("/manifest\.json\.php/i", $matches[0])){ return $matches[0]; } //https://site.com?brizy_media=AttachmentName.jpg&brizy_crop=CropSizes&brizy_post=TheCurrentPost if(preg_match("/brizy_media\=/i", $matches[0])){ return $matches[0]; } //https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_736/http://wpfc.com/stories.png if(preg_match("/cdn\.shortpixel\.ai\/client/i", $matches[0])){ return $matches[0]; } if(preg_match("/^\/\/random/", $cdn->cdnurl) || preg_match("/\/\/i\d\.wp\.com/", $cdn->cdnurl)){ // Photon will no longer be supported continue; } $cdnurl = $cdn->cdnurl; $cdn->file_types = str_replace(",", "|", $cdn->file_types); if(preg_match("/\.(".$cdn->file_types.")(\"|\'|\?|\)|\s|\"\;)/i", $matches[0])){ //nothing }else{ if(preg_match("/js/", $cdn->file_types)){ if(!preg_match("/\/revslider\/public\/assets\/js/", $matches[0])){ continue; } }else{ continue; } } if($cdn->keywords){ $cdn->keywords = str_replace(",", "|", $cdn->keywords); if(!preg_match("/".preg_quote($cdn->keywords, "/")."/i", $matches[0])){ continue; } } if(isset($cdn->excludekeywords) && $cdn->excludekeywords){ $cdn->excludekeywords = str_replace(",", "|", $cdn->excludekeywords); if(preg_match("/".preg_quote($cdn->excludekeywords, "/")."/i", $matches[0])){ continue; } } if(preg_match("/(data-product_variations|data-siteorigin-parallax)\=[\"\'][^\"\']+[\"\']/i", $matches[0])){ $cdnurl = preg_replace("/(https?\:)?(\/\/)(www\.)?/", "", $cdnurl); // if(preg_match("/i\d\.wp\.com/i", $cdnurl)){ // $matches[0] = preg_replace("/(quot\;|\s)(https?\:)?(\\\\\/\\\\\/|\/\/)(www\.)?".$cdn->originurl."/i", "$1$2$3".$cdnurl, $matches[0]); // }else{ // $matches[0] = preg_replace("/(quot\;|\s)(https?\:)?(\\\\\/\\\\\/|\/\/)(www\.)?".$cdn->originurl."/i", "$1$2$3$4".$cdnurl, $matches[0]); // } $matches[0] = preg_replace("/(quot\;|\s)(https?\:)?(\\\\\/\\\\\/|\/\/)(www\.)?".$cdn->originurl."/i", '${1}${2}${3}'.$cdnurl, $matches[0]); }else if(preg_match("/\{\"concatemoji\"\:\"[^\"]+\"\}/i", $matches[0])){ $matches[0] = preg_replace("/(http(s?)\:)?".preg_quote("\/\/", "/")."(www\.)?/i", "", $matches[0]); $matches[0] = preg_replace("/".preg_quote($cdn->originurl, "/")."/i", $cdnurl, $matches[0]); }else if(isset($matches[2]) && preg_match("/".preg_quote($cdn->originurl, "/")."/", $matches[2])){ $matches[0] = preg_replace("/(http(s?)\:)?\/\/(www\.)?".preg_quote($cdn->originurl, "/")."/i", $cdnurl, $matches[0]); }else if(isset($matches[2]) && preg_match("/^(\/?)(wp-includes|wp-content)/", $matches[2])){ $matches[0] = preg_replace("/(\/?)(wp-includes|wp-content)/i", $cdnurl."/"."$2", $matches[0]); }else if(preg_match("/[\"\']https?\:\\\\\/\\\\\/[^\"\']+[\"\']/i", $matches[0])){ if(preg_match("/^(logo|url|image)$/i", $matches[1])){ //If the url is called with "//", it causes an error on https://search.google.com/structured-data/testing-tool/u/0/ // // // }else{ // $matches[0] = preg_replace("/\\\\\//", "/", $matches[0]); if(preg_match("/".preg_quote($cdn->originurl, "/")."/", $matches[0])){ $matches[0] = preg_replace("/(http(s?)\:)?\/\/(www\.)?".preg_quote($cdn->originurl, "/")."/i", $cdnurl, $matches[0]); $matches[0] = preg_replace("/\//", "\/", $matches[0]); } } } } } return $matches[0]; } public function read_file($url){ if(!preg_match("/\.php/", $url)){ $url = preg_replace("/\?.*/", "", $url); if(preg_match("/wp-content/", $url)){ $path = preg_replace("/.+\/wp-content\/(.+)/", WPFC_WP_CONTENT_DIR."/"."$1", $url); }else if(preg_match("/wp-includes/", $url)){ $path = preg_replace("/.+\/wp-includes\/(.+)/", ABSPATH."wp-includes/"."$1", $url); } if(isset($path)){ if(@file_exists($path)){ $filesize = filesize($path); if($filesize > 0){ $myfile = fopen($path, "r") or die("Unable to open file!"); $data = fread($myfile, $filesize); fclose($myfile); return $data; }else{ return false; } } } } return false; } public function get_operating_systems(){ $operating_systems = array( 'Android', 'blackberry|\bBB10\b|rim\stablet\sos', 'PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino', 'Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\bS60\b', 'Windows\sCE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Window\sMobile|Windows\sPhone\s[0-9.]+|WCE;', 'Windows\sPhone\s10.0|Windows\sPhone\s8.1|Windows\sPhone\s8.0|Windows\sPhone\sOS|XBLWP7|ZuneWP7|Windows\sNT\s6\.[23]\;\sARM\;', '\biPhone.*Mobile|\biPod|\biPad', 'Apple-iPhone7C2', 'MeeGo', 'Maemo', 'J2ME\/|\bMIDP\b|\bCLDC\b', // '|Java/' produces bug #135 'webOS|hpwOS', '\bBada\b', 'BREW' ); return $operating_systems; } public function get_mobile_browsers(){ $mobile_browsers = array( '\bCrMo\b|CriOS|Android.*Chrome\/[.0-9]*\s(Mobile)?', '\bDolfin\b', 'Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR\/[0-9.]+|Coast\/[0-9.]+', 'Skyfire', 'Mobile\sSafari\/[.0-9]*\sEdge', 'IEMobile|MSIEMobile', // |Trident/[.0-9]+ 'fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile|FxiOS', 'bolt', 'teashark', 'Blazer', 'Version.*Mobile.*Safari|Safari.*Mobile|MobileSafari', 'Tizen', 'UC.*Browser|UCWEB', 'baiduboxapp', 'baidubrowser', 'DiigoBrowser', 'Puffin', '\bMercury\b', 'Obigo', 'NF-Browser', 'NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger', 'Android.*PaleMoon|Mobile.*PaleMoon' ); return $mobile_browsers; } } // Load WP CLI command(s) on demand. if ( defined( 'WP_CLI' ) && WP_CLI ) { require_once "inc/cli.php"; } function wpfc_clear_all_site_cache(){ if(defined('WPFC_DISABLE_HOOK_CLEAR_ALL_CACHE') && WPFC_DISABLE_HOOK_CLEAR_ALL_CACHE){ return array("success" => false, "message" => "Clearing Cache Hook system has been disabled"); } do_action("wpfc_clear_all_cache"); } function wpfc_clear_all_cache($minified = false){ if(defined('WPFC_DISABLE_HOOK_CLEAR_ALL_CACHE') && WPFC_DISABLE_HOOK_CLEAR_ALL_CACHE){ return array("success" => false, "message" => "Clearing Cache Hook system has been disabled"); } do_action("wpfc_clear_all_cache", $minified); } function wpfc_exclude_current_page(){ do_action("wpfc_exclude_current_page"); } function wpfc_clear_post_cache_by_id($post_id = false){ if($post_id){ do_action("wpfc_clear_post_cache_by_id", false, $post_id); } } function wpfc_create_post_cache_by_id($post_id = false){ if($post_id){ do_action("wpfc_create_post_cache_by_id", $post_id); } } $GLOBALS["wp_fastest_cache"] = new WpFastestCache(); ?>
Warning: file_get_contents(/data/www/26497/magazinfashion_cz/www/wp-admin/css/view-transitions.min.css): failed to open stream: No such file or directory in /data/www/26497/magazinfashion_cz/www/wp-includes/view-transitions.php on line 29
magazín Fashion
- Komerční sdělení -události

Pro Ženy

Domácí ošetření od hlavy až k patě

Na první pohled nenápadný, ale jakmile se ho dotknete, už ho nebudete chtít pustit. Bude vás hýčkat od hlavy až k patě, vždy připraven splnit každé...

Zima dává vlasům zabrat. Jak ochránit pokožku hlavy a udržet vlasy zdravé?

Zima je pro vlasy i pokožku hlavy náročným obdobím. Chlad, vítr, čepice a suchý vzduch v interiérech způsobují, že vlasy ztrácejí lesk, jsou křehké a...

Zimní večírky bez kompromisů: 5 účesů, které zvládnete doma

Když dojde na vánoční večírky, plesy a slavnostní příležitosti, toužíme po účesech, které jsou nejen krásné, ale zároveň zachovají naše vlasy zdravé. S novými technologiemi,...

Móda

Rady a Návody

- Komerční sdělení -spot_img

--- Nejnovější články ---

Základ šatníku: Jak vybrat ideální topy a tílka pro každou příležitost

Každá žena to zná, v šatníku může mít desítky kousků, ale když přijde na lámání chleba, vždy sahá po těch několika osvědčených favoritech....

Když péče o zdraví přestává být „až když je problém“

Ještě donedávna bývala péče o zdraví pro mnoho lidí spojená hlavně s jednou situací: něco začne bolet, objeví se problém a teprve potom...

Proč nás některé každodenní činnosti doma méně unavují než jiné

Když se mluví o únavě, většinou si představíme práci, nedostatek spánku nebo příliš mnoho povinností. Méně často si ale uvědomujeme, že část energie...

Horké dny vlasům nesvědčí. Head & Shoulders proto přichází s chladivou novinkou

Léto s sebou přináší dlouhé dny strávené venku na zahradě, v parku nebo u vody. Pro pokožku hlavy však mohou tropické teploty, vlhkost nebo častější...

Co je celulitida a jak ji může zmírnit cílená péče

Celulitida je běžný stav pokožky, který se projevuje nerovnoměrným povrchem, často popisovaným jako „pomerančová kůže“. Nejčastěji se objevuje na stehnech, hýždích nebo bocích...

Jak vybírat šaty na svatbu?

Společenské události, jako jsou galavečery, jubilea nebo svatby, s sebou nesou specifickou atmosféru, kterou pomáhá dotvářet právě volba vhodného oděvu. V dnešní uspěchané...

Jak vybrat pánské spodní prádlo podle typu postavy

Správně zvolené spodní prádlo je základem pohodlí, sebevědomí a celkového vzhledu muže. Stejně jako u oblečení platí, že každý typ postavy vyžaduje odlišný...

Domácí ošetření od hlavy až k patě

Na první pohled nenápadný, ale jakmile se ho dotknete, už ho nebudete chtít pustit. Bude vás hýčkat od hlavy až k patě, vždy připraven...

Zima dává vlasům zabrat. Jak ochránit pokožku hlavy a udržet vlasy zdravé?

Zima je pro vlasy i pokožku hlavy náročným obdobím. Chlad, vítr, čepice a suchý vzduch v interiérech způsobují, že vlasy ztrácejí lesk, jsou...

Dubový nábytek do domácnosti uspokojí i ty nejnáročnější zájemce

Na trhu můžeme najít nábytek z různých materiálů. Ty se od sebe liší jak kvalitou, tak vzhledem či cenou. K osvědčeným a velmi oblíbeným patří...

Jak se vyznat v kolagenech: Co je živý kolagen v podobě hydrátu a proč o něm tolik slyšíme

Kolagen patří mezi nejčastěji zmiňované pojmy ve světě péče o pleť. Zájem o něj roste a spolu s ním i množství produktů, které...

Zimní večírky bez kompromisů: 5 účesů, které zvládnete doma

Když dojde na vánoční večírky, plesy a slavnostní příležitosti, toužíme po účesech, které jsou nejen krásné, ale zároveň zachovají naše vlasy zdravé. S...

Magazín

Reklama

PR článek

Warning: file_get_contents(/data/www/26497/magazinfashion_cz/www/wp-includes/js/wp-emoji-loader.min.js): failed to open stream: No such file or directory in /data/www/26497/magazinfashion_cz/www/wp-includes/formatting.php on line 6088