diff -r 000000000000 -r 7f95f8617b0b vendor/symfony/src/Symfony/Component/Templating/Loader/ChainLoader.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/symfony/src/Symfony/Component/Templating/Loader/ChainLoader.php Sat Sep 24 15:40:41 2011 +0200 @@ -0,0 +1,83 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Templating\Loader; + +use Symfony\Component\Templating\Storage; +use Symfony\Component\Templating\TemplateReferenceInterface; + +/** + * ChainLoader is a loader that calls other loaders to load templates. + * + * @author Fabien Potencier + */ +class ChainLoader extends Loader +{ + protected $loaders; + + /** + * Constructor. + * + * @param Loader[] $loaders An array of loader instances + */ + public function __construct(array $loaders = array()) + { + $this->loaders = array(); + foreach ($loaders as $loader) { + $this->addLoader($loader); + } + } + + /** + * Adds a loader instance. + * + * @param Loader $loader A Loader instance + */ + public function addLoader(Loader $loader) + { + $this->loaders[] = $loader; + } + + /** + * Loads a template. + * + * @param TemplateReferenceInterface $template A template + * + * @return Storage|Boolean false if the template cannot be loaded, a Storage instance otherwise + */ + public function load(TemplateReferenceInterface $template) + { + foreach ($this->loaders as $loader) { + if (false !== $storage = $loader->load($template)) { + return $storage; + } + } + + return false; + } + + /** + * Returns true if the template is still fresh. + * + * @param TemplateReferenceInterface $template A template + * @param integer $time The last modification time of the cached template (timestamp) + * + * @return Boolean + */ + public function isFresh(TemplateReferenceInterface $template, $time) + { + foreach ($this->loaders as $loader) { + return $loader->isFresh($template); + } + + return false; + } +}