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