/
home
/
infinitibizsol
/
www.mediaeclips.com
/
wp-content
/
plugins
/
airlift
/
callback
/
wings
/
File Upload :
llllll
Current File: /home/infinitibizsol/www.mediaeclips.com/wp-content/plugins/airlift/callback/wings/speed.php
<?php if (!defined('ABSPATH')) exit; if (!class_exists('BVSpeedCallback')) : require_once dirname( __FILE__ ) . '/../../wp_cache.php'; class BVSpeedCallback extends BVCallbackBase { const SPEED_WING_VERSION = 1.6; public $settings; public $bvinfo; public $db; public function __construct($callback_handler) { $this->settings = $callback_handler->settings; $this->bvinfo = new ALInfo($callback_handler->settings); $this->db = $callback_handler->db; } public function get_third_party_urls_to_exclude($params) { $post_ids_to_reject = array(); $request_urls_to_reject = array(); if (empty($params)) { return $request_urls_to_reject; } if (class_exists('WooCommerce') && function_exists('wc_get_page_id') && isset($params["woocommerce_keys_to_ignore"])) { $keys_to_check = $params["woocommerce_keys_to_ignore"]; foreach ($keys_to_check as $key) { array_push($post_ids_to_reject, wc_get_page_id($key)); } } if (function_exists('bigcommerce_init') && isset($params["big_woocommerce_keys_to_ignore"])) { $keys_to_check = $params["big_woocommerce_keys_to_ignore"]; foreach ($keys_to_check as $key) { array_push($post_ids_to_reject, $this->settings->getOption($key)); } } foreach ($post_ids_to_reject as $post_id) { if (!$post_id || $post_id <= 0 || (int) $this->settings->getOption('page_on_front') === $post_id || 'publish' !== get_post_status($post_id)) { continue; } array_push($request_urls_to_reject, wp_parse_url(get_permalink($post_id), PHP_URL_PATH)); } return $request_urls_to_reject; } public function arrayContainsValue($params, $key, $value) { return isset($params[$key]) && is_array($params[$key]) && in_array($value, $params[$key]); } public function clearVarnishCache($params) { $request_args = isset($params['request_args']) ? $params['request_args'] : null; $purge_url = isset($params['purge_url']) ? $params['purge_url'] : false; if ($request_args && $purge_url) { $remote_info = wp_remote_request($purge_url, $request_args); return $remote_info; } return "Unable to clear varnish cache due to invalid params"; } public function updateBVTableContent($table, $value, $filter) { $this->db->query("UPDATE $table SET $value $filter;"); } public function insertBVTableContent($table, $fields, $value) { $this->db->query("INSERT INTO $table $fields values $value;"); } public function insertConfigRows($table, $fields, $values) { if (is_array($values)) { foreach ($values as $value) { $value = base64_decode($value); $this->insertBVTableContent($table, $fields, $value); } } } public function updateConfigRows($table, $value, $filters) { if (is_array($filters)) { foreach ($filters as $filter) { $filter = base64_decode($filter); $this->updateBVTableContent($table, $value, $filter); } } } public function deleteConfigRows($table, $rmfilters) { if (is_array($rmfilters)) { foreach ($rmfilters as $rmfilter) { $rmfilter = base64_decode($rmfilter); $this->db->deleteBVTableContent($table, $rmfilter); } } } public function clearKinstaCacheUrl($url) { $url = trailingslashit($url) . 'kinsta-clear-cache/'; return wp_remote_get($url, ['blocking' => false, 'timeout' => 0.01]); } public function clearHostCacheUrl($purge_params, $url) { # XNOTE: need to handle for other hosts url as well if ($url) { $host_resp = array(); switch ($purge_params['purge_host']) { case 'kinsta': $host_resp = $this->clearKinstaCacheUrl($url); break; default: $host_resp = $this->clearCompleteHostCache($purge_params); } return $host_resp; } return false; } public function clearCacheUrl($purge_url) { if (isset($purge_url)) { $parsed_url = parse_url($purge_url); $query = $parsed_url["query"]; if (!empty($query)) { $query = "#" . $query; } if (!empty($parsed_url["path"])) { return ALWPFileSystem::getInstance()->rmdir(ALCacheHelper::getCacheBasePath() . $parsed_url["host"] . $parsed_url["path"] . $query, true); } } return false; } public function clearPostsSpecificCache($purge_params) { $post_resp = array(); if (isset($purge_params['clear_cached_post_ids']) && is_array($purge_params['clear_cached_post_ids'])) { $post_resp['post_ids_cache_purged'] = array(); foreach ($purge_params['clear_cached_post_ids'] as $id) { $post_resp['post_ids_cache_purged'][$id] = array(); $post_resp['post_ids_cache_purged'][$id][$id] = $this->clearCacheUrl(get_permalink($id)); if (isset($purge_params['purge_host'])) { $post_resp['post_ids_cache_purged'][$id]['host_resp'] = $this->clearHostCacheUrl($purge_params, get_permalink($id)); } } } if (isset($purge_params['clear_cached_urls']) && is_array($purge_params['clear_cached_urls'])) { $post_resp['urls_cache_purged'] = array(); foreach ($purge_params['clear_cached_urls'] as $url) { $post_resp['urls_cache_purged'][$url] = array(); $post_resp['post_ids_cache_purged'][$url][$url] = $this->clearCacheUrl($url); if (isset($purge_params['purge_host'])) { $post_resp['urls_cache_purged'][$url]['host_resp'] = $this->clearHostCacheUrl($purge_params, $url); } } } return $post_resp; } public function clear_edge_cache() { if (!defined('SITE_API_BASE') || !defined('ATOMIC_SITE_ID') || !defined('ATOMIC_SITE_API_KEY')) { return [ 'success' => false, 'error' => 'Missing required constants.' ]; } $site_api_base = SITE_API_BASE; $atomic_site_id = ATOMIC_SITE_ID; $atomic_site_api_key = ATOMIC_SITE_API_KEY; $base_endpoint = sprintf('%s/edge-cache/%s', $site_api_base, $atomic_site_id); $endpoint = sprintf('%s/purge', $base_endpoint); $base_args = [ 'timeout' => 5, 'method' => 'POST', 'headers' => [ 'Auth' => $atomic_site_api_key ], ]; if (!function_exists('wp_remote_request')) { return [ 'success' => false, 'error' => 'Request function unavailable.' ]; } $result = wp_remote_request($endpoint, $base_args); if (is_wp_error($result)) { return [ 'success' => false, 'error' => 'Request failed: ' . $result->get_error_message() ]; } $http_code = wp_remote_retrieve_response_code($result); if (empty($http_code)) { return [ 'success' => false, 'error' => 'No response from server.' ]; } $body = wp_remote_retrieve_body($result); if (empty($body)) { return [ 'success' => false, 'error' => 'Empty response body from server.' ]; } $response = json_decode($body, false); if (json_last_error() !== JSON_ERROR_NONE || !is_object($response)) { return [ 'success' => false, 'error' => 'Invalid JSON response from server.' ]; } if (!isset($response->message) || !isset($response->data)) { return [ 'success' => false, 'error' => 'Unexpected response format from server.' ]; } if ($response->message === 'OK') { return [ 'success' => true, 'data' => $response->data ]; } return [ 'success' => false, 'error' => 'Unexpected response: ' . $response->message ]; } public function clear_batcache_cache() { global $batcache; $responses = [ 'batcache_host_flush' => false, 'batcache_key_flush' => false, ]; if (isset($batcache) && is_object($batcache) && method_exists($batcache, 'flush')) { $host = ALHelper::getRawParam('SERVER', 'HTTP_HOST'); if (isset($host)) { $responses['batcache_host_flush'] = $batcache->flush('host', $host); } if (isset($batcache->key) && isset($batcache->group)) { $responses['batcache_key_flush'] = $batcache->flush($batcache->key, $batcache->group); } } return $responses; } // phpcs:disable WordPress.WP.AlternativeFunctions.file_system_operations_fwrite, WordPress.WP.AlternativeFunctions.file_system_operations_fclose // Socket connection required public function clear_siteground_dynamic_cache($hostname, $main_path, $url, $args, $request) { $host_resp = array(); $site_tools_sock_file = '/chroot/tmp/site-tools.sock'; if (!file_exists($site_tools_sock_file) || empty($args)) { $host_resp['cache_purge_status'] = false; $host_resp['site_tools_sock_file_found'] = false; return $host_resp; } $fp = stream_socket_client('unix://' . $site_tools_sock_file, $errno, $errstr, 5); if ( false === $fp ) { $host_resp['cache_purge_status'] = false; $host_resp['unix_socket_connection_success'] = false; return $host_resp; } $host_resp['unix_socket_connection_success'] = true; fwrite($fp, json_encode($request, JSON_FORCE_OBJECT) . "\n"); $response = fgets($fp, 32 * 1024); fclose($fp); $result = @json_decode($response, true); if (false === $result || isset($result['err_code'])) { $host_resp['cache_purge_fail_resp'] = $result; } $host_resp['cache_purge_status'] = $result; return $host_resp; } // phpcs:enable WordPress.WP.AlternativeFunctions.file_system_operations_fwrite, WordPress.WP.AlternativeFunctions.file_system_operations_fclose public function clearCompleteHostCache($purge_params) { $host_resp = array(); switch ($purge_params['purge_host']) { case 'cloudways': case 'flywheel': case 'dreamhost': case 'liquidweb': if (isset($purge_params['varnish_params'])) { $host_resp['varnish_cache'] = $this->clearVarnishCache($purge_params['varnish_params']); } break; case 'pagely': if (class_exists( 'PagelyCachePurge')) { $purger = new PagelyCachePurge(); $purger->purgeAll(); $host_resp['pagely_cache'] = true; } else { $host_resp['pagely_cache'] = false; } break; case 'kinsta': global $kinsta_cache; if (!empty($kinsta_cache->kinsta_cache_purge)) { $kinsta_cache->kinsta_cache_purge->purge_complete_caches(); $host_resp['kinsta_cache'] = true; } else { $host_resp['kinsta_cache'] = false; } break; case 'savvii': do_action('warpdrive_domain_flush'); $host_resp['savvii_cache'] = true; break; case 'wpengine': if (method_exists('WpeCommon', 'purge_varnish_cache')) { WpeCommon::purge_varnish_cache(); $host_resp['wpengine_cache'] = true; } else { $host_resp['wpengine_cache'] = false; } break; case 'siteground': if (isset($purge_params['dynamic_cache_params'])) { $dyn_cache_params = $purge_params['dynamic_cache_params']; $hostname = $dyn_cache_params['hostname']; $main_path = $dyn_cache_params['main_path']; $url = $dyn_cache_params['url']; $args = $dyn_cache_params['args']; $request = $dyn_cache_params['request']; $host_resp['siteground_cache'] = $this->clear_siteground_dynamic_cache($hostname, $main_path, $url, $args, $request); } break; case 'pressable': $host_resp['pressable'] = $this->clear_batcache_cache(); $host_resp['edge_cache_purge'] = $this->clear_edge_cache(); break; case 'automattic': $host_resp['automattic'] = $this->clear_batcache_cache(); $host_resp['edge_cache_purge'] = $this->clear_edge_cache(); break; } return $host_resp; } function process($request) { $params = $request->params; switch ($request->method) { case 'updtoptn': $option = 'alcacheconfig'; $this->settings->updateOption($option, $params['config']); $resp = array("status" => $this->settings->getOption($option)); break; case 'insrtcnf': $pdata = $params["pdata"]; $pdata["config"] = $params["pdata"]["config"]; $pdata["similar_post_ids"] = $params["pdata"]["similar_post_ids"]; $table = $this->db->getBVTable("airlift_config"); $columns = " (url, similar_post_ids, category, category_value, config, time)"; $values = " VALUES ( '" . $pdata["url"] . "', '" . $pdata["similar_post_ids"] . "', " . $pdata["category"] . ", '" . $pdata["category_value"] . "', '" . addslashes($pdata["config"]) . "', " . time() . " )"; $query = "INSERT INTO " . $table . $columns . $values; $resp = array("status" => $this->db->query($query)); break; case 'remcnf': $pdata = $params["pdata"]; $table = $this->db->getBVTable("airlift_config"); if (is_array($pdata["key_value"])) { $escaped_key_values = array_map('addslashes', $pdata["key_value"]); $key_value_in_clause = "'" . implode("','", $escaped_key_values) . "'"; $query = "DELETE FROM " . $table . " WHERE " . $pdata["key_name"] . " IN (" . $key_value_in_clause . ")"; $resp = array("status" => $this->db->query($query)); } break; case 'prge_cach': $resp = array(); if (isset($params['purge_cache_params'])) { $purge_params = $params['purge_cache_params']; } else { $resp['invalid_params'] = true; break; } if (isset($purge_params['clear_cached_post_ids']) || isset($purge_params['clear_cached_urls'])) { $post_resp = $this->clearPostsSpecificCache($purge_params); if (!empty($post_resp)) { $resp['post_resp'] = $post_resp; } } if (isset($purge_params['purge_all']) && isset($purge_params['purge_host'])) { $host_resp = $this->clearCompleteHostCache($purge_params); if (!empty($host_resp)) { $resp['host_resp'] = $host_resp; } } if ($this->arrayContainsValue($purge_params, 'options', 'purge_object')) { if (function_exists('wp_cache_flush')) { $resp['object_cache_purged'] = wp_cache_flush(); } else { $resp['object_cache_purged'] = false; } } if ($this->arrayContainsValue($purge_params, 'options', 'purge_complete_cache_storage')) { $resp['purge_complete_cache_storage'] = ALWPFileSystem::getInstance()->rmdir(ALWPCache::$cache_path, true); } if ($this->arrayContainsValue($purge_params, 'options', 'purge_alcache')) { $resp['purge_alcache'] = ALWPFileSystem::getInstance()->rmdir(ALWPCache::$so_cache_path, true); } break; case "actvt_cach": $resp = array("status" => ALWPCache::enableCache($this->bvinfo)); break; case "deactvt_cach": $resp = array("status" => ALWPCache::disableCache($this->bvinfo)); break; case "gt_othr_excld_attrs": $resp = array("urls_to_exclude" => $this->get_third_party_urls_to_exclude($params)); break; case "dsbl_et_cache": if (isset($params["et_metaname"]) && isset($params["et_option_name"]) && isset($params["et_option_value"])) { $et_metaname = $params["et_metaname"]; $et_option_name = $params["et_option_name"]; $et_option_value = $params["et_option_value"]; $et_settings = $this->settings->getOption($et_metaname); if (isset($et_settings) && is_array($et_settings)) { $et_settings[$et_option_name] = $et_option_value; $resp = array("status" => $this->settings->updateOption($et_metaname, $et_settings)); } } break; } return $resp; } } endif;
Copyright ©2k19 -
Hexid
|
Tex7ure