A super easy PHP Framework for web development!
				https://github.com/exacti/phacil-framework
			
			
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					106 lines
				
				3.3 KiB
			
		
		
			
		
	
	
					106 lines
				
				3.3 KiB
			| 
								 
											7 years ago
										 
									 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Smarty plugin
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @package    Smarty
							 | 
						||
| 
								 | 
							
								 * @subpackage PluginsFunction
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Smarty {cycle} function plugin
							 | 
						||
| 
								 | 
							
								 * Type:     function
							 | 
						||
| 
								 | 
							
								 * Name:     cycle
							 | 
						||
| 
								 | 
							
								 * Date:     May 3, 2002
							 | 
						||
| 
								 | 
							
								 * Purpose:  cycle through given values
							 | 
						||
| 
								 | 
							
								 * Params:
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * - name      - name of cycle (optional)
							 | 
						||
| 
								 | 
							
								 * - values    - comma separated list of values to cycle, or an array of values to cycle
							 | 
						||
| 
								 | 
							
								 *               (this can be left out for subsequent calls)
							 | 
						||
| 
								 | 
							
								 * - reset     - boolean - resets given var to true
							 | 
						||
| 
								 | 
							
								 * - print     - boolean - print var or not. default is true
							 | 
						||
| 
								 | 
							
								 * - advance   - boolean - whether or not to advance the cycle
							 | 
						||
| 
								 | 
							
								 * - delimiter - the value delimiter, default is ","
							 | 
						||
| 
								 | 
							
								 * - assign    - boolean, assigns to template var instead of printed.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Examples:
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * {cycle values="#eeeeee,#d0d0d0d"}
							 | 
						||
| 
								 | 
							
								 * {cycle name=row values="one,two,three" reset=true}
							 | 
						||
| 
								 | 
							
								 * {cycle name=row}
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @link     http://www.smarty.net/manual/en/language.function.cycle.php {cycle}
							 | 
						||
| 
								 | 
							
								 *           (Smarty online manual)
							 | 
						||
| 
								 | 
							
								 * @author   Monte Ohrt <monte at ohrt dot com>
							 | 
						||
| 
								 | 
							
								 * @author   credit to Mark Priatel <mpriatel@rogers.com>
							 | 
						||
| 
								 | 
							
								 * @author   credit to Gerard <gerard@interfold.com>
							 | 
						||
| 
								 | 
							
								 * @author   credit to Jason Sweat <jsweat_php@yahoo.com>
							 | 
						||
| 
								 | 
							
								 * @version  1.3
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @param array                    $params   parameters
							 | 
						||
| 
								 | 
							
								 * @param Smarty_Internal_Template $template template object
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @return string|null
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function smarty_function_cycle($params, $template)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    static $cycle_vars;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    $name = (empty($params[ 'name' ])) ? 'default' : $params[ 'name' ];
							 | 
						||
| 
								 | 
							
								    $print = (isset($params[ 'print' ])) ? (bool) $params[ 'print' ] : true;
							 | 
						||
| 
								 | 
							
								    $advance = (isset($params[ 'advance' ])) ? (bool) $params[ 'advance' ] : true;
							 | 
						||
| 
								 | 
							
								    $reset = (isset($params[ 'reset' ])) ? (bool) $params[ 'reset' ] : false;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (!isset($params[ 'values' ])) {
							 | 
						||
| 
								 | 
							
								        if (!isset($cycle_vars[ $name ][ 'values' ])) {
							 | 
						||
| 
								 | 
							
								            trigger_error('cycle: missing \'values\' parameter');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            return;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								        if (isset($cycle_vars[ $name ][ 'values' ]) && $cycle_vars[ $name ][ 'values' ] !== $params[ 'values' ]) {
							 | 
						||
| 
								 | 
							
								            $cycle_vars[ $name ][ 'index' ] = 0;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        $cycle_vars[ $name ][ 'values' ] = $params[ 'values' ];
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (isset($params[ 'delimiter' ])) {
							 | 
						||
| 
								 | 
							
								        $cycle_vars[ $name ][ 'delimiter' ] = $params[ 'delimiter' ];
							 | 
						||
| 
								 | 
							
								    } elseif (!isset($cycle_vars[ $name ][ 'delimiter' ])) {
							 | 
						||
| 
								 | 
							
								        $cycle_vars[ $name ][ 'delimiter' ] = ',';
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (is_array($cycle_vars[ $name ][ 'values' ])) {
							 | 
						||
| 
								 | 
							
								        $cycle_array = $cycle_vars[ $name ][ 'values' ];
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								        $cycle_array = explode($cycle_vars[ $name ][ 'delimiter' ], $cycle_vars[ $name ][ 'values' ]);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (!isset($cycle_vars[ $name ][ 'index' ]) || $reset) {
							 | 
						||
| 
								 | 
							
								        $cycle_vars[ $name ][ 'index' ] = 0;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (isset($params[ 'assign' ])) {
							 | 
						||
| 
								 | 
							
								        $print = false;
							 | 
						||
| 
								 | 
							
								        $template->assign($params[ 'assign' ], $cycle_array[ $cycle_vars[ $name ][ 'index' ] ]);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if ($print) {
							 | 
						||
| 
								 | 
							
								        $retval = $cycle_array[ $cycle_vars[ $name ][ 'index' ] ];
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								        $retval = null;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if ($advance) {
							 | 
						||
| 
								 | 
							
								        if ($cycle_vars[ $name ][ 'index' ] >= count($cycle_array) - 1) {
							 | 
						||
| 
								 | 
							
								            $cycle_vars[ $name ][ 'index' ] = 0;
							 | 
						||
| 
								 | 
							
								        } else {
							 | 
						||
| 
								 | 
							
								            $cycle_vars[ $name ][ 'index' ] ++;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return $retval;
							 | 
						||
| 
								 | 
							
								}
							 |