Implements hook_advagg_build_aggregate_plans_post_alter().

Related topics

File

advagg_sri/advagg_sri.advagg.inc, line 43

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];
        }
    }
}