fmsystem-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Fmsystem-commits] [12463] Syncromind: Merge 12436:12462 from trunk


From: Sigurd Nes
Subject: [Fmsystem-commits] [12463] Syncromind: Merge 12436:12462 from trunk
Date: Sat, 13 Dec 2014 15:22:47 +0000

Revision: 12463
          http://svn.sv.gnu.org/viewvc/?view=rev&root=fmsystem&revision=12463
Author:   sigurdne
Date:     2014-12-13 15:22:46 +0000 (Sat, 13 Dec 2014)
Log Message:
-----------
Syncromind: Merge 12436:12462 from trunk

Modified Paths:
--------------
    branches/dev-syncromind/phpgwapi/inc/adodb/adodb-active-record.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/adodb-active-recordx.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/adodb-csvlib.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/adodb-datadict.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/adodb-error.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/adodb-errorhandler.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/adodb-errorpear.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/adodb-exceptions.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/adodb-iterator.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/adodb-lib.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/adodb-memcache.lib.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/adodb-pager.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/adodb-pear.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/adodb-perf.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/adodb-php4.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/adodb-time.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/adodb-xmlschema.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/adodb-xmlschema03.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/adodb.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/contrib/toxmlrpc.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-access.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-db2.inc.php
    
branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-firebird.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-generic.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-ibase.inc.php
    
branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-informix.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-mssql.inc.php
    
branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-mssqlnative.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-mysql.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-oci8.inc.php
    
branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-postgres.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-sapdb.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-sqlite.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-sybase.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/docs/docs-active-record.htm
    branches/dev-syncromind/phpgwapi/inc/adodb/docs/docs-adodb.htm
    branches/dev-syncromind/phpgwapi/inc/adodb/docs/docs-datadict.htm
    branches/dev-syncromind/phpgwapi/inc/adodb/docs/docs-oracle.htm
    branches/dev-syncromind/phpgwapi/inc/adodb/docs/docs-perf.htm
    branches/dev-syncromind/phpgwapi/inc/adodb/docs/docs-session.htm
    branches/dev-syncromind/phpgwapi/inc/adodb/docs/docs-session.old.htm
    branches/dev-syncromind/phpgwapi/inc/adodb/docs/tips_portable_sql.htm
    branches/dev-syncromind/phpgwapi/inc/adodb/docs/tute.htm
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-access.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-ado.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-ado5.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-ado_access.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-ado_mssql.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-ads.inc.php
    
branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-borland_ibase.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-csv.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-db2.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-db2oci.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-db2ora.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-fbsql.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-firebird.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-ibase.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-informix.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-informix72.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-ldap.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-mssql.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-mssql_n.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-mssqlnative.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-mssqlpo.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-mysql.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-mysqli.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-mysqlpo.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-mysqlt.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-netezza.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-oci8.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-oci805.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-oci8po.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-odbc.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-odbc_db2.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-odbc_mssql.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-odbc_oracle.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-odbtp.inc.php
    
branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-odbtp_unicode.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-oracle.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-pdo.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-pdo_mssql.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-pdo_mysql.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-pdo_oci.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-pdo_pgsql.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-pdo_sqlite.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-postgres.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-postgres64.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-postgres7.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-postgres8.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-postgres9.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-proxy.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-sapdb.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-sqlanywhere.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-sqlite.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-sqlite3.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-sqlitepo.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-sybase.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-sybase_ase.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-vfp.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/lang/adodb-ar.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/lang/adodb-bg.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/lang/adodb-bgutf8.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/lang/adodb-ca.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/lang/adodb-cn.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/lang/adodb-cz.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/lang/adodb-da.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/lang/adodb-de.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/lang/adodb-en.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/lang/adodb-es.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/lang/adodb-esperanto.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/lang/adodb-fa.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/lang/adodb-fr.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/lang/adodb-hu.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/lang/adodb-it.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/lang/adodb-nl.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/lang/adodb-pl.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/lang/adodb-pt-br.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/lang/adodb-ro.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/lang/adodb-ru1251.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/lang/adodb-sv.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/lang/adodb-uk1251.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/lang/adodb_th.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/pear/Auth/Container/ADOdb.php
    branches/dev-syncromind/phpgwapi/inc/adodb/perf/perf-db2.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/perf/perf-informix.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/perf/perf-mssql.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/perf/perf-mssqlnative.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/perf/perf-mysql.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/perf/perf-oci8.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/perf/perf-postgres.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/pivottable.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/rsfilter.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/server.php
    branches/dev-syncromind/phpgwapi/inc/adodb/session/adodb-compress-bzip2.php
    branches/dev-syncromind/phpgwapi/inc/adodb/session/adodb-compress-gzip.php
    branches/dev-syncromind/phpgwapi/inc/adodb/session/adodb-cryptsession.php
    branches/dev-syncromind/phpgwapi/inc/adodb/session/adodb-cryptsession2.php
    branches/dev-syncromind/phpgwapi/inc/adodb/session/adodb-encrypt-mcrypt.php
    branches/dev-syncromind/phpgwapi/inc/adodb/session/adodb-encrypt-md5.php
    branches/dev-syncromind/phpgwapi/inc/adodb/session/adodb-encrypt-secret.php
    branches/dev-syncromind/phpgwapi/inc/adodb/session/adodb-encrypt-sha1.php
    branches/dev-syncromind/phpgwapi/inc/adodb/session/adodb-session-clob.php
    branches/dev-syncromind/phpgwapi/inc/adodb/session/adodb-session-clob2.php
    branches/dev-syncromind/phpgwapi/inc/adodb/session/adodb-session.php
    branches/dev-syncromind/phpgwapi/inc/adodb/session/adodb-session2.php
    branches/dev-syncromind/phpgwapi/inc/adodb/session/crypt.inc.php
    
branches/dev-syncromind/phpgwapi/inc/adodb/session/old/adodb-cryptsession.php
    
branches/dev-syncromind/phpgwapi/inc/adodb/session/old/adodb-session-clob.php
    branches/dev-syncromind/phpgwapi/inc/adodb/session/old/adodb-session.php
    branches/dev-syncromind/phpgwapi/inc/adodb/session/old/crypt.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/tests/benchmark.php
    branches/dev-syncromind/phpgwapi/inc/adodb/tests/client.php
    branches/dev-syncromind/phpgwapi/inc/adodb/tests/pdo.php
    branches/dev-syncromind/phpgwapi/inc/adodb/tests/test-active-record.php
    branches/dev-syncromind/phpgwapi/inc/adodb/tests/test-active-recs2.php
    branches/dev-syncromind/phpgwapi/inc/adodb/tests/test-active-relations.php
    branches/dev-syncromind/phpgwapi/inc/adodb/tests/test-active-relationsx.php
    branches/dev-syncromind/phpgwapi/inc/adodb/tests/test-datadict.php
    branches/dev-syncromind/phpgwapi/inc/adodb/tests/test-perf.php
    branches/dev-syncromind/phpgwapi/inc/adodb/tests/test-pgblob.php
    branches/dev-syncromind/phpgwapi/inc/adodb/tests/test-php5.php
    branches/dev-syncromind/phpgwapi/inc/adodb/tests/test-xmlschema.php
    branches/dev-syncromind/phpgwapi/inc/adodb/tests/test.php
    branches/dev-syncromind/phpgwapi/inc/adodb/tests/test2.php
    branches/dev-syncromind/phpgwapi/inc/adodb/tests/test3.php
    branches/dev-syncromind/phpgwapi/inc/adodb/tests/test4.php
    branches/dev-syncromind/phpgwapi/inc/adodb/tests/test5.php
    branches/dev-syncromind/phpgwapi/inc/adodb/tests/test_rs_array.php
    branches/dev-syncromind/phpgwapi/inc/adodb/tests/testcache.php
    branches/dev-syncromind/phpgwapi/inc/adodb/tests/testdatabases.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/tests/testgenid.php
    branches/dev-syncromind/phpgwapi/inc/adodb/tests/testmssql.php
    branches/dev-syncromind/phpgwapi/inc/adodb/tests/testoci8.php
    branches/dev-syncromind/phpgwapi/inc/adodb/tests/testoci8cursor.php
    branches/dev-syncromind/phpgwapi/inc/adodb/tests/testpaging.php
    branches/dev-syncromind/phpgwapi/inc/adodb/tests/testpear.php
    branches/dev-syncromind/phpgwapi/inc/adodb/tests/testsessions.php
    branches/dev-syncromind/phpgwapi/inc/adodb/tests/time.php
    branches/dev-syncromind/phpgwapi/inc/adodb/tests/tmssql.php
    branches/dev-syncromind/phpgwapi/inc/adodb/toexport.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/tohtml.inc.php
    branches/dev-syncromind/property/inc/class.uitts.inc.php
    branches/dev-syncromind/property/inc/custom/default/ticket_NLSH_validate.js
    branches/dev-syncromind/property/templates/base/tts.xsl

Added Paths:
-----------
    branches/dev-syncromind/phpgwapi/inc/adodb/README.md
    branches/dev-syncromind/phpgwapi/inc/adodb/composer.json
    branches/dev-syncromind/phpgwapi/inc/adodb/docs/adodb-faq.html
    branches/dev-syncromind/phpgwapi/inc/adodb/docs/adodb.gif
    branches/dev-syncromind/phpgwapi/inc/adodb/docs/adodb2.gif
    branches/dev-syncromind/phpgwapi/inc/adodb/docs/index.html
    branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-oci8quercus.inc.php
    branches/dev-syncromind/phpgwapi/inc/adodb/pear/auth_adodb_example.php

Removed Paths:
-------------
    branches/dev-syncromind/phpgwapi/inc/adodb/docs/readme.htm
    branches/dev-syncromind/phpgwapi/inc/adodb/readme.txt

Property Changed:
----------------
    branches/dev-syncromind/


Property changes on: branches/dev-syncromind
___________________________________________________________________
Modified: svn:mergeinfo
   - /trunk:12111-12211,12213-12246,12250-12363,12366-12405,12407-12435
   + 
/trunk:12111-12211,12213-12246,12250-12363,12366-12405,12407-12435,12437-12462

Copied: branches/dev-syncromind/phpgwapi/inc/adodb/README.md (from rev 12462, 
trunk/phpgwapi/inc/adodb/README.md)
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/README.md                        
        (rev 0)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/README.md        2014-12-13 
15:22:46 UTC (rev 12463)
@@ -0,0 +1,94 @@
+ADODB Library for PHP5
+======================
+
+(c) 2000-2014 John Lim (address@hidden)
+
+Released under both BSD and GNU Lesser GPL library license.
+This means you can use it in proprietary products.
+
+Home page: http://adodb.sourceforge.net/
+
+
+Introduction
+============
+
+PHP's database access functions are not standardized. This creates a
+need for a database class library to hide the differences between the
+different databases (encapsulate the differences) so we can easily
+switch databases.
+
+The library currently supports MySQL, Interbase, Sybase, PostgreSQL, Oracle,
+Microsoft SQL server,  Foxpro ODBC, Access ODBC, Informix, DB2,
+Sybase SQL Anywhere, generic ODBC and Microsoft's ADO.
+
+We hope more people will contribute drivers to support other databases.
+
+
+Installation
+============
+
+Unpack all the files into a directory accessible by your web server.
+
+To test, try modifying some of the tutorial examples.
+Make sure you customize the connection settings correctly.
+
+You can debug using:
+
+``` php
+<?php
+include('adodb/adodb.inc.php');
+
+$db = ADONewConnection($driver); # eg. 'mysql' or 'oci8'
+$db->debug = true;
+$db->Connect($server, $user, $password, $database);
+$rs = $db->Execute('select * from some_small_table');
+print "<pre>";
+print_r($rs->GetRows());
+print "</pre>";
+```
+
+
+Documentation and Examples
+==========================
+
+Refer to the `docs` directory for library documentation and examples.
+
+- Main documentation: `docs-adodb.htm`.
+  Query, update and insert records using a portable API.
+- Data dictionary docs: `docs-datadict.htm`.
+  Describes how to create database tables and indexes in a portable manner.
+- Database performance monitoring docs: `docs-perf.htm`.
+  Allows you to perform health checks, tune and monitor your database.
+- Database-backed session docs: `docs-session.htm`.
+
+There is also a tutorial `tute.htm` that contrasts ADOdb code with
+mysql code.
+
+
+Files
+=====
+
+- `adodb.inc.php` is the library's main file. You only need to include this 
file.
+- `adodb-*.inc.php` are the database specific driver code.
+- `adodb-session.php` is the PHP4 session handling code.
+- `test.php` contains a list of test commands to exercise the class library.
+- `testdatabases.inc.php` contains the list of databases to apply the tests on.
+- `Benchmark.php` is a simple benchmark to test the throughput of a SELECT
+statement for databases described in testdatabases.inc.php. The benchmark
+tables are created in test.php.
+
+
+Feature Requests and Bug Reports
+================================
+
+Please report bugs, issues and feature requests on Github:
+
+https://github.com/ADOdb/ADOdb/issues
+
+You may also find legacy issues in
+
+- the old [ADOdb forums](http://phplens.com/lens/lensforum/topics.php?id=4) on 
phplens.com
+- the [SourceForge tickets 
section](http://sourceforge.net/p/adodb/_list/tickets)
+
+However, please note that they are not actively monitored and should
+only be used as reference.

Modified: branches/dev-syncromind/phpgwapi/inc/adodb/adodb-active-record.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/adodb-active-record.inc.php      
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/adodb-active-record.inc.php      
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,7 +1,7 @@
 <?php
 /*
 
address@hidden V5.18 3 Sep 2012   (c) 2000-2012 John Lim (jlim#natsoft.com). 
All rights reserved.
address@hidden V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 
All rights reserved.
   Latest version is available at http://adodb.sourceforge.net
  
   Released under both BSD license and Lesser GPL library license. 
@@ -999,4 +999,3 @@
 
        return $arr;
 }
-?>
\ No newline at end of file

Modified: 
branches/dev-syncromind/phpgwapi/inc/adodb/adodb-active-recordx.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/adodb-active-recordx.inc.php     
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/adodb-active-recordx.inc.php     
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,7 +1,7 @@
 <?php
 /*
 
address@hidden V5.06 29 Sept 2008   (c) 2000-2012 John Lim (jlim#natsoft.com). 
All rights reserved.
address@hidden V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 
All rights reserved.
   Latest version is available at http://adodb.sourceforge.net
  
   Released under both BSD license and Lesser GPL library license. 
@@ -1418,4 +1418,3 @@
 
                return $arr;
 }
-?>

Modified: branches/dev-syncromind/phpgwapi/inc/adodb/adodb-csvlib.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/adodb-csvlib.inc.php     
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/adodb-csvlib.inc.php     
2014-12-13 15:22:46 UTC (rev 12463)
@@ -8,7 +8,7 @@
 
 /* 
 
-  V5.18 3 Sep 2012   (c) 2000-2012 John Lim (jlim#natsoft.com). All rights 
reserved.
+  V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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. See License.txt. 
@@ -315,4 +315,3 @@
        
                return $ok;
        }
-?>
\ No newline at end of file

Modified: branches/dev-syncromind/phpgwapi/inc/adodb/adodb-datadict.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/adodb-datadict.inc.php   
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/adodb-datadict.inc.php   
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,7 +1,7 @@
 <?php
 
 /**
-  V5.18 3 Sep 2012   (c) 2000-2012 John Lim (jlim#natsoft.com). All rights 
reserved.
+  V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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.
@@ -1029,4 +1029,3 @@
                return $sql;
        }
 } // class
-?>
\ No newline at end of file

Modified: branches/dev-syncromind/phpgwapi/inc/adodb/adodb-error.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/adodb-error.inc.php      
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/adodb-error.inc.php      
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,6 +1,6 @@
 <?php
 /** 
- * @version V5.18 3 Sep 2012  (c) 2000-2012 John Lim (jlim#natsoft.com). All 
rights reserved.
+ * @version V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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. 
@@ -96,21 +96,21 @@
        if (is_numeric($errormsg)) return (integer) $errormsg;
        // Postgres has no lock-wait timeout.  The best we could do would be to 
set a statement timeout.
     static $error_regexps = array(
-            '/(Table does not exist\.|Relation [\"\'].*[\"\'] does not 
exist|sequence does not exist|class ".+" not found)$/i' => DB_ERROR_NOSUCHTABLE,
-            '/Relation [\"\'].*[\"\'] already exists|Cannot insert a duplicate 
key into (a )?unique index.*|duplicate key.*violates unique constraint/i'     
=> DB_ERROR_ALREADY_EXISTS,
-            '/database ".+" does not exist$/i'       => DB_ERROR_NOSUCHDB,
-            '/(divide|division) by zero$/i'          => DB_ERROR_DIVZERO,
-            '/pg_atoi: error in .*: can\'t parse /i' => 
DB_ERROR_INVALID_NUMBER,
-            '/ttribute [\"\'].*[\"\'] not found|Relation [\"\'].*[\"\'] does 
not have attribute [\"\'].*[\"\']/i' => DB_ERROR_NOSUCHFIELD,
-            '/(parser: parse|syntax) error at or near \"/i'   => 
DB_ERROR_SYNTAX,
-            '/referential integrity violation/i'     => DB_ERROR_CONSTRAINT,
-            '/deadlock detected$/i'                  => DB_ERROR_DEADLOCK,
-            '/canceling statement due to statement timeout$/i' => 
DB_ERROR_STATEMENT_TIMEOUT,
-            '/could not serialize access due to/i'   => 
DB_ERROR_SERIALIZATION_FAILURE
+                       '(Table does not exist\.|Relation [\"\'].*[\"\'] does 
not exist|sequence does not exist|class ".+" not found)$' => 
DB_ERROR_NOSUCHTABLE,
+                       'Relation [\"\'].*[\"\'] already exists|Cannot insert a 
duplicate key into (a )?unique index.*|duplicate key.*violates unique 
constraint'     => DB_ERROR_ALREADY_EXISTS,
+                       'database ".+" does not exist$'       => 
DB_ERROR_NOSUCHDB,
+                       '(divide|division) by zero$'          => 
DB_ERROR_DIVZERO,
+                       'pg_atoi: error in .*: can\'t parse ' => 
DB_ERROR_INVALID_NUMBER,
+                       'ttribute [\"\'].*[\"\'] not found|Relation 
[\"\'].*[\"\'] does not have attribute [\"\'].*[\"\']' => DB_ERROR_NOSUCHFIELD,
+                       '(parser: parse|syntax) error at or near \"'   => 
DB_ERROR_SYNTAX,
+                       'referential integrity violation'     => 
DB_ERROR_CONSTRAINT,
+                       'deadlock detected$'                  => 
DB_ERROR_DEADLOCK,
+                       'canceling statement due to statement timeout$' => 
DB_ERROR_STATEMENT_TIMEOUT,
+                       'could not serialize access due to'   => 
DB_ERROR_SERIALIZATION_FAILURE
         );
        reset($error_regexps);
     while (list($regexp,$code) = each($error_regexps)) {
-        if (preg_match($regexp, $errormsg)) {
+               if (preg_match("/$regexp/mi", $errormsg)) {
             return $code;
         }
     }
@@ -261,4 +261,3 @@
           
        return $MAP;
 }
-?>
\ No newline at end of file

Modified: branches/dev-syncromind/phpgwapi/inc/adodb/adodb-errorhandler.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/adodb-errorhandler.inc.php       
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/adodb-errorhandler.inc.php       
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @version V5.18 3 Sep 2012   (c) 2000-2012 John Lim (jlim#natsoft.com). All 
rights reserved.
+ * @version V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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.
@@ -76,4 +76,3 @@
        //print "<p>$s</p>";
        trigger_error($s,ADODB_ERROR_HANDLER_TYPE); 
 }
-?>

Modified: branches/dev-syncromind/phpgwapi/inc/adodb/adodb-errorpear.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/adodb-errorpear.inc.php  
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/adodb-errorpear.inc.php  
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,6 +1,6 @@
 <?php
 /** 
- * @version V5.18 3 Sep 2012  (c) 2000-2012 John Lim (jlim#natsoft.com). All 
rights reserved.
+ * @version V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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. 
@@ -84,5 +84,3 @@
 
        return $ADODB_Last_PEAR_Error;
 }
-               
-?>
\ No newline at end of file

Modified: branches/dev-syncromind/phpgwapi/inc/adodb/adodb-exceptions.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/adodb-exceptions.inc.php 
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/adodb-exceptions.inc.php 
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,7 +1,7 @@
 <?php
 
 /**
- * @version V5.18 3 Sep 2012   (c) 2000-2012 John Lim (jlim#natsoft.com). All 
rights reserved.
+ * @version V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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.
@@ -77,6 +77,3 @@
        else $errfn = 'ADODB_EXCEPTION';
        throw new $errfn($dbms, $fn, $errno, $errmsg, $p1, $p2, 
$thisConnection);
 }
-
-
-?>
\ No newline at end of file

Modified: branches/dev-syncromind/phpgwapi/inc/adodb/adodb-iterator.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/adodb-iterator.inc.php   
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/adodb-iterator.inc.php   
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,7 +1,7 @@
 <?php
 
 /*
-  V5.18 3 Sep 2012   (c) 2000-2012 John Lim (jlim#natsoft.com). All rights 
reserved.
+  V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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.
@@ -22,9 +22,3 @@
        
        Moved to adodb.inc.php to improve performance.
  */
- 
-
-
-
-
-?>
\ No newline at end of file

Modified: branches/dev-syncromind/phpgwapi/inc/adodb/adodb-lib.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/adodb-lib.inc.php        
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/adodb-lib.inc.php        
2014-12-13 15:22:46 UTC (rev 12463)
@@ -6,7 +6,7 @@
 $ADODB_INCLUDED_LIB = 1;
 
 /* 
-  @version V5.18 3 Sep 2012  (c) 2000-2012 John Lim (jlim#natsoft.com). All 
rights reserved.
+  @version V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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. See License.txt. 
@@ -17,10 +17,10 @@
 
 function adodb_strip_order_by($sql)
 {
-       $rez = preg_match('/(\sORDER\s+BY\s[^)]*)/is',$sql,$arr);
+       $rez = 
preg_match('/(\sORDER\s+BY\s(?:[^)](?!limit))*)(?:\sLIMIT\s+[0-9]+)?/is', $sql, 
$arr);
        if ($arr)
-               if (strpos($arr[0],'(') !== false) {
-                       $at = strpos($sql,$arr[0]);
+               if (strpos($arr[1], '(') !== false) {
+                       $at = strpos($sql, $arr[1]);
                        $cntin = 0;
                        for ($i=$at, $max=strlen($sql); $i < $max; $i++) {
                                $ch = $sql[$i];
@@ -34,8 +34,9 @@
                                }
                        }
                        $sql = substr($sql,0,$at).substr($sql,$i);
-               } else
-                       $sql = str_replace($arr[0], '', $sql); 
+               } else {
+                       $sql = str_replace($arr[1], '', $sql);
+               }
        return $sql;
  }
 
@@ -644,7 +645,7 @@
                                        }
                                        
                                        if ((strpos($upperfname,' ') !== false) 
|| ($ADODB_QUOTE_FIELDNAMES)) {
-                                               switch (ADODB_QUOTE_FIELDNAMES) 
{
+                                               switch 
($ADODB_QUOTE_FIELDNAMES) {
                                                case 'LOWER':
                                                        $fnameq = 
$zthis->nameQuote.strtolower($field->name).$zthis->nameQuote;break;
                                                case 'NATIVE':
@@ -656,8 +657,6 @@
                                        } else
                                                $fnameq = $upperfname;
                                        
-                                       
-                // is_null requires php 4.0.4
                 //********************************************************//
                 if (is_null($arrFields[$upperfname])
                                        || (empty($arrFields[$upperfname]) && 
strlen($arrFields[$upperfname]) == 0)
@@ -816,7 +815,7 @@
                if (adodb_key_exists($upperfname,$arrFields,$force)) {
                        $bad = false;
                        if ((strpos($upperfname,' ') !== false) || 
($ADODB_QUOTE_FIELDNAMES)) {
-                               switch (ADODB_QUOTE_FIELDNAMES) {
+                               switch ($ADODB_QUOTE_FIELDNAMES) {
                                case 'LOWER':
                                        $fnameq = 
$zthis->nameQuote.strtolower($field->name).$zthis->nameQuote;break;
                                case 'NATIVE':
@@ -1205,5 +1204,3 @@
        }
 }
 */
-
-?>
\ No newline at end of file

Modified: branches/dev-syncromind/phpgwapi/inc/adodb/adodb-memcache.lib.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/adodb-memcache.lib.inc.php       
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/adodb-memcache.lib.inc.php       
2014-12-13 15:22:46 UTC (rev 12463)
@@ -11,7 +11,7 @@
 
 /* 
 
-  V5.18 3 Sep 2012  (c) 2000-2012 John Lim (jlim#natsoft.com). All rights 
reserved.
+  V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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. See License.txt. 
@@ -186,5 +186,3 @@
                        return true;
                }
        }
-
-?>
\ No newline at end of file

Modified: branches/dev-syncromind/phpgwapi/inc/adodb/adodb-pager.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/adodb-pager.inc.php      
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/adodb-pager.inc.php      
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,7 +1,7 @@
 <?php
 
 /*
-       V5.18 3 Sep 2012   (c) 2000-2012 John Lim (jlim#natsoft.com). All 
rights reserved.
+       V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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. 
@@ -285,6 +285,3 @@
                        "</td></tr></table>";
        }
 }
-
-
-?>
\ No newline at end of file

Modified: branches/dev-syncromind/phpgwapi/inc/adodb/adodb-pear.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/adodb-pear.inc.php       
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/adodb-pear.inc.php       
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,6 +1,6 @@
 <?php
 /** 
- * @version V5.18 3 Sep 2012  (c) 2000-2012 John Lim (jlim#natsoft.com). All 
rights reserved.
+ * @version V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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. 
@@ -370,5 +370,3 @@
                return true;
        }
 }
-
-?>
\ No newline at end of file

Modified: branches/dev-syncromind/phpgwapi/inc/adodb/adodb-perf.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/adodb-perf.inc.php       
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/adodb-perf.inc.php       
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,6 +1,6 @@
 <?php
 /* 
-V5.18 3 Sep 2012   (c) 2000-2012 John Lim (jlim#natsoft.com). All rights 
reserved.
+V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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. See License.txt. 
@@ -1095,5 +1095,3 @@
     }
     // end hack 
 }
-
-?>
\ No newline at end of file

Modified: branches/dev-syncromind/phpgwapi/inc/adodb/adodb-php4.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/adodb-php4.inc.php       
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/adodb-php4.inc.php       
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,7 +1,7 @@
 <?php
 
 /*
-  V5.18 3 Sep 2012   (c) 2000-2012 John Lim (jlim#natsoft.com). All rights 
reserved.
+  V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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.
@@ -12,5 +12,3 @@
 
 class ADODB_BASE_RS {
 }
-
-?>
\ No newline at end of file

Modified: branches/dev-syncromind/phpgwapi/inc/adodb/adodb-time.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/adodb-time.inc.php       
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/adodb-time.inc.php       
2014-12-13 15:22:46 UTC (rev 12463)
@@ -57,7 +57,7 @@
 
 COPYRIGHT
 
-(c) 2003-2005 John Lim and released under BSD-style license except for code by 
+(c) 2003-2014 John Lim and released under BSD-style license except for code by
 jackbbs, which includes adodb_mktime, adodb_get_gmt_diff, adodb_is_leap_year
 and originally found at http://www.php.net/manual/en/function.mktime.php
 
@@ -1456,6 +1456,3 @@
        $ret = adodb_date($fmtdate, $ts, $is_gmt);
        return $ret;
 }
-
-
-?>

Modified: branches/dev-syncromind/phpgwapi/inc/adodb/adodb-xmlschema.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/adodb-xmlschema.inc.php  
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/adodb-xmlschema.inc.php  
2014-12-13 15:22:46 UTC (rev 12463)
@@ -2222,4 +2222,3 @@
                echo '</pre>';
        }
 }
-?>
\ No newline at end of file

Modified: branches/dev-syncromind/phpgwapi/inc/adodb/adodb-xmlschema03.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/adodb-xmlschema03.inc.php        
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/adodb-xmlschema03.inc.php        
2014-12-13 15:22:46 UTC (rev 12463)
@@ -2403,4 +2403,3 @@
                echo '</pre>';
        }
 }
-?>
\ No newline at end of file

Modified: branches/dev-syncromind/phpgwapi/inc/adodb/adodb.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/adodb.inc.php    2014-12-13 
15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/adodb.inc.php    2014-12-13 
15:22:46 UTC (rev 12463)
@@ -14,7 +14,7 @@
 /**
        \mainpage
        
-        @version V5.18 3 Sep 2012   (c) 2000-2012 John Lim (jlim#natsoft.com). 
All rights reserved.
+        @version V5.19  23-Apr-2014  (c) 2000-2014 John Lim 
(jlim#natsoft.com). All rights reserved.
 
        Released under both BSD license and Lesser GPL library license. You can 
choose which license
        you prefer.
@@ -32,7 +32,7 @@
          
  */
  
- if (!defined('_ADODB_LAYER')) {
+if (!defined('_ADODB_LAYER')) {
        define('_ADODB_LAYER',1);
        
        
//==============================================================================================
        
@@ -68,21 +68,20 @@
        
        $ADODB_EXTENSION = defined('ADODB_EXTENSION');
        
-       //********************************************************//
-       /*
-       Controls $ADODB_FORCE_TYPE mode. Default is ADODB_FORCE_VALUE (3).
-       Used in GetUpdateSql and GetInsertSql functions. Thx to Niko, 
nuko#mbnet.fi
+       // ********************************************************
+       // Controls $ADODB_FORCE_TYPE mode. Default is ADODB_FORCE_VALUE (3).
+       // Used in GetUpdateSql and GetInsertSql functions. Thx to Niko, 
nuko#mbnet.fi
+       //
+       // 0 = ignore empty fields. All empty fields in array are ignored.
+       // 1 = force null. All empty, php null and string 'null' fields are 
changed to sql NULL values.
+       // 2 = force empty. All empty, php null and string 'null' fields are 
changed to sql empty '' or 0 values.
+       // 3 = force value. Value is left as it is. Php null and string 'null' 
are set to sql NULL values and empty fields '' are set to empty '' sql values.
 
-               0 = ignore empty fields. All empty fields in array are ignored.
-               1 = force null. All empty, php null and string 'null' fields 
are changed to sql NULL values.
-               2 = force empty. All empty, php null and string 'null' fields 
are changed to sql empty '' or 0 values.
-               3 = force value. Value is left as it is. Php null and string 
'null' are set to sql NULL values and empty fields '' are set to empty '' sql 
values.
-       */
         define('ADODB_FORCE_IGNORE',0);
         define('ADODB_FORCE_NULL',1);
         define('ADODB_FORCE_EMPTY',2);
         define('ADODB_FORCE_VALUE',3);
-    //********************************************************//
+       // ********************************************************
 
 
        if (!$ADODB_EXTENSION || ADODB_EXTENSION < 4.0) {
@@ -104,6 +103,9 @@
                1 = assoc uppercase field names. $rs->fields['ORDERID']
                2 = use native-case field names. $rs->fields['OrderID']
        */
+               define('ADODB_ASSOC_CASE_LOWER', 0);
+               define('ADODB_ASSOC_CASE_UPPER', 1);
+               define('ADODB_ASSOC_CASE_NATIVE', 2);
        
                define('ADODB_FETCH_DEFAULT',0);
                define('ADODB_FETCH_NUM',1);
@@ -177,7 +179,7 @@
                /**
                 * ADODB version as a string.
                 */
-               $ADODB_vers = 'V5.18 3 Sep 2012  (c) 2000-2012 John Lim 
(jlim#natsoft.com). All rights reserved. Released BSD & LGPL.';
+               $ADODB_vers = 'V5.19  23-Apr-2014  (c) 2000-2014 John Lim 
(jlim#natsoft.com). All rights reserved. Released BSD & LGPL.';
        
                /**
                 * Determines whether recordset->RecordCount() is used. 
@@ -356,7 +358,7 @@
        /**
         * Connection object. For connecting to databases, and executing 
queries.
         */ 
-       class ADOConnection {
+       abstract class ADOConnection {
        //
        // PUBLIC VARS 
        //
@@ -455,20 +457,11 @@
        var $_transmode = ''; // transaction mode
        
 
-       
-       /**
-        * Constructor
-        */
-       function ADOConnection()                        
-       {
-               die('Virtual Class -- cannot instantiate');
-       }
-       
        static function Version()
        {
        global $ADODB_vers;
        
-               $ok = preg_match( '/^[Vv]([0-9\.]+)/', $ADODB_vers, $matches );
+               $ok = preg_match( '/^[Vv]?([0-9]\.[0-9]+(dev|[a-z]))?/', 
$ADODB_vers, $matches );
                if (!$ok) return (float) substr($ADODB_vers,1);
                else return $matches[1];
        }
@@ -818,14 +811,18 @@
                return $this->Close();
        }
        
-       /*
-                Returns placeholder for parameter, eg.
-                $DB->Param('a')
-                
-                will return ':a' for Oracle, and '?' for most other 
databases...
-                
-                For databases that require positioned params, eg $1, $2, $3 
for postgresql,
-                       pass in Param(false) before setting the first parameter.
+       /**
+        * Returns a placeholder for query parameters
+        * e.g. $DB->Param('a') will return
+        * - '?' for most databases
+        * - ':a' for Oracle
+        * - '$1', '$2', etc. for PostgreSQL
+        * @param string $name parameter's name, false to force a reset of the
+        *                     number to 1 (for databases that require 
positioned
+        *                     params such as PostgreSQL; note that ADOdb will
+        *                     automatically reset this when executing a query )
+        * @param string $type (unused)
+        * @return string query parameter placeholder
        */
        function Param($name,$type='C')
        {
@@ -980,7 +977,7 @@
                        $ret = $fn($this,$sql,$inputarr);
                        if (isset($ret)) return $ret;
                }
-               if ($inputarr) {
+               if ($inputarr !== false) {
                        if (!is_array($inputarr)) $inputarr = array($inputarr);
                        
                        $element0 = reset($inputarr);
@@ -1063,9 +1060,9 @@
                        $this->_queryID = @$this->_query($sql,$inputarr);
                }
                
-               /************************
+               // ************************
                // OK, query executed
-               *************************/
+               // ************************
 
                if ($this->_queryID === false) { // error handling if query 
fails
                        if ($this->debug == 99) adodb_backtrace(true,5);        
@@ -1952,14 +1949,14 @@
        {
                global $ADODB_INCLUDED_LIB;
 
-        //********************************************************//
-        //This is here to maintain compatibility
-        //with older adodb versions. Sets force type to force nulls if 
$forcenulls is set.
+               // ********************************************************
+               // This is here to maintain compatibility
+               // with older adodb versions. Sets force type to force nulls if 
$forcenulls is set.
                if (!isset($force)) {
                                global $ADODB_FORCE_TYPE;
                            $force = $ADODB_FORCE_TYPE;
                }
-               //********************************************************//
+               // ********************************************************
 
                if (empty($ADODB_INCLUDED_LIB)) 
include(ADODB_DIR.'/adodb-lib.inc.php');
                return 
_adodb_getupdatesql($this,$rs,$arrFields,$forceUpdate,$magicq,$force);
@@ -2289,16 +2286,15 @@
       * @param schemaPattern a schema name pattern;
       *
       * @return array of procedures on current database.
-         
-                Array (
-                   [name_of_procedure] => Array
-                     (
-                     [type] => PROCEDURE or FUNCTION
-                     [catalog] => Catalog_name
-                     [schema] => Schema_name
-                     [remarks] => explanatory comment on the procedure 
-                     )
-                 )             
+        *
+        * Array(
+        *   [name_of_procedure] => Array(
+        *     [type] => PROCEDURE or FUNCTION
+        *     [catalog] => Catalog_name
+        *     [schema] => Schema_name
+        *     [remarks] => explanatory comment on the procedure
+        *   )
+        * )
       */
      function MetaProcedures($procedureNamePattern = null, $catalog  = null, 
$schemaPattern  = null)
      {
@@ -2425,17 +2421,16 @@
       * @param primary true to only show primary keys. Not actually used for 
most databases
          *
       * @return array of indexes on current table. Each element represents an 
index, and is itself an associative array.
-         
-                Array (
-                   [name_of_index] => Array
-                     (
-                 [unique] => true or false
-                 [columns] => Array
-                 (
-                       [0] => firstname
-                       [1] => lastname
-                 )
-               )               
+        *
+        * Array(
+        *   [name_of_index] => Array(
+        *     [unique] => true or false
+        *     [columns] => Array(
+        *       [0] => firstname
+        *       [1] => lastname
+        *     )
+        *   )
+        * )
       */
      function MetaIndexes($table, $primary = false, $owner = false)
      {
@@ -2723,7 +2718,7 @@
        * $nrows rows per page. It also saves two boolean values saying if the 
given page is the first 
        * and/or last one of the recordset. Added by Iv\xE1n Oliva to provide 
recordset pagination.
        *
-       * See readme.htm#ex8 for an example of usage.
+       * See docs-adodb.htm#ex8 for an example of usage.
        *
        * @param sql
        * @param nrows          is the number of rows per page to get
@@ -3161,7 +3156,7 @@
                        $false = false;
                        return $false;
                }
-               $numIndex = isset($this->fields[0]) && isset($this->fields[1]);
+               $numIndex = is_array($this->fields) && array_key_exists(0, 
$this->fields);
                $results = array();
                
                if (!$first2cols && ($cols > 2 || $force_array)) {
@@ -3483,13 +3478,31 @@
                return $this->fields[$colname];
        }
        
-       function GetAssocKeys($upper=true)
+       /**
+        * Builds the bind array associating keys to recordset fields
+        *
+        * @param int $upper Case for the array keys, defaults to uppercase
+        *                   (see ADODB_ASSOC_CASE_xxx constants)
+        */
+       function GetAssocKeys($upper=ADODB_ASSOC_CASE_UPPER)
        {
                $this->bind = array();
                for ($i=0; $i < $this->_numOfFields; $i++) {
                        $o = $this->FetchField($i);
-                       if ($upper === 2) $this->bind[$o->name] = $i;
-                       else $this->bind[($upper) ? strtoupper($o->name) : 
strtolower($o->name)] = $i;
+                       switch($upper) {
+                               case ADODB_ASSOC_CASE_LOWER:
+                                       $key = strtolower($o->name);
+                                       break;
+                               case ADODB_ASSOC_CASE_UPPER:
+                                       $key = strtoupper($o->name);
+                                       break;
+                               case ADODB_ASSOC_CASE_NATIVE:
+                               default:
+                                       $key = $o->name;
+                                       break;
+                       }
+                       $val = $this->fetchMode == ADODB_FETCH_ASSOC ? $o->name 
: $i;
+                       $this->bind[$key] = $val;
                }
        }
        
@@ -3497,24 +3510,24 @@
    * Use associative array to get fields array for databases that do not 
support
    * associative arrays. Submitted by Paolo S. Asioli paolo.asioli#libero.it
    *
-   * If you don't want uppercase cols, set $ADODB_FETCH_MODE = 
ADODB_FETCH_ASSOC
-   * before you execute your SQL statement, and access $rs->fields['col'] 
directly.
-   *
-   * $upper  0 = lowercase, 1 = uppercase, 2 = whatever is returned by 
FetchField
+        * @param int $upper Case for the array keys, defaults to uppercase
+        *                   (see ADODB_ASSOC_CASE_xxx constants)
    */
-       function GetRowAssoc($upper=1) 
+       function GetRowAssoc($upper=ADODB_ASSOC_CASE_UPPER)
        {
                $record = array();
                if (!$this->bind) {
                        $this->GetAssocKeys($upper);
                }
                foreach($this->bind as $k => $v) {
-                       if( isset( $this->fields[$v] ) ) {
+                       if( array_key_exists( $v, $this->fields ) ) {
                                $record[$k] = $this->fields[$v];
-                       } else if (isset($this->fields[$k])) {
+                       } elseif( array_key_exists( $k, $this->fields ) ) {
                                $record[$k] = $this->fields[$k];
-                       } else
-                               $record[$k] = $this->fields[$v];
+                       } else {
+                               # This should not happen... trigger error ?
+                               $record[$k] = null;
+                       }
                }
                return $record;
        }
@@ -4166,11 +4179,17 @@
                                if (PHP_VERSION >= 5) $db = 'ado5';
                                $class = 'ado'; 
                                break;
+
                        case 'ifx':
-                       case 'maxsql': $class = $db = 'mysqlt'; break;
+                       case 'maxsql':
+                               $class = $db = 'mysqlt';
+                               break;
+
+                       case 'pgsql':
                        case 'postgres':
-                       case 'postgres8':
-                       case 'pgsql': $class = $db = 'postgres7'; break;
+                               $class = $db = 'postgres8';
+                               break;
+
                        default:
                                $class = $db; break;
                }
@@ -4220,7 +4239,8 @@
                        
                         if ((strpos($origdsn, 'sqlite')) !== FALSE && 
stripos($origdsn, '%2F') === FALSE) {
              // special handling for SQLite, it only might have the path to 
the database file.
-             // If you try to connect to a SQLite database using a dsn like 
'sqlite:///path/to/database', the 'parse_url' php function
+                               // If you try to connect to a SQLite database 
using a dsn
+                               // like 'sqlite:///path/to/database', the 
'parse_url' php function
              // will throw you an exception with a message such as "unable to 
parse url"
                 list($scheme, $path) = explode('://', $origdsn);
                 $dsna['scheme'] = $scheme;
@@ -4478,4 +4498,3 @@
 
 
 }
-?>

Copied: branches/dev-syncromind/phpgwapi/inc/adodb/composer.json (from rev 
12462, trunk/phpgwapi/inc/adodb/composer.json)
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/composer.json                    
        (rev 0)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/composer.json    2014-12-13 
15:22:46 UTC (rev 12463)
@@ -0,0 +1,33 @@
+{
+       "name" : "adodb/adodb-php",
+       "description" : "ADOdb is a PHP database abstraction layer library",
+       "license" : [ "LGPL-2.1", " BSD-2-Clause" ],
+       "authors" : [
+               {
+                       "name": "John Lim",
+                       "email" : "address@hidden",
+                       "role": "Author"
+               },
+               {
+                       "name": "Damien Regad",
+                       "role": "Current maintainer"
+               }
+       ],
+
+       "keywords" : [ "database" ],
+
+       "homepage": "http://adodb.sourceforge.net/";,
+       "support" : {
+               "issues" : "https://github.com/ADOdb/ADOdb/issues";,
+               "source" : "https://github.com/ADOdb/ADOdb";
+       },
+
+       "require" : {
+               "php" : ">=5.3.2"
+       },
+
+       "autoload" : {
+               "files" : ["adodb.inc.php"]
+       }
+
+}

Modified: branches/dev-syncromind/phpgwapi/inc/adodb/contrib/toxmlrpc.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/contrib/toxmlrpc.inc.php 
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/contrib/toxmlrpc.inc.php 
2014-12-13 15:22:46 UTC (rev 12463)
@@ -179,5 +179,3 @@
         return $rs;
 
     }
-
-?>
\ No newline at end of file

Modified: 
branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-access.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-access.inc.php 
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-access.inc.php 
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,7 +1,7 @@
 <?php
 
 /**
-  V5.18 3 Sep 2012  (c) 2000-2012 John Lim (jlim#natsoft.com). All rights 
reserved.
+  V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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.
@@ -91,6 +91,3 @@
        }
        
 }
-
-
-?>
\ No newline at end of file

Modified: 
branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-db2.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-db2.inc.php    
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-db2.inc.php    
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,7 +1,7 @@
 <?php
 
 /**
-  V5.18 3 Sep 2012  (c) 2000-2012 John Lim (jlim#natsoft.com). All rights 
reserved.
+  V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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.
@@ -139,6 +139,3 @@
        }
        
 }
-
-
-?>
\ No newline at end of file

Modified: 
branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-firebird.inc.php
===================================================================
--- 
branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-firebird.inc.php   
    2014-12-13 15:05:19 UTC (rev 12462)
+++ 
branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-firebird.inc.php   
    2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,7 +1,7 @@
 <?php
 
 /**
-  V5.18 3 Sep 2012  (c) 2000-2012 John Lim (jlim#natsoft.com). All rights 
reserved.
+  V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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.
@@ -147,6 +147,3 @@
        }
 
 }
-
-
-?>
\ No newline at end of file

Modified: 
branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-generic.inc.php
===================================================================
--- 
branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-generic.inc.php    
    2014-12-13 15:05:19 UTC (rev 12462)
+++ 
branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-generic.inc.php    
    2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,7 +1,7 @@
 <?php
 
 /**
-  V5.18 3 Sep 2012  (c) 2000-2012 John Lim (jlim#natsoft.com). All rights 
reserved.
+  V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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.
@@ -123,4 +123,3 @@
                }
        }
 */
-?>
\ No newline at end of file

Modified: 
branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-ibase.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-ibase.inc.php  
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-ibase.inc.php  
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,7 +1,7 @@
 <?php
 
 /**
-  V5.18 3 Sep 2012  (c) 2000-2012 John Lim (jlim#natsoft.com). All rights 
reserved.
+  V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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.
@@ -63,6 +63,3 @@
        }
        
 }
-
-
-?>
\ No newline at end of file

Modified: 
branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-informix.inc.php
===================================================================
--- 
branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-informix.inc.php   
    2014-12-13 15:05:19 UTC (rev 12462)
+++ 
branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-informix.inc.php   
    2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,7 +1,7 @@
 <?php
 
 /**
-  V5.18 3 Sep 2012  (c) 2000-2012 John Lim (jlim#natsoft.com). All rights 
reserved.
+  V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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.
@@ -77,5 +77,3 @@
        }
        
 }
-
-?>
\ No newline at end of file

Modified: 
branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-mssql.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-mssql.inc.php  
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-mssql.inc.php  
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,7 +1,7 @@
 <?php
 
 /**
-  V5.18 3 Sep 2012  (c) 2000-2012 John Lim (jlim#natsoft.com). All rights 
reserved.
+  V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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.
@@ -281,4 +281,3 @@
 
        }
 }
-?>
\ No newline at end of file

Modified: 
branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-mssqlnative.inc.php
===================================================================
--- 
branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-mssqlnative.inc.php
    2014-12-13 15:05:19 UTC (rev 12462)
+++ 
branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-mssqlnative.inc.php
    2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,7 +1,7 @@
 <?php
 
 /**
-  V5.18 3 Sep 2012  (c) 2000-2012 John Lim (jlim#natsoft.com). All rights 
reserved.
+  V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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.
@@ -43,10 +43,9 @@
 
 class ADODB2_mssqlnative extends ADODB_DataDict {
        var $databaseType = 'mssqlnative';
-       var $dropIndex = 'DROP INDEX %2$s.%1$s';
+       var $dropIndex = 'DROP INDEX %1$s ON %2$s';
        var $renameTable = "EXEC sp_rename '%s','%s'";
        var $renameColumn = "EXEC sp_rename '%s.%s','%s'";
-
        var $typeX = 'TEXT';  ## Alternatively, set it to VARCHAR(4000)
        var $typeXL = 'TEXT';
        
@@ -60,24 +59,47 @@
                        $len = $fieldobj->max_length;
                }
                
-               $len = -1; // mysql max_length is not accurate
-               switch (strtoupper($t)) {
-               case 'R':
-               case 'INT': 
-               case 'INTEGER': return  'I';
-               case 'BIT':
-               case 'TINYINT': return  'I1';
-               case 'SMALLINT': return 'I2';
-               case 'BIGINT':  return  'I8';
-               
-               case 'REAL':
-               case 'FLOAT': return 'F';
-               default: return parent::MetaType($t,$len,$fieldobj);
-               }
+               $_typeConversion = array(
+                       -155 => 'D',
+                         93 => 'D',
+                       -154 => 'D',
+                         -2 => 'D',
+                         91 => 'D',
+
+                         12 => 'C',
+                          1 => 'C',
+                         -9 => 'C',
+                         -8 => 'C',
+
+                         -7 => 'L',
+                         -6 => 'I2',
+                         -5 => 'I8',
+                        -11 => 'I',
+                          4 => 'I',
+                          5 => 'I4',
+
+                         -1 => 'X',
+                        -10 => 'X',
+
+                          2 => 'N',
+                          3 => 'N',
+                          6 => 'N',
+                          7 => 'N',
+
+                       -152 => 'X',
+                       -151 => 'X',
+                         -4 => 'X',
+                         -3 => 'X'
+                       );
+
+               return $_typeConversion($t);
+
        }
        
        function ActualType($meta)
        {
+               $DATE_TYPE = 'DATETIME';
+
                switch(strtoupper($meta)) {
 
                case 'C': return 'VARCHAR';
@@ -88,8 +110,8 @@
                
                case 'B': return 'IMAGE';
                        
-               case 'D': return 'DATETIME';
-               case 'T': return 'DATETIME';
+               case 'D': return $DATE_TYPE;
+               case 'T': return 'TIME';
                case 'L': return 'BIT';
                
                case 'R':               
@@ -102,6 +124,7 @@
                case 'F': return 'REAL';
                case 'N': return 'NUMERIC';
                default:
+                       print "RETURN $meta";
                        return $meta;
                }
        }
@@ -135,15 +158,26 @@
        }
        */
        
-       function DropColumnSQL($tabname, $flds)
+       /**
+        * Drop a column, syntax is ALTER TABLE table DROP COLUMN column,column
+        *
+        * @param string   $tabname      Table Name
+        * @param string[] $flds         One, or an array of Fields To Drop
+        * @param string   $tableflds    Throwaway value to make the function 
match the parent
+        * @param string   $tableoptions Throway value to make the function 
match the parent
+        *
+        * @return string  The SQL necessary to drop the column
+        */
+       function DropColumnSQL($tabname, $flds, $tableflds='',$tableoptions='')
        {
                $tabname = $this->TableName ($tabname);
                if (!is_array($flds))
                        $flds = explode(',',$flds);
                $f = array();
-               $s = 'ALTER TABLE ' . $tabname;
+               $s = 'ALTER TABLE ' . $tabname . ' DROP COLUMN ';
                foreach($flds as $v) {
-                       $f[] = "\n$this->dropCol ".$this->NameQuote($v);
+                       //$f[] = "\n$this->dropCol ".$this->NameQuote($v);
+                       $f[] = $this->NameQuote($v);
                }
                $s .= implode(', ',$f);
                $sql[] = $s;
@@ -279,4 +313,3 @@
 
        }
 }
-?>
\ No newline at end of file

Modified: 
branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-mysql.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-mysql.inc.php  
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-mysql.inc.php  
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,7 +1,7 @@
 <?php
 
 /**
-  V5.18 3 Sep 2012  (c) 2000-2012 John Lim (jlim#natsoft.com). All rights 
reserved.
+  V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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.
@@ -179,4 +179,3 @@
                return $sql;
        }
 }
-?>
\ No newline at end of file

Modified: 
branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-oci8.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-oci8.inc.php   
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-oci8.inc.php   
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,7 +1,7 @@
 <?php
 
 /**
-  V5.18 3 Sep 2012  (c) 2000-2012 John Lim (jlim#natsoft.com). All rights 
reserved.
+  V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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.
@@ -219,7 +219,7 @@
                $seqStart = '';
                if (isset($tableoptions['SEQUENCE_START'])){$seqIncr = ' START 
WITH '.$tableoptions['SEQUENCE_START'];}
                $sql[] = "CREATE SEQUENCE $seqname $seqStart $seqIncr 
$seqCache";
-               $sql[] = "CREATE OR REPLACE TRIGGER $trigname BEFORE insert ON 
$tabname FOR EACH ROW WHEN (NEW.$this->seqField IS NULL OR NEW.$this->seqField 
= 0) BEGIN select $seqname.nextval into :new.$this->seqField from dual; END";
+               $sql[] = "CREATE OR REPLACE TRIGGER $trigname BEFORE insert ON 
$tabname FOR EACH ROW WHEN (NEW.$this->seqField IS NULL OR NEW.$this->seqField 
= 0) BEGIN select $seqname.nextval into :new.$this->seqField from dual; END;";
                
                $this->seqField = false;
                return $sql;
@@ -294,4 +294,3 @@
                return  "COMMENT ON COLUMN $table.$col IS $cmt";
        }
 }
-?>
\ No newline at end of file

Modified: 
branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-postgres.inc.php
===================================================================
--- 
branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-postgres.inc.php   
    2014-12-13 15:05:19 UTC (rev 12462)
+++ 
branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-postgres.inc.php   
    2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,7 +1,7 @@
 <?php
 
 /**
-  V5.18 3 Sep 2012  (c) 2000-2012 John Lim (jlim#natsoft.com). All rights 
reserved.
+  V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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.
@@ -199,52 +199,63 @@
                 // explicitly ask a column to be null using $flds
                else if ($set_null = preg_match('/NULL/i',$v)) {
                    // if they didn't specify not null, see if they explicitely 
asked for null
-                   $v = preg_replace('/\sNULL/i','',$v);
+                                       // Lookbehind pattern covers the case 
'fieldname NULL datatype DEFAULT NULL'
+                                       // only the first NULL should be 
removed, not the one specifying
+                                       // the default value
+                                       $v = 
preg_replace('/(?<!DEFAULT)\sNULL/i','',$v);
                }
                 
                        if (preg_match('/^([^ ]+) .*DEFAULT 
(\'[^\']+\'|\"[^\"]+\"|[^ ]+)/',$v,$matches)) {
                                $existing = $this->MetaColumns($tabname);
                                list(,$colname,$default) = $matches;
-                               if ($this->connection) $old_coltype = 
$this->connection->MetaType($existing[strtoupper($colname)]);
-                               else $old_coltype = $t;
+                                       $alter .= $colname;
+                                       if ($this->connection) {
+                                               $old_coltype = 
$this->connection->MetaType($existing[strtoupper($colname)]);
+                                       }
+                                       else {
+                                               $old_coltype = $t;
+                                       }
                                $v = preg_replace('/^' . preg_quote($colname) . 
'\s/', '', $v);
                                $t = trim(str_replace('DEFAULT 
'.$default,'',$v));
 
                                // Type change from bool to int
                                if ( $old_coltype == 'L' && $t == 'INTEGER' ) {
-                                       $sql[] = $alter . $colname . ' DROP 
DEFAULT';
-                                       $sql[] = $alter . $colname . " TYPE $t 
USING ($colname::BOOL)::INT";
-                                       $sql[] = $alter . $colname . " SET 
DEFAULT $default";
+                                               $sql[] = $alter . ' DROP 
DEFAULT';
+                                               $sql[] = $alter . " TYPE $t 
USING ($colname::BOOL)::INT";
+                                               $sql[] = $alter . " SET DEFAULT 
$default";
                                }
                                // Type change from int to bool
                                else if ( $old_coltype == 'I' && $t == 
'BOOLEAN' ) {
-                                       $sql[] = $alter . $colname . ' DROP 
DEFAULT';
-                                       $sql[] = $alter . $colname . " TYPE $t 
USING CASE WHEN $colname = 0 THEN false ELSE true END";
-                                       $sql[] = $alter . $colname . " SET 
DEFAULT " . $this->connection->qstr($default);
+                                               if( strcasecmp('NULL', 
trim($default)) != 0 ) {
+                                                       $default = 
$this->connection->qstr($default);
+                                               }
+                                               $sql[] = $alter . ' DROP 
DEFAULT';
+                                               $sql[] = $alter . " TYPE $t 
USING CASE WHEN $colname = 0 THEN false ELSE true END";
+                                               $sql[] = $alter . " SET DEFAULT 
$default";
                                }
                                // Any other column types conversion
                                else {
-                                       $sql[] = $alter . $colname . " TYPE $t";
-                                       $sql[] = $alter . $colname . " SET 
DEFAULT $default";
+                                               $sql[] = $alter . " TYPE $t";
+                                               $sql[] = $alter . " SET DEFAULT 
$default";
                                }
                         
-                        
                 } 
                 else {
                    // drop default?
                    preg_match ('/^\s*(\S+)\s+(.*)$/',$v,$matches);
                    list (,$colname,$rest) = $matches;
-                   $sql[] = $alter . $colname . ' TYPE ' . $rest;
+                                       $alter .= $colname;
+                                       $sql[] = $alter . ' TYPE ' . $rest;
                 }
        
 #               list($colname) = explode(' ',$v);
                 if ($not_null) {
                    // this does not error out if the column is already not null
-                               $sql[] = $alter . $colname . ' SET NOT NULL';
+                                       $sql[] = $alter . ' SET NOT NULL';
                 }
                 if ($set_null) {
                    // this does not error out if the column is already null
-                   $sql[] = $alter . $colname . ' DROP NOT NULL';
+                                       $sql[] = $alter . ' DROP NOT NULL';
                 }
              }
              return $sql;
@@ -469,4 +480,3 @@
                return $ftype;
        }
 }
-?>
\ No newline at end of file

Modified: 
branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-sapdb.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-sapdb.inc.php  
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-sapdb.inc.php  
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,7 +1,7 @@
 <?php
 
 /**
-  V4.50 6 July 2004  (c) 2000-2012 John Lim (jlim#natsoft.com). All rights 
reserved.
+  V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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.
@@ -118,5 +118,3 @@
                return array( 'ALTER TABLE ' . $tabname . ' DROP (' . 
implode(', ',$flds) . ')' );
        }       
 }
-
-?>
\ No newline at end of file

Modified: 
branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-sqlite.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-sqlite.inc.php 
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-sqlite.inc.php 
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,7 +1,7 @@
 <?php
 
 /**
-  V5.18 3 Sep 2012  (c) 2000-2012 John Lim (jlim#natsoft.com). All rights 
reserved.
+  V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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.
@@ -86,4 +86,3 @@
        }
        
 }
-?>

Modified: 
branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-sybase.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-sybase.inc.php 
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/datadict/datadict-sybase.inc.php 
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,7 +1,7 @@
 <?php
 
 /**
-  V5.18 3 Sep 2012  (c) 2000-2012 John Lim (jlim#natsoft.com). All rights 
reserved.
+  V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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.
@@ -226,4 +226,3 @@
                return $sql;
        }
 }
-?>
\ No newline at end of file

Copied: branches/dev-syncromind/phpgwapi/inc/adodb/docs/adodb-faq.html (from 
rev 12462, trunk/phpgwapi/inc/adodb/docs/adodb-faq.html)
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/docs/adodb-faq.html              
                (rev 0)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/docs/adodb-faq.html      
2014-12-13 15:22:46 UTC (rev 12463)
@@ -0,0 +1,108 @@
+<table width=100%><tr><td>
+<h2>ADOdb Frequently Asked Questions</h2>
+</td><td align=right><img src=adodb.gif></a></td></tr></table>
+<p>
+<a href=index.html><b>Home</b></a> &nbsp; <a 
href=index.html#download><b>Download</b></a>
+<p>
+<b>GENERAL</b>
+<ol>
+<li><b>What is ADOdb?</b><br>
+An object oriented library written in PHP that abstracts database operations 
for portability. It is modelled on Microsoft's ADO, but has many improvements 
that make it unique (eg. pivot tables, Active Record support, generating HTML 
for paging recordsets with next and previous links, cached recordsets, HTML 
menu generation, etc).
+  <p>
+<li><b>Can I use ADOdb for commercial applications for free? </b><br>
+Yes; ADOdb uses a BSD-style license so you can freely use the source code in 
any application, so long as you comply to the terms of license.txt.
+<p>
+<li><b>How can I learn ADOdb?</b><br>
+See the <a href=/index.html#docs>docs</a>. There is an extensive list of 
tutorials listed. 
+<p>
+<li><b>How can I contribute to ADOdb?</b><br>
+- You can translate documentation to another language.<br>
+- Link to this web-site. <br>
+- Port ADOdb to new databases. <br>
+- Make me very happy by buying a copy of <a 
href=http://phplens.com/>phpLens</a>.<br>
+<br>
+Code contributions are also welcome provided they enhance functionality, 
preferably work on multiple databases, and are backward compatible.
+<p>
+<li><b>Who is using ADOdb?</b><br>
+Many PHP applications and web-sites. There is partial list here: <a 
href="http://php.weblogs.com/adodb-cool-applications";>http://php.weblogs.com/adodb-cool-applications</a>
+<p>
+<li><b>Is there a mailing list or forum to discuss ADOdb?</b><br>
+There is a forum at <a 
href="http://phplens.com/lens/lensforum/topics.php?id=4";>http://phplens.com/lens/lensforum/topics.php?id=4</a>.
 There is no longer any mailing list due to spammers. 
+</ol>
+<p>
+<b>TECHNICAL</b>
+<ol>
+
+  <li><a name=t1 href=#t1>#</a> <b>Why do I get a ociplogon/ocilogon undefined 
error message?<br>
+Why do I get a mysql_pconnect/mysql_connect undefined error message?<br>
+Why do I get a ibase_timefmt undefined error message?<br>
+Why do I get a *_connect/*_pconnect undefined error message?</b><br>
+You do not have this extension compiled or included with PHP. On Windows, you 
can include it by modifying your php.ini (extension=<i>extension_name.dll</i>). 
On Unix, you will need to compile the extension - for help try <a 
href=http://www.faqts.com/knowledge_base/index.phtml/fid/51/>this 
knowledgebase</a>. Or perhaps you do not have the database client installed.
+    <p>
+<a name=t2></a>
+  <li><a name=2connection href=#2connection>#</a>
+<b>I am trying to create two connections to the same database, but the 2nd 
connection doesn't work, but reuses the first connection.</b><br>
+    <p>
+This is a "feature" of PHP. When you make a 2nd connection that only differs 
by the database name, you get back the first connection. This is normally the 
reason for the problem described.
+    <p>
+
+From <a 
href="http://php.net/manual/en/function.mysql-connect.php";>http://php.net/manual/en/function.mysql-connect.php</a>
+(this applies to other db's too):
+    <p>
+
+<i>If a second call is made to mysql_connect() with the same arguments, no new 
link will be established, but instead, the link identifier of the already 
opened link will be returned.</i>
+    <p>
+
+Possible solutions include: 
+    <ul>
+      <li> Use different userid and password for each connection. 
+      <li> Use different IP or  host-address for each connection, even when 
connecting to same server! Eg. use 'localhost' and '127.0.0.l'.
+      <li> Use NConnect( ), which always forces a new connection, if the 
database driver supports it (Oci8, MySQL,MSSQL and PostgreSQL).
+    
+      <li>Use SelectDB( ), which switches databases, if the database driver 
supports it (MySQL, MSSQL, Sybase).
+    </ul>
+    <p>
+
+
+  <li> 
+<b>Can you tell me what is wrong with this code snipplet? - it does not do 
anything...[code deleted]...</b><br>
+Try turning on debugging. Eg.
+    <pre>
+  $DB = ADONewConnection($driver);
+  $DB->debug = 1;</pre>
+   This will show all error messages and generated SQL.
+    <p>
+  <li><b>SelectLimit with Oracle oci8 is not working.<br>
+    The adodb_pager class is not working with oci8.</b><br>
+You are probably using a version of Oracle earlier than 8.1.7, or have 
compatibility set to an earlier version in init.ora. You can try using the 
<i>oci805 </i>driver instead.
+    <p>
+  <li><b>Why does mssql only retrieve the first 255 or 4096 bytes of my 
data?</b><br>
+See <a 
href="http://phplens.com/lens/lensforum/msgs.php?id=3564";>http://phplens.com/lens/lensforum/msgs.php?id=3564</a>
+    <p>
+  <li><a href=#access>#</a><a name=access></a> <b>I tried in Microsoft Access 
to insert a record but i cannot see it, or it is inserted twice. Why?</b> <br>
+The <a 
href=http://support.microsoft.com/default.aspx?scid=kb;en-us;299973>Access ODBC 
driver is not thread-safe</a>.
+<p>
+When you run Microsoft Jet in an IIS environment, it is recommended that you 
use the native Jet OLE DB Provider in place of the Microsoft Access ODBC 
driver. The Microsoft Access ODBC driver (Jet ODBC driver) can have stability 
issues due to the version of Visual Basic for Applications that is invoked 
because the version is not thread safe. 
+<p>
+An example of using the thread-safe OLE DB provider:
+<pre>
+$dsn = 'Provider=Microsoft.Jet.OLEDB.4.0;'.
+             'Data Source=C:\path\to\MyDatabase.mdb;';
+$db = NewADOConnection('ado_access');
+$db->PConnect($dsn);
+</pre>
+<p>
+There have been reports that using PConnect() is more reliable than Connect() 
with Access. 
+I have also heard of good experiences using <a 
href=http://odbtp.sourceforge.net/>ODBTP</a>; you can
+call it directly, or through the ADOdb odbtp driver.
+<p>
+  <li> <a name=perms href=#perms>#</a> <b>I cannot connect to Access/VFP/SQL 
Server from IIS. However I can connect from the desktop.</b><br>
+This is probably a Windows 2000 file permissions problem. IIS assumes a 
specific userid when serving web pages, and it is likely that userid does not 
have permission to access the  database. You need to change the IIS user to 
someone who has permission the database.
+<p>
+          
+  <li><b>Oracle problem with ADOdb?</b>
+    <p>
+If it is a very technical question, you can try this forum <a 
href="http://forums.oracle.com/forums/forum.jsp?forum=178";>http://forums.oracle.com/forums/forum.jsp?forum=178</a>
+</ol>
+<hr>
+(c) 2000-2004 John Lim. All rights reserved.

Copied: branches/dev-syncromind/phpgwapi/inc/adodb/docs/adodb.gif (from rev 
12462, trunk/phpgwapi/inc/adodb/docs/adodb.gif)
===================================================================
(Binary files differ)

Copied: branches/dev-syncromind/phpgwapi/inc/adodb/docs/adodb2.gif (from rev 
12462, trunk/phpgwapi/inc/adodb/docs/adodb2.gif)
===================================================================
(Binary files differ)

Modified: branches/dev-syncromind/phpgwapi/inc/adodb/docs/docs-active-record.htm
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/docs/docs-active-record.htm      
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/docs/docs-active-record.htm      
2014-12-13 15:22:46 UTC (rev 12463)
@@ -14,7 +14,7 @@
 <title>ADOdb Active Record</title>
 <body>
 <h1>ADOdb Active Record</h1>
-<p> (c) 2000-2010 John Lim (jlim#natsoft.com)</p>
+<p> (c) 2000-2014 John Lim (jlim#natsoft.com)</p>
 <p><font size="1">This software is dual licensed using BSD-Style and LGPL. 
This 
   means you can use it in compiled proprietary and commercial 
products.</font></p>
 <p><hr>

Modified: branches/dev-syncromind/phpgwapi/inc/adodb/docs/docs-adodb.htm
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/docs/docs-adodb.htm      
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/docs/docs-adodb.htm      
2014-12-13 15:22:46 UTC (rev 12463)
@@ -620,7 +620,7 @@
 
 <h2>ADOdb Library for PHP</h2>
 
-<p>V5.18 3 Sep 2012 (c) 2000-2012 John Lim (jlim#natsoft.com)</p>
+<p>V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com)</p>
 
 <p><span style='font-size:7.5pt'>This software is dual licensed using BSD-Style
 and LGPL. This means you can use it in compiled proprietary and commercial
@@ -4782,7 +4782,7 @@
 mysql with InnoDB and oci8 currently. For example: </p>
 
 <div style='mso-element:para-border-div;border:solid #DDDDDD 
1.0pt;mso-border-alt:
-solid #DDDDDD .75pt;padding:9.0pt 18.0pt 9.0pt 
18.0pt;background:#EEEEEE'><pre><o:p>&nbsp;</o:p></pre><pre>$db-&gt;SetTransactionMode(&quot;SERIALIZABLE&quot;);</pre><pre>$db-&gt;BeginTrans();</pre><pre>$db-&gt;Execute(...);
 
$db-&gt;Execute(...);</pre><pre>$db-&gt;CommiTrans();</pre><pre><o:p>&nbsp;</o:p></pre><pre>$db-&gt;SetTransactionMode(&quot;&quot;);
 // restore to 
default</pre><pre>$db-&gt;StartTrans();</pre><pre>$db-&gt;Execute(...); 
$db-&gt;Execute(...);</pre><pre>$db-&gt;CompleteTrans();</pre></div>
+solid #DDDDDD .75pt;padding:9.0pt 18.0pt 9.0pt 
18.0pt;background:#EEEEEE'><pre><o:p>&nbsp;</o:p></pre><pre>$db-&gt;SetTransactionMode(&quot;SERIALIZABLE&quot;);</pre><pre>$db-&gt;BeginTrans();</pre><pre>$db-&gt;Execute(...);
 
$db-&gt;Execute(...);</pre><pre>$db-&gt;CommitTrans();</pre><pre><o:p>&nbsp;</o:p></pre><pre>$db-&gt;SetTransactionMode(&quot;&quot;);
 // restore to 
default</pre><pre>$db-&gt;StartTrans();</pre><pre>$db-&gt;Execute(...); 
$db-&gt;Execute(...);</pre><pre>$db-&gt;CompleteTrans();</pre></div>
 
 <p>Supported values to pass in: </p>
 
@@ -6169,6 +6169,51 @@
 PHP</a>. </p>
 
 <h2>Change Log<a name=changes></a><a name=changelog></a></h2>
+
+<p><a name=5.19><b>5.19 - 23-Apr-2014</b>
+<p>
+<p>adodb: GetRowAssoc will return null as required. See 
http://phplens.com/lens/lensforum/msgs.php?id=19289
+<p>adodb: Fix GetRowAssoc bug introduced in 5.17, causing function to return 
data from previous fetch for NULL fields. See 
http://phplens.com/lens/lensforum/msgs.php?id=17539
+<p>adodb: GetAssoc will return a zero-based array when 2nd column is null. See 
https://sourceforge.net/p/adodb/bugs/130/
+<p>adodb: Execute no longer ignores single parameters evaluating to false. See 
https://sourceforge.net/p/adodb/patches/32/
+<p>adodb: Fix LIMIT 1 clause in subquery gets stripped off. See 
http://phplens.com/lens/lensforum/msgs.php?id=17813
+<p>adodb-lib: Fix columns quoting bug. See 
https://sourceforge.net/p/adodb/bugs/127/
+<p>Added new ADODB_ASSOC_CASE_* constants. Thx to Damien Regad.
+<p>sessions: changed lob handling to detect all variations of oci8 driver.
+<p>ads: clear fields before fetching. See 
http://phplens.com/lens/lensforum/msgs.php?id=17539
+<p>mssqlnative: fixed many FetchField compat issues. See 
http://phplens.com/lens/lensforum/msgs.php?id=18464. Also date format changed 
to remove timezone.
+<p>mssqlnative: Numerous fixes and improvements by Mark Newnham <ul>
+       <li class="MsoNormal">Driver supports SQL Server 2005, 2008 and 
2012</li>
+       <li class="MsoNormal">Bigint data types mapped to I8 instead of I</li>
+       <li class="MsoNormal">Reintroduced MetaColumns function</li>
+       <li class="MsoNormal">On SQL Server 2012, makes use of new CREATE 
SEQUENCE statement</li>
+       <li class="MsoNormal">FetchField caches metadata at initialization to 
improve performance</li>
+       <li class="MsoNormal">etc.</li>
+       </ul>
+<p>mssqlnative: Fix Insert ID on prepared statement, thanks to Mike Parks. See 
http://phplens.com/lens/lensforum/msgs.php?id=19079
+<p>mssql: timestamp format changed to 'Y-m-d\TH:i:s' (ISO 8601)
+       to make them independent from DATEFORMAT setting, as recommended on
+       <a 
href="http://technet.microsoft.com/en-us/library/ms180878%28v=sql.105%29.aspx#StringLiteralDateandTimeFormats";>Microsoft
 TechNet</a>.
+<p>mysql/mysqli: Fix ability for MetaTables to filter by table name, broken 
since 5.15. See http://phplens.com/lens/lensforum/msgs.php?id=19359
+<p>odbc: Fixed MetaTables and MetaPrimaryKeys definitions in odbc driver to 
match adoconnection class.
+<p>odbc: clear fields before fetching. See 
http://phplens.com/lens/lensforum/msgs.php?id=17539
+<p>oci8: GetRowAssoc now works in ADODB_FETCH_ASSOC fetch mode
+<p>oci8: MetaType and MetaForeignKeys argument count are now strict-standards 
compliant
+<p>oci8: Added trailing ';' on trigger creation for sequence fields, prevents 
occurence of ORA-24344
+<p>oci8quercus: new oci8 driver with support for quercus jdbc data types.
+<p>pdo: Fixed concat recursion bug in 5.3. See 
http://phplens.com/lens/lensforum/msgs.php?id=19285
+<p>pgsql: Default driver (postgres/pgsql) is now postgres8
+<p>pgsql: Fix output of BLOB (bytea) columns with PostgreSQL >= 9.0
+<p>pgsql: Fix handling of DEFAULT NULL columns in AlterColumnSQL
+<p>pgsql: Fix mapping of error message to ADOdb error codes
+<p>pgsql: Reset parameter number in Param() method when $name == false
+<p>postgres8: New class/type with correct behavior for _insertid(). See Github 
#8
+<p>postgres9: Fixed assoc problem. See 
http://phplens.com/lens/lensforum/msgs.php?id=19296
+<p>sybase: Removed redundant sybase_connect() call in _connect(). See Github #3
+<p>sybase: Allow connection on custom port. See Github #9
+<p>sybase: Fix null values returned with ASSOC fetch mode. See Github #10
+<p>Added Composer support. See Github #7
+
 <p><a name=5.18><b>5.18 3 Sep 2012</b>
 <p>datadict-postgres: Fixes bug in ALTER COL. See 
http://phplens.com/lens/lensforum/msgs.php?id=19202. Also fixed bugs in 
MetaType() checking $fieldobj properties.
 <p>GetRowAssoc did not work with null values. Bug in 5.17.
@@ -6183,6 +6228,7 @@
 make Prepare() and empty function, and we still execute the unprepared stmt.
 <p>mysql: FetchField(-1), turns it is is not possible to retrieve the 
max_length. Set to -1.
 <p>mysql-perf: Fixed "SHOW INNODB STATUS". Change to "SHOW ENGINE INNODB 
STATUS"
+
 <p><a name=5.17><b>5.17 18 May 2012</b>
 <p>Active Record: Removed trailing whitespace from adodb-active-record.inc.php.
 <p>odbc: Added support for $database parameter in odbc Connect() function. 
E.g. $DB->Connect($dsn_without_db, $user, $pwd, $database). 

Modified: branches/dev-syncromind/phpgwapi/inc/adodb/docs/docs-datadict.htm
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/docs/docs-datadict.htm   
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/docs/docs-datadict.htm   
2014-12-13 15:22:46 UTC (rev 12463)
@@ -20,7 +20,7 @@
 </head>
 <body style="background-color: rgb(255, 255, 255);">
 <h2>ADOdb Data Dictionary Library for PHP</h2>
-<p>V5.18 3 Sep 2012  (c) 2000-2010 John Lim (<a
+<p>V5.19  23-Apr-2014  (c) 2000-2014 John Lim (<a
  href="mailto:jlim#natsoft.com";>jlim#natsoft.com</a>).<br>
 AXMLS (c) 2004 ars Cognita, Inc</p>
 <p><font size="1">This software is dual licensed using BSD-Style and

Modified: branches/dev-syncromind/phpgwapi/inc/adodb/docs/docs-oracle.htm
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/docs/docs-oracle.htm     
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/docs/docs-oracle.htm     
2014-12-13 15:22:46 UTC (rev 12463)
@@ -25,7 +25,7 @@
 <table width=100%><tr><td>
 <h2>Using ADOdb with PHP and Oracle: an advanced tutorial</h2>
 </td><td><div align="right"><img src=cute_icons_for_site/adodb.gif width="88" 
height="31"></div></tr></table>
-<p><font size="1">(c)2004-2005 John Lim. All rights reserved.</font></p>
+<p><font size="1">(c) 2004-2014 John Lim. All rights reserved.</font></p>
 <h3>1. Introduction</h3>
 <p>Oracle is the most popular commercial database used with PHP. There are 
many ways of accessing Oracle databases in PHP. These include:</p>
 <ul>

Modified: branches/dev-syncromind/phpgwapi/inc/adodb/docs/docs-perf.htm
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/docs/docs-perf.htm       
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/docs/docs-perf.htm       
2014-12-13 15:22:46 UTC (rev 12463)
@@ -18,7 +18,7 @@
 </head>
 <body>
 <h3>The ADOdb Performance Monitoring Library</h3>
-<p>V5.18 3 Sep 2012  (c) 2000-2010 John Lim (jlim#natsoft.com)</p>
+<p>V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com)</p>
 <p><font size="1">This software is dual licensed using BSD-Style and
 LGPL. This means you can use it in compiled proprietary and commercial
 products.</font></p>

Modified: branches/dev-syncromind/phpgwapi/inc/adodb/docs/docs-session.htm
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/docs/docs-session.htm    
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/docs/docs-session.htm    
2014-12-13 15:22:46 UTC (rev 12463)
@@ -21,7 +21,7 @@
 <body style="background-color: rgb(255, 255, 255);">
 <h1>ADODB Session 2 Management Manual</h1>
 <p>
-V5.18 3 Sep 2012  (c) 2000-2012 John Lim (jlim#natsoft.com)
+V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com)
 </p>
 <p> <font size="1">This software is dual licensed using BSD-Style and
 LGPL. This means you can use it in compiled proprietary and commercial

Modified: branches/dev-syncromind/phpgwapi/inc/adodb/docs/docs-session.old.htm
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/docs/docs-session.old.htm        
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/docs/docs-session.old.htm        
2014-12-13 15:22:46 UTC (rev 12463)
@@ -21,7 +21,7 @@
 <body style="background-color: rgb(255, 255, 255);">
 <h3>ADODB Session Management Manual</h3>
 <p>
-V5.18 3 Sep 2012  (c) 2000-2010 John Lim (jlim#natsoft.com)
+V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com)
 </p>
 <p> <font size="1">This software is dual licensed using BSD-Style and
 LGPL. This means you can use it in compiled proprietary and commercial

Copied: branches/dev-syncromind/phpgwapi/inc/adodb/docs/index.html (from rev 
12462, trunk/phpgwapi/inc/adodb/docs/index.html)
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/docs/index.html                  
        (rev 0)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/docs/index.html  2014-12-13 
15:22:46 UTC (rev 12463)
@@ -0,0 +1,241 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <style>
+pre {
+  background-color: #eee;
+  padding: 0.75em 1.5em;
+  font-size: 12px;
+  font-family: "Lucida Console", "DejaVu Sans Mono", Courier, monospace;
+  border: 1px solid #ddd;
+}
+body {
+    background-color: #0066FF;
+}
+.style1 {
+    font-family: Arial, Helvetica, sans-serif
+}
+.style2 {
+    font-family: Arial, Helvetica, sans-serif;
+    color: #FFFFFF;
+}
+  </style>
+  <title>ADOdb Database Abstraction Library for PHP</title>
+  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+</head>
+
+<body>
+<table width="986" cellpadding=8 border="2" align="center" 
bordercolor="#999999">
+  <tbody>
+    <tr>
+      <td bgcolor="#FFFFFF">
+      <table border="0" cellpadding=2 width="100%">
+        <tbody>
+          <tr bgcolor="#000099">
+            <td bordercolor="#FFFFFF" class="style2">
+            <h2>ADOdb Database Abstraction Library for PHP</h2>
+            <font size="2">&copy; 2000-2014 John Lim
+(jlim#natsoft.com). All rights reserved. </font></td>
+            <td align="center" valign="center" bgcolor="#CCCCCC" 
class="style1"><img src="adodb.gif"></td>
+          </tr>
+        </tbody>
+      </table>
+      <p class="style1"> <font size="2">
+          <a href="#download">Download</a> &nbsp;
+          <a href="https://github.com/ADOdb/ADOdb";>Source code</a> &nbsp;
+          <a href="#docs">Documentation</a> &nbsp;
+          <a href="#support">Support</a> &nbsp;
+          <a href="docs-adodb.htm#changelog">Changelog</a>&nbsp;
+          <a href="adodb-faq.html">FAQ</a> </font></p>
+      <hr>
+      <p class="style1">ADOdb is a database abstraction library for PHP</p>
+      <p class="style1">It currently supports an amazing number of
+databases, thanks to the wonderful ADOdb community: <i>MySQL,
+PostgreSQL, Interbase, Firebird, Informix, Oracle, MS SQL, Foxpro,
+Access, ADO, Sybase, FrontBase, DB2, SAP DB, SQLite, Netezza, LDAP, </i>and<i>
+generic ODBC, ODBTP</i>. The Sybase, Informix, FrontBase and
+PostgreSQL, Netezza, LDAP, ODBTP drivers are community contributions.
+Here is the <a href="docs-adodb.htm#drivers">complete
+list of drivers</a>. </p>
+      <p class="style1"> Many popular web applications such as
+      <a 
href="http://www.andrew.cmu.edu/%7Erdanyliw/snort/snortacid.html";>ACID</a>,
+      <a href="http://community.zikula.org";>Zikula/PostNuke</a>,
+      <a href="http://phpwiki.sourceforge.net/";>phpWiki</a>,
+      <a href="http://www.mamboserver.com/";>Mambo</a>,
+      <a href="http://phpgacl.sourceforge.net/";>PHP GACL</a>,
+      <a href="http://sourceforge.net/projects/tikiwiki";>TikiWiki</a>,
+      <a href="http://www.egroupware.org/";>eGroupWare</a> and
+      <a href="http://phplens.com/lens/";>phpLens App Server</a>
+      are using ADOdb as their database abstraction layer.
+
+      Some reasons why ADOdb is popular include: </p>
+      <ul class="style1">
+        <li>Designed for <b>speed</b>. It is probably the fastest open
+source database abstraction library available for PHP. See <a
+ href="http://phplens.com/lens/adodb/";>benchmarks</a>.</li>
+        <li>Provides <b>extensive portability support</b> such as date
+and type-handling and portable schema creation. See <a
+ href="tips_portable_sql.htm">portable sql tips</a></li>
+        <li>Support many <b>enterprise features</b> such as database
+backed sessions (with session expiry notification), SQL code
+generation, pivot tables, SELECT LIMIT emulation for all databases,
+performance monitoring.</li>
+        <li><b>Easy to learn</b>, especially if you have Window's
+programming experience, as it uses many ADO conventions.</li>
+        <li><b>Extensive QA</b>, every release is unit-tested on
+Access, MySQL, PostgreSQL, MS SQL, Oracle 11g.</li>
+        <li><b>Mature</b>, continiously developed since August 2000.
+Has a <b>large community</b> of users. </li>
+        <li>Powerful <strong>Active Record </strong>support. See <a 
href="docs-active-record.htm">docs</a>. </li>
+        <li>Very <b>reasonable licensing</b> terms (BSD). This means
+that you can incorporate (and even compile) it into your software
+applications<b> royalty-free</b> without asking the author's
+permission, provided you include license.txt in your release. Also
+dual-licensed (Lesser GPL). </li>
+      </ul>
+
+
+      <h3 class="style1">PHP Code Samples</h3>
+
+      <pre>include('/path/to/adodb.inc.php');<br>$DB = 
NewADOConnection('mysql');<br>$DB-&gt;Connect($server, $user, $pwd, 
$db);<br><br><font
+ color="#006600"># M'soft style data retrieval with binds</font>
+$rs = $DB-&gt;Execute("select * from table where key=?",array($key));
+while (!$rs-&gt;EOF) {
+    print_r($rs-&gt;fields);
+    $rs-&gt;MoveNext();
+}
+
+<font color="#006600"># PEAR style data retrieval</font>
+$rs = $DB-&gt;Execute("select * from table where key=123");
+while ($array = $rs-&gt;FetchRow()) {
+    print_r($array);
+}
+
+<font color="#006600"># Alternative URI connection syntax:</font>
+$DB = 
NewADOConnection("<b>mysql://$user:address@hidden/$db?persist</b>");<br><br><font
+ color="#006600"># No need for Connect or PConnect when using URI syntax</font>
+
+$ok = $DB-&gt;Execute("update atable set aval = 0");
+if (!$ok) mylogerr($DB-&gt;ErrorMsg());
+      </pre>
+
+      <p class="style1">Other things you can try include: </p>
+      <pre><font color="#006600"># Updating tables</font>
+$ok = $DB-&gt;Execute("update table set col1=? where key=?",array($colval, 
$key));
+
+<font color="#006600"># retrieving data shortcuts</font>
+$val = $DB-&gt;GetOne("select col from table where key='John'");
+$row = $DB-&gt;GetRow("select col from table where key='John'");
+$arr = $DB-&gt;GetAll("select col from table");
+$arr = $DB-&gt;GetAssoc("select key,col from table"); # returns associative 
array $key=&gt;col
+
+<font color="#006600"># Retrieve high speed cached recordsets (cached for 3600 
secs)<br>
+# Cache directory defined in  global $ADODB_CACHE_DIR. <br>
+# CacheGetOne, CacheRow, CacheGetAll all work</font>
+$rs = $DB-&gt;CacheExecute(3600, "select orgname from users where 
user='JOHN'");
+      </pre>
+
+      <span class="style1">And there are <a href="docs-adodb.htm#coding">more
+connection examples</a> showing you how to connect to
+      <a href="docs-adodb.htm#sqlite">SQLite</a>,
+      <a href="docs-adodb.htm#oci8">Oracle</a>,
+      <a href="docs-adodb.htm#postgres">PostgreSQL</a>,
+      <a href="docs-adodb.htm#odbc_mssql">Microsoft SQL Server</a>,
+      <a href="docs-adodb.htm#access">MS Access</a>,
+      <a href="docs-adodb.htm#ldap">LDAP</a>,
+      <a href="docs-adodb.htm#ibase">Interbase/Firebird</a>,
+      etc.
+      </span>
+
+      <h3 class="style1">PHP5 Support</h3>
+      <span class="style1">ADOdb has full PHP5 support, including SPL and 
exception support. For
+example, you can do this in PHP5:
+      </span>      <pre>$rs = $DB-&gt;Execute("select * from 
table");<br>foreach ($rs as $row) {<br>    print_r($row);<br>}<br></pre>
+      <span class="style1">If you include the following 
adodb-exceptions.inc.php file, then ADOdb
+will throw exceptions when an error occurs:
+      </span>      
<pre>include("<b>/path/to/adodb-exceptions.inc.php</b>");<br>include("/path/to/adodb.inc.php");<br>$DB
 = NewADOConnection('oci8');  <br>$DB-&gt;Connect("", "scott", "tiger");<br>try 
{<br>   $DB-&gt;Execute("select badsql from badtable");<br>} catch (exception 
$e) {<br>    print_r($e);<br>}<br></pre>
+
+      <a name="download"></a>
+      <h3 class="style1">Download</h3>
+      <p class="style1">
+          <a 
href="https://sourceforge.net/projects/adodb/files/adodb-php5-only/";>Download 
from SourceForge</a><br>
+      </p>
+      <p class="style1"><i>Requirements</i>: PHP 5.0 or later.</p>
+      <p class="style1"><i>Installation</i>: Unpack files into a directory. 
Try the
+above sample code, adjusting
+the connection parameters to suit your database server, and modify the
+sql to match your tables. </p>
+      <p class="style1"><i>Debugging</i>: Set your connection's debug 
property, e.g.
+<tt>$DB-&gt;debug=true;</tt> if you are having problems. It will output lots of
+useful status and
+error messages.</p>
+
+      <a name="docs"></a>
+      <h3 class="style1">ADOdb Documentation</h3>
+      <p class="style1"><a href="docs-adodb.htm">One HTML Page</a>
+      </p>
+
+      <p class="style1">
+        <a href="docs-datadict.htm">Data Dictionary</a> for schema 
creation.<br>
+        <a href="docs-perf.htm">Performance Monitoring</a>.<br>
+        <a href="docs-session.htm">Database-backed Session Management</a>.
+      </p>
+
+      <h4 class="style1">Other Docs for PHP version</h4>
+      <p class="style1">
+        The documents in this section are maintained (or not, as the case may 
be)
+        by their respective authors and are therefore potentially out of date
+        or even obsolete.
+      </p>
+
+      <p class="style1">
+        <a href="tute.htm">MySQL Tutorial</a><br>
+        <a href="docs-oracle.htm">Advanced Oracle Tutorial</a><br>
+        <a href="tips_portable_sql.htm">Portable SQL Tips with ADOdb</a><br>
+        <a href="docs-active-record.htm">ADOdb Active Record</a>, an OOP 
encapsulation of a database record.</br>
+      </p>
+
+      <p class="style1">A couple excellent articles by icarus about ADOdb at 
MelonFire: </p>
+      <p class="style1"> &nbsp; &nbsp;
+        <a 
href="http://www.melonfire.com/community/columns/trog/article.php?id=142";>Part 
1 on Basics</a> and
+        <a 
href="http://www.melonfire.com/community/columns/trog/article.php?id=144";>Part 
2 on Advanced ADOdb</a>.
+      </p>
+
+      <h4 class="style1">Translations</h4>
+      <p class="style1">PHP documentation in other languages: </p>
+      <ul class="style1">
+        <li><a
+ href="http://phplens.com/lens/adodb/ADODB-Manual-Korean.htm";>Korean</a></li>
+        <li><a href="http://www.lacorona.com.mx/fortiz/adodb/";>Spanish 
(Castellano)</a> </li>
+ <li><a 
href=http://www.souken.co.jp/tech/php/adodb/docs-adodb-ja.htm>Japanese</a>
+      </ul>
+      <p class="style1">and tutorials in: </p>
+      <ul class="style1">
+        <li><a 
href="http://www.ifin.net.tw/adodb/adodb_tutorial.htm";>Chinese</a><br></li>
+        <li><a 
href="http://phplens.com/phpeverywhere/adodb_french";>Francais</a><br></li>
+        <li><a 
href="http://phplens.com/phpeverywhere/adodb_german";>German</a><br></li>
+        <li><a 
href="http://phplens.com/phpeverywhere/adodb_italian";>Italian</a><br></li>
+        <li><a 
href="http://phplens.com/adodb/adodb_tutorial_pl.html";>Polish</a><br></li>
+        <li><a 
href="http://www.lacorona.com.mx/fortiz/adodb/tute-es.htm";>Spanish 
(Castellano)</a></li>
+        <li><a 
href="http://www.exzilla.net/docs/adodb/adodb-mysql-tutorial.php";>Thai</a><br></li>
+      </ul>
+
+      <a name="support"></a>
+      <h3 class="style1">Support</h3>
+      <p class="style1">Bug reports, feature requests and questions should be 
filed on
+        <a href="https://github.com/ADOdb/ADOdb/issues";>Github</a>.
+      </p>
+      <p class="style1">The legacy
+        <a href="http://phplens.com/lens/lensforum/topics.php?id=4";>ADOdb 
forums</a>
+        are still available, however they are not actively monitored and should
+        only be used as reference.
+      </p>
+      <hr>
+      <span class="style1">&copy; 2000-2014 John Lim. All Rights Reserved.
+        <strong>Contact:</strong> jlim#natsoft.com <br>
+      </span></td>
+    </tr>
+  </tbody>
+</table>
+</body>
+</html>

Deleted: branches/dev-syncromind/phpgwapi/inc/adodb/docs/readme.htm
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/docs/readme.htm  2014-12-13 
15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/docs/readme.htm  2014-12-13 
15:22:46 UTC (rev 12463)
@@ -1,68 +0,0 @@
-<html>
-<head>
-<title>ADODB Manual</title>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<XSTYLE
-       body,td {font-family:Arial,Helvetica,sans-serif;font-size:11pt}
-       pre {font-size:9pt}
-       .toplink {font-size:8pt}
-       />
-</head>        
-<body bgcolor="#FFFFFF">
-
-<h3>ADOdb Library for PHP</h3>
-<p>ADOdb is a suite of database libraries that allow you to connect to 
multiple 
-       databases in a portable manner. Download from <a 
href=http://adodb.sourceforge.net/>http://adodb.sourceforge.net/</a>.
-<ul><li>The ADOdb documentation has moved to <a 
href=docs-adodb.htm>docs-adodb.htm</a> 
-       This allows you to query, update and insert records using a portable 
API.
-<p><li>The ADOdb data dictionary docs are at <a 
href=docs-datadict.htm>docs-datadict.htm</a>. 
-       This allows you to create database tables and indexes in a portable 
manner.
-<p><li>The ADOdb database performance monitoring docs are at <a 
href=docs-perf.htm>docs-perf.htm</a>. 
-       This allows you to perform health checks, tune and monitor your 
database.
-<p><li>The ADOdb database-backed session docs are at <a 
href=docs-session.htm>docs-session.htm</a>. 
-</ul>
-<p>
-<h3>Installation</h3>
-Make sure you are running PHP5 or later. For PHP 4 or earlier, you need to use 
adodb 4.9. Unpack all the files into a directory accessible by your webserver.
-<p>
-To test, try modifying some of the tutorial examples. Make sure you customize 
the connection settings correctly. You can debug using:
-<pre>
-&lt;?php
-include('adodb/adodb.inc.php');
-
-$db = <b>ADONewConnection</b>($driver); # eg. 'mysql' or 'oci8' 
-$db->debug = true;
-$db-><b>Connect</b>($server, $user, $password, $database);
-$rs = $db-><b>Execute</b>('select * from some_small_table');
-print "&lt;pre>";
-print_r($rs-><b>GetRows</b>());
-print "&lt;/pre>";
-?>
-</pre>
-<h3>How are people using ADOdb</h3>
-Here are some examples of how people are using ADOdb: 
-<ul>
-       <li> <strong>PhpLens</strong> is a commercial data grid component that 
allows 
-               both cool Web designers and serious unshaved programmers to 
develop and 
-               maintain databases on the Web easily. Developed by the author 
of ADOdb. 
-       </li>
-       <li> <strong>PHAkt</strong>: PHP Extension for DreamWeaver Ultradev 
allows 
-               you to script PHP in the popular Web page editor. Database 
handling provided 
-               by ADOdb. </li>
-       <li> <strong>Analysis Console for Intrusion Databases (ACID)</strong>: 
PHP-based 
-               analysis engine to search and process a database of security 
incidents 
-               generated by security-related software such as IDSes and 
firewalls (e.g. 
-               Snort, ipchains). By Roman Danyliw. </li>
-       <li> <strong>PostNuke</strong> is a very popular free content 
management system 
-               and weblog system. It offers full CSS support, HTML 4.01 
transitional 
-               compliance throughout, an advanced blocks system, and is fully 
multi-lingual 
-               enabled. </li>
-       <li><strong> EasyPublish CMS</strong> is another free content 
management system 
-               for managing information and integrated modules on your 
internet, intranet- 
-               and extranet-sites. From Norway. </li>
-       <li> <strong>NOLA</strong> is a full featured accounting, inventory, 
and job 
-               tracking application. It is licensed under the GPL, and 
developed by Noguska. 
-       </li>
-</ul>
-</body>
-</html>

Modified: branches/dev-syncromind/phpgwapi/inc/adodb/docs/tips_portable_sql.htm
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/docs/tips_portable_sql.htm       
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/docs/tips_portable_sql.htm       
2014-12-13 15:22:46 UTC (rev 12463)
@@ -361,7 +361,7 @@
   <a 
href="http://php.weblogs.com/sql_tutorial";>http://php.weblogs.com/sql_tutorial</a>.
 
   Also read this article on <a 
href=http://phplens.com/lens/php-book/optimizing-debugging-php.php>Optimizing 
PHP</a>.
 <p>
-<font size=1>(c) 2002-2003 John Lim.</font>
+<font size=1>(c) 2002-2014 John Lim.</font>
 
 </body>
 </html>

Modified: branches/dev-syncromind/phpgwapi/inc/adodb/docs/tute.htm
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/docs/tute.htm    2014-12-13 
15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/docs/tute.htm    2014-12-13 
15:22:46 UTC (rev 12463)
@@ -284,7 +284,7 @@
 <p><font size=2>Song and lyrics by George and Ira Gershwin, introduced by Fred 
Astaire and Ginger Rogers
 in the film "Shall We Dance?"  </font><p>
 <p>
-(c)2001-2002 John Lim.
+(c) 2001-2014 John Lim.
 
 </body>
 </html>

Modified: 
branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-access.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-access.inc.php     
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-access.inc.php     
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,6 +1,6 @@
 <?php
 /* 
-V5.18 3 Sep 2012  (c) 2000-2012 John Lim (jlim#natsoft.com). All rights 
reserved.
+V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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. See License.txt. 
@@ -84,4 +84,3 @@
        }
 }// class
 } 
-?>
\ No newline at end of file

Modified: branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-ado.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-ado.inc.php        
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-ado.inc.php        
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,6 +1,6 @@
 <?php
 /* 
-V5.18 3 Sep 2012  (c) 2000-2012 John Lim (jlim#natsoft.com). All rights 
reserved.
+V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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. 
@@ -656,5 +656,3 @@
        }
 
 }
-
-?>
\ No newline at end of file

Modified: branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-ado5.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-ado5.inc.php       
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-ado5.inc.php       
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,6 +1,6 @@
 <?php
 /* 
-V5.18 3 Sep 2012  (c) 2000-2012 John Lim (jlim#natsoft.com). All rights 
reserved.
+V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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. 
@@ -704,5 +704,3 @@
        }
 
 }
-
-?>
\ No newline at end of file

Modified: 
branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-ado_access.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-ado_access.inc.php 
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-ado_access.inc.php 
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,6 +1,6 @@
 <?php
 /* 
-V5.18 3 Sep 2012  (c) 2000-2012 John Lim (jlim#natsoft.com). All rights 
reserved.
+V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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. See License.txt. 
@@ -51,4 +51,3 @@
                return $this->ADORecordSet_ado($id,$mode);
        }
 }
-?>
\ No newline at end of file

Modified: 
branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-ado_mssql.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-ado_mssql.inc.php  
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-ado_mssql.inc.php  
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,6 +1,6 @@
 <?php
 /* 
-V5.18 3 Sep 2012  (c) 2000-2012 John Lim (jlim#natsoft.com). All rights 
reserved.
+V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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. 
@@ -151,4 +151,3 @@
                return $this->ADORecordSet_ado($id,$mode);
        }
 }
-?>
\ No newline at end of file

Modified: branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-ads.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-ads.inc.php        
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-ads.inc.php        
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,6 +1,6 @@
 <?php
 /*
-  (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved.
+  (c) 2000-2014 John Lim (jlim#natsoft.com.my). All rights reserved.
   Portions Copyright (c) 2007-2009, iAnywhere Solutions, Inc.
   All rights reserved. All unpublished rights reserved.
 
@@ -749,17 +749,7 @@
   {
     if ($this->_numOfRows != 0 && !$this->EOF) {
       $this->_currentRow++;
-
-      if ($this->_has_stupid_odbc_fetch_api_change)
-        $rez = @ads_fetch_into($this->_queryID,$this->fields);
-      else {
-        $row = 0;
-        $rez = @ads_fetch_into($this->_queryID,$row,$this->fields);
-      }
-      if ($rez) {
-        if ($this->fetchMode & ADODB_FETCH_ASSOC) {
-          $this->fields =& $this->GetRowAssoc(ADODB_ASSOC_CASE);
-        }
+      if( $this->_fetch() ) {
         return true;
       }
     }
@@ -770,7 +760,7 @@
 
   function _fetch()
   {
-
+    $this->fields = false;
     if ($this->_has_stupid_odbc_fetch_api_change)
       $rez = @ads_fetch_into($this->_queryID,$this->fields);
     else {
@@ -783,7 +773,6 @@
       }
       return true;
     }
-    $this->fields = false;
     return false;
   }
 
@@ -793,4 +782,3 @@
   }
 
 }
-?>
\ No newline at end of file

Modified: 
branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-borland_ibase.inc.php
===================================================================
--- 
branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-borland_ibase.inc.php  
    2014-12-13 15:05:19 UTC (rev 12462)
+++ 
branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-borland_ibase.inc.php  
    2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,6 +1,6 @@
 <?php
 /* 
-V5.18 3 Sep 2012  (c) 2000-2012 John Lim (jlim#natsoft.com). All rights 
reserved.
+V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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. 
@@ -89,4 +89,3 @@
                $this->ADORecordSet_ibase($id,$mode);
        }
 }
-?>
\ No newline at end of file

Modified: branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-csv.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-csv.inc.php        
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-csv.inc.php        
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,6 +1,6 @@
 <?php
 /*
-V5.18 3 Sep 2012  (c) 2000-2012 John Lim (jlim#natsoft.com). All rights 
reserved.
+V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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.
@@ -203,5 +203,3 @@
 }
 
 } // define
-       
-?>
\ No newline at end of file

Modified: branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-db2.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-db2.inc.php        
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-db2.inc.php        
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,6 +1,6 @@
 <?php
 /* 
-  V5.18 3 Sep 2012  (c) 2000-2012 (jlim#natsoft.com). All rights reserved.
+  V5.19  23-Apr-2014  (c) 2000-2012 (jlim#natsoft.com). All rights reserved.
 
   This is a version of the ADODB driver for DB2.  It uses the 'ibm_db2' PECL 
extension
   for PHP (http://pecl.php.net/package/ibm_db2), which in turn requires DB2 
V8.2.2 or
@@ -845,4 +845,3 @@
        }
 
 }
-?>
\ No newline at end of file

Modified: 
branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-db2oci.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-db2oci.inc.php     
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-db2oci.inc.php     
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,6 +1,6 @@
 <?php
 /* 
-V5.18 3 Sep 2012  (c) 2000-2012 John Lim (jlim#natsoft.com). All rights 
reserved.
+V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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. 
@@ -227,4 +227,3 @@
 }
 
 } //define
-?>
\ No newline at end of file

Modified: 
branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-db2ora.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-db2ora.inc.php     
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-db2ora.inc.php     
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,6 +1,6 @@
 <?php
 /* 
-V5.18 3 Sep 2012  (c) 2000-2012 John Lim (jlim#natsoft.com). All rights 
reserved.
+V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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. 
@@ -77,4 +77,3 @@
 }
 
 } //define
-?>
\ No newline at end of file

Modified: branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-fbsql.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-fbsql.inc.php      
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-fbsql.inc.php      
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,6 +1,6 @@
 <?php
 /*
- @version V5.18 3 Sep 2012 (c) 2000-2012 John Lim (jlim#natsoft.com). All 
rights reserved.
+ @version V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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. 
@@ -263,4 +263,3 @@
 
 } //class
 } // defined
-?>
\ No newline at end of file

Modified: 
branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-firebird.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-firebird.inc.php   
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-firebird.inc.php   
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,6 +1,6 @@
 <?php
 /* 
-V5.18 3 Sep 2012  (c) 2000-2012 John Lim (jlim#natsoft.com). All rights 
reserved.
+V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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. 
@@ -74,4 +74,3 @@
                $this->ADORecordSet_ibase($id,$mode);
        }
 }
-?>
\ No newline at end of file

Modified: branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-ibase.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-ibase.inc.php      
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-ibase.inc.php      
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,6 +1,6 @@
 <?php
 /*
-V5.18 3 Sep 2012  (c) 2000-2012 John Lim (jlim#natsoft.com). All rights 
reserved.  
+V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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.
@@ -884,4 +884,3 @@
        }
 
 }
-?>
\ No newline at end of file

Modified: 
branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-informix.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-informix.inc.php   
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-informix.inc.php   
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,6 +1,6 @@
 <?php
 /**
-* @version V5.18 3 Sep 2012 (c) 2000-2012 John Lim (jlim#natsoft.com). All 
rights reserved.
+* @version V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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.
@@ -37,4 +37,3 @@
                $this->ADORecordset_informix72($id,$mode);
        }
 }
-?>
\ No newline at end of file

Modified: 
branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-informix72.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-informix72.inc.php 
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-informix72.inc.php 
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,6 +1,6 @@
 <?php
 /*
-V5.18 3 Sep 2012  (c) 2000-2012 John Lim. All rights reserved.
+V5.19  23-Apr-2014  (c) 2000-2014 John Lim. 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.
@@ -515,6 +515,3 @@
        }
        return array($mtype,$length,$precision,$nullable);
 }
-
-
-?>
\ No newline at end of file

Modified: branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-ldap.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-ldap.inc.php       
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-ldap.inc.php       
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,6 +1,6 @@
 <?php
 /*
-  V5.18 3 Sep 2012  (c) 2000-2012 John Lim (jlim#natsoft.com). All rights 
reserved.
+  V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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.
@@ -420,4 +420,3 @@
        }
        
 }
-?>
\ No newline at end of file

Modified: branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-mssql.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-mssql.inc.php      
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-mssql.inc.php      
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,6 +1,6 @@
 <?php
 /* 
-V5.18 3 Sep 2012  (c) 2000-2012 John Lim (jlim#natsoft.com). All rights 
reserved.
+V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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. 
@@ -76,7 +76,7 @@
        var $dataProvider = "mssql";
        var $replaceQuote = "''"; // string to use to replace quotes
        var $fmtDate = "'Y-m-d'";
-       var $fmtTimeStamp = "'Y-m-d H:i:s'";
+       var $fmtTimeStamp = "'Y-m-d\TH:i:s'";
        var $hasInsertID = true;
        var $substr = "substring";
        var $length = 'len';
@@ -1170,5 +1170,3 @@
 
 http://www.databasejournal.com/scripts/article.php/1440551
 */
-
-?>
\ No newline at end of file

Modified: 
branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-mssql_n.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-mssql_n.inc.php    
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-mssql_n.inc.php    
2014-12-13 15:22:46 UTC (rev 12463)
@@ -9,7 +9,7 @@
 // ADOdb  - Database Abstraction Library for PHP                         //
 //          http://adodb.sourceforge.net/                                //
 //                                                                       //
-// Copyright (c) 2000-2012 John Lim (address@hidden)               //
+// Copyright (c) 2000-2014 John Lim (address@hidden)               //
 //          All rights reserved.                                         //
 //          Released under both BSD license and LGPL library license.    //
 //          Whenever there is any discrepancy between the two licenses,  //
@@ -168,4 +168,3 @@
                $this->ADORecordset_mssql($id,$mode);
        }
 }
-?>
\ No newline at end of file

Modified: 
branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-mssqlnative.inc.php
===================================================================
--- 
branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-mssqlnative.inc.php    
    2014-12-13 15:05:19 UTC (rev 12462)
+++ 
branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-mssqlnative.inc.php    
    2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,6 +1,6 @@
 <?php
 /* 
-V5.18 3 Sep 2012  (c) 2000-2012 John Lim (jlim#natsoft.com). All rights 
reserved.
+V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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. 
@@ -78,32 +78,12 @@
                'JUL'=>7,'AUG'=>8,'SEP'=>9,'OCT'=>10,'NOV'=>11,'DEC'=>12);
 }
 
-//---------------------------------------------------------------------------
-// Call this to autoset $ADODB_mssql_date_order at the beginning of your code,
-// just after you connect to the database. Supports mdy and dmy only.
-// Not required for PHP 4.2.0 and above.
-function AutoDetect_MSSQL_Date_Order($conn)
-{
-    global $ADODB_mssql_date_order;
-       $adate = $conn->GetOne('select getdate()');
-       if ($adate) {
-               $anum = (int) $adate;
-               if ($anum > 0) {
-                       if ($anum > 31) {
-                               //ADOConnection::outp( "MSSQL: YYYY-MM-DD date 
format not supported currently");
-                       } else
-                               $ADODB_mssql_date_order = 'dmy';
-               } else
-                       $ADODB_mssql_date_order = 'mdy';
-       }
-}
-
 class ADODB_mssqlnative extends ADOConnection {
        var $databaseType = "mssqlnative";      
        var $dataProvider = "mssqlnative";
        var $replaceQuote = "''"; // string to use to replace quotes
        var $fmtDate = "'Y-m-d'";
-       var $fmtTimeStamp = "'Y-m-d H:i:s'";
+       var $fmtTimeStamp = "'Y-m-d\TH:i:s'";
        var $hasInsertID = true;
        var $substr = "substring";
        var $length = 'len';
@@ -111,11 +91,23 @@
        var $poorAffectedRows = false;
        var $metaDatabasesSQL = "select name from sys.sysdatabases where name 
<> 'master'";
        var $metaTablesSQL="select name,case when type='U' then 'T' else 'V' 
end from sysobjects where (type='U' or type='V') and (name not in 
('sysallocations','syscolumns','syscomments','sysdepends','sysfilegroups','sysfiles','sysfiles1','sysforeignkeys','sysfulltextcatalogs','sysindexes','sysindexkeys','sysmembers','sysobjects','syspermissions','sysprotects','sysreferences','systypes','sysusers','sysalternates','sysconstraints','syssegments','REFERENTIAL_CONSTRAINTS','CHECK_CONSTRAINTS','CONSTRAINT_TABLE_USAGE','CONSTRAINT_COLUMN_USAGE','VIEWS','VIEW_TABLE_USAGE','VIEW_COLUMN_USAGE','SCHEMATA','TABLES','TABLE_CONSTRAINTS','TABLE_PRIVILEGES','COLUMNS','COLUMN_DOMAIN_USAGE','COLUMN_PRIVILEGES','DOMAINS','DOMAIN_CONSTRAINTS','KEY_COLUMN_USAGE','dtproperties'))";
-       var $metaColumnsSQL = # xtype==61 is datetime
-        "select c.name,t.name,c.length,
-           (case when c.xusertype=61 then 0 else c.xprec end),
-           (case when c.xusertype=61 then 0 else c.xscale end) 
-           from syscolumns c join systypes t on t.xusertype=c.xusertype join 
sysobjects o on o.id=c.id where o.name='%s'";
+       var $metaColumnsSQL =
+               "select c.name,
+               t.name as type,
+               c.length,
+               c.xprec as precision,
+               c.xscale as scale,
+               c.isnullable as nullable,
+               c.cdefault as default_value,
+               c.xtype,
+               t.length as type_length,
+               sc.is_identity
+               from syscolumns c
+               join systypes t on t.xusertype=c.xusertype
+               join sysobjects o on o.id=c.id
+               join sys.tables st on st.name=o.name
+               join sys.columns sc on sc.object_id = st.object_id and 
sc.name=c.name
+               where o.name='%s'";
        var $hasTop = 'top';            // support mssql SELECT TOP 10 * FROM 
TABLE
        var $hasGenID = true;
        var $sysDate = 'convert(datetime,convert(char,GetDate(),102),102)';
@@ -131,6 +123,8 @@
        var $_bindInputArray = true;
        var $_dropSeqSQL = "drop table %s";
        var $connectionInfo = array();
+       var $sequences = false;
+       var $mssql_version = '';
        
        function ADODB_mssqlnative() 
        {               
@@ -147,15 +141,40 @@
             sqlsrv_configure('warnings_return_as_errors', 0);
         }
        }
+       function ServerVersion() {
+               $data = $this->ServerInfo();
+               if (preg_match('/^09/',$data['version'])){
+                       /*
+                        * SQL Server 2005
+                        */
+                       $this->mssql_version = 9;
+               } elseif (preg_match('/^10/',$data['version'])){
+                       /*
+                        * SQL Server 2008
+                        */
+                       $this->mssql_version = 10;
+               } elseif (preg_match('/^11/',$data['version'])){
+                       /*
+                        * SQL Server 2012
+                        */
+                       $this->mssql_version = 11;
+               } else
+                       die("SQL SERVER VERSION {$data['version']} NOT 
SUPPORTED IN mssqlnative DRIVER");
+       }
 
-       function ServerInfo()
-       {
+       function ServerInfo() {
        global $ADODB_FETCH_MODE;
+               static $arr = false;
+               if (is_array($arr))
+                       return $arr;
                if ($this->fetchMode === false) {
                        $savem = $ADODB_FETCH_MODE;
                        $ADODB_FETCH_MODE = ADODB_FETCH_NUM;
+               } elseif ($this->fetchMode >=0 && $this->fetchMode <=2) {
+                       $savem = $this->fetchMode;
                } else 
                        $savem = $this->SetFetchMode(ADODB_FETCH_NUM);
+
                $arrServerInfo = sqlsrv_server_info($this->_connectionID);
                $ADODB_FETCH_MODE = $savem;
                $arr['description'] = $arrServerInfo['SQLServerName'].' 
connected to '.$arrServerInfo['CurrentDatabase'];
@@ -175,16 +194,51 @@
        // the same scope. A scope is a module -- a stored procedure, trigger, 
        // function, or batch. Thus, two statements are in the same scope if 
        // they are in the same stored procedure, function, or batch.
-               return $this->GetOne($this->identitySQL);
+               return $this->lastInsertID;
        }
 
        function _affectedrows()
        {
+               if ($this->_queryID)
         return sqlsrv_rows_affected($this->_queryID);
        }
        
+       function GenID($seq='adodbseq',$start=1) {
+               if (!$this->mssql_version)
+                       $this->ServerVersion();
+               switch($this->mssql_version){
+               case 9:
+               case 10:
+                       return $this->GenID2008();
+                       break;
+               case 11:
+                       return $this->GenID2012();
+                       break;
+               }
+       }
+
        function CreateSequence($seq='adodbseq',$start=1)
        {
+               if (!$this->mssql_vesion)
+                       $this->ServerVersion();
+
+               switch($this->mssql_version){
+               case 9:
+               case 10:
+                       return $this->CreateSequence2008();
+                       break;
+               case 11:
+                       return $this->CreateSequence2012();
+                       break;
+               }
+
+       }
+
+       /**
+        * For Server 2005,2008, duplicate a sequence with an identity table
+        */
+       function CreateSequence2008($seq='adodbseq',$start=1)
+       {
                if($this->debug) error_log("<hr>CreateSequence($seq,$start)");
         sqlsrv_begin_transaction($this->_connectionID);
                $start -= 1;
@@ -199,25 +253,68 @@
                return true;
        }
 
-       function GenID($seq='adodbseq',$start=1)
+       /**
+        * Proper Sequences Only available to Server 2012 and up
+        */
+       function CreateSequence2012($seq='adodb',$start=1){
+               if (!$this->sequences){
+                       $sql = "SELECT name FROM sys.sequences";
+                       $this->sequences = $this->GetCol($sql);
+               }
+               $ok = $this->Execute("CREATE SEQUENCE $seq START WITH $start 
INCREMENT BY 1");
+               if (!$ok)
+                       die("CANNOT CREATE SEQUENCE" . 
print_r(sqlsrv_errors(),true));
+               $this->sequences[] = $seq;
+       }
+
+       /**
+        * For Server 2005,2008, duplicate a sequence with an identity table
+        */
+       function GenID2008($seq='adodbseq',$start=1)
        {
-        if($this->debug) error_log("<hr>GenID($seq,$start)");
+               if($this->debug) error_log("<hr>CreateSequence($seq,$start)");
         sqlsrv_begin_transaction($this->_connectionID);
                $ok = $this->Execute("update $seq with (tablock,holdlock) set 
id = id + 1");
                if (!$ok) {
-                       $this->Execute("create table $seq (id int)");
+                       $start -= 1;
+                       $this->Execute("create table $seq (id int)");//was 
float(53)
                        $ok = $this->Execute("insert into $seq with 
(tablock,holdlock) values($start)");
                        if (!$ok) {
                 if($this->debug) error_log("<hr>Error: ROLLBACK");
                 sqlsrv_rollback($this->_connectionID);
                                return false;
                        }
-                       sqlsrv_commit($this->_connectionID);
-                       return $start;
                }
                $num = $this->GetOne("select id from $seq");
         sqlsrv_commit($this->_connectionID);
-        if($this->debug) error_log(" Returning: $num");
+               return true;
+       }
+       /**
+        * Only available to Server 2012 and up
+        * Cannot do this the normal adodb way by trapping an error if the
+        * sequence does not exist because sql server will auto create a
+        * sequence with the starting number of -9223372036854775808
+        */
+       function GenID2012($seq='adodbseq',$start=1)
+       {
+
+               /*
+                * First time in create an array of sequence names that we
+                * can use in later requests to see if the sequence exists
+                * the overhead is creating a list of sequences every time
+                * we need access to at least 1. If we really care about
+                * performance, we could maybe flag a 'nocheck' class variable
+                */
+               if (!$this->sequences){
+                       $sql = "SELECT name FROM sys.sequences";
+                       $this->sequences = $this->GetCol($sql);
+               }
+               if (!is_array($this->sequences)
+               || is_array($this->sequences) && 
!in_array($seq,$this->sequences)){
+                       $this->CreateSequence2012($seq='adodbseq',$start=1);
+
+               }
+               $num = $this->GetOne("SELECT NEXT VALUE FOR $seq");
                return $num;
        }
        
@@ -461,16 +558,31 @@
        function _query($sql,$inputarr=false)
        {
                $this->_errorMsg = false;
-               if (is_array($inputarr)) {
-            $rez = sqlsrv_query($this->_connectionID,$sql,$inputarr);
-               } else if (is_array($sql)) {
-                       // $inputarr is prepared in sqlsrv_prepare();
-            $rez = sqlsrv_execute($this->_connectionID,$sql[1]);
+               
+               if (is_array($sql)) $sql = $sql[1];
+               
+               $insert = false;
+               // handle native driver flaw for retrieving the last insert ID
+               if(preg_match('/^\W*(insert [^;]+);?$/i', $sql)) {
+                       $insert = true;
+                       $sql .= '; '.$this->identitySQL; // select 
scope_identity()
+               }
+               if($inputarr) {
+                       $rez = sqlsrv_query($this->_connectionID, $sql, 
$inputarr);
                } else {
                        $rez = sqlsrv_query($this->_connectionID,$sql);
                }
+
         if ($this->debug) error_log("<hr>running query: 
".var_export($sql,true)."<hr>input array: 
".var_export($inputarr,true)."<hr>result: ".var_export($rez,true));
-        if(!$rez) $rez = false;
+
+               if(!$rez) {
+                       $rez = false;
+               } else if ($insert) {
+                       // retrieve the last insert ID (where applicable)
+                       sqlsrv_next_result($rez);
+                       sqlsrv_fetch($rez);
+                       $this->lastInsertID = sqlsrv_get_field($rez, 0);
+               }
                return $rez;
        }
        
@@ -494,7 +606,7 @@
                return ADORecordSet_array_mssqlnative::UnixTimeStamp($v);
        }       
 
-       function &MetaIndexes($table,$primary=false, $owner = false)
+       function MetaIndexes($table,$primary=false, $owner = false)
        {
                $table = $this->qstr($table);
 
@@ -617,20 +729,101 @@
        }
 
        
-       function &MetaTables($ttype=false,$showSchema=false,$mask=false) 
+       function MetaTables($ttype=false,$showSchema=false,$mask=false)
        {
            if ($mask) {
                        $save = $this->metaTablesSQL;
                        $mask = $this->qstr(($mask));
                        $this->metaTablesSQL .= " AND name like $mask";
                }
-               $ret =& ADOConnection::MetaTables($ttype,$showSchema);
+               $ret = ADOConnection::MetaTables($ttype,$showSchema);
 
                if ($mask) {
                        $this->metaTablesSQL = $save;
                }
                return $ret;
        }
+       function MetaColumns($table, $upper=true, $schema=false){
+
+               # start adg
+               static $cached_columns = array();
+               if ($this->cachedSchemaFlush)
+                       $cached_columns = array();
+
+               if (array_key_exists($table,$cached_columns)){
+                       return $cached_columns[$table];
+               }
+               # end adg
+
+               if (!$this->mssql_version)
+                       $this->ServerVersion();
+
+               $this->_findschema($table,$schema);
+               if ($schema) {
+                       $dbName = $this->database;
+                       $this->SelectDB($schema);
+               }
+               global $ADODB_FETCH_MODE;
+               $save = $ADODB_FETCH_MODE;
+               $ADODB_FETCH_MODE = ADODB_FETCH_NUM;
+
+               if ($this->fetchMode !== false) $savem = 
$this->SetFetchMode(false);
+               $rs = $this->Execute(sprintf($this->metaColumnsSQL,$table));
+
+               if ($schema) {
+                       $this->SelectDB($dbName);
+               }
+
+               if (isset($savem)) $this->SetFetchMode($savem);
+               $ADODB_FETCH_MODE = $save;
+               if (!is_object($rs)) {
+                       $false = false;
+                       return $false;
+               }
+
+               $retarr = array();
+               while (!$rs->EOF){
+
+                       $fld = new ADOFieldObject();
+                       if (array_key_exists(0,$rs->fields)) {
+                               $fld->name          = $rs->fields[0];
+                               $fld->type          = $rs->fields[1];
+                               $fld->max_length    = $rs->fields[2];
+                               $fld->precision     = $rs->fields[3];
+                               $fld->scale             = $rs->fields[4];
+                               $fld->not_null      =!$rs->fields[5];
+                               $fld->has_default   = $rs->fields[6];
+                               $fld->xtype         = $rs->fields[7];
+                               $fld->type_length   = $rs->fields[8];
+                               $fld->auto_increment= $rs->fields[9];
+                       } else {
+                               $fld->name          = $rs->fields['name'];
+                               $fld->type          = $rs->fields['type'];
+                               $fld->max_length    = $rs->fields['length'];
+                               $fld->precision     = $rs->fields['precision'];
+                               $fld->scale             = $rs->fields['scale'];
+                               $fld->not_null      =!$rs->fields['nullable'];
+                               $fld->has_default   = 
$rs->fields['default_value'];
+                               $fld->xtype         = $rs->fields['xtype'];
+                               $fld->type_length   = 
$rs->fields['type_length'];
+                               $fld->auto_increment= 
$rs->fields['is_identity'];
+                       }
+
+                       if ($save == ADODB_FETCH_NUM)
+                               $retarr[] = $fld;
+                       else
+                               $retarr[strtoupper($fld->name)] = $fld;
+
+                       $rs->MoveNext();
+
+               }
+               $rs->Close();
+               # start adg
+               $cached_columns[$table] = $retarr;
+               # end adg
+               return $retarr;
+       }
+
 }
        
 
/*--------------------------------------------------------------------------------------
@@ -659,14 +852,23 @@
        function _initrs()
        {
            global $ADODB_COUNTRECS;    
-        if ($this->connection->debug) error_log("(before) ADODB_COUNTRECS: 
{$ADODB_COUNTRECS} _numOfRows: {$this->_numOfRows} _numOfFields: 
{$this->_numOfFields}");
+               # KMN # if ($this->connection->debug) error_log("(before) 
ADODB_COUNTRECS: {$ADODB_COUNTRECS} _numOfRows: {$this->_numOfRows} 
_numOfFields: {$this->_numOfFields}");
         /*$retRowsAff = sqlsrv_rows_affected($this->_queryID);//"If you need 
to determine the number of rows a query will return before retrieving the 
actual results, appending a SELECT COUNT ... query would let you get that 
information, and then a call to next_result would move you to the "real" 
results."
         error_log("rowsaff: ".serialize($retRowsAff));
                $this->_numOfRows = ($ADODB_COUNTRECS)? $retRowsAff:-1;*/
         $this->_numOfRows = -1;//not supported
         $fieldmeta = sqlsrv_field_metadata($this->_queryID);
         $this->_numOfFields = ($fieldmeta)? count($fieldmeta):-1;
-        if ($this->connection->debug) error_log("(after) _numOfRows: 
{$this->_numOfRows} _numOfFields: {$this->_numOfFields}");
+               # KMN # if ($this->connection->debug) error_log("(after) 
_numOfRows: {$this->_numOfRows} _numOfFields: {$this->_numOfFields}");
+               /*
+                * Copy the oracle method and cache the metadata at init time
+                */
+               if ($this->_numOfFields>0) {
+                       $this->_fieldobjs = array();
+                       $max = $this->_numOfFields;
+                       for ($i=0;$i<$max; $i++) $this->_fieldobjs[] = 
$this->_FetchField($i);
+               }
+
        }
        
 
@@ -700,33 +902,91 @@
        /*      Returns: an object containing field information. 
                Get column information in the Recordset object. fetchField() 
can be used in order to obtain information about
                fields in a certain query result. If the field offset isn't 
specified, the next field that wasn't yet retrieved by
-               fetchField() is retrieved.      */
+               fetchField() is retrieved.
+               Designed By jcortinap#jc.com.mx
+       */
+       function _FetchField($fieldOffset = -1)
+       {
+               $_typeConversion = array(
+                       -155 => 'datetimeoffset',
+                       -154 => 'time',
+                       -152 => 'xml',
+                       -151 => 'udt',
+                       -11 => 'uniqueidentifier',
+                       -10 => 'ntext',
+                       -9 => 'nvarchar',
+                       -8 => 'nchar',
+                       -7 => 'bit',
+                       -6 => 'tinyint',
+                       -5 => 'bigint',
+                       -4 => 'image',
+                       -3 => 'varbinary',
+                       -2 => 'timestamp',
+                       -1 => 'text',
+                       1 => 'char',
+                       2 => 'numeric',
+                       3 => 'decimal',
+                       4 => 'int',
+                       5 => 'smallint',
+                       6 => 'float',
+                       7 => 'real',
+                       12 => 'varchar',
+                       91 => 'date',
+                       93 => 'datetime'
+                       );
 
-       function FetchField($fieldOffset = -1) 
-       {
-        if ($this->connection->debug) error_log("<hr>fetchfield: $fieldOffset, 
fetch array: <pre>".print_r($this->fields,true)."</pre> backtrace: 
".adodb_backtrace(false));
-               if ($fieldOffset != -1) $this->fieldOffset = $fieldOffset;
-               /*$arrKeys = array_keys($this->fields);
-               if(array_key_exists($this->fieldOffset,$arrKeys) && 
!array_key_exists($arrKeys[$this->fieldOffset],$this->fields)) {
-                       $f = false;
-               } else {
-                       $f = new ADOFetchObj();
-                       $f->name = $arrKeys[$this->fieldOffset];
-                       if($fieldOffset == -1) $this->fieldOffset++;
+               $fa = @sqlsrv_field_metadata($this->_queryID);
+               if ($fieldOffset != -1) {
+                       $fa = $fa[$fieldOffset];
                }
-
-        if (empty($f)) {
+               $false = false;
+               if (empty($fa)) {
             $f = false;//PHP Notice: Only variable references should be 
returned by reference
-        }*/
-               $fieldMeta = @sqlsrv_field_metadata($this->_queryID);
-               $f = new ADOFieldObject();
-               $f->name = $fieldMeta[$this->fieldOffset]['Name'];
-               $f->type = $fieldMeta[$this->fieldOffset]['Type'];
-               $f->max_length = $fieldMeta[$this->fieldOffset]['Size'];
-
+               }
+               else
+               {
+                       // Convert to an object
+                       $fa = array_change_key_case($fa, CASE_LOWER);
+                       $fb = array();
+                       if ($fieldOffset != -1)
+                       {
+                               $fb = array(
+                                       'name' => $fa['name'],
+                                       'max_length' => $fa['size'],
+                                       'column_source' => $fa['name'],
+                                       'type' => $_typeConversion[$fa['type']]
+                                       );
+                       }
+                       else
+                       {
+                               foreach ($fa as $key => $value)
+                               {
+                                       $fb[] = array(
+                                               'name' => $value['name'],
+                                               'max_length' => $value['size'],
+                                               'column_source' => 
$value['name'],
+                                               'type' => 
$_typeConversion[$value['type']]
+                                               );
+                               }
+                       }
+                       $f = (object) $fb;
+               }
                return $f;
        }
        
+       /*
+        * Fetchfield copies the oracle method, it loads the field information
+        * into the _fieldobjs array once, to save multiple calls to the
+        * sqlsrv_field_metadata function
+        *
+        * @author      KM Newnham
+        * @date        02/20/2013
+        */
+       function FetchField($fieldOffset = -1)
+       {
+               return $this->_fieldobjs[$fieldOffset];
+       }
+
        function _seek($row) 
        {
                return false;//There is no support for cursors in the driver at 
this time.  All data is returned via forward-only streams.
@@ -735,16 +995,16 @@
        // speedup
        function MoveNext() 
        {
-        if ($this->connection->debug) error_log("movenext()");
-        //if ($this->connection->debug) error_log("eof (beginning): 
".$this->EOF);
+               //# KMN # if ($this->connection->debug) error_log("movenext()");
+               //# KMN # if ($this->connection->debug) error_log("eof 
(beginning): ".$this->EOF);
                if ($this->EOF) return false;
                
                $this->_currentRow++;
-        if ($this->connection->debug) error_log("_currentRow: 
".$this->_currentRow);
+               // # KMN # if ($this->connection->debug) 
error_log("_currentRow: ".$this->_currentRow);
                
                if ($this->_fetch()) return true;
                $this->EOF = true;
-        //if ($this->connection->debug) error_log("eof (end): ".$this->EOF);
+               //# KMN # if ($this->connection->debug) error_log("eof (end): 
".$this->EOF);
                
                return false;
        }
@@ -754,13 +1014,13 @@
        // also the date format has been changed from YYYY-mm-dd to dd MMM YYYY 
in 4.0.4. Idiot!
        function _fetch($ignore_fields=false) 
        {
-        if ($this->connection->debug) error_log("_fetch()");
-               if ($this->fetchMode & ADODB_FETCH_BOTH) {
+               # KMN # if ($this->connection->debug) error_log("_fetch()");
+               if ($this->fetchMode & ADODB_FETCH_ASSOC) {
                        if ($this->fetchMode & ADODB_FETCH_NUM) {
-                if ($this->connection->debug) error_log("fetch mode: both");
+                               //# KMN # if ($this->connection->debug) 
error_log("fetch mode: both");
                                $this->fields = 
@sqlsrv_fetch_array($this->_queryID,SQLSRV_FETCH_BOTH);
                        } else {
-                if ($this->connection->debug) error_log("fetch mode: assoc");
+                               //# KMN # if ($this->connection->debug) 
error_log("fetch mode: assoc");
                                $this->fields = 
@sqlsrv_fetch_array($this->_queryID,SQLSRV_FETCH_ASSOC);
                        }
                        
@@ -776,7 +1036,7 @@
                                }
                        }
                } else {
-            if ($this->connection->debug) error_log("fetch mode: num");
+                       //# KMN # if ($this->connection->debug) 
error_log("fetch mode: num");
                        $this->fields = 
@sqlsrv_fetch_array($this->_queryID,SQLSRV_FETCH_NUMERIC);
                }
         if(is_array($this->fields) && array_key_exists(1,$this->fields) && 
!array_key_exists(0,$this->fields)) {//fix fetch numeric keys since they're not 
0 based 
@@ -799,7 +1059,7 @@
                        }
                }
         if($this->fields === null) $this->fields = false;
-        if ($this->connection->debug) error_log("<hr>after _fetch, fields: 
<pre>".print_r($this->fields,true)." backtrace: ".adodb_backtrace(false));
+               # KMN # if ($this->connection->debug) error_log("<hr>after 
_fetch, fields: <pre>".print_r($this->fields,true)." backtrace: 
".adodb_backtrace(false));
                return $this->fields;
        }
        
@@ -928,5 +1188,3 @@
 
 http://www.databasejournal.com/scripts/article.php/1440551
 */
-
-?>
\ No newline at end of file

Modified: 
branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-mssqlpo.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-mssqlpo.inc.php    
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-mssqlpo.inc.php    
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,6 +1,6 @@
 <?php
 /**
-* @version V5.18 3 Sep 2012 (c) 2000-2012 John Lim (jlim#natsoft.com). All 
rights reserved.
+* @version V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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.
@@ -59,4 +59,3 @@
                $this->ADORecordset_mssql($id,$mode);
        }
 }
-?>
\ No newline at end of file

Modified: branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-mysql.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-mysql.inc.php      
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-mysql.inc.php      
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,6 +1,6 @@
 <?php
 /*
-V5.18 3 Sep 2012  (c) 2000-2012 John Lim (jlim#natsoft.com). All rights 
reserved.
+V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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.
@@ -23,7 +23,11 @@
        var $dataProvider = 'mysql';
        var $hasInsertID = true;
        var $hasAffectedRows = true;    
-       var $metaTablesSQL = "SELECT TABLE_NAME, CASE WHEN TABLE_TYPE = 'VIEW' 
THEN 'V' ELSE 'T' END FROM INFORMATION_SCHEMA.TABLES WHERE 
TABLE_SCHEMA=SCHEMA()";
+       var $metaTablesSQL = "SELECT
+                       TABLE_NAME,
+                       CASE WHEN TABLE_TYPE = 'VIEW' THEN 'V' ELSE 'T' END
+               FROM INFORMATION_SCHEMA.TABLES
+               WHERE TABLE_SCHEMA=";
        var $metaColumnsSQL = "SHOW COLUMNS FROM `%s`";
        var $fmtTimeStamp = "'Y-m-d H:i:s'";
        var $hasLimit = true;
@@ -136,16 +140,27 @@
         return $procedures;
     }
        
+       /**
+        * Retrieves a list of tables based on given criteria
+        *
+        * @param string $ttype Table type = 'TABLE', 'VIEW' or false=both 
(default)
+        * @param string $showSchema schema name, false = current schema 
(default)
+        * @param string $mask filters the table by name
+        *
+        * @return array list of tables
+        */
        function MetaTables($ttype=false,$showSchema=false,$mask=false) 
        {       
                $save = $this->metaTablesSQL;
                if ($showSchema && is_string($showSchema)) {
-                       $this->metaTablesSQL .= " from $showSchema";
+                       $this->metaTablesSQL .= $this->qstr($showSchema);
+               } else {
+                       $this->metaTablesSQL .= "schema()";
                }
                
                if ($mask) {
                        $mask = $this->qstr($mask);
-                       $this->metaTablesSQL .= " like $mask";
+                       $this->metaTablesSQL .= " AND table_name LIKE $mask";
                }
                $ret = ADOConnection::MetaTables($ttype,$showSchema);
                
@@ -580,10 +595,15 @@
        // returns queryID or false
        function _query($sql,$inputarr=false)
        {
-       //global $ADODB_COUNTRECS;
-               //if($ADODB_COUNTRECS) 
+
                return mysql_query($sql,$this->_connectionID);
-               //else return 
@mysql_unbuffered_query($sql,$this->_connectionID); // requires PHP >= 4.0.6
+       /*
+       global $ADODB_COUNTRECS;
+               if($ADODB_COUNTRECS)
+                       return mysql_query($sql,$this->_connectionID);
+               else
+                       return 
@mysql_unbuffered_query($sql,$this->_connectionID); // requires PHP >= 4.0.6
+       */
        }
 
        /*      Returns: the last error message from previous database 
operation        */      
@@ -872,4 +892,3 @@
 
 
 }
-?>
\ No newline at end of file

Modified: 
branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-mysqli.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-mysqli.inc.php     
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-mysqli.inc.php     
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,6 +1,6 @@
 <?php
 /*
-V5.18 3 Sep 2012  (c) 2000-2012 John Lim (jlim#natsoft.com). All rights 
reserved.
+V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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.
@@ -31,7 +31,11 @@
        var $dataProvider = 'mysql';
        var $hasInsertID = true;
        var $hasAffectedRows = true;    
-       var $metaTablesSQL = "SELECT TABLE_NAME, CASE WHEN TABLE_TYPE = 'VIEW' 
THEN 'V' ELSE 'T' END FROM INFORMATION_SCHEMA.TABLES WHERE 
TABLE_SCHEMA=SCHEMA()";       
+       var $metaTablesSQL = "SELECT
+                       TABLE_NAME,
+                       CASE WHEN TABLE_TYPE = 'VIEW' THEN 'V' ELSE 'T' END
+               FROM INFORMATION_SCHEMA.TABLES
+               WHERE TABLE_SCHEMA=";
        var $metaColumnsSQL = "SHOW COLUMNS FROM `%s`";
        var $fmtTimeStamp = "'Y-m-d H:i:s'";
        var $hasLimit = true;
@@ -210,7 +214,7 @@
        }
        
        // if magic quotes disabled, use mysql_real_escape_string()
-       // From readme.htm:
+       // From docs-adodb.htm:
        // Quotes a string to be sent to the database. The $magic_quotes_enabled
        // parameter may look funny, but the idea is if you are quoting a 
        // string extracted from a POST/GET variable, then 
@@ -530,16 +534,27 @@
         return $procedures;
     }
        
+       /**
+        * Retrieves a list of tables based on given criteria
+        *
+        * @param string $ttype Table type = 'TABLE', 'VIEW' or false=both 
(default)
+        * @param string $showSchema schema name, false = current schema 
(default)
+        * @param string $mask filters the table by name
+        *
+        * @return array list of tables
+        */
        function MetaTables($ttype=false,$showSchema=false,$mask=false) 
        {       
                $save = $this->metaTablesSQL;
                if ($showSchema && is_string($showSchema)) {
-                       $this->metaTablesSQL .= " from $showSchema";
+                       $this->metaTablesSQL .= $this->qstr($showSchema);
+               } else {
+                       $this->metaTablesSQL .= "schema()";
                }
                
                if ($mask) {
                        $mask = $this->qstr($mask);
-                       $this->metaTablesSQL .= " like $mask";
+                       $this->metaTablesSQL .= " AND table_name LIKE $mask";
                }
                $ret = ADOConnection::MetaTables($ttype,$showSchema);
                
@@ -1265,5 +1280,3 @@
        } // function
   
 }
-
-?>
\ No newline at end of file

Modified: 
branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-mysqlpo.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-mysqlpo.inc.php    
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-mysqlpo.inc.php    
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,7 +1,7 @@
 <?php
 
 /*
-V5.18 3 Sep 2012  (c) 2000-2012 John Lim (jlim#natsoft.com). All rights 
reserved.
+V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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.
@@ -134,5 +134,3 @@
                return adodb_movenext($this);
        }
 }
-
-?>
\ No newline at end of file

Modified: 
branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-mysqlt.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-mysqlt.inc.php     
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-mysqlt.inc.php     
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,7 +1,7 @@
 <?php
 
 /*
-V5.18 3 Sep 2012  (c) 2000-2012 John Lim (jlim#natsoft.com). All rights 
reserved.
+V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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.
@@ -151,5 +151,3 @@
                return adodb_movenext($this);
        }
 }
-
-?>
\ No newline at end of file

Modified: 
branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-netezza.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-netezza.inc.php    
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-netezza.inc.php    
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,6 +1,6 @@
 <?php
 /*
-  V5.18 3 Sep 2012  (c) 2000-2012 John Lim (jlim#natsoft.com). All rights 
reserved.
+  V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). All rights 
reserved.
  
   First cut at the Netezza Driver by Josh Eldridge joshuae74#hotmail.com
  Based on the previous postgres drivers.
@@ -167,4 +167,3 @@
        }
 
 }
-?>

Modified: branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-oci8.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-oci8.inc.php       
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-oci8.inc.php       
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,7 +1,7 @@
 <?php
 /*
 
-  version V5.18 3 Sep 2012 (c) 2000-2012 John Lim. All rights reserved.
+  version V5.19  23-Apr-2014  (c) 2000-2014 John Lim. All rights reserved.
 
   Released under both BSD license and Lesser GPL library license. 
   Whenever there is any discrepancy between the two licenses, 
@@ -30,8 +30,8 @@
 yy-mm-dd or yyyy-mm-dd.
 
 Using 'RR' in the format forces two-digit years less than or equal to 49 to be
-interpreted as years in the 21st century (2000\x962049), and years over 50 as 
years in
-the 20th century (1950\x961999). Setting the RR format as the default for all 
two-digit
+interpreted as years in the 21st century (2000-2049), and years over 50 as 
years in
+the 20th century (1950-1999). Setting the RR format as the default for all 
two-digit
 year entries allows you to become year-2000 compliant. For example:
 NLS_DATE_FORMAT='RR-MM-DD'
 
@@ -165,41 +165,33 @@
                return false;
        }
  
-/*
-
-  Multiple modes of connection are supported:
-  
-  a. Local Database
-    $conn->Connect(false,'scott','tiger');
-  
-  b. From tnsnames.ora
-    $conn->Connect(false,'scott','tiger',$tnsname); 
-    $conn->Connect($tnsname,'scott','tiger'); 
-  
-  c. Server + service name
-    $conn->Connect($serveraddress,'scott,'tiger',$service_name);
-  
-  d. Server + SID
-       $conn->connectSID = true;
-       $conn->Connect($serveraddress,'scott,'tiger',$SID);
-
-
-Example TNSName:
----------------
-NATSOFT.DOMAIN =
-  (DESCRIPTION =
-       (ADDRESS_LIST =
-         (ADDRESS = (PROTOCOL = TCP)(HOST = kermit)(PORT = 1523))
-       )
-       (CONNECT_DATA =
-         (SERVICE_NAME = natsoft.domain)
-       )
-  )
-  
-  There are 3 connection modes, 0 = non-persistent, 1 = persistent, 2 = force 
new connection
-       
-*/
-       function _connect($argHostname, $argUsername, $argPassword, 
$argDatabasename,$mode=0)
+       /**
+        * Multiple modes of connection are supported:
+        *
+        * a. Local Database
+        *    $conn->Connect(false,'scott','tiger');
+        *
+        * b. From tnsnames.ora
+        *    $conn->Connect($tnsname,'scott','tiger');
+        *    $conn->Connect(false,'scott','tiger',$tnsname);
+        *
+        * c. Server + service name
+        *    $conn->Connect($serveraddress,'scott,'tiger',$service_name);
+        *
+        * d. Server + SID
+        *    $conn->connectSID = true;
+        *    $conn->Connect($serveraddress,'scott,'tiger',$SID);
+        *
+        * @param string|false $argHostname DB server hostname or TNS name
+        * @param string $argUsername
+        * @param string $argPassword
+        * @param string $argDatabasename Service name, SID (defaults to null)
+        * @param int $mode Connection mode, defaults to 0
+        *                  (0 = non-persistent, 1 = persistent, 2 = force new 
connection)
+        *
+        * @return bool
+        */
+       function _connect($argHostname, $argUsername, $argPassword, 
$argDatabasename=null, $mode=0)
        {
                if (!function_exists('oci_pconnect')) return null;
                #adodb_backtrace(); 
@@ -234,25 +226,23 @@
                                
                //if ($argHostname) print "<p>Connect: 1st argument should be 
left blank for $this->databaseType</p>";
                if ($mode==1) {
-                       $this->_connectionID = ($this->charSet) ? 
-                               oci_pconnect($argUsername,$argPassword, 
$argDatabasename,$this->charSet)
-                               :
-                               oci_pconnect($argUsername,$argPassword, 
$argDatabasename)
-                               ;
+                       $this->_connectionID = ($this->charSet)
+                               ? oci_pconnect($argUsername,$argPassword, 
$argDatabasename,$this->charSet)
+                               : oci_pconnect($argUsername,$argPassword, 
$argDatabasename);
                        if ($this->_connectionID && $this->autoRollback)  
oci_rollback($this->_connectionID);
                } else if ($mode==2) {
-                       $this->_connectionID = ($this->charSet) ? 
-                               oci_new_connect($argUsername,$argPassword, 
$argDatabasename,$this->charSet)
-                               :
-                               oci_new_connect($argUsername,$argPassword, 
$argDatabasename);
-                               
+                       $this->_connectionID = ($this->charSet)
+                               ? oci_new_connect($argUsername,$argPassword, 
$argDatabasename,$this->charSet)
+                               : oci_new_connect($argUsername,$argPassword, 
$argDatabasename);
                } else {
-                       $this->_connectionID = ($this->charSet) ? 
-                               oci_connect($argUsername,$argPassword, 
$argDatabasename,$this->charSet)
-                               :
-                               oci_connect($argUsername,$argPassword, 
$argDatabasename);
+                       $this->_connectionID = ($this->charSet)
+                               ? oci_connect($argUsername,$argPassword, 
$argDatabasename,$this->charSet)
+                               : oci_connect($argUsername,$argPassword, 
$argDatabasename);
                }
-               if (!$this->_connectionID) return false;
+               if (!$this->_connectionID) {
+                       return false;
+               }
+
                if ($this->_initdate) {
                        $this->Execute("ALTER SESSION SET 
NLS_DATE_FORMAT='".$this->NLS_DATE_FORMAT."'");
                }
@@ -512,7 +502,9 @@
                return $arr['code'];
        }
        
-       // Format date column in sql string given an input format that 
understands Y M D
+       /**
+        * Format date column in sql string given an input format that 
understands Y M D
+        */
        function SQLDate($fmt, $col=false)
        {       
                if (!$col) $col = $this->sysTimeStamp;
@@ -597,20 +589,21 @@
                return $this->GetRow($sql,$arr);
        }
        
-       /*
-       This algorithm makes use of
-       
-       a. FIRST_ROWS hint
-       The FIRST_ROWS hint explicitly chooses the approach to optimize 
response time, 
-       that is, minimum resource usage to return the first row. Results will 
be returned 
-       as soon as they are identified. 
-
-       b. Uses rownum tricks to obtain only the required rows from a given 
offset.
-        As this uses complicated sql statements, we only use this if the 
$offset >= 100. 
-        This idea by Tomas V V Cox.
-        
-        This implementation does not appear to work with oracle 8.0.5 or 
earlier. Comment
-        out this function then, and the slower SelectLimit() in the base class 
will be used.
+       /**
+        * This algorithm makes use of
+        *
+        * a. FIRST_ROWS hint
+        * The FIRST_ROWS hint explicitly chooses the approach to optimize 
response
+        * time, that is, minimum resource usage to return the first row. 
Results
+        * will be returned as soon as they are identified.
+        *
+        * b. Uses rownum tricks to obtain only the required rows from a given 
offset.
+        * As this uses complicated sql statements, we only use this if $offset 
>= 100.
+        * This idea by Tomas V V Cox.
+        *
+        * This implementation does not appear to work with oracle 8.0.5 or 
earlier.
+        * Comment out this function then, and the slower SelectLimit() in the 
base
+        * class will be used.
        */
        function SelectLimit($sql,$nrows=-1,$offset=-1, 
$inputarr=false,$secs2cache=0)
        {
@@ -623,7 +616,9 @@
                                $sql = str_replace('/*+ ',"/*+$hint ",$sql);
                        else
                                $sql = preg_replace('/^[ 
\t\n]*select/i',"SELECT /*+$hint*/",$sql);
-               }
+                       $hint = "/*+ $hint */";
+               } else
+                       $hint = '';
                
                if ($offset == -1 || ($offset < $this->selectOffsetAlg1 && 0 < 
$nrows && $nrows < 1000)) {
                        if ($nrows > 0) {       
@@ -668,7 +663,6 @@
                                                        $bindarr[$k] = $v;
                                                } else {                        
        // dynamic sql, so rebind every time
                                                        
oci_bind_by_name($stmt,":$k",$inputarr[$k],$len);
-                                                       
                                                }
                                        }
                                }
@@ -692,12 +686,12 @@
                         $offset += 1; // in Oracle rownum starts at 1
                        
                        if ($this->databaseType == 'oci8po') {
-                                        $sql = "SELECT /*+ FIRST_ROWS */ 
$fields FROM".
+                                       $sql = "SELECT $hint $fields FROM".
                                          "(SELECT rownum as adodb_rownum, 
$fields FROM".
                                          " ($sql) WHERE rownum <= ?".
                                          ") WHERE adodb_rownum >= ?";
                                } else {
-                                        $sql = "SELECT /*+ FIRST_ROWS */ 
$fields FROM".
+                                       $sql = "SELECT $hint $fields FROM".
                                          "(SELECT rownum as adodb_rownum, 
$fields FROM".
                                          " ($sql) WHERE rownum <= 
:adodb_nrows".
                                          ") WHERE adodb_rownum >= 
:adodb_offset";
@@ -709,7 +703,6 @@
                        else $rs = $this->Execute($sql,$inputarr);
                        return $rs;
                }
-       
        }
        
        /**
@@ -717,7 +710,6 @@
        * Store BLOBs and CLOBs
        *
        * Example: to store $var in a blob
-       *
        *       $conn->Execute('insert into TABLE (id,ablob) 
values(12,empty_blob())');
        *       $conn->UpdateBlob('TABLE', 'ablob', $varHoldingBlob, 'ID=12', 
'BLOB');
        *       
@@ -731,7 +723,6 @@
        *        $db->Execute('ALTER SESSION SET CURSOR_SHARING=EXACT');
        * before UpdateBlob() then...
        */
-
        function UpdateBlob($table,$column,$val,$where,$blobtype='BLOB')
        {
                
@@ -806,8 +797,8 @@
                        $ret = $fn($this,$sql,$inputarr);
                        if (isset($ret)) return $ret;
                }
-               if ($inputarr) {
-                       #if (!is_array($inputarr)) $inputarr = array($inputarr);
+               if ($inputarr !== false) {
+                       if (!is_array($inputarr)) $inputarr = array($inputarr);
                        
                        $element0 = reset($inputarr); 
                        $array2d =  $this->bulkBind && is_array($element0) && 
!is_object(reset($element0));
@@ -872,9 +863,8 @@
        }
        
        /*
-               Example of usage:
-               
-               $stmt = $this->Prepare('insert into emp (empno, ename) values 
(:empno, :ename)');
+        * Example of usage:
+        *    $stmt = $this->Prepare('insert into emp (empno, ename) values 
(:empno, :ename)');
        */
        function Prepare($sql,$cursor=false)
        {
@@ -941,35 +931,34 @@
                return $rs;
        }
        
-       /*
-               Bind a variable -- very, very fast for executing repeated 
statements in oracle. 
-               Better than using
-                       for ($i = 0; $i < $max; $i++) { 
-                               $p1 = ?; $p2 = ?; $p3 = ?;
-                               $this->Execute("insert into table (col0, col1, 
col2) values (:0, :1, :2)", 
-                                       array($p1,$p2,$p3));
-                       }
-               
-               Usage:
-                       $stmt = $DB->Prepare("insert into table (col0, col1, 
col2) values (:0, :1, :2)");
-                       $DB->Bind($stmt, $p1);
-                       $DB->Bind($stmt, $p2);
-                       $DB->Bind($stmt, $p3);
-                       for ($i = 0; $i < $max; $i++) { 
-                               $p1 = ?; $p2 = ?; $p3 = ?;
-                               $DB->Execute($stmt);
-                       }
-                       
-               Some timings:           
-                       ** Test table has 3 cols, and 1 index. Test to insert 
1000 records
-                       Time 0.6081s (1644.60 inserts/sec) with direct 
oci_parse/oci_execute
-                       Time 0.6341s (1577.16 inserts/sec) with ADOdb 
Prepare/Bind/Execute
-                       Time 1.5533s ( 643.77 inserts/sec) with pure SQL using 
Execute
-                       
-               Now if PHP only had batch/bulk updating like Java or PL/SQL...
-       
-               Note that the order of parameters differs from oci_bind_by_name,
-               because we default the names to :0, :1, :2
+       /**
+        * Bind a variable -- very, very fast for executing repeated statements 
in oracle.
+        *
+        * Better than using
+        *    for ($i = 0; $i < $max; $i++) {
+        *        $p1 = ?; $p2 = ?; $p3 = ?;
+        *        $this->Execute("insert into table (col0, col1, col2) values 
(:0, :1, :2)", array($p1,$p2,$p3));
+        *    }
+        *
+        * Usage:
+        *    $stmt = $DB->Prepare("insert into table (col0, col1, col2) values 
(:0, :1, :2)");
+        *    $DB->Bind($stmt, $p1);
+        *    $DB->Bind($stmt, $p2);
+        *    $DB->Bind($stmt, $p3);
+        *    for ($i = 0; $i < $max; $i++) {
+        *        $p1 = ?; $p2 = ?; $p3 = ?;
+        *        $DB->Execute($stmt);
+        *    }
+        *
+        * Some timings to insert 1000 records, test table has 3 cols, and 1 
index.
+        * - Time 0.6081s (1644.60 inserts/sec) with direct 
oci_parse/oci_execute
+        * - Time 0.6341s (1577.16 inserts/sec) with ADOdb Prepare/Bind/Execute
+        * - Time 1.5533s ( 643.77 inserts/sec) with pure SQL using Execute
+        *
+        * Now if PHP only had batch/bulk updating like Java or PL/SQL...
+        *
+        * Note that the order of parameters differs from oci_bind_by_name,
+        * because we default the names to :0, :1, :2
        */
        function 
Bind(&$stmt,&$var,$size=4000,$type=false,$name=false,$isOutput=false)
        {
@@ -1027,21 +1016,21 @@
                return ':'.$name;
        }
        
-       /* 
-       Usage:
-               $stmt = $db->Prepare('select * from table where id =:myid and 
group=:group');
-               $db->Parameter($stmt,$id,'myid');
-               $db->Parameter($stmt,$group,'group');
-               $db->Execute($stmt);
-               
-               @param $stmt Statement returned by Prepare() or PrepareSP().
-               @param $var PHP variable to bind to
-               @param $name Name of stored procedure variable name to bind to.
-               @param [$isOutput] Indicates direction of parameter 0/false=IN  
1=OUT  2= IN/OUT. This is ignored in oci8.
-               @param [$maxLen] Holds an maximum length of the variable.
-               @param [$type] The data type of $var. Legal values depend on 
driver.
-               
-               See oci_bind_by_name documentation at php.net.
+       /**
+        * Usage:
+        *    $stmt = $db->Prepare('select * from table where id =:myid and 
group=:group');
+        *    $db->Parameter($stmt,$id,'myid');
+        *    $db->Parameter($stmt,$group,'group');
+        *    $db->Execute($stmt);
+        *
+        * @param $stmt Statement returned by Prepare() or PrepareSP().
+        * @param $var PHP variable to bind to
+        * @param $name Name of stored procedure variable name to bind to.
+        * @param [$isOutput] Indicates direction of parameter 0/false=IN  
1=OUT  2= IN/OUT. This is ignored in oci8.
+        * @param [$maxLen] Holds an maximum length of the variable.
+        * @param [$type] The data type of $var. Legal values depend on driver.
+        *
+        * @link http://php.net/oci_bind_by_name
        */
        function 
Parameter(&$stmt,&$var,$name,$isOutput=false,$maxLen=4000,$type=false)
        {
@@ -1053,20 +1042,20 @@
                        return 
$this->Bind($stmt,$var,$maxLen,$type,$name,$isOutput);
        }
        
-       /*
-       returns query ID if successful, otherwise false
-       this version supports:
-       
-          1. $db->execute('select * from table');
-          
-          2. $db->prepare('insert into table (a,b,c) values (:0,:1,:2)');
-                 $db->execute($prepared_statement, array(1,2,3));
-                 
-          3. $db->execute('insert into table (a,b,c) values 
(:a,:b,:c)',array('a'=>1,'b'=>2,'c'=>3));
-          
-          4. $db->prepare('insert into table (a,b,c) values (:0,:1,:2)');
-                 $db->bind($stmt,1); $db->bind($stmt,2); $db->bind($stmt,3); 
-                 $db->execute($stmt);
+       /**
+        * returns query ID if successful, otherwise false
+        * this version supports:
+        *
+        * 1. $db->execute('select * from table');
+        *
+        * 2. $db->prepare('insert into table (a,b,c) values (:0,:1,:2)');
+        *    $db->execute($prepared_statement, array(1,2,3));
+        *
+        * 3. $db->execute('insert into table (a,b,c) values 
(:a,:b,:c)',array('a'=>1,'b'=>2,'c'=>3));
+        *
+        * 4. $db->prepare('insert into table (a,b,c) values (:0,:1,:2)');
+        *    $db->bind($stmt,1); $db->bind($stmt,2); $db->bind($stmt,3);
+        *    $db->execute($stmt);
        */ 
        function _query($sql,$inputarr=false)
        {
@@ -1258,8 +1247,17 @@
                else return false;
        }
        
-       // http://gis.mit.edu/classes/11.521/sqlnotes/referential_integrity.html
-       function MetaForeignKeys($table, $owner=false)
+       /**
+        * returns assoc array where keys are tables, and values are foreign 
keys
+        *
+        * @param       str             $table
+        * @param       str             $owner  [optional][default=NULL]
+        * @param       bool    $upper  [optional][discarded]
+        * @return      mixed[]                 Array of foreign key information
+        *
+        * @link 
http://gis.mit.edu/classes/11.521/sqlnotes/referential_integrity.html
+        */
+       function MetaForeignKeys($table, $owner=false, $upper=false)
        {
        global $ADODB_FETCH_MODE;
        
@@ -1313,11 +1311,11 @@
         * Quotes a string.
         * An example is  $db->qstr("Don't bother",magic_quotes_runtime());
         * 
-        * @param s                     the string to quote
-        * @param [magic_quotes]        if $s is GET/POST var, set to 
get_magic_quotes_gpc().
+        * @param string $s the string to quote
+        * @param bool $magic_quotes if $s is GET/POST var, set to 
get_magic_quotes_gpc().
         *                              This undoes the stupidity of magic 
quotes for GPC.
         *
-        * @return  quoted string to be sent back to database
+        * @return string quoted string to be sent back to database
         */
        function qstr($s,$magic_quotes=false)
        {       
@@ -1418,11 +1416,14 @@
                }
        }
 
-         /*            Returns: an object containing field information.
-                         Get column information in the Recordset object. 
fetchField() can be used in order to obtain information about
-                         fields in a certain query result. If the field offset 
isn't specified, the next field that wasn't yet retrieved by
-                         fetchField() is retrieved.            */
-
+       /**
+        * Get column information in the Recordset object.
+        * fetchField() can be used in order to obtain information about fields
+        * in a certain query result. If the field offset isn't specified, the 
next
+        * field that wasn't yet retrieved by fetchField() is retrieved
+        *
+        * @return object containing field information
+        */
        function _FetchField($fieldOffset = -1)
        {
                $fld = new ADOFieldObject;
@@ -1430,6 +1431,7 @@
                $fld->name =oci_field_name($this->_queryID, $fieldOffset);
                $fld->type = oci_field_type($this->_queryID, $fieldOffset);
                $fld->max_length = oci_field_size($this->_queryID, 
$fieldOffset);
+
                switch($fld->type) {
                case 'NUMBER':
                        $p = oci_field_precision($this->_queryID, $fieldOffset);
@@ -1454,7 +1456,7 @@
        }
        
        
-       /*
+/*
        // 10% speedup to move MoveNext to child class
        function _MoveNext() 
        {
@@ -1468,7 +1470,8 @@
                $this->EOF = true;
                
                return false;
-       }       */
+       }
+*/
        
        
        function MoveNext()
@@ -1484,7 +1487,7 @@
                return false;
        }
        
-       /*
+/*
        # does not work as first record is retrieved in _initrs(), so is not 
included in GetArray()
        function GetArray($nRows = -1) 
        {
@@ -1516,9 +1519,10 @@
                $results = ADORecordSet::GetArray($nRows);
                return $results;
                
-       } */
+       }
+*/
        
-       /* Optimize SelectLimit() by using oci_fetch() */
+       // Optimize SelectLimit() by using oci_fetch()
        function GetArrayLimit($nrows,$offset=-1) 
        {
                if ($offset <= 0) {
@@ -1541,7 +1545,7 @@
        }
 
        
-       /* Use associative array to get fields array */
+       // Use associative array to get fields array
        function Fields($colname)
        {
                if (!$this->bind) {
@@ -1567,9 +1571,11 @@
                return $this->fields = 
@oci_fetch_array($this->_queryID,$this->fetchMode);
        }
 
-       /*              close() only needs to be called if you are worried 
about using too much memory while your script
-                       is running. All associated result memory for the 
specified result identifier will automatically be freed.               */
-
+       /**
+        * close() only needs to be called if you are worried about using too 
much
+        * memory while your script is running. All associated result memory 
for the
+        * specified result identifier will automatically be freed.
+        */
        function _close() 
        {
                if ($this->connection->_stmt === $this->_queryID) 
$this->connection->_stmt = false;
@@ -1579,16 +1585,25 @@
                }
                @oci_free_statement($this->_queryID);
                $this->_queryID = false;
-               
        }
 
-       function MetaType($t,$len=-1)
+       /**
+        * not the fastest implementation - quick and dirty - jlim
+        * for best performance, use the actual $rs->MetaType().
+        *
+        * @param       mixed   $t
+        * @param       int             $len            [optional] Length of 
blobsize
+        * @param       bool    $fieldobj       [optional][discarded]
+        * @return      str                                     The metatype of 
the field
+        */
+       function MetaType($t, $len=-1, $fieldobj=false)
        {
                if (is_object($t)) {
                        $fieldobj = $t;
                        $t = $fieldobj->type;
                        $len = $fieldobj->max_length;
                }
+
                switch (strtoupper($t)) {
                case 'VARCHAR':
                case 'VARCHAR2':
@@ -1622,7 +1637,8 @@
                case 'INTEGER': 
                        return 'I';
                        
-               default: return 'N';
+               default:
+                       return 'N';
                }
        }
 }
@@ -1651,4 +1667,3 @@
                return adodb_movenext($this);
        }
 }
-?>
\ No newline at end of file

Modified: 
branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-oci805.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-oci805.inc.php     
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-oci805.inc.php     
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,6 +1,6 @@
 <?php
 /** 
- * @version V5.18 3 Sep 2012 (c) 2000-2012 John Lim (jlim#natsoft.com). All 
rights reserved.
+ * @version V5.19  23-Apr-2014  (c) 2000-2014 John Lim (jlim#natsoft.com). 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. 
@@ -56,4 +56,3 @@
                $this->ADORecordset_oci8($id,$mode);
        }
 }
-?>
\ No newline at end of file

Modified: 
branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-oci8po.inc.php
===================================================================
--- branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-oci8po.inc.php     
2014-12-13 15:05:19 UTC (rev 12462)
+++ branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-oci8po.inc.php     
2014-12-13 15:22:46 UTC (rev 12463)
@@ -1,6 +1,6 @@
 <?php
 /*
-V5.18 3 Sep 2012  (c) 2000-2012 John Lim. All rights reserved.
+V5.19  23-Apr-2014  (c) 2000-2014 John Lim. 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.
@@ -218,6 +218,3 @@
        }
        
 }
-
-
-?>
\ No newline at end of file

Copied: 
branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-oci8quercus.inc.php 
(from rev 12462, trunk/phpgwapi/inc/adodb/drivers/adodb-oci8quercus.inc.php)
===================================================================
--- 
branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-oci8quercus.inc.php    
                            (rev 0)
+++ 
branches/dev-syncromind/phpgwapi/inc/adodb/drivers/adodb-oci8quercus.inc.php    
    2014-12-13 15:22:46 UTC (rev 12463)
@@ -0,0 +1,87 @@
+<?php
+/*
+V5.19  23-Apr-2014  (c) 2000-2014 John Lim. All rights reserved.
+  Released under both BSD license and Lesser GPL library license.
+  Whenever there is any discrepancy between the two licenses,

@@ Diff output truncated at 153600 characters. @@



reply via email to

[Prev in Thread] Current Thread [Next in Thread]