mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-12-21 06:01:06 +01:00
97 lines
2.2 KiB
PHP
97 lines
2.2 KiB
PHP
|
<?php
|
||
|
|
||
|
/**
|
||
|
* Base plugin class.
|
||
|
*/
|
||
|
require_once 'Savant2/Plugin.php';
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
* Cycles through a series of values.
|
||
|
*
|
||
|
* $Id$
|
||
|
*
|
||
|
* @author Paul M. Jones <pmjones@ciaweb.net>
|
||
|
*
|
||
|
* @package Savant2
|
||
|
*
|
||
|
* @license http://www.gnu.org/copyleft/lesser.html LGPL
|
||
|
*
|
||
|
* This program is free software; you can redistribute it and/or modify
|
||
|
* it under the terms of the GNU Lesser General Public License as
|
||
|
* published by the Free Software Foundation; either version 2.1 of the
|
||
|
* License, or (at your option) any later version.
|
||
|
*
|
||
|
* This program is distributed in the hope that it will be useful, but
|
||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
|
* Lesser General Public License for more details.
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
class Savant2_Plugin_cycle extends Savant2_Plugin {
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
* An associative array of predefined cycle value sets.
|
||
|
*
|
||
|
* You can preset cycle values via Savant::loadPlugin().
|
||
|
*
|
||
|
* $conf = array(
|
||
|
* 'values' => array(
|
||
|
* 'lightdark' => array('light', 'dark'),
|
||
|
* 'threesome' => array('one', 'two', 'three')
|
||
|
* )
|
||
|
* );
|
||
|
*
|
||
|
* $Savant->loadPlugin('cycle', $conf);
|
||
|
*
|
||
|
* ... and in your template you can call:
|
||
|
*
|
||
|
* $this->plugin('cycle', 'lightdark', $iteration);
|
||
|
*
|
||
|
* @access public
|
||
|
*
|
||
|
* @var array
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
var $values = array();
|
||
|
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
* Cycles through a series of values.
|
||
|
*
|
||
|
* @access public
|
||
|
*
|
||
|
* @param string|array $cycle If a string, the preset cycle value key to use
|
||
|
* from $this->cycles; if an array, use the array as the cycle values.
|
||
|
*
|
||
|
* @param int $iteration The iteration number for the cycle.
|
||
|
*
|
||
|
* @param int $repeat The number of times to repeat each cycle value.
|
||
|
*
|
||
|
* @return mixed The value of the cycle iteration.
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
function plugin($cycle, $iteration, $repeat = 1)
|
||
|
{
|
||
|
// get the proper value set as an array
|
||
|
if (is_string($cycle) && isset($this->values[$cycle])) {
|
||
|
$values = (array) $this->values[$cycle];
|
||
|
} else {
|
||
|
$values = (array) $cycle;
|
||
|
}
|
||
|
|
||
|
// prevent divide-by-zero errors
|
||
|
if ($repeat == 0) {
|
||
|
$repeat = 1;
|
||
|
}
|
||
|
|
||
|
// return the perper value for iteration and repetition
|
||
|
return $values[($iteration / $repeat) % count($values)];
|
||
|
}
|
||
|
}
|
||
|
?>
|