You are here

function _advagg_load_stylesheet in Advanced CSS/JS Aggregation 7.2

Loads stylesheets recursively and returns contents with corrected paths.

This function is used for recursive loading of stylesheets and returns the stylesheet content with all url() paths corrected.

Parameters

array $matches: The matches from preg_replace_callback().

Return value

array String with altered internal url() paths.

See also

_drupal_load_stylesheet()

1 string reference to '_advagg_load_stylesheet'
advagg_load_stylesheet_content in ./advagg.module
Processes the contents of a stylesheet for aggregation.

File

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

Code

function _advagg_load_stylesheet(array $matches) {
  $filename = $matches[1];

  // Load the imported stylesheet and replace @import commands in there as well.
  $file = advagg_load_stylesheet($filename, NULL, FALSE);
  if (empty($file)) {
    if (strpos($matches[0], 'http://') === 0 || strpos($matches[0], 'https://') === 0 || strpos($matches[0], '//') === 0) {
      return $matches[0];
    }
    if (variable_get('advagg_debug', ADVAGG_DEBUG) >= 2) {
      watchdog('advagg-debug', 'Trying to load @file via @import statement but it was not found.', array(
        '@file' => $filename,
      ), WATCHDOG_DEBUG);
    }
    if (variable_get('advagg_cache_level', ADVAGG_CACHE_LEVEL) <= 1) {
      return $matches[0];
    }
    else {
      return '';
    }
  }

  // Determine the file's directory.
  $directory = dirname($filename);

  // If the file is in the current directory, make sure '.' doesn't appear in
  // the url() path.
  $directory = $directory == '.' ? '' : $directory . '/';

  // Alter all internal url() paths. Leave external paths alone. We don't need
  // to normalize absolute paths here (i.e. remove folder/... segments) because
  // that will be done later.
  return preg_replace('%url\\(\\s*+([\'"]?+)(?![a-z]++:|/)([^\'")]+)([\'"]?+)\\s*\\)%i', 'url(\\1' . $directory . '\\2\\3)', $file);
}