[TASK] Updated release notes for 1.4.0, updated version number
[Packages/TYPO3.CMS.git] / typo3 / sysext / extbase / ChangeLog.txt
old mode 100755 (executable)
new mode 100644 (file)
index c685112..f040ded
@@ -1,7 +1,335 @@
 ChangeLog for Extbase
 =====================
 
-Changes for 1.3.0 Beta 2:
+Changes for 1.4.0:
+==================
+included in TYPO3 4.6.0.
+
+This release features more than 100 changes, most of them being bugfixes in all areas of Extbase.
+Thanks every community member for bug reports, submitting patches and reviewing! Extbase
+would not be possible without you!
+
+!!! New Property Mapper, updated MVC stack
+------------------------------------------
+
+The Property Mapper has been completely rewritten in FLOW3, and this has also been backported
+to Extbase. The new property mapper is very configurable and extensible.
+
+Furthermore, the MVC stack has been adjusted to be in sync with FLOW3 again. However, the new
+behavior is ONLY ACTIVATED MANUALLY. We suggest that you activate it for your new extensions
+by inserting:
+
+       plugin.tx_[yourExtensionName].features.rewrittenPropertyMapper = 1
+
+The documentation for the new property mapper can be found at
+
+http://flow3.typo3.org/documentation/guide/partiii/propertymapping.html
+
+They also apply to Extbase.
+
+!!! Updated Validation API
+--------------------------
+
+The Validation API has also changed, but this is only a breaking change if you do NOT subclass
+ *AbstractValidator*, but implement *ValidatorInterface* yourself. In this case, you need to
+adjust your custom validator to support the new API.
+
+Dependency Injection for Domain Objects
+---------------------------------------
+
+Dependency Injection is now also possible for reconstituted Domain Objects.
+
+Signal / Slot implementation
+----------------------------
+
+The "Signal / Slot" feature has been backported from FLOW3, implementing a future-proof
+alternative to hooks.
+
+Command Controller
+------------------
+
+Use it from commandline like this:
+       ./cli_dispatch.phpsh extbase <command identifier> --argumentName=value
+
+for example:
+       ./cli_dispatch.phpsh extbase help
+
+NOTE: Unlike in FLOW3 Commands have to be registered explictly
+in ext_localconf.php in order to be callable via CLI:
+       if (TYPO3_MODE === 'BE') {
+               $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['extbase']['commandControllers'][] = 'Tx_MyExtension_Command_FooCommandController';
+       }
+
+
+Full Changes for 1.4.0 beta1 - 1.4.0:
+=====================================
+[BUGFIX] Pootle: Multi-line labels are not rendered properly
+[TASK] English XLIFF files should not contain target element
+[TASK] Fix CGL issues on "else if" constructs
+[TASK] Update version to 1.4.0-rc1
+[FEATURE] Backport CommandController Implementation
+[!!!][TASK] Disable rewritten property mapper by default
+[BUGFIX] Removing "Repository" in class name makes extensions unusable
+[BUGFIX] Default error FlashMessage has wrong severity
+[BUGFIX] Fix check against @ignorevalidation annotations
+[BUGFIX] ConfigurationManager use FrontendSimulator only if neccessary
+[TASK] Increase version number
+[BUGFIX] Default action is not properly resolved
+[FEATURE] Descriptive error on invalid action name
+[BUGFIX] Replaced call to deprecated t3lib_div::testInt()
+[FEATURE] Skip default controller and action in generated URIs
+[FEATURE] Setting a scheme for a URI
+[BUGFIX] Don't clone ContentObject in ConfigurationManager
+[TASK] Remove deprecated methods & properties
+[BUGFIX] Tx_Extbase_Utility_Localization::translate() must return NULL for non-existing keys
+[BUGFIX] Clone ContentObject
+[BUGFIX] Fix method visibility of AbstractConfigurationManager::getTypoScriptSetup()
+[TASK] Convert XLIFF files to Tab indentation
+[BUGFIX] XLIFF: Approved attribute is on wrong element
+[+BUGFIX] Fixing incorrect references to F3 classes
+[+BUGFIX] Added missing initializeView method in EmptyView
+[+BUGFIX] Fix classname of Exception, ConfigurationManager
+
+Full Changes for 1.4.0 beta1:
+=============================
+[!!!][TASK] Enable rewritten property mapper by default
+[+FEATURE] Extbase (Persistence): Allow pid of object to be set from action-controller. Thanks to Michael Budnick and Balisky Christophe. Resolves: #7572
+[FEATURE] Speed up ObjectAccess
+[+FEATURE] Extbase (Persistence): Allow removing previously set limit with unsetLimit(). Resolves: #27445
+[-TASK] Remove autoloader. Thanks to Christian Kuhn. Resolves: #28249
+[+FEATURE] introduce signal in MVC/Dispatcher
+[TASK] Correct classnaming for Tx_Extbase_Tests_Unit_BaseTestCase
+[-BUGFIX] remove datecheck on timezone test
+[+FEATURE] remove usage of deprecated methods in unit-tests
+[BUGFIX] Adjust unit tests to changes
+[BUGFIX] create ClassSchema with ObjectManager::create()
+[BUGFIX] TypeHandling class not found. This is a hotfix for #28121. Resolves: #28121
+[TASK] Extbase (Utility): Add service for TypeHandling. Related: #13864
+[+BUGFIX] Extbase: CGL: Convert case of acronyms from UPPERCASE to CamelCase. Resolves: #12189
+[TASK] Extbase: Use strpos() instead of strstr() where possible
+[+BUGFIX] allow skipping of arguments in signal dispatch
+[TASK] Adjust PHP dependency in ext_emconf.php
+[FEATURE] Add check for loaded DBAL to requirements check
+[TASK] Recreate ext_autoload.php. Resolves: #27680
+[!!!][+FEATURE] (MVC): Modify MVC stack to use the new property mapper. Resolves: #27656
+[!!!][+FEATURE] (Validation): Adjusted and re-done Validation API. Resolves: #27653
+[+FEATURE] (Property): Add new property mapper. Related: #27059
+[+FEATURE] (Persistence): Synchronize PersistenceManagerInterface more with FLOW3. Resolves: #27657
+[+FEATURE] (Reflection): Object Access can now access private properties. Resolves: #27652
+[+FEATURE] (Utility): synchronize TypeHandling class with FLOW3. Resolves: #27651
+[!!!][FEATURE] Improve error and message handling. Resolves: #27650
+[TASK] (MVC, Property): Deprecation of the the old property mapper
+[+FEATURE] (Configuration): Feature flag implementation
+[+BUGFIX] (Persistence): return correct objectCountByQuery when query contains left join and no limit. Fixes: #13075
+[BUGFIX] Adapt cache configuration to 4.6. Resolves: #27546
+[+BUGFIX] (SignalSlot): Fix unit tests. Resolves: #27550
+[+BUGFIX] Make ObjectManager::isRegistered work
+[+FEATURE] backport SignalSlotDispatcher
+[+BUGFIX] Fix localization handling to support XLIFF. Resolves: #27411
+[+BUGFIX] Extbase (Validation): E-mail address with space at the end is invalid. Thanks to Marc Bastian Heinrichs. Resolves: #27305
+[+BUGFIX] Throw exception if a class to be reflected does not exist. Fixes: #8718
+[TASK][!!!] Fix localization handling to support XLIFF. Resolves: #27411
+[TASK] Extbase (Validation): Clean up tests for FloatValidatorTest and Integer ValidatorTest
+[+BUGFIX] Extbase (Persistence): Use correct language-uid for translations. Thanks to Benjamin Mack. Resolves: #26521
+[TASK] Extbase (Persistence): Remove duplicate registration in identity map. Thanks to Alexander Stehlik. Resolves: #26875
+[BUGFIX] Fix EmailAddressValidatorTest
+[+FEATURE] Extbase (MVC): Make response format configurable in TypoScript. Thanks to Christian Zenker. Resolves: #9216
+[BUGFIX] Docu, AbstractController: Clearer difference of forward/redirect. Resolves: #7900
+[BUGFIX] Fix case of setChildSortByFieldName in DataMapFactory. Resolves: #27334
+[+BUGFIX] (Property) Fixed only adding objects to ObjectStorage. Thanks to Thomas Maroschik. Fixes: #13288
+[+TASK] Extbase: Move static typoscript utility methods to a service. Related: #13864
+[+TASK] Extbase: Move most of the static extension utility methods to a service. Related: #13864
+[+BUGFIX] baseUri is added on external links. Thanks to Michael Feinbier for this fix! Resolves: #10258
+[+BUGFIX] (Testing): Fix wrong doc comment in BaseTestCase. Resolves #13695
+[+BUGFIX] Cloning a ValueObject should not set its uid to NULL. Resolves #26772
+[+BUGFIX] ObjectStorage->toArray(): fix array pointer problem. Resolves #9117
+[+BUGFIX] Persistence: Fixed building unionStatement from opposite. Thanks to Christian Zindel. Resolves #13782
+[+BUGFIX] Persistence: Update tstamp column on objects removal. Thanks to Michel Nederlof. Resolves #10634
+[+BUGFIX] correct warning in ObjectStorage & LazyObjectStorage
+[~CLEANUP] some smaller comment cleanups
+[+TASK] Extbase: Moved static cache utility class to a service. Relates to: #13864
+[+FEATURE] implement ObjectManager::isRegistered()
+[+TASK] improve exception message in Argument
+[TASK] Performance tuning in container by moving some information into the cached ClassInfo object.
+[~BUGFIX] avoid fe_user's type to be overridden
+[+BUGFIX] Avoiding cHash for nonCacheable actions prevent action from being called. Related: #13970
+[+BUGFIX] MVC: Make forwarding of objects work. Resolves #9867
+[~CLEANUP] correct function parameter types
+[+BUGFIX] Persistence: return ObjectCount return value as an integer. Thanks to Georg Ringer. Resolves #13151
+[+BUGFIX] Revert incorrect deletion of Query::count() & Query::withUid(). Relates: #13745
+[~CLEANUP] apply naming convention for flexForms
+[+TASK] Move FlexForm parsing to a dedicated Service. Thanks to Rens Admiraal. Resolves #13032
+[!!!][+BUGFIX] make backend-modules in web use new pagetree by default
+[~CLEANUP] smaller deprecated clean-ups
+[+FEATURE] Extbase: Enable Dependency Injection for Domain Models. Thanks to Pascal Jungblut. Resolves #11311
+[+BUGFIX] (Persistence) Make Typo3QuerySettings exchangeable. Resolves #13191
+[+BUGFIX] (Persistence) clone setDefaultQuerySettings for new queries. Resolves #12702
+[~BUGFIX] correct annotations of Tx_Extbase_Persistence_Mapper_DataMapper. Resolves #13185. Thanks to Simon Schaufelberger.
+[~TASK] (FlashMessages) finish the renaming of flashMessages
+[+BUGFIX] (Configuration): Adjusted ConfigurationManagerInterface Interface to implementation
+[~TASK] Extbase: Raising version from 1.3.0 to 1.4.0-devel
+[+TASK] Extbase (MVC): Removed duplicated code from RequestBuilder. Thanks to Peter Niederlag. Resolves #12569.
+
+
+Changes for 1.3.0:
+==================
+included in TYPO3 4.5.0 LTS.
+
+This release fixes an important bug in the persistence layer, which caused related objects not to be updated.
+
+Full Changes for 1.3.0:
+=======================
+
+[+BUGFIX] Extbase (Tests): reset added t3lib_div instances in UriBuilder & Extension tests
+[+BUGFIX] Extbase (Persistence): Fixed updating of related objects. Thanks to Björn Steinbrück and Bastian Waidelich for digging into this issue. Resolves #9270, #9182, #10211.
+       This is the second attempt after having reverted the first one in r3920. The patch includes some clean-up. Important additional changes:
+       * The objects within an ObjectStorage are now added to the queue. This is necessary to persist changes made to those contained objects without having changed the composition of objects.
+       * Moved the _memorizeCleanState() from the AbstractEntity to the AbstractDomainObject. In theory ValueObjects are immutable, but we need this as sometimes ValueObjects are stored in two steps (1. to get a UID, 2. to persist its properties). Maybe we have to recheck this for 1.4.
+       * Fixed some possible problems with detecting an ObjectStorage (namely SplObjectStorage->getUid()).
+[+TASK] Extbase (Persistence): Added two properties to describe a weird PHP behavior if calling current() on an ObjectStorage.
+[+BUGFIX] Extbase (MVC): Fixed argument order of Tx_Extbase_Utility_Extension::isActionCacheable() call in UriBuilder
+[+TASK] Extbase (DomainObject): Added setPid() and getPid() to the DomainObjectInterface and removed the "final" keyword.
+[~TASK] Extbase: Moved isActionCacheable() from UriBuilder to Utility/Extension helper class
+       Moved the protected method to a public static functions in Tx_Extbase_Utility_Extension
+       and added respective unit tests.
+       Note: We're not happy with all the public static functions in Utility/Extension.php
+       but that's currently the place for those helper functions.
+[+TASK] Extbase (Utility): implemented validation of arguments passed to sql statements in Tx_Extbase_Utility_Cache. (resolves #11978)
+
+Changes for 1.3.0 RC1:
+======================
+included in TYPO3 4.5.0 RC1.
+
+This release features many bugfixes, in the following areas:
+* Persistence - invalid SQL has been fixed at various places
+* MVC - the URI Builder can now handle cached / uncached actions correctly
+* Improved error handling to catch some configuration errors
+* Localization - TypoScript overrides for locallang keys with dot inside now works (_LOCAL_LANG.foo.bar)
+* Persistence - added "pid" property and getter and setter to AbstractDomainModel; thus you can now move
+  domain objects to different pages. However, this feature has *no support for workspaces* yet.
+* Dependency Injection - now allows the injection of prototypes (see below)
+* Configuration - for defining the Storage PID, one can use arbitary TypoScript objects (see below)
+
+Dependency Injection Improvements
+---------------------------------
+
+Now, Prototype objects are allowed to be injected into other objects. This means the following cases
+are supported:
+
+* Singletons which need Singletons (most common)
+* Singletons which need Prototypes (very uncommon,
+  as it usually hints at the fact that the injected
+  prototype should be a singleton). In this case,
+  WE WRITE A DEVLOG MESSAGE
+* Prototypes which need Singletons
+* Prototypes which need Prototypes
+
+TypoScript Storage PID Improvements
+-----------------------------------
+
+The persistence.storagePid now has stdWrap properties so the storagePid can be set dynamically.
+Now follows an example for use in the Frontend:
+       plugin.tx_extkey.persistence.storagePid.cObject = TEXT
+       plugin.tx_extkey.persistence.storagePid.cObject.value = 8,3
+... and this is how you can use it in the backend:
+       module.tx_extkey.persistence.storagePid.cObject = TEXT
+       module.tx_extkey.persistence.storagePid.cObject.value = 8,3
+
+Full Changes for 1.3.0 RC1:
+===========================
+[+BUGFIX] Extbase (Object): constructor injection now works if default value for a dependency is NULL. Thanks to Lienhart Woitok! Resolves #11623
+[+BUGFIX] Extbase (Object): Allow injection of prototypes via dependency injection. Resolves #12013
+[+BUGFIX] Extbase (Persistence): Use sql_free_result() in Typo3DbBackend to free result memory. Resolves #10957
+[~BUGFIX] Extbase (Persistence): fixed an wrong referenced exception (resolves #12403)
+[~BUGFIX] Extbase (Persistence): make Tx_Extbase_Persistence_Repository::remove() handle freshly created objects right. (resolves #11128)
+[+BUGFIX] Extbase (MVC): UriBuilder automatically added a cHash even on links to nonCacheable actions where this is not needed/recommended (resolves #8565)
+[~BUGFIX] Extbase (Persistence): made union statement on comma seperated list use find_in_set (Thanks to Marc Bastian Heinrichs) (resolves #9772)
+[~FOLLOWUP] Extbase (Utility): allow clearPageCache() to clear single, multiple and all pageCaches. (resolves 11978)
+[+TASK] Extbase (Utility): allow clearPageCache() to clear single, multiple and all pageCaches.
+[+BUGFIX] Extbase (MVC): Improve Error Handling in Request Builder. Resolves #11302
+[+BUGFIX] Extbase (Persistence): remove superfluous require_once statements. Thanks to Oliver Klee. Resolves #12324
+[+BUGFIX] Extbase (Tests): Remove require_once of phpunit testclasses. Thanks to Oliver Klee. Resolves #12323
+[+BUGFIX] Extbase (Utility): Make _LOCAL_LANG override work with dots. Thanks to Thomas Maroschik. Resolves #12121
+[+BUGFIX] Extbase (Persistence): Fixed using the correct columnname for contains comparison with RELATION_HAS_MANY and empty parentKeyFieldName. Resolves #11048
+[+BUGFIX] Extbase (Persistence): Added the missing pid property to the AbstractDomainModel. Related to #11361
+[+BUGFIX] Extbase (Persistence): Language Oberlay now works with page table as well. Thanks to Andre Stoesel. Resolves #11319
+[+BUGFIX] Extbase (Persistence): The QueryObject gets cloned now in the getFirst() method of the QueryResult (as it was intended). Thanks to Sebastian Fischer. Resolves #11855.
+[+BUGFIX] Extbase (Bootstrap): Bootstrap calls initialize on reflectionService if it's already initialized. Resolves #12346, resolves #12156
+[+BUGFIX] Extbase (Persistence): Fix equals constraint with $caseSensitive FALSE (closing bracket missing). Thanks to Alexander Berl. Resolves #10781
+[+BUGFIX] Extbase (Reflection): ObjectAccess::isPropertyGettable works for ArrayAccess objects. Resolves #10148
+[+BUGFIX] Extbase (Configuration): Allow StoragePid to be manually defined by TS. Thanks to Rens Admiraal! Resolves #8397
+[+BUGFIX] Extbase (Configuration): Fix warning in AbstractConfigurationManager. Resolves #11631
+[+BUGFIX] Extbase (Object): Disabling Dependency Injection for injectSettings method. Resolves #11011
+
+
+Changes for 1.3.0 Beta 4:
+=========================
+included in TYPO3 4.5.0 Beta 4.
+
+This release contains numerous bugfixes, and a few small features:
+
+* Tx_Extbase_Utility_Extension::registerPlugin() now has a fourth parameter $pluginIconPathAndFilename
+  that you can set to the path of an icon, that will be displayed in the plugin dropdown in the backend.
+  You can use it like:
+  Tx_Extbase_Utility_Extension::registerPlugin(
+               $_EXTKEY,
+               'MyPlugin',
+               'My Plugin description',
+               t3lib_extMgm::extRelPath($_EXTKEY) . 'Resources/Public/Icons/someIcon.gif'
+  );
+* Hidden Records in Workspaces now work
+  Before, if t3lib_pageSelect::getRecordOverlay returned FALSE (if
+  no translation is found), a fatal error occured:
+  PHP Catchable Fatal Error: Argument 2 passed to Tx_Extbase_Persistence_Mapper_DataMapper::getTargetType()
+  must be an array, boolean given, called in Persistence/Mapper/DataMapper.php
+
+Full Changes for 1.3.0 Beta 4:
+==============================
+
+[+TASK] Extbase (Tests): Fixed a repository unit test so that it works in CLI mode
+[+TASK] Extbase (Tests): Fixed Extbase unit tests
+[+BUGFIX] Extbase (Persistence): Hidden Records in Workspaces now work
+[~TASK] Extbase: Fixed line endings (Windows to Unix).
+[~TASK] Fluid (Tests): Fixed some more testcase class names and some unit tests
+[+FEATURE] Extbase (Utility): Add support for custom specify custom plugin icon. Resolves #11179
+
+Changes for 1.3.0 Beta 3:
+=========================
+included in TYPO3 4.5.0 Beta 3.
+
+This release features numerous stability improvements, the biggest one
+being a re-written core of the Object Manager, such that Lifecycle Methods
+are supported now. This means, that a method "initializeObject()" gets called
+as soon as all dependencies are injected and initialized.
+
+Additionally, Extbase didn't work in all cases in the TYPO3 Backend. This has
+also been improved, so Extbase (again) works in the backend
+with an empty page tree.
+
+Full Changes for 1.3.0 Beta 3:
+=============================
+
+[+BUGFIX] Extbase (Tests): Fixed Tx_Extbase_MVC_Controller_AbstractController_testcase. Thanks to Oliver Klee. Resolves #11567.
+[BUGFIX] Extbase (Configuration): Make Extbase work again in Backend
+[!!!][+TASK] Extbase (Object): Rewritten Object Container
+[+BUGFIX] Extbase (MVC): Improve Exception message
+       If one misses the @dontvalidate annotation, he will
+       get a strange error which does not have a hint that
+       the @dontvalidate is missing. Now, the exception message
+       is extended.
+[+API] Extbase (Configuration): Adding getContentObject to API
+[+TASK] Extbase (Reflection): Added deprecation annotation to ObjectAccess::getAccessiblePropertyNames()
+       To stay in sync with FLOW3, the methods getAccessibleProperties() and getAccessiblePropertyNames() to
+       getGettableProperties() and getGettablePropertyNames().
+       For compatibility reasons the old methods will stay in Extbase until version 1.5.
+       Note: you can now check wheter properties are settable as well
+[+FEATURE] Extbase (Reflection): Tx_Extbase_Reflection_ObjectAccess supports stdClass objects now
+       I've backported the ObjectAccess class and its unit tests from FLOW3.
+       Note: FLOW3's implementation allows to specify a third argument for the
+       method getPropertyPath() in order to support Closures.
+       This part is not backported as it's not compatible with PHP < 5.3.
+
+Changes for 1.3.0 Beta 2a:
 ==========================
 included in TYPO3 4.5.0 Beta 2.
 
@@ -26,8 +354,10 @@ The main changes are:
 * Fixed Tx_Extbase_Domain_Model_FrontendUser (and marked the old API as deprecated)
 * Bugfixes related to Lazy Loading
 
-Full Changes for 1.3.0 Beta 2:
+Full Changes for 1.3.0 Beta 2a:
 ==============================
+[+BUGFIX] Extbase (Configuration): change the order of methods to determine the current pageId for backend modules, which is used to fetch the TS framework configuration. Fixes #11205
+[+TASK] Extbase (Object): Make sure the class info cache is returning valid objects
 [+BUGFIX] Extbase (Persistence): Persistence_Backend::getIdentifierByObject should work with LazyLoadingProxy
        getIdentifierByObject should check if object is an instance of Tx_Extbase_Persistence_LazyLoadingProxy and should return the
        identifier of the real object.