PHP on T R A X
Rapid Application Development Made Easy

Changeset 298 for trunk

Show
Ignore:
Timestamp:
07/30/08 05:19:04 (4 months ago)
Author:
john
Message:

Added ActiveRecord? Session Store for storing sessions to a db via AR

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/trax/vendor/trax/session.php

    r248 r298  
    8383     */ 
    8484    public static $id = null; 
     85 
     86    /** 
     87     *  Setup basic session information 
     88     * 
     89     *  Fetch the contents from a specified element of 
     90     *  {@link http://www.php.net/manual/en/reserved.variables.php#reserved.variables.session $_SESSION} 
     91     *  @uses Trax::$session_name 
     92     *  @uses Trax::$session_lifetime 
     93     *  @uses Trax::$session_maxlifetime_minutes 
     94     */ 
     95    function init() { 
     96        Trax::$session_name = Trax::$session_name ? Trax::$session_name : self::TRAX_SESSION_NAME; 
     97        Trax::$session_lifetime = Trax::$session_lifetime ? Trax::$session_lifetime : self::TRAX_SESSION_LIFETIME; 
     98        Trax::$session_maxlifetime_minutes = Trax::$session_maxlifetime_minutes ? Trax::$session_maxlifetime_minutes : self::TRAX_SESSION_MAXLIFETIME_MINUTES; 
     99         
     100        # set the session default for this app 
     101        ini_set('session.name', Trax::$session_name); 
     102        ini_set('session.use_cookies', 1); 
     103        ini_set('session.cookie_lifetime', Trax::$session_lifetime); 
     104        ini_set('session.gc_probability', 1); 
     105        ini_set('session.gc_maxlifetime', Trax::$session_maxlifetime_minutes * 60); 
     106        ini_set('session.use_trans_sid', 0); 
     107        ini_set('session.auto_start', 0); 
     108 
     109        if(Trax::$session_store == 'active_record_store') { 
     110            ini_set('session.save_handler', 'user'); 
     111            include_once("session/active_record_store.php"); 
     112            $session_class_name = Trax::$session_class_name ? Trax::$session_class_name : 'ActiveRecordStore';   
     113            $ar_session = new $session_class_name;           
     114            session_set_save_handler(                
     115                array(&$ar_session, 'open'), 
     116                array(&$ar_session, 'close'), 
     117                array(&$ar_session, 'read'), 
     118                array(&$ar_session, 'write'), 
     119                array(&$ar_session, 'destroy'), 
     120                array(&$ar_session, 'gc')                    
     121            );               
     122        } else { 
     123            # file store 
     124            ini_set('session.save_handler', 'files'); 
     125            if(Trax::$session_save_path) { 
     126                ini_set('session.save_path', Trax::$session_save_path); 
     127            }                
     128        }        
     129    } 
    85130     
    86131    /** 
     
    182227    } 
    183228 
     229    /** 
     230     *  Alias to Session::start() 
     231     * 
     232     *  @uses start() 
     233     */ 
     234    function start() { 
     235        self::start_session(); 
     236    } 
     237 
    184238    /** 
    185239     *  Start or continue a session 
     
    192246     *  @uses $user_agent 
    193247     */ 
    194     function start() { 
    195          
     248   function start_session() { 
     249             
    196250        if(!self::$started) { 
    197             $session_name = defined("TRAX_SESSION_NAME") ? TRAX_SESSION_NAME : self::TRAX_SESSION_NAME; 
    198             $session_lifetime = defined("TRAX_SESSION_LIFETIME") ? TRAX_SESSION_LIFETIME : self::TRAX_SESSION_LIFETIME; 
    199             $session_maxlifetime_minutes = defined("TRAX_SESSION_MAXLIFETIME_MINUTES") ? TRAX_SESSION_MAXLIFETIME_MINUTES : self::TRAX_SESSION_MAXLIFETIME_MINUTES; 
    200              
    201             # set the session default for this app 
    202             ini_set('session.name', $session_name); 
    203             ini_set('session.cookie_lifetime', $session_lifetime); 
    204             ini_set('session.gc_probability', 1); 
    205             ini_set('session.gc_maxlifetime', $session_maxlifetime_minutes * 60); 
    206      
     251     
     252            self::init(); 
     253 
    207254            header('P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"'); 
    208255     
     
    218265            self::$id = session_id(); 
    219266            self::$started = true; 
    220         } 
     267        }                
     268    } 
     269 
     270    /** 
     271     *  Alias to Session::destroy_session() 
     272     * 
     273     *  @uses destroy_session() 
     274     */ 
     275    function destroy() { 
     276        return self::destroy_session(); 
    221277    } 
    222278 
     
    228284     *  @uses session_destroy() 
    229285     */ 
    230     function destory_session() { 
     286    function destroy_session() { 
    231287        session_destroy(); 
     288        #self::init(); 
    232289    } 
    233290 
     
    239296     */ 
    240297    function unset_session() { 
    241         session_unset($_SESSION[self::get_hash()]); 
     298        unset($_SESSION[self::get_hash()]); 
    242299    } 
    243300 
  • trunk/trax/vendor/trax/trax.php

    r294 r298  
    5353        $vendor_path = null, 
    5454        $public_path = null, 
     55        $tmp_path = null, 
    5556        $url_prefix = null, 
    5657        $views_extension = 'phtml', 
     
    6061        $current_action_name = null, 
    6162        $current_controller_object = null, 
     63        $session_store = "file_store", 
     64        $session_class_name = "ActiveRecordStore", 
     65        $session_save_path = "", 
     66        $session_name = "TRAXSESSID", 
     67        $session_lifetime = "0", 
     68        $session_maxlifetime_minutes = "20", 
    6269        $version = null; 
    6370 
     
    8390        self::$log_path          = TRAX_ROOT."/log"; 
    8491        self::$vendor_path       = TRAX_ROOT."/vendor"; 
    85         self::$public_path       = TRAX_ROOT."/public";  
     92        self::$public_path       = TRAX_ROOT."/public"; 
     93        self::$tmp_path          = TRAX_ROOT."/tmp"; 
    8694 
    8795        # Set which file to log php errors to for this application