Upgrade Notes
10.2.0
- [Maintenance] Maintenance tasks are now handled with Symfony Messenger. The
pimcore:maintenancecommand will add the maintenance messages to the bus and runs them afterwards immediately from the queue. However it's recommended to setup independent workers that process the queues, by runningbin/console messenger:consume pimcore_core pimcore_maintenance(using e.g. Supervisor) and adding--asyncoption to thepimcore:maintenancecommand that stops the maintenance command to process the queue directly. Details about setting it up for production environments, please check Symfony Messenger Component docs. - [Maintenance] Image Optimizer maintenance task moved to Messages which are consumed by Symfony Messenger. If you want to disable the image optimization, please add config to avoid dispatching the messages on messenger bus:
pimcore:
assets:
image:
thumbnails:
image_optimizers:
enabled: false
- [Configs] The default storage for configurations is now
yamlfiles in thevar/configdirectory and are loaded as Symfony Config. The oldphpconfig-files continue to work, however, changes on existing configurations as well as new configurations are written toyaml.
Important notice: writing configs toyamlis only supported if the kernel is in debug mode, because changes of the config need a rebuild of the container configuration.
If you require to change the config on production environments we recommend to change the storage tosettings-storeas described here. - [Asset] Pimcore now automatically supports AVIF image format for thumbnails using
autoformat (onlyImagick). To disable AVIF please follow this instructions. - [DataObject API] There is change in behavior when validating the inherited dataobjects & variants. As before, the inherited object gets saved with invalid attribute value, if the parent object has a valid value for the same attribute. Now, the API will throw validation exception, if the inherited object has an invalid value. please see https://github.com/pimcore/pimcore/pull/10529
10.1.0
- [Core] Additional interfaces for data-types introduced. Existing
method_existscalls are deprecated and will be removed in Pimcore 11. - [InstallBundle] Installer preconfiguration path changed from
app/config/installer.ymltoconfig/installer.yaml. - [Core] composer.json:
symfony/symfonypackage requirement has been replaced bysymfony/*individual bundles. Note for Bundles: if you are usingsymfony/symfonydependency, it will now conflict with packagepimcore/pimcore. Please move your bundle requirements to Symfony individual component packages. -
[Ecommerce][TrackingManager] event name in method
trackCheckoutComplete()changed fromcheckouttopurchaseforGoogleTagManagerimplementation. - [Glossary]
pimcoreglossary()tag has been deprecated in favor ofpimcore_glossaryTwig filter and will be removed in Pimcore 11. - Bumped
google/apiclientto 2.10 version - Use proper namespaces for API references. - Bumped
endroid/qr-codeto version 4. -
[Ecommerce][TrackingManager] event name in method
trackCheckoutComplete()changed fromcheckouttopurchaseforGoogleTagManagerimplementation - [Password encoding] Pimcore Password Encoder factory has been deprecated in favor of new Password Hasher factory, to align with Symfony authentication system. The default factory is used as default and to switch to new Password hasher factory, please enable through config
factory_typeas follows:
pimcore:
security:
factory_type: password_hasher
# the password hasher factory as defined in services.yml
password_hasher_factories:
App\Model\DataObject\User: website_demo.security.password_hasher_factory
and use new service handler:
services:
website_demo.security.password_hasher_factory:
class: Pimcore\Security\Hasher\Factory\UserAwarePasswordHasherFactory
arguments:
- Pimcore\Security\Hasher\PasswordFieldHasher
- ['password']
- [Session] Default setting for
framework.session.cookie_samesitechanged tostrict. For more information about the possible impact on your project, please have a look at the docs of set-cookie. If you prefer to stay on the old session cookie behavior, please add the following to your project configuration:
framework:
session:
cookie_samesite: 'lax'
10.0.0
System Requirements
- PHP >= 8.0
- Apache >= 2.4
Database
- MariaDB >= 10.3
- MySQL >= 8.0
- Percona Server (supported versions see MySQL)
Changes
-
Bumped
symfony/symfonyto "^5.2.0". Pimcore X will only support Symfony 5. -
ExtJS bumped to version 7.
-
Bumped:
-
guzzlehttp/guzzleto "^7.2" -
sensio/framework-extra-bundleto "^6.1" -
twig/twigto "^3.0" -
egulias/email-validatorto "^3.0.0" -
onnov/detect-encodingto "^2.0" -
mjaschen/phpgeoto "^3.0" -
matomo/device-detectorto "^4.0" -
ext-imagickto "^3.4.0" (suggest) -
lcobucci/jwtto "^4.0"
-
-
Pimcore\Model\DataObject\ClassDefinition\Data::isEqual()has been removed. For custom data types, implement\Pimcore\Model\DataObject\ClassDefinition\Data\EqualComparisonInterfaceinstead. -
Pimcore\Model\Document\Editable(former.Tags) properties visibility changed fromprotectedtoprivate. -
[Templating]
- PHP templating engine (including templating helpers & vars) has been removed to support Symfony 5. Use Twig or Php Templating Engine Bundle(enterprise) instead.
- Removed ViewModel.
- Removed Auto view rendering.
- Removed Placeholder support. Use Twig Parameters instead.
-
Pimcore\Model\Tool\Tracking\Eventhas been removed. -
Pimcore\Tool\Archivehas been removed. -
The object query table will now consider the fallback language. If you want to keep the old behavior set
pimcore.objects.ignore_localized_query_fallbackin your configuration. -
Removed QR Codes.
-
Remove Linfo Integration.
-
[Ecommerce][IndexService] Removed FactFinder integration.
-
Removed
Pimcore\Model\Tool\Lock. -
Removed HybridAuth integration.
-
Removed
Pimcore\Model\Document\Tag\*classes. UsePimcore\Model\Document\Editable\*classes instead. -
Removed
pimcore_tag_css classes, usepimcore_editable_css instead. -
Removed REST Webservice API.
-
Removed Legacy Service aliases.
-
[Document] Removed support for edit.php on Area-Bricks. Use new feature: Editable Dialog Box instead.
-
[Glossary] Removed support for
Acronym. UseAbbrinstead. -
[Element] Added
setProperties()andsetProperty()methods toPimcore\Model\Element\ElementInterface. -
[Element]
setProperty()method param$inheritabledefaults to false. Adding a new property will create a non-inheritable property for documents. -
[Document] Removed Editable Naming Strategy Support.
-
Removed Cookie Policy Info Bar Integration.
-
Removed
\Pimcore\Browserclass. Use\Browserinstead. -
Method signature
PageSnippet::setEditable(string $name, Editable $data)has been changed toPageSnippet::setEditable(Editable $editable). -
Removed Tag & Snippet Management.
-
Removed
Pimcore\Controller\EventedControllerInterface. UsePimcore\Controller\KernelControllerEventInterfaceandPimcore\Controller\KernelResponseEventInterfaceinstead. -
Doctrine dependencies bumped to latest major version:
- "doctrine/common": "^3.0.0"
- "doctrine/inflector": "^2.0.0"
-
Removed service
pimcore.implementation_loader.document.tag. UsePimcore\Model\Document\Editable\Loader\EditableLoaderinstead. -
Removed Pimcore Bundles generator and command
pimcore:generate:bundle. -
Pimcore\Controller\Controllerabstract class now extendsSymfony\Bundle\FrameworkBundle\Controller\AbstractControllerinstead ofSymfony\Bundle\FrameworkBundle\Controller\Controller. -
Pimcore\Translation\Translator::transChoice()&Pimcore\Bundle\AdminBundle\Translation\AdminUserTranslator::transChoice()methods have been removed. Usetrans()method with%count%parameter. -
Removed
pimcore.documents.create_redirect_when_movedconfig. Please remove from System.yml. -
Removed
pimcore.workflows.initial_placeconfig. Usepimcore.workflows.initial_markingsinstead. -
WebDebugToolbarListenerPasshas been removed andWebDebugToolbarListenerhas been marked as final & internal. -
Bumped
sabre/davto ^4.1.1 -
Removed
Pimcore\Model\Element\Reference\Placeholderclass. -
Removed
pimcore.routing.defaults. Usepimcore.documents.default_controllerinstead. -
Removed
\Pimcore\Tool::getRoutingDefaults(),PageSnippet::$module|$action|get/setAction()|get/setModule(),DocType::$module|$action|get/setAction()|get/setModule(),Staticroute::$module|$action|get/setAction()|get/setModule(). -
Removed
\Pimcore\Tool::getValidCacheKey/(), usepreg_replace('/[^a-zA-Z0-9]/', '_', $key)instead. -
Removed
\Pimcore\Tool::isValidPath/(), use\Pimcore\Model\Element\Service::isValidPath()instead. -
Deprecated
\Pimcore\Model\Element\Service::getSaveCopyName(), usegetSafeCopyName()instead. -
Using dynamic modules, controllers and actions in static routes (e.g.
%controller) does not work anymore. -
Removed
\Pimcore\Controller\Config\ConfigNormalizer. -
Removed
pimcore_action()Twig extension. Use Twigrender()instead. -
Removed
\Pimcore\Console\Log\Formatter\ConsoleColorFormatter -
Removed
\Pimcore\Console\CliTrait, usephp_sapi_name() === 'cli'instead. -
Removed
\Pimcore\Console\Dumper, use Symfony'sVarDumperinstead. -
Removed
\Pimcore\Google\Webmastertools, use\Pimcore\Config::getReportConfig()->get('webmastertools'')instead. -
Removed
\Pimcore\Helper\JsonFormatter, usejson_encode($data, JSON_PRETTY_PRINT)instead. -
Removed
\Pimcore\Log\Handler\Mail, there's no replacement for this internal class. -
Removed
\Pimcore\File::isIncludeable()method, there's no replacement. -
Removed
\Pimcore\DataObject\GridColumnConfig\AbstractConfigElementjust implement\Pimcore\DataObject\GridColumnConfig\ConfigElementInterfaceinstead. -
[Documents] Renderlet Editable: removed
action&bundleconfig. Specify controller reference, e.g.App\Controller\FooController::myAction -
Bumped
codeception/codeceptionto "^4.1.12". -
Pimcore Bundle Migrations: Extending the functionality of
DoctrineMigrationsBundleis not any longer possible the way we did it in the past. Therefore we're switching to standard Doctrine migrations, this means also that migration sets are not supported anymore and that the available migrations have to be configured manually or by using flex.doctrine_migrations: migrations_paths: 'Pimcore\Bundle\DataHubBundle\Migrations': '@PimcoreDataHubBundle/Migrations' 'CustomerManagementFrameworkBundle\Migrations': '@PimcoreCustomerManagementFrameworkBundle/Migrations'However, we've extended the doctrine commands to accept an optional
--prefixoption, which let's you filter configured migration classes. This is in a way an adequate replacement for the-s(sets) option../bin/console doctrine:migrations:list --prefix=Pimcore\\Bundle\\CoreBundle -
[Ecommerce] Added
setItems($items)methodCartInterface,getRule()toModificatedPriceInterface&getId()method toProductInterface. -
[Data Objects] Relation Data-Types: throws exception if object without an ID was assigned. e.g.
$newObject = new MyDataObject(); $existingObject->setMyRelations([$newObject]); $existingObject->save(); //validation error -
[Data Objects] ManyToMany Relation Types: throws exception if multiple assignments passed without enabling Multiple assignments on class definition.
-
[Data Objects] ReverseManyToManyObjectRelation - now supports reverse relations from ManyToOneRelation field and has been renamed to ReverseObjectRelation with BC layer.
-
[Data Object] Table Data-Type always return an array.
-
[Data Object]
Model::getById()&Model::getByPath()do not catch exceptions anymore. -
Added methods
getArgument($key),setArgument($key, $value),getArguments(),setArguments(array $args = []),hasArgument($key)toPimcore\Model\Element\ElementInterface\ElementEventInterface. -
[Ecommerce] Changed name of interfaces from I* to *Interface .e.g.
Pimcore\Bundle\EcommerceFrameworkBundle\Model\ICheckoutable=>Pimcore\Bundle\EcommerceFrameworkBundle\Model\CheckoutableInterface -
Removed
cache/tag-interopdependency. -
[Cache]
Pimcore\Cacheis directly based on Symfony/Cache. If you have custom cache pool configured underpimcore.cache.poolsthen change it to Symfony Configframework.cache.pools. Read more -
Methods
checkCsrfToken(),getCsrfToken(),regenerateCsrfToken()methdos have been removed fromPimcore\Bundle\AdminBundle\EventListener\CsrfProtectionListener. UsePimcore\Bundle\AdminBundle\Security\CsrfProtectionHandlerinstead. -
Bumped
phpunit/phpunit&codeception/phpunit-wrapperto "^9" -
Replaced
html2text/html2textwithsoundasleep/html2text. Removed methods fromPimcore\Mail:determineHtml2TextIsInstalled(),setHtml2TextOptions($options = []),getHtml2TextBinaryEnabled(),enableHtml2textBinary(),getHtml2textInstalled(). -
Replaced
doctrine/commonwithdoctrine/persistence. -
[Asset] Image thumbnails: Using getHtml() will return
<picture>tag instead of<img>tag. -
[Asset] Config option
pimcore.assets.image.thumbnails.webp_auto_supportwas removed, since the browser detection is not needed anymore using the<picture>tags for thumbnails. -
[Ecommerce] Marked
AbstractOrder&AbstractOrderItemclasses as abstract. Changes onAbstractOrderclass:- Added:
getCartHash(),getComment(),setComment() - Removed:
getDeliveryEMail(),setDeliveryEMail(),getCartModificationTimestamp()
- Added:
-
[Data Objects] Data-Types: Removed getPhpdocType() BC layer
-
[Ecommerce][FilterService] Added method
getFilterValues()toPimcore\Bundle\EcommerceFrameworkBundle\FilterService\FilterType\AbstractFilterType -
[Data Objects] OwnerAwareFieldInterface: added methods
_setOwner($owner),_setOwnerFieldname(?string $fieldname),_setOwnerLanguage(?string $language),_getOwner(),_getOwnerFieldname(), _getOwnerLanguage() and removed methodsetOwner($owner, string $fieldname, $language = null). -
[Translations] Remove
pimcore.translations.case_insensitivesupport. -
[Core] Folder structure updated to support Symfony Flex. Changes as per Symfony Docs
-
[Translations]
Pimcore\Model\Translation\AbstractTranslation,Pimcore\Model\Translation\AdminandPimcore\Model\Translation\Websitewith corresponding listing classes have been removed. Use new classPimcore\Model\Translationwith domain support (Translation::DOMAIN_DEFAULTorTranslation::DOMAIN_ADMIN). -
Replaced
scheb/two-factor-bundlewithscheb/2fa-bundle,scheb/2fa-google-authenticator&scheb/2fa-qr-code. -
Removed Laminas Packages.
-
Removed Zend Compatibility Query Builder.
-
[Ecommerce] Payment Providers: Removed
WirecardSeamless,Qpay,Paypalintegration and moved to a separate bundle:-
Datatrans=> https://github.com/pimcore/payment-provider-datatrans -
Heidelpay=> https://github.com/pimcore/payment-provider-unzer -
Hobex=> https://github.com/pimcore/payment-provider-hobex -
Klarna=> https://github.com/pimcore/payment-provider-klarna -
Mpay24Seamless=> https://github.com/pimcore/payment-provider-mpay24-seamless -
OGone=> https://github.com/pimcore/payment-provider-ogone -
PayPalSmartPaymentButton=> https://github.com/pimcore/payment-provider-paypal-smart-payment-button -
PayU=> https://github.com/pimcore/payment-provider-payu
-
-
[Core] Security configurations not merged anymore from custom bundles.
-
twig/extensionsdependency has been removed. -
Removed legacy transliterator (changes related to
\Pimcore\Tool\Transliteration::_transliterationProcess). -
Config: Invalid pimcore configurations will result in compile error:
pimcore: xyz: xyz: -
[Data Objects] Removed
getFromCsvImport()method from data-types. -
Replaced
Ramsey/UuidwithSymfony/Uuid. -
Matomo Integration has been removed.
-
Pimcore\Tool\Console::exec()method has been removed. Use Symfony\Component\Process\Process instead. -
\Pimcore\Tool\Console::getOptions()method has been removed. -
\Pimcore\Tool\Console::getOptionString()method has been removed. -
\Pimcore\Tool\Console::checkCliExecution()method has been removed. -
Pimcore\Twig\Extension\Templating\Navigation::buildNavigation()method has been removed. -
Pimcore\Tool\Mimeclass has been removed. UseSymfony\Component\Mime\MimeTypesinstead. -
[Documents] Areabricks: location changed from
Areastoareaswith BC layer. -
[Documents] Areablocks: Adding a brick to areablocks will not trigger reload by default anymore and should be configured per Brick.
-
SQIP support has been removed.
-
Thumbnail::getHtml()doesn't accept direct pass of HTML attributes such asclassortitleanymore, useimageAttributesorpictureAttributesinstead. -
Removed methods
getForcePictureTag()andsetForcePictureTag()from\Pimcore\Model\Asset\Image\Thumbnail\Config -
\Pimcore\Model\Document\Editable\Block\AbstractBlockItem::getElement()has been removed, usegetEditable()instead. -
\Pimcore\Model\DataObject\Service::removeObjectFromSession()has been removed, useremoveElementFromSession()instead. -
\Pimcore\Model\DataObject\Service::getObjectFromSession()has been removed, usegetElementFromSession()instead. -
\Pimcore\Model\Asset\Image\Thumbnail\Config::setColorspace()has been removed -
\Pimcore\Model\Asset\Image\Thumbnail\Config::getColorspace()has been removed -
\Pimcore\Model\DataObject\ClassDefinition\Data\DataInterfacehas been removed -
\Pimcore\Model\Asset\Listing::getPaginatorAdapterhas been removed, useknplabs/knp-paginator-bundleinstead. -
\Pimcore\Model\Document\Listing::getPaginatorAdapterhas been removed, useknplabs/knp-paginator-bundleinstead. -
\Pimcore\Model\DataObject\Listing::getPaginatorAdapterhas been removed, useknplabs/knp-paginator-bundleinstead. -
\Pimcore\Google\Cse::getPaginatorAdapterhas been removed, useknplabs/knp-paginator-bundleinstead. -
\Pimcore\Helper\RobotsTxthas been removed -
\Pimcore\Tool\Frontend::getSiteKey()method has been removed. -
\Pimcore\Model\User::getUsername()has been removed, useUser::getName()instead. -
\Pimcore\Cache\Runtime::get('pimcore_editmode')isn't supported anymore, useEditmodeResolverservice instead. -
[Documents]
Editable::factory()was removed, useEditableLoaderservice instead. -
[Data Objects] Removed CSV import feature. Use https://github.com/pimcore/data-importer or https://github.com/w-vision/DataDefinitions instead.
-
[DataObjects] marked
Pimcore\DataObject\GridColumnConfig\Operatoroperator classes as final and internal -
[DataObjects] PHP Class
Pimcore\Model\DataObject\Data\Geopointhas been replaced withGeoCoordinates. Changed the signature of__construct. -
Added
Pimcore\Bundle\EcommerceFrameworkBundle\FilterService\FilterType\AbstractFilterType::getFilterValues()with the same signature asgetFilterFrontend(). To upgrade, renamegetFilterFrontend()togetFilterValues()and remove the rendering stuff to just return the data array.Before:
public function getFilterFrontend(AbstractFilterDefinitionType $filterDefinition, ProductListInterface $productList, $currentFilter) { // ... return $this->render($this->getTemplate($filterDefinition), [ //... ]); }After:
public function getFilterValues(AbstractFilterDefinitionType $filterDefinition, ProductListInterface $productList, array $currentFilter): array { // ... return [ //... ]; } -
Added Validation for Geo datatypes
- for Geopolyline and Geopolygon invalid data doesn't get serialized 1:1 anymore
- for Geobounds and Geopoint invalid data doesn't get dropped silently anymore
-
Calling
$imageAsset->getThumbnail('non-existing-thumbnail-definition)with a non-existing thumbnail definition will now throw an exception. Same goes for video assets and video image thumbnails. -
Removed grid column operator
ObjectBrickGettersince it is obsolete -
Grid operator
AnyGetteravailable only for admin users from now on -
[Ecommerce] Added
getAttributeConfigmethod toPimcore\Bundle\EcommerceFrameworkBundle\IndexService\Config\ConfigInterfaceinterface -
[Ecommerce] Added
getClientConfigmethod toPimcore\Bundle\EcommerceFrameworkBundle\IndexService\Config\ElasticSearchConfigInterface -
[Ecommerce] Added abstract method
setSuccessorOrdertoPimcore\Bundle\EcommerceFrameworkBundle\Model\AbstractOrder -
[Ecommerce] Indexing doesn't catch any exceptions that occur during preprocessing of attributes in BatchProcessing workers (e.g. elasticsearch). You can change that behavior with event listeners.
-
[Ecommerce] Added abstract method
setCartHashtoPimcore\Bundle\EcommerceFrameworkBundle\Model\AbstractOrder -
[Ecommerce] Added
getFieldNameMappedtoPimcore\Bundle\EcommerceFrameworkBundle\IndexService\Config\ElasticSearchConfigInterface -
[Ecommerce] Added
getReverseMappedFieldNametoPimcore\Bundle\EcommerceFrameworkBundle\IndexService\Config\ElasticSearchConfigInterface -
[Ecommerce] Changed tenant config type hint to
FindologicConfigInterfaceinPimcore\Bundle\EcommerceFrameworkBundle\IndexService\ProductList\DefaultFindologic::__construct -
[Ecommerce] Changed price fields
totalNetPriceandtotalPriceofOnlineShopOrderItemto decimal. -
[Ecommerce] Removed deprecated configuration options
enabled,pricing_manager_idandpricing_manager_optionsfor pricing_manager. Use tenant specific options. -
[Ecommerce] Removed deprecated functions
get/setCurrentTenantandget/setCurrentSubTenantofEnvironmentInterface -
[Ecommerce] Removed deprecated service alias for
Pimcore\Bundle\EcommerceFrameworkBundle\IEnvironment -
[Ecommerce] Removed deprecated functions
getGeneralSearchColumns,createOrUpdateTable,getIndexColumnsandgetIndexColumnsByFilterGroupofIndexService -
[Ecommerce] Removed deprecated function
getPaginatorAdapterfromProductList\MySql,ProductList\DefaultFindologic,ProductList\ElasticSearch\AbstractElasticSearch,Token\ListingandAbstractOrderList -
[Ecommerce] Removed deprecated functions
getCalculatedPriceandgetCalculatedPriceInfofromAbstractSetProduct -
[Ecommerce] Removed deprecated protected function
getAvailableFilterValuesfromOrder\Listing -
[Ecommerce] Activated
generateTypeDeclarationsfor all generated data object classes and field collections. For migration activategenerateTypeDeclarationsto all Ecommerce Framework data object classes and update your source code accordingly. -
[Ecommerce] Made methods abstract instead of throwing
UnsupportedExceptionwhere easily possible for model classes (AbstractProduct,AbstractSetProduct,AbstractOfferToolProduct,AbstractOfferItem,AbstractOffer). -
[Ecommerce] Added type declarations to Ecommerce Framework product interfaces (
ProductInterface,IndexableInterface,CheckoutableInterface). -
[Ecommerce] Removed Elasticsearch 5 and 6 support
-
[Ecommerce]
getItemAmountandgetItemCountofCartsnow require string parameter (instead of boolean). Use one ofCartInterface::COUNT_MAIN_ITEMS_ONLY,CartInterface::COUNT_MAIN_AND_SUB_ITEMS,CartInterface::COUNT_MAIN_OR_SUB_ITEMS. -
[Ecommerce] Removed legacy CheckoutManager architecture, migrate your project to V7 if not already
-
CancelPaymentOrRecreateOrderStrategyis now default strategy for handling active payments - Removed method
isCartReadOnlyfrom cart andcart_readonly_modeconfiguration option as readonly mode does not exist anymore. - Removed deprecated method
initPaymentfromPaymentInterface
-
-
[Ecommerce] Removed deprecated
ecommerce:indexservice:process-queuecommand, useecommerce:indexservice:process-preparation-queueorecommerce:indexservice:process-update-queueinstead -
[Ecommerce] Removed deprecated
mappingoption in index attributes configuration (never worked properly anyway) -
[Ecommerce] Removed deprecated
IndexUpdatertool -
[Ecommerce] Removed legacy BatchProcessing worker mode, product centric batch processing is now standard
- Removed abstract class
AbstractBatchProcessingWorker, useProductCentricBatchProcessinginstead - Removed methods from interface
BatchProcessingWorkerInterfaceand its implementations:-
BatchProcessingWorkerInterface::processPreparationQueue -
BatchProcessingWorkerInterface::processUpdateIndexQueue
-
- Added methods to interface
BatchProcessingWorkerInterface-
BatchProcessingWorkerInterface::prepareDataForIndex -
BatchProcessingWorkerInterface::resetPreparationQueue -
BatchProcessingWorkerInterface::resetIndexingQueue
-
- Removed constants
-
ProductCentricBatchProcessingWorker::WORKER_MODE_LEGACY -
ProductCentricBatchProcessingWorker::WORKER_MODE_PRODUCT_CENTRIC
-
- Removed configuration node
worker_modeinindex_serviceconfiguration
- Removed abstract class
-
[Ecommerce] Moved method
getIdColumnTypefromMysqlConfigInterfacetoConfigInterface. Since it was and still is implemented inAbstractConfigthis should not have any consequences. -
[Ecommerce] Timestamp of CartItems is now in mirco seconds (existing data will be migrated).
-
[Ecommerce][PricingManager] Added two new interfaces
ProductActionInterfaceandCartActionInterface. All actions need to implement either of it - otherwise they will not be considered anymore in price calculation. -
[Web2Print]
- Removed
PdfReactor8, usePdfReactorinstead. - Removed PDFreactor version selection in web2print settings, since most current PDFreactor client lib should be backwards compatible to older versions.
- Removed
-
[Email & Newsletter] Swiftmailer has been replaced with Symfony Mailer.
\Pimcore\Mailclass now extends fromSymfony\Component\Mime\Emailand new mailer servicePimcore\Mail\Mailerhas been introduced, which decoratesSymfony\Component\Mailer\Mailer, for sending mails.Email method and transport setting has been removed from System settings. Cleanup Swiftmailer config and setup mailer transports "main" & "newsletter" in config.yaml:
framework: mailer: transports: main: smtp://user:pass@smtp.example.com:port pimcore_newsletter: smtp://user:pass@smtp.example.com:portplease see Symfony Transport Setup for more information.
API changes:
Before:
$mail = new \Pimcore\Mail($subject = null, $body = null, $contentType = null, $charset = null); $mail->setBodyText("This is just plain text"); $mail->setBodyHtml("<b>some</b> rich text: {{ myParam }}"); ...After:
$mail= new \Pimcore\Mail($headers = null, $body = null, $contentType = null); $mail->text("This is just plain text"); $mail->html("<b>some</b> rich text: {{ myParam }}"); ...Before:
$mail->setFrom($emailAddress, $name); $mail->setTo($emailAddress, $name); ...After:
$mail->from(new \Symfony\Component\Mime\Address($emailAddress, $name)); $mail->to(new \Symfony\Component\Mime\Address($emailAddress, $name)); ... -
[Email & Newsletter]
\Pimcore\Mail::setEnableLayoutOnRendering/getEnableLayoutOnRendering()methods have been removed, with Twig they are just not necessary anymore. -
[Email & Newsletter]
\Pimcore\Mail::isValidEmailAddress()method has been removed, useEmailValidatorinstead. -
[Security] BruteforceProtectionHandler & BruteforceProtectionListener has been made final and marked as internal.
-
[JWTCookieSaveHandler]
Pimcore\Targeting\Storage\Cookie\JWT\Decoderhas been removed in favor ofLcobucci\JWT\Encoding\JoseDecoder. -
simple_html_domlibrary has been removed. UseSymfony\Component\DomCrawler\Crawlerinstead. -
Removed deprecated Twig extension
pimcore_action(). -
Removed method
getFlag()fromPimcore\Config. -
Removed
Pimcore\Reportclass. -
[Versioning] Default behavior has been changed to following:
- Empty values for
steps&days=> unlimited versions. - Value 0 for
stepsordays=> no version will be saved at all & existing will be cleaned up.
please update your system settings as per the requirements.
- Empty values for
-
Removed deprecated
marshal()andunmarshal()methods from object data-types. -
DynamicTextLabelInterface::renderLayoutText()must handle nullable object param. -
[AdminBundle] Marked classes and controllers as @internal/final - please see all changes here: https://github.com/pimcore/pimcore/pull/8453/files & https://github.com/pimcore/pimcore/pull/8988/files