Merge remote branch 'xpdo/master' for 2.0.0-pl release

* xpdo/master:
  Bump version for 2.0.0-pl release
  [#2788] Escape database name in xPDOGenerator_mysql::writeSchema()
  Add phpdoc for xPDO::getPDOType()
  Add phpdoc for xPDO::parseBindings()
  Clean-up xPDO::parseBindings() implementation
  Add phpdoc for xPDO::getIterator() method
  Add xPDOAPCCache implementation of xPDOCacheProvider
  Refactor usages of xPDO::getObjectLoader() to use xPDO::call()
  Catch exceptions when using call_user_func_array
  Init callback to empty string rather than null
  Add xPDO::call() allowing db-specific static method overrides
  Add xPDOWinCache implementation of xPDOCache provider
  Add workaround to drop database for sqlsrv
  Add workaround to trim PDO::quote() results for sqlsrv
  Fix testSortByWithGroupBy for behavior in sqlite/sqlsrv
  Introduce sqlsrv driver support
  Cleanup paths in phing build file
  Convert Ant build to Phing
Merge remote branch 'xpdo/master' for 2.0.1-pl release

* xpdo/master:
  Bump version for 2.0.1-pl release
  Fix unknown variable dbType error in xPDOObject->set()
  Replace tabs with spaces (sigh)
  [#2927] Add ENGINE option to xPDOManager_mysql->createObjectContainer()
  Improve escaping of columns in xPDOQuery->construct()
  Various xPDO improvements and fixes for sqlsrv
  [#2901] Add transient parameter to xPDO->call() for use with non-db classes
Merge remote branch 'xpdo/master' for xPDO 2.1.0-pl Release

* xpdo/master:
  Mute warnings/errors from fopen/fclose in writeFile()
  Bump version for 2.1.0 release
  Add proper cache file locking and format handling
  Add OPT_CACHE_FORMAT constant to xPDO
  Add CACHE_SERIALIZE format support
  Force flush() for multiple_object_delete option in xPDOMemCache->delete()
  Implement multiple_object_delete support in xPDOAPCCache->delete()
  Return boolean from xPDOFileCache->delete() and ->flush()
  Fix xPDOFileCache->delete() and invalid calls to cacheManager->deleteTree()
  Use APCIterator to support per instance flush()'ing
  Prefix all cache keys with provider key
  Fix db cache methods to be called with proper options
  Add xPDOCacheManager->refresh() to empty all active cache providers
  Fix limit with sortby functionality for sqlsrv
  Fix xPDO->literal() and add missing xPDO->$_quoteChar
  Fix paging in sqlsrv when no sort given
  Fix paging through sorted results in sqlsrv
  Sqlsrv integer date/time fix
  Replace tabs with spaces in xPDO class
  Modify tabs to spaces in sample properties file
xPDO Core 2.1.1 Public Launch

Merge remote branch 'xpdo/master'

* xpdo/master:
  Bump release date for 2.1.1-pl
  Bump version for 2.1.1-pl release
  [#2909] Make auto-table creation optional
  Add options and default parameters to xPDOObject->getOption()
  [#3174] Use xPDOQuery alias to build join criteria for getMany()
  Add changelog entry for bug-3342 to pull request 3
  Replaced depreciated split() with explode()
  Fix writeFile() not to truncate files in a mode
  Avoid PHP warning from fopen in xPDOFileCache->get()
  Bump version for 2.1.0-pl2
xPDO Core 2.1.1 Public Launch

Merge remote branch 'xpdo/master'

* xpdo/master:
  Fix reversed logic in xPDOCacheManager writeFile()
xPDO Core 2.1.1 Public Launch 2

Merge remote branch 'xpdo/master'

* xpdo/master:
  Fix error in xPDOObject->getOption() when handling option overrides
  Bump version for 2.1.1-pl2 release
xPDO Core 2.1.2-pl

Merge remote branch 'xpdo/master'

* xpdo/master:
  Bump version for 2.1.2-pl release
  Add xPDO->getValue() for retrieving single column from single row
  Update PclZip to version 2.8.2
  [#4128] Fix Windows drive issue in xPDOTransport->pack()
  [#4125] Fix bug getting composites in xPDOObject->getFKClass()
  [#4097] make constraint names unique
  [#4047] fix bug adding single file to zip
  Fix various add/alterField() bugs in xPDOManager implementations
  Fix bug in FIRST and AFTER options in xPDOManager_mysql->addField()
  Check return value !== false when exec() ALTER/CREATE/DROP statements in sqlsrv
  Add getDefaultConstraints() and fix removeField() for sqlsrv
  [#3971] Remove*() methods should not check for existence of metadata (doh!)
  [#3971] Fix xPDOManager sqlsrv implementations
  [#3971] Add xPDOManager API for manipulating table structures
xPDO Core 2.1.3-pl

Merge remote branch 'xpdo/master'

* xpdo/master:
  Bump version for 2.1.3-pl release
  [#4577] Remove calls to xPDO->log() in xPDOCacheManager->writeFile()
  Add options to xPDOCacheManager::writeFile() to allow multiple attempts when exclusive locks fail
xPDO Core 2.1.4-pl

Merge remote branch 'xpdo/master'

* xpdo/master:
  Bump version for 2.1.4-pl release
  Default cacheFlag to true in getObject/getCollection/getIterator methods
  [#4787] Add ability to determine the table class of derivatives
  [#4772] Do not flush related objects from cache on read operations
  [#4682] Fix support for driver-specific attributes on object element in schema
xPDO Core 2.1.5-pl

* xpdo/master:
  Bump version for 2.1.5-pl release
  Fix docblock in xPDORevisionControl
  API documentation updates
  Update copyright notices
  [#5084] Fix various xPDO::exec() calls to check for false value properly
  [#4877] Fix nested conjunctions infecting parent conjunctions
  PhpDoc correction
  [#5042] Prevent additional columns defined in derivative classes being marked lazy
xPDO Core 2.2.0-rc1

Merge remote branch 'xpdo/master'

* xpdo/master: (27 commits)
  Bump version for 2.2.0-rc1 release
  Make proper use of new validate param in xPDOObject->getField()
  Add validate param to xPDOObject->getField()
  Fix xPDOObject->fromArray() failing on adhoc keys
  Add support for field aliases to be defined in the schema
  Add xPDOObject->addFieldAlias for creating references to actual fields
  Remove inaccurate documentation on xPDOObject constructors
  Add xPDOObject->getIterator for iterating aggregate and composite relations
  [#4590] Allow multiple connections to be defined for master/slave configurations
  Fix xPDOObject->toArray() when includeRelated is an array
  [#2883] Add xPDOObject->getGraph() and add feature in toArray() to return related object fields
  Add xPDO->getGraph() method to infer relation graphs
  Add method getGraph and extended toArray() to use graph
  [#4275] Add xPDO->updateCollection() method
  [#4275] Enable UPDATE support and add set() method to xPDOQuery
  Comment testConnectionError for now
  Misc test updates
  Remove outdated PHPUnit/Framework includes from tests
  [#5306] Add xPDOQuery->distinct() method
  Change xPDO::getService() method to indicate it returns a reference
  ...
Merge remote branch 'xpdo/master'

* xpdo/master:
  Bump version for 2.2.0-rc2 release
  Fix xPDOAPCCache and xPDOWinCache multiple_object_delete features
  Fix various bugs with database result set caching
  Refactor escapeChar and quoteChar to xPDODriver classes
  Documentation updates
  Fix changelog entry for previous commit to reflect ticket number
  Store relative path of files preserved by xPDOVehicle file resolvers
  Improve xPDOTransport::parseSignature()
  [#5904] Provide access to name and version in Transport packages
xPDO Core 2.2.0-pl

Merge remote branch 'xpdo/master'

* xpdo/master:
  Bump version for 2.2.0-pl release
  [#6046] Fix getDescendants() to recursively get derivative classes
  [#6045] Fix setPackageMeta() to work with sub-packages
  Fix double-slash in model paths for unit tests
  [#6044] Allow STI derivatives to supplement base class metadata
  [#6043] Allow getSelectColumns() to be overridden in xPDOObject derivatives
xPDO Core 2.2.1-pl

Merge remote branch 'xpdo/master'

* xpdo/master:
  Bump version for 2.2.1 release
  [#3976] Trigger SQL error when empty IN condition encountered
  [#6152] Optionally skip empty string values in xPDO::getOption()
  [#4523] Log SQL errors in xPDOObject::loadCollectionGraph()
  [#6095] Log errors when xPDOManager::addField/alterField fail
  [#6098] Fix preg_replace issue in parseBindings
  [#5970] Fix issue with subpackages and derived classes that would cause nonsensical error
xPDO Core 2.2.2-pl

Merge remote-tracking branch 'xpdo/master'

* xpdo/master:
  Update copyright dates
  Bump version for 2.2.2-pl release
  Fix handling of driverOptions in xPDOConnection instances
  [#6290] Derivative-only fields marked lazy in base classes
  Remove descendant code for getFieldMeta as it causes an issue of derivative fields being improperly loaded into _lazy by parent or other derivative classes
xPDO Core 2.2.3-pl

Merge remote-tracking branch 'xpdo/master'

* xpdo/master:
  Bump version for 2.2.2-pl release
  xPDOScriptVehicle added for manifest-based scripts
  Implement xPDOQuery::having() method
  Add xPDO::getInstance() for singleton support
  Documentation updates
xPDO Core v2.2.4-pl

Merge remote-tracking branch 'xpdo/master'

* xpdo/master:
  Bump version for 2.2.4-pl release
  Refactor aggregate/composite criteria support
  Fix xPDOObject::_loadInstance for graph objects
  Refactor schema parsing using SimpleXML
  urldecode missing for composites in xPDOGenerator
  Fix related_object installation in xPDOObjectVehicle
  Add criteria support to aggregates and composites
Merge branch 'release-2.2' into develop

* release-2.2:
  Bump version for 2.2.5-pl release
Merge remote-tracking branch 'xpdo/master'

* xpdo/master:
  Bump version for 2.2.5-pl release
  [#8060] Implement __isset() to fix empty()/isset() on hydrated vars
  [#7797] Avoid E_NOTICE from array_diff_assoc change in 5.4
  Prefix indexes with table name for sqlite
  Fix xPDOTest::testGetFields for sqlite/sqlsrv
  - Fix lazy loading of fields on demand
  [#7607] xPDOObject->get(array) triggering invalid lazy loading
  xPDOObject/xPDOSimpleObject support for xPDO::getDescendants()
  Refactor HYDRATE_FIELDS/HYDRATE_RELATED_OBJECTS using __get()/__set()
  Bump version for 2.2.5-dev
[#8176] xPDO->updateCollection() fails to set NULL values

Addresses modxcms/revolution#310 from @grachov