| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356 |
- This file shows the changes in this release of xPDO.
- xPDO 2.7.0-pl (May 2, 2018)
- ====================================
- - Fix xPDOIterator failure when fetch returns null due to object hydration
- - Make json and array phptypes quotable in xPDOQuery
- - Replace all deprecated while/each() loops with foreach() loops for PHP 7.2 compat
- xPDO 2.6.0-pl (November 1, 2017)
- ====================================
- - Generate engine into the map files for MySQL
- - Make InnoDB the default engine for MySQL
- - Add missing return statements to built-in validation classes
- - Remove all embedded escape characters when escape() is used on a string
- - Make sure empty cache file does not return true in PHP format
- - Make sure FileCache uses file/folder permissions options + add optional overrides
- xPDO 2.5.3-pl (January 3, 2017)
- ====================================
- - Make sure xPDOQuery base class is always loaded
- xPDO 2.5.2-pl (December 16, 2016)
- ====================================
- - Sanitize and prevent SQLi in getObject calls expecting PK values
- - Make isValidClause a public static method in xPDOQuery
- - Allow empty sort direction
- - Revert getCriteria change to force scalar params to be PK values
- - Make xPDOQuery::isValidClause a public method
- - Change constructor in PclZip to be PHP 7 compatible
- xPDO 2.5.1-pl (November 14, 2016)
- ====================================
- - Force scalar parameters to be PK values in getCriteria
- - Prevent SQLi in sortby, sort direction, and limit clauses
- - Detect SQLi clauses when no space exists after UNION
- xPDO 2.5.0-pl (February 3, 2016)
- ====================================
- - Optimize and improve logging
- - Fix undefined index notice for model indexes
- - Allow definition of primary key fields without legacy index="pk"
- - Add ARRAY_EXTENDED logTarget that stores an array of data for each log entry
- xPDO 2.4.1-pl (September 22, 2015)
- ====================================
- - Optimize xPDO::getOption() for significant performance increase
- xPDO 2.4.0-pl (June 26, 2015)
- ====================================
- - Add ability to override mysql table engine via options
- - Allow custom attributes in schema object elements
- - Allow silent failure of xPDOVehicle validators
- - Only show parseBindings results if debug set
- - Accept benign values that contain the word union
- - Allow xPDOObject::remove() to remove dependents with composite relationships
- - Respect engine specified in mysql schema
- xPDO 2.3.0-pl (July 15, 2014)
- ====================================
- - Allow recursive xPDOObject::remove() beyond one level
- - Allow schema to define callbacks for field
- - Remove deprecated xPDO::getMicroTime() method
- - Reject xPDOQuery conditions with SQL injection attempts
- - Resolve xPDO::parseBindings() error from /e modifier fix
- - Fix xPDO::getCount() to work with queries containing group by
- - Replace reflection of PHP_SELF with SCRIPT_NAME in xPDO::log()
- - Replace use of deprecated /e preg_replace modifier
- - Add dependency metadata/API to xPDOTransport
- xPDO 2.2.9-pl (September 12, 2013)
- ====================================
- - Improve accuracy of query statistics
- - [#10183] Fix cache entry removal on xPDOObject::remove()
- xPDO 2.2.8-pl (August 26, 2013)
- ====================================
- - [#9864] Identify compound PK's properly in xPDOQuery::parseConditions()
- xPDO 2.2.7-pl (April 9, 2013)
- ====================================
- - [#9793] Preserve numeric keys in xPDOObject::getMany()
- xPDO 2.2.6-pl (March 16, 2013)
- ====================================
- - [#7452] Fix sql errors with decimal fields in some locales
- - [#9062] Fix problem loading multiple xPDOQuery driver classes
- - [#9629] Fix notice in xPDOConnection::getOption() when $options not an array
- - [#9020] Prevent xPDOZip from attempting to add empty targets
- - [#9272] Implement NFS-safe flock-independent file locking
- - [#9020] Allow xPDOZip to pack empty directories
- - [#9023] Fix removal of subdirs when deleteTop = false in xPDOCacheManager::deleteTree()
- - [#8962] Prevent xPDOSimpleObject from overwriting xPDOObject map entry
- - [#8423] Fix tmpLockFile naming issue in xPDOCacheManager::lockFile()
- - [#8440] Add memcached implementation of xPDOCache (xPDOMemCached)
- - [#8423] Add flock-independent file locking to xPDOCacheManager::writeFile()
- - [#6930] Fix improper escaping of $ in parseBindings
- - [#8148] Prevent update from criteria using raw NATIVE_KEY on install
- - [#8320] Preserve order of $columns in xPDOObject::getSelectColumns()
- - Deprecate xPDO->getMicroTime()
- - [#8176] xPDO->updateCollection() fails to set NULL values
- xPDO 2.2.5-pl (June 1, 2012)
- ====================================
- - [#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 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()
- xPDO 2.2.4-pl (April 2, 2012)
- ====================================
- - Refactor aggregate/composite criteria support for targeting local/foreign
- - Fix xPDOObject::_loadInstance for proper loading of graph objects
- - Refactor schema parsing using SimpleXML
- - Fix related_object installation in xPDOObjectVehicle
- - Add criteria support to aggregates and composites
- xPDO 2.2.3-pl (March 15, 2012)
- ====================================
- - Add xPDOScriptVehicle for manifest-based PHP scripts
- - Implement xPDOQuery::having() method
- - Add xPDO::getInstance() for singleton support
- xPDO 2.2.2-pl (January 4, 2012)
- ====================================
- - Fix handling of driverOptions in xPDOConnection instances
- - [#6240] Derivative-only fields marked lazy in base classes
- xPDO 2.2.1-pl (December 2, 2011)
- ====================================
- - [#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 issue with preg_replace in xPDO::parseBindings() method
- - [#5970] Fix issue with subpackages and derived classes that would cause nonsensical error
- xPDO 2.2.0-pl (November 15, 2011)
- ====================================
- - [#6046] Fix getDescendants() to recursively get derivative classes
- - [#6045] Fix setPackageMeta() to work with sub-packages
- - [#6044] Allow STI derivatives to supplement base class metadata
- - [#6043] Allow xPDO->getSelectColumns() to be overridden in xPDOObject derivatives
- xPDO 2.2.0-rc2 (October 20, 2011)
- ====================================
- - Fix xPDOAPCCache and xPDOWinCache multiple_object_delete features
- - Fix various bugs with database result set caching
- - Refactor escapeChar and quoteChar to xPDODriver classes
- - [#2432] Store relative path of files preserved by xPDOVehicle file resolvers
- - [#5904] Provide access to name and version in Transport packages
- xPDO 2.2.0-rc1 (September 7, 2011)
- ====================================
- - Add support for field aliases to be defined in the schema
- - Add xPDOObject->addFieldAlias for creating references to actual fields
- - Add xPDOObject->getIterator for iterating aggregate and composite relations
- - [#4590] Allow multiple connections to be defined for master/slave configurations
- - [#2883] Add xPDOObject->getGraph() and add feature in toArray() to return related object fields
- - Add xPDO->getGraph() method to infer relation graphs
- - [#4275] Add xPDO->updateCollection() method
- - [#4275] Enable UPDATE support and add set() method to xPDOQuery
- - [#5306] Add xPDOQuery->distinct() method
- - Change xPDO::getService() method to indicate it returns a reference
- - Avoid unsetting the current package if xPDO->addPackage() fails
- - Avoid updates to existing package definitions unless path/prefix changes
- - Remove redundant call to $this->setPackageMeta() in xPDO->setPackage()
- - Ensure xPDO::$classMap derivative entries are unique
- - [#5197] Provide map of derivative classes for introspection
- - [#5147] Fix xPDOIterator ignoring criteria that is not already an object
- xPDO 2.1.5-pl (July 5, 2011)
- ====================================
- - [#5084] Fix various xPDO::exec() calls to check for false value properly
- - [#4877] Fix nested conjunctions infecting parent conjunctions
- - [#5042] Prevent additional columns defined in derivative classes being marked lazy
- xPDO 2.1.4-pl (May 23, 2011)
- ====================================
- - 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 2.1.3-pl (May 3, 2011)
- ====================================
- - [#4577] Remove calls to xPDO->log() in xPDOCacheManager->writeFile()
- - Add options to xPDOCacheManager::writeFile() to allow multiple attempts when exclusive locks fail
- xPDO 2.1.2-pl (March 25, 2011)
- ====================================
- - Add xPDO->getValue() convenience method for retrieving single column from single row
- - [#4128] Fix Windows drive issue in xPDOTransport->pack()
- - [#4125] Fix bug getting composites in xPDOObject->getFKClass()
- - [#4097] Make constraint names unique for sqlsrv
- - [#4047] Fix bug adding single file to zip in xPDOZip
- - [#3971] Add xPDOManager API for manipulating table structures
- xPDO 2.1.1-pl2 (February 21, 2011)
- ====================================
- - Fix error in xPDOObject->getOption() when handling option overrides
- xPDO 2.1.1-pl (February 20, 2011)
- ====================================
- - [#2909] Make auto-table creation optional
- - Add options and default parameters to xPDOObject->getOption()
- - [#3174] Use xPDOQuery alias to build join criteria for getMany()
- - [#3342] Fix use of deprecated split() function in xPDORevisionControl
- - Fix modCacheManager->writeFile() not to truncate files if a mode is specified
- xPDO 2.1.0-pl2 (February 16, 2011)
- ====================================
- - Avoid PHP warning from fopen in xPDOFileCache->get()
- xPDO 2.1.0-pl (February 16, 2011)
- ====================================
- - Add proper cache file locking and format handling
- - Add OPT_CACHE_FORMAT constant to xPDO
- - Add support for CACHE_SERIALIZE format in xPDOFileCache implementation
- - 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 in xPDOAPCCache
- - 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 date/time issues (sqlsrv)
- xPDO 2.0.1-pl (December 27, 2010)
- ====================================
- - [#2927] Add ENGINE option to xPDOManager_mysql->createObjectContainer()
- - Allow columns with explicit AS, ., or ( to not be escaped
- - Override xPDOQuery->parseConditions() for sqlsrv
- - Use SET IDENTITY INSERT in xPDOObjectVehicle->install() (sqlsrv)
- - Remove LIMIT from UPDATE in xPDOObject->save()
- - Fix handling of bigint with timestamp phptype (sqlsrv)
- - Set host property from server property in xPDO::parseDSN()
- - Remove check for errorCode on xPDO->connect()
- - [#2901] Add transient parameter to xPDO->call() for use with non-db classes
- xPDO 2.0.0-pl (November 27, 2010)
- ====================================
- - [#2788] Escape database name in xPDOGenerator_mysql::writeSchema()
- - Add xPDOAPCCache implementation of xPDOCacheProvider
- - Refactor usages of xPDO::getObjectLoader() to use xPDO::call()
- - Add xPDO::call() allowing db-specific static method overrides
- - Add xPDOWinCache implementation of xPDOCache provider
- - Add workaround to drop a database for sqlsrv
- - Add workaround to trim PDO::quote() results for sqlsrv
- - Add virtual support for LIMIT..OFFSET to sqlsrv driver
- - Set dbname property from database property in xPDO::parseDSN()
- - Introduce pdo_sqlsrv driver support
- xPDO 2.0.0-rc3 (October 25, 2010)
- ====================================
- - Add xPDO::getIterator() allowing more efficient traversing of result sets
- - Add script to upgrade older xPDO mysql models to SCHEMA_VERSION 1.1
- - Add missing attributes in xPDOSimpleObject map index element
- - Do not generate primary key index for xPDOSimpleObject derivatives
- - Introduce xPDO::SCHEMA_VERSION and set it to 1.1 to distinguish new format for indexes
- xPDO 2.0.0-rc2 (October 20, 2010)
- ====================================
- - Use new index metadata in maps to generate indexes for mysql
- - Fix mkdir issue in xPDOGenerator::parseSchema()
- - Improve schema representation of mysql indexes in xPDOGenerator_mysql::writeSchema()
- - [#2579] Fix xPDOFileVehicle not calling resolve on uninstall()
- - [#2414] Fix phpdoc inaccuracy and redundant assignment
- - Fix caching error in xPDOObject::loadCollectionGraph()
- - Make xPDOQuery::prepare() always call construct()
- - [#2401] Clarify xPDO::removeCollection() return value
- - [#2419] Add defined join criteria when custom criteria is provided to xPDOObject::getMany()
- - [#2416] Add :NOT IN operator support for array value bindings
- - [#2404] Allow xPDOTransport::install to be aborted when an xPDOVehicle fails to install
- - [#XPDO-64] Fix xPDO::logTarget not to lose options after first call to xPDO::_log()
- - Fix xPDOObject::_loadInstance() to work with xPDOQuery::hydrateGraphNode() properly
- - Fix bug in xPDOObject::load() when caching by primary key
- - Fix bug with xPDOManager_sqlite::removeSourceContainer()
- - [#XPDO-62] Make getObjectGraph() respect class_key
- - Add IF EXISTS to DROP DATABASE statement in xPDOManager_mysql::removeSourceContainer()
- - Add xPDO::getIndexMeta() method
- - Fix invalid call to xPDOManager::getPhpType() in xPDOGenerator::writeSchema()
- - [#XPDO-74] Fix bug in xPDOObject::save() when updating rows with compound primary keys
- - [#XPDO-72] Fix invalid call to xPDOManager::getPhpType() in xPDOGenerator::parseSchema()
- - Fix accessibility of xPDOTransport::_unpack()
- - Divert excess log output from xPDOVehicle classes to LOG_LEVEL_DEBUG
- - Remove extra slash in path when generating class files
- - Simplify includes of parent classes
- - Add xPDODriver to better abstract driver-specific attributes and behavior
- - Fix several references to xPDO::$_escapeChar in xPDOQuery
- - Split xPDO::$_escapeChar into $_escapeCharOpen and $_escapeCharClose
- - Simplify path for require_once in platform class templates
- - Trim property keys and values in xPDO::parseDSN()
- - [#XPDO-66] Add xPDOTransport::ARCHIVE_WITH to allow explicit use of PclZip even if ZipArchive exists
- - Add xPDO::literal() method for SQL literal strings
- - Introduce pdo_sqlite driver support
- - Fix exception logging in xPDOManager_mysql
- - Fix xPDO::parseDSN() for sqlite DSN format
- - Remove xpdo.connect.inc.php (no longer used)
- - Migrate to git
- - [#XPDO-46] Implement support for IN operator using array as binding
- - [#XPDO-51] Fix incorrect criteria variable when caching individual rows from collections by primary key
- - [#XPDO-53] Fix bug preventing save of related objects when a key owner is foreign and not new
- - Refactor xPDO::getManager() and xPDOManager::getGenerator() to work with other db engines besides mysql
- - Replace direct references to xPDO::$_escapeChar with new xPDO::escape()
- - Move xPDOGenerator::getPHPType() to xPDOManager
- - Fix non-static call to xPDO::parseDSN() in xPDO::__construct()
- - Make sure db-specific connect_file exists before trying to include it
- - Remove unnecessary overridden _initFields() in xPDOObject derivatives
- - [#XPDO-54] Fix xPDOQuery to properly recognize MySQL Fulltext search expression as a conditional clause
- - [#XPDO-52] Fix fatal error when xPDOManager::createObjectContainer() cannot prepare a PDOStatement
- - xPDO::log() and xPDO::$logTarget will now accept an ARRAY target with an option that is a reference to the var
- - xPDO::connect() should return false on Exception
- - Ensure driverOptions is set as an empty array if the value passed is not an array
- - Log PDOException messages in xPDO::connect()
- - [#XPDO-49] Fix inconsistent static and non-static calls to fromJSON() and toJSON() methods on xPDO
- - Added xPDO::getService to load service classes
- - Commented out deprecated code in xPDOVehicle dealing with PHP validators
- - Fixed typo in xPDOVehicle where $r should be $v
- - [#XPDO-40] Fixed getCount to work when passing a criteria with a class alias set.
- - xPDOTransport: Fix several E_STRICT errors caused by static calls to methods not defined as static.
- - xPDOTransportVehicle: Implemented missing _compilePayload(), and fixed errors in _installTransport() and uninstall().
- - xPDOValidator: Fix several E_STRICT errors caused by inconsistent method signatures in xPDOValidationRule::isValid() derivatives.
- - Fixed bug in xPDOTransportVehicle::put() referring to xPDOFileVehicle.
- - xPDOManager_mysql::createSourceContainer() and removeSourceContainer() will use provided connection properties or default to current xPDO instance configuration.
- - Removed dependency on mysql extension for xPDOManager_mysql::createSourceContainer() and removeSourceContainer() implementations.
- - Refactored xPDOManager to be an abstract class rather than calling static methods in derivatives.
- - Added support for xPDOObjectVehicle::uninstall() to operate on related_objects.
- - Fixed bug in xPDOObjectVehicle::uninstall() not getting UPDATE_OBJECT value properly.
- - Added xPDOTransport::UNINSTALL_OBJECT attribute and support in xPDOObjectVehicle::uninstall() [default value is true].
- - Refactored xPDOCacheManager to determine new folder/file permissions via umask().
- - Modified xPDOQuery_mysql::select() to trim the comma-delimited fields specified after explode()'ing the string.
- - Modified xPDOVehicle::resolve() to return true if xPDOTransport::RESOLVE_FILES is set to false with file resolver types.
- - Modified xPDOFileVehicle::install() to check xPDOTransport::INSTALL_FILES is not set to false before checking for the existence of the defined fileSource.
- - Fixed xPDOVehicle::resolve() and xPDOFileVehicle::install() to prevent them from attempting to preserve files that do not exist.
- - Added xPDOTransport::INSTALL_FILES and xPDOTransport::UNINSTALL_FILES to make xPDOFileVehicle behavior consistent with RESOLVE_FILES and RESOLVE_FILES_REMOVE.
- - Updated xPDOVehicle::resolve() to properly detect if resolved when restoring preserved file archives.
- - Updated xPDO and xPDOCriteria constructors to use proper PHP5 __construct().
- - Added xPDOTransportVehicle class to allow transport packages to be embedded in other transport packages.
- - Updated copyright dates.
- - [#XPDO-42] Fixed error with xPDOQuery::parseConditions() ignoring NULL bound values.
- - Fixed xPDOCriteria::toSQL() to properly handle NULL values.
- - Updated/fixed xPDOZip implementation and enabled it as the preferred zip provider for xPDOTransport.
- - Made xPDOVehicle an abstract class.
- - [#XPDO-4] Allow nesting conditions arbitrarily deep using simple nested array format.
- xPDO 2.0.0-rc1 (LastChangedRevision: 389, LastChangedDate: 2009-12-31 11:18:40 -0700 (Thu, 31 Dec 2009))
- ====================================
- - [#XPDO-27] Allow getCount() to work with Collection Graphs.
- - [#XPDO-38] Modified xPDOQuery to determine conjunctions for condition groups based on conjunction specified for first condition in the group.
- - Added changelog.txt
|