You are here

function advagg_relocate_css_alter in Advanced CSS/JS Aggregation 7.2

Implements hook_css_alter().

1 call to advagg_relocate_css_alter()
advagg_relocate_load_stylesheet_external in advagg_relocate/advagg_relocate.module
Convert external @import statements to be local.

File

advagg_relocate/advagg_relocate.module, line 179
Advanced aggregation relocate module.

Code

function advagg_relocate_css_alter(&$css) {
  if (!module_exists('advagg') || !advagg_enabled()) {
    return;
  }
  $aggregate_settings = advagg_current_hooks_hash_array();

  // Check external css setting.
  if (empty($aggregate_settings['variables']['advagg_relocate_css_inline_external'])) {
    return;
  }

  // Handle fonts.
  $replacements = array();
  foreach ($css as $key => &$values) {
    if ($values['type'] !== 'external') {
      continue;
    }
    if (!advagg_relocate_check_domain_of_font_url($key, $aggregate_settings)) {
      continue;
    }
    module_load_include('advagg.inc', 'advagg_relocate');
    $font_faces = advagg_relocate_get_remote_font_data($key, $aggregate_settings);
    if (empty($font_faces)) {
      continue;
    }
    $new_css = advagg_relocate_font_face_parser($font_faces);
    $values['data'] = $new_css;
    $values['type'] = 'inline';

    // Add DNS information for font domains.
    $parse = @parse_url($key);
    if (strpos($parse['host'], 'fonts.googleapis.com') !== FALSE) {

      // Add fonts.gstatic.com when fonts.googleapis.com is added.
      $values['dns_prefetch'] = 'https://fonts.gstatic.com/#crossorigin';
      $values['preload'] = 'https://fonts.gstatic.com/#crossorigin';
    }

    // Move this css to the top.
    if (module_exists('advagg_mod') && $aggregate_settings['variables']['advagg_mod_css_adjust_sort_external']) {
      $values['group'] = CSS_SYSTEM - 1;
      $values['weight'] = -50000;
      $values['movable'] = FALSE;
    }

    // Do not move this css to the bottom.
    if (module_exists('advagg_mod') && $aggregate_settings['variables']['advagg_mod_css_adjust_sort_inline']) {
      $values['movable'] = FALSE;
    }
    $replacements[basename($key)] = $key;
  }
  if (!empty($replacements)) {
    $css = advagg_relocate_key_rename($css, $replacements);
  }
}