- Added testing for empty block in parent templates
[haanga.git] / contrib / meneame_pagination.php
blobc8e440252ce31a7233e78b0ebdf3761b6429bb7d
1 <?php
3 class Haanga_Extension_Tag_MeneamePagination
5 public $is_block = FALSE;
7 static function generator($cmp, $args, $redirected)
9 if (count($args) != 3 && count($args) != 4) {
10 throw new Haanga_CompilerException("Memeame_Pagination requires 3 or 4 parameters");
13 if (count($args) == 3) {
14 $args[3] = 5;
17 $current = hvar('mnm_current');
18 $total = hvar('mnm_total');
19 $start = hvar('mnm_start');
20 $end = hvar('mnm_end');
21 $prev = hvar('mnm_prev');
22 $next = hvar('mnm_next');
23 $pages = 'mnm_pages';
25 $code = hcode();
27 $code->decl($current, $args[0]);
28 $code->decl($total, hexec('ceil', hexpr($args[2], '/', $args[1])) );
29 $code->decl($start, hexec('max', hexpr($current, '-', hexec('intval', hexpr($args[3],'/', 2))), 1));
30 $code->decl($end, hexpr($start, '+', $args[3], '-', 1));
31 $code->decl($prev, hexpr_cond( hexpr(1, '==', $current), FALSE, hexpr($current, '-', 1)) );
32 $code->decl($next, hexpr_cond( hexpr($args[2], '<', 0, '||', $current, '<', $total), hexpr($current, '+', 1), FALSE));
33 $code->decl('mnm_pages', hexec('range', $start, hexpr_cond(hexpr($end,'<', $total), $end, $total)));
35 $cmp->set_safe($current);
36 $cmp->set_safe($total);
37 $cmp->set_safe($prev);
38 $cmp->set_safe($next);
39 $cmp->set_safe($pages);
42 return $code;