/* Plugin Name: CDN Integration Description: Run your entire site through a CDN. Author: kingkool68 Version: 0.1.4 Author URI: http://www.russellheimlich.com/ */ include 'class-separate-admin-url.php'; if (is_admin()) { include 'class-cdn-integration.php'; include 'cdn-flush-dashboard-widget.php'; } else { include 'class-buffering.php'; } $options = get_cdn_integration_options(); $cdn_integration_plugin_dir_path = plugin_dir_path(__FILE__); $cdn_provider = $options['cdn-provider']; $cdn_provider_include_file = $cdn_integration_plugin_dir_path . 'class-' . $cdn_provider . '.php'; if ($cdn_provider && file_exists($cdn_provider_include_file)) { include $cdn_provider_include_file; } /** * Adds a Last-Modified header to the request based on the post modified timestamp */ function cdn_integration_add_last_modified_header() { $post = get_post(); if (isset($post) && is_singular()) { $timestamp = $post->post_date_gmt; if (isset($post->post_modified)) {
/** * Flushes a list of URLs from the KeyCDN cache * @param array $urls List of URLs to be flushed */ function keycdn_flush_urls($urls = array()) { if (!$urls) { return; } $options = get_cdn_integration_options(); $api_secret = $options['keycdn-api-secret']; $zone_id = $options['keycdn-zone-id']; $zone_url = $options['keycdn-zone-url']; $public_protocol = $options['public-protocol']; $public_domain = $options['public-domain']; if (!$api_secret || !$zone_id || !$zone_url) { throw new Exception('Invalid KeyCDN settings!'); return; } $public_url = $public_protocol . '://' . $public_domain; if (!$public_domain) { $public_url = get_site_url(); } foreach ($urls as $i => $url) { $urls[$i] = str_replace($public_url, $zone_url, $url); } $payload = json_encode(array('urls' => $urls)); $request_url = 'https://api.keycdn.com/zones/purgeurl/' . $zone_id . '.json'; $args = array('method' => 'DELETE', 'headers' => array('Authorization' => 'Basic ' . base64_encode($api_secret . ':'), 'Accept' => 'application/json', 'Content-Type' => 'application/json'), 'body' => $payload); $response = wp_remote_post($request_url, $args); if (is_wp_error($response)) { error_log('KeyCDN URL Flush Error: ' . $response->get_error_message()); } $output = array('url' => $request_url, 'args' => $args, 'response' => $response); return $output; }