You are here

function advagg_s3fs_upload_params_alter in Advanced CSS/JS Aggregation 7.2

Implements hook_s3fs_upload_params_alter().

Set headers for advagg files.

Related topics

File

./advagg.module, line 1315
Advanced CSS/JS aggregation module.

Code

function advagg_s3fs_upload_params_alter(&$upload_params) {

  // Get advagg dir.
  list($css_path, $js_path) = advagg_get_root_files_dir();
  $scheme_css = file_uri_scheme($css_path[1]);
  if ($scheme_css) {
    $css_path_dir = str_replace("{$scheme_css}://", '', $css_path[1]);
  }
  else {
    $css_path_dir = ltrim($css_path[1], '/');
  }
  $scheme_js = file_uri_scheme($js_path[1]);
  if ($scheme_js) {
    $js_path_dir = str_replace("{$scheme_js}://", '', $js_path[1]);
  }
  else {
    $js_path_dir = ltrim($js_path[1], '/');
  }

  // Get file type in advagg dir, css or js.
  $type = '';
  if (strpos($upload_params['Bucket'] . '/' . $upload_params['Key'], $css_path_dir) !== FALSE) {
    $type = 'css';
  }
  if (strpos($upload_params['Bucket'] . '/' . $upload_params['Key'], $js_path_dir) !== FALSE) {
    $type = 'js';
  }
  if ($js_path_dir === $css_path_dir && !empty($type)) {
    $pathinfo = pathinfo($upload_params['Key']);
    if ($pathinfo['extension'] === 'gz') {
      $pathinfo = pathinfo($pathinfo['filename']);
    }
    $type = $pathinfo['extension'];
  }
  if (empty($type)) {

    // Only change advagg files.
    return;
  }

  // Cache control is 52 weeeks.
  if (variable_get('advagg_resource_hints_use_immutable', ADVAGG_RESOURCE_HINTS_USE_IMMUTABLE)) {
    $upload_params['CacheControl'] = 'max-age=31449600, public, immutable';
  }
  else {
    $upload_params['CacheControl'] = 'max-age=31449600, public';
  }

  // Expires in 365 days.
  $upload_params['Expires'] = gmdate('D, d M Y H:i:s \\G\\M\\T', REQUEST_TIME + 365 * 24 * 60 * 60);

  // The extension is .css or .js.
  $pathinfo = pathinfo($upload_params['Key']);
  if ($pathinfo['extension'] === $type) {
    if (variable_get('advagg_gzip', ADVAGG_GZIP)) {

      // Set gzip.
      $upload_params['ContentEncoding'] = 'gzip';
    }
    elseif (variable_get('advagg_brotli', ADVAGG_BROTLI)) {

      // Set br.
      $upload_params['ContentEncoding'] = 'br';
    }
  }
}