You are here

function advagg_install_url_mod in Advanced CSS/JS Aggregation 7.2

Modify $url and $options before making the HTTP request.

Parameters

string $url: Full URL.

array $options: Options array for drupal_http_request().

bool $mod_url: Set to TRUE to try and modify the $url variable.

2 calls to advagg_install_url_mod()
advagg_install_check_via_http in ./advagg.install
Make sure http requests to css/js files work correctly.
advagg_install_chk_urls in ./advagg.install
Make sure http requests to css/js files work correctly.

File

./advagg.install, line 2522
Handles Advanced Aggregation installation and upgrade tasks.

Code

function advagg_install_url_mod(&$url, array &$options, $mod_url = FALSE) {

  // Set the $options array.
  // Set all timeouts to 8 seconds.
  $options += array(
    'timeout' => 8,
    'dns_timeout' => 8,
    'connect_timeout' => 8,
    'ttfb_timeout' => 8,
  );

  // Set connection to closed to prevent keep-alive from causing a timeout.
  $options['headers']['Connection'] = 'close';

  // Set referrer to current page.
  $options['headers']['Referer'] = $GLOBALS['base_root'] . request_uri();
  $parts = @parse_url($url);
  if (!is_array($parts)) {
    return;
  }

  // Check if this is a protocol relative url, if so add a artificial scheme so
  // that advagg_glue_url() will produce a proper absolute url. That will work
  // with drupal_http_request().
  if (!isset($parts['scheme']) && substr($url, 0, 2) == '//') {
    global $base_url;
    $parts['scheme'] = @parse_url($base_url, PHP_URL_SCHEME);
  }

  // Pass along user/pass in the URL.
  $advagg_auth_basic_user = variable_get('advagg_auth_basic_user', ADVAGG_AUTH_BASIC_USER);
  if (module_exists('shield')) {
    $parts['user'] = variable_get('shield_user', '');
    $parts['pass'] = variable_get('shield_pass', '');
  }
  elseif (isset($_SERVER['AUTH_TYPE']) && $_SERVER['AUTH_TYPE'] == 'Basic') {
    $parts['user'] = $_SERVER['PHP_AUTH_USER'];
    $parts['pass'] = $_SERVER['PHP_AUTH_PW'];
  }
  elseif (isset($_SERVER['HTTP_AUTHORIZATION']) && strpos($_SERVER['HTTP_AUTHORIZATION'], 'Basic ') === 0) {
    $user_pass = explode(':', base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 5)));
    $parts['user'] = $user_pass[0];
    $parts['pass'] = $user_pass[1];
  }
  elseif (isset($_SERVER['REDIRECT_HTTP_AUTHORIZATION']) && strpos($_SERVER['REDIRECT_HTTP_AUTHORIZATION'], 'Basic ') === 0) {
    $user_pass = explode(':', base64_decode(substr($_SERVER['REDIRECT_HTTP_AUTHORIZATION'], 5)));
    $parts['user'] = $user_pass[0];
    $parts['pass'] = $user_pass[1];
  }
  elseif (!empty($advagg_auth_basic_user)) {
    $parts['user'] = $advagg_auth_basic_user;
    $parts['pass'] = variable_get('advagg_auth_basic_pass', ADVAGG_AUTH_BASIC_PASS);
  }
  if ($mod_url) {
    if (function_exists('httprl_build_url_self')) {

      // Remove the base_path from path.
      $path = substr($parts['path'], strlen($GLOBALS['base_path']));
      $new_url = httprl_build_url_self($path);
    }
    else {
      if (!empty($_SERVER['HTTP_HOST'])) {
        if ($parts['host'] != $_SERVER['HTTP_HOST']) {
          $parts['host'] = $_SERVER['HTTP_HOST'];
        }
      }
      elseif (!empty($_SERVER['SERVER_NAME'])) {
        if ($parts['host'] != $_SERVER['SERVER_NAME']) {
          $parts['host'] = $_SERVER['SERVER_NAME'];
        }
      }
      elseif (!empty($_SERVER['SERVER_ADDR'])) {
        if ($parts['host'] != $_SERVER['SERVER_ADDR']) {
          $parts['host'] = $_SERVER['SERVER_ADDR'];
        }
      }
      else {
        $parts['host'] = '127.0.0.1';
      }
    }
  }
  if (empty($new_url)) {
    $new_url = advagg_glue_url($parts);
  }
  $url = $new_url;
}