[TASK] Add first level cache for the query cache
[Packages/TYPO3.CMS.git] / typo3 / sysext / extbase / ChangeLog.txt
1 ChangeLog for Extbase
2 =====================
3
4 Changes for 6.2
5 ===============
6
7 !!! Backport recursive and allowing empty validation from Flow
8 --------------------------------------------------------------
9
10 Validation of object structures in extbase is now done recursively.
11 If a tree of objects is created by the new property mapper, not only the top
12 level object is validated, but all objects.
13
14 In order to make a property required you now need to add the NotEmptyValidator
15 to your property. The return value of validators is now optional.
16
17 Full Changes for 6.2
18 --------------------
19
20 [TASK] Move language include to .xlf
21 [TASK] Replace inject methods with @inject
22 [TASK] CGL, switch(): Indent "case" correctly; no "break" in default
23 [TASK] Replace inject methods with @inject; allow @Flow\Inject
24 [!!!][FEATURE] Backport recursive and allowing empty validation from Flow
25 [FEATURE] Support @Flow\Inject annotations in Extbase
26 [TASK] Improve error message in NotFoundView to identify source
27 [BUGFIX] ActionController must use namespaced object view pattern
28 [BUGFIX] Fix property mapping of checkbox arrays
29 [FEATURE] Enable chaining of set* funtions
30 [BUGFIX] Generation of class information fails with DateTime
31 [BUGFIX] Repair broken unit tests
32 [BUGFIX] findByUid should respect query settings of repository
33 [TASK] Make preperations for backporting Flow validation api
34 [TASK] Mark Extbase\Mvc\Controller\FlashMessageContainer deprecated
35 [FEATURE] Add ObjectManager->getScope like in TYPO3.Flow
36 [BUGFIX] Wrong position for beforeCallActionMethod
37 [FEATURE] Automatically determine page type for URIs with format
38 [FEATURE] Backport Object Type Converter from Flow
39 [TASK] Remove dummy files from ext:extbase
40 [BUGFIX] Mentions of old class names
41 [BUGFIX] Mentions of old class names
42 [BUGFIX] Mentions of old class names
43 [BUGFIX] Fix persisting of lazy object storages
44 [BUGFIX] Incomplete mocking in Bootstrap test
45 [BUGFIX] Fix typo in deprecation description
46 [TASK] Reschedule the removal for the old property mapper
47 [TASK] Raise sysext versions to 6.2.0
48 [TASK] Add latest changes to ChangeLog.txt
49 [BUGFIX] Don't respect sys_language in Backends getObjectByIdentifier
50 [BUGFIX] Fix persisting new objects
51 [BUGFIX] Fix failing unit tests
52
53 Changes for 6.1.0
54 =================
55
56 !!! Introduce explicit saving of modified domain objects
57 --------------------------------------------------------
58
59 In conjunction with the new property mapper the persistence layer
60 saves modified domain objects that failed validation and/or mapping.
61
62 This bugfix aligns the behavior of the persistence layer with Flow
63 and introduces explicit saving of modified domain objects.
64
65 Modified objects now need to be passed through their repository
66 update method in order to be scheduled for saving by the persistence
67 managers persistAll method.
68
69
70 !!! Enable rewritten PropertyMapper as default
71 ----------------------------------------------
72
73 After solving the missing security features and bugfixes
74 the rewritten PropertyMapper is now ready to be used in
75 production environments.
76
77
78 !!! Remove support for TCA setting 'foreign_selector'
79 -----------------------------------------------------
80
81 The TCA setting 'foreign_selector' is a UI feature which can be
82 configured for field in a relation table, when this table
83 is editable using the IRRE feature. Then a selector box
84 is rendered making it possible to select records from a child
85 table.
86
87 In this scenario the relation table itself may contain other
88 editable fields, which should be represented by a domain model.
89
90 The latter is currently not possible with Extbase because
91 'foreign_selector' triggers the DataMapper to resolve a
92 many to many relation to the child table.
93
94 Solution is to remove this behaviour and let the DataMapper
95 resolve the one to many relation to the relation table.
96
97
98 !!! Remove forced STI settings from extbase configuration
99 ---------------------------------------------------------
100
101 The tx_extbase_type setting for fe_users and fe_groups was introduced
102 as a demonstration of Single Table Inheritance handled in extbase.
103 The forced setting brings more problems then doing good in real live
104 scenarios though.
105
106 So the typoscript is dropped, but TCA and sql kept for backwards
107 compatibility reasons.
108
109 Before 6.1 only fe_users with tx_extbase_type
110 Tx_Extbase_Domain_Model_FrontendUser and
111 fe_groups with Tx_Extbase_Domain_Model_FrontendUserGroup
112 are returned. Since 6.1 all fe_users and fe_groups are
113 returned if you don't set the TypoScript setting on your own.
114
115
116 Full Changes for 6.1.0
117 ======================
118
119 [BUGFIX] Don't respect sys_language in Backends getObjectByIdentifier
120 [BUGFIX] Fix persisting new objects
121 [BUGFIX] Fix failing unit tests
122 [TASK] Update changelog and version to 6.1.0
123 [TASK] Cleanup Extbase for 6.1 release
124 [BUGFIX] Backend support for native DateTime
125 [BUGFIX] Scheduler throws fatal error while saving an Extbase Task
126 [!!!][BUGFIX] Introduce explicit saving of modified domain objects
127 [BUGFIX] Extbase must not use legacy flash message handling
128 [BUGFIX] Persist an empty unmodified objectstorage
129 [BUGFIX] Remove ObjectMapper part from TS-Template
130 [BUGFIX] Validation with invalid validator caused unrelated errors
131 [BUGFIX] Fix attaching objects to a existing objectstorage
132 [BUGFIX] Improve description of registerModule()
133 [TASK] Cleanup require and require_once
134 [BUGFIX] Mark objectstorage clean after saving
135 [TASK] UriBuilder can handle multidim arrays in exludes params
136 [TASK] Detect inject methods more strictly
137 [BUGFIX] Clearing label through TS doesn't work
138 [TASK] Typo3DbBackend, getRowsFromResult(): Drop source-argument
139 [BUGFIX] Call RequestHandlerResolver also for CLI requests
140 [BUGFIX] Only throw tooDirty if uid part of cleanProperties
141 [TASK] Typo3DbBackend: Drop non-functional code
142 [BUGFIX] getPlainValue for @lazy objects
143 [TASK] Backport Flow property mapper
144 [BUGFIX] Localization ignores extensionName argument for TypoScript labels
145 [TASK] Provide .gitignore and ignore code coverage report folder
146 [BUGFIX] Added handling for array in findOneByXXX result
147 [BUGFIX] RequestBuilder must not call $request->setMethod with NULL
148 [TASK] Fix typehints in docblocks of Mapper
149 [TASK] Optimize persisting a dirty objectStorage
150 [BUGFIX] Prevent call of updateReferenceIndex on unknown object
151 [TASK] Simplify propertyName-creation
152 [BUGFIX] Prevent building empty IN () query by throwing exception
153 [TASK] Add caching layer for getTargetPidByPlugin
154 [BUGFIX] Redirect-method in abstractController does not work with SSL
155 [BUGFIX] Translation of extbase-core
156 [BUGFIX] RespectStoragePage does not respect rootLevel
157 [TASK] Disable functional tests
158 [TASK] Update t3lib mentions
159 [BUGFIX] Property Mapper chokes on already-converted objects
160 [BUGFIX] Fix namespace in FileMountRepositoryTest
161 [TASK] Update copyright year to 2013
162 Revert "[TASK] Make current persistence replaceable"
163 [BUGFIX] Native DateTime values cannot be mapped from storage
164 Revert "[BUGFIX] Native DateTime values cannot be mapped from storage"
165 [BUGFIX] Native DateTime values cannot be mapped from storage
166 [BUGFIX] FlashMessageContainer uses static flashMessageQueue
167 [TASK] Remove not maintained md5 in ext_emconf
168 [TASK] Table Mapping for File Model
169 [BUGFIX] TypoScript configuration not available in backend
170 [FEATURE] Use EnvironmentService to detect TYPO3_MODE in several places
171 [TASK] Rename methods in EnvironmentService
172 [BUGFIX] Fix wrong parenthesis in Typo3DbBackend
173 [FEATURE] Introduce methods to detect TYPO3_MODE properly
174 [TASK] Streamline creation of column maps
175 [FEATURE] Providing Core Resource FileReference functionality
176 [TASK] Remove obsolete doc comment check in reports module
177 [!!!][FEATURE] Enable rewritten PropertyMapper as default
178 [!!!][BUGFIX] Remove support for TCA setting 'foreign_selector'
179 [BUGFIX] TypeConverter can handle oldschool classnames
180 [SECURITY] SQL Injection Possibility in Extbase
181 [BUGFIX] Prevent Extbase warnings accessing ObjectStorages with strings
182 [BUGFIX] BooleanValidator skips Validation with missing compare param
183 [BUGFIX] Prevent PHP errors with missing ColumnMap object
184 [BUGFIX] Fix tests for old property mapper
185 [FEATURE] Introducing a BooleanValidator.
186 [FEATURE] TCA refactoring
187 [BUGFIX] Old property mapper shouldn't map other domain objects
188 [BUGFIX] Fix tests throwing errors in MapperTest
189 [BUGFIX] ReflectionService rejects classSchema for custom models
190 Revert "[BUGFIX] Prevent sql errors with missing ColumnMap"
191 Revert "[TASK] Remove loadTCA calls"
192 [BUGFIX] Add foreign_match_fields support for one-to-x relations
193 [FEATURE] Make use of the ClassNamingUtility class
194 [BUGFIX] Respect wildcard in PropertyConfiguration shouldMap()
195 [BUGFIX] Followup to issue #45323
196 [TASK] Replace ObjectManager create with get
197 [TASK] Sync objectmananger get and create with Flow
198 [TASK] Clean up Unit tests in extbase
199 [!!!][TASK] Remove forced STI settings from extbase configuration
200 [FEATURE] (MVC): Whitelist-based Property Mapping Configuration
201 [TASK] Decouple BE module runner and Bootstrap
202 [TASK] Improve Test
203 [TASK] Add FileReference table mapping in extbase configuration
204 [TASK] Provide unit test for Mvc/Response
205 [TASK] Improve code coverage of Mvc/Request
206 [FEATURE] Allow different overriding of object mapping per plugin
207 [TASK] Remove loadTCA calls
208 [BUGFIX] Alphanumeric validator fails with broken PCRE
209 [BUGFIX] RepositoryTest raises warning
210 [BUGFIX] ConfigurationManager must use namespaced FrontendSimulator
211 [TASK] Provide Unit Test for Scheduler/Task
212 [BUGFIX] Ordering without grouping is incompatible with non-MySQL DBMS
213 [TASK] Provide Unit Test for Scheduler/TaskExecuter
214 Revert "[FEATURE] Allow different overriding of object mapping per plugin"
215 [TASK] Improve code coverage of Scheduler/FieldProvider
216 [TASK] Increase code coverage of FrontendConfigurationManager
217 [TASK] Increase code coverage of Service/TypeHandlingService
218 [TASK] Increase code coverage of SignalSlot/Dispatcher
219 [TASK] Provide Unit Test for Error/Message
220 [FEATURE] Provide UnitTest.xml with code coverage generation
221 [TASK] Rename property, getter and setters of File Model
222 [BUGFIX] Remove newline after ?> in AbstractController
223 [BUGFIX] Avoid clearing the page cache too often
224 [BUGFIX] Correct indention of class comment
225 [BUGFIX] Suppress debug output of debugger in unit tests
226 [BUGFIX] Fix failing tests in ActionControllerTest
227 Revert "[FEATURE] Introduce beforeCallActionMethod signal"
228 [FEATURE] Introduce beforeCallActionMethod signal
229 [FEATURE] Introduce beforeCallActionMethod signal
230 [BUGFIX] Prevent sql errors with missing ColumnMap
231 [BUGFIX] DebuggerUtility does not rewind instances of Iterator
232 [BUGFIX] Make AlphanumericValidator work with umlauts
233 [BUGFIX] Use interface in PersistenceManager::injectQueryFactory
234 [BUGFIX] Use interface in Mapper::injectQueryFactory
235 [CLEANUP] Remove newlines after closing php tag
236 [FEATURE] Allow different overriding of object mapping per plugin
237 [TASK] Make current persistence replaceable
238 [BUGFIX] Deprecated functions used in on fresh 6.0 final
239 [CLEANUP] Remove all @author annotations
240 [CLEANUP] Replace wrong/old file copyright comments
241 [FEATURE] Recursive starting point/storage pid via TypoScript
242 [BUGFIX] MM_match_fields is ignored when persisting MM relations
243 [TASK] Update ChangeLog.txt for 6.0
244 [TASK] Update version to 6.1.0-dev
245
246 Changes for 6.0.0
247 =================
248
249 Full Changes for 6.0.0
250 ======================
251 [TASK] Timestamp support for DateTimeConverter
252 [BUGFIX] MM_match_fields is ignored when persisting MM relations
253 [BUGFIX] Missing table definitions crash Dbal
254 [BUGFIX] Remove property item of category model
255 [TASK] Adjust namespaces of persistence unit tests
256 [TASK] Move persistence unit tests
257 [CLEANUP] Adjust code to coding guidelines
258 [TASK] Comment legacy files to be removed with 6.2
259 [BUGFIX] Use tablename for fullQuoteStr call
260 [BUGFIX] Remove newlines after closing php tag
261 [BUGFIX] Force command controller task arguments saved as array
262 [BUGFIX] Prevent sql errors with unsupported relation
263 [BUGFIX] Make saving scheduler commandController tasks working again
264 [BUGFIX] Add missing TypoScript Mapping for Category Model
265 [BUGFIX] Tx_Extbase_DomainObject_AbstractDomainObject#getUid is final
266 [BUGFIX] Fix small DebuggerUtility issues
267 [BUGFIX] Fix and deprecate legacy creation of objects in repository
268 [!!!][BUGFIX] Remove property isOnline from frontenduser model
269 [BUGFIX] Make ValidatorResolver respect namespaces
270 [BUGFIX] Reset 'vendorName' in RequestBuilder to NULL for new requests
271 [BUGFIX] Correctly apply _LOCAL_LANG from typoscript
272 [TASK] Rename Reflection/Service to Reflection/ReflectionService
273 [BUGFIX] Cache in BackendConfigurationManager is not taking pageId into account
274 [BUGFIX] DataMapperFactory respects foreign_table_field
275 [BUGFIX] Fix Annotation for Category model
276 [TASK] Add "Abstract" prefix to abstract task class
277 [TASK] Adjust phpdoc for classes (files) of backports
278 [BUBFIX] Fix fatal error in Test
279 [BUGFIX] Fix several namespace related bugs
280 [BUGFIX] Mapping of DomainObject with namespaces
281 [BUGFIX] Dont respect pid for static & rootlevel tables
282 [BUGFIX] Namespaced domain models are not updated
283 [TASK] Adjust phpdoc to namespaces
284 [TASK] Resync TYPO3Flow- and Extbase-Persistence
285 [BUGFIX] Misspelling in Typo3DbBackend.php
286 [TASK] Cleanup Typo3DbBackend
287 [BUGFIX] resolveValidatorObjectName support for namespaces
288 [BUGFIX] Support plugins in namespaced extensions
289 [BUGFIX] Rename File after renaming class
290 [BUGFIX] Typo3DbBackend language handling crashes in BE
291 [TASK] Rename FlashMessages to FlashMessageContainer
292 [TASK] Remove deprecated methods and classes
293 [TASK] Rename ExtensionManager class
294 [TASK] Update doc block example code to to namespaces
295 [BUGFIX] PHP 5.4 unit test warnings
296 [TASK] Change objectStorage patch in migration script
297 [TASK] Change namespace and classname of ObjectStorage
298 [TASK] Move ObjectStorage from Generic to Persistence
299 [TASK] Remove ext_autoload.php
300 [TASK] Cleanup files in persistence
301 [TASK] Remove duplicate files in persistence
302 Revert "[BUGFIX] Support plugins in namespaced extensions"
303 [BUGFIX] Support plugins in namespaced extensions
304 [TASK] Use core interface for accessible objects
305 [TASK] Remove forceCharset references from LocalizationUtility
306 [BUGFIX] NotEmpty Validator does not work with arrays and objects
307 [TASK] Add phpdoc-comments for variables
308 [BUGFIX] Removed trash files and their references
309 [CLEANUP] Remove old SVN comments
310 [BUGFIX] Fix mismatches between count of param in phpdoc and function-signature
311 [TASK] Add explanation for $configurationType
312 [BUGFIX] Fix namespace related bugs in DebuggerUtility
313 [TASK] Clean up testcases to use getAccessibleMock() function
314 [TASK] Fix typo: seperator -> separator
315 Revert "[BUGFIX] Property mapper: Exception not thrown but skipped"
316 [BUGFIX] Replace deprecated calls in Repository
317 [BUGFIX] Change class name hash generation to md5
318 [BUGFIX] Fix broken table name mapping for namespaced extension models
319 [BUGFIX] Fix generation of class schema for namespaced arguments
320 [BUGFIX] Query Generation creates invalid query in BE scope
321 [BUGFIX] Fix generation of class name hash
322 [BUGFIX] Correct link to first page in BE paginator widget
323 [BUGFIX] Respect namespaced models in the reflection service
324 [BUGFIX] Property Validation with Namespaces
325 [TASK] Provide class alias file for extbase
326 [TASK] Introduce base class for PHPUnit tests
327 [TASK] Update version number of all sysexts to 6.0.0
328 [BUGFIX] Remove PHP warnings in request
329 [TASK] Make all classes non final
330 [BUGFIX] Fix Exception Class Name
331 [TASK] Fix class naming and alias map after namespace change
332 [BUGFIX] Fix translation fallback
333 [TASK] Remove superfluous parenthesis in sysexts
334 [TASK] Adopt Extbase to the Autoloader -> ClassLoader name change
335 [BUGFIX] Broken backups in BackendConfigurationManagerTest
336 [BUGFIX] Incomplete mocking and backups it tests
337 [BUGFIX] Declare LocalizationUtility::translateFileReference static
338 [BUGFIX] TypeHandlingService throws Exception for StorageObjects
339 [BUGFIX] fix Mvc/Request builds old classnames
340 [BUGFIX] Fix old propertymapper checking target with namespace
341 [BUGFIX] Fixed missing class mapping without TS
342 [BUGFIX] Fix classes without or broken namespace
343 [CLEANUP] General code cleanup
344 [BUGFIX] Subrequests can't be resolved
345 [BUGFIX] Make Cli\Command Namespace aware
346 [BUGFIX] Unit tests after namespace switch
347 [BUGFIX] Naming clash: Fix several unit test failures
348 [BUGFIX] Interface Tx_Scheduler_AdditionalFieldProvider' not found
349 [BUGFIX] Reanimate unit tests
350 [TASK] Make extbase tests run again
351 [TASK] Move and Namespace classes
352 [BUGFIX] Failing test translateForEmptyStringKeyReturnsNull()
353 [FEATURE] Integrate basic file abstraction layer models
354 [BUGFIX] Property mapper: Exception not thrown but skipped
355 [TASK] Unit test for FrontendUserGroup model
356 [TASK] Unit test for FrontendUser model
357 [BUGFIX] ObjectManager dependencies in SignalSlot registration
358 [BUGFIX] Possible failure in dependency injection
359 [BUGFIX] Web Request should map $_FILES into arguments
360 [FEATURE] Backend usergroup model and repository
361 [FEATURE] File mount model and repository
362 [FEATURE] Handle enable fields and deleted records settings granulary
363 [FEATURE] Improved translation handling for statement generation
364 [BUGFIX] email validator
365 [BUGFIX] DataMapper returns array on RELATION_HAS_ONE
366 [Task] Make Exception for Controllerdetermination more expressive
367 [TASK] Add Domain Model and Repository to Category
368 [BUG] Fix lastlogin property to correct lowerCamelCase
369 [FEATURE] Add a BackendUser model
370 [TASK] Small bugfix in Tx_Extbase_MVC_View_ViewInterface
371 [BUGFIX] Remove additional slashes from typolink urls if prefixing
372 [BUGFIX] public function configureModule should be static
373 [FEATURE][Performance] Add caches for persistence layer
374 [TASK] use the objectManager to create empty domain objects
375 [BUGFIX] Container calls Cache too often
376 [TASK] Update Readme to point to the current documentation location
377 [BUGFIX] Only set request for Web_Response
378 [TASK] Harmonize coding style of if constructs
379 [BUGFIX] CLI argument handling chokes on = use
380 Merge "[BUGFIX] Priority of CLI request handler should be lower"
381 [BUGFIX] Priority of CLI request handler should be lower
382 [BUGFIX] Return NULL instead of empty string in Localization::translate()
383 [BUGFIX] Fix unit test for NumberRangeValidator
384 [BUGFIX] FLUIDTEMPLATE - Serialization of 'Closure' is not allowed
385 [BUGFIX] Extbase core bootstrap not found in frontend
386 [BUGFIX] Fatal error in reports module
387 Merge "[Task] Update changelog and version to 6.0.0-dev"
388 [CLEANUP] Cleaned up Extbase
389 Merge "[TASK] Backport changes to Extbase_Error_Message"
390 Merge "[TASK] Improve performance of Utility/Arrays::integerExplode"
391 Merge "[BUGFIX] Fix undefined variables in Typo3DBBackend::parseOrderings"
392 [BUGFIX] Fix undefined variables in Typo3DBBackend::parseOrderings
393 Merge "[TASK] Remove trailing whitespace"
394 [FEATURE] Allow overwriting of Bootstrap with DI
395 [TASK] Sync persistence folder scheme with FLOW3
396 [CLEANUP] clean up ext_autoload.php
397 [Task] Update changelog and version to 6.0.0-dev
398 [TASK] Remove trailing whitespace
399 [TASK] Remove deprecated methods & properties
400 [TASK] Remove access to constant TYPO3_UseCachingFramework
401 Merge "[BUGFIX] Respect all subclasses (single table inheritance)"
402 [TASK] Backport changes to Extbase_Error_Message
403 [TASK] Improve performance of Utility/Arrays::integerExplode
404
405 Changes for 4.7.0
406 =================
407
408 This release features 48 changes, most of them are bugfixes and performance improvments.
409 Special thanks goes to all the folks who attended the codesprint, you really got stuff
410 done! Of course thanks goes to all the community members as well, for submitting patches.
411
412 You rock!
413
414 !!! Changes in Signal / Slot implementation
415 -------------------------------------------
416
417 A registered slot now gets the signalInformation (classname::name) by default
418 (was not given before) set as last parameter in the arguments array. You can
419 avoid this by setting passSignalInformation to FALSE in your connect()-call.
420
421 CommandController as SchedulerTasks
422 -----------------------------------
423
424 It's now possible to let your commandController be run as scheduler tasks. See
425 http://forge.typo3.org/projects/typo3v4-mvc/wiki/CommandControllerInSchedulerTask
426 for more information.
427
428 Object-aware Debugger from FLOW3
429 --------------------------------
430
431 It always was hard to debug Extbase objects because of their depth and recursion.
432 With this release the object-aware debugger from FLOW3 was backported. Just use
433 Tx_Extbase_Utility_Debugger::var_dump() instead.
434
435 DI works without inject-methods
436 -------------------------------
437
438 You can now use @inject annotations to your protected properties and the objectManager
439 will take care, even without the inject-method. Please notice that this works through
440 reflection and might be slow! Please profile your code or use inject-methods for now.
441
442 Shorthand syntax for foreign validators
443 ---------------------------------------
444
445 You can now use foreign validators without giving the hole classname. Just use
446 @validate YourExtension::Foo
447 and Extbase will try to find
448 Tx_YourExtension_Validation_Validator_FooValidator.
449
450 Full Changes for 4.7.0
451 ======================
452 [RELEASE] Extbase 4.7.0
453 [TASK] Update version number to 4.7.0rc2
454 [BUGFIX] Respect localized records when auto determining defaultPid
455 [TASK] Rename deprecation message version from 1.6 to 6.0
456 [TASK] Update version to 4.7.0rc1
457 [BUGFIX] Fix the unit tests to work with PHPUnit 3.6
458 [BUGFIX] Unit test failures concerning the HMAC
459 [TASK] Add unittest for shorthand for custom validators
460 [SECURITY] Protect arguments of form __referrer with HMAC
461 [TASK] Update version to 4.7.0beta3
462 [BUGFIX] Fix the @return of findAll
463 [+BUGFIX] Make $query->equals, no case sensitivity, work with UTF8
464 [BUGFIX] Add missing "command" variable to Tx_Extbase_MVC_CLI_Request
465 [BUGFIX] Fix unit tests
466 [BUGFIX] parseDynamicOperand appends to uninitialized variable
467 [BUGFIX] Tx_Extbase_Persistence_QueryInterface needs to provide getSource
468 [CLEANUP] Replace deprecated interface from unittests
469 [BUGFIX] property mapping for models w/o __construct
470 [BUGFIX] Extbase produces errors in TYPO3 Log
471 [BUGFIX] ObjectContainer does not support namespaces
472 [BUGFIX] Removed obsolet file.
473 Revert "[+CLEANUP] correct sql statement building"
474 [FEATURE] Shorthand syntax for foreign Validators
475 [BUGFIX] Set default storagePageUid to current page in BE context
476 [+FEATURE] make DI work without inject-methods
477 Revert "[BUGFIX] keep PersistentObjectConverterTest from cloning objects"
478 [BUGFIX] Reset LazyObjectStorage array pointer at initialization
479 [BUGFIX] Enable some support for workspace previews
480 [BUGFIX] Repository replace() does not replace unpersisted objects
481 [BUGFIX] Child objects are now fetched only by uid (pid and sys_language_uid are ignored).
482 [BUGFIX] adjust SignalSlotDispatcher's unit-tests
483 [TASK] Backported FLOW3 Debugger
484 [+CLEANUP] correct sql statement building
485 [CLEANUP] Performance in Reflection Service's cache handling
486 [BUGFIX] Fatal error on matching non-existing column, DB Backend
487 [FEATURE] Run CommandController commands through Scheduler
488 [REVERT] let PersistentObjectConverter clone objects
489 [BUGFIX] keep PersistentObjectConverterTest from cloning objects
490 [!!!][~BACKPORT] backport FLOW3 changes to SignalSlotDispatcher
491 [TASK] Coding guidelines cleanup for ClassInfo class
492 [BUGFIX] Invalid LOCAL_LANG overlay for non-existing languages
493 [BUGFIX] Make SignalSlot Dispatcher a singleton
494 [BUGFIX] DateTime properties are not mapped correctly
495 [TASK] Extbase (MVC): Avoid code-duplication in Tx_Extbase_MVC_Web_FrontendRequestHandler::isCacheable()
496 [BUGFIX] Make changed action resolving backwards compatible
497 [CLEANUP] remove not needed parameter
498 [BUGFIX] Fix PHP Warnings in Unit Tests
499
500
501 Changes for 1.4.0:
502 ==================
503 included in TYPO3 4.6.0.
504
505 This release features more than 100 changes, most of them being bugfixes in all areas of Extbase.
506 Thanks every community member for bug reports, submitting patches and reviewing! Extbase
507 would not be possible without you!
508
509 !!! New Property Mapper, updated MVC stack
510 ------------------------------------------
511
512 The Property Mapper has been completely rewritten in FLOW3, and this has also been backported
513 to Extbase. The new property mapper is very configurable and extensible.
514
515 Furthermore, the MVC stack has been adjusted to be in sync with FLOW3 again. However, the new
516 behavior is ONLY ACTIVATED MANUALLY. We suggest that you activate it for your new extensions
517 by inserting:
518
519         plugin.tx_[yourExtensionName].features.rewrittenPropertyMapper = 1
520
521 The documentation for the new property mapper can be found at
522
523 http://flow3.typo3.org/documentation/guide/partiii/propertymapping.html
524
525 They also apply to Extbase.
526
527 !!! Updated Validation API
528 --------------------------
529
530 The Validation API has also changed, but this is only a breaking change if you do NOT subclass
531  *AbstractValidator*, but implement *ValidatorInterface* yourself. In this case, you need to
532 adjust your custom validator to support the new API.
533
534 Dependency Injection for Domain Objects
535 ---------------------------------------
536
537 Dependency Injection is now also possible for reconstituted Domain Objects.
538
539 Signal / Slot implementation
540 ----------------------------
541
542 The "Signal / Slot" feature has been backported from FLOW3, implementing a future-proof
543 alternative to hooks.
544
545 Command Controller
546 ------------------
547
548 Use it from commandline like this:
549         ./cli_dispatch.phpsh extbase <command identifier> --argumentName=value
550
551 for example:
552         ./cli_dispatch.phpsh extbase help
553
554 NOTE: Unlike in FLOW3 Commands have to be registered explictly
555 in ext_localconf.php in order to be callable via CLI:
556         if (TYPO3_MODE === 'BE') {
557                 $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['extbase']['commandControllers'][] = 'Tx_MyExtension_Command_FooCommandController';
558         }
559
560
561 Full Changes for 1.4.0 beta1 - 1.4.0:
562 =====================================
563 [BUGFIX] Pootle: Multi-line labels are not rendered properly
564 [TASK] English XLIFF files should not contain target element
565 [TASK] Fix CGL issues on "else if" constructs
566 [TASK] Update version to 1.4.0-rc1
567 [FEATURE] Backport CommandController Implementation
568 [!!!][TASK] Disable rewritten property mapper by default
569 [BUGFIX] Removing "Repository" in class name makes extensions unusable
570 [BUGFIX] Default error FlashMessage has wrong severity
571 [BUGFIX] Fix check against @ignorevalidation annotations
572 [BUGFIX] ConfigurationManager use FrontendSimulator only if neccessary
573 [TASK] Increase version number
574 [BUGFIX] Default action is not properly resolved
575 [FEATURE] Descriptive error on invalid action name
576 [BUGFIX] Replaced call to deprecated t3lib_div::testInt()
577 [FEATURE] Skip default controller and action in generated URIs
578 [FEATURE] Setting a scheme for a URI
579 [BUGFIX] Don't clone ContentObject in ConfigurationManager
580 [TASK] Remove deprecated methods & properties
581 [BUGFIX] Tx_Extbase_Utility_Localization::translate() must return NULL for non-existing keys
582 [BUGFIX] Clone ContentObject
583 [BUGFIX] Fix method visibility of AbstractConfigurationManager::getTypoScriptSetup()
584 [TASK] Convert XLIFF files to Tab indentation
585 [BUGFIX] XLIFF: Approved attribute is on wrong element
586 [+BUGFIX] Fixing incorrect references to F3 classes
587 [+BUGFIX] Added missing initializeView method in EmptyView
588 [+BUGFIX] Fix classname of Exception, ConfigurationManager
589
590 Full Changes for 1.4.0 beta1:
591 =============================
592 [!!!][TASK] Enable rewritten property mapper by default
593 [+FEATURE] Extbase (Persistence): Allow pid of object to be set from action-controller. Thanks to Michael Budnick and Balisky Christophe. Resolves: #7572
594 [FEATURE] Speed up ObjectAccess
595 [+FEATURE] Extbase (Persistence): Allow removing previously set limit with unsetLimit(). Resolves: #27445
596 [-TASK] Remove autoloader. Thanks to Christian Kuhn. Resolves: #28249
597 [+FEATURE] introduce signal in MVC/Dispatcher
598 [TASK] Correct classnaming for Tx_Extbase_Tests_Unit_BaseTestCase
599 [-BUGFIX] remove datecheck on timezone test
600 [+FEATURE] remove usage of deprecated methods in unit-tests
601 [BUGFIX] Adjust unit tests to changes
602 [BUGFIX] create ClassSchema with ObjectManager::create()
603 [BUGFIX] TypeHandling class not found. This is a hotfix for #28121. Resolves: #28121
604 [TASK] Extbase (Utility): Add service for TypeHandling. Related: #13864
605 [+BUGFIX] Extbase: CGL: Convert case of acronyms from UPPERCASE to CamelCase. Resolves: #12189
606 [TASK] Extbase: Use strpos() instead of strstr() where possible
607 [+BUGFIX] allow skipping of arguments in signal dispatch
608 [TASK] Adjust PHP dependency in ext_emconf.php
609 [FEATURE] Add check for loaded DBAL to requirements check
610 [TASK] Recreate ext_autoload.php. Resolves: #27680
611 [!!!][+FEATURE] (MVC): Modify MVC stack to use the new property mapper. Resolves: #27656
612 [!!!][+FEATURE] (Validation): Adjusted and re-done Validation API. Resolves: #27653
613 [+FEATURE] (Property): Add new property mapper. Related: #27059
614 [+FEATURE] (Persistence): Synchronize PersistenceManagerInterface more with FLOW3. Resolves: #27657
615 [+FEATURE] (Reflection): Object Access can now access private properties. Resolves: #27652
616 [+FEATURE] (Utility): synchronize TypeHandling class with FLOW3. Resolves: #27651
617 [!!!][FEATURE] Improve error and message handling. Resolves: #27650
618 [TASK] (MVC, Property): Deprecation of the the old property mapper
619 [+FEATURE] (Configuration): Feature flag implementation
620 [+BUGFIX] (Persistence): return correct objectCountByQuery when query contains left join and no limit. Fixes: #13075
621 [BUGFIX] Adapt cache configuration to 4.6. Resolves: #27546
622 [+BUGFIX] (SignalSlot): Fix unit tests. Resolves: #27550
623 [+BUGFIX] Make ObjectManager::isRegistered work
624 [+FEATURE] backport SignalSlotDispatcher
625 [+BUGFIX] Fix localization handling to support XLIFF. Resolves: #27411
626 [+BUGFIX] Extbase (Validation): E-mail address with space at the end is invalid. Thanks to Marc Bastian Heinrichs. Resolves: #27305
627 [+BUGFIX] Throw exception if a class to be reflected does not exist. Fixes: #8718
628 [TASK][!!!] Fix localization handling to support XLIFF. Resolves: #27411
629 [TASK] Extbase (Validation): Clean up tests for FloatValidatorTest and Integer ValidatorTest
630 [+BUGFIX] Extbase (Persistence): Use correct language-uid for translations. Thanks to Benjamin Mack. Resolves: #26521
631 [TASK] Extbase (Persistence): Remove duplicate registration in identity map. Thanks to Alexander Stehlik. Resolves: #26875
632 [BUGFIX] Fix EmailAddressValidatorTest
633 [+FEATURE] Extbase (MVC): Make response format configurable in TypoScript. Thanks to Christian Zenker. Resolves: #9216
634 [BUGFIX] Docu, AbstractController: Clearer difference of forward/redirect. Resolves: #7900
635 [BUGFIX] Fix case of setChildSortByFieldName in DataMapFactory. Resolves: #27334
636 [+BUGFIX] (Property) Fixed only adding objects to ObjectStorage. Thanks to Thomas Maroschik. Fixes: #13288
637 [+TASK] Extbase: Move static typoscript utility methods to a service. Related: #13864
638 [+TASK] Extbase: Move most of the static extension utility methods to a service. Related: #13864
639 [+BUGFIX] baseUri is added on external links. Thanks to Michael Feinbier for this fix! Resolves: #10258
640 [+BUGFIX] (Testing): Fix wrong doc comment in BaseTestCase. Resolves #13695
641 [+BUGFIX] Cloning a ValueObject should not set its uid to NULL. Resolves #26772
642 [+BUGFIX] ObjectStorage->toArray(): fix array pointer problem. Resolves #9117
643 [+BUGFIX] Persistence: Fixed building unionStatement from opposite. Thanks to Christian Zindel. Resolves #13782
644 [+BUGFIX] Persistence: Update tstamp column on objects removal. Thanks to Michel Nederlof. Resolves #10634
645 [+BUGFIX] correct warning in ObjectStorage & LazyObjectStorage
646 [~CLEANUP] some smaller comment cleanups
647 [+TASK] Extbase: Moved static cache utility class to a service. Relates to: #13864
648 [+FEATURE] implement ObjectManager::isRegistered()
649 [+TASK] improve exception message in Argument
650 [TASK] Performance tuning in container by moving some information into the cached ClassInfo object.
651 [~BUGFIX] avoid fe_user's type to be overridden
652 [+BUGFIX] Avoiding cHash for nonCacheable actions prevent action from being called. Related: #13970
653 [+BUGFIX] MVC: Make forwarding of objects work. Resolves #9867
654 [~CLEANUP] correct function parameter types
655 [+BUGFIX] Persistence: return ObjectCount return value as an integer. Thanks to Georg Ringer. Resolves #13151
656 [+BUGFIX] Revert incorrect deletion of Query::count() & Query::withUid(). Relates: #13745
657 [~CLEANUP] apply naming convention for flexForms
658 [+TASK] Move FlexForm parsing to a dedicated Service. Thanks to Rens Admiraal. Resolves #13032
659 [!!!][+BUGFIX] make backend-modules in web use new pagetree by default
660 [~CLEANUP] smaller deprecated clean-ups
661 [+FEATURE] Extbase: Enable Dependency Injection for Domain Models. Thanks to Pascal Jungblut. Resolves #11311
662 [+BUGFIX] (Persistence) Make Typo3QuerySettings exchangeable. Resolves #13191
663 [+BUGFIX] (Persistence) clone setDefaultQuerySettings for new queries. Resolves #12702
664 [~BUGFIX] correct annotations of Tx_Extbase_Persistence_Mapper_DataMapper. Resolves #13185. Thanks to Simon Schaufelberger.
665 [~TASK] (FlashMessages) finish the renaming of flashMessages
666 [+BUGFIX] (Configuration): Adjusted ConfigurationManagerInterface Interface to implementation
667 [~TASK] Extbase: Raising version from 1.3.0 to 1.4.0-devel
668 [+TASK] Extbase (MVC): Removed duplicated code from RequestBuilder. Thanks to Peter Niederlag. Resolves #12569.
669
670
671 Changes for 1.3.0:
672 ==================
673 included in TYPO3 4.5.0 LTS.
674
675 This release fixes an important bug in the persistence layer, which caused related objects not to be updated.
676
677 Full Changes for 1.3.0:
678 =======================
679
680 [+BUGFIX] Extbase (Tests): reset added t3lib_div instances in UriBuilder & Extension tests
681 [+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.
682         This is the second attempt after having reverted the first one in r3920. The patch includes some clean-up. Important additional changes:
683         * 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.
684         * 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.
685         * Fixed some possible problems with detecting an ObjectStorage (namely SplObjectStorage->getUid()).
686 [+TASK] Extbase (Persistence): Added two properties to describe a weird PHP behavior if calling current() on an ObjectStorage.
687 [+BUGFIX] Extbase (MVC): Fixed argument order of Tx_Extbase_Utility_Extension::isActionCacheable() call in UriBuilder
688 [+TASK] Extbase (DomainObject): Added setPid() and getPid() to the DomainObjectInterface and removed the "final" keyword.
689 [~TASK] Extbase: Moved isActionCacheable() from UriBuilder to Utility/Extension helper class
690         Moved the protected method to a public static functions in Tx_Extbase_Utility_Extension
691         and added respective unit tests.
692         Note: We're not happy with all the public static functions in Utility/Extension.php
693         but that's currently the place for those helper functions.
694 [+TASK] Extbase (Utility): implemented validation of arguments passed to sql statements in Tx_Extbase_Utility_Cache. (resolves #11978)
695
696 Changes for 1.3.0 RC1:
697 ======================
698 included in TYPO3 4.5.0 RC1.
699
700 This release features many bugfixes, in the following areas:
701 * Persistence - invalid SQL has been fixed at various places
702 * MVC - the URI Builder can now handle cached / uncached actions correctly
703 * Improved error handling to catch some configuration errors
704 * Localization - TypoScript overrides for locallang keys with dot inside now works (_LOCAL_LANG.foo.bar)
705 * Persistence - added "pid" property and getter and setter to AbstractDomainModel; thus you can now move
706   domain objects to different pages. However, this feature has *no support for workspaces* yet.
707 * Dependency Injection - now allows the injection of prototypes (see below)
708 * Configuration - for defining the Storage PID, one can use arbitary TypoScript objects (see below)
709
710 Dependency Injection Improvements
711 ---------------------------------
712
713 Now, Prototype objects are allowed to be injected into other objects. This means the following cases
714 are supported:
715
716 * Singletons which need Singletons (most common)
717 * Singletons which need Prototypes (very uncommon,
718   as it usually hints at the fact that the injected
719   prototype should be a singleton). In this case,
720   WE WRITE A DEVLOG MESSAGE
721 * Prototypes which need Singletons
722 * Prototypes which need Prototypes
723
724 TypoScript Storage PID Improvements
725 -----------------------------------
726
727 The persistence.storagePid now has stdWrap properties so the storagePid can be set dynamically.
728 Now follows an example for use in the Frontend:
729         plugin.tx_extkey.persistence.storagePid.cObject = TEXT
730         plugin.tx_extkey.persistence.storagePid.cObject.value = 8,3
731 ... and this is how you can use it in the backend:
732         module.tx_extkey.persistence.storagePid.cObject = TEXT
733         module.tx_extkey.persistence.storagePid.cObject.value = 8,3
734
735 Full Changes for 1.3.0 RC1:
736 ===========================
737 [+BUGFIX] Extbase (Object): constructor injection now works if default value for a dependency is NULL. Thanks to Lienhart Woitok! Resolves #11623
738 [+BUGFIX] Extbase (Object): Allow injection of prototypes via dependency injection. Resolves #12013
739 [+BUGFIX] Extbase (Persistence): Use sql_free_result() in Typo3DbBackend to free result memory. Resolves #10957
740 [~BUGFIX] Extbase (Persistence): fixed an wrong referenced exception (resolves #12403)
741 [~BUGFIX] Extbase (Persistence): make Tx_Extbase_Persistence_Repository::remove() handle freshly created objects right. (resolves #11128)
742 [+BUGFIX] Extbase (MVC): UriBuilder automatically added a cHash even on links to nonCacheable actions where this is not needed/recommended (resolves #8565)
743 [~BUGFIX] Extbase (Persistence): made union statement on comma seperated list use find_in_set (Thanks to Marc Bastian Heinrichs) (resolves #9772)
744 [~FOLLOWUP] Extbase (Utility): allow clearPageCache() to clear single, multiple and all pageCaches. (resolves 11978)
745 [+TASK] Extbase (Utility): allow clearPageCache() to clear single, multiple and all pageCaches.
746 [+BUGFIX] Extbase (MVC): Improve Error Handling in Request Builder. Resolves #11302
747 [+BUGFIX] Extbase (Persistence): remove superfluous require_once statements. Thanks to Oliver Klee. Resolves #12324
748 [+BUGFIX] Extbase (Tests): Remove require_once of phpunit testclasses. Thanks to Oliver Klee. Resolves #12323
749 [+BUGFIX] Extbase (Utility): Make _LOCAL_LANG override work with dots. Thanks to Thomas Maroschik. Resolves #12121
750 [+BUGFIX] Extbase (Persistence): Fixed using the correct columnname for contains comparison with RELATION_HAS_MANY and empty parentKeyFieldName. Resolves #11048
751 [+BUGFIX] Extbase (Persistence): Added the missing pid property to the AbstractDomainModel. Related to #11361
752 [+BUGFIX] Extbase (Persistence): Language Oberlay now works with page table as well. Thanks to Andre Stoesel. Resolves #11319
753 [+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.
754 [+BUGFIX] Extbase (Bootstrap): Bootstrap calls initialize on reflectionService if it's already initialized. Resolves #12346, resolves #12156
755 [+BUGFIX] Extbase (Persistence): Fix equals constraint with $caseSensitive FALSE (closing bracket missing). Thanks to Alexander Berl. Resolves #10781
756 [+BUGFIX] Extbase (Reflection): ObjectAccess::isPropertyGettable works for ArrayAccess objects. Resolves #10148
757 [+BUGFIX] Extbase (Configuration): Allow StoragePid to be manually defined by TS. Thanks to Rens Admiraal! Resolves #8397
758 [+BUGFIX] Extbase (Configuration): Fix warning in AbstractConfigurationManager. Resolves #11631
759 [+BUGFIX] Extbase (Object): Disabling Dependency Injection for injectSettings method. Resolves #11011
760
761
762 Changes for 1.3.0 Beta 4:
763 =========================
764 included in TYPO3 4.5.0 Beta 4.
765
766 This release contains numerous bugfixes, and a few small features:
767
768 * Tx_Extbase_Utility_Extension::registerPlugin() now has a fourth parameter $pluginIconPathAndFilename
769   that you can set to the path of an icon, that will be displayed in the plugin dropdown in the backend.
770   You can use it like:
771   Tx_Extbase_Utility_Extension::registerPlugin(
772                 $_EXTKEY,
773                 'MyPlugin',
774                 'My Plugin description',
775                 t3lib_extMgm::extRelPath($_EXTKEY) . 'Resources/Public/Icons/someIcon.gif'
776   );
777 * Hidden Records in Workspaces now work
778   Before, if t3lib_pageSelect::getRecordOverlay returned FALSE (if
779   no translation is found), a fatal error occured:
780   PHP Catchable Fatal Error: Argument 2 passed to Tx_Extbase_Persistence_Mapper_DataMapper::getTargetType()
781   must be an array, boolean given, called in Persistence/Mapper/DataMapper.php
782
783 Full Changes for 1.3.0 Beta 4:
784 ==============================
785
786 [+TASK] Extbase (Tests): Fixed a repository unit test so that it works in CLI mode
787 [+TASK] Extbase (Tests): Fixed Extbase unit tests
788 [+BUGFIX] Extbase (Persistence): Hidden Records in Workspaces now work
789 [~TASK] Extbase: Fixed line endings (Windows to Unix).
790 [~TASK] Fluid (Tests): Fixed some more testcase class names and some unit tests
791 [+FEATURE] Extbase (Utility): Add support for custom specify custom plugin icon. Resolves #11179
792
793 Changes for 1.3.0 Beta 3:
794 =========================
795 included in TYPO3 4.5.0 Beta 3.
796
797 This release features numerous stability improvements, the biggest one
798 being a re-written core of the Object Manager, such that Lifecycle Methods
799 are supported now. This means, that a method "initializeObject()" gets called
800 as soon as all dependencies are injected and initialized.
801
802 Additionally, Extbase didn't work in all cases in the TYPO3 Backend. This has
803 also been improved, so Extbase (again) works in the backend
804 with an empty page tree.
805
806 Full Changes for 1.3.0 Beta 3:
807 =============================
808
809 [+BUGFIX] Extbase (Tests): Fixed Tx_Extbase_MVC_Controller_AbstractController_testcase. Thanks to Oliver Klee. Resolves #11567.
810 [BUGFIX] Extbase (Configuration): Make Extbase work again in Backend
811 [!!!][+TASK] Extbase (Object): Rewritten Object Container
812 [+BUGFIX] Extbase (MVC): Improve Exception message
813         If one misses the @dontvalidate annotation, he will
814         get a strange error which does not have a hint that
815         the @dontvalidate is missing. Now, the exception message
816         is extended.
817 [+API] Extbase (Configuration): Adding getContentObject to API
818 [+TASK] Extbase (Reflection): Added deprecation annotation to ObjectAccess::getAccessiblePropertyNames()
819         To stay in sync with FLOW3, the methods getAccessibleProperties() and getAccessiblePropertyNames() to
820         getGettableProperties() and getGettablePropertyNames().
821         For compatibility reasons the old methods will stay in Extbase until version 1.5.
822         Note: you can now check wheter properties are settable as well
823 [+FEATURE] Extbase (Reflection): Tx_Extbase_Reflection_ObjectAccess supports stdClass objects now
824         I've backported the ObjectAccess class and its unit tests from FLOW3.
825         Note: FLOW3's implementation allows to specify a third argument for the
826         method getPropertyPath() in order to support Closures.
827         This part is not backported as it's not compatible with PHP < 5.3.
828
829 Changes for 1.3.0 Beta 2a:
830 ==========================
831 included in TYPO3 4.5.0 Beta 2.
832
833 This release includes a whole bunch of bugfixes and refactorings, the most important ones listed below.
834 Because the FlashMessages now use t3lib_FlashMessage, TYPO3 4.5 is MANDATORY!
835
836 The main changes are:
837
838 * Tx_Extbase_MVC_Controller_FlashMessages now internally uses the
839   t3lib_FlashMessageQueue that has been introduced with TYPO3 4.3.
840   This results in following changes:
841   - flashmessages are now treated globally, not in a per-extension-scope. As soon as you output the messages first, the session will be flushed
842   - a flashmessage is not a simple strings anymore, but consists of
843     message body and (optionally) title & severity.
844     You can specify title and severity like this:
845     $this->flashMessages->add('Your message', 'some title', t3lib_FlashMessage::WARNING);
846   - you can now output flashmessages in backend that were set from other TYPO3 classes
847   - a revised flashmessage ViewHelper allows you to render flashmessages in the style
848     of core flashmessages now (see Fluid changelog)
849   - Resolves #10821
850 * Configuration Manager can now deal with recurring FlexForm Sections (#6067)
851 * Fixed Tx_Extbase_Domain_Model_FrontendUser (and marked the old API as deprecated)
852 * Bugfixes related to Lazy Loading
853
854 Full Changes for 1.3.0 Beta 2a:
855 ==============================
856 [+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
857 [+TASK] Extbase (Object): Make sure the class info cache is returning valid objects
858 [+BUGFIX] Extbase (Persistence): Persistence_Backend::getIdentifierByObject should work with LazyLoadingProxy
859         getIdentifierByObject should check if object is an instance of Tx_Extbase_Persistence_LazyLoadingProxy and should return the
860         identifier of the real object.
861 [+BUGFIX] Extbase (Configuration): slightly tweaked FrontendConfigurationManager (basically replaced explode() by t3lib_div::trimExplode() call)
862 [+TASK] Extbase (Tests): Added some unit tests for Backend- and FrontendConfigurationManager. To be continued
863 [+BUGFIX] Extbase (DomainObject): added default __toString method to Tx_Extbase_DomainObject_AbstractDomainObject. Thanks to Marco Huber. Resolves #8083
864 [+BUGFIX] Extbase (MVC): Fixed UriBuilder for handling LazyLoadingProxy objects as arguments. Resolves #10705
865 [+TASK] Extbase (Object): re-added Tx_Extbase_Object_Manager to gain more backwards compatibility. This class is marked deprecated and will be removed in Extbase 1.5
866 [+BUGFIX] Extbase (Tests): tweaked ObjectContainer tests. Tests are failing deliberately for now
867         The DI implementation has to be rewritten, as discussed.
868         This relates to: #11160
869 [+BUGFIX] Extbase (Domain): fixed (non-breaking) method name for getting usergroup in Tx_Extbase_Domain_Model_FrontendUser. Resolves #11019
870 [+TASK] extbase (ConfigurationManager): Made FrontendConfigurationManager parse recurring sections in flexforms right. Thanks to Franz Koch (resolves #6067)
871 [+BUGFIX] Extbase (Configuration): Slightly tweaked AbstractConfigurationManager
872 [+TASK] Extbase (Tests): Added unit tests for AbstractConfigurationManager
873         Note: the ConfigurationManager now always overrides switchableControllerActions
874         when retrieving configuration for the current plugin. Before that only happened
875         when no extensionName/pluginName was specified.
876         Additionally: It's not possible anymore to specify new controllers in
877         switchableControllerAction configuration. That was the intended behavior.
878 [+TASK] Extbase (Tests): Renamed test files from "*_testcase.php" to "*Test.php"
879 [+TASK] Extbase (Tests): Moving all Tests in "Unit" directory.
880 [+FEATURE] Extbase (MVC): add possibility to output FlashMessageQueue (Resolves #10821)
881 [+TASK] Extbase (Persistence): counting query results does not work with limit constraints (resolves #10956)    Tx_Extbase_Persistence_Storage_Typo3DbBackend::getObjectCountByQuery() replaces the SELECT part
882         of a query by COUNT(*) before executing a statement.
883         This did not work as expected in some cases, e.g. the LIMIT constraint was ignored by the count query.
884 [+TASK] Extbase (Persistence): findOneBy*() methods should return NULL if no item was found (Resolves #10958)
885 [+TASK] Extbase (Core): Slightly improved error handling in bootstrap (Resolves #11055)
886 [~TASK] Extbase (Utility): Changed Tx_Extbase_Utility_TypoScript:convertPlainArrayToTypoScriptArray to self::convertPlainArrayToTypoScriptArray. Resolves #10538.
887 [+BUGFIX] Extbase (MVC): UriBuilder: use current plugin if no pluginName has been specified
888         If multiple plugins are found, that are configured to handle the specified action, Extbase
889         will throw an Exception. Now, this only happens if the *current* plugin does not contain
890         the action.
891
892 Changes for 1.3.0 Beta 1a:
893 ==========================
894 included in TYPO3 4.5.0 Beta 1.
895
896 Extbase 1.3.0 Beta 1 has a lot new and greatly improved features, and also many bugfixes.
897 The highlights are outlined below, and explained in-depth a little further down.
898
899 NOTE: This release brings new table definitions, so please visit the install tool or the Extension
900 Manager and update the tables of Extbase.
901
902 *** EVERY FEATURE IS DESCRIBED IN DEPTH BELOW ***
903
904 * Dependency Injection
905 * Dispatcher Refactoring & Completely re-done Configuration Manager
906         This means that Tx_Extbase_Dispatcher is now DEPRECATED!
907         Additionally, if you defined the TypoScript setup for a plugin by hand (which you should not),
908         the syntax has changed a bit there.
909 * QueryResult refactoring (needed for Fluid Widgets)
910         THIS COULD BE A BREAKING CHANGE FOR YOU!
911
912 Additionally, the following smaller features were implemented:
913
914 * Configurable plugin namespaces (#8365)
915 * Automatic target page determination (#9121)
916 * Improved resolveView() mechanism
917 * Allowing plugins to be registered as new content element (#10666)
918 * Default Orderings & QuerySettings (#10319)
919
920 Breaking Changes:
921
922 * The UriBuilder now uses the current cObject instead of creating a new instance in the constructor. This is a breaking change if you instantiated the UriBuilder in your code. Please use the Extbase ObjectManager or inject the ConfigurationManager manually.
923 * fixed typo in getter and setter of Tx_Extbase_Domain_Model_FrontendUser::lastlogin
924 * Flashmessages now share a scope throughout the extension. Before, every plugin had it's own scope leading to the messages only being output when entering the same plugin again (e.g. redirecting from one plugin to another would never display the messages)
925
926 Known issues:
927
928 * The Unit Tests do not fully work again, we will fix that in the next days.
929 * There might be still issues with the support of backend modules, we are working on that!
930
931 Dependency Injection
932 --------------------
933
934 Instead of creating objects through t3lib_div::makeInstance, and connecting them together manually,
935 you yan now use Dependency Injection (DI) for that. Let's give an example: If my class "Tx_Foo_Controller_MyController"
936 needs another class "Tx_Foo_Service_LoggingService", it can get an instance of the logging service
937 by Dependency Injection, by specifying the following code:
938
939 class Tx_Foo_Controller_MyController {
940         protected $loggingService;
941
942         /**
943          * @param Tx_Foo_Service_LoggingService $loggingService
944          */
945         public function injectLoggingService(Tx_Foo_Service_LoggingService $loggingService) {
946                 $this->loggingService = $loggingService;
947         }
948 }
949
950 The DI container finds that the class "MyController" has an method whose name starts with "inject",
951 and thus passes the logging service to MyController.
952 It is important that you can *only retrieve Singletons* through the inject annotations. If you need
953 to instanciate a prototype object, it is important to *not* use t3lib_div::makeInstance() anymore
954 (as it bypasses the DI container), but instead you need to inject the ObjectManager, and ask it
955 to create your prototype object using the create() method. Example:
956
957 class Tx_Foo_Controller_MyController {
958         protected $logFile;
959
960         /**
961          * @param Tx_Extbase_Object_ObjectManagerInterface $objectManager
962          */
963         public function injectObjectManager(Tx_Extbase_Object_ObjectManagerInterface $objectManager) {
964                 $this->logFile = $objectManager->create('Tx_Foo_Domain_Model_LogFile');
965         }
966 }
967
968 In the above example, you have seen that we reference not the concrete implementation *ObjectManager*,
969 but instead the *ObjectManagerInterface*. If a name ends with "...Interface", Extbase DI automatically
970 strips away the "Interface" from the name, and expects to find a concrete implementation of that interface.
971 This is generally a very good practice: For your core classes, you should always reference an *interface*,
972 and let the DI container instanciate the concrete class.
973
974 Additionally, Extbase DI allows to *replace* certain implementation classes by other classes through
975 configuration in TypoScript. Let's give an example, and then you can see the concept:
976
977 config.tx_extbase.objects {
978         Tx_Extbase_Persistence_Storage_BackendInterface {
979                 className = Tx_Extbase_Persistence_Storage_Typo3DbBackend
980         }
981 }
982
983 This essentially means to the DI container: "At all places where you encounter a "BackendInterface",
984 you should instanciate the "Typo3DbBackend" class."
985
986 However, note that this setting can only be configured *globally* right now, it is not possible
987 to override that on a per-extension basis.
988
989 Generally, the Extbase DI container provides a subset of the functionality of FLOW3's dependency injection.
990
991 Dispatcher Refactoring & Completely re-done Configuration Manager
992 -----------------------------------------------------------------
993
994 In the last versions of Extbase, the Dispatcher (Tx_Extbase_Dispatcher) was the main entry point to Extbase.
995 However, as we did not have Dependency Injection at that point, it became really complex and did lots of things
996 which it should not do in the first place. That's why we greatly improved that part. Now, any Extbase extension
997 is invoked using the Tx_Extbase_Core_Bootstrap. Additionally, the TypoScript used for the registration of any
998 Extbase extension has been cleaned up and adjusted:
999
1000 lib.foo = USER
1001 lib.foo {
1002         userFunc = tx_extbase_core_bootstrap->run
1003         extensionName = YourExtension
1004         pluginName = YourPlugin
1005 }
1006
1007 Additionally, you can also override the list of Switchable Controller Actions through TypoScript:
1008
1009 lib.foo = USER
1010 lib.foo {
1011         userFunc = tx_extbase_core_bootstrap->run
1012         extensionName = YourExtension
1013         pluginName = YourPlugin
1014         switchableControllerActions {
1015                 Standard {
1016                         1 = action2
1017                         2 = action3
1018                 }
1019         }
1020 }
1021
1022 Of course, you cannot call actions which were not defined previously in the plugin; so the Switchable
1023 Controller Actions in TypoScript can be only used to shrink the number of actions available.
1024
1025 NOTE: If you manually defined the above snippet, notice that there is a NON-BACKWARDS-COMPATIBLE change
1026 in there. But you did that at your own risk, as that was never public API ;)
1027
1028 If you used Tx_Extbase_Dispatcher before in your own code, it should still work, but it is deprecated.
1029 Instead, instead
1030
1031 OLD: Tx_Extbase_Dispatcher::getConfigurationManager()
1032 NEW: inject Tx_Extbase_Configuration_ConfigurationManagerInterface into your class
1033
1034 OLD: Tx_Extbase_Dispatcher::getPersistenceManager()
1035 NEW: inject Tx_Extbase_Persistence_ManagerInterface into your class
1036
1037 OLD: Tx_Extbase_Dispatcher::getExtbaseFrameworkConfiguration()
1038 NEW: inject Tx_Extbase_Configuration_ConfigurationManagerInterface into your class,
1039      and call $configurationManager->getConfiguration(Tx_Extbase_Configuration_ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK);
1040      on the ConfigurationManager.
1041
1042 Please note that the Configuration Manager is STILL NO PUBLIC API, and its method signature has also changed.
1043
1044 QueryResult refactoring (needed for Fluid Widgets)
1045 --------------------------------------------------
1046
1047 Before this change, a call of $query->execute() inside a repository immediately executed the query and
1048 returned the result as array.
1049 Now, queries are executed lazily at the first moment where you really need them. This means that $query->execute()
1050 returns an object of type Tx_Extbase_Persistence_QueryResultInterface, which behaves like an array, meaning you
1051 can use foreach() to loop over the query result.
1052 However, due to an inconsistency of PHP, the array_* methods, and the iteration methods like current(),
1053 next(), ... do NOT work on objects which implement ArrayAccess -- that's the reason why the QueryResult
1054 refactoring is a breaking change.
1055
1056 Now, however, the following is possible:
1057 * Return the first query result: $query->execute()->getFirst()
1058 * Get the underlying query: $query->execute()->getQuery()
1059 * Convert the result to array: $query->execute()->toArray()
1060
1061 This change is a prerequisite for Fluid Widgets to work. See the Fluid ChangeLog for details.
1062
1063
1064 Configurable Plugin Namespaces
1065 ------------------------------
1066
1067 By default each Extbase plugin has a unique URI prefix to avoid collisions with other plugins on your website.
1068 This so called plugin namespace usually has the format tx_yourextension_yourplugin.
1069 With Extbase 1.3 it is possible to override this namespace. This comes in handy if want to interact with 3rd party
1070 extensions, for example with tt_news:
1071
1072 plugin.tx_yourextension.view.pluginNamespace = tx_ttnews
1073
1074 This sets the plugin namespace of all your plugins inside the extension to "tx_ttnews", making it possibl
1075 to directly access tt_news parameters in your controller:
1076
1077 /**
1078  * @param integer $tt_news tt_news Article uid
1079  * @return void
1080  */
1081 public function yourAction($tt_news) {
1082         // interact with $tt_news uid
1083 }
1084
1085 This works with automatic mapping to Domain models too of course:
1086
1087 /**
1088  * @param Tx_YourExtension_Domain_Model_NewsArticle $tt_news tt_news Article
1089  * @return void
1090  */
1091 public function yourAction(Tx_YourExtension_Domain_Model_NewsArticle $tt_news) {
1092         // interact with $tt_news object
1093 }
1094
1095 You can also override the plugin namespace for a single instance by adding the section <view.pluginNamespace> to your
1096 plugin FlexForm.
1097
1098
1099 Automatic target page determination
1100 -----------------------------------
1101
1102 In TYPO3 v5 we won't have the notion of page uids. To accustom developers to this change, we're trying to free you from
1103 the need to specify target pages from within your Extension. Of course you can put all your functionality into one fully
1104 fledged plugin, then you won't have to deal with target pages as the current page is used by default.
1105
1106 But sometimes you want to be able to change the surrounding contents of a special view of your extension (e.g. the
1107 subcontent column of a details page). As before you can still specify the target page explicitly like:
1108
1109 <f:link.action action="foo" pageUid="123" />
1110
1111 With Extbase 1.3 you can also use a new feature called "automatic target page determination". It is disabled by default,
1112 but you can enable it with the following TypoScript:
1113
1114 plugin.tx_yourextension.view.defaultPid = auto
1115
1116 Then Extbase will search the page tree for a plugin that is configured to handle the specified action and you can omit
1117 the "pageUid" parameter in your links. Of course, this does not work if you use the same plugin multiple times in your
1118 page tree. In this case you can override the default page ID for the respective plugins:
1119
1120 plugin.tx_yourextension_yourplugin.view.defaultPid = 123
1121
1122 Note: By default this feature is not activated, because that would be a breaking change in some cases
1123
1124
1125 Improved resolveView() mechanism
1126 --------------------------------
1127
1128 Another feature we backported from FLOW3 is the improved view resolving.
1129 You can now change the default view implementation *per format* by inserting the following line in your Controller:
1130
1131 protected $viewFormatToObjectNameMap = array(
1132         'json' => 'Tx_YourExtension_View_JsonView',
1133         'html' => 'Tx_YourExtension_View_HtmlView'
1134 );
1135
1136
1137 Allowing plugins to be registered as new content element
1138 --------------------------------------------------------
1139
1140 This is done using an additional parameter to Tx_Extbase_Utility_Extension::configurePlugin
1141 that allows you to specify the plugin type. Example:
1142
1143 Tx_Extbase_Utility_Extension::configurePlugin(
1144         $_EXTKEY,
1145         'BlogList',
1146         array('Blog' => 'index'),
1147         array(),
1148         Tx_Extbase_Utility_Extension::PLUGIN_TYPE_CONTENT_ELEMENT
1149 );
1150 (The default value for the pluginType parameter is Tx_Extbase_Utility_Extension::PLUGIN_TYPE_PLUGIN)
1151
1152 Default Orderings & QuerySettings
1153 ---------------------------------
1154
1155 It is now possible to change the default orderings of a repository without you having to modify the query by setting
1156 the $defaultOrderings property of your Repository to a non-empty array:
1157
1158 protected $defaultOrderings = array(
1159         'title' => Tx_Extbase_Persistence_QueryInterface::ORDER_ASCENDING,
1160         'date' => 'title' => Tx_Extbase_Persistence_QueryInterface::ORDER_DESCENDING
1161 );
1162
1163 This will change the default ordering for all queries created by this repository. Of course you can override the
1164 ordering by calling $query->setOrderings() in your custom finder method.
1165
1166 Besides it's now possible to change the default query settings of a repository. This way you could for instance disable
1167 "respect storage pid" for all queries. We added a life-cycle method "initializeObject" to the repository which will be
1168 executed as soon as the repository is created. Just override it like the following:
1169
1170 public function initializeObject() {
1171         $querySettings = $this->objectManager->create('Tx_Extbase_Persistence_Typo3QuerySettings');
1172         $querySettings->setRespectStoragePage(FALSE);
1173         $this->setDefaultQuerySettings($querySettings);
1174 }
1175
1176 Of course, QuerySettings can be overridden too in your custom finder method by calling $query->setQuerySettings();
1177
1178
1179 Full Changes for 1.3.0 Beta 1a:
1180 ===============================
1181 [+TASK] Extbase: Re-implement support for BE modules
1182 [+FEATURE] Extbase (Utility): Allow plugins to be registered as new content element
1183         Added a fifth parameter to Tx_Extbase_Utility_Extension::configurePlugin that allows
1184         you to specify the plugin type (currently "list_type" and "CType" are supported).
1185         Thanks to Marc Bastian Heinrichs, Rens Admiraal & Franz Koch for your help!
1186         Resolves: #10666
1187 [+BUGFIX] Extbase (Utility): Added condition to Tx_Extbase_Utility_Extension::getTargetPidByPlugin() in order to only select tt_content entries that are of CType "list". Thanks to Marc Bastian Heinrichs
1188 [!!!][~TASK] Extbase (Configuration): Major rework of the ConfigurationManager
1189         Configuration of controllers and actions is now stored in a global registry
1190         ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions']). But you
1191         should never access this directly. Instead always retrieve the frameworkConfiguration
1192         from the ConfigurationManager.
1193         Inserting an Extbase plugin is now as simple as:
1194         lib.foo = USER
1195         lib.foo {
1196           userFunc = tx_extbase_core_bootstrap->run
1197           extensionName = YourExtension
1198           pluginName = YourPlugin
1199         }
1200         This is not really a breaking change as it does not change the public API. But it's not unlikely that it changes the behavior of your Extension in case you modified the TypoScript, that is generated by Tx_Extbase_Utility_Extension::configurePlugin().
1201         NOTE: Unit tests of Extbase and Fluid v4 are broken currently. We'll be fixing those asap
1202 [~TAKS] Extbase (MVC): FrontendRequestHandler now retrieves the current cObject through the ConfigurationManager
1203 [+BUGFIX] Extbase (MVC): FrontendRequestHandler was refering to $this->frameworkConfiguration which wasn't available
1204 [-API] Extbase (MVC): marked Tx_Extbase_MVC_Web_Request::getContentObjectData() deprecated as should retrieve the current cObject through the ConfigurationManager
1205 [+TASK] Extbase (MVC): modified the Tx_Extbase_MVC_Web_RequestBuilder so that it's possible to change the action only by specifying the action parameter. Before you had to specify the controller as well, even if it was the default controller
1206 [+BUGFIX] Extbase (MVC): Flashmessages now share a scope throughout the extension. Before, every plugin had it's own scope leading to the messages only being output when entering the same plugin again (e.g. redirecting from one plugin to another would never display the messages)
1207 [~TASK] Extbase (Core): The Flashmessages now get persisted in the Bootstrap in resetSingletons()
1208 [-TASK] Extbase (Core): Removed some commented lines from Bootstrap
1209 [FEATURE] Extbase (Object): Make DI Class Mapping configurable through TS
1210         It is now possible to configure the Dependency Injection class mapping by specifying:
1211         config.tx_extbase.objects.[FullyQualifiedObjectName].className = [NewClassName]
1212         This has the effect of effectively replacing [FullyQualifiedObjectName] with
1213         [NewClassName].
1214         Resolves: #10559
1215 [-TASK] Extbase (Utility): Removed two obsolete checks for $GLOBALS['TSFE']->tmpl->setup['tt_content.']['list.']['20.'] in Tx_Extbase_Utility_Extension
1216 [~TASK] Extbase: added two doc comments that were missing
1217 [+BUGFIX] Extbase (Persistence): Extbase still used PHPs current() on some QueryResults in Persistence/Repository. Replaced these by calls to the getFirst() method of the QueryResult
1218 [+TASK] Extbase (Persistence): added a private field to the QueryResult to make the above case easier to debug: When calling current() on an Iterator, PHP returns the first field of that object instead of calling the current() method of the Iterator interface.. With our somewhat pragmatic approach you'll see the warning if you debug the results of current($query->execute())
1219 [+BUGFIX] Extbase (Persistence): Replaced two occurrences of Query->count() by Query->execute()->count() to avoid deprecated warnings in the Core
1220 [+BUGFIX] Extbase (MVC): view configuration (templateRootPath, ...) has to be set before View::canRender() is called
1221 [!!!][+TASK] Extbase (MVC): The UriBuilder now uses the current cObject instead of creating a new instance in the constructor. This is a breaking change if you instantiated the UriBuilder in your code. Please use the Extbase ObjectManager or inject the ConfigurationManager manually.
1222 [+BUGFIX] Extbase (Reflection): ReflectionService now uses a cacheIdentifier per Extension. Besides the Bootstrap now resets the ReflectionService after dispatching a request. This resolves #10146
1223 [+TASK] Extbase (Configuration): The ConfigurationManager now holds the current cObject. You can retrieve it via ConfigurationManagerInterface::getContentObject()
1224 [+BUGFIX] Extbase (Configuration): When loading configuration of other plugins, the context specific configuration (e.g. flexform settings) are no longer merged with the frameworkConfiguration
1225 [+BUGFIX] Extbase (MVC): Controllers are no Singletons by default. If a controller contains stateful fields (e.g. $this->settings) this breaks multiple plugins on one page
1226 [+TASK] Extbase (Persistence): QuerySettings now also store the storage page id(s). This is required for the upcoming Ajax Widgets
1227 [+BUGFIX] Extbase: fixed php warning in Tx_Extbase_Persistence_LazyLoadingProxy when loading the real instance would return NULL. Resolves #10683
1228 [+BUGFIX] Extbase: use 3rd parameter = TRUE of t3lib_div::trimExplode to split switchableControllerActionParts from flexform. Thanks to Georg Ringer. Resolves #10688
1229 [+TASK] Extbase: Replaced "public static" by "static public" in various places to be CGL conform
1230 [+TASK] Extbase: Marked Utitlity_Extension camelCase/underscore helper functions deprecated
1231 [+TASK] Extbase: Removed obsolete FIXME comments, whitespace fixes
1232 [!!!] Extbase: Reintegrating branch "dispatcher" to trunk. Resolves: #10605
1233         Branch history:
1234 [+FEATURE] Extbase (Configuration): Extend ConfigurationManager so that it can load configuration of different plugins
1235 [+FEATURE] Extbase (Configuration): 1st level cache for ConfigurationManager. Resolves: #10717. Resolves: #10716
1236 [+TASK] Extbase: cleaned up Configuration* implementation, replaced t3lib_div::makeInstance() calls
1237         Streamlined ConfigurationManager API and enforced its usage throughout the Extbase classes.
1238         Replaced all t3lib_div::makeInstance() calls by $objectManager->create()/$objectManager->get() throughout the Extbase classes.
1239         Some smaller tweaks and fixes. Resolves: #10655. Resolves: #10712
1240 [TASK] Extbase (Object): Make tests work again. Resolves: #10709
1241 [TASK] Extbase (Object): Updated autoload.php and emconf. Relates to: #10561
1242 [TASK] Extbase (Object): Use typed exceptions. Relates to: #10561
1243 [TASK] Extbase (Object): CGL cleanup
1244         Additionally, removed support for @inject annotations at methods. Relates to: #10561
1245 [TASK] Extbase (Object): Remove getParents. Relates to: #10561
1246 [TASK] Extbase (Object): Remove isSingleton. Relates to: #10561
1247 [TASK] Extbase (Object): Remove injectExtensionSettings feature. Relates to: #10561
1248 [TASK] Extbase (Object): Change namespaces to Tx_Extbase_Object_Container. Relates to: #10561
1249 [TASK] Extbase (Object): Add Container to Extbase. Relates to: #10561
1250 [+TASK] Extbase (Core): moved Tx_Extbase_Bootstrap to Tx_Extbase_Core_Bootstrap
1251         Moving Bootstrap to be compliant with FLOW3
1252         Removed obsolete Classes. Resolves: #10704
1253 [+TASK] Extbase: Merged current trunk (r2689) with local modifications into dispatcher branch
1254         Note: This still needs a cleanup and some fixes (see FIXME comments) before it can be merged back to the trunk. Relates to: #10605. Relates to: #10655
1255 [+TASK] Extbase (Configuration): Moved CONFIGURATION_TYPE_* constraints to ConfigurationManagerInterface. Resolves #10604.
1256 [~TASK] Extbase (Configuration): The concrete configuration management strategy gets instanciate only once now.
1257 [+FEATURE] Extbase (MVC): Decoupled framework settings from Dispatcher.
1258         With the new dependency injection feature you can get the Configuration Manager injected by adding the lines
1259         protected $configurationManager;
1260         public function injectConfigurationManager(Tx_Extbase_Configuration_ConfigurationManagerInterface $configurationManager) {
1261                 $this->configurationManager = $configurationManager;
1262         }
1263         You can get various types of configuration invoking
1264         $this->configurationManager->getConfiguration(Tx_Extbase_Configuration_ConfigurationManager::CONFIGURATION_TYPE_EXTBASE)
1265         where the class constant must be either CONFIGURATION_TYPE_EXTBASE (for Extbase settings), or CONFIGURATION_TYPE_SETTINGS (for the current module/plugin settings), or CONFIGURATION_TYPE_TYPOSCRIPT (for a raw TS array). Resolves #4741.
1266 [~TAKS] Extbase: Removed obsolete code.
1267 [~TASK] Extbase: Added core patch for mod.php (see previous commit).
1268 [+TASK] Extbase: Changed the way a module gets called.
1269         - You can now specify a function name to be invoked by mod.php:
1270 $TBE_MODULES['_dispatcher'][] = 'Tx_Extbase_Bootstrap->callModule';
1271         - This requires a core patch.
1272 [~TASK] Extbase: Changed configuration of the RequestHandler class names to TypoScript.
1273         - The request handlers can now be registered in TypoScript with the setting:
1274            config.tx_extbase.mvc.requestHandlers.[RequestHandlerClassName] = [RequestHandlerClassName].
1275         - There are now two RequestHandlers in Extbase: FrontendRequestHandler and BackendRequestHandler. Common functionality is in the AbstractRequestHandler.
1276 [+API][+FEATURE] Extbase (Utility): Implemented mechanism to register RequestHandlers.
1277 [+TASK] Extbase: Backported Request Handler Resolver.
1278 [~TASK] Extbase: Added "deprecated" annotation to Dispatcher.
1279 [~TASK] Extbase: Added missing comment.
1280 [+BUGFIX] Extbase (Reflection): The ReflectionService now gets injected to the dispatcher. Related to #10146.
1281 [+BUGFIX] Extbase (Reflection): Changed the way the Reflection Service and it's cache gets initialized.
1282         * Removed check for pre-initialized Reflection Service in the Bootstrap.
1283         * Now using a fixed cache key ('ReflectionData').
1284         Related to #10146.
1285 [~TASK] Extbase: First step of the Dispatcher refactoring.
1286         * Added and adapted some Unit Tests.
1287         * Moved the Dispatcher to MVC.
1288         * Added a backwards compatibility Dispatcher on root level.
1289         * Added a Bootstrap class.
1290         * Removed all backend module support for now.
1291         Related to #7153.
1292 [+TASK] Extbase: Added branch for the dispatcher refactoring.
1293 [!!!][+BUGFIX] Extbase: fixed typo in getter and setter of Tx_Extbase_Domain_Model_FrontendUser::lastlogin . Thanks to Christian Schwan. Resolves #9345
1294 [+FEATURE] Extbase (MVC): Backport possibility to change the view object class name more easily
1295         Backported FLOW3s improved resolveView() mechanism. Tx_Fluid_View_TemplateView is still the default implementation, but can be easily changed by setting $defaultViewObjectName in your controller. Besides it's possible to specifying different views depending on the current request format by setting $viewFormatToObjectNameMap.
1296         NOTE: If the view can't be rendered, the new template based "NotFoundView" will be created. So instead of the invisible HTML comments of the EmptyView, you'll get a more meaningful error message if the template file could not be found
1297         Resolves: #8990
1298 [!!!][+FEATURE] Extbase (Persistence): Backport QueryResult from FLOW3
1299         Now Query::execute() returns an instance of QueryResultInterface that allows it to modify the query before actually accessing the records that it retrieves. This is required for the upcoming "Fluid widgets" backport (#10568).
1300         NOTE: This change is not backwards compatible, if you work with PHPs array_* functions on the query result. To work around this issue, you'll have to convert the query result to an array before by calling the QueryResult::toArray() method. We're planning to add a compatibility mode, but that's not yet implemented.
1301         Resolves: #10566
1302 [+BUGFIX] Extbase (Object): Minor fix in ObjectManager to make it compatible with PHP 5.2.x
1303         Relates to: #9062
1304 [+BUGFIX] Extbase (Object): Refactor Object Manager
1305         The Object Manager is now at the same location and
1306         has the same API as in FLOW3.
1307 [+BUGFIX] Extbase: Major cleanups to Dependency Injection and Persistence
1308         Now, DI finally works with Persistence, cleaning
1309         this greatly up. Additionally, all internal
1310         t3lib_div::makeInstance calls have been replaced.
1311         Now, dependency injection is actually usable.
1312         Additionally, we completely thought over which
1313         persistence classes need to be singleton and which
1314         should be prototype, leading finally to a
1315         coherent design in the persistence layer.
1316 [+BUGFIX] Extbase: remove non-used interfaces
1317         Removed classes which were not used.
1318         Relates to: #9062
1319         Resolves: #10585
1320         Resolves: #10564
1321         * Cleaned up Persistence Backend
1322         * Cleaned up QOM Factory
1323 [+BUGFIX] Extbase (MVC): Fix arguments object
1324         The arguments object is now correctly inheriting from ArrayObject
1325         Resolves: #10562
1326 [+BUGFIX] Extbase (MVC): Make database connection work again
1327         Resolves: #10585
1328 [+FEATURE] Extbase (DI): merging DI into trunk. (resolves #10558)
1329 [+TASK] Extbase: Undefined identifier in Tx_Extbase_Persistence_Storage_Typo3DbBackend::removeRow
1330         Method clearPageCache was given an undefined variable $uid as second parameter.
1331         Resolves: #10570
1332 [+TASK] Extbase: $query->contains generate incomplete SQL
1333         Use FIND_IN_SET instead of a self-constructed query of LIKE statements
1334         Resolves: #8959
1335 [+BUGFIX] Extbase (Persistence): Removed method createQuery from the QOMFactory. It is neither part of the API nor is it used by Extbase. Resolves #10215
1336 [+BUGFIX] Extbase (Property): Minor fix in PHP doc comment
1337         Fix the order of @param annotation in Tx_Extbase_Property_Mapper::mapAndValidate()
1338         Resolves: #5887
1339 [~CONFIGURATION] Extbase (MVC): Changed default value for automatic target page determination
1340         The page id gets automatically detected if plugin.tx_extensionname_pluginname.view.defaultPid
1341         is an empty string (was "auto" before). This ensures backwards compatibility.
1342         Resolves #9121
1343 [TASK] Extbase: moved Release Notes to ChangeLog.txt.
1344 [+FEATURE] Extbase (MVC): Automatic target page determination
1345         you can use the "pageUid" argument of the link.* and uri.* view helpers
1346         to link to a different page. That is deprecated though as we won't have
1347         the notion of "page uids" in v5. Instead the target page is now determined
1348         automatically.
1349         If the target page can't be determined because more than one active
1350         plugin is capable of handling the action an exception will be thrown.
1351         In that case you'll have to define the target page either by using the
1352         pageUid argument or - preferably - by setting
1353         plugin.tx_extensionname_pluginname.view.defaultPid to a fixed page uid.
1354         Note: This feature still has to be documented!
1355         Resolves: #9121
1356 [+FEATURE] Extbase (MVC): Configurable plugin namespace
1357         until now the namespace (aka prefix) of Extbase plugins was
1358         fixed (tx_extensionname_pluginname). This is now configurable
1359         via TypoScript. Just write:
1360         plugin.tx_extensionname_pluginname.view.pluginNamespace = my_custom_namespace
1361         to change the prefix for a specific plugin or
1362         plugin.tx_extensionname.view.pluginNamespace = my_custom_namespace
1363         to change if for the whole extension.
1364         Note: This feature still has to be documented!
1365         Resolves: #8365
1366
1367 Changes for 1.3.0 Alpha 2:
1368 ==========================
1369 included in TYPO3 4.5.0 Alpha 2.
1370
1371 Since the last version, one (possible BREAKING) change happened:
1372
1373  * Fixed Extbase Caching Bug.
1374    Non-cacheable actions were cached due to the fact that TYPO3s
1375    TypoScript condition "GP" does not merge GET & POST vars.
1376    Additionally "switchableControllerActions" that were overridden
1377    in the plugin flexform were not taken into account.
1378
1379 !!! This is a breaking change if you set up your TS configuration
1380     of the plugin manually.
1381
1382 Full Changes:
1383 -------------
1384
1385 [!!!][+BUGFIX] Extbase: Fix Extbase Caching Bug (thanks to Bastian Waidelich)
1386
1387 [-TASK] Extbase (MVC): removed fallback to current page in AbstractController::redirect() as that's already done within the UriBuilder if $targetPageUid is NULL
1388
1389
1390 Changes for 1.3.0 Alpha 1:
1391 ==========================
1392 included in TYPO3 4.5.0 Alpha 1.
1393
1394 Since the last version, the following notable things happened:
1395
1396 * All methods trying to find an object by uid now ignore the storagePid. This changes the behavior of argument mapping and the way extbase fetches 1:1 relations. Resolves #5631. You should not experience any negative side-effects of this change, i.e. if your extension worked before, it will definitely after this change. However, it makes the record handling more robust.
1397 * Performance improvements in TypoScript::convertTypoScriptArrayToPlainArray. Thanks to Timo Schmidt.
1398 * Numerous other bugfixes, see below.
1399
1400 Full Changes:
1401 -------------
1402 [~TASK] Extbase: Raised version number to 1.3.0-devel to reflect the version scheme defined in the wiki. Resolves #9152. Thanks Xavier for pointing to it.
1403 [+TASK] Extbase (MVC): cleaned up View implementations and added assign() and assignMultiple() methods to ViewInterface. This resolves #9137
1404 [+BUGFIX] Extbase: Fixed a small typo in extension description.
1405 [+BUGFIX] Extbase (Persistence): DataMapper now mapps NULL into a property on non-existing related object instead of FALSE. Resolves #8973.
1406 [+BUGFIX] Extbase (Reflection): getParentClass() in Tx_Extbase_Reflection_ClassReflection no longer causes a fatal error if no parent class exists. Resolves #8800.
1407 [+BUGFIX] Extbase (Utility): Improved performance of TypoScript::convertTypoScriptArrayToPlainArray. Thanks to Timo Schmidt. Resolves #8857.
1408 [~TASK] Extbase: Changed state to 'stable'. Resolves #8768.
1409 [+BUGFIX] Extbase: Fixed EOL and encoding of several files. Resolves #8876.
1410 [+BUGFIX] Extbase (MVC): Fixed a problem where a non-required action argument throwed Exception if it was not found in the Backend. Thanks to Marc Bastian Heinrichs. Resolves #7277.
1411 [!!!][+BUGFIX] Extbase (Persistence): All methods trying to find an object by uid now ignores the storagePid. This changes the behavior of argument mapping and the way extbase fetches 1:1 relations. Resolves #5631.
1412 [+BUGFIX] Extbase (Persistence): Fixed a problem where localized objects inside an aggregate are not translated. Resolves #8555.
1413 [~TASK] Extbase: Removed new lines at the end of php files.
1414
1415 RELEASE NOTES of Extbase v1.0.0
1416 ===============================
1417
1418 This package contains the Extbase Framework for Extensions. You may
1419 also want to install the BlogExample (blog_example) to experiment
1420 with. This little example extension demonstrates some of the main
1421 features of Extbase. The documentation is bundled in a separate
1422 extension called doc_extbase. Both, the blog_example and the
1423 doc_extbase can downloaded via TER.
1424
1425 http://typo3.org/extensions/repository/view/blog_example/current/
1426 http://typo3.org/extensions/repository/view/doc_extbase/current/
1427
1428 Currently Extbase is in ALPHA state. Do not expect everything in the
1429 right place and shape. And keep in mind that the API may change
1430 until TYPO3 v4.3beta1 is released.
1431
1432 If you have any feature requests or encountered issues regarding
1433 this package please use the facilities on forge to report.
1434
1435 We are very open to answer your questions. Please use the newsgroup
1436
1437 typo3.projects.typo3v4mvc on lists.netfielders.de
1438
1439 so other developers can react to your comments and also
1440 profit from the postet solutions. Do not contact a member of the
1441 development team via private email (or skype, or visits, or ...)
1442 until he accepted this channel. We all do coding for Extbase on
1443 our sparetime and must handle our regular work load - and don't
1444 forget about our families ;-).
1445
1446 We hope you have fun with this package!
1447
1448 -- Your Extbase Development Team
1449
1450 HOW TO CREATE THE CHANGELOG
1451 ===========================
1452 git log [startRevision]..HEAD --pretty=format:"%s%n%b%n" | grep -v "^$" | grep -v "git-svn-id"
1453
1454 Verify that the merge into the Core succeeded:
1455 diff -urNw --exclude=".git" --exclude=".svn" -I "@version"  ../../../typo3/sysext/extbase/ .