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