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