You are here

function advagg_sri_advagg_build_aggregate_plans_post_alter in Advanced CSS/JS Aggregation 7.2

Implements hook_advagg_build_aggregate_plans_post_alter().

Related topics

File

advagg_sri/advagg_sri.advagg.inc, line 43
Advanced aggregation sri module.

Code

function advagg_sri_advagg_build_aggregate_plans_post_alter(array &$plans) {

  // * @param array $plans
  // *   Array of aggregate files.
  $advagg_sri = variable_get('advagg_sri', ADVAGG_SRI);
  if (empty($advagg_sri)) {
    return;
  }
  if ($advagg_sri == 1) {
    $sha_bits = 'sha256';
  }
  if ($advagg_sri == 2) {
    $sha_bits = 'sha384';
  }
  if ($advagg_sri == 3) {
    $sha_bits = 'sha512';
  }

  // Get all aggregates.
  $files = array();
  $filenames = array();
  foreach ($plans as $key => $values) {
    if ($values['type'] !== 'file' || empty($values['cache'])) {
      continue;
    }
    $files[$values['filename']] = $key;
    $filenames[$values['filepath']] = $values['filename'];
  }

  // Lookup hashes.
  $hashes = array();
  if (!empty($filenames)) {
    $hashes = advagg_sri_get_filenames_hashes($filenames);
  }

  // Set attributes.
  foreach ($hashes as $filename => $hash) {
    if (isset($files[$filename]) && isset($plans[$files[$filename]])) {
      $plans[$files[$filename]]['attributes']['integrity'] = $sha_bits . '-' . $hash[$sha_bits];
    }
  }
}