aboutsummaryrefslogblamecommitdiffstats
path: root/library/Smarty/demo/plugins/resource.extendsall.php
blob: 500b3c8623fe78264fa7b5a2d57bec35772df9cb (plain) (tree)
1
2
3
4
5
6
7
8
9



                       

                                                                       
  
                             
                       
   

                                                                         


                                                          


                                                                  

                   
                                                                                                        





                                                                              
                                                                                                      





                                       

                                        
         
 


                                           
 

                   
 


                                                 
 









                                                              
 
<?php

/**
 * Extends All Resource
 * Resource Implementation modifying the extends-Resource to walk
 * through the template_dirs and inherit all templates of the same name
 *
 * @package Resource-examples
 * @author  Rodney Rehm
 */
class Smarty_Resource_Extendsall extends Smarty_Internal_Resource_Extends
{
    /**
     * populate Source Object with meta data from Resource
     *
     * @param  Smarty_Template_Source   $source    source object
     * @param  Smarty_Internal_Template $_template template object
     *
     * @return void
     */
    public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
    {
        $uid = '';
        $sources = array();
        $exists = true;
        foreach ($_template->smarty->getTemplateDir() as $key => $directory) {
            try {
                $s = Smarty_Resource::source(null, $source->smarty, '[' . $key . ']' . $source->name);
                if (!$s->exists) {
                    continue;
                }
                $sources[$s->uid] = $s;
                $uid .= $s->filepath;
            }
            catch (SmartyException $e) {
            }
        }

        if (!$sources) {
            $source->exists = false;
            $source->template = $_template;

            return;
        }

        $sources = array_reverse($sources, true);
        reset($sources);
        $s = current($sources);

        $source->components = $sources;
        $source->filepath = $s->filepath;
        $source->uid = sha1($uid);
        $source->exists = $exists;
        if ($_template && $_template->smarty->compile_check) {
            $source->timestamp = $s->timestamp;
        }
        // need the template at getContent()
        $source->template = $_template;
    }
}