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  
    11<?php 
    22/** 
    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 
    79* 
    810* The plugin History is a plugin coord, 
    911* it records the action / settings made during a session and allows for reuse. 
     
    1012* 
    1113* @licence  http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public Licence, see LICENCE file 
    1214*/ 
     15 
    1316class historyCoordPlugin implements jICoordPlugin { 
    1417     
    1518    public $config; 
     
    2225         
    2326    } 
    2427     
     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     
    2549    public function beforeAction ($params) { 
    26          
     50        
    2751        if( !empty($params['history.add']) && $params['history.add'] ) { 
    2852            if( !isset($_SESSION[$this->config['session_name']]) ) 
    2953                $_SESSION[$this->config['session_name']] = array(); 
     
    3761            $page['label'] = ( !empty($params['history.label']) )? $params['history.label']:''; 
    3862            $page['title'] = ( !empty($params['history.title']) )? $params['history.title']:''; 
    3963             
    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); 
    4865             
    4966        } 
    5067         
     
    5572        $page = array_pop($_SESSION[$this->config['session_name']]); 
    5673        $page[$key] = $val; 
    5774         
    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); 
    6476         
    6577    } 
    6678     
Download in other formats: Original Format