]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-14992 towards new moodle db sessions
authorskodak <skodak>
Wed, 14 Jan 2009 17:08:29 +0000 (17:08 +0000)
committerskodak <skodak>
Wed, 14 Jan 2009 17:08:29 +0000 (17:08 +0000)
29 files changed:
admin/multilangupgrade.php
lib/adodb/readme_moodle.txt
lib/adodb/session/adodb-compress-bzip2.php [deleted file]
lib/adodb/session/adodb-compress-gzip.php [deleted file]
lib/adodb/session/adodb-cryptsession.php [deleted file]
lib/adodb/session/adodb-cryptsession2.php [deleted file]
lib/adodb/session/adodb-encrypt-mcrypt.php [deleted file]
lib/adodb/session/adodb-encrypt-md5.php [deleted file]
lib/adodb/session/adodb-encrypt-secret.php [deleted file]
lib/adodb/session/adodb-encrypt-sha1.php [deleted file]
lib/adodb/session/adodb-sess.txt [deleted file]
lib/adodb/session/adodb-session-clob.php [deleted file]
lib/adodb/session/adodb-session-clob2.php [deleted file]
lib/adodb/session/adodb-session.php [deleted file]
lib/adodb/session/adodb-session2.php [deleted file]
lib/adodb/session/adodb-sessions.mysql.sql [deleted file]
lib/adodb/session/adodb-sessions.oracle.clob.sql [deleted file]
lib/adodb/session/adodb-sessions.oracle.sql [deleted file]
lib/adodb/session/crypt.inc.php [deleted file]
lib/adodb/session/old/adodb-cryptsession.php [deleted file]
lib/adodb/session/old/adodb-session-clob.php [deleted file]
lib/adodb/session/old/adodb-session.php [deleted file]
lib/adodb/session/old/crypt.inc.php [deleted file]
lib/adodb/session/session_schema.xml [deleted file]
lib/adodb/session/session_schema2.xml [deleted file]
lib/db/install.xml
lib/db/upgrade.php
lib/simpletestlib.php
version.php

index 5bd05248a0f7798c3b1dd2bf68add9ca8b97b9f6..da5ee8a1bc92312311ad8b1dd69cd7629c70309b 100644 (file)
@@ -38,7 +38,7 @@ while(@ob_end_flush());
 
 echo '<strong>Progress:</strong>';
 $i = 0;
-$skiptables = array('config', 'user_students', 'user_teachers');//, 'sessions2');
+$skiptables = array('config', 'user_students', 'user_teachers');
 
 foreach ($tables as $table) {
     if (strpos($table,'pma') === 0) { // Not our tables
index bb47c2c061a3ad1263cd27073974728926a243d7..d530f88977e6e76c195dd9537365940384be32cb 100644 (file)
@@ -5,6 +5,7 @@ Removed:
  * cute_icons_for_site/
  * docs/
  * pear/
+ * session/
  * tests/
  * server.php
 
@@ -25,7 +26,7 @@ Our changes:
        not able to return the Insert_ID() at all. MDL-14886.
        Reported to ADOdb at: http://phplens.com/lens/lensforum/msgs.php?id=17068
        Once fixed by adodb guys, we'll return to their official distro.
-
 skodak, iarenaza, moodler, stronk7
 
 $Id$
diff --git a/lib/adodb/session/adodb-compress-bzip2.php b/lib/adodb/session/adodb-compress-bzip2.php
deleted file mode 100644 (file)
index a820102..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-<?php
-
-/*
-V5.04a 25 Mar 2008   (c) 2000-2008 John Lim (jlim#natsoft.com.my). All rights reserved.
-         Contributed by Ross Smith (adodb@netebb.com). 
-  Released under both BSD license and Lesser GPL library license.
-  Whenever there is any discrepancy between the two licenses,
-  the BSD license will take precedence.
-         Set tabs to 4 for best viewing.
-
-*/
-
-if (!function_exists('bzcompress')) {
-       trigger_error('bzip2 functions are not available', E_USER_ERROR);
-       return 0;
-}
-
-/*
-*/
-class ADODB_Compress_Bzip2 {
-       /**
-        */
-       var $_block_size = null;
-
-       /**
-        */
-       var $_work_level = null;
-
-       /**
-        */
-       var $_min_length = 1;
-
-       /**
-        */
-       function getBlockSize() {
-               return $this->_block_size;
-       }
-
-       /**
-        */
-       function setBlockSize($block_size) {
-               assert('$block_size >= 1');
-               assert('$block_size <= 9');
-               $this->_block_size = (int) $block_size;
-       }
-
-       /**
-        */
-       function getWorkLevel() {
-               return $this->_work_level;
-       }
-
-       /**
-        */
-       function setWorkLevel($work_level) {
-               assert('$work_level >= 0');
-               assert('$work_level <= 250');
-               $this->_work_level = (int) $work_level;
-       }
-
-       /**
-        */
-       function getMinLength() {
-               return $this->_min_length;
-       }
-
-       /**
-        */
-       function setMinLength($min_length) {
-               assert('$min_length >= 0');
-               $this->_min_length = (int) $min_length;
-       }
-
-       /**
-        */
-       function ADODB_Compress_Bzip2($block_size = null, $work_level = null, $min_length = null) {
-               if (!is_null($block_size)) {
-                       $this->setBlockSize($block_size);
-               }
-
-               if (!is_null($work_level)) {
-                       $this->setWorkLevel($work_level);
-               }
-
-               if (!is_null($min_length)) {
-                       $this->setMinLength($min_length);
-               }
-       }
-
-       /**
-        */
-       function write($data, $key) {
-               if (strlen($data) < $this->_min_length) {
-                       return $data;
-               }
-
-               if (!is_null($this->_block_size)) {
-                       if (!is_null($this->_work_level)) {
-                               return bzcompress($data, $this->_block_size, $this->_work_level);
-                       } else {
-                               return bzcompress($data, $this->_block_size);
-                       }
-               }
-
-               return bzcompress($data);
-       }
-
-       /**
-        */
-       function read($data, $key) {
-               return $data ? bzdecompress($data) : $data;
-       }
-
-}
-
-return 1;
-
-?>
diff --git a/lib/adodb/session/adodb-compress-gzip.php b/lib/adodb/session/adodb-compress-gzip.php
deleted file mode 100644 (file)
index 5bb4e16..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-<?php
-
-
-/*
-V5.04a 25 Mar 2008   (c) 2000-2008 John Lim (jlim#natsoft.com.my). All rights reserved.
-         Contributed by Ross Smith (adodb@netebb.com). 
-  Released under both BSD license and Lesser GPL library license.
-  Whenever there is any discrepancy between the two licenses,
-  the BSD license will take precedence.
-         Set tabs to 4 for best viewing.
-
-*/
-
-if (!function_exists('gzcompress')) {
-       trigger_error('gzip functions are not available', E_USER_ERROR);
-       return 0;
-}
-
-/*
-*/
-class ADODB_Compress_Gzip {
-       /**
-        */
-       var $_level = null;
-
-       /**
-        */
-       var $_min_length = 1;
-
-       /**
-        */
-       function getLevel() {
-               return $this->_level;
-       }
-
-       /**
-        */
-       function setLevel($level) {
-               assert('$level >= 0');
-               assert('$level <= 9');
-               $this->_level = (int) $level;
-       }
-
-       /**
-        */
-       function getMinLength() {
-               return $this->_min_length;
-       }
-
-       /**
-        */
-       function setMinLength($min_length) {
-               assert('$min_length >= 0');
-               $this->_min_length = (int) $min_length;
-       }
-
-       /**
-        */
-       function ADODB_Compress_Gzip($level = null, $min_length = null) {
-               if (!is_null($level)) {
-                       $this->setLevel($level);
-               }
-
-               if (!is_null($min_length)) {
-                       $this->setMinLength($min_length);
-               }
-       }
-
-       /**
-        */
-       function write($data, $key) {
-               if (strlen($data) < $this->_min_length) {
-                       return $data;
-               }
-
-               if (!is_null($this->_level)) {
-                       return gzcompress($data, $this->_level);
-               } else {
-                       return gzcompress($data);
-               }
-       }
-
-       /**
-        */
-       function read($data, $key) {
-               return $data ? gzuncompress($data) : $data;
-       }
-
-}
-
-return 1;
-
-?>
\ No newline at end of file
diff --git a/lib/adodb/session/adodb-cryptsession.php b/lib/adodb/session/adodb-cryptsession.php
deleted file mode 100644 (file)
index b9cde1f..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-
-/*
-V5.04a 25 Mar 2008   (c) 2000-2008 John Lim (jlim#natsoft.com.my). All rights reserved.
-         Contributed by Ross Smith (adodb@netebb.com). 
-  Released under both BSD license and Lesser GPL library license.
-  Whenever there is any discrepancy between the two licenses,
-  the BSD license will take precedence.
-         Set tabs to 4 for best viewing.
-*/
-
-/*
-
-This file is provided for backwards compatibility purposes
-
-*/
-
-if (!defined('ADODB_SESSION')) {
-       require_once dirname(__FILE__) . '/adodb-session.php';
-}
-
-require_once  ADODB_SESSION . '/adodb-encrypt-md5.php';
-
-ADODB_Session::filter(new ADODB_Encrypt_MD5());
-
-?>
\ No newline at end of file
diff --git a/lib/adodb/session/adodb-cryptsession2.php b/lib/adodb/session/adodb-cryptsession2.php
deleted file mode 100644 (file)
index 07e2943..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-
-/*
-V5.04a 25 Mar 2008   (c) 2000-2008 John Lim (jlim#natsoft.com.my). All rights reserved.
-         Contributed by Ross Smith (adodb@netebb.com). 
-  Released under both BSD license and Lesser GPL library license.
-  Whenever there is any discrepancy between the two licenses,
-  the BSD license will take precedence.
-         Set tabs to 4 for best viewing.
-*/
-
-/*
-
-This file is provided for backwards compatibility purposes
-
-*/
-
-if (!defined('ADODB_SESSION')) {
-       require_once dirname(__FILE__) . '/adodb-session2.php';
-}
-
-require_once  ADODB_SESSION . '/adodb-encrypt-md5.php';
-
-ADODB_Session::filter(new ADODB_Encrypt_MD5());
-
-?>
\ No newline at end of file
diff --git a/lib/adodb/session/adodb-encrypt-mcrypt.php b/lib/adodb/session/adodb-encrypt-mcrypt.php
deleted file mode 100644 (file)
index ea57ef4..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-<?php
-
-
-/*
-V5.04a 25 Mar 2008   (c) 2000-2008 John Lim (jlim#natsoft.com.my). All rights reserved.
-         Contributed by Ross Smith (adodb@netebb.com). 
-  Released under both BSD license and Lesser GPL library license.
-  Whenever there is any discrepancy between the two licenses,
-  the BSD license will take precedence.
-         Set tabs to 4 for best viewing.
-
-*/
-
-if (!function_exists('mcrypt_encrypt')) {
-       trigger_error('Mcrypt functions are not available', E_USER_ERROR);
-       return 0;
-}
-
-/**
- */
-class ADODB_Encrypt_MCrypt {
-       /**
-        */
-       var $_cipher;
-
-       /**
-        */
-       var $_mode;
-
-       /**
-        */
-       var $_source;
-
-       /**
-        */
-       function getCipher() {
-               return $this->_cipher;
-       }
-
-       /**
-        */
-       function setCipher($cipher) {
-               $this->_cipher = $cipher;
-       }
-
-       /**
-        */
-       function getMode() {
-               return $this->_mode;
-       }
-
-       /**
-        */
-       function setMode($mode) {
-               $this->_mode = $mode;
-       }
-
-       /**
-        */
-       function getSource() {
-               return $this->_source;
-       }
-
-       /**
-        */
-       function setSource($source) {
-               $this->_source = $source;
-       }
-
-       /**
-        */
-       function ADODB_Encrypt_MCrypt($cipher = null, $mode = null, $source = null) {
-               if (!$cipher) {
-                       $cipher = MCRYPT_RIJNDAEL_256;
-               }
-               if (!$mode) {
-                       $mode = MCRYPT_MODE_ECB;
-               }
-               if (!$source) {
-                       $source = MCRYPT_RAND;
-               }
-
-               $this->_cipher = $cipher;
-               $this->_mode = $mode;
-               $this->_source = $source;
-       }
-
-       /**
-        */
-       function write($data, $key) {
-               $iv_size = mcrypt_get_iv_size($this->_cipher, $this->_mode);
-               $iv = mcrypt_create_iv($iv_size, $this->_source);
-               return mcrypt_encrypt($this->_cipher, $key, $data, $this->_mode, $iv);
-       }
-
-       /**
-        */
-       function read($data, $key) {
-               $iv_size = mcrypt_get_iv_size($this->_cipher, $this->_mode);
-               $iv = mcrypt_create_iv($iv_size, $this->_source);
-               $rv = mcrypt_decrypt($this->_cipher, $key, $data, $this->_mode, $iv);
-               return rtrim($rv, "\0");
-       }
-
-}
-
-return 1;
-
-?>
diff --git a/lib/adodb/session/adodb-encrypt-md5.php b/lib/adodb/session/adodb-encrypt-md5.php
deleted file mode 100644 (file)
index 04a7478..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-/*
-V5.04a 25 Mar 2008   (c) 2000-2008 John Lim (jlim#natsoft.com.my). All rights reserved.
-         Contributed by Ross Smith (adodb@netebb.com). 
-  Released under both BSD license and Lesser GPL library license.
-  Whenever there is any discrepancy between the two licenses,
-  the BSD license will take precedence.
-         Set tabs to 4 for best viewing.
-
-*/
-
-// security - hide paths
-if (!defined('ADODB_SESSION')) die();
-
-include_once ADODB_SESSION . '/crypt.inc.php';
-
-/**
- */
-class ADODB_Encrypt_MD5 {
-       /**
-        */
-       function write($data, $key) {
-               $md5crypt = new MD5Crypt();
-               return $md5crypt->encrypt($data, $key);
-       }
-
-       /**
-        */
-       function read($data, $key) {
-               $md5crypt = new MD5Crypt();
-               return $md5crypt->decrypt($data, $key);
-       }
-
-}
-
-return 1;
-
-?>
\ No newline at end of file
diff --git a/lib/adodb/session/adodb-encrypt-secret.php b/lib/adodb/session/adodb-encrypt-secret.php
deleted file mode 100644 (file)
index b3b89ca..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-
-/*
-V5.04a 25 Mar 2008   (c) 2000-2008 John Lim (jlim#natsoft.com.my). All rights reserved.
-         Contributed by Ross Smith (adodb@netebb.com). 
-  Released under both BSD license and Lesser GPL library license.
-  Whenever there is any discrepancy between the two licenses,
-  the BSD license will take precedence.
-         Set tabs to 4 for best viewing.
-
-*/
-
-@define('HORDE_BASE', dirname(dirname(dirname(__FILE__))) . '/horde');
-
-if (!is_dir(HORDE_BASE)) {
-       trigger_error(sprintf('Directory not found: \'%s\'', HORDE_BASE), E_USER_ERROR);
-       return 0;
-}
-
-include_once HORDE_BASE . '/lib/Horde.php';
-include_once HORDE_BASE . '/lib/Secret.php';
-
-/**
-
-NOTE: On Windows 2000 SP4 with PHP 4.3.1, MCrypt 2.4.x, and Apache 1.3.28,
-the session didn't work properly.
-
-This may be resolved with 4.3.3.
-
- */
-class ADODB_Encrypt_Secret {
-       /**
-        */
-       function write($data, $key) {
-               return Secret::write($key, $data);
-       }
-
-       /**
-        */
-       function read($data, $key) {
-               return Secret::read($key, $data);
-       }
-
-}
-
-return 1;
-
-?>
diff --git a/lib/adodb/session/adodb-encrypt-sha1.php b/lib/adodb/session/adodb-encrypt-sha1.php
deleted file mode 100644 (file)
index 16f603e..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php\r
-if (!defined('ADODB_SESSION')) die();\r
-\r
-include_once ADODB_SESSION . '/crypt.inc.php';\r
-\r
-\r
-/**\r
-\r
- */\r
-\r
-class ADODB_Encrypt_SHA1 {\r
-\r
-       function write($data, $key) \r
-       {\r
-               $sha1crypt = new SHA1Crypt();\r
-               return $sha1crypt->encrypt($data, $key);\r
-\r
-       }\r
-\r
-\r
-       function read($data, $key) \r
-       {\r
-               $sha1crypt = new SHA1Crypt();\r
-               return $sha1crypt->decrypt($data, $key);\r
-\r
-       }\r
-}\r
-\r
-\r
-\r
-return 1;\r
-?>
\ No newline at end of file
diff --git a/lib/adodb/session/adodb-sess.txt b/lib/adodb/session/adodb-sess.txt
deleted file mode 100644 (file)
index d23dac4..0000000
+++ /dev/null
@@ -1,131 +0,0 @@
-John,\r
-\r
-I have been an extremely satisfied ADODB user for several years now.\r
-\r
-To give you something back for all your hard work, I've spent the last 3\r
-days rewriting the adodb-session.php code.\r
-\r
-----------\r
-What's New\r
-----------\r
-\r
-Here's a list of the new code's benefits:\r
-\r
-* Combines the functionality of the three files:\r
-\r
-adodb-session.php\r
-adodb-session-clob.php\r
-adodb-cryptsession.php\r
-\r
-each with very similar functionality, into a single file adodb-session.php.\r
-This will ease maintenance and support issues.\r
-\r
-* Supports multiple encryption and compression schemes.\r
-  Currently, we support:\r
-\r
-  MD5Crypt (crypt.inc.php)\r
-  MCrypt\r
-  Secure (Horde's emulation of MCrypt, if MCrypt module is not available.)\r
-  GZip\r
-  BZip2\r
-\r
-These can be stacked, so if you want to compress and then encrypt your\r
-session data, it's easy.\r
-Also, the built-in MCrypt functions will be *much* faster, and more secure,\r
-than the MD5Crypt code.\r
-\r
-* adodb-session.php contains a single class ADODB_Session that encapsulates\r
-all functionality.\r
-  This eliminates the use of global vars and defines (though they are\r
-supported for backwards compatibility).\r
-\r
-* All user defined parameters are now static functions in the ADODB_Session\r
-class.\r
-\r
-New parameters include:\r
-\r
-* encryptionKey(): Define the encryption key used to encrypt the session.\r
-Originally, it was a hard coded string.\r
-\r
-* persist(): Define if the database will be opened in persistent mode.\r
-Originally, the user had to call adodb_sess_open().\r
-\r
-* dataFieldName(): Define the field name used to store the session data, as\r
-'DATA' appears to be a reserved word in the following cases:\r
-       ANSI SQL\r
-       IBM DB2\r
-       MS SQL Server\r
-       Postgres\r
-       SAP\r
-\r
-* filter(): Used to support multiple, simulataneous encryption/compression\r
-schemes.\r
-\r
-* Debug support is improved thru _rsdump() function, which is called after\r
-every database call.\r
-\r
-------------\r
-What's Fixed\r
-------------\r
-\r
-The new code includes several bug fixes and enhancements:\r
-\r
-* sesskey is compared in BINARY mode for MySQL, to avoid problems with\r
-session keys that differ only by case.\r
-  Of course, the user should define the sesskey field as BINARY, to\r
-correctly fix this problem, otherwise performance will suffer.\r
-\r
-* In ADODB_Session::gc(), if $expire_notify is true, the multiple DELETES in\r
-the original code have been optimized to a single DELETE.\r
-\r
-* In ADODB_Session::destroy(), since "SELECT expireref, sesskey FROM $table\r
-WHERE sesskey = $qkey" will only return a single value, we don't loop on the\r
-result, we simply process the row, if any.\r
-\r
-* We close $rs after every use.\r
-\r
----------------\r
-What's the Same\r
----------------\r
-\r
-I know backwards compatibility is *very* important to you.  Therefore, the\r
-new code is 100% backwards compatible.\r
-\r
-If you like my code, but don't "trust" it's backwards compatible, maybe we\r
-offer it as beta code, in a new directory for a release or two?\r
-\r
-------------\r
-What's To Do\r
-------------\r
-\r
-I've vascillated over whether to use a single function to get/set\r
-parameters:\r
-\r
-$user = ADODB_Session::user();         // get\r
-ADODB_Session::user($user);            // set\r
-\r
-or to use separate functions (which is the PEAR/Java way):\r
-\r
-$user = ADODB_Session::getUser();\r
-ADODB_Session::setUser($user);\r
-\r
-I've chosen the former as it's makes for a simpler API, and reduces the\r
-amount of code, but I'd be happy to change it to the latter.\r
-\r
-Also, do you think the class should be a singleton class, versus a static\r
-class?\r
-\r
-Let me know if you find this code useful, and will be including it in the\r
-next release of ADODB.\r
-\r
-If so, I will modify the current documentation to detail the new\r
-functionality.  To that end, what file(s) contain the documentation?  Please\r
-send them to me if they are not publically available.\r
-\r
-Also, if there is *anything* in the code that you like to see changed, let\r
-me know.\r
-\r
-Thanks,\r
-\r
-Ross\r
-\r
diff --git a/lib/adodb/session/adodb-session-clob.php b/lib/adodb/session/adodb-session-clob.php
deleted file mode 100644 (file)
index 603e3d1..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-
-/*
-V5.04a 25 Mar 2008   (c) 2000-2008 John Lim (jlim#natsoft.com.my). All rights reserved.
-         Contributed by Ross Smith (adodb@netebb.com). 
-  Released under both BSD license and Lesser GPL library license.
-  Whenever there is any discrepancy between the two licenses,
-  the BSD license will take precedence.
-         Set tabs to 4 for best viewing.
-*/
-
-/*
-
-This file is provided for backwards compatibility purposes
-
-*/
-
-if (!defined('ADODB_SESSION')) {
-       require_once dirname(__FILE__) . '/adodb-session.php';
-}
-ADODB_Session::clob('CLOB');
-
-?>
\ No newline at end of file
diff --git a/lib/adodb/session/adodb-session-clob2.php b/lib/adodb/session/adodb-session-clob2.php
deleted file mode 100644 (file)
index c9f39af..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-
-/*
-V5.04a 25 Mar 2008   (c) 2000-2008 John Lim (jlim#natsoft.com.my). All rights reserved.
-         Contributed by Ross Smith (adodb@netebb.com). 
-  Released under both BSD license and Lesser GPL library license.
-  Whenever there is any discrepancy between the two licenses,
-  the BSD license will take precedence.
-         Set tabs to 4 for best viewing.
-*/
-
-/*
-
-This file is provided for backwards compatibility purposes
-
-*/
-
-if (!defined('ADODB_SESSION')) {
-       require_once dirname(__FILE__) . '/adodb-session2.php';
-}
-ADODB_Session::clob('CLOB');
-
-?>
\ No newline at end of file
diff --git a/lib/adodb/session/adodb-session.php b/lib/adodb/session/adodb-session.php
deleted file mode 100644 (file)
index 94ebf99..0000000
+++ /dev/null
@@ -1,934 +0,0 @@
-<?php
-
-
-/*
-V5.04a 25 Mar 2008   (c) 2000-2008 John Lim (jlim#natsoft.com.my). All rights reserved.
-         Contributed by Ross Smith (adodb@netebb.com). 
-  Released under both BSD license and Lesser GPL library license.
-  Whenever there is any discrepancy between the two licenses,
-  the BSD license will take precedence.
-         Set tabs to 4 for best viewing.
-*/
-
-/*
-       You may want to rename the 'data' field to 'session_data' as
-       'data' appears to be a reserved word for one or more of the following:
-               ANSI SQL
-               IBM DB2
-               MS SQL Server
-               Postgres
-               SAP
-
-       If you do, then execute:
-
-               ADODB_Session::dataFieldName('session_data');
-
-*/
-
-if (!defined('_ADODB_LAYER')) {
-       require realpath(dirname(__FILE__) . '/../adodb.inc.php');
-}
-
-if (defined('ADODB_SESSION')) return 1;
-
-define('ADODB_SESSION', dirname(__FILE__));
-
-
-/* 
-       Unserialize session data manually. See http://phplens.com/lens/lensforum/msgs.php?id=9821 
-       
-       From Kerr Schere, to unserialize session data stored via ADOdb. 
-       1. Pull the session data from the db and loop through it. 
-       2. Inside the loop, you will need to urldecode the data column. 
-       3. After urldecode, run the serialized string through this function:
-
-*/
-function adodb_unserialize( $serialized_string ) 
-{
-       $variables = array( );
-       $a = preg_split( "/(\w+)\|/", $serialized_string, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE );
-       for( $i = 0; $i < count( $a ); $i = $i+2 ) {
-               $variables[$a[$i]] = unserialize( $a[$i+1] );
-       }
-       return( $variables );
-}
-
-/*
-       Thanks Joe Li. See http://phplens.com/lens/lensforum/msgs.php?id=11487&x=1
-       Since adodb 4.61.
-*/
-function adodb_session_regenerate_id() 
-{
-       $conn = ADODB_Session::_conn();
-       if (!$conn) return false;
-
-       $old_id = session_id();
-       if (function_exists('session_regenerate_id')) {
-               session_regenerate_id();
-       } else {
-               session_id(md5(uniqid(rand(), true)));
-               $ck = session_get_cookie_params();
-               setcookie(session_name(), session_id(), false, $ck['path'], $ck['domain'], $ck['secure']);
-               //@session_start();
-       }
-       $new_id = session_id();
-       $ok = $conn->Execute('UPDATE '. ADODB_Session::table(). ' SET sesskey='. $conn->qstr($new_id). ' WHERE sesskey='.$conn->qstr($old_id));
-       
-       /* it is possible that the update statement fails due to a collision */
-       if (!$ok) {
-               session_id($old_id);
-               if (empty($ck)) $ck = session_get_cookie_params();
-               setcookie(session_name(), session_id(), false, $ck['path'], $ck['domain'], $ck['secure']);
-               return false;
-       }
-       
-       return true;
-}
-
-/*
-    Generate database table for session data
-    @see http://phplens.com/lens/lensforum/msgs.php?id=12280
-    @return 0 if failure, 1 if errors, 2 if successful.
-       @author Markus Staab http://www.public-4u.de
-*/
-function adodb_session_create_table($schemaFile=null,$conn = null)
-{
-    // set default values
-    if ($schemaFile===null) $schemaFile = ADODB_SESSION . '/session_schema.xml';
-    if ($conn===null) $conn = ADODB_Session::_conn();
-
-       if (!$conn) return 0;
-
-    $schema = new adoSchema($conn);
-    $schema->ParseSchema($schemaFile);
-    return $schema->ExecuteSchema();
-}
-
-/*!
-       \static
-*/
-class ADODB_Session {
-       /////////////////////
-       // getter/setter methods
-       /////////////////////
-       
-       /*
-       
-       function Lock($lock=null)
-       {
-       static $_lock = false;
-       
-               if (!is_null($lock)) $_lock = $lock;
-               return $lock;
-       }
-       */
-       /*!
-       */
-       function driver($driver = null) {
-               static $_driver = 'mysql';
-               static $set = false;
-
-               if (!is_null($driver)) {
-                       $_driver = trim($driver);
-                       $set = true;
-               } elseif (!$set) {
-                       // backwards compatibility
-                       if (isset($GLOBALS['ADODB_SESSION_DRIVER'])) {
-                               return $GLOBALS['ADODB_SESSION_DRIVER'];
-                       }
-               }
-
-               return $_driver;
-       }
-
-       /*!
-       */
-       function host($host = null) {
-               static $_host = 'localhost';
-               static $set = false;
-
-               if (!is_null($host)) {
-                       $_host = trim($host);
-                       $set = true;
-               } elseif (!$set) {
-                       // backwards compatibility
-                       if (isset($GLOBALS['ADODB_SESSION_CONNECT'])) {
-                               return $GLOBALS['ADODB_SESSION_CONNECT'];
-                       }
-               }
-
-               return $_host;
-       }
-
-       /*!
-       */
-       function user($user = null) {
-               static $_user = 'root';
-               static $set = false;
-
-               if (!is_null($user)) {
-                       $_user = trim($user);
-                       $set = true;
-               } elseif (!$set) {
-                       // backwards compatibility
-                       if (isset($GLOBALS['ADODB_SESSION_USER'])) {
-                               return $GLOBALS['ADODB_SESSION_USER'];
-                       }
-               }
-
-               return $_user;
-       }
-
-       /*!
-       */
-       function password($password = null) {
-               static $_password = '';
-               static $set = false;
-
-               if (!is_null($password)) {
-                       $_password = $password;
-                       $set = true;
-               } elseif (!$set) {
-                       // backwards compatibility
-                       if (isset($GLOBALS['ADODB_SESSION_PWD'])) {
-                               return $GLOBALS['ADODB_SESSION_PWD'];
-                       }
-               }
-
-               return $_password;
-       }
-
-       /*!
-       */
-       function database($database = null) {
-               static $_database = 'xphplens_2';
-               static $set = false;
-
-               if (!is_null($database)) {
-                       $_database = trim($database);
-                       $set = true;
-               } elseif (!$set) {
-                       // backwards compatibility
-                       if (isset($GLOBALS['ADODB_SESSION_DB'])) {
-                               return $GLOBALS['ADODB_SESSION_DB'];
-                       }
-               }
-
-               return $_database;
-       }
-
-       /*!
-       */
-       function persist($persist = null) 
-       {
-               static $_persist = true;
-
-               if (!is_null($persist)) {
-                       $_persist = trim($persist);
-               }
-
-               return $_persist;
-       }
-
-       /*!
-       */
-       function lifetime($lifetime = null) {
-               static $_lifetime;
-               static $set = false;
-
-               if (!is_null($lifetime)) {
-                       $_lifetime = (int) $lifetime;
-                       $set = true;
-               } elseif (!$set) {
-                       // backwards compatibility
-                       if (isset($GLOBALS['ADODB_SESS_LIFE'])) {
-                               return $GLOBALS['ADODB_SESS_LIFE'];
-                       }
-               }
-               if (!$_lifetime) {
-                       $_lifetime = ini_get('session.gc_maxlifetime');
-                       if ($_lifetime <= 1) {
-                               // bug in PHP 4.0.3 pl 1  -- how about other versions?
-                               //print "<h3>Session Error: PHP.INI setting <i>session.gc_maxlifetime</i>not set: $lifetime</h3>";
-                               $_lifetime = 1440;
-                       }
-               }
-
-               return $_lifetime;
-       }
-
-       /*!
-       */
-       function debug($debug = null) {
-               static $_debug = false;
-               static $set = false;
-
-               if (!is_null($debug)) {
-                       $_debug = (bool) $debug;
-
-                       $conn = ADODB_Session::_conn();
-                       if ($conn) {
-                               $conn->debug = $_debug;
-                       }
-                       $set = true;
-               } elseif (!$set) {
-                       // backwards compatibility
-                       if (isset($GLOBALS['ADODB_SESS_DEBUG'])) {
-                               return $GLOBALS['ADODB_SESS_DEBUG'];
-                       }
-               }
-
-               return $_debug;
-       }
-
-       /*!
-       */
-       function expireNotify($expire_notify = null) {
-               static $_expire_notify;
-               static $set = false;
-
-               if (!is_null($expire_notify)) {
-                       $_expire_notify = $expire_notify;
-                       $set = true;
-               } elseif (!$set) {
-                       // backwards compatibility
-                       if (isset($GLOBALS['ADODB_SESSION_EXPIRE_NOTIFY'])) {
-                               return $GLOBALS['ADODB_SESSION_EXPIRE_NOTIFY'];
-                       }
-               }
-
-               return $_expire_notify;
-       }
-
-       /*!
-       */
-       function table($table = null) {
-               static $_table = 'sessions';
-               static $set = false;
-
-               if (!is_null($table)) {
-                       $_table = trim($table);
-                       $set = true;
-               } elseif (!$set) {
-                       // backwards compatibility
-                       if (isset($GLOBALS['ADODB_SESSION_TBL'])) {
-                               return $GLOBALS['ADODB_SESSION_TBL'];
-                       }
-               }
-
-               return $_table;
-       }
-
-       /*!
-       */
-       function optimize($optimize = null) {
-               static $_optimize = false;
-               static $set = false;
-
-               if (!is_null($optimize)) {
-                       $_optimize = (bool) $optimize;
-                       $set = true;
-               } elseif (!$set) {
-                       // backwards compatibility
-                       if (defined('ADODB_SESSION_OPTIMIZE')) {
-                               return true;
-                       }
-               }
-
-               return $_optimize;
-       }
-
-       /*!
-       */
-       function syncSeconds($sync_seconds = null) {
-               static $_sync_seconds = 60;
-               static $set = false;
-
-               if (!is_null($sync_seconds)) {
-                       $_sync_seconds = (int) $sync_seconds;
-                       $set = true;
-               } elseif (!$set) {
-                       // backwards compatibility
-                       if (defined('ADODB_SESSION_SYNCH_SECS')) {
-                               return ADODB_SESSION_SYNCH_SECS;
-                       }
-               }
-
-               return $_sync_seconds;
-       }
-
-       /*!
-       */
-       function clob($clob = null) {
-               static $_clob = false;
-               static $set = false;
-
-               if (!is_null($clob)) {
-                       $_clob = strtolower(trim($clob));
-                       $set = true;
-               } elseif (!$set) {
-                       // backwards compatibility
-                       if (isset($GLOBALS['ADODB_SESSION_USE_LOBS'])) {
-                               return $GLOBALS['ADODB_SESSION_USE_LOBS'];
-                       }
-               }
-
-               return $_clob;
-       }
-
-       /*!
-       */
-       function dataFieldName($data_field_name = null) {
-               static $_data_field_name = 'data';
-
-               if (!is_null($data_field_name)) {
-                       $_data_field_name = trim($data_field_name);
-               }
-
-               return $_data_field_name;
-       }
-
-       /*!
-       */
-       function filter($filter = null) {
-               static $_filter = array();
-
-               if (!is_null($filter)) {
-                       if (!is_array($filter)) {
-                               $filter = array($filter);
-                       }
-                       $_filter = $filter;
-               }
-
-               return $_filter;
-       }
-
-       /*!
-       */
-       function encryptionKey($encryption_key = null) {
-               static $_encryption_key = 'CRYPTED ADODB SESSIONS ROCK!';
-
-               if (!is_null($encryption_key)) {
-                       $_encryption_key = $encryption_key;
-               }
-
-               return $_encryption_key;
-       }
-
-       /////////////////////
-       // private methods
-       /////////////////////
-
-       /*!
-       */
-       function _conn($conn=null) {
-               return $GLOBALS['ADODB_SESS_CONN'];
-       }
-
-       /*!
-       */
-       function _crc($crc = null) {
-               static $_crc = false;
-
-               if (!is_null($crc)) {
-                       $_crc = $crc;
-               }
-
-               return $_crc;
-       }
-
-       /*!
-       */
-       function _init() {
-               session_module_name('user');
-               session_set_save_handler(
-                       array('ADODB_Session', 'open'),
-                       array('ADODB_Session', 'close'),
-                       array('ADODB_Session', 'read'),
-                       array('ADODB_Session', 'write'),
-                       array('ADODB_Session', 'destroy'),
-                       array('ADODB_Session', 'gc')
-               );
-       }
-
-
-       /*!
-       */
-       function _sessionKey() {
-               // use this function to create the encryption key for crypted sessions
-               // crypt the used key, ADODB_Session::encryptionKey() as key and session_id() as salt
-               return crypt(ADODB_Session::encryptionKey(), session_id());
-       }
-
-       /*!
-       */
-       function _dumprs($rs) {
-               $conn   = ADODB_Session::_conn();
-               $debug  = ADODB_Session::debug();
-
-               if (!$conn) {
-                       return;
-               }
-
-               if (!$debug) {
-                       return;
-               }
-
-               if (!$rs) {
-                       echo "<br />\$rs is null or false<br />\n";
-                       return;
-               }
-
-               //echo "<br />\nAffected_Rows=",$conn->Affected_Rows(),"<br />\n";
-
-               if (!is_object($rs)) {
-                       return;
-               }
-
-               require_once ADODB_SESSION.'/../tohtml.inc.php';
-               rs2html($rs);
-       }
-
-       /////////////////////
-       // public methods
-       /////////////////////
-       
-       function config($driver, $host, $user, $password, $database=false,$options=false)
-       {
-               ADODB_Session::driver($driver);
-               ADODB_Session::host($host);
-               ADODB_Session::user($user);
-               ADODB_Session::password($password);
-               ADODB_Session::database($database);
-               
-               if ($driver == 'oci8' || $driver == 'oci8po') $options['lob'] = 'CLOB';
-               
-               if (isset($options['table'])) ADODB_Session::table($options['table']);
-               if (isset($options['lob'])) ADODB_Session::clob($options['lob']);
-               if (isset($options['debug'])) ADODB_Session::debug($options['debug']);
-       }
-
-       /*!
-               Create the connection to the database.
-
-               If $conn already exists, reuse that connection
-       */
-       function open($save_path, $session_name, $persist = null) 
-       {
-               $conn = ADODB_Session::_conn();
-
-               if ($conn) {
-                       return true;
-               }
-
-               $database       = ADODB_Session::database();
-               $debug          = ADODB_Session::debug();
-               $driver         = ADODB_Session::driver();
-               $host           = ADODB_Session::host();
-               $password       = ADODB_Session::password();
-               $user           = ADODB_Session::user();
-
-               if (!is_null($persist)) {
-                       ADODB_Session::persist($persist);
-               } else {
-                       $persist = ADODB_Session::persist();
-               }
-
-# these can all be defaulted to in php.ini
-#              assert('$database');
-#              assert('$driver');
-#              assert('$host');
-
-               $conn = ADONewConnection($driver);
-
-               if ($debug) {
-                       $conn->debug = true;
-//                     ADOConnection::outp( " driver=$driver user=$user pwd=$password db=$database ");
-               }
-
-               if ($persist) {
-                       switch($persist) {
-                       default:
-                       case 'P': $ok = $conn->PConnect($host, $user, $password, $database); break;
-                       case 'C': $ok = $conn->Connect($host, $user, $password, $database); break;
-                       case 'N': $ok = $conn->NConnect($host, $user, $password, $database); break;
-                       }
-               } else {
-                       $ok = $conn->Connect($host, $user, $password, $database);
-               }
-
-               if ($ok) $GLOBALS['ADODB_SESS_CONN'] = $conn;
-               else
-                       ADOConnection::outp('<p>Session: connection failed</p>', false);
-               
-
-               return $ok;
-       }
-
-       /*!
-               Close the connection
-       */
-       function close() 
-       {
-/*
-               $conn = ADODB_Session::_conn();
-               if ($conn) $conn->Close();
-*/
-               return true;
-       }
-
-       /*
-               Slurp in the session variables and return the serialized string
-       */
-       function read($key) 
-       {
-               $conn   = ADODB_Session::_conn();
-               $data   = ADODB_Session::dataFieldName();
-               $filter = ADODB_Session::filter();
-               $table  = ADODB_Session::table();
-
-               if (!$conn) {
-                       return '';
-               }
-
-               //assert('$table');
-
-               $qkey = $conn->quote($key);
-               $binary = $conn->dataProvider === 'mysql' ? '/*! BINARY */' : '';
-       
-               $sql = "SELECT $data FROM $table WHERE sesskey = $binary $qkey AND expiry >= " . time();
-               /* Lock code does not work as it needs to hold transaction within whole page, and we don't know if 
-                 developer has commited elsewhere... :(
-                */
-               #if (ADODB_Session::Lock())
-               #       $rs = $conn->RowLock($table, "$binary sesskey = $qkey AND expiry >= " . time(), $data);
-               #else
-               
-                       $rs = $conn->Execute($sql);
-               //ADODB_Session::_dumprs($rs);
-               if ($rs) {
-                       if ($rs->EOF) {
-                               $v = '';
-                       } else {
-                               $v = reset($rs->fields);
-                               $filter = array_reverse($filter);
-                               foreach ($filter as $f) {
-                                       if (is_object($f)) {
-                                               $v = $f->read($v, ADODB_Session::_sessionKey());
-                                       }
-                               }
-                               $v = rawurldecode($v);
-                       }
-
-                       $rs->Close();
-
-                       ADODB_Session::_crc(strlen($v) . crc32($v));
-                       return $v;
-               }
-
-               return '';
-       }
-
-       /*!
-               Write the serialized data to a database.
-
-               If the data has not been modified since the last read(), we do not write.
-       */
-       function write($key, $val) 
-       {
-       global $ADODB_SESSION_READONLY;
-       
-               if (!empty($ADODB_SESSION_READONLY)) return;
-               
-               $clob                   = ADODB_Session::clob();
-               $conn                   = ADODB_Session::_conn();
-               $crc                    = ADODB_Session::_crc();
-               $data                   = ADODB_Session::dataFieldName();
-               $debug                  = ADODB_Session::debug();
-               $driver                 = ADODB_Session::driver();
-               $expire_notify  = ADODB_Session::expireNotify();
-               $filter                 = ADODB_Session::filter();
-               $lifetime               = ADODB_Session::lifetime();
-               $table                  = ADODB_Session::table();
-       
-               if (!$conn) {
-                       return false;
-               }
-               $qkey = $conn->qstr($key);
-       
-               //assert('$table');
-
-               $expiry = time() + $lifetime;
-
-               $binary = $conn->dataProvider === 'mysql' ? '/*! BINARY */' : '';
-
-               // crc32 optimization since adodb 2.1
-               // now we only update expiry date, thx to sebastian thom in adodb 2.32
-               if ($crc !== false && $crc == (strlen($val) . crc32($val))) {
-                       if ($debug) {
-                               ADOConnection::outp( '<p>Session: Only updating date - crc32 not changed</p>');
-                       }
-                       
-                       $expirevar = '';
-                       if ($expire_notify) {
-                               $var = reset($expire_notify);
-                               global $$var;
-                               if (isset($$var)) {
-                                       $expirevar = $$var;
-                               }
-                       }
-                       
-                       
-                       $sql = "UPDATE $table SET expiry = ".$conn->Param('0').",expireref=".$conn->Param('1')." WHERE $binary sesskey = ".$conn->Param('2')." AND expiry >= ".$conn->Param('3');
-                       $rs = $conn->Execute($sql,array($expiry,$expirevar,$key,time()));
-                       return true;
-               }
-               $val = rawurlencode($val);
-               foreach ($filter as $f) {
-                       if (is_object($f)) {
-                               $val = $f->write($val, ADODB_Session::_sessionKey());
-                       }
-               }
-
-               $arr = array('sesskey' => $key, 'expiry' => $expiry, $data => $val, 'expireref' => '');
-               if ($expire_notify) {
-                       $var = reset($expire_notify);
-                       global $$var;
-                       if (isset($$var)) {
-                               $arr['expireref'] = $$var;
-                       }
-               }
-
-               if (!$clob) {   // no lobs, simply use replace()
-                       $arr[$data] = $conn->qstr($val);
-                       $rs = $conn->Replace($table, $arr, 'sesskey', $autoQuote = true);
-                       
-               } else {
-                       // what value shall we insert/update for lob row?
-                       switch ($driver) {
-                               // empty_clob or empty_lob for oracle dbs
-                               case 'oracle':
-                               case 'oci8':
-                               case 'oci8po':
-                               case 'oci805':
-                                       $lob_value = sprintf('empty_%s()', strtolower($clob));
-                                       break;
-
-                               // null for all other
-                               default:
-                                       $lob_value = 'null';
-                                       break;
-                       }
-                       
-                       $conn->StartTrans();
-                       $expiryref = $conn->qstr($arr['expireref']);
-                       // do we insert or update? => as for sesskey
-                       $rs = $conn->Execute("SELECT COUNT(*) AS cnt FROM $table WHERE $binary sesskey = $qkey");
-                       if ($rs && reset($rs->fields) > 0) {
-                               $sql = "UPDATE $table SET expiry = $expiry, $data = $lob_value, expireref=$expiryref WHERE  sesskey = $qkey";
-                       } else {
-                               $sql = "INSERT INTO $table (expiry, $data, sesskey,expireref) VALUES ($expiry, $lob_value, $qkey,$expiryref)";
-                       }
-                       if ($rs)$rs->Close();
-                       
-
-                       $err = '';
-                       $rs1 = $conn->Execute($sql);
-                       if (!$rs1) $err = $conn->ErrorMsg()."\n";
-                       
-                       $rs2 = $conn->UpdateBlob($table, $data, $val, " sesskey=$qkey", strtoupper($clob));
-                       if (!$rs2) $err .= $conn->ErrorMsg()."\n";
-                       
-                       $rs = ($rs && $rs2) ? true : false;
-                       $conn->CompleteTrans();
-               }
-
-               if (!$rs) {
-                       ADOConnection::outp('<p>Session Replace: ' . $conn->ErrorMsg() . '</p>', false);
-                       return false;
-               }  else {
-                       // bug in access driver (could be odbc?) means that info is not committed
-                       // properly unless select statement executed in Win2000
-                       if ($conn->databaseType == 'access') {
-                               $sql = "SELECT sesskey FROM $table WHERE $binary sesskey = $qkey";
-                               $rs = $conn->Execute($sql);
-                               ADODB_Session::_dumprs($rs);
-                               if ($rs) {
-                                       $rs->Close();
-                               }
-                       }
-               }/*
-               if (ADODB_Session::Lock()) {
-                       $conn->CommitTrans();
-               }*/
-               return $rs ? true : false;
-       }
-
-       /*!
-       */
-       function destroy($key) {
-               $conn                   = ADODB_Session::_conn();
-               $table                  = ADODB_Session::table();
-               $expire_notify  = ADODB_Session::expireNotify();
-
-               if (!$conn) {
-                       return false;
-               }
-
-               //assert('$table');
-
-               $qkey = $conn->quote($key);
-               $binary = $conn->dataProvider === 'mysql' ? '/*! BINARY */' : '';
-
-               if ($expire_notify) {
-                       reset($expire_notify);
-                       $fn = next($expire_notify);
-                       $savem = $conn->SetFetchMode(ADODB_FETCH_NUM);
-                       $sql = "SELECT expireref, sesskey FROM $table WHERE $binary sesskey = $qkey";
-                       $rs = $conn->Execute($sql);
-                       ADODB_Session::_dumprs($rs);
-                       $conn->SetFetchMode($savem);
-                       if (!$rs) {
-                               return false;
-                       }
-                       if (!$rs->EOF) {
-                               $ref = $rs->fields[0];
-                               $key = $rs->fields[1];
-                               //assert('$ref');
-                               //assert('$key');
-                               $fn($ref, $key);
-                       }
-                       $rs->Close();
-               }
-
-               $sql = "DELETE FROM $table WHERE $binary sesskey = $qkey";
-               $rs = $conn->Execute($sql);
-               ADODB_Session::_dumprs($rs);
-
-               return $rs ? true : false;
-       }
-
-       /*!
-       */
-       function gc($maxlifetime) 
-       {
-               $conn                   = ADODB_Session::_conn();
-               $debug                  = ADODB_Session::debug();
-               $expire_notify  = ADODB_Session::expireNotify();
-               $optimize               = ADODB_Session::optimize();
-               $sync_seconds   = ADODB_Session::syncSeconds();
-               $table                  = ADODB_Session::table();
-
-               if (!$conn) {
-                       return false;
-               }
-
-
-               $time                   = time();
-               $binary = $conn->dataProvider === 'mysql' ? '/*! BINARY */' : '';
-
-               if ($expire_notify) {
-                       reset($expire_notify);
-                       $fn = next($expire_notify);
-                       $savem = $conn->SetFetchMode(ADODB_FETCH_NUM);
-                       $sql = "SELECT expireref, sesskey FROM $table WHERE expiry < $time";
-                       $rs = $conn->Execute($sql);
-                       ADODB_Session::_dumprs($rs);
-                       $conn->SetFetchMode($savem);
-                       if ($rs) {
-                               $conn->StartTrans();
-                               $keys = array();
-                               while (!$rs->EOF) {
-                                       $ref = $rs->fields[0];
-                                       $key = $rs->fields[1];
-                                       $fn($ref, $key);
-                                       $del = $conn->Execute("DELETE FROM $table WHERE sesskey=".$conn->Param('0'),array($key));
-                                       $rs->MoveNext();
-                               }
-                               $rs->Close();
-                               
-                               $conn->CompleteTrans();
-                       }
-               } else {
-               
-                       if (1) {
-                               $sql = "SELECT sesskey FROM $table WHERE expiry < $time";
-                               $arr = $conn->GetAll($sql);
-                               foreach ($arr as $row) {
-                                       $sql2 = "DELETE FROM $table WHERE sesskey=".$conn->Param('0');
-                                       $conn->Execute($sql2,array($row[0]));
-                               }
-                       } else {
-                               $sql = "DELETE FROM $table WHERE expiry < $time";
-                               $rs = $conn->Execute($sql);
-                               ADODB_Session::_dumprs($rs);
-                               if ($rs) $rs->Close();
-                       }
-                       if ($debug) {
-                               ADOConnection::outp("<p><b>Garbage Collection</b>: $sql</p>");
-                       }
-               }
-
-               // suggested by Cameron, "GaM3R" <gamr@outworld.cx>
-               if ($optimize) {
-                       $driver = ADODB_Session::driver();
-
-                       if (preg_match('/mysql/i', $driver)) {
-                               $sql = "OPTIMIZE TABLE $table";
-                       }
-                       if (preg_match('/postgres/i', $driver)) {
-                               $sql = "VACUUM $table";
-                       }
-                       if (!empty($sql)) {
-                               $conn->Execute($sql);
-                       }
-               }
-
-               if ($sync_seconds) {
-                       $sql = 'SELECT ';
-                       if ($conn->dataProvider === 'oci8') {
-                               $sql .= "TO_CHAR({$conn->sysTimeStamp}, 'RRRR-MM-DD HH24:MI:SS')";
-                       } else {
-                               $sql .= $conn->sysTimeStamp;
-                       }
-                       $sql .= " FROM $table";
-
-                       $rs = $conn->SelectLimit($sql, 1);
-                       if ($rs && !$rs->EOF) {
-                               $dbts = reset($rs->fields);
-                               $rs->Close();
-                               $dbt = $conn->UnixTimeStamp($dbts);
-                               $t = time();
-
-                               if (abs($dbt - $t) >= $sync_seconds) {
-                                       $msg = __FILE__ .
-                                               ": Server time for webserver {$_SERVER['HTTP_HOST']} not in synch with database: " .
-                                               " database=$dbt ($dbts), webserver=$t (diff=". (abs($dbt - $t) / 60) . ' minutes)';
-                                       error_log($msg);
-                                       if ($debug) {
-                                               ADOConnection::outp("<p>$msg</p>");
-                                       }
-                               }
-                       }
-               }
-
-               return true;
-       }
-}
-
-ADODB_Session::_init();
-if (empty($ADODB_SESSION_READONLY))
-       register_shutdown_function('session_write_close');
-
-// for backwards compatability only
-function adodb_sess_open($save_path, $session_name, $persist = true) {
-       return ADODB_Session::open($save_path, $session_name, $persist);
-}
-
-// for backwards compatability only
-function adodb_sess_gc($t)
-{      
-       return ADODB_Session::gc($t);
-}
-
-?>
\ No newline at end of file
diff --git a/lib/adodb/session/adodb-session2.php b/lib/adodb/session/adodb-session2.php
deleted file mode 100644 (file)
index e853933..0000000
+++ /dev/null
@@ -1,947 +0,0 @@
-<?php
-
-
-/*
-V5.02 24 Sept 2007   (c) 2000-2008 John Lim (jlim#natsoft.com.my). All rights reserved.
-         Contributed by Ross Smith (adodb@netebb.com). 
-  Released under both BSD license and Lesser GPL library license.
-  Whenever there is any discrepancy between the two licenses,
-  the BSD license will take precedence.
-         Set tabs to 4 for best viewing.
-         
-
-*/
-
-/*
-
-CREATE Table SCripts
-
-Oracle
-======
-
-CREATE TABLE SESSIONS2
-(
-  SESSKEY    VARCHAR2(48 BYTE)                  NOT NULL,
-  EXPIRY     DATE                               NOT NULL,
-  EXPIREREF  VARCHAR2(200 BYTE),
-  CREATED    DATE                               NOT NULL,
-  MODIFIED   DATE                               NOT NULL,
-  SESSDATA   CLOB,
-  PRIMARY KEY(SESSKEY)
-);
-
-
-CREATE INDEX SESS2_EXPIRY ON SESSIONS2(EXPIRY);
-CREATE UNIQUE INDEX SESS2_PK ON SESSIONS2(SESSKEY);
-CREATE INDEX SESS2_EXP_REF ON SESSIONS2(EXPIREREF);
-
-
- MySQL
- =====
-CREATE TABLE sessions2(
-       sesskey VARCHAR( 64 ) NOT NULL DEFAULT '',
-       expiry TIMESTAMP NOT NULL ,
-       expireref VARCHAR( 250 ) DEFAULT '',
-       created TIMESTAMP NOT NULL ,
-       modified TIMESTAMP NOT NULL ,
-       sessdata LONGTEXT DEFAULT '',
-       PRIMARY KEY ( sesskey ) ,
-       INDEX sess2_expiry( expiry ),
-       INDEX sess2_expireref( expireref )
-)
-
-
-*/
-
-if (!defined('_ADODB_LAYER')) {
-       require realpath(dirname(__FILE__) . '/../adodb.inc.php');
-}
-
-if (defined('ADODB_SESSION')) return 1;
-
-define('ADODB_SESSION', dirname(__FILE__));
-define('ADODB_SESSION2', ADODB_SESSION);
-
-/* 
-       Unserialize session data manually. See http://phplens.com/lens/lensforum/msgs.php?id=9821 
-       
-       From Kerr Schere, to unserialize session data stored via ADOdb. 
-       1. Pull the session data from the db and loop through it. 
-       2. Inside the loop, you will need to urldecode the data column. 
-       3. After urldecode, run the serialized string through this function:
-
-*/
-function adodb_unserialize( $serialized_string ) 
-{
-       $variables = array( );
-       $a = preg_split( "/(\w+)\|/", $serialized_string, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE );
-       for( $i = 0; $i < count( $a ); $i = $i+2 ) {
-               $variables[$a[$i]] = unserialize( $a[$i+1] );
-       }
-       return( $variables );
-}
-
-/*
-       Thanks Joe Li. See http://phplens.com/lens/lensforum/msgs.php?id=11487&x=1
-       Since adodb 4.61.
-*/
-function adodb_session_regenerate_id() 
-{
-       $conn = ADODB_Session::_conn();
-       if (!$conn) return false;
-
-       $old_id = session_id();
-       if (function_exists('session_regenerate_id')) {
-               session_regenerate_id();
-       } else {
-               session_id(md5(uniqid(rand(), true)));
-               $ck = session_get_cookie_params();
-               setcookie(session_name(), session_id(), false, $ck['path'], $ck['domain'], $ck['secure']);
-               //@session_start();
-       }
-       $new_id = session_id();
-       $ok = $conn->Execute('UPDATE '. ADODB_Session::table(). ' SET sesskey='. $conn->qstr($new_id). ' WHERE sesskey='.$conn->qstr($old_id));
-       
-       /* it is possible that the update statement fails due to a collision */
-       if (!$ok) {
-               session_id($old_id);
-               if (empty($ck)) $ck = session_get_cookie_params();
-               setcookie(session_name(), session_id(), false, $ck['path'], $ck['domain'], $ck['secure']);
-               return false;
-       }
-       
-       return true;
-}
-
-/*
-    Generate database table for session data
-    @see http://phplens.com/lens/lensforum/msgs.php?id=12280
-    @return 0 if failure, 1 if errors, 2 if successful.
-       @author Markus Staab http://www.public-4u.de
-*/
-function adodb_session_create_table($schemaFile=null,$conn = null)
-{
-    // set default values
-    if ($schemaFile===null) $schemaFile = ADODB_SESSION . '/session_schema2.xml';
-    if ($conn===null) $conn = ADODB_Session::_conn();
-
-       if (!$conn) return 0;
-
-    $schema = new adoSchema($conn);
-    $schema->ParseSchema($schemaFile);
-    return $schema->ExecuteSchema();
-}
-
-/*!
-       \static
-*/
-class ADODB_Session {
-       /////////////////////
-       // getter/setter methods
-       /////////////////////
-       
-       /*
-       
-       function Lock($lock=null)
-       {
-       static $_lock = false;
-       
-               if (!is_null($lock)) $_lock = $lock;
-               return $lock;
-       }
-       */
-       /*!
-       */
-       static function driver($driver = null) 
-       {
-               static $_driver = 'mysql';
-               static $set = false;
-
-               if (!is_null($driver)) {
-                       $_driver = trim($driver);
-                       $set = true;
-               } elseif (!$set) {
-                       // backwards compatibility
-                       if (isset($GLOBALS['ADODB_SESSION_DRIVER'])) {
-                               return $GLOBALS['ADODB_SESSION_DRIVER'];
-                       }
-               }
-
-               return $_driver;
-       }
-
-       /*!
-       */
-       static function host($host = null) {
-               static $_host = 'localhost';
-               static $set = false;
-
-               if (!is_null($host)) {
-                       $_host = trim($host);
-                       $set = true;
-               } elseif (!$set) {
-                       // backwards compatibility
-                       if (isset($GLOBALS['ADODB_SESSION_CONNECT'])) {
-                               return $GLOBALS['ADODB_SESSION_CONNECT'];
-                       }
-               }
-
-               return $_host;
-       }
-
-       /*!
-       */
-       static function user($user = null) 
-       {
-               static $_user = 'root';
-               static $set = false;
-
-               if (!is_null($user)) {
-                       $_user = trim($user);
-                       $set = true;
-               } elseif (!$set) {
-                       // backwards compatibility
-                       if (isset($GLOBALS['ADODB_SESSION_USER'])) {
-                               return $GLOBALS['ADODB_SESSION_USER'];
-                       }
-               }
-
-               return $_user;
-       }
-
-       /*!
-       */
-       static function password($password = null) 
-       {
-               static $_password = '';
-               static $set = false;
-
-               if (!is_null($password)) {
-                       $_password = $password;
-                       $set = true;
-               } elseif (!$set) {
-                       // backwards compatibility
-                       if (isset($GLOBALS['ADODB_SESSION_PWD'])) {
-                               return $GLOBALS['ADODB_SESSION_PWD'];
-                       }
-               }
-
-               return $_password;
-       }
-
-       /*!
-       */
-       static function database($database = null) 
-       {
-               static $_database = '';
-               static $set = false;
-               
-               if (!is_null($database)) {
-                       $_database = trim($database);
-                       $set = true;
-               } elseif (!$set) {
-                       // backwards compatibility
-                       if (isset($GLOBALS['ADODB_SESSION_DB'])) {
-                               return $GLOBALS['ADODB_SESSION_DB'];
-                       }
-               }
-               return $_database;
-       }
-
-       /*!
-       */
-       static function persist($persist = null) 
-       {
-               static $_persist = true;
-
-               if (!is_null($persist)) {
-                       $_persist = trim($persist);
-               }
-
-               return $_persist;
-       }
-
-       /*!
-       */
-       static function lifetime($lifetime = null) 
-       {
-               static $_lifetime;
-               static $set = false;
-
-               if (!is_null($lifetime)) {
-                       $_lifetime = (int) $lifetime;
-                       $set = true;
-               } elseif (!$set) {
-                       // backwards compatibility
-                       if (isset($GLOBALS['ADODB_SESS_LIFE'])) {
-                               return $GLOBALS['ADODB_SESS_LIFE'];
-                       }
-               }
-               if (!$_lifetime) {
-                       $_lifetime = ini_get('session.gc_maxlifetime');
-                       if ($_lifetime <= 1) {
-                               // bug in PHP 4.0.3 pl 1  -- how about other versions?
-                               //print "<h3>Session Error: PHP.INI setting <i>session.gc_maxlifetime</i>not set: $lifetime</h3>";
-                               $_lifetime = 1440;
-                       }
-               }
-
-               return $_lifetime;
-       }
-
-       /*!
-       */
-       static function debug($debug = null) 
-       {
-               static $_debug = false;
-               static $set = false;
-
-               if (!is_null($debug)) {
-                       $_debug = (bool) $debug;
-
-                       $conn = ADODB_Session::_conn();
-                       if ($conn) {
-                               #$conn->debug = $_debug;
-                       }
-                       $set = true;
-               } elseif (!$set) {
-                       // backwards compatibility
-                       if (isset($GLOBALS['ADODB_SESS_DEBUG'])) {
-                               return $GLOBALS['ADODB_SESS_DEBUG'];
-                       }
-               }
-
-               return $_debug;
-       }
-
-       /*!
-       */
-       static function expireNotify($expire_notify = null) 
-       {
-               static $_expire_notify;
-               static $set = false;
-
-               if (!is_null($expire_notify)) {
-                       $_expire_notify = $expire_notify;
-                       $set = true;
-               } elseif (!$set) {
-                       // backwards compatibility
-                       if (isset($GLOBALS['ADODB_SESSION_EXPIRE_NOTIFY'])) {
-                               return $GLOBALS['ADODB_SESSION_EXPIRE_NOTIFY'];
-                       }
-               }
-
-               return $_expire_notify;
-       }
-
-       /*!
-       */
-       static function table($table = null) 
-       {
-               static $_table = 'sessions2';
-               static $set = false;
-
-               if (!is_null($table)) {
-                       $_table = trim($table);
-                       $set = true;
-               } elseif (!$set) {
-                       // backwards compatibility
-                       if (isset($GLOBALS['ADODB_SESSION_TBL'])) {
-                               return $GLOBALS['ADODB_SESSION_TBL'];
-                       }
-               }
-
-               return $_table;
-       }
-
-       /*!
-       */
-       static function optimize($optimize = null) 
-       {
-               static $_optimize = false;
-               static $set = false;
-
-               if (!is_null($optimize)) {
-                       $_optimize = (bool) $optimize;
-                       $set = true;
-               } elseif (!$set) {
-                       // backwards compatibility
-                       if (defined('ADODB_SESSION_OPTIMIZE')) {
-                               return true;
-                       }
-               }
-
-               return $_optimize;
-       }
-
-       /*!
-       */
-       static function syncSeconds($sync_seconds = null) {
-               //echo ("<p>WARNING: ADODB_SESSION::syncSeconds is longer used, please remove this function for your code</p>");
-               
-               return 0;
-       }
-
-       /*!
-       */
-       static function clob($clob = null) {
-               static $_clob = false;
-               static $set = false;
-
-               if (!is_null($clob)) {
-                       $_clob = strtolower(trim($clob));
-                       $set = true;
-               } elseif (!$set) {
-                       // backwards compatibility
-                       if (isset($GLOBALS['ADODB_SESSION_USE_LOBS'])) {
-                               return $GLOBALS['ADODB_SESSION_USE_LOBS'];
-                       }
-               }
-
-               return $_clob;
-       }
-
-       /*!
-       */
-       static function dataFieldName($data_field_name = null) {
-               //echo ("<p>WARNING: ADODB_SESSION::dataFieldName() is longer used, please remove this function for your code</p>");
-               return '';
-       }
-
-       /*!
-       */
-       static function filter($filter = null) {
-               static $_filter = array();
-
-               if (!is_null($filter)) {
-                       if (!is_array($filter)) {
-                               $filter = array($filter);
-                       }
-                       $_filter = $filter;
-               }
-
-               return $_filter;
-       }
-
-       /*!
-       */
-       static function encryptionKey($encryption_key = null) {
-               static $_encryption_key = 'CRYPTED ADODB SESSIONS ROCK!';
-
-               if (!is_null($encryption_key)) {
-                       $_encryption_key = $encryption_key;
-               }
-
-               return $_encryption_key;
-       }
-
-       /////////////////////
-       // private methods
-       /////////////////////
-
-       /*!
-       */
-       static function _conn($conn=null) {
-               return @$GLOBALS['ADODB_SESS_CONN'];
-       }
-
-       /*!
-       */
-       static function _crc($crc = null) {
-               static $_crc = false;
-
-               if (!is_null($crc)) {
-                       $_crc = $crc;
-               }
-
-               return $_crc;
-       }
-
-       /*!
-       */
-       static function _init() {
-               session_module_name('user');
-               session_set_save_handler(
-                       array('ADODB_Session', 'open'),
-                       array('ADODB_Session', 'close'),
-                       array('ADODB_Session', 'read'),
-                       array('ADODB_Session', 'write'),
-                       array('ADODB_Session', 'destroy'),
-                       array('ADODB_Session', 'gc')
-               );
-       }
-
-
-       /*!
-       */
-       static function _sessionKey() {
-               // use this function to create the encryption key for crypted sessions
-               // crypt the used key, ADODB_Session::encryptionKey() as key and session_id() as salt
-               return crypt(ADODB_Session::encryptionKey(), session_id());
-       }
-
-       /*!
-       */
-       static function _dumprs($rs) {
-               $conn   = ADODB_Session::_conn();
-               $debug  = ADODB_Session::debug();
-
-               if (!$conn) {
-                       return;
-               }
-
-               if (!$debug) {
-                       return;
-               }
-
-               if (!$rs) {
-                       echo "<br />\$rs is null or false<br />\n";
-                       return;
-               }
-
-               //echo "<br />\nAffected_Rows=",$conn->Affected_Rows(),"<br />\n";
-
-               if (!is_object($rs)) {
-                       return;
-               }
-
-               require_once ADODB_SESSION.'/../tohtml.inc.php';
-               rs2html($rs);
-       }
-
-       /////////////////////
-       // public methods
-       /////////////////////
-       
-       static function config($driver, $host, $user, $password, $database=false,$options=false)
-       {
-               ADODB_Session::driver($driver);
-               ADODB_Session::host($host);
-               ADODB_Session::user($user);
-               ADODB_Session::password($password);
-               ADODB_Session::database($database);
-               
-               if ($driver == 'oci8' || $driver == 'oci8po') $options['lob'] = 'CLOB';
-               
-               if (isset($options['table'])) ADODB_Session::table($options['table']);
-               if (isset($options['lob'])) ADODB_Session::clob($options['lob']);
-               if (isset($options['debug'])) ADODB_Session::debug($options['debug']);
-       }
-
-       /*!
-               Create the connection to the database.
-
-               If $conn already exists, reuse that connection
-       */
-       static function open($save_path, $session_name, $persist = null) 
-       {
-               $conn = ADODB_Session::_conn();
-
-               if ($conn) {
-                       return true;
-               }
-
-               $database       = ADODB_Session::database();
-               $debug          = ADODB_Session::debug();
-               $driver         = ADODB_Session::driver();
-               $host           = ADODB_Session::host();
-               $password       = ADODB_Session::password();
-               $user           = ADODB_Session::user();
-
-               if (!is_null($persist)) {
-                       ADODB_Session::persist($persist);
-               } else {
-                       $persist = ADODB_Session::persist();
-               }
-
-# these can all be defaulted to in php.ini
-#              assert('$database');
-#              assert('$driver');
-#              assert('$host');
-
-               $conn = ADONewConnection($driver);
-
-               if ($debug) {
-                       $conn->debug = true;            
-                       ADOConnection::outp( " driver=$driver user=$user db=$database ");
-               }
-               
-               if ($persist) {
-                       switch($persist) {
-                       default:
-                       case 'P': $ok = $conn->PConnect($host, $user, $password, $database); break;
-                       case 'C': $ok = $conn->Connect($host, $user, $password, $database); break;
-                       case 'N': $ok = $conn->NConnect($host, $user, $password, $database); break;
-                       }
-               } else {
-                       $ok = $conn->Connect($host, $user, $password, $database);
-               }
-
-               if ($ok) $GLOBALS['ADODB_SESS_CONN'] = $conn;
-               else
-                       ADOConnection::outp('<p>Session: connection failed</p>', false);
-               
-
-               return $ok;
-       }
-
-       /*!
-               Close the connection
-       */
-       static function close() 
-       {
-/*
-               $conn = ADODB_Session::_conn();
-               if ($conn) $conn->Close();
-*/
-               return true;
-       }
-
-       /*
-               Slurp in the session variables and return the serialized string
-       */
-       static function read($key) 
-       {
-               $conn   = ADODB_Session::_conn();
-               $filter = ADODB_Session::filter();
-               $table  = ADODB_Session::table();
-
-               if (!$conn) {
-                       return '';
-               }
-
-               //assert('$table');
-
-               $qkey = $conn->quote($key);
-               $binary = $conn->dataProvider === 'mysql' ? '/*! BINARY */' : '';
-       
-               $sql = "SELECT sessdata FROM $table WHERE sesskey = $binary $qkey AND expiry >= " . $conn->sysTimeStamp;
-               /* Lock code does not work as it needs to hold transaction within whole page, and we don't know if 
-                 developer has commited elsewhere... :(
-                */
-               #if (ADODB_Session::Lock())
-               #       $rs = $conn->RowLock($table, "$binary sesskey = $qkey AND expiry >= " . time(), sessdata);
-               #else
-               
-                       $rs = $conn->Execute($sql);
-               //ADODB_Session::_dumprs($rs);
-               if ($rs) {
-                       if ($rs->EOF) {
-                               $v = '';
-                       } else {
-                               $v = reset($rs->fields);
-                               $filter = array_reverse($filter);
-                               foreach ($filter as $f) {
-                                       if (is_object($f)) {
-                                               $v = $f->read($v, ADODB_Session::_sessionKey());
-                                       }
-                               }
-                               $v = rawurldecode($v);
-                       }
-
-                       $rs->Close();
-
-                       ADODB_Session::_crc(strlen($v) . crc32($v));
-                       return $v;
-               }
-
-               return '';
-       }
-
-       /*!
-               Write the serialized data to a database.
-
-               If the data has not been modified since the last read(), we do not write.
-       */
-       static function write($key, $oval) 
-       {
-       global $ADODB_SESSION_READONLY;
-       
-               if (!empty($ADODB_SESSION_READONLY)) return;
-               
-               $clob                   = ADODB_Session::clob();
-               $conn                   = ADODB_Session::_conn();
-               $crc                    = ADODB_Session::_crc();
-               $debug                  = ADODB_Session::debug();
-               $driver                 = ADODB_Session::driver();
-               $expire_notify  = ADODB_Session::expireNotify();
-               $filter                 = ADODB_Session::filter();
-               $lifetime               = ADODB_Session::lifetime();
-               $table                  = ADODB_Session::table();
-       
-               if (!$conn) {
-                       return false;
-               }
-               if ($debug) $conn->debug = 1;
-               $sysTimeStamp = $conn->sysTimeStamp;
-               
-               //assert('$table');
-
-               $expiry = $conn->OffsetDate($lifetime/(24*3600),$sysTimeStamp);
-
-               $binary = $conn->dataProvider === 'mysql' ? '/*! BINARY */' : '';
-
-               // crc32 optimization since adodb 2.1
-               // now we only update expiry date, thx to sebastian thom in adodb 2.32
-               if ($crc !== false && $crc == (strlen($oval) . crc32($oval))) {
-                       if ($debug) {
-                               echo '<p>Session: Only updating date - crc32 not changed</p>';
-                       }
-                       
-                       $expirevar = '';
-                       if ($expire_notify) {
-                               $var = reset($expire_notify);
-                               global $$var;
-                               if (isset($$var)) {
-                                       $expirevar = $$var;
-                               }
-                       }
-                       
-                       
-                       $sql = "UPDATE $table SET expiry = $expiry ,expireref=".$conn->Param('0').", modified = $sysTimeStamp WHERE $binary sesskey = ".$conn->Param('1')." AND expiry >= $sysTimeStamp";
-                       $rs = $conn->Execute($sql,array($expirevar,$key));
-                       return true;
-               }
-               $val = rawurlencode($oval);
-               foreach ($filter as $f) {
-                       if (is_object($f)) {
-                               $val = $f->write($val, ADODB_Session::_sessionKey());
-                       }
-               }
-
-               $expireref = '';
-               if ($expire_notify) {
-                       $var = reset($expire_notify);
-                       global $$var;
-                       if (isset($$var)) {
-                               $expireref = $$var;
-                       }
-               } 
-
-               if (!$clob) {   // no lobs, simply use replace()
-                       $rs = $conn->Execute("SELECT COUNT(*) AS cnt FROM $table WHERE $binary sesskey = ".$conn->Param(0),array($key));
-                       if ($rs) $rs->Close();
-                                       
-                       if ($rs && reset($rs->fields) > 0) {
-                               $sql = "UPDATE $table SET expiry=$expiry, sessdata=".$conn->Param(0).", expireref= ".$conn->Param(1).",modified=$sysTimeStamp WHERE sesskey = ".$conn->Param('2');
-                               
-                       } else {
-                               $sql = "INSERT INTO $table (expiry, sessdata, expireref, sesskey, created, modified) 
-                                       VALUES ($expiry,".$conn->Param('0').", ". $conn->Param('1').", ".$conn->Param('2').", $sysTimeStamp, $sysTimeStamp)";
-                       }
-                       
-       
-                       $rs = $conn->Execute($sql,array($val,$expireref,$key));
-                       
-               } else {
-                       // what value shall we insert/update for lob row?
-                       switch ($driver) {
-                               // empty_clob or empty_lob for oracle dbs
-                               case 'oracle':
-                               case 'oci8':
-                               case 'oci8po':
-                               case 'oci805':
-                                       $lob_value = sprintf('empty_%s()', strtolower($clob));
-                                       break;
-
-                               // null for all other
-                               default:
-                                       $lob_value = 'null';
-                                       break;
-                       }
-                       
-                       $conn->StartTrans();
-                       
-                       $rs = $conn->Execute("SELECT COUNT(*) AS cnt FROM $table WHERE $binary sesskey = ".$conn->Param(0),array($key));
-                       if ($rs) $rs->Close();
-                                       
-                       if ($rs && reset($rs->fields) > 0) {
-                               $sql = "UPDATE $table SET expiry=$expiry, sessdata=$lob_value, expireref= ".$conn->Param(0).",modified=$sysTimeStamp WHERE sesskey = ".$conn->Param('1');
-                               
-                       } else {
-                               $sql = "INSERT INTO $table (expiry, sessdata, expireref, sesskey, created, modified) 
-                                       VALUES ($expiry,$lob_value, ". $conn->Param('0').", ".$conn->Param('1').", $sysTimeStamp, $sysTimeStamp)";
-                       }
-                       
-                       $rs = $conn->Execute($sql,array($expireref,$key));
-                       
-                       $qkey = $conn->qstr($key);
-                       $rs2 = $conn->UpdateBlob($table, 'sessdata', $val, " sesskey=$qkey", strtoupper($clob));
-                       if ($debug) echo "<hr>",htmlspecialchars($oval), "<hr>";
-                       $rs = @$conn->CompleteTrans();
-                       
-                       
-               }
-
-               if (!$rs) {
-                       ADOConnection::outp('<p>Session Replace: ' . $conn->ErrorMsg() . '</p>', false);
-                       return false;
-               }  else {
-                       // bug in access driver (could be odbc?) means that info is not committed
-                       // properly unless select statement executed in Win2000
-                       if ($conn->databaseType == 'access') {
-                               $sql = "SELECT sesskey FROM $table WHERE $binary sesskey = $qkey";
-                               $rs = $conn->Execute($sql);
-                               ADODB_Session::_dumprs($rs);
-                               if ($rs) {
-                                       $rs->Close();
-                               }
-                       }
-               }/*
-               if (ADODB_Session::Lock()) {
-                       $conn->CommitTrans();
-               }*/
-               return $rs ? true : false;
-       }
-
-       /*!
-       */
-       static function destroy($key) {
-               $conn                   = ADODB_Session::_conn();
-               $table                  = ADODB_Session::table();
-               $expire_notify  = ADODB_Session::expireNotify();
-
-               if (!$conn) {
-                       return false;
-               }
-               $debug                  = ADODB_Session::debug();
-               if ($debug) $conn->debug = 1;
-               //assert('$table');
-
-               $qkey = $conn->quote($key);
-               $binary = $conn->dataProvider === 'mysql' ? '/*! BINARY */' : '';
-
-               if ($expire_notify) {
-                       reset($expire_notify);
-                       $fn = next($expire_notify);
-                       $savem = $conn->SetFetchMode(ADODB_FETCH_NUM);
-                       $sql = "SELECT expireref, sesskey FROM $table WHERE $binary sesskey = $qkey";
-                       $rs = $conn->Execute($sql);
-                       ADODB_Session::_dumprs($rs);
-                       $conn->SetFetchMode($savem);
-                       if (!$rs) {
-                               return false;
-                       }
-                       if (!$rs->EOF) {
-                               $ref = $rs->fields[0];
-                               $key = $rs->fields[1];
-                               //assert('$ref');
-                               //assert('$key');
-                               $fn($ref, $key);
-                       }
-                       $rs->Close();
-               }
-
-               $sql = "DELETE FROM $table WHERE $binary sesskey = $qkey";
-               $rs = $conn->Execute($sql);
-               ADODB_Session::_dumprs($rs);
-               if ($rs) {
-                       $rs->Close();
-               }
-
-               return $rs ? true : false;
-       }
-
-       /*!
-       */
-       static function gc($maxlifetime) 
-       {
-               $conn                   = ADODB_Session::_conn();
-               $debug                  = ADODB_Session::debug();
-               $expire_notify  = ADODB_Session::expireNotify();
-               $optimize               = ADODB_Session::optimize();
-               $table                  = ADODB_Session::table();
-
-               if (!$conn) {
-                       return false;
-               }
-
-
-               $debug                  = ADODB_Session::debug();
-               if ($debug) $conn->debug = 1;
-               
-               //assert('$table');
-
-               $time = $conn->sysTimeStamp;
-               $binary = $conn->dataProvider === 'mysql' ? '/*! BINARY */' : '';
-
-               if ($expire_notify) {
-                       reset($expire_notify);
-                       $fn = next($expire_notify);
-                       $savem = $conn->SetFetchMode(ADODB_FETCH_NUM);
-                       $sql = "SELECT expireref, sesskey FROM $table WHERE expiry < $time";
-                       $rs = $conn->Execute($sql);
-                       ADODB_Session::_dumprs($rs);
-                       $conn->SetFetchMode($savem);
-                       if ($rs) {
-                               $conn->StartTrans();
-                               $keys = array();
-                               while (!$rs->EOF) {
-                                       $ref = $rs->fields[0];
-                                       $key = $rs->fields[1];
-                                       $fn($ref, $key);
-                                       $del = $conn->Execute("DELETE FROM $table WHERE sesskey=".$conn->Param('0'),array($key));
-                                       $rs->MoveNext();
-                               }
-                               $rs->Close();
-                               
-                               $conn->CompleteTrans();
-                       }
-               } else {
-               
-                       if (0) {
-                               $sql = "SELECT sesskey FROM $table WHERE expiry < $time";
-                               $arr = $conn->GetAll($sql);
-                               foreach ($arr as $row) {
-                                       $sql2 = "DELETE FROM $table WHERE sesskey=".$conn->Param('0');
-                                       $conn->Execute($sql2,array($row[0]));
-                               }
-                       } else {
-                               $sql = "DELETE FROM $table WHERE expiry < $time";
-                               $rs = $conn->Execute($sql);
-                               ADODB_Session::_dumprs($rs);
-                               if ($rs) $rs->Close();
-                       }
-                       if ($debug) {
-                               ADOConnection::outp("<p><b>Garbage Collection</b>: $sql</p>");
-                       }
-               }
-
-               // suggested by Cameron, "GaM3R" <gamr@outworld.cx>
-               if ($optimize) {
-                       $driver = ADODB_Session::driver();
-
-                       if (preg_match('/mysql/i', $driver)) {
-                               $sql = "OPTIMIZE TABLE $table";
-                       }
-                       if (preg_match('/postgres/i', $driver)) {
-                               $sql = "VACUUM $table";
-                       }
-                       if (!empty($sql)) {
-                               $conn->Execute($sql);
-                       }
-               }
-
-               
-               return true;
-       }
-}
-
-ADODB_Session::_init();
-if (empty($ADODB_SESSION_READONLY))
-       register_shutdown_function('session_write_close');
-
-// for backwards compatability only
-function adodb_sess_open($save_path, $session_name, $persist = true) {
-       return ADODB_Session::open($save_path, $session_name, $persist);
-}
-
-// for backwards compatability only
-function adodb_sess_gc($t)
-{      
-       return ADODB_Session::gc($t);
-}
-
-?>
\ No newline at end of file
diff --git a/lib/adodb/session/adodb-sessions.mysql.sql b/lib/adodb/session/adodb-sessions.mysql.sql
deleted file mode 100644 (file)
index f90de44..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
--- $CVSHeader$
-
-CREATE DATABASE /*! IF NOT EXISTS */ adodb_sessions;
-
-USE adodb_sessions;
-
-DROP TABLE /*! IF EXISTS */ sessions;
-
-CREATE TABLE /*! IF NOT EXISTS */ sessions (
-       sesskey         CHAR(32)        /*! BINARY */ NOT NULL DEFAULT '',
-       expiry          INT(11)         /*! UNSIGNED */ NOT NULL DEFAULT 0,
-       expireref       VARCHAR(64)     DEFAULT '',
-       data            LONGTEXT        DEFAULT '',
-       PRIMARY KEY     (sesskey),
-       INDEX expiry (expiry)
-);
diff --git a/lib/adodb/session/adodb-sessions.oracle.clob.sql b/lib/adodb/session/adodb-sessions.oracle.clob.sql
deleted file mode 100644 (file)
index c5c4f2d..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
--- $CVSHeader$
-
-DROP TABLE adodb_sessions;
-
-CREATE TABLE sessions (
-       sesskey         CHAR(32)        DEFAULT '' NOT NULL,
-       expiry          INT             DEFAULT 0 NOT NULL,
-       expireref       VARCHAR(64)     DEFAULT '',
-       data            CLOB            DEFAULT '',
-       PRIMARY KEY     (sesskey)
-);
-
-CREATE INDEX ix_expiry ON sessions (expiry);
-
-QUIT;
diff --git a/lib/adodb/session/adodb-sessions.oracle.sql b/lib/adodb/session/adodb-sessions.oracle.sql
deleted file mode 100644 (file)
index 8fd5a34..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
--- $CVSHeader$
-
-DROP TABLE adodb_sessions;
-
-CREATE TABLE sessions (
-       sesskey         CHAR(32)        DEFAULT '' NOT NULL,
-       expiry          INT             DEFAULT 0 NOT NULL,
-       expireref       VARCHAR(64)     DEFAULT '',
-       data            VARCHAR(4000)   DEFAULT '',
-       PRIMARY KEY     (sesskey),
-       INDEX expiry (expiry)
-);
-
-CREATE INDEX ix_expiry ON sessions (expiry);
-
-QUIT;
diff --git a/lib/adodb/session/crypt.inc.php b/lib/adodb/session/crypt.inc.php
deleted file mode 100644 (file)
index 41cb06a..0000000
+++ /dev/null
@@ -1,161 +0,0 @@
-<?php
-//      Session Encryption by Ari Kuorikoski <ari.kuorikoski@finebyte.com>
-class MD5Crypt{
-               function keyED($txt,$encrypt_key)
-               {
-                               $encrypt_key = md5($encrypt_key);
-                               $ctr=0;
-                               $tmp = "";
-                               for ($i=0;$i<strlen($txt);$i++){
-                                               if ($ctr==strlen($encrypt_key)) $ctr=0;
-                                               $tmp.= substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1);
-                                               $ctr++;
-                               }
-                               return $tmp;
-               }
-
-               function Encrypt($txt,$key)
-               {
-                               srand((double)microtime()*1000000);
-                               $encrypt_key = md5(rand(0,32000));
-                               $ctr=0;
-                               $tmp = "";
-                               for ($i=0;$i<strlen($txt);$i++)
-                               {
-                               if ($ctr==strlen($encrypt_key)) $ctr=0;
-                               $tmp.= substr($encrypt_key,$ctr,1) .
-                               (substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1));
-                               $ctr++;
-                               }
-                               return base64_encode($this->keyED($tmp,$key));
-               }
-
-               function Decrypt($txt,$key)
-               {
-                               $txt = $this->keyED(base64_decode($txt),$key);
-                               $tmp = "";
-                               for ($i=0;$i<strlen($txt);$i++){
-                                               $md5 = substr($txt,$i,1);
-                                               $i++;
-                                               $tmp.= (substr($txt,$i,1) ^ $md5);
-                               }
-                               return $tmp;
-               }
-
-               function RandPass()
-               {
-                               $randomPassword = "";
-                               srand((double)microtime()*1000000);
-                               for($i=0;$i<8;$i++)
-                               {
-                                               $randnumber = rand(48,120);
-
-                                               while (($randnumber >= 58 && $randnumber <= 64) || ($randnumber >= 91 && $randnumber <= 96))
-                                               {
-                                                               $randnumber = rand(48,120);
-                                               }
-
-                                               $randomPassword .= chr($randnumber);
-                               }
-                               return $randomPassword;
-               }
-
-}
-
-
-class SHA1Crypt{
-
-               function keyED($txt,$encrypt_key)
-               {
-
-                               $encrypt_key = sha1($encrypt_key);
-                               $ctr=0;
-                               $tmp = "";
-
-                               for ($i=0;$i<strlen($txt);$i++){
-                                               if ($ctr==strlen($encrypt_key)) $ctr=0;
-                                               $tmp.= substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1);
-                                               $ctr++;
-                               }
-                               return $tmp;
-
-               }
-
-
-
-               function Encrypt($txt,$key)
-               {
-
-                               srand((double)microtime()*1000000);
-                               $encrypt_key = sha1(rand(0,32000));
-                               $ctr=0;
-                               $tmp = "";
-
-                               for ($i=0;$i<strlen($txt);$i++)
-
-                               {
-
-                               if ($ctr==strlen($encrypt_key)) $ctr=0;
-
-                               $tmp.= substr($encrypt_key,$ctr,1) .
-
-                               (substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1));
-
-                               $ctr++;
-
-                               }
-
-                               return base64_encode($this->keyED($tmp,$key));
-
-               }
-
-
-
-               function Decrypt($txt,$key)
-               {
-
-                               $txt = $this->keyED(base64_decode($txt),$key);
-
-                               $tmp = "";
-
-                               for ($i=0;$i<strlen($txt);$i++){
-
-                                               $sha1 = substr($txt,$i,1);
-
-                                               $i++;
-
-                                               $tmp.= (substr($txt,$i,1) ^ $sha1);
-
-                               }
-
-                               return $tmp;
-               }
-
-
-
-               function RandPass()
-               {
-                               $randomPassword = "";
-                               srand((double)microtime()*1000000);
-
-                               for($i=0;$i<8;$i++)
-                               {
-
-                                               $randnumber = rand(48,120);
-
-                                               while (($randnumber >= 58 && $randnumber <= 64) || ($randnumber >= 91 && $randnumber <= 96))
-                                               {
-                                                               $randnumber = rand(48,120);
-                                               }
-
-                                               $randomPassword .= chr($randnumber);
-                               }
-
-                               return $randomPassword;
-
-               }
-
-
-
-}
-?>
\ No newline at end of file
diff --git a/lib/adodb/session/old/adodb-cryptsession.php b/lib/adodb/session/old/adodb-cryptsession.php
deleted file mode 100644 (file)
index 8ae983f..0000000
+++ /dev/null
@@ -1,324 +0,0 @@
-<?php
-/*
-V5.04a 25 Mar 2008   (c) 2000-2008 John Lim (jlim#natsoft.com.my). All rights reserved.
-  Released under both BSD license and Lesser GPL library license. 
-  Whenever there is any discrepancy between the two licenses, 
-  the BSD license will take precedence.
-       Made table name configurable - by David Johnson djohnson@inpro.net
-       Encryption by Ari Kuorikoski <ari.kuorikoski@finebyte.com>
-       
-  Set tabs to 4 for best viewing.
-  
-  Latest version of ADODB is available at http://php.weblogs.com/adodb
-  ======================================================================
-  
- This file provides PHP4 session management using the ADODB database
-wrapper library.
- Example
- =======
-       include('adodb.inc.php');
-       #---------------------------------#
-       include('adodb-cryptsession.php'); 
-       #---------------------------------#
-       session_start();
-       session_register('AVAR');
-       $_SESSION['AVAR'] += 1;
-       print "
--- \$_SESSION['AVAR']={$_SESSION['AVAR']}</p>";
-
- Installation
- ============
- 1. Create a new database in MySQL or Access "sessions" like
-so:
-  create table sessions (
-          SESSKEY char(32) not null,
-          EXPIRY int(11) unsigned not null,
-          EXPIREREF varchar(64),
-          DATA CLOB,
-         primary key (sesskey)
-  );
-  
-  2. Then define the following parameters. You can either modify
-     this file, or define them before this file is included:
-        
-       $ADODB_SESSION_DRIVER='database driver, eg. mysql or ibase';
-       $ADODB_SESSION_CONNECT='server to connect to';
-       $ADODB_SESSION_USER ='user';
-       $ADODB_SESSION_PWD ='password';
-       $ADODB_SESSION_DB ='database';
-       $ADODB_SESSION_TBL = 'sessions'
-       
-  3. Recommended is PHP 4.0.2 or later. There are documented
-session bugs in earlier versions of PHP.
-
-*/
-
-
-include_once('crypt.inc.php');
-
-if (!defined('_ADODB_LAYER')) {
-       include (dirname(__FILE__).'/adodb.inc.php');
-}
-
- /* if database time and system time is difference is greater than this, then give warning */
- define('ADODB_SESSION_SYNCH_SECS',60); 
-
-if (!defined('ADODB_SESSION')) {
-
- define('ADODB_SESSION',1);
-GLOBAL         $ADODB_SESSION_CONNECT, 
-       $ADODB_SESSION_DRIVER,
-       $ADODB_SESSION_USER,
-       $ADODB_SESSION_PWD,
-       $ADODB_SESSION_DB,
-       $ADODB_SESS_CONN,
-       $ADODB_SESS_LIFE,
-       $ADODB_SESS_DEBUG,
-       $ADODB_SESS_INSERT,
-       $ADODB_SESSION_EXPIRE_NOTIFY,
-       $ADODB_SESSION_TBL; 
-
-       //$ADODB_SESS_DEBUG = true;
-       
-       /* SET THE FOLLOWING PARAMETERS */
-if (empty($ADODB_SESSION_DRIVER)) {
-       $ADODB_SESSION_DRIVER='mysql';
-       $ADODB_SESSION_CONNECT='localhost';
-       $ADODB_SESSION_USER ='root';
-       $ADODB_SESSION_PWD ='';
-       $ADODB_SESSION_DB ='xphplens_2';
-}
-
-if (empty($ADODB_SESSION_TBL)){
-       $ADODB_SESSION_TBL = 'sessions';
-}
-
-if (empty($ADODB_SESSION_EXPIRE_NOTIFY)) {
-       $ADODB_SESSION_EXPIRE_NOTIFY = false;
-}
-
-function ADODB_Session_Key() 
-{
-$ADODB_CRYPT_KEY = 'CRYPTED ADODB SESSIONS ROCK!';
-
-       /* USE THIS FUNCTION TO CREATE THE ENCRYPTION KEY FOR CRYPTED SESSIONS  */
-       /* Crypt the used key, $ADODB_CRYPT_KEY as key and session_ID as SALT   */
-       return crypt($ADODB_CRYPT_KEY, session_ID());
-}
-
-$ADODB_SESS_LIFE = ini_get('session.gc_maxlifetime');
-if ($ADODB_SESS_LIFE <= 1) {
-       // bug in PHP 4.0.3 pl 1  -- how about other versions?
-       //print "<h3>Session Error: PHP.INI setting <i>session.gc_maxlifetime</i>not set: $ADODB_SESS_LIFE</h3>";
-       $ADODB_SESS_LIFE=1440;
-}
-
-function adodb_sess_open($save_path, $session_name) 
-{
-GLOBAL         $ADODB_SESSION_CONNECT, 
-       $ADODB_SESSION_DRIVER,
-       $ADODB_SESSION_USER,
-       $ADODB_SESSION_PWD,
-       $ADODB_SESSION_DB,
-       $ADODB_SESS_CONN,
-       $ADODB_SESS_DEBUG;
-       
-       $ADODB_SESS_INSERT = false;
-       
-       if (isset($ADODB_SESS_CONN)) return true;
-       
-       $ADODB_SESS_CONN = ADONewConnection($ADODB_SESSION_DRIVER);
-       if (!empty($ADODB_SESS_DEBUG)) {
-               $ADODB_SESS_CONN->debug = true;
-               print" conn=$ADODB_SESSION_CONNECT user=$ADODB_SESSION_USER pwd=$ADODB_SESSION_PWD db=$ADODB_SESSION_DB ";
-       }
-       return $ADODB_SESS_CONN->PConnect($ADODB_SESSION_CONNECT,
-                       $ADODB_SESSION_USER,$ADODB_SESSION_PWD,$ADODB_SESSION_DB);
-       
-}
-
-function adodb_sess_close() 
-{
-global $ADODB_SESS_CONN;
-
-       if ($ADODB_SESS_CONN) $ADODB_SESS_CONN->Close();
-       return true;
-}
-
-function adodb_sess_read($key) 
-{
-$Crypt = new MD5Crypt;
-global $ADODB_SESS_CONN,$ADODB_SESS_INSERT,$ADODB_SESSION_TBL;
-       $rs = $ADODB_SESS_CONN->Execute("SELECT data FROM $ADODB_SESSION_TBL WHERE sesskey = '$key' AND expiry >= " . time());
-       if ($rs) {
-               if ($rs->EOF) {
-                       $ADODB_SESS_INSERT = true;
-                       $v = '';
-               } else {
-                       // Decrypt session data
-                       $v = rawurldecode($Crypt->Decrypt(reset($rs->fields), ADODB_Session_Key()));
-               }
-               $rs->Close();
-               return $v;
-       }
-       else $ADODB_SESS_INSERT = true;
-       
-       return '';
-}
-
-function adodb_sess_write($key, $val) 
-{
-$Crypt = new MD5Crypt;
-       global $ADODB_SESS_INSERT,$ADODB_SESS_CONN, $ADODB_SESS_LIFE, $ADODB_SESSION_TBL,$ADODB_SESSION_EXPIRE_NOTIFY;
-
-       $expiry = time() + $ADODB_SESS_LIFE;
-
-       // encrypt session data..       
-       $val = $Crypt->Encrypt(rawurlencode($val), ADODB_Session_Key());
-       
-       $arr = array('sesskey' => $key, 'expiry' => $expiry, 'data' => $val);
-       if ($ADODB_SESSION_EXPIRE_NOTIFY) {
-               $var = reset($ADODB_SESSION_EXPIRE_NOTIFY);
-               global $$var;
-               $arr['expireref'] = $$var;
-       }
-       $rs = $ADODB_SESS_CONN->Replace($ADODB_SESSION_TBL,
-           $arr,
-       'sesskey',$autoQuote = true);
-
-       if (!$rs) {
-               ADOConnection::outp( '
--- Session Replace: '.$ADODB_SESS_CONN->ErrorMsg().'</p>',false);
-       } else {
-               // bug in access driver (could be odbc?) means that info is not commited
-               // properly unless select statement executed in Win2000
-       
-       if ($ADODB_SESS_CONN->databaseType == 'access') $rs = $ADODB_SESS_CONN->Execute("select sesskey from $ADODB_SESSION_TBL WHERE sesskey='$key'");
-       }
-       return isset($rs);
-}
-
-function adodb_sess_destroy($key) 
-{
-       global $ADODB_SESS_CONN, $ADODB_SESSION_TBL,$ADODB_SESSION_EXPIRE_NOTIFY;
-       
-       if ($ADODB_SESSION_EXPIRE_NOTIFY) {
-               reset($ADODB_SESSION_EXPIRE_NOTIFY);
-               $fn = next($ADODB_SESSION_EXPIRE_NOTIFY);
-               $savem = $ADODB_SESS_CONN->SetFetchMode(ADODB_FETCH_NUM);
-               $rs = $ADODB_SESS_CONN->Execute("SELECT expireref,sesskey FROM $ADODB_SESSION_TBL WHERE sesskey='$key'");
-               $ADODB_SESS_CONN->SetFetchMode($savem);
-               if ($rs) {
-                       $ADODB_SESS_CONN->BeginTrans();
-                       while (!$rs->EOF) {
-                               $ref = $rs->fields[0];
-                               $key = $rs->fields[1];
-                               $fn($ref,$key);
-                               $del = $ADODB_SESS_CONN->Execute("DELETE FROM $ADODB_SESSION_TBL WHERE sesskey='$key'");
-                               $rs->MoveNext();
-                       }
-                       $ADODB_SESS_CONN->CommitTrans();
-               }
-       } else {
-               $qry = "DELETE FROM $ADODB_SESSION_TBL WHERE sesskey = '$key'";
-               $rs = $ADODB_SESS_CONN->Execute($qry);
-       }
-       return $rs ? true : false;
-}
-
-
-function adodb_sess_gc($maxlifetime) {
-       global $ADODB_SESS_CONN, $ADODB_SESSION_TBL,$ADODB_SESSION_EXPIRE_NOTIFY,$ADODB_SESS_DEBUG;
-
-       if ($ADODB_SESSION_EXPIRE_NOTIFY) {
-               reset($ADODB_SESSION_EXPIRE_NOTIFY);
-               $fn = next($ADODB_SESSION_EXPIRE_NOTIFY);
-               $savem = $ADODB_SESS_CONN->SetFetchMode(ADODB_FETCH_NUM);
-               $t = time();
-               $rs = $ADODB_SESS_CONN->Execute("SELECT expireref,sesskey FROM $ADODB_SESSION_TBL WHERE expiry < $t");
-               $ADODB_SESS_CONN->SetFetchMode($savem);
-               if ($rs) {
-                       $ADODB_SESS_CONN->BeginTrans();
-                       while (!$rs->EOF) {
-                               $ref = $rs->fields[0];
-                               $key = $rs->fields[1];
-                               $fn($ref,$key);
-                               //$del = $ADODB_SESS_CONN->Execute("DELETE FROM $ADODB_SESSION_TBL WHERE sesskey='$key'");
-                               $rs->MoveNext();
-                       }
-                       $rs->Close();
-                       
-                       $ADODB_SESS_CONN->Execute("DELETE FROM $ADODB_SESSION_TBL WHERE expiry < $t");
-                       $ADODB_SESS_CONN->CommitTrans();
-               }
-       } else {
-               $qry = "DELETE FROM $ADODB_SESSION_TBL WHERE expiry < " . time();
-               $ADODB_SESS_CONN->Execute($qry);
-       }
-       
-       // suggested by Cameron, "GaM3R" <gamr@outworld.cx>
-       if (defined('ADODB_SESSION_OPTIMIZE'))
-       {
-       global $ADODB_SESSION_DRIVER;
-       
-               switch( $ADODB_SESSION_DRIVER ) {
-                       case 'mysql':
-                       case 'mysqlt':
-                               $opt_qry = 'OPTIMIZE TABLE '.$ADODB_SESSION_TBL;
-                               break;
-                       case 'postgresql':
-                       case 'postgresql7':
-                               $opt_qry = 'VACUUM '.$ADODB_SESSION_TBL;        
-                               break;
-               }
-       }
-       
-       if ($ADODB_SESS_CONN->dataProvider === 'oci8') $sql = 'select  TO_CHAR('.($ADODB_SESS_CONN->sysTimeStamp).', \'RRRR-MM-DD HH24:MI:SS\') from '. $ADODB_SESSION_TBL;
-       else $sql = 'select '.$ADODB_SESS_CONN->sysTimeStamp.' from '. $ADODB_SESSION_TBL;
-       
-       $rs = $ADODB_SESS_CONN->SelectLimit($sql,1);
-       if ($rs && !$rs->EOF) {
-       
-               $dbts = reset($rs->fields);
-               $rs->Close();
-               $dbt = $ADODB_SESS_CONN->UnixTimeStamp($dbts);
-               $t = time();
-               if (abs($dbt - $t) >= ADODB_SESSION_SYNCH_SECS) {
-                       $msg = 
-                       __FILE__.": Server time for webserver {$_SERVER['HTTP_HOST']} not in synch with database: database=$dbt ($dbts), webserver=$t (diff=".(abs($dbt-$t)/3600)." hrs)";
-                       error_log($msg);
-                       if ($ADODB_SESS_DEBUG) ADOConnection::outp("
--- $msg</p>");
-               }
-       }
-       
-       return true;
-}
-
-session_module_name('user'); 
-session_set_save_handler(
-       "adodb_sess_open",
-       "adodb_sess_close",
-       "adodb_sess_read",
-       "adodb_sess_write",
-       "adodb_sess_destroy",
-       "adodb_sess_gc");
-}
-
-/*  TEST SCRIPT -- UNCOMMENT */
-/*
-if (0) {
-
-       session_start();
-       session_register('AVAR');
-       $_SESSION['AVAR'] += 1;
-       print "
--- \$_SESSION['AVAR']={$_SESSION['AVAR']}</p>";
-}
-*/
-?>
diff --git a/lib/adodb/session/old/adodb-session-clob.php b/lib/adodb/session/old/adodb-session-clob.php
deleted file mode 100644 (file)
index 84e5ae0..0000000
+++ /dev/null
@@ -1,448 +0,0 @@
-<?php
-/*
-  V4.93 10 Oct 2006  (c) 2000-2008 John Lim (jlim#natsoft.com.my). All rights reserved.
-  Released under both BSD license and Lesser GPL library license. 
-  Whenever there is any discrepancy between the two licenses, 
-  the BSD license will take precedence.
-         Set tabs to 4 for best viewing.
-  
-  Latest version of ADODB is available at http://php.weblogs.com/adodb
-  ======================================================================
-  
- This file provides PHP4 session management using the ADODB database
- wrapper library, using Oracle CLOB's to store data. Contributed by achim.gosse@ddd.de.
-
- Example
- =======
-       include('adodb.inc.php');
-       include('adodb-session.php');
-       session_start();
-       session_register('AVAR');
-       $_SESSION['AVAR'] += 1;
-       print "
--- \$_SESSION['AVAR']={$_SESSION['AVAR']}</p>";
-       
-To force non-persistent connections, call adodb_session_open first before session_start():
-
-       include('adodb.inc.php');
-       include('adodb-session.php');
-       adodb_session_open(false,false,false);
-       session_start();
-       session_register('AVAR');
-       $_SESSION['AVAR'] += 1;
-       print "
--- \$_SESSION['AVAR']={$_SESSION['AVAR']}</p>";
-
- Installation
- ============
- 1. Create this table in your database (syntax might vary depending on your db):
-  create table sessions (
-          SESSKEY char(32) not null,
-          EXPIRY int(11) unsigned not null,
-          EXPIREREF varchar(64),
-          DATA CLOB,
-         primary key (sesskey)
-  );
-
-
-  2. Then define the following parameters in this file:
-       $ADODB_SESSION_DRIVER='database driver, eg. mysql or ibase';
-       $ADODB_SESSION_CONNECT='server to connect to';
-       $ADODB_SESSION_USER ='user';
-       $ADODB_SESSION_PWD ='password';
-       $ADODB_SESSION_DB ='database';
-       $ADODB_SESSION_TBL = 'sessions'
-       $ADODB_SESSION_USE_LOBS = false; (or, if you wanna use CLOBS (= 'CLOB') or ( = 'BLOB')
-       
-  3. Recommended is PHP 4.1.0 or later. There are documented
-        session bugs in earlier versions of PHP.
-
-  4. If you want to receive notifications when a session expires, then
-        you can tag a session with an EXPIREREF, and before the session
-        record is deleted, we can call a function that will pass the EXPIREREF
-        as the first parameter, and the session key as the second parameter.
-        
-        To do this, define a notification function, say NotifyFn:
-        
-               function NotifyFn($expireref, $sesskey)
-               {
-               }
-        
-        Then you need to define a global variable $ADODB_SESSION_EXPIRE_NOTIFY.
-        This is an array with 2 elements, the first being the name of the variable
-        you would like to store in the EXPIREREF field, and the 2nd is the 
-        notification function's name.
-        
-        In this example, we want to be notified when a user's session 
-        has expired, so we store the user id in the global variable $USERID, 
-        store this value in the EXPIREREF field:
-        
-               $ADODB_SESSION_EXPIRE_NOTIFY = array('USERID','NotifyFn');
-               
-       Then when the NotifyFn is called, we are passed the $USERID as the first
-       parameter, eg. NotifyFn($userid, $sesskey).
-*/
-
-if (!defined('_ADODB_LAYER')) {
-       include (dirname(__FILE__).'/adodb.inc.php');
-}
-
-if (!defined('ADODB_SESSION')) {
-
- define('ADODB_SESSION',1);
- /* if database time and system time is difference is greater than this, then give warning */
- define('ADODB_SESSION_SYNCH_SECS',60); 
-
-/****************************************************************************************\
-       Global definitions
-\****************************************************************************************/
-GLOBAL         $ADODB_SESSION_CONNECT, 
-       $ADODB_SESSION_DRIVER,
-       $ADODB_SESSION_USER,
-       $ADODB_SESSION_PWD,
-       $ADODB_SESSION_DB,
-       $ADODB_SESS_CONN,
-       $ADODB_SESS_LIFE,
-       $ADODB_SESS_DEBUG,
-       $ADODB_SESSION_EXPIRE_NOTIFY,
-       $ADODB_SESSION_CRC,
-       $ADODB_SESSION_USE_LOBS,
-       $ADODB_SESSION_TBL;
-       
-       if (!isset($ADODB_SESSION_USE_LOBS)) $ADODB_SESSION_USE_LOBS = 'CLOB';
-       
-       $ADODB_SESS_LIFE = ini_get('session.gc_maxlifetime');
-       if ($ADODB_SESS_LIFE <= 1) {
-        // bug in PHP 4.0.3 pl 1  -- how about other versions?
-        //print "<h3>Session Error: PHP.INI setting <i>session.gc_maxlifetime</i>not set: $ADODB_SESS_LIFE</h3>";
-               $ADODB_SESS_LIFE=1440;
-       }
-       $ADODB_SESSION_CRC = false;
-       //$ADODB_SESS_DEBUG = true;
-       
-       //////////////////////////////////
-       /* SET THE FOLLOWING PARAMETERS */
-       //////////////////////////////////
-       
-       if (empty($ADODB_SESSION_DRIVER)) {
-               $ADODB_SESSION_DRIVER='mysql';
-               $ADODB_SESSION_CONNECT='localhost';
-               $ADODB_SESSION_USER ='root';
-               $ADODB_SESSION_PWD ='';
-               $ADODB_SESSION_DB ='xphplens_2';
-       }
-       
-       if (empty($ADODB_SESSION_EXPIRE_NOTIFY)) {
-               $ADODB_SESSION_EXPIRE_NOTIFY = false;
-       }
-       //  Made table name configurable - by David Johnson djohnson@inpro.net
-       if (empty($ADODB_SESSION_TBL)){
-               $ADODB_SESSION_TBL = 'sessions';
-       }
-       
-
-       // defaulting $ADODB_SESSION_USE_LOBS
-       if (!isset($ADODB_SESSION_USE_LOBS) || empty($ADODB_SESSION_USE_LOBS)) {
-               $ADODB_SESSION_USE_LOBS = false;
-       }
-
-       /*
-       $ADODB_SESS['driver'] = $ADODB_SESSION_DRIVER;
-       $ADODB_SESS['connect'] = $ADODB_SESSION_CONNECT;
-       $ADODB_SESS['user'] = $ADODB_SESSION_USER;
-       $ADODB_SESS['pwd'] = $ADODB_SESSION_PWD;
-       $ADODB_SESS['db'] = $ADODB_SESSION_DB;
-       $ADODB_SESS['life'] = $ADODB_SESS_LIFE;
-       $ADODB_SESS['debug'] = $ADODB_SESS_DEBUG;
-       
-       $ADODB_SESS['debug'] = $ADODB_SESS_DEBUG;
-       $ADODB_SESS['table'] = $ADODB_SESS_TBL;
-       */
-       
-/****************************************************************************************\
-       Create the connection to the database. 
-       
-       If $ADODB_SESS_CONN already exists, reuse that connection
-\****************************************************************************************/
-function adodb_sess_open($save_path, $session_name,$persist=true) 
-{
-GLOBAL $ADODB_SESS_CONN;
-       if (isset($ADODB_SESS_CONN)) return true;
-       
-GLOBAL         $ADODB_SESSION_CONNECT, 
-       $ADODB_SESSION_DRIVER,
-       $ADODB_SESSION_USER,
-       $ADODB_SESSION_PWD,
-       $ADODB_SESSION_DB,
-       $ADODB_SESS_DEBUG;
-       
-       // cannot use & below - do not know why...
-       $ADODB_SESS_CONN = ADONewConnection($ADODB_SESSION_DRIVER);
-       if (!empty($ADODB_SESS_DEBUG)) {
-               $ADODB_SESS_CONN->debug = true;
-               ADOConnection::outp( " conn=$ADODB_SESSION_CONNECT user=$ADODB_SESSION_USER pwd=$ADODB_SESSION_PWD db=$ADODB_SESSION_DB ");
-       }
-       if ($persist) $ok = $ADODB_SESS_CONN->PConnect($ADODB_SESSION_CONNECT,
-                       $ADODB_SESSION_USER,$ADODB_SESSION_PWD,$ADODB_SESSION_DB);
-       else $ok = $ADODB_SESS_CONN->Connect($ADODB_SESSION_CONNECT,
-                       $ADODB_SESSION_USER,$ADODB_SESSION_PWD,$ADODB_SESSION_DB);
-       
-       if (!$ok) ADOConnection::outp( "
--- Session: connection failed</p>",false);
-}
-
-/****************************************************************************************\
-       Close the connection
-\****************************************************************************************/
-function adodb_sess_close() 
-{
-global $ADODB_SESS_CONN;
-
-       if ($ADODB_SESS_CONN) $ADODB_SESS_CONN->Close();
-       return true;
-}
-
-/****************************************************************************************\
-       Slurp in the session variables and return the serialized string
-\****************************************************************************************/
-function adodb_sess_read($key) 
-{
-global $ADODB_SESS_CONN,$ADODB_SESSION_TBL,$ADODB_SESSION_CRC;
-
-       $rs = $ADODB_SESS_CONN->Execute("SELECT data FROM $ADODB_SESSION_TBL WHERE sesskey = '$key' AND expiry >= " . time());
-       if ($rs) {
-               if ($rs->EOF) {
-                       $v = '';
-               } else 
-                       $v = rawurldecode(reset($rs->fields));
-                       
-               $rs->Close();
-               
-               // new optimization adodb 2.1
-               $ADODB_SESSION_CRC = strlen($v).crc32($v);
-               
-               return $v;
-       }
-       
-       return ''; // thx to Jorma Tuomainen, webmaster#wizactive.com
-}
-
-/****************************************************************************************\
-       Write the serialized data to a database.
-       
-       If the data has not been modified since adodb_sess_read(), we do not write.
-\****************************************************************************************/
-function adodb_sess_write($key, $val) 
-{
-       global
-               $ADODB_SESS_CONN, 
-               $ADODB_SESS_LIFE, 
-               $ADODB_SESSION_TBL,
-               $ADODB_SESS_DEBUG, 
-               $ADODB_SESSION_CRC,
-               $ADODB_SESSION_EXPIRE_NOTIFY,
-               $ADODB_SESSION_DRIVER,                  // added
-               $ADODB_SESSION_USE_LOBS;                // added
-
-       $expiry = time() + $ADODB_SESS_LIFE;
-       
-       // crc32 optimization since adodb 2.1
-       // now we only update expiry date, thx to sebastian thom in adodb 2.32
-       if ($ADODB_SESSION_CRC !== false && $ADODB_SESSION_CRC == strlen($val).crc32($val)) {
-               if ($ADODB_SESS_DEBUG) echo "
--- Session: Only updating date - crc32 not changed</p>";
-               $qry = "UPDATE $ADODB_SESSION_TBL SET expiry=$expiry WHERE sesskey='$key' AND expiry >= " . time();
-               $rs = $ADODB_SESS_CONN->Execute($qry);  
-               return true;
-       }
-       $val = rawurlencode($val);
-       
-       $arr = array('sesskey' => $key, 'expiry' => $expiry, 'data' => $val);
-       if ($ADODB_SESSION_EXPIRE_NOTIFY) {
-               $var = reset($ADODB_SESSION_EXPIRE_NOTIFY);
-               global $$var;
-               $arr['expireref'] = $$var;
-       }
-
-       
-       if ($ADODB_SESSION_USE_LOBS === false) {        // no lobs, simply use replace()
-               $rs = $ADODB_SESS_CONN->Replace($ADODB_SESSION_TBL,$arr, 'sesskey',$autoQuote = true);
-               if (!$rs) {
-                       $err = $ADODB_SESS_CONN->ErrorMsg();
-               }
-       } else {
-               // what value shall we insert/update for lob row?
-               switch ($ADODB_SESSION_DRIVER) {
-                       // empty_clob or empty_lob for oracle dbs
-                       case "oracle":
-                       case "oci8":
-                       case "oci8po":
-                       case "oci805":
-                               $lob_value = sprintf("empty_%s()", strtolower($ADODB_SESSION_USE_LOBS));
-                               break;
-
-                       // null for all other
-                       default:
-                               $lob_value = "null";
-                               break;
-               }
-
-               // do we insert or update? => as for sesskey
-               $res = $ADODB_SESS_CONN->Execute("select count(*) as cnt from $ADODB_SESSION_TBL where sesskey = '$key'");
-               if ($res && reset($res->fields) > 0) {
-                       $qry = sprintf("update %s set expiry = %d, data = %s where sesskey = '%s'", $ADODB_SESSION_TBL, $expiry, $lob_value, $key);
-               } else {
-                       // insert
-                       $qry = sprintf("insert into %s (sesskey, expiry, data) values ('%s', %d, %s)", $ADODB_SESSION_TBL, $key, $expiry, $lob_value);
-               }
-
-               $err = "";
-               $rs1 = $ADODB_SESS_CONN->Execute($qry);
-               if (!$rs1) {
-                       $err .= $ADODB_SESS_CONN->ErrorMsg()."\n";
-               }
-               $rs2 = $ADODB_SESS_CONN->UpdateBlob($ADODB_SESSION_TBL, 'data', $val, "sesskey='$key'", strtoupper($ADODB_SESSION_USE_LOBS));
-               if (!$rs2) {
-                       $err .= $ADODB_SESS_CONN->ErrorMsg()."\n";
-               }
-               $rs = ($rs1 && $rs2) ? true : false;
-       }
-
-       if (!$rs) {
-               ADOConnection::outp( '
--- Session Replace: '.nl2br($err).'</p>',false);
-       }  else {
-               // bug in access driver (could be odbc?) means that info is not commited
-               // properly unless select statement executed in Win2000
-               if ($ADODB_SESS_CONN->databaseType == 'access') 
-                       $rs = $ADODB_SESS_CONN->Execute("select sesskey from $ADODB_SESSION_TBL WHERE sesskey='$key'");
-       }
-       return !empty($rs);
-}
-
-function adodb_sess_destroy($key) 
-{
-       global $ADODB_SESS_CONN, $ADODB_SESSION_TBL,$ADODB_SESSION_EXPIRE_NOTIFY;
-       
-       if ($ADODB_SESSION_EXPIRE_NOTIFY) {
-               reset($ADODB_SESSION_EXPIRE_NOTIFY);
-               $fn = next($ADODB_SESSION_EXPIRE_NOTIFY);
-               $savem = $ADODB_SESS_CONN->SetFetchMode(ADODB_FETCH_NUM);
-               $rs = $ADODB_SESS_CONN->Execute("SELECT expireref,sesskey FROM $ADODB_SESSION_TBL WHERE sesskey='$key'");
-               $ADODB_SESS_CONN->SetFetchMode($savem);
-               if ($rs) {
-                       $ADODB_SESS_CONN->BeginTrans();
-                       while (!$rs->EOF) {
-                               $ref = $rs->fields[0];
-                               $key = $rs->fields[1];
-                               $fn($ref,$key);
-                               $del = $ADODB_SESS_CONN->Execute("DELETE FROM $ADODB_SESSION_TBL WHERE sesskey='$key'");
-                               $rs->MoveNext();
-                       }
-                       $ADODB_SESS_CONN->CommitTrans();
-               }
-       } else {
-               $qry = "DELETE FROM $ADODB_SESSION_TBL WHERE sesskey = '$key'";
-               $rs = $ADODB_SESS_CONN->Execute($qry);
-       }
-       return $rs ? true : false;
-}
-
-function adodb_sess_gc($maxlifetime) 
-{
-       global $ADODB_SESS_DEBUG, $ADODB_SESS_CONN, $ADODB_SESSION_TBL,$ADODB_SESSION_EXPIRE_NOTIFY;
-       
-       if ($ADODB_SESSION_EXPIRE_NOTIFY) {
-               reset($ADODB_SESSION_EXPIRE_NOTIFY);
-               $fn = next($ADODB_SESSION_EXPIRE_NOTIFY);
-               $savem = $ADODB_SESS_CONN->SetFetchMode(ADODB_FETCH_NUM);
-               $t = time();
-               $rs = $ADODB_SESS_CONN->Execute("SELECT expireref,sesskey FROM $ADODB_SESSION_TBL WHERE expiry < $t");
-               $ADODB_SESS_CONN->SetFetchMode($savem);
-               if ($rs) {
-                       $ADODB_SESS_CONN->BeginTrans();
-                       while (!$rs->EOF) {
-                               $ref = $rs->fields[0];
-                               $key = $rs->fields[1];
-                               $fn($ref,$key);
-                               $del = $ADODB_SESS_CONN->Execute("DELETE FROM $ADODB_SESSION_TBL WHERE sesskey='$key'");
-                               $rs->MoveNext();
-                       }
-                       $rs->Close();
-                       
-                       //$ADODB_SESS_CONN->Execute("DELETE FROM $ADODB_SESSION_TBL WHERE expiry < $t");
-                       $ADODB_SESS_CONN->CommitTrans();
-                       
-               }
-       } else {
-               $ADODB_SESS_CONN->Execute("DELETE FROM $ADODB_SESSION_TBL WHERE expiry < " . time());
-       
-               if ($ADODB_SESS_DEBUG) ADOConnection::outp("
--- <b>Garbage Collection</b>: $qry</p>");
-       }
-       // suggested by Cameron, "GaM3R" <gamr@outworld.cx>
-       if (defined('ADODB_SESSION_OPTIMIZE')) {
-       global $ADODB_SESSION_DRIVER;
-       
-               switch( $ADODB_SESSION_DRIVER ) {
-                       case 'mysql':
-                       case 'mysqlt':
-                               $opt_qry = 'OPTIMIZE TABLE '.$ADODB_SESSION_TBL;
-                               break;
-                       case 'postgresql':
-                       case 'postgresql7':
-                               $opt_qry = 'VACUUM '.$ADODB_SESSION_TBL;        
-                               break;
-               }
-               if (!empty($opt_qry)) {
-                       $ADODB_SESS_CONN->Execute($opt_qry);
-               }
-       }
-       if ($ADODB_SESS_CONN->dataProvider === 'oci8') $sql = 'select  TO_CHAR('.($ADODB_SESS_CONN->sysTimeStamp).', \'RRRR-MM-DD HH24:MI:SS\') from '. $ADODB_SESSION_TBL;
-       else $sql = 'select '.$ADODB_SESS_CONN->sysTimeStamp.' from '. $ADODB_SESSION_TBL;
-       
-       $rs = $ADODB_SESS_CONN->SelectLimit($sql,1);
-       if ($rs && !$rs->EOF) {
-       
-               $dbts = reset($rs->fields);
-               $rs->Close();
-               $dbt = $ADODB_SESS_CONN->UnixTimeStamp($dbts);
-               $t = time();
-               if (abs($dbt - $t) >= ADODB_SESSION_SYNCH_SECS) {
-                       $msg = 
-                       __FILE__.": Server time for webserver {$_SERVER['HTTP_HOST']} not in synch with database: database=$dbt ($dbts), webserver=$t (diff=".(abs($dbt-$t)/3600)." hrs)";
-                       error_log($msg);
-                       if ($ADODB_SESS_DEBUG) ADOConnection::outp("
--- $msg</p>");
-               }
-       }
-       
-       return true;
-}
-
-session_module_name('user'); 
-session_set_save_handler(
-       "adodb_sess_open",
-       "adodb_sess_close",
-       "adodb_sess_read",
-       "adodb_sess_write",
-       "adodb_sess_destroy",
-       "adodb_sess_gc");
-}
-
-/*  TEST SCRIPT -- UNCOMMENT */
-
-if (0) {
-
-       session_start();
-       session_register('AVAR');
-       $_SESSION['AVAR'] += 1;
-       ADOConnection::outp( "
--- \$_SESSION['AVAR']={$_SESSION['AVAR']}</p>",false);
-}
-
-?>
diff --git a/lib/adodb/session/old/adodb-session.php b/lib/adodb/session/old/adodb-session.php
deleted file mode 100644 (file)
index a3c141d..0000000
+++ /dev/null
@@ -1,439 +0,0 @@
-<?php
-/*
-V4.93 10 Oct 2006  (c) 2000-2008 John Lim (jlim#natsoft.com.my). All rights reserved.
-  Released under both BSD license and Lesser GPL library license. 
-  Whenever there is any discrepancy between the two licenses, 
-  the BSD license will take precedence.
-         Set tabs to 4 for best viewing.
-  
-  Latest version of ADODB is available at http://php.weblogs.com/adodb
-  ======================================================================
-  
- This file provides PHP4 session management using the ADODB database
-wrapper library.
- Example
- =======
-       include('adodb.inc.php');
-       include('adodb-session.php');
-       session_start();
-       session_register('AVAR');
-       $_SESSION['AVAR'] += 1;
-       print "
--- \$_SESSION['AVAR']={$_SESSION['AVAR']}</p>";
-       
-To force non-persistent connections, call adodb_session_open first before session_start():
-
-       include('adodb.inc.php');
-       include('adodb-session.php');
-       adodb_sess_open(false,false,false);
-       session_start();
-       session_register('AVAR');
-       $_SESSION['AVAR'] += 1;
-       print "
--- \$_SESSION['AVAR']={$_SESSION['AVAR']}</p>";
-
- Installation
- ============
- 1. Create this table in your database (syntax might vary depending on your db):
-  create table sessions (
-          SESSKEY char(32) not null,
-          EXPIRY int(11) unsigned not null,
-          EXPIREREF varchar(64),
-          DATA text not null,
-         primary key (sesskey)
-  );
-  
-  For oracle:
-    create table sessions (
-          SESSKEY char(32) not null,
-          EXPIRY DECIMAL(16)  not null,
-          EXPIREREF varchar(64),
-          DATA varchar(4000) not null,
-         primary key (sesskey)
-  );
-
-
-  2. Then define the following parameters. You can either modify
-     this file, or define them before this file is included:
-        
-       $ADODB_SESSION_DRIVER='database driver, eg. mysql or ibase';
-       $ADODB_SESSION_CONNECT='server to connect to';
-       $ADODB_SESSION_USER ='user';
-       $ADODB_SESSION_PWD ='password';
-       $ADODB_SESSION_DB ='database';
-       $ADODB_SESSION_TBL = 'sessions'
-       
-  3. Recommended is PHP 4.1.0 or later. There are documented
-        session bugs in earlier versions of PHP.
-
-  4. If you want to receive notifications when a session expires, then
-        you can tag a session with an EXPIREREF, and before the session
-        record is deleted, we can call a function that will pass the EXPIREREF
-        as the first parameter, and the session key as the second parameter.
-        
-        To do this, define a notification function, say NotifyFn:
-        
-               function NotifyFn($expireref, $sesskey)
-               {
-               }
-        
-        Then you need to define a global variable $ADODB_SESSION_EXPIRE_NOTIFY.
-        This is an array with 2 elements, the first being the name of the variable
-        you would like to store in the EXPIREREF field, and the 2nd is the 
-        notification function's name.
-        
-        In this example, we want to be notified when a user's session 
-        has expired, so we store the user id in the global variable $USERID, 
-        store this value in the EXPIREREF field:
-        
-               $ADODB_SESSION_EXPIRE_NOTIFY = array('USERID','NotifyFn');
-               
-       Then when the NotifyFn is called, we are passed the $USERID as the first
-       parameter, eg. NotifyFn($userid, $sesskey).
-*/
-
-if (!defined('_ADODB_LAYER')) {
-       include (dirname(__FILE__).'/adodb.inc.php');
-}
-
-if (!defined('ADODB_SESSION')) {
-
- define('ADODB_SESSION',1);
- /* if database time and system time is difference is greater than this, then give warning */
- define('ADODB_SESSION_SYNCH_SECS',60); 
-
- /*
-       Thanks Joe Li. See http://phplens.com/lens/lensforum/msgs.php?id=11487&x=1
-*/
-function adodb_session_regenerate_id() 
-{
-       $conn = ADODB_Session::_conn();
-       if (!$conn) return false;
-
-       $old_id = session_id();
-       if (function_exists('session_regenerate_id')) {
-               session_regenerate_id();
-       } else {
-               session_id(md5(uniqid(rand(), true)));
-               $ck = session_get_cookie_params();
-               setcookie(session_name(), session_id(), false, $ck['path'], $ck['domain'], $ck['secure']);
-               //@session_start();
-       }
-       $new_id = session_id();
-       $ok = $conn->Execute('UPDATE '. ADODB_Session::table(). ' SET sesskey='. $conn->qstr($new_id). ' WHERE sesskey='.$conn->qstr($old_id));
-       
-       /* it is possible that the update statement fails due to a collision */
-       if (!$ok) {
-               session_id($old_id);
-               if (empty($ck)) $ck = session_get_cookie_params();
-               setcookie(session_name(), session_id(), false, $ck['path'], $ck['domain'], $ck['secure']);
-               return false;
-       }
-       
-       return true;
-}
-
-/****************************************************************************************\
-       Global definitions
-\****************************************************************************************/
-GLOBAL         $ADODB_SESSION_CONNECT, 
-       $ADODB_SESSION_DRIVER,
-       $ADODB_SESSION_USER,
-       $ADODB_SESSION_PWD,
-       $ADODB_SESSION_DB,
-       $ADODB_SESS_CONN,
-       $ADODB_SESS_LIFE,
-       $ADODB_SESS_DEBUG,
-       $ADODB_SESSION_EXPIRE_NOTIFY,
-       $ADODB_SESSION_CRC,
-       $ADODB_SESSION_TBL;
-       
-       
-       $ADODB_SESS_LIFE = ini_get('session.gc_maxlifetime');
-       if ($ADODB_SESS_LIFE <= 1) {
-        // bug in PHP 4.0.3 pl 1  -- how about other versions?
-        //print "<h3>Session Error: PHP.INI setting <i>session.gc_maxlifetime</i>not set: $ADODB_SESS_LIFE</h3>";
-               $ADODB_SESS_LIFE=1440;
-       }
-       $ADODB_SESSION_CRC = false;
-       //$ADODB_SESS_DEBUG = true;
-       
-       //////////////////////////////////
-       /* SET THE FOLLOWING PARAMETERS */
-       //////////////////////////////////
-       
-       if (empty($ADODB_SESSION_DRIVER)) {
-               $ADODB_SESSION_DRIVER='mysql';
-               $ADODB_SESSION_CONNECT='localhost';
-               $ADODB_SESSION_USER ='root';
-               $ADODB_SESSION_PWD ='';
-               $ADODB_SESSION_DB ='xphplens_2';
-       }
-       
-       if (empty($ADODB_SESSION_EXPIRE_NOTIFY)) {
-               $ADODB_SESSION_EXPIRE_NOTIFY = false;
-       }
-       //  Made table name configurable - by David Johnson djohnson@inpro.net
-       if (empty($ADODB_SESSION_TBL)){
-               $ADODB_SESSION_TBL = 'sessions';
-       }
-       
-       /*
-       $ADODB_SESS['driver'] = $ADODB_SESSION_DRIVER;
-       $ADODB_SESS['connect'] = $ADODB_SESSION_CONNECT;
-       $ADODB_SESS['user'] = $ADODB_SESSION_USER;
-       $ADODB_SESS['pwd'] = $ADODB_SESSION_PWD;
-       $ADODB_SESS['db'] = $ADODB_SESSION_DB;
-       $ADODB_SESS['life'] = $ADODB_SESS_LIFE;
-       $ADODB_SESS['debug'] = $ADODB_SESS_DEBUG;
-       
-       $ADODB_SESS['debug'] = $ADODB_SESS_DEBUG;
-       $ADODB_SESS['table'] = $ADODB_SESS_TBL;
-       */
-       
-/****************************************************************************************\
-       Create the connection to the database. 
-       
-       If $ADODB_SESS_CONN already exists, reuse that connection
-\****************************************************************************************/
-function adodb_sess_open($save_path, $session_name,$persist=true) 
-{
-GLOBAL $ADODB_SESS_CONN;
-       if (isset($ADODB_SESS_CONN)) return true;
-       
-GLOBAL         $ADODB_SESSION_CONNECT, 
-       $ADODB_SESSION_DRIVER,
-       $ADODB_SESSION_USER,
-       $ADODB_SESSION_PWD,
-       $ADODB_SESSION_DB,
-       $ADODB_SESS_DEBUG;
-       
-       // cannot use & below - do not know why...
-       $ADODB_SESS_CONN = ADONewConnection($ADODB_SESSION_DRIVER);
-       if (!empty($ADODB_SESS_DEBUG)) {
-               $ADODB_SESS_CONN->debug = true;
-               ADOConnection::outp( " conn=$ADODB_SESSION_CONNECT user=$ADODB_SESSION_USER pwd=$ADODB_SESSION_PWD db=$ADODB_SESSION_DB ");
-       }
-       if ($persist) $ok = $ADODB_SESS_CONN->PConnect($ADODB_SESSION_CONNECT,
-                       $ADODB_SESSION_USER,$ADODB_SESSION_PWD,$ADODB_SESSION_DB);
-       else $ok = $ADODB_SESS_CONN->Connect($ADODB_SESSION_CONNECT,
-                       $ADODB_SESSION_USER,$ADODB_SESSION_PWD,$ADODB_SESSION_DB);
-       
-       if (!$ok) ADOConnection::outp( "
--- Session: connection failed</p>",false);
-}
-
-/****************************************************************************************\
-       Close the connection
-\****************************************************************************************/
-function adodb_sess_close() 
-{
-global $ADODB_SESS_CONN;
-
-       if ($ADODB_SESS_CONN) $ADODB_SESS_CONN->Close();
-       return true;
-}
-
-/****************************************************************************************\
-       Slurp in the session variables and return the serialized string
-\****************************************************************************************/
-function adodb_sess_read($key) 
-{
-global $ADODB_SESS_CONN,$ADODB_SESSION_TBL,$ADODB_SESSION_CRC;
-
-       $rs = $ADODB_SESS_CONN->Execute("SELECT data FROM $ADODB_SESSION_TBL WHERE sesskey = '$key' AND expiry >= " . time());
-       if ($rs) {
-               if ($rs->EOF) {
-                       $v = '';
-               } else 
-                       $v = rawurldecode(reset($rs->fields));
-                       
-               $rs->Close();
-               
-               // new optimization adodb 2.1
-               $ADODB_SESSION_CRC = strlen($v).crc32($v);
-               
-               return $v;
-       }
-       
-       return ''; // thx to Jorma Tuomainen, webmaster#wizactive.com
-}
-
-/****************************************************************************************\
-       Write the serialized data to a database.
-       
-       If the data has not been modified since adodb_sess_read(), we do not write.
-\****************************************************************************************/
-function adodb_sess_write($key, $val) 
-{
-       global
-               $ADODB_SESS_CONN, 
-               $ADODB_SESS_LIFE, 
-               $ADODB_SESSION_TBL,
-               $ADODB_SESS_DEBUG, 
-               $ADODB_SESSION_CRC,
-               $ADODB_SESSION_EXPIRE_NOTIFY;
-
-       $expiry = time() + $ADODB_SESS_LIFE;
-       
-       // crc32 optimization since adodb 2.1
-       // now we only update expiry date, thx to sebastian thom in adodb 2.32
-       if ($ADODB_SESSION_CRC !== false && $ADODB_SESSION_CRC == strlen($val).crc32($val)) {
-               if ($ADODB_SESS_DEBUG) echo "
--- Session: Only updating date - crc32 not changed</p>";
-               $qry = "UPDATE $ADODB_SESSION_TBL SET expiry=$expiry WHERE sesskey='$key' AND expiry >= " . time();
-               $rs = $ADODB_SESS_CONN->Execute($qry);  
-               return true;
-       }
-       $val = rawurlencode($val);
-       
-       $arr = array('sesskey' => $key, 'expiry' => $expiry, 'data' => $val);
-       if ($ADODB_SESSION_EXPIRE_NOTIFY) {
-               $var = reset($ADODB_SESSION_EXPIRE_NOTIFY);
-               global $$var;
-               $arr['expireref'] = $$var;
-       }
-       $rs = $ADODB_SESS_CONN->Replace($ADODB_SESSION_TBL,$arr,
-       'sesskey',$autoQuote = true);
-       
-       if (!$rs) {
-               ADOConnection::outp( '
--- Session Replace: '.$ADODB_SESS_CONN->ErrorMsg().'</p>',false);
-       }  else {
-               // bug in access driver (could be odbc?) means that info is not commited
-               // properly unless select statement executed in Win2000
-               if ($ADODB_SESS_CONN->databaseType == 'access') 
-                       $rs = $ADODB_SESS_CONN->Execute("select sesskey from $ADODB_SESSION_TBL WHERE sesskey='$key'");
-       }
-       return !empty($rs);
-}
-
-function adodb_sess_destroy($key) 
-{
-       global $ADODB_SESS_CONN, $ADODB_SESSION_TBL,$ADODB_SESSION_EXPIRE_NOTIFY;
-       
-       if ($ADODB_SESSION_EXPIRE_NOTIFY) {
-               reset($ADODB_SESSION_EXPIRE_NOTIFY);
-               $fn = next($ADODB_SESSION_EXPIRE_NOTIFY);
-               $savem = $ADODB_SESS_CONN->SetFetchMode(ADODB_FETCH_NUM);
-               $rs = $ADODB_SESS_CONN->Execute("SELECT expireref,sesskey FROM $ADODB_SESSION_TBL WHERE sesskey='$key'");
-               $ADODB_SESS_CONN->SetFetchMode($savem);
-               if ($rs) {
-                       $ADODB_SESS_CONN->BeginTrans();
-                       while (!$rs->EOF) {
-                               $ref = $rs->fields[0];
-                               $key = $rs->fields[1];
-                               $fn($ref,$key);
-                               $del = $ADODB_SESS_CONN->Execute("DELETE FROM $ADODB_SESSION_TBL WHERE sesskey='$key'");
-                               $rs->MoveNext();
-                       }
-                       $ADODB_SESS_CONN->CommitTrans();
-               }
-       } else {
-               $qry = "DELETE FROM $ADODB_SESSION_TBL WHERE sesskey = '$key'";
-               $rs = $ADODB_SESS_CONN->Execute($qry);
-       }
-       return $rs ? true : false;
-}
-
-function adodb_sess_gc($maxlifetime) 
-{
-       global $ADODB_SESS_DEBUG, $ADODB_SESS_CONN, $ADODB_SESSION_TBL,$ADODB_SESSION_EXPIRE_NOTIFY;
-       
-       if ($ADODB_SESSION_EXPIRE_NOTIFY) {
-               reset($ADODB_SESSION_EXPIRE_NOTIFY);
-               $fn = next($ADODB_SESSION_EXPIRE_NOTIFY);
-               $savem = $ADODB_SESS_CONN->SetFetchMode(ADODB_FETCH_NUM);
-               $t = time();
-               $rs = $ADODB_SESS_CONN->Execute("SELECT expireref,sesskey FROM $ADODB_SESSION_TBL WHERE expiry < $t");
-               $ADODB_SESS_CONN->SetFetchMode($savem);
-               if ($rs) {
-                       $ADODB_SESS_CONN->BeginTrans();
-                       while (!$rs->EOF) {
-                               $ref = $rs->fields[0];
-                               $key = $rs->fields[1];
-                               $fn($ref,$key);
-                               $del = $ADODB_SESS_CONN->Execute("DELETE FROM $ADODB_SESSION_TBL WHERE sesskey='$key'");
-                               $rs->MoveNext();
-                       }
-                       $rs->Close();
-                       
-                       $ADODB_SESS_CONN->CommitTrans();
-                       
-               }
-       } else {
-               $qry = "DELETE FROM $ADODB_SESSION_TBL WHERE expiry < " . time();
-               $ADODB_SESS_CONN->Execute($qry);
-       
-               if ($ADODB_SESS_DEBUG) ADOConnection::outp("
--- <b>Garbage Collection</b>: $qry</p>");
-       }
-       // suggested by Cameron, "GaM3R" <gamr@outworld.cx>
-       if (defined('ADODB_SESSION_OPTIMIZE')) {
-       global $ADODB_SESSION_DRIVER;
-       
-               switch( $ADODB_SESSION_DRIVER ) {
-                       case 'mysql':
-                       case 'mysqlt':
-                               $opt_qry = 'OPTIMIZE TABLE '.$ADODB_SESSION_TBL;
-                               break;
-                       case 'postgresql':
-                       case 'postgresql7':
-                               $opt_qry = 'VACUUM '.$ADODB_SESSION_TBL;        
-                               break;
-               }
-               if (!empty($opt_qry)) {
-                       $ADODB_SESS_CONN->Execute($opt_qry);
-               }
-       }
-       if ($ADODB_SESS_CONN->dataProvider === 'oci8') $sql = 'select  TO_CHAR('.($ADODB_SESS_CONN->sysTimeStamp).', \'RRRR-MM-DD HH24:MI:SS\') from '. $ADODB_SESSION_TBL;
-       else $sql = 'select '.$ADODB_SESS_CONN->sysTimeStamp.' from '. $ADODB_SESSION_TBL;
-       
-       $rs = $ADODB_SESS_CONN->SelectLimit($sql,1);
-       if ($rs && !$rs->EOF) {
-       
-               $dbts = reset($rs->fields);
-               $rs->Close();
-               $dbt = $ADODB_SESS_CONN->UnixTimeStamp($dbts);
-               $t = time();
-       
-               if (abs($dbt - $t) >= ADODB_SESSION_SYNCH_SECS) {
-               
-                       $msg = 
-                       __FILE__.": Server time for webserver {$_SERVER['HTTP_HOST']} not in synch with database: database=$dbt ($dbts), webserver=$t (diff=".(abs($dbt-$t)/3600)." hrs)";
-                       error_log($msg);
-                       if ($ADODB_SESS_DEBUG) ADOConnection::outp("
--- $msg</p>");
-               }
-       }
-       
-       return true;
-}
-
-session_module_name('user'); 
-session_set_save_handler(
-       "adodb_sess_open",
-       "adodb_sess_close",
-       "adodb_sess_read",
-       "adodb_sess_write",
-       "adodb_sess_destroy",
-       "adodb_sess_gc");
-}
-
-/*  TEST SCRIPT -- UNCOMMENT */
-
-if (0) {
-
-       session_start();
-       session_register('AVAR');
-       $_SESSION['AVAR'] += 1;
-       ADOConnection::outp( "
--- \$_SESSION['AVAR']={$_SESSION['AVAR']}</p>",false);
-}
-
-?>
\ No newline at end of file
diff --git a/lib/adodb/session/old/crypt.inc.php b/lib/adodb/session/old/crypt.inc.php
deleted file mode 100644 (file)
index b99bbba..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-<?php
-//      Session Encryption by Ari Kuorikoski <ari.kuorikoski@finebyte.com>
-class MD5Crypt{
-               function keyED($txt,$encrypt_key)
-               {
-                               $encrypt_key = md5($encrypt_key);
-                               $ctr=0;
-                               $tmp = "";
-                               for ($i=0;$i<strlen($txt);$i++){
-                                               if ($ctr==strlen($encrypt_key)) $ctr=0;
-                                               $tmp.= substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1);
-                                               $ctr++;
-                               }
-                               return $tmp;
-               }
-
-               function Encrypt($txt,$key)
-               {
-                               srand((double)microtime()*1000000);
-                               $encrypt_key = md5(rand(0,32000));
-                               $ctr=0;
-                               $tmp = "";
-                               for ($i=0;$i<strlen($txt);$i++)
-                               {
-                               if ($ctr==strlen($encrypt_key)) $ctr=0;
-                               $tmp.= substr($encrypt_key,$ctr,1) .
-                               (substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1));
-                               $ctr++;
-                               }
-                               return base64_encode($this->keyED($tmp,$key));
-               }
-
-               function Decrypt($txt,$key)
-               {
-                               $txt = $this->keyED(base64_decode($txt),$key);
-                               $tmp = "";
-                               for ($i=0;$i<strlen($txt);$i++){
-                                               $md5 = substr($txt,$i,1);
-                                               $i++;
-                                               $tmp.= (substr($txt,$i,1) ^ $md5);
-                               }
-                               return $tmp;
-               }
-
-               function RandPass()
-               {
-                               $randomPassword = "";
-                               srand((double)microtime()*1000000);
-                               for($i=0;$i<8;$i++)
-                               {
-                                               $randnumber = rand(48,120);
-
-                                               while (($randnumber >= 58 && $randnumber <= 64) || ($randnumber >= 91 && $randnumber <= 96))
-                                               {
-                                                               $randnumber = rand(48,120);
-                                               }
-
-                                               $randomPassword .= chr($randnumber);
-                               }
-                               return $randomPassword;
-               }
-
-}
-?>
\ No newline at end of file
diff --git a/lib/adodb/session/session_schema.xml b/lib/adodb/session/session_schema.xml
deleted file mode 100644 (file)
index 3c61ff6..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>
-<schema version="0.2">
-  <table name="sessions">
-    <desc>table for ADOdb session-management</desc>
-
-    <field name="SESSKEY" type="C" size="32">
-      <descr>session key</descr>
-      <KEY/>
-      <NOTNULL/>
-    </field>
-    <field name="EXPIRY" type="I" size="11">
-      <descr></descr>
-      <NOTNULL/>
-    </field>
-
-    <field name="EXPIREREF" type="C" size="64">
-      <descr></descr>
-    </field>
-
-    <field name="DATA" type="XL">
-      <descr></descr>
-      <NOTNULL/>
-    </field>
-  </table>
-</schema>
diff --git a/lib/adodb/session/session_schema2.xml b/lib/adodb/session/session_schema2.xml
deleted file mode 100644 (file)
index 22f8daf..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0"?>
-<schema version="0.3">
-  <table name="sessions2">
-    <desc>table for ADOdb session-management</desc>
-
-    <field name="SESSKEY" type="C" size="64">
-      <descr>session key</descr>
-      <KEY/>
-      <NOTNULL/>
-    </field>
-
-       
-    <field name="EXPIRY" type="T">
-      <descr></descr>
-      <NOTNULL/>
-    </field>
-       
-               <field name="CREATED" type="T">
-            <descr></descr>
-      <NOTNULL/>
-    </field>
-       
-               <field name="MODIFIED" type="T">
-            <descr></descr>
-      <NOTNULL/>
-    </field>
-
-    <field name="EXPIREREF" type="C" size="250">
-      <descr></descr>
-    </field>
-
-    <field name="SESSDATA" type="XL">
-      <descr></descr>
-      <NOTNULL/>
-    </field>
-  </table>
-</schema>
index b456ca53c7a3e5f08ce8fc69b16fbefa28465d4a..ca443a3b09bf9fbd7a4fa3b0befbcf61600a568f 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-<XMLDB PATH="lib/db" VERSION="20090113" COMMENT="XMLDB file for core Moodle tables"
+<XMLDB PATH="lib/db" VERSION="20090114" COMMENT="XMLDB file for core Moodle tables"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:noNamespaceSchemaLocation="../../lib/xmldb/xmldb.xsd"
 >
       <FIELDS>
         <FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" SEQUENCE="true" ENUM="false" NEXT="state"/>
         <FIELD NAME="state" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" ENUM="false" COMMENT="0 means normal session" PREVIOUS="id" NEXT="sid"/>
-        <FIELD NAME="sid" TYPE="char" LENGTH="128" NOTNULL="true" SEQUENCE="false" ENUM="false" COMMENT="Session id" PREVIOUS="state" NEXT="sessdata"/>
-        <FIELD NAME="sessdata" TYPE="text" LENGTH="big" NOTNULL="false" SEQUENCE="false" ENUM="false" COMMENT="session content" PREVIOUS="sid" NEXT="timecreated"/>
-        <FIELD NAME="timecreated" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" SEQUENCE="false" ENUM="false" PREVIOUS="sessdata" NEXT="timemodified"/>
-        <FIELD NAME="timemodified" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" SEQUENCE="false" ENUM="false" PREVIOUS="timecreated" NEXT="userid"/>
-        <FIELD NAME="userid" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" SEQUENCE="false" ENUM="false" PREVIOUS="timemodified" NEXT="firstip"/>
-        <FIELD NAME="firstip" TYPE="char" LENGTH="45" NOTNULL="false" SEQUENCE="false" ENUM="false" PREVIOUS="userid" NEXT="lastip"/>
+        <FIELD NAME="sid" TYPE="char" LENGTH="128" NOTNULL="true" SEQUENCE="false" ENUM="false" COMMENT="Session id" PREVIOUS="state" NEXT="userid"/>
+        <FIELD NAME="userid" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" SEQUENCE="false" ENUM="false" PREVIOUS="sid" NEXT="sessdata"/>
+        <FIELD NAME="sessdata" TYPE="text" LENGTH="big" NOTNULL="false" SEQUENCE="false" ENUM="false" COMMENT="session content" PREVIOUS="userid" NEXT="sessdatahash"/>
+        <FIELD NAME="sessdatahash" TYPE="char" LENGTH="40" NOTNULL="true" SEQUENCE="false" ENUM="false" COMMENT="verifies integrity of sessdata" PREVIOUS="sessdata" NEXT="timecreated"/>
+        <FIELD NAME="timecreated" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" SEQUENCE="false" ENUM="false" PREVIOUS="sessdatahash" NEXT="timemodified"/>
+        <FIELD NAME="timemodified" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" SEQUENCE="false" ENUM="false" PREVIOUS="timecreated" NEXT="firstip"/>
+        <FIELD NAME="firstip" TYPE="char" LENGTH="45" NOTNULL="false" SEQUENCE="false" ENUM="false" PREVIOUS="timemodified" NEXT="lastip"/>
         <FIELD NAME="lastip" TYPE="char" LENGTH="45" NOTNULL="false" SEQUENCE="false" ENUM="false" PREVIOUS="firstip"/>
       </FIELDS>
       <KEYS>
index 8dff907cd3e4c05776bc1622c90d393657667ae0..89d2e1f3d57622c9779f1d4f68693f5f2ea55984 100644 (file)
@@ -1240,61 +1240,6 @@ function xmldb_main_upgrade($oldversion) {
         upgrade_main_savepoint($result, 2009010604);
     }
 
-    if ($result && $oldversion < 2009010605) {
-
-    /// Define table sessions to be dropped
-        $table = new xmldb_table('sessions2');
-
-    /// Conditionally launch drop table for sessions
-        if ($dbman->table_exists($table)) {
-            $dbman->drop_table($table);
-        }
-
-    /// Define table sessions to be dropped
-        $table = new xmldb_table('sessions');
-
-    /// Conditionally launch drop table for sessions
-        if ($dbman->table_exists($table)) {
-            $dbman->drop_table($table);
-        }
-
-    /// Main savepoint reached
-        upgrade_main_savepoint($result, 2009010605);
-    }
-
-    if ($result && $oldversion < 2009010606) {
-
-    /// Define table sessions to be created
-        $table = new xmldb_table('sessions');
-
-    /// Adding fields to table sessions
-        $table->add_field('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null);
-        $table->add_field('state', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-        $table->add_field('sid', XMLDB_TYPE_CHAR, '128', null, XMLDB_NOTNULL, null, null, null, null);
-        $table->add_field('sessdata', XMLDB_TYPE_TEXT, 'big', null, null, null, null, null, null);
-        $table->add_field('timecreated', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
-        $table->add_field('timemodified', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
-        $table->add_field('userid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
-        $table->add_field('firstip', XMLDB_TYPE_CHAR, '45', null, null, null, null, null, null);
-        $table->add_field('lastip', XMLDB_TYPE_CHAR, '45', null, null, null, null, null, null);
-
-    /// Adding keys to table sessions
-        $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
-        $table->add_key('userid', XMLDB_KEY_FOREIGN, array('userid'), 'user', array('id'));
-
-    /// Adding indexes to table sessions
-        $table->add_index('state', XMLDB_INDEX_NOTUNIQUE, array('state'));
-        $table->add_index('sid', XMLDB_INDEX_UNIQUE, array('sid'));
-        $table->add_index('timecreated', XMLDB_INDEX_NOTUNIQUE, array('timecreated'));
-        $table->add_index('timemodified', XMLDB_INDEX_NOTUNIQUE, array('timemodified'));
-
-    /// Launch create table for sessions
-        $dbman->create_table($table);
-
-    /// Main savepoint reached
-        upgrade_main_savepoint($result, 2009010606);
-    }
-
     if ($result && $oldversion < 2009010800) {
     /// Update the notifyloginfailures setting.
         if ($CFG->notifyloginfailures == 'mainadmin') {
@@ -1378,6 +1323,56 @@ function xmldb_main_upgrade($oldversion) {
         upgrade_main_savepoint($result, 2009011303);
     }
 
+    if ($result && $oldversion < 2009011400) {
+
+    /// Define table sessions2 to be dropped
+        $table = new xmldb_table('sessions2');
+
+    /// Conditionally launch drop table for sessions
+        if ($dbman->table_exists($table)) {
+            $dbman->drop_table($table);
+        }
+
+    /// Define table sessions to be dropped
+        $table = new xmldb_table('sessions');
+
+    /// Conditionally launch drop table for sessions
+        if ($dbman->table_exists($table)) {
+            $dbman->drop_table($table);
+        }
+
+    /// Define table sessions to be created
+        $table = new xmldb_table('sessions');
+
+    /// Adding fields to table sessions
+        $table->add_field('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null);
+        $table->add_field('state', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
+        $table->add_field('sid', XMLDB_TYPE_CHAR, '128', null, XMLDB_NOTNULL, null, null, null, null);
+        $table->add_field('userid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
+        $table->add_field('sessdata', XMLDB_TYPE_TEXT, 'big', null, null, null, null, null, null);
+        $table->add_field('sessdatahash', XMLDB_TYPE_CHAR, '40', null, XMLDB_NOTNULL, null, null, null, null);
+        $table->add_field('timecreated', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
+        $table->add_field('timemodified', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
+        $table->add_field('firstip', XMLDB_TYPE_CHAR, '45', null, null, null, null, null, null);
+        $table->add_field('lastip', XMLDB_TYPE_CHAR, '45', null, null, null, null, null, null);
+
+    /// Adding keys to table sessions
+        $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
+        $table->add_key('userid', XMLDB_KEY_FOREIGN, array('userid'), 'user', array('id'));
+
+    /// Adding indexes to table sessions
+        $table->add_index('state', XMLDB_INDEX_NOTUNIQUE, array('state'));
+        $table->add_index('sid', XMLDB_INDEX_UNIQUE, array('sid'));
+        $table->add_index('timecreated', XMLDB_INDEX_NOTUNIQUE, array('timecreated'));
+        $table->add_index('timemodified', XMLDB_INDEX_NOTUNIQUE, array('timemodified'));
+
+    /// Launch create table for sessions
+        $dbman->create_table($table);
+
+    /// Main savepoint reached
+        upgrade_main_savepoint($result, 2009011400);
+    }
+
 
     return $result;
 }
index 2d20163edf99178cad8b9a29ed266aae21ed33d2..553265585734e4d22f63977538d893aa91accd87 100644 (file)
@@ -216,7 +216,7 @@ class FakeDBUnitTestCase extends UnitTestCase {
         $tables = $DB->get_tables();
 
         foreach ($tables as $table) {
-            if ($table != 'sessions2' && isset($tabledata[$table])) {
+            if ($table != 'sessions' && isset($tabledata[$table])) {
                 // $DB->delete_records_select($table, "id > ?", array($tabledata[$table]));
             }
         }
index db04f260ba1de8987c7221c23bf1b9a3764dfeed..802ab60205b5bec6f0fd2ed256bf943692cb1581 100644 (file)
@@ -6,7 +6,7 @@
 // This is compared against the values stored in the database to determine
 // whether upgrades should be performed (see lib/db/*.php)
 
-    $version = 2009011303;  // YYYYMMDD   = date of the last version bump
+    $version = 2009011400;  // YYYYMMDD   = date of the last version bump
                             //         XX = daily increments
 
     $release = '2.0 dev (Build: 20090114)';  // Human-friendly version name