Skip to content

Ibexa DXP v5.0 renames, deprecations and removals

This page lists backwards compatibility breaks and deprecations introduced in Ibexa DXP v5.0.

Upgrade to v5

For a guide on moving your project to v5.0, see Update and migration instructions.

Ibexa DXP v5.0 introduces further modifications to significant parts of the code to align with the ones introduced in previous versions.

These changes include dropped packages, changing database table and column names, field identifiers, namespaces, function names, and others.

Dropped packages

Ibexa DXP v5.0 no longer includes legacy Commerce packages. The solution has been replaced with Commerce that is included as standard and has been continuously developed since v4.4.

Also, packages compatibility-layer and icons have been dropped.

Database table and column names

A number of database table and column names have changed. If your custom code directly queries them, you need to update the code.

Old name New name
ezbinaryfile ibexa_binary_file
ezcobj_state ibexa_object_state
ezcobj_state_group ibexa_object_state_group
ezcobj_state_group_language ibexa_object_state_group_language
ezcobj_state_language ibexa_object_state_language
ezcobj_state_link ibexa_object_state_link
ezcontent_language ibexa_content_language
ezcontentbrowsebookmark ibexa_content_bookmark
ezcontentclass ibexa_content_type
ezcontentclass_attribute ibexa_content_type_field_definition
ezcontentclass_attribute.contentclass_id ibexa_content_type_field_definition.content_type_id
ezcontentclass_attribute_ml ibexa_content_type_field_definition_ml
ezcontentclass_attribute_ml.contentclass_attribute_id ibexa_content_type_field_definition_ml.content_type_field_definition_id
ezcontentclass_classgroup ibexa_content_type_group_assignment
ezcontentclass_classgroup.contentclass_id ibexa_content_type_group_assignment.content_type_id
ezcontentclass_name ibexa_content_type_name
ezcontentclass_name.contentclass_id ibexa_content_type_name.content_type_id
ezcontentclassgroup ibexa_content_type_group
ezcontentobject ibexa_content
ezcontentobject.contentclass_id ibexa_content.content_type_id
ezcontentobject_attribute ibexa_content_field
ezcontentobject_attribute.contentclassattribute_id ibexa_content_field.content_type_field_definition_id
ezcontentobject_link ibexa_content_relation
ezcontentobject_link.contentclassattribute_id ibexa_content_relation.content_type_field_definition_id
ezcontentobject_name ibexa_content_name
ezcontentobject_trash ibexa_content_trash
ezcontentobject_tree ibexa_content_tree
ezcontentobject_version ibexa_content_version
ezdatebasedpublisher_scheduled_entries ibexa_scheduler_scheduled_entries
ezdfsfile ibexa_dfs_file
ezeditorialworkflow_markings ibexa_workflow_markings
ezeditorialworkflow_transitions ibexa_workflow_transitions
ezeditorialworkflow_workflows ibexa_workflow_workflows
ezform_field_attributes ibexa_form_field_attributes
ezform_field_validators ibexa_form_field_validators
ezform_fields ibexa_form_fields
ezform_form_submission_data ibexa_form_form_submission_data
ezform_form_submissions ibexa_form_form_submissions
ezform_forms ibexa_form_forms
ezgmaplocation ibexa_map_location
ezimagefile ibexa_image_file
ezkeyword ibexa_keyword
ezkeyword_attribute_link ibexa_keyword_field_link
ezmedia ibexa_media
eznode_assignment ibexa_node_assignment
eznotification ibexa_notification
ezpackage ibexa_package
ezpage_attributes ibexa_page_attributes
ezpage_blocks ibexa_page_blocks
ezpage_blocks_design ibexa_page_blocks_design
ezpage_blocks_visibility ibexa_page_blocks_visibility
ezpage_map_attributes_blocks ibexa_page_map_attributes_blocks
ezpage_map_blocks_zones ibexa_page_map_blocks_zones
ezpage_map_zones_pages ibexa_page_map_zones_pages
ezpage_pages ibexa_page_pages
ezpage_zones ibexa_page_zones
ezpolicy ibexa_policy
ezpolicy_limitation ibexa_policy_limitation
ezpolicy_limitation_value ibexa_policy_limitation_value
ezpreferences ibexa_preferences
ezrole ibexa_role
ezsearch_object_word_link ibexa_search_object_word_link
ezsearch_object_word_link.contentclass_id ibexa_search_object_word_link.content_type_id
ezsearch_object_word_link.contentclass_attribute_id ibexa_search_object_word_link.content_type_field_definition_id
ezsearch_word ibexa_search_word
ezsection ibexa_section
ezsite ibexa_site
ezsite_data ibexa_site_data
ezsite_public_access ibexa_site_public_access
ezurl ibexa_url
ezurl_object_link ibexa_url_content_link
ezurlalias ibexa_url_alias
ezurlalias_ml ibexa_url_alias_ml
ezurlalias_ml_incr ibexa_url_alias_ml_incr
ezurlwildcard ibexa_url_wildcard
ezuser ibexa_user
ezuser_accountkey ibexa_user_accountkey
ezuser_role ibexa_user_role
ezuser_setting ibexa_user_setting

Field type identifiers

Several field type identifiers have changed.

Old identifier (legacy_alias) New identifier (alias)
ezauthor ibexa_author
ezbinaryfile ibexa_binaryfile
ezboolean ibexa_boolean
ezcontentquery ibexa_content_query
ezcountry ibexa_country
ezdate ibexa_date
ezdatetime ibexa_datetime
ezemail ibexa_email
ezfloat ibexa_float
ezform ibexa_form
ezgmaplocation ibexa_gmap_location
ezimage ibexa_image
ezimageasset ibexa_image_asset
ezinteger ibexa_integer
ezisbn ibexa_isbn
ezkeyword ibexa_keyword
ezlandingpage ibexa_landing_page
ezmatrix ibexa_matrix
ezmedia ibexa_media
ezobjectrelation ibexa_object_relation
ezobjectrelationlist ibexa_object_relation_list
ezrichtext ibexa_richtext
ezselection ibexa_selection
ezstring ibexa_string
eztext ibexa_text
eztime ibexa_time
ezurl ibexa_url
ezuser ibexa_user

PHP API classes and methods

Ibexa Rector

Ibexa Rector package has been introduced that is based on Rector and comes with additional rules for working with Ibexa code. You can use it to get rid of PHP code deprecations.

ibexa/admin-ui

Old FQN New FQN / Comment
\Ibexa\Contracts\AdminUi\Permission\PermissionCheckerInterface::getContentCreateLimitations \Ibexa\AdminUi\Permission\LimitationResolverInterface::getContentCreateLimitations
\Ibexa\Contracts\AdminUi\Permission\PermissionCheckerInterface::getContentUpdateLimitations \Ibexa\AdminUi\Permission\LimitationResolverInterface::getContentUpdateLimitations
\Ibexa\Contracts\AdminUi\UniversalDiscovery\Provider::getRestFormat Removed
\Ibexa\AdminUi\Form\Type\Search\DateIntervalType \Ibexa\AdminUi\Form\Type\Date\DateIntervalType
\Ibexa\AdminUi\Siteaccess\SiteaccessResolverInterface::getSiteaccessesForLocation \Ibexa\AdminUi\Siteaccess\SiteaccessResolverInterface::getSiteAccessesList
\Ibexa\AdminUi\Siteaccess\SiteaccessResolverInterface::getSiteaccesses \Ibexa\AdminUi\Siteaccess\SiteaccessResolverInterface::getSiteAccessesList
\Ibexa\AdminUi\Specification\AbstractSpecification \Ibexa\Contracts\Core\Specification\AbstractSpecification
\Ibexa\AdminUi\Specification\AndSpecification \Ibexa\Contracts\Core\Specification\AndSpecification
\Ibexa\AdminUi\Specification\NotSpecification \Ibexa\Contracts\Core\Specification\NotSpecification
\Ibexa\AdminUi\Specification\OrSpecification \Ibexa\Contracts\Core\Specification\OrSpecification
\Ibexa\AdminUi\Specification\SpecificationInterface \Ibexa\Contracts\Core\Specification\SpecificationInterface
\Ibexa\AdminUi\Tab\Dashboard\PagerContentToDataMapper \Ibexa\AdminUi\Tab\Dashboard\PagerLocationToDataMapper
\Ibexa\AdminUi\Translation\Extractor\LimitationTranslationExtractor Removed
\Ibexa\AdminUi\Translation\Extractor\PolicyTranslationExtractor Removed
\Ibexa\AdminUi\UI\Dataset\ContentDraftsDataset \Ibexa\AdminUi\UI\Dataset\ContentDraftListDataset
\Ibexa\AdminUi\UI\Dataset\DatasetFactory::relations \Ibexa\AdminUi\UI\Dataset\DatasetFactory::relationList
\Ibexa\AdminUi\UI\Dataset\DatasetFactory::contentDrafts \Ibexa\AdminUi\UI\Dataset\DatasetFactory::contentDraftList
\Ibexa\AdminUi\UI\Value\ValueFactory::createRelation \Ibexa\AdminUi\UI\Value\ValueFactory::createRelationItem
\Ibexa\AdminUi\Validator\ValidationErrorsProcessor \Ibexa\ContentForms\Validator\ValidationErrorsProcessor
\Ibexa\AdminUi\Validator\Constraints\FieldTypeValidator \Ibexa\ContentForms\Validator\Constraints\FieldTypeValidator

ibexa/cart

Old FQN New FQN / Comment
\Ibexa\Cart\Money\MoneyFactory \Ibexa\ProductCatalog\Money\IntlMoneyFactory

ibexa/content-forms

Old FQN New FQN / Comment
\Ibexa\Bundle\ContentForms\Controller\UserRegisterController \Ibexa\Bundle\User\Controller\UserRegisterController
\Ibexa\ContentForms\User\View\UserRegisterConfirmView \Ibexa\User\View\UserRegisterConfirmView
\Ibexa\ContentForms\User\View\UserRegisterFormView \Ibexa\User\View\UserRegisterFormView

ibexa/core

Support for facet search has been dropped, use the Aggregation API instead.

Old FQN New FQN / Comment
\Ibexa\Bundle\Core\DependencyInjection\Security\PolicyProvider\RepositoryPolicyProvider Removed
\Ibexa\Bundle\Core\Imagine\VariationPathGenerator \Ibexa\Contracts\Core\Variation\VariationPathGenerator
\Ibexa\ContentForms\User\View\UserRegisterFormView \Ibexa\User\View\UserRegisterFormView
/Ibexa\Bundle\Debug\Collector\PersistenceCacheCollector::getCount \Ibexa\Bundle\Debug\Collector\PersistenceCacheCollector::getStats
\Ibexa\Bundle\RepositoryInstaller\Installer\Installer::createConfiguration Deprecated
\Ibexa\Contracts\Core\FieldType\FieldStorage::getIndexData \Ibexa\Contracts\Core\FieldType\Indexable
\Ibexa\Contracts\Core\FieldType\BinaryBase\PathGenerator \Ibexa\Contracts\Core\FieldType\BinaryBase\PathGeneratorInterface
\Ibexa\Contracts\Core\IO\BinaryFile::$mimeType \Ibexa\Core\IO\IOMetadataHandler::getMimeType
\Ibexa\Contracts\Core\Persistence\Handler::beginTransaction \Ibexa\Contracts\Core\Persistence\TransactionHandler::beginTransaction
\Ibexa\Contracts\Core\Persistence\Handler::commit \Ibexa\Contracts\Core\Persistence\TransactionHandler::commit
\Ibexa\Contracts\Core\Persistence\Handler::rollback \Ibexa\Contracts\Core\Persistence\TransactionHandler::rollback
\Ibexa\Contracts\Core\Persistence\Bookmark\Bookmark::$name Removed
\Ibexa\Contracts\Core\Persistence\Bookmark\CreateStruct::$name Removed
\Ibexa\Contracts\Core\Persistence\Content\ContentInfo::STATUS_ARCHIVED \Ibexa\Contracts\Core\Persistence\Content\ContentInfo::STATUS_TRASHED
\Ibexa\Contracts\Core\Persistence\Content\ContentInfo::$isPublished Removed. Use ContentInfo::$status with value STATUS_PUBLISHED.
\Ibexa\Contracts\Core\Persistence\Content\LoadStruct Removed
\Ibexa\Contracts\Core\Persistence\Content\Location::$pathIdentificationString Removed
\Ibexa\Contracts\Core\Persistence\Content\Location\CreateStruct::$pathIdentificationString Removed
\Ibexa\Contracts\Core\Persistence\Content\Location\Handler::markSubtreeModified Removed
\Ibexa\Contracts\Core\Persistence\FieldType\IsEmptyValue Removed
\Ibexa\Contracts\Core\Persistence\User\Handler::loadPoliciesByUserId Removed
\Ibexa\Contracts\Core\Repository\ContentService::loadContentDrafts \Ibexa\Contracts\Core\Repository\ContentService::loadContentDraftList
\Ibexa\Contracts\Core\Repository\Values\Content\Location::SORT_FIELD_MODIFIED_SUBNODE Removed
\Ibexa\Contracts\Core\Repository\Values\Content\Query\FacetBuilder Removed. Use the Aggregation API.
\Ibexa\Contracts\Core\Repository\Values\Content\Query\Criterion\LogicalOperator::getSpecifications Removed
\Ibexa\Contracts\Core\Repository\Values\Content\Query\Criterion\Location\IsMainLocation::createFromQueryBuilder Removed. Use the constructor directly.
\Ibexa\Contracts\Core\Repository\Values\Content\Query\Criterion\Location\Priority::createFromQueryBuilder Removed. Use the constructor directly.
\Ibexa\Contracts\Core\Repository\Values\Content\Query\FacetBuilder\ContentTypeFacetBuilder Removed. Use the Aggregation API.
\Ibexa\Contracts\Core\Repository\Values\Content\Query\FacetBuilder\CriterionFacetBuilder Removed. Use the Aggregation API.
\Ibexa\Contracts\Core\Repository\Values\Content\Query\FacetBuilder\DateRangeFacetBuilder Removed. Use the Aggregation API.
\Ibexa\Contracts\Core\Repository\Values\Content\Query\FacetBuilder\FieldFacetBuilder Removed. Use the Aggregation API.
\Ibexa\Contracts\Core\Repository\Values\Content\Query\FacetBuilder\FieldRangeFacetBuilder Removed. Use the Aggregation API.
\Ibexa\Contracts\Core\Repository\Values\Content\Query\FacetBuilder\Location Removed. Use the Aggregation API.
\Ibexa\Contracts\Core\Repository\Values\Content\Query\FacetBuilder\LocationFacetBuilder Removed. Use the Aggregation API.
\Ibexa\Contracts\Core\Repository\Values\Content\Query\FacetBuilder\SectionFacetBuilder Removed. Use the Aggregation API.
\Ibexa\Contracts\Core\Repository\Values\Content\Query\FacetBuilder\TermFacetBuilder Removed. Use the Aggregation API.
\Ibexa\Contracts\Core\Repository\Values\Content\Query\FacetBuilder\UserFacetBuilder Removed. Use the Aggregation API.
\Ibexa\Contracts\Core\Repository\Values\Content\Query\FacetBuilder\Location\LocationFacetBuilder Removed. Use the Aggregation API.
\Ibexa\Contracts\Core\Repository\Values\Content\Search\Facet Removed. Use the Aggregation API.
\Ibexa\Contracts\Core\Repository\Values\Content\Search\SearchResult::$facets Removed. Use the Aggregation API.
\Ibexa\Contracts\Core\Repository\Values\Content\Search\SearchResult::$spellSuggestion \Ibexa\Contracts\Core\Repository\Values\Content\Search\SearchResult::$spellcheck
\Ibexa\Contracts\Core\Repository\Values\Content\Search\Facet\ContentTypeFacet Removed. Use the Aggregation API.
\Ibexa\Contracts\Core\Repository\Values\Content\Search\Facet\CriterionFacet Removed. Use the Aggregation API.
\Ibexa\Contracts\Core\Repository\Values\Content\Search\Facet\DateRangeFacet Removed. Use the Aggregation API.
\Ibexa\Contracts\Core\Repository\Values\Content\Search\Facet\FieldFacet Removed. Use the Aggregation API.
\Ibexa\Contracts\Core\Repository\Values\Content\Search\Facet\FieldRangeFacet Removed. Use the Aggregation API.
\Ibexa\Contracts\Core\Repository\Values\Content\Search\Facet\LocationFacet Removed. Use the Aggregation API.
\Ibexa\Contracts\Core\Repository\Values\Content\Search\Facet\RangeFacetEntry Removed. Use the Aggregation API.
\Ibexa\Contracts\Core\Repository\Values\Content\Search\Facet\SectionFacet Removed. Use the Aggregation API.
\Ibexa\Contracts\Core\Repository\Values\Content\Search\Facet\TermFacet Removed. Use the Aggregation API.
\Ibexa\Contracts\Core\Repository\Values\Content\Search\Facet\UserFacet Removed. Use the Aggregation API.
\Ibexa\Contracts\Core\Repository\Values\Content\Trash\SearchResult::$count \Ibexa\Contracts\Core\Repository\Values\Content\Trash\SearchResult::$totalCount
\Ibexa\Contracts\Core\Repository\Values\ContentType\ContentType::@$isContainer \Ibexa\Contracts\Core\Repository\Values\ContentType\ContentType::isContainer
\Ibexa\Contracts\Core\User\Identity Removed. Use the FOSHttpCacheBundle user context feature.
\Ibexa\Core\Event\UserService Listen to BeforeUpdateUserPasswordEvent instead of BeforeUpdateUserEvent.
\Ibexa\Core\Event\UserService Listen to UpdateUserPasswordEvent instead of UpdateUserEvent.
\Ibexa\Core\FieldType\GatewayBasedStorage \Ibexa\Contracts\Core\FieldType\GatewayBasedStorage
\Ibexa\Core\FieldType\StorageGateway \Ibexa\Contracts\Core\FieldType\StorageGatewayInterface
\Ibexa\Core\FieldType\Image\Value::@$path Equivalent to $id or $inputUri, depending on which one is set.
\Ibexa\Core\FieldType\Image\Value::fromString \Ibexa\Core\FieldType\FieldType::acceptValue
\Ibexa\Core\Helper\FieldHelper::getFieldDefinition If content exists, use $content->getContentType()->getFieldDefinition($identifier).
\Ibexa\Core\Helper\PreviewLocationProvider::loadMainLocation \Ibexa\Core\Helper\PreviewLocationProvider::loadMainLocationByContent
\Ibexa\Core\IO\IOServiceInterface::getExternalPath \Ibexa\Core\IO\IOServiceInterface::loadBinaryFileByUri
\Ibexa\Core\IO\IOServiceInterface::getInternalPath Removed. Use the uri property.
\Ibexa\Core\IO\MetadataHandler Removed
\Ibexa\Core\IO\MetadataHandler\ImageSize Removed
\Ibexa\Core\IO\Values\BinaryFile::$mimeType \Ibexa\Core\IO\IOServiceInterface::getMimeType
\Ibexa\Core\MVC\Symfony\MVCEvents::CACHE_CLEAR_CONTENT Removed
\Ibexa\Core\MVC\Symfony\Event\ContentCacheClearEvent Removed
\Ibexa\Core\MVC\Symfony\Locale\LocaleConverterInterface::convertToEz \Ibexa\Core\MVC\Symfony\Locale\LocaleConverterInterface::convertToRepository
\Ibexa\Core\MVC\Symfony\SiteAccess\Matcher\Regex\Host Removed
\Ibexa\Core\MVC\Symfony\SiteAccess\Matcher\Regex\URI Removed
\Ibexa\Core\MVC\Symfony\View\Provider\Content Removed
\Ibexa\Core\MVC\Symfony\View\Provider\Location Removed
\Ibexa\Core\Persistence\Cache\PersistenceLogger::getCount \Ibexa\Core\Persistence\Cache\PersistenceLogger::getStats
\Ibexa\Core\Persistence\Legacy\Handler::beginTransaction Removed. Use \Ibexa\Contracts\Core\Persistence\TransactionHandler\TransactionHandler::beginTransaction.
\Ibexa\Core\Persistence\Legacy\Handler::commit Removed. Use \Ibexa\Contracts\Core\Persistence\TransactionHandler\TransactionHandler::commit.
\Ibexa\Core\Persistence\Legacy\Handler::rollback Removed. Use \Ibexa\Contracts\Core\Persistence\TransactionHandler\TransactionHandler::rollback.
\Ibexa\Core\Persistence\Legacy\Content\FieldValue\Converter\AuthorConverter::create Removed. Use the default constructor.
\Ibexa\Core\Persistence\Legacy\Content\FieldValue\Converter\BinaryFileConverter::create Removed. Use the default constructor.
\Ibexa\Core\Persistence\Legacy\Content\FieldValue\Converter\CheckboxConverter::create Removed. Use the default constructor.
\Ibexa\Core\Persistence\Legacy\Content\FieldValue\Converter\CountryConverter::create Removed. Use the default constructor.
\Ibexa\Core\Persistence\Legacy\Content\FieldValue\Converter\DateAndTimeConverter::create Removed. Use the default constructor.
\Ibexa\Core\Persistence\Legacy\Content\FieldValue\Converter Removed the timestamp property.
\Ibexa\Core\Persistence\Legacy\Content\FieldValue\DateConverter Removed the timestamp property.
\Ibexa\Core\Persistence\Legacy\Content\FieldValue\Converter\DateConverter::create Removed. Use the default constructor.
\Ibexa\Core\Persistence\Legacy\Content\FieldValue\Converter\EmailAddressConverter::create Removed. Use the default constructor.
\Ibexa\Core\Persistence\Legacy\Content\FieldValue\Converter\FloatConverter::create Removed. Use the default constructor.
\Ibexa\Core\Persistence\Legacy\Content\FieldValue\Converter\IntegerConverter::create Removed. Use the default constructor.
\Ibexa\Core\Persistence\Legacy\Content\FieldValue\Converter\ISBNConverter::create Removed. Use the default constructor.
\Ibexa\Core\Persistence\Legacy\Content\FieldValue\Converter\KeywordConverter::create Removed. Use the default constructor.
\Ibexa\Core\Persistence\Legacy\Content\FieldValue\Converter\MapLocationConverter::create Removed. Use the default constructor.
\Ibexa\Core\Persistence\Legacy\Content\FieldValue\Converter\MediaConverter::create Removed. Use the default constructor.
\Ibexa\Core\Persistence\Legacy\Content\FieldValue\Converter\NullConverter::create Removed. Use the default constructor.
\Ibexa\Core\Persistence\Legacy\Content\FieldValue\Converter\RelationConverter::create Removed. Use the default constructor.
\Ibexa\Core\Persistence\Legacy\Content\FieldValue\Converter\SelectionConverter::create Removed. Use the default constructor.
\Ibexa\Core\Persistence\Legacy\Content\FieldValue\Converter\TextBlockConverter::create Removed. Use the default constructor.
\Ibexa\Core\Persistence\Legacy\Content\FieldValue\Converter\TextLineConverter::create Removed. Use the default constructor.
\Ibexa\Core\Persistence\Legacy\Content\FieldValue\Converter\TimeConverter::create Removed. Use the default constructor.
\Ibexa\Core\Persistence\Legacy\Content\FieldValue\Converter\UrlConverter::create Removed. Use the default constructor.
\Ibexa\Core\Persistence\Legacy\Content\Language\MaskGenerator::generateLanguageMask \Ibexa\Core\Persistence\Legacy\Content\Language\MaskGenerator::generateLanguageMaskFromLanguageCodes
\Ibexa\Core\Repository\PermissionsCriterionHandler Removed
\Ibexa\Core\Repository\SectionService::countAssignedContents Deprecated. Use SearchService with Section criterion.
\Ibexa\Core\Repository\Helper\NameSchemaService \Ibexa\Contracts\Core\Repository\NameSchema\NameSchemaServiceInterface
\Ibexa\Core\Repository\Helper\RoleDomainMapper Removed
\Ibexa\Core\Repository\Mapper\ContentTypeDomainMapper::buildSPIFieldDefinitionUpdate \Ibexa\Core\Repository\Mapper\ContentTypeDomainMapper::buildSPIFieldDefinitionFromUpdateStruct
\Ibexa\Core\Repository\Mapper\ContentTypeDomainMapper::buildSPIFieldDefinitionCreate \Ibexa\Core\Repository\Mapper\ContentTypeDomainMapper::buildSPIFieldDefinitionFromCreateStruct
\Ibexa\Core\Repository\User\PasswordHashServiceInterface \Ibexa\Contracts\Core\Repository\PasswordHashService
\Ibexa\Core\Search\Common\FieldNameResolver::getFieldNamesget \Ibexa\Core\Search\Common\FieldNameResolver::getFieldTypes
\Ibexa\Core\Search\Common\IncrementalIndexer::createSearchIndex Removed
\Ibexa\Tests\Integration\Core\Repository\BaseTest::isVersion4 Removed
\Ibexa\Tests\Integration\Core\Repository\SearchServiceTest::testDeprecatedCriteriaProperty Removed
\Ibexa\Tests\Core\Repository\Service\Mock\PermissionsCriterionHandlerTest Removed
\Ibexa\Contracts\Core\Repository\Values\Translation Implementations must implement \Stringable interface.
\Ibexa\Bundle\Core\ApiLoader\RepositoryConfigurationProvider Deprecated. Use \Ibexa\Contracts\Core\Container\ApiLoader\RepositoryConfigurationProviderInterface.
\Ibexa\Bundle\Core\ApiLoader\RepositoryFactory Deprecated. Use \Ibexa\Core\Base\Container\ApiLoader\RepositoryFactory.

Dropped single colon notation

Ibexa-named controllers can no longer be referenced using a single-colon notation. For example, ibexa_content:viewAction must be changed to ibexa_content::viewAction.

The change affects the following controllers:

  • ibexa_content
  • ibexa_query
  • ibexa_query_render
  • ibexa.controller.content.preview

ibexa/corporate-account

Old FQN New FQN / Comment
\Ibexa\Bundle\CorporateAccount\Controller\ApplicationController\PersistenceCacheCollector::alreadyExistsAction Removed

ibexa/design-engine

Old FQN New FQN / Comment
\Ibexa\DesignEngine\Templating\TemplateNameResolverInterface::EZ_DESIGN_NAMESPACE Removed. Use the \Ibexa\Contracts\DesignEngine\DesignAwareInterface::DESIGN_NAMESPACE constant.

ibexa/elasticsearch

Support for facets in ibexa/elasticsearch has been dropped, use the Aggregation API instead.

Old FQN New FQN / Comment
\Ibexa\Contracts\Elasticsearch\Query\FacetBuilderVisitor Removed. Use the Aggregation API.
\Ibexa\Contracts\Elasticsearch\Query\FacetResultExtractor Removed. Use the Aggregation API.
\Ibexa\Elasticsearch\Query\FacetBuilderVisitor\AbstractTermsVisitor Removed. Use the Aggregation API.
\Ibexa\Elasticsearch\Query\FacetBuilderVisitor\ContentTypeVisitor Removed. Use the Aggregation API.
\Ibexa\Elasticsearch\Query\FacetBuilderVisitor\DispatcherVisitor Removed. Use the Aggregation API.
\Ibexa\Elasticsearch\Query\FacetBuilderVisitor\FilteredFacetVisitorDecorator Removed. Use the Aggregation API.
\Ibexa\Elasticsearch\Query\FacetBuilderVisitor\GlobalFacetVisitorDecorator Removed. Use the Aggregation API.
\Ibexa\Elasticsearch\Query\FacetBuilderVisitor\SectionVisitor Removed. Use the Aggregation API.
\Ibexa\Elasticsearch\Query\FacetBuilderVisitor\UserVisitor Removed. Use the Aggregation API.
\Ibexa\Elasticsearch\Query\ResultExtractor\FacetResultExtractor\AbstractTermsResultExtractor Removed. Use the Aggregation API.
\Ibexa\Elasticsearch\Query\ResultExtractor\FacetResultExtractor\ContentTypeResultExtractor Removed. Use the Aggregation API.
\Ibexa\Elasticsearch\Query\ResultExtractor\FacetResultExtractor\DispatcherResultExtractor Removed. Use the Aggregation API.
\Ibexa\Elasticsearch\Query\ResultExtractor\FacetResultExtractor\FilteredFacetResultExtractorDecorator Removed. Use the Aggregation API.
\Ibexa\Elasticsearch\Query\ResultExtractor\FacetResultExtractor\GlobalFacetResultExtractorDecorator Removed. Use the Aggregation API.
\Ibexa\Elasticsearch\Query\ResultExtractor\FacetResultExtractor\SectionResultExtractor Removed. Use the Aggregation API.
\Ibexa\Elasticsearch\Query\ResultExtractor\FacetResultExtractor\UserResultExtractor Removed. Use the Aggregation API.

ibexa/fieldtype-page

Old FQN New FQN / Comment
\Ibexa\Bundle\FieldTypePage\DependencyInjection\Compiler\AbstractConfigurationAwareCompilerPass::EXTENSION_CONFIG_KEY Removed. Use the \Ibexa\Bundle\FieldTypePage\DependencyInjection\IbexaFieldTypePageExtension::EXTENSION_NAME constant.
\Ibexa\Bundle\FieldTypePage\DependencyInjection\Compiler\BlockDefinitionConfigurationCompilerPass::EXTENSION_CONFIG_KEY Removed. Use the \Ibexa\Bundle\FieldTypePage\DependencyInjection\IbexaFieldTypePageExtension::EXTENSION_NAME constant.
\Ibexa\FieldTypePage\FieldType\Page\Block\Renderer\Event\Listener\PreviewTemplateEventSubscriber Removed
\Ibexa\FieldTypePage\ScheduleBlock\ScheduleService::distributeItems Removed

ibexa/fieldtype-query

Old FQN New FQN / Comment
\Ibexa\FieldTypeQuery\QueryFieldPaginationService Removed
\Ibexa\FieldTypeQuery\Persistence\Legacy\Content\FieldValue\Converter\QueryConverter::create Removed. Use the default constructor.

ibexa/fieldtype-richtext

Old FQN New FQN / Comment
\Ibexa\FieldTypeRichText\Translation\Extractor\OnlineEditorCustomAttributesExtractor Removed
\Ibexa\FieldTypeQuery\Persistence\Legacy\Content\FieldValue\Converter\QueryConverter::create Removed. Use the default constructor.

Missing custom tag configuration error

If the stored RichText record includes any custom tags that aren’t configured or recognized, saving the content will cause a validation error.

ibexa/form-builder

Old FQN New FQN / Comment
\Ibexa\Bundle\FormBuilder\DependencyInjection\Configuration::TREE_ROOT Removed. Use the \Ibexa\Bundle\FormBuilder\DependencyInjection\IbexaFormBuilderExtension::EXTENSION_NAME constant.
\Ibexa\FormBuilder\FieldType\Storage\FormStorage::getIndexData Removed

ibexa/graphql

Old FQN New FQN / Comment
\Ibexa\GraphQL\Schema\ImagesVariationsBuilder Removed
\Ibexa\GraphQL\Schema\Domain\Content\NameHelper::domainContentCollectionField \Ibexa\GraphQL\Schema\Domain\Content\NameHelper::itemConnectionField
\Ibexa\GraphQL\Schema\Domain\Content\NameHelper::domainContentName \Ibexa\GraphQL\Schema\Domain\Content\NameHelper::itemName
\Ibexa\GraphQL\Schema\Domain\Content\NameHelper::domainContentConnection \Ibexa\GraphQL\Schema\Domain\Content\NameHelper::itemConnectionName
\Ibexa\GraphQL\Schema\Domain\Content\NameHelper::domainContentCreateInputName \Ibexa\GraphQL\Schema\Domain\Content\NameHelper::itemCreateInputName
\Ibexa\GraphQL\Schema\Domain\Content\NameHelper::domainContentUpdateInputName \Ibexa\GraphQL\Schema\Domain\Content\NameHelper::itemUpdateInputName
\Ibexa\GraphQL\Schema\Domain\Content\NameHelper::domainContentTypeName \Ibexa\GraphQL\Schema\Domain\Content\NameHelper::itemUpdateInputName
\Ibexa\GraphQL\Schema\Domain\Content\NameHelper::domainContentField \Ibexa\GraphQL\Schema\Domain\Content\NameHelper::itemField
\Ibexa\GraphQL\Schema\Domain\Content\NameHelper::domainMutationCreateContentField \Ibexa\GraphQL\Schema\Domain\Content\NameHelper::itemMutationCreateItemField
\Ibexa\GraphQL\Schema\Domain\Content\NameHelper::domainMutationUpdateContentField \Ibexa\GraphQL\Schema\Domain\Content\NameHelper::itemMutationUpdateItemField
\Ibexa\GraphQL\Schema\Domain\Content\NameHelper::domainGroupName \Ibexa\GraphQL\Schema\Domain\Content\NameHelper::itemGroupName
\Ibexa\GraphQL\Schema\Domain\Content\NameHelper::domainGroupTypesName \Ibexa\GraphQL\Schema\Domain\Content\NameHelper::itemGroupTypesName
\Ibexa\GraphQL\Schema\Domain\Content\Mapper\FieldDefinition\FieldDefinitionArgsBuilderMapper \Ibexa\Contracts\GraphQL\Schema\Domain\Content\Mapper\FieldDefinition\FieldDefinitionMapper
\Ibexa\GraphQL\Schema\Domain\Content\Mapper\FieldDefinition\FieldDefinitionInputMapper \Ibexa\Contracts\GraphQL\Schema\Domain\Content\Mapper\FieldDefinition\FieldDefinitionMapper

ibexa/measurement

Dropped measurement product attribute

The deprecated product attribute measurement has been removed. The change does not affect the measurement field type.

ibexa/migrations

Old FQN New FQN / Comment
\Ibexa\Migration\ValueObject\ContentType\Matcher::CONTENT_TYPE_IDENTIFIER Removed. Use the \Ibexa\Migration\StepExecutor\ContentType\IdentifierFinder::CONTENT_TYPE_IDENTIFIER constant.

ibexa/product-catalog

Old FQN New FQN / Comment
\Ibexa\ProductCatalog\Bridge Migrate data to a local product catalog.

ibexa/page-builder

Old FQN New FQN / Comment
\Ibexa\Bundle\PageBuilder\DependencyInjection\IbexaPageBuilderExtension::SESSION_KEY_SITEACCESS Removed
\Ibexa\PageBuilder\PageBuilder\PreviewLanguageCodeResolver Removed
\Ibexa\PageBuilder\Siteaccess\SiteaccessService::resolveSiteAccessForLocation \Ibexa\AdminUi\Siteaccess\SiteaccessResolverInterface::getSiteAccessesListForLocation
\Ibexa\PageBuilder\Siteaccess\SiteaccessService::resolveSiteAccessForContent \Ibexa\Contracts\PageBuilder\Siteaccess\SiteAccessResolver::resolveSiteAccessForContent
\Ibexa\PageBuilder\Siteaccess\SiteaccessService::resolveSiteAccessBasedOnLanguage Removed

ibexa/rest

Old FQN New FQN / Comment
\Ibexa\Bundle\Rest\EventListener\CsrfListener::isLoginRequest Add csrf_protection: false attribute to route definition.
\Ibexa\Bundle\Rest\EventListener\CsrfListener::isSessionRoute Add csrf_protection: false attribute to route definition.
\Ibexa\Bundle\Rest\EventListener\RequestListener::REST_PREFIX_PATTERN Use \Ibexa\Contracts\Rest\UriParser\UriParserInterface::isRestRequest function.
\Ibexa\Bundle\Rest\EventListener\RequestListener::hasRestPrefix Use \Ibexa\Contracts\Rest\UriParser\UriParserInterface::isRestRequest function.
\Ibexa\Bundle\Rest\RequestParser\Router \Ibexa\Contracts\Rest\UriParser\UriParserInterface
\Ibexa\Contracts\Rest\Output\Generator::generateMediaType \Ibexa\Contracts\Rest\Output\Generator::generateMediaTypeWithVendor
\Ibexa\Rest\Output\FieldTypeSerializer::serializeFieldValue \Ibexa\Rest\Output\FieldTypeSerializer::serializeContentFieldValue
\Ibexa\Rest\Server\Controller\Content::createView Forwards the request to the new /views location, but returns a 301.
\Ibexa\Rest\Server\Controller\User::$csrfTokenStorage Removed
\Ibexa\Rest\Server\Controller\User::$sessionController Removed
\Ibexa\Rest\Server\Controller\User::createSession \Ibexa\Rest\Server\Controller\SessionController::refreshSessionAction
\Ibexa\Rest\Server\Controller\User::refreshSession \Ibexa\Rest\Server\Controller\SessionController::refreshSessionAction
\Ibexa\Rest\Server\Controller\User::deleteSession \Ibexa\Rest\Server\Controller\SessionController::refreshSessionAction

ibexa/ibexa/scheduler

Old FQN New FQN / Comment
\Ibexa\Bundle\Rest\EventListener\CsrfListener::isLoginRequest Add csrf_protection: false attribute to route definition.

ibexa/site-factory

Old FQN New FQN / Comment
\Ibexa\Bundle\SiteFactory\DependencyInjection\Configuration::TREE_ROOT Removed. Use the \Ibexa\Bundle\SiteFactory\DependencyInjection\IbexaSiteFactoryExtension::EXTENSION_NAME constant.
\Ibexa\SiteFactory\Event\EventDispatcher Removed
\Ibexa\SiteFactory\ServiceDecorator\SiteServiceDecorator Removed
\Ibexa\SiteFactory\ServiceEvent\Events\BeforeCreateSiteEvent Removed
\Ibexa\SiteFactory\ServiceEvent\Events\BeforeDeleteSiteEvent Removed
\Ibexa\SiteFactory\ServiceEvent\Events\BeforeUpdateSiteEvent Removed
\Ibexa\SiteFactory\ServiceEvent\Events\CreateSiteEvent Removed
\Ibexa\SiteFactory\ServiceEvent\Events\DeleteSiteEvent Removed
\Ibexa\SiteFactory\ServiceEvent\Events\UpdateSiteEvent Removed

ibexa/solr

Support for facet search has been dropped, use the Aggregation API instead.

Old FQN New FQN / Comment
\Ibexa\Solr\Handler::$resultExtractor Use $contentResultExtractor or $locationResultExtractor.
\Ibexa\Solr\Gateway\UpdateSerializer \Ibexa\Solr\Gateway\UpdateSerializer\XmlUpdateSerializer
\Ibexa\Solr\Query\FacetBuilderVisitor Use Aggregation API.
\Ibexa\Solr\Query\FacetFieldVisitor Use Aggregation API.
\Ibexa\Solr\Query\Common\FacetBuilderVisitor\Aggregate Use Aggregation API.
\Ibexa\Solr\Query\Common\FacetBuilderVisitor\ContentType Use Aggregation API.
\Ibexa\Solr\Query\Common\FacetBuilderVisitor\Section Use Aggregation API.
\Ibexa\Solr\Query\Common\FacetBuilderVisitor\User Use Aggregation API.
\Ibexa\Solr\Query\Content\CriterionVisitor\Field \Ibexa\Solr\Query\Common\CriterionVisitor\Field

ibexa/storefront

Old FQN New FQN / Comment
\Ibexa\Contracts\Storefront\Repository\TaxonomyTreeServiceInterface::getPath \Ibexa\Contracts\Taxonomy\Service\TaxonomyServiceInterface::getPath

ibexa/system-info

Old FQN New FQN / Comment
\Ibexa\Bundle\SystemInfo\SystemInfo\Collector\IbexaSystemInfoCollector::CONTENT_PACKAGES Removed. Use the \Ibexa\Bundle\SystemInfo\SystemInfo\Collector\IbexaSystemInfoCollector::HEADLESS_PACKAGES constant.
\Ibexa\Bundle\SystemInfo\SystemInfo\Collector\IbexaSystemInfoCollector::ENTERPRISE_PACKAGES Removed. Use IbexaSystemInfoCollector::EXPERIENCE_PACKAGES or IbexaSystemInfoCollector::HEADLESS_PACKAGES constant.
\Ibexa\Bundle\SystemInfo\SystemInfo\Value\IbexaSystemInfo::$stability \Ibexa\Bundle\SystemInfo\SystemInfo\Value\IbexaSystemInfo is considered internal.

ibexa/workflow

Old FQN New FQN / Comment
\Ibexa\Contracts\Workflow\Service\WorkflowServiceInterface::loadWorkflowMetadataOriginatedByUser Removed
\Ibexa\Contracts\Workflow\Service\WorkflowServiceInterface::loadAllWorkflowMetadata Removed

Services

The following service definitions have been removed:

Service name Comment
ibexa.cart.number_formatter.currency.factory Removed

JavaScript classes and functions

Old class or function New class or function
formatLine const in /src/bundle/Resources/public/js/scripts/helpers/form.error.helper.js Removed
parseAll const in /src/bundle/Resources/public/js/scripts/helpers/middle.ellipsis.js Removed
fileSizeToString const in src/bundle/ui-dev/src/modules/multi-file-upload/helpers/text.helper.js Use fileSizeToString function from /src/bundle/ui-dev/src/modules/common/helpers/text.helper.js.
src/bundle/ui-dev/src/modules/common/components/backdrop/backdrop.js Use the ibexa.core.Backdrop component.
src/bundle/ui-dev/src/modules/page-builder/components/block/sidebar.block.js src/bundle/ui-dev/src/modules/page-builder/components/block/block.js
src/bundle/ui-dev/src/modules/page-builder/components/block/sidebar.blocks.group.js src/bundle/ui-dev/src/modules/page-builder/components/block/blocks.group.js
src/bundle/ui-dev/src/modules/page-builder/components/sidebar/sidebar.js src/bundle/ui-dev/src/modules/page-builder/components/toolbox.js
src/bundle/ui-dev/src/modules/tree-builder/components/indentation-vertical/indentation.vertical.js) src/bundle/ui-dev/src/modules/tree-builder/components/indentation-horizontal/indentation.horizontal.js
src/bundle/ui-dev/src/modules/tree-builder/components/portal-provider/portal.provider.js tree-builder/src/bundle/ui-dev/src/modules/tree-builder/components/portal/portal.js
src/bundle/ui-dev/src/modules/tree-builder/hooks/usePortal.js tree-builder/src/bundle/ui-dev/src/modules/tree-builder/components/portal/portal.js

Configuration keys

Old name New name
ibexa.system.*.database.* ibexa.repositories
ibexa.system.*.session_name ibexa.system.*.session.name
ibexa.site_access.config.default.user_registration.group_id ibexa.site_access.config.default.user_registration.group_remote_id
ezpublish_http_basic Use http_basic in security.yml directly.

CSS settings

Old setting New setting
ibexa-alert--complementary ibexa-alert--info
sidebar-drag-items toolbox-drag-items
sidebar-drag-items-group toolbox-drag-items-group
sidebar-drag-item tooblox-drag-item
/src/bundle/Resources/public/scss/mixins/_font.scss Removed
/src/bundle/Resources/public/scss/_iframe-backdrop.scss Removed

Twig templates, functions and filters

The global Twig variable ez_richtext_config has been renamed to ibexa_richtext_config.

Old name New name / Comment
\Ibexa\Core\MVC\Symfony\Templating\Twig\Extension\ Removed ezplatform variable, use the ibexa global variable.
\Ibexa\Core\MVC\Symfony\View\ParametersInjector\ViewbaseLayout\ Removed pagelayout variable, use page_layout.
/src/bundle/Resources/views/themes/admin/account/form_fields.html.twig Deprecated, extend @ibexadesign/ui/form_fields.html.twig directly.
/src/bundle/Resources/views/themes/admin/content/edit/content_header.html.twig Removed
/src/bundle/Resources/views/themes/admin/ui/footer.html.twig Deprecated
/src/bundle/Resources/views/themes/corporate/customer_portal/registration/registration_already_exists.html.twig Removed
/src/bundle/Resources/views/block_preview.html.twig Removed
\Ibexa\Scheduler\Dashboard\AllScheduledTab Removed type variable. Use content_type.name.
\Ibexa\Scheduler\Dashboard\MyScheduledTab Removed type variable. Use content_type.name.
\Ibexa\Bundle\User\Controller\DefaultProfileImageController Removed type variable. Use text_color. Remove default(text) from initials.svg.twig.
\Ibexa\Bundle\User\Controller\DefaultProfileImageController Removed background variable, use background_color. Remove default(background) from initials.svg.twig.