public function LazyAssetManager::getLastModified

File

drupal/core/vendor/kriswallsmith/assetic/src/Assetic/Factory/LazyAssetManager.php, line 207

Class

LazyAssetManager
A lazy asset manager is a composition of a factory and many formula loaders.

Namespace

Assetic\Factory

Code

public function getLastModified(AssetInterface $asset) {
  $mtime = $asset
    ->getLastModified();
  if (!($filters = $asset
    ->getFilters())) {
    return $mtime;
  }

  // prepare load path
  $sourceRoot = $asset
    ->getSourceRoot();
  $sourcePath = $asset
    ->getSourcePath();
  $loadPath = $sourceRoot && $sourcePath ? dirname($sourceRoot . '/' . $sourcePath) : null;
  $prevFilters = array();
  foreach ($filters as $filter) {
    $prevFilters[] = $filter;
    if (!$filter instanceof DependencyExtractorInterface) {
      continue;
    }

    // extract children from asset after running all preceeding filters
    $clone = clone $asset;
    $clone
      ->clearFilters();
    foreach (array_slice($prevFilters, 0, -1) as $prevFilter) {
      $clone
        ->ensureFilter($prevFilter);
    }
    $clone
      ->load();
    foreach ($filter
      ->getChildren($this->factory, $clone
      ->getContent(), $loadPath) as $child) {
      $mtime = max($mtime, $this
        ->getLastModified($child));
    }
  }
  return $mtime;
}