Ticket #1449: block.mloop.php

File block.mloop.php, 2.2 KB (added by flav, 15 months ago)

plugin de template ayant besoin du blockstack

Line 
1<?php
2
3// Virer varName. (Obsolète grace à l'itérateur?)
4
5
6/**
7* @package     jspip
8* @subpackage  jtpl_plugin
9* @author      Guillon Flavien
10* @copyright   2010 Guillon Flavien
11* @licence     GNU Lesser General Public Licence see LICENCE file or http://www.gnu.org/licenses/lgpl.html
12*/
13
14/**
15 * a special list block list easily data objects
16 *
17 * <pre>{loop '$boucle1(articles)->$art', [$conditions],[$offset],[$pSize],['<p>display_if_none</p>']}
18 * ..here generated list of data objects {/loop}</pre>
19 *
20 * @param jTplCompiler $compiler the template compiler
21 *
22 * @param boolean true if it is the begin of block, else false
23 *
24 * @param $param array(0=>'definition',
25 *  optional:[$params])
26 *
27 * @return string the php code corresponding to the begin or end of the block
28 */
29function jtpl_block_common_mloop($compiler, $begin, $param=array())
30{
31    if($begin){
32        if(count($param) == 2)  {
33                $content = '';
34               
35                $loopKey = md5(serialize($compiler->_blockStack));
36               
37        $content .= '
38        jClasses::inc("tpl_mloop");
39        $definition'.$loopKey.' = tpl_mloop::extractDefinition('.$param[0].');
40        $loop'.$loopKey.' = new tpl_mloop($definition'.$loopKey.'[\'driver\'],'.$param[1].');
41       
42                $t->_vars[$definition'.$loopKey.'[\'var\']] = &$loop'.$loopKey.';
43        if($loop'.$loopKey.'->getCount())       {
44                        $functions["loop_".$definition'.$loopKey.'[\'var\']] = function (&$list) use (&$t,&$definition'.$loopKey.',&$loop'.$loopKey.',&$functions)      {
45                                $loop'.$loopKey.'->up();
46                                $loop'.$loopKey.'->setFirstAndLastElement($list);
47                                $isHierarchized = $loop'.$loopKey.'->isHierarchized();
48                                $definition = $definition'.$loopKey.';
49                                foreach($list as $t->_vars[$definition'.$loopKey.'[\'objectVar\']] )    {
50                                        ';
51               
52        }else{
53                        die(var_export($param,2));
54            $content='';
55            $compiler->doError2('errors.tplplugin.block.bad.argument.number','mloop',2);
56        }
57    }else{
58                $loopKey = md5(serialize($compiler->_blockStack));
59        $content = '
60                                }
61                                $loop'.$loopKey.'->down();
62                        };
63                        $functions["loop_".$definition'.$loopKey.'[\'var\']]($loop'.$loopKey.'->getList());
64                }
65                ';
66    }
67    return $content;
68}