/** * Link replace callback, basic checks step * * @param string $match * @param string $quote * @param string $url * @param string $path * @return null|string */ function _link_replace_callback_checks($match, $quote, $url, $path) { global $wpdb; static $queue = null, $reject_files = null; /** * Check if URL was already replaced */ if (isset($this->replaced_urls[$url])) { return $quote . $this->replaced_urls[$url]; } /** * Check URL for rejected files */ if ($reject_files === null) { $reject_files = $this->_config->get_array('cdn.reject.files'); } foreach ($reject_files as $reject_file) { if ($reject_file != '') { $reject_file = Cdn_Util::replace_folder_placeholders($reject_file); $reject_file = Util_Environment::normalize_file($reject_file); $reject_file_regexp = '~^(' . Cdn_Util::get_regexp_by_mask($reject_file) . ')~i'; if (preg_match($reject_file_regexp, $path)) { return $match; } } } /** * Don't replace URL for files that are in the CDN queue */ if ($queue === null) { if (!Cdn_Util::is_engine_mirror($this->_config->get_string('cdn.engine'))) { $sql = $wpdb->prepare('SELECT remote_path FROM ' . $wpdb->base_prefix . W3TC_CDN_TABLE_QUEUE . ' WHERE remote_path = %s', $path); $queue = $wpdb->get_var($sql); } else { $queue = false; } } if ($queue) { return $match; } return null; }