/** * OB Callback * * @param string $buffer * @return string */ function ob_callback($buffer) { if ($buffer != '' && w3_is_xml($buffer)) { $regexps = array(); $upload_info = w3_upload_info(); $site_url_regexp = w3_get_site_url_regexp(); if ($upload_info) { $regexps[] = '~(["\'])((' . $site_url_regexp . ')?/?(' . w3_preg_quote($upload_info['upload_url']) . '[^"\'>]+))~'; } if ($this->_config->get_boolean('cdn.includes.enable')) { $mask = $this->_config->get_string('cdn.includes.files'); if ($mask != '') { $regexps[] = '~(["\'])((' . $site_url_regexp . ')?/?(' . w3_preg_quote(WPINC) . '/(' . $this->get_regexp_by_mask($mask) . ')))~'; } } if ($this->_config->get_boolean('cdn.theme.enable')) { $theme_dir = preg_replace('~' . $site_url_regexp . '~i', '', get_stylesheet_directory_uri()); $mask = $this->_config->get_string('cdn.theme.files'); if ($mask != '') { $regexps[] = '~(["\'])((' . $site_url_regexp . ')?/?(' . w3_preg_quote($theme_dir) . '/(' . $this->get_regexp_by_mask($mask) . ')))~'; } } if ($this->_config->get_boolean('cdn.minify.enable')) { $regexps[] = '~(["\'])((' . $site_url_regexp . ')?/?(' . w3_preg_quote(W3TC_CONTENT_MINIFY_DIR_NAME) . '/[a-z0-9-_]+\\.include(-footer)?(-nb)?\\.(css|js)))~'; } if ($this->_config->get_boolean('cdn.custom.enable')) { $masks = $this->_config->get_array('cdn.custom.files'); if (count($masks)) { $mask_regexps = array(); foreach ($masks as $mask) { if ($mask != '') { $mask = w3_normalize_file($mask); $mask_regexps[] = $this->get_regexp_by_mask($mask); } } $regexps[] = '~(["\'])((' . $site_url_regexp . ')?/?(' . implode('|', $mask_regexps) . '))~i'; } } foreach ($regexps as $regexp) { $buffer = preg_replace_callback($regexp, array(&$this, 'link_replace_callback'), $buffer); } if ($this->_config->get_boolean('cdn.debug')) { $buffer .= "\r\n\r\n" . $this->get_debug_info(); } } return $buffer; }
/** * Translates URL to local path * @param string $url * @return string */ function w3_translate_file($url) { if (!w3_is_url($url)) { $url = w3_get_domain_url() . '/' . ltrim($url, '/\\'); } $site_url_regexp = '~' . w3_get_site_url_regexp() . '~i'; if (preg_match($site_url_regexp, $url) && strstr($url, '?') === false) { $url = preg_replace($site_url_regexp, '', $url); $url = w3_get_site_path() . ltrim($url, '/\\'); } $url = ltrim($url, '/'); return $url; }
/** * Normalize file path * * @param string $file * @return string */ function w3_normalize_file($file) { $site_url_regexp = '~' . w3_get_site_url_regexp() . '~i'; $file = preg_replace($site_url_regexp, '', $file); $file = ltrim($file, '/\\'); return $file; }