Ticket #561: history.diff
| File history.diff, 3.6 kB (added by tbosviel, 9 months ago) |
|---|
-
/home/thomas/workspace/jelix-svn/lib/jelix/plugins/coord/history/history.coord.php
old new 1 1 <?php 2 2 /** 3 * @package jelix 4 * @subpackage coord_plugin 5 * @author Lepeltier Kévin 6 * @copyright 2008 Lepeltier Kévin 3 * @package jelix 4 * @subpackage coord_plugin 5 * @author Lepeltier Kévin 6 * @contributor Bosviel Thomas 7 * @copyright 2008 Lepeltier Kévin 8 * @copyright 2008 Bosviel Thomas 7 9 * 8 10 * The plugin History is a plugin coord, 9 11 * it records the action / settings made during a session and allows for reuse. … … 10 12 * 11 13 * @licence http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public Licence, see LICENCE file 12 14 */ 15 13 16 class historyCoordPlugin implements jICoordPlugin { 14 17 15 18 public $config; … … 22 25 23 26 } 24 27 28 private function _addPage($page) { 29 30 if ($this->config['double'] || end($_SESSION[$this->config['session_name']]) != $page) { 31 32 if ($this->config['single']) { 33 foreach ($_SESSION[$this->config['session_name']] as $key => $value) { 34 if ($value == $page) array_splice($_SESSION[$this->config['session_name']], $key, 1); 35 } 36 } 37 38 $_SESSION[$this->config['session_name']][] = $page; 39 40 if (count($_SESSION[$this->config['session_name']]) > $this->config['maxsize']) { 41 $length = count($_SESSION[$this->config['session_name']]) - $this->config['maxsize']; 42 array_splice($_SESSION[$this->config['session_name']], 0, $length); 43 } 44 45 } 46 47 } 48 25 49 public function beforeAction ($params) { 26 50 27 51 if( !empty($params['history.add']) && $params['history.add'] ) { 28 52 if( !isset($_SESSION[$this->config['session_name']]) ) 29 53 $_SESSION[$this->config['session_name']] = array(); … … 37 61 $page['label'] = ( !empty($params['history.label']) )? $params['history.label']:''; 38 62 $page['title'] = ( !empty($params['history.title']) )? $params['history.title']:''; 39 63 40 if( !count($_SESSION[$this->config['session_name']]) ) { 41 $_SESSION[$this->config['session_name']][] = $page; 42 } else if( count($_SESSION[$this->config['session_name']]) < $this->config['maxsize'] && ( $this->config['double'] || end($_SESSION[$this->config['session_name']]) != $page ) ) { 43 if( $this->config['single'] ) 44 foreach( $_SESSION[$this->config['session_name']] as $key=>$valu ) if( $valu == $page ) 45 array_splice( $_SESSION[$this->config['session_name']], $key, 1 ); 46 $_SESSION[$this->config['session_name']][] = $page; 47 } 64 $this->_addPage($page); 48 65 49 66 } 50 67 … … 55 72 $page = array_pop($_SESSION[$this->config['session_name']]); 56 73 $page[$key] = $val; 57 74 58 if( $this->config['double'] || end($_SESSION[$this->config['session_name']]) != $page ) { 59 if( $this->config['single'] ) 60 foreach( $_SESSION[$this->config['session_name']] as $key=>$valu ) if( $valu == $page ) 61 array_splice( $_SESSION[$this->config['session_name']], $key, 1 ); 62 $_SESSION[$this->config['session_name']][] = $page; 63 } 75 $this->_addPage($page); 64 76 65 77 } 66 78
