Exemplo n.º 1
0
 /**
  * @method readHandler
  * @static
  * @param {string} $id
  * @return {string}
  */
 static function readHandler($id)
 {
     /**
      * @event Q/session/read {before}
      * @param 'save_path' {string}
      * @param 'session_db_connection' {iDb}
      * @return {string}
      */
     $result = Q::event('Q/session/read', array('save_path' => self::$session_save_path, 'session_db_connection' => self::$session_db_connection), 'before');
     if (isset($result)) {
         return $result;
     }
     if (empty(self::$session_save_path)) {
         self::$session_save_path = self::savePath();
     }
     if (!empty(self::$session_db_connection)) {
         $id_field = self::$session_db_id_field;
         $data_field = self::$session_db_data_field;
         if (!self::$session_db_row or self::$session_db_row->{$id_field} != $id) {
             $class = self::$session_db_row_class;
             $row = new $class();
             $row->{$id_field} = $id;
             $row->retrieve();
             self::$session_db_row = $row;
         }
         $result = isset(self::$session_db_row->{$data_field}) ? self::$session_db_row->{$data_field} : null;
     } else {
         $duration_name = self::durationName();
         $id1 = substr($id, 0, 4);
         $id2 = substr($id, 4);
         $sess_file = self::$session_save_path . DS . "{$duration_name}/{$id1}/{$id2}";
         if (!file_exists($sess_file)) {
             $result = null;
         } else {
             $result = (string) file_get_contents($sess_file);
         }
     }
     self::$sess_data = $result;
     /**
      * @event Q/session/read {after}
      * @param 'save_path' {string}
      * @param 'session_db_connection' {iDb}
      * @return {string}
      */
     $result = Q::event('Q/session/read', array('save_path' => self::$session_save_path, 'session_db_connection' => self::$session_db_connection, 'sess_data' => $result), 'after', false, $result);
     return $result;
 }