You are here

function advagg_scan_filesystem_for_changes_live in Advanced CSS/JS Aggregation 7.2

Will scan, flush, use, and report any changes to css/js files in aggregates.

1 call to advagg_scan_filesystem_for_changes_live()
advagg_preprocess_page in ./advagg.module
Implements hook_preprocess_page().

File

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

Code

function advagg_scan_filesystem_for_changes_live() {
  static $function_has_ran;
  if (isset($function_has_ran)) {
    return;
  }
  $function_has_ran = TRUE;
  $bypass_cookie = FALSE;
  $cookie_name = 'AdvAggDisabled';
  $key = drupal_hmac_base64('advagg_cookie', drupal_get_private_key() . drupal_get_hash_salt() . variable_get('cron_key', 'drupal'));
  if (!empty($_COOKIE[$cookie_name]) && $_COOKIE[$cookie_name] == $key) {
    $bypass_cookie = TRUE;
  }
  if (!advagg_enabled() && !$bypass_cookie || variable_get('advagg_cache_level', ADVAGG_CACHE_LEVEL) >= 0) {
    return;
  }

  // Scan for changes to any CSS/JS files.
  module_load_include('inc', 'advagg', 'advagg.cache');
  $flushed = advagg_push_new_changes();

  // Report back the results.
  if (empty($flushed) || !user_is_logged_in()) {
    return;
  }
  list($css_path) = advagg_get_root_files_dir();
  $parts_uri = $css_path[1] . '/parts';
  foreach ($flushed as $filename => $data) {
    if (strpos($filename, $parts_uri) === 0) {

      // Do not report on css files manged in the parts directory.
      continue;
    }
    if (variable_get('advagg_show_file_changed_message', ADVAGG_SHOW_FILE_CHANGED_MESSAGE)) {
      $ext = pathinfo($filename, PATHINFO_EXTENSION);
      drupal_set_message(t('The file %filename has changed. %db_usage aggregates are using this file. %db_count db cache entries and all %type full cache entries have been flushed from the cache bins. Trigger: <code>@changes</code>', array(
        '%filename' => $filename,
        '%db_usage' => count($data[0]),
        '%db_count' => count($data[1]),
        '@changes' => print_r($data[2], TRUE),
        '%type' => $ext,
      )));
    }
  }
}