Notable changes in PrestaShop 8.0

PHP support

PrestaShop 8.0 adds supports for PHP 8.0 and PHP 8.1 and requires at least PHP 7.2.5.

Notable changes

  • Javascript files for migrated pages in the Back Office now are written in TypeScript (related change: #24791).
  • Support for legacy translation dictionaries (eg: en.php, fr.php…, deprecated in 1.7), has been removed from Core controllers. Only modules can still use this system now.
  • All modules present in the modules directory during the installation process will be installed by default (except in the web-based installation where you can unselect some of them). Modules can use Module::postInstall() to execute code after the shop installation is done (Read more).
  • Twig has been updated to version 3. Deprecated features from v1 & v2 are no longer available.
  • All upgrade scripts have been removed from the Core and moved to the Upgrade module.
  • Using a hook alias will trigger a deprecation notice.
  • If PrestaShop detects that a module registers for a Hook but doesn’t implement a method for it, an exception will be thrown when in developer mode. This error message is meant to help developers identify errors during module development and should not affect modules in production (Read more).
  • Historically, the default Carrier’s name was “0”, now it is called “Click and collect”.
  • The live exchange rate feature has been removed.
  • In Back office, the .rtlfix file has been removed, although support for such files remains. It is recommended to port your changes (if any) inside the rtl.scss stylesheets.
  • The new Distribution API allows modules to provide Module Manager with information about new and updated modules pulled from remote services. PrestaShop 8 leverages this new feature to handle downloads and updates for the project’s modules.
  • Because of the support for PHP 8.1 many methods have declared a return type now.
  • The logic for customers’ login and registration is now split between two controllers (RegistrationController, AuthController). This might impact third-party themes and modules as the URL to the registration has changed.
  • Before PrestaShop places an order there is an additional request now, to see if the number of products in the cart is still valid. This might require third-party payment modules to implement the checks in their solutions accordingly.
  • Due to the new password policy management features, third-party solutions that generate customer data might require to implement changes accordingly.
  • In some countries, loading fonts through Google Fonts’ CDN service has been judged incompatible with GDPR, so these fonts are now built into the project. This should not affect your work, but spreading awareness around this topic is important.

Symfony update

Symfony has been upgraded to 4.4, which includes a number of changes:

  • Doctrine ORM cache adapters for Memcache & APC are not available anymore. The way cache is handled changed in Symfony 4.4 and memcache & apc are not part of the new available caching methods.
  • Services that are not dependency injected and that are not declared as “public” are removed from the container
  • ChoiceType’s option “choices_as_values” doesn’t exist anymore, it was previously already true by default
  • It’s not possible to call Form::isValid() if Form::isSubmitted() was not called before
  • The syntax bundlename:path:file.html.twig is now invalid, use @bundlename/path/to/file.html.twig
  • Syntax for _controller in routes should not use the short notation anymore (PrestaShopBundle:Admin/Error:enableDebugMode for instance), use the full path instead: PrestaShopBundle\Controller\Admin\ErrorController::enableDebugModeAction
  • Translation files have been moved from /app/Resources/translations/ to /translations/
  • The annotation @AdminSecurity is_granted() should not take an array, use explicit && or || when checking multiple rights
  • Form type extensions should stop implementing public function getExtendedType() and implement public static function getExtendedTypes(): iterable instead (read more).

Themes

Themes using jQuery UI tooltips might need to be updated to use bootstrap’s tooltips (read more);

Child themes

The use_parent_assets setting in theme.yml, when set to true, makes the child theme load its parent’s assets (css, img and js) instead of its own. This feature, not functional and ignored in 1.7, has been fixed and improved for 8.0. For further fine-tuning, a new set of child_*_url variables is made available when the feature is active, allowing theme developers to access the parent and child’s asset urls separately.

To maintain the behavior of 1.7 and load the child theme’s assets, use_parent_assets must be set to false.

More details in the theme.yml reference page.

Classic theme

  • In checkout/_partials/steps/payment.tpl, the ID payment-form has been changed to payment-{$option.id}-form.
  • Empty state messages are now shown inside the block (as opposed to the top of the page) in pages like order history, addresses, etc (read more).
  • The Classic theme now supports the new password policy introduced here.

Back office interface

The Bootstrap version used in Symfony-based Back office pages has been updated from 4.0 to 4.4.

API Changes

Changes


  • _PS_USE_SQL_SLAVE_ is now a boolean (false by default).

  • Access:
    • updateLgcAccess() - optional value for parameter $addFromParent is now true instead of 1.

  • AddressFormat

  • AdminStatsTabController

  • Alias
    • __construct() - The 4th parameter, $idLang, has been removed (deprecated in 1.7.0).

  • Attribute
    • Renamed to ProductAttribute.

  • CartRule
    • checkProductRestrictionsFromCart() - now expects CartCore instead of Cart for $cart parameter.
    • getCustomerCartRules() - now expects CartCore instead of Cart for $cart parameter.

  • Combination
    • __construct() - the parameter $translator now takes PrestaShopBundle\Translation\TranslatorComponent|null instead of PrestaShopBundle\Translation\Translator|null.

  • Customer
    • object fields definition now require Customer::$passwd to be Validate::isHashedPassword() instead of Validate::isPlaintextPassword().

  • Employee
    • object fields now require Employee::$passwd to be Validate::isHashedPassword() instead of Validate::isPlaintextPassword().

  • OrderDetail
    • checkProductStock() - Renamed to updateProductQuantityInStock.

  • Pack
    • getQuantity() - now expects CartCore instead of Cart for $cart parameter.

  • Product
    • getQuantity() - now expects CartCore instead of Cart for $cart parameter.

  • Module
    • getModulesOnDisk() - The second parameter, $logged_on_addons, has been removed.

  • PrestaShopAutoload
    • getClassesFromDir() - The second parameter, $hostMode, has been removed (deprecated in 1.7.0).

  • Product
    • $advanced_stock_management is now bool instead if int.

  • Tools::displayDate()

  • Validate
    • isOrderWay() now returns bool instead if int.

  • WebserviceOutputInterface
    • 3 public methods have been added to this interface (read more).

  • WebserviceSpecificManagementInterface
    • setObjectOutput() now takes a WebserviceOutputBuilder instead of a WebserviceOutputBuilderCore.
    • setWsObject() now takes a WebserviceRequest instead of a WebserviceRequestCore.
    • getContent() must return an array instead of a string.

  • PrestaShop\PrestaShop\Adapter\Attachment\AttachmentRepository
    • __construct() now takes two parameters.

  • PrestaShop\PrestaShop\Adapter\Category\Repository
    • __construct() has been added for the class with two required parameters.

  • PrestaShop\PrestaShop\Adapter\Carrier\HandlingConfiguration
    • This class now extends PrestaShop\PrestaShop\Core\Configuration\AbstractMultistoreConfiguration.

  • PrestaShop\PrestaShop\Adapter\Carrier\CarrierOptionsConfiguration
    • This class now extends PrestaShop\PrestaShop\Core\Configuration\AbstractMultistoreConfiguration.

  • PrestaShop\PrestaShop\Adapter\Customer\QueryHandler\SearchCustomersHandler

  • PrestaShop\PrestaShop\Adapter\Currency\QueryHandler\GetReferenceCurrencyHandler

  • PrestaShop\PrestaShop\Adapter\Debug\DebugModeConfiguration
    • __construct() now takes an additional parameter ClassIndexCacheClearer $classIndexCacheClearer.

  • PrestaShop\PrestaShop\Adapter\Employee\EmployeeFormAccessChecker
    • __construct() - The 3rd parameter $tabRepository has been removed.

  • PrestaShop\PrestaShop\Adapter\GeneralConfiguration
    • __construct() - The 3rd parameter, $idDebug, has been removed.

  • PrestaShop\PrestaShop\Adapter\Localization\LocalizationConfiguration
    • __construct() - The parameter AdminModuleDataProvider $adminModuleDataProvider has been removed.

  • PrestaShop\PrestaShop\Adapter\MailTemplate\MailTemplateTwigRenderer
    • __construct() now takes Twig\Environment instead of Symfony\Component\Templating\EngineInterface.

  • PrestaShop\PrestaShop\Adapter\Meta\SEOOptionsDataConfiguration
    • This class now extends PrestaShop\PrestaShop\Core\Configuration\AbstractMultistoreConfiguration.

  • PrestaShop\PrestaShop\Adapter\Meta\SetUpUrlsDataConfiguration
    • This class now extends PrestaShop\PrestaShop\Core\Configuration\AbstractMultistoreConfiguration.

  • PrestaShop\PrestaShop\Adapter\Meta\UrlSchemaDataConfiguration
    • This class now extends PrestaShop\PrestaShop\Core\Configuration\AbstractMultistoreConfiguration.

  • PrestaShop\PrestaShop\Adapter\Module\AdminModuleDataProvider
    • __construct() - Four parameters have been removed (read more).
    • generateAddonsUrls() - has been replaced by setActionUrls() (read more).

  • PrestaShop\PrestaShop\Adapter\Module\ModuleDataUpdater
    • __construct() now takes no parameters (read more).

  • PrestaShop\PrestaShop\Adapter\Module\Configuration\ModuleComplexConfigurationInterface
    • run() now takes a PrestaShop\PrestaShop\Core\Addon\Module\ModuleInterface instead of a PrestaShop\PrestaShop\Adapter\Module\Module.

  • PrestaShop\PrestaShop\Adapter\Module\Tab\ModuleTabRegister
    • enableTabs() now takes a PrestaShop\PrestaShop\Core\Addon\Module\ModuleInterface instead of a PrestaShop\PrestaShop\Adapter\Module\Module.
    • registerTabs() now takes a PrestaShop\PrestaShop\Core\Addon\Module\ModuleInterface instead of a PrestaShop\PrestaShop\Adapter\Module\Module.

  • PrestaShop\PrestaShop\Adapter\Module\Tab\ModuleTabUnregister
    • disableTabs() now takes a PrestaShop\PrestaShop\Core\Addon\Module\ModuleInterface instead of a PrestaShop\PrestaShop\Adapter\Module\Module.
    • unregisterTabs() now takes a PrestaShop\PrestaShop\Core\Addon\Module\ModuleInterface instead of a PrestaShop\PrestaShop\Adapter\Module\Module.

  • PrestaShop\PrestaShop\Adapter\Presenter\Module\ModulePresenter
    • present() now takes a PrestaShop\PrestaShop\Core\Addon\Module\ModuleInterface instead of a PrestaShop\PrestaShop\Adapter\Module\Module.

  • PrestaShop\PrestaShop\Adapter\Product\Options\RedirectTargetProvider
    • __construct() - now takes one additional parameter, RedirectTargetProvider $targetProvider.

  • PrestaShop\PrestaShop\Adapter\Product\VirtualProduct\Update\VirtualProductUpdater

  • PrestaShop\PrestaShop\Adapter\OptionalFeatures\OptionalFeaturesConfiguration

  • PrestaShop\PrestaShop\Adapter\Order\GeneralConfiguration
    • This class is now a subtype of PrestaShop\PrestaShop\Core\Configuration\AbstractMultistoreConfiguration.

  • PrestaShop\PrestaShop\Adapter\Order\Refund\OrderProductRemover

  • PrestaShop\PrestaShop\Adapter\Webservice\WebserviceConfiguration
    • This class is now a subtype of PrestaShop\PrestaShop\Core\Configuration\AbstractMultistoreConfiguration.

  • PrestaShop\PrestaShop\Core\Cart\Calculator
    • _construct() - now expects CartCore instead of Cart for $cart parameter.

  • PrestaShop\PrestaShop\Core\Cart\CartRow
    • getProductPrice() - now expects CartCore instead of Cart for $cart parameter.
    • processCalculation() - now expects CartCore instead of Cart for $cart parameter.

  • PrestaShop\PrestaShop\Core\Cart\Fees
    • processCalculation() - now expects CartCore instead of Cart for $cart parameter.

  • PrestaShop\PrestaShop\Core\Configuration\AbstractMultistoreConfiguration
    • Classes extending AbstractMultistoreConfiguration are now forced to use Symfony’s OptionsResolver. buildResolver method is mandatory and returns an OptionsResolver.
    • updateConfigurationValue() is now protected.

  • PrestaShop\PrestaShop\Core\ConstraintValidator\CustomerNameValidator
    • This class now does not require any parameters in the __construct method.

  • PrestaShop\PrestaShop\Core\ConstraintValidator\Factory\CustomerNameValidatorFactory
    • This class now does not require any parameters in the __construct method.

  • PrestaShop\PrestaShop\Core\ConstraintValidator\TypedRegexValidator
    • This class now does not require any parameters in the __construct method.

  • PrestaShop\PrestaShop\Core\Domain\Address\Command\AbstractEditAddressCommand
    • getStateId() now returns ?PrestaShop\PrestaShop\Core\Domain\State\ValueObject\StateIdInterface instead of ?PrestaShop\PrestaShop\Core\Domain\State\ValueObject\StateId.

  • PrestaShop\PrestaShop\Core\Domain\Address\Command\AddCustomerAddressCommand
    • __construct() - The type of parameter $stateId is now PrestaShop\PrestaShop\Core\Domain\State\ValueObject\StateIdInterface instead of PrestaShop\PrestaShop\Core\Domain\State\ValueObject\StateId.

  • PrestaShop\PrestaShop\Core\Domain\Address\QueryResult\EditableCustomerAddress
    • __construct() - The type of parameter $stateId is now PrestaShop\PrestaShop\Core\Domain\State\ValueObject\StateIdInterface instead of PrestaShop\PrestaShop\Core\Domain\State\ValueObject\StateId.

  • PrestaShop\PrestaShop\Core\Domain\Attachment\QueryResult\AttachmentInformation
    • This class now expects (and contains) localized values for names. It also contains localized description and size.
    • getType() has been renamed to getMimeType().

  • PrestaShop\PrestaShop\Core\Domain\CartRule\QueryResult\EditableCartRuleConditions
  • __construct() - now takes CustomerIdInterface $customerId instead of ?CustomerId $customerId.

  • PrestaShop\PrestaShop\Core\Domain\Country\ValueObject\CountryId
    • This class now implements PrestaShop\PrestaShop\Core\Domain\Country\ValueObject\CountryIdInterface.

  • PrestaShop\PrestaShop\Core\Domain\Customer\QueryResult\PersonalInformation
    • __construct() - The type of parameter $rankBySales is now int instead of string.
    • getRankBySales() now returns int instead of string.

  • PrestaShop\PrestaShop\Core\Domain\Customer\QueryResult\ViewableCustomer
    • __construct() - The parameter $referrersInformation has been removed.

  • PrestaShop\PrestaShop\Core\Domain\Employee\Command\AddEmployeeCommand
    • __construct() - now takes 3 additional parameters (int $minLength, int $maxLength, int $minScore) and bool $hasEnabledGravatar is no longer optional.

  • PrestaShop\PrestaShop\Core\Domain\Employee\Command\EditEmployeeCommand
    • setPlainPassword() - now takes 3 additional parameters (int $minLength, int $maxLength, int $minScore).

  • PrestaShop\PrestaShop\Core\Domain\Employee\ValueObject\Password
    • __construct() - now takes 3 additional parameters (int $minLength, int $maxLength, int $minScore).

  • PrestaShop\PrestaShop\Core\Domain\Order\QueryResult\OrderPreviewProductDetail

  • PrestaShop\PrestaShop\Core\Domain\Order\QueryResult\OrderReturnForViewing
    • __construct() - The parameters $carrierId, $trackingUrl and $trackingNumber have been removed and replaced by string $orderReturnNumber.

  • PrestaShop\PrestaShop\Core\Domain\MailTemplate\CommandHandler\GenerateThemeMailTemplatesCommandHandler
    • __construct() - The parameter TranslatorInterface $translator has been removed.

  • PrestaShop\PrestaShop\Core\Domain\Product\SpecificPrice\Command\AddProductSpecificPriceCommand
    • getCountryId() - now returns PrestaShop\PrestaShop\Core\Domain\Country\ValueObject\CountryIdInterface instead of int.

  • PrestaShop\PrestaShop\Core\Domain\Product\Command\RemoveAllAssociatedProductAttachmentsCommand
    • Renamed to PrestaShop\PrestaShop\Core\Domain\Product\Attachment\Command\RemoveAllAssociatedProductAttachmentsCommand.

  • PrestaShop\PrestaShop\Core\Domain\Product\Command\SetAssociatedProductAttachmentsCommand
    • Renamed to PrestaShop\PrestaShop\Core\Domain\Product\Attachment\Command\SetAssociatedProductAttachmentsCommand.

  • PrestaShop\PrestaShop\Core\Domain\Product\Combination\QueryResult\EditableCombinationForListing
    • __construct - parameter string $imageUrl is not optional anymore, it is always prefilled with a value even if it is the fallback URL (no content).

  • PrestaShop\PrestaShop\Core\Domain\Product\QueryResult\ProductForEditing
    • __construct() expects an array of AttachmentInformation instead of an array of attachment IDs.

  • PrestaShop\PrestaShop\Core\Domain\Product\QueryResult\ProductSeoOptions
    • __construct() now takes a ?ProductRedirectTarget instead of int $redirectTargetId.

  • PrestaShop\PrestaShop\Core\Domain\State\Command\DeleteStateCommand
    • getStateId() now returns PrestaShop\PrestaShop\Core\Domain\State\ValueObject\StateIdInterface instead of PrestaShop\PrestaShop\Core\Domain\State\ValueObject\StateId.

  • PrestaShop\PrestaShop\Core\Domain\State\Command\Exception\DeleteStateException
    • createDeleteFailure() - The $stateId parameter now expects PrestaShop\PrestaShop\Core\Domain\State\ValueObject\StateIdInterface instead of PrestaShop\PrestaShop\Core\Domain\State\ValueObject\StateId.

  • PrestaShop\PrestaShop\Core\Email\SwiftMailerValidation
    • isValid() is now strictly typed.
    • getError() is now strictly typed.
    • getWarnings() is now strictly typed.

  • PrestaShop\PrestaShop\Core\Exception\NonASCIIInLocalPartException
    • This class is now a subtype of CoreException instead of Egulias\EmailValidator\Exception\InvalidEmail.

  • PrestaShop\PrestaShop\Core\FeatureFlag\FeatureFlagsModifier
    • __construct() - The parameter TranslatorInterface $translator has been removed.

  • PrestaShop\PrestaShop\Core\Form\ChoiceProvider\CurrencyByIdChoiceProvider
    • This class now implements the additional interface FormChoiceAttributeProviderInterface.

  • PrestaShop\PrestaShop\Core\Form\IdentifiableObject\DataHandler\ManufacturerFormDataHandler
    • __construct() - The second parameter is now ManufacturerImageUploader instead of ImageUploaderInterface.

  • PrestaShop\PrestaShop\Core\Form\IdentifiableObject\DataHandler\EmployeeFormDataHandler
    • __construct() - now takes 3 additional parameters (int $minLength, int $maxLength, int $minScore).

  • PrestaShop\PrestaShop\Core\Form\IdentifiableObject\DataProvider\CategoryFormDataProvider
    • __construct() now takes a GroupDataProvider instead of a DefaultGroupsProviderInterface.

  • PrestaShop\PrestaShop\Core\Grid\Definition\Factory\LogGridDefinitionFactory
    • __construct() now takes a second constructor parameter: string $contextDateFormat.

  • PrestaShop\PrestaShop\Core\Image\ImageTypeRepository

  • PrestaShop\PrestaShop\Core\Module\ModuleRepository
    • clearCache() - now takes additional parameter bool $allShops = false (read more).
    • getCacheKey() - is now protected, not public, and takes additional parameter ?int $shopId = null (read more).

  • PrestaShop\PrestaShop\Core\Tax\TaxOptionsConfiguration
    • This class now extends PrestaShop\PrestaShop\Core\Configuration\AbstractMultistoreConfiguration.
    • __construct now takes 4 parameters (read more).

  • PrestaShopBundle\Controller\Admin\Sell\Customer\CustomerController
    • toggleStatusAction() now returns JsonResponse instead of RedirectResponse.
    • toggleNewsletterSubscriptionAction() now returns JsonResponse instead of RedirectResponse.
    • togglePartnerOfferSubscriptionAction() now returns JsonResponse instead of RedirectResponse.

  • PrestaShopBundle\Controller\Admin\TranslationsController
    • Renamed to PrestaShopBundle\Controller\Admin\Improve\International\TranslationsController.

  • PrestaShopBundle\Controller\Admin\StockController
    • Renamed to PrestaShopBundle\Controller\Admin\Sell\Catalog\StockController.

  • PrestaShopBundle\Event\ModuleManagementEvent
    • __construct() now takes a PrestaShop\PrestaShop\Core\Addon\Module\ModuleInterface instead of a PrestaShop\PrestaShop\Adapter\Module\Module.

  • PrestaShopBundle\Form\Admin\Configure\AdvancedParameters\Administration\GeneralType
    • __construct() - The parameter $isDebug has been removed.
    • This class now extends PrestaShopBundle\Form\Admin\Type\TranslatorAwareType.

  • PrestaShopBundle\Form\Admin\Configure\AdvancedParameters\Employee\EmployeeType
    • __construct() - The parameter ConfigurationInterface $configuration has been added.

  • PrestaShopBundle\Form\Admin\Configure\ShopParameters\OrderPreferences\OrderPreferencesGiftOptionsFormDataProvider
    • __construct() - The parameter CMSDataProvider $cmsDataProvider has been removed.

  • PrestaShopBundle\Form\Admin\Configure\ShopParameters\ProductPreferences\PageType
    • This class now extends PrestaShopBundle\Form\Admin\Type\TranslatorAwareType.

  • PrestaShopBundle\Form\Admin\Configure\ShopParameters\ProductPreferences\PaginationType
    • This class now extends PrestaShopBundle\Form\Admin\Type\TranslatorAwareType.

  • PrestaShopBundle\Form\Admin\Configure\ShopParameters\ProductPreferencesPageFormDataProvider

  • PrestaShopBundle\Form\Admin\Configure\ShopParameters\TrafficSeo\Meta\SetUpUrlType
    • __construct() - The parameter $isHostMode has been removed.

  • PrestaShopBundle\Form\Admin\Configure\ShopParameters\TrafficSeo\Meta\ShopUrlType
    • __construct() - The parameter $isHostMode has been removed.

  • PrestaShopBundle\Form\Admin\Improve\International\Currencies\CurrencyExchangeRateType
  • This class now extends PrestaShopBundle\Form\Admin\Type\CommonAbstractType.

  • PrestaShopBundle\Form\Admin\Improve\International\Currencies\CurrencyFormDataProvider
  • __construct() with two parameters ($cronExchangeRate, $commandBus) has been removed.

  • PrestaShopBundle\Form\Admin\Product\ProductAttachement

  • PrestaShopBundle\Form\Admin\Product\ProductOptions

  • PrestaShopBundle\Form\Admin\Product\ProductPrice

  • PrestaShopBundle\Form\Admin\Product\ProductShipping

  • PrestaShopBundle\Form\Admin\Product\ProductSupplierCombination

  • PrestaShopBundle\Form\Admin\Product\ProductWarehouseCombination

  • PrestaShopBundle\Form\Admin\Improve\Shipping\Preferences\PreferencesHandlingFormDataProvider
    • __construct() - The parameter TranslatorInterface $translator has been removed.

  • PrestaShopBundle\Form\Admin\Sell\Address\ManufacturerAddressType

  • PrestaShopBundle\Form\Admin\Sell\CatalogPriceRule\CatalogPriceRuleType
    • __construct() - The parameter $currencyByIdChoicesAttributes has been added.

  • PrestaShopBundle\Form\Admin\Sell\Customer\CustomerType
    • __construct() - The parameter ConfigurationInterface $configuration has been added.

  • PrestaShopBundle\Form\Admin\Sell\Order\Delivery\SlipPdfType
    • This class now extends PrestaShopBundle\Form\Admin\Type\TranslatorAwareType.

  • PrestaShopBundle\Form\Admin\Sell\Product\Combination\CombinationStockType

  • PrestaShopBundle\Form\Admin\Sell\Product\SEO\RedirectOptionType
    • __construct() - now takes one additional parameter, EventSubscriberInterface $eventSubscriber.

  • PrestaShopBundle\Form\Admin\Sell\Product\Pricing\SpecificPriceType
    • __construct() - $currencyByIdChoiceProvider now takes FormChoiceAttributeProviderInterface instead of FormChoiceProviderInterface.

  • PrestaShopBundle\Form\Admin\Type\ChangePasswordType
    • __construct() - The parameter ConfigurationInterface $configuration has been added.

  • PrestaShopBundle\Form\Admin\Type\TypeaheadProductPackCollectionType
    • This class has been renamed to PrestaShopBundle\Form\Admin\Extension\UnitTypeExtension.

  • PrestaShopBundle\Form\Admin\Type\TypeaheadProductPackCollectionType

  • PrestaShopBundle\Install\Install
    • getModulesList() has been renamed to getModulesOnDisk().

  • PrestaShopBundle\Command\AppendConfigurationFileHooksListCommand
    • __construct() now takes 9 parameters.

  • PrestaShopBundle\Command\AppendHooksListForSqlUpgradeFileCommand
    • __construct() now takes 10 parameters.

  • PrestaShopBundle\Command\CheckTranslationDuplicatesCommand
    • __construct() now takes a TranslatorBagInterface.

  • PrestaShopBundle\Command\ConfigCommand
    • __construct() - The first parameter, $legacyContextLoader, has been removed.

  • PrestaShopBundle\Command\DebugCommand
    • __construct() - The 3rd parameter, $legacyContextLoader, has been removed.

  • PrestaShopBundle\Command\ExportThemeCommand
    • __construct() now takes 3 parameters.

  • PrestaShopBundle\Command\GenerateMailTemplatesCommand
    • __construct() now takes 2 parameters.

  • PrestaShopBundle\Command\LegacyLinkLinterCommand
    • __construct() now takes 2 parameters.

  • PrestaShopBundle\Command\ListCommandsAndQueriesCommand
    • __construct() now takes 2 parameters.

  • PrestaShopBundle\Command\ModuleCommand
    • __construct() now takes 4 parameters.

  • PrestaShopBundle\Command\NamingConventionLinterCommand
    • __construct() now takes 2 parameters.

  • PrestaShopBundle\Command\SecurityAnnotationLinterCommand
    • __construct() now takes 2 parameters.

  • PrestaShopBundle\Command\ThemeEnablerCommand
    • __construct() now takes a ThemeManager parameter.

  • PrestaShopBundle\Command\UpdateEUTaxruleGroupsCommand
    • __construct() now takes a string $localizationPath parameter.

  • PrestaShopBundle\Command\UpdateSchemaCommand
    • __construct() now takes 3 parameters.

  • PrestaShopBundle\Controller\Admin\Sell\Order\ActionsBarButtonInterface
    • Renamed to PrestaShopBundle\Component\ActionBar\ActionsBarButtonInterface.

  • PrestaShopBundle\Kernel\ModuleRepositoryFactory


  • PrestaShopBundle\Service\DataProvider\Admin\AddonsInterface
    • downloadModule() - This method has been removed from the interface.
    • isAddonsAuthenticated() - This method has been removed from the interface.

  • PrestaShopBundle\Translation\Provider\SearchProvider

Removals

Removed methods

  • bindDatepicker()
  • includeDatepicker() deprecated in 1.5.3
  • translate() deprecated in 1.5.4
  • process::processInstallAddonsModules() (from install-dev/controllers/console/process.php)
  • process::processInstallAddonsModules() (from install-dev/controllers/http/process.php)
  • AddressFormat::_getFormatDB()
  • AdminCarriersController::getList()
  • AdminCartsController::replaceZeroByShopName()
  • AdminController::addPageHeaderToolBarModulesListButton() deprecated in 1.7.7
  • AdminController::addToolBarModulesListButton() deprecated in 1.7.7
  • AdminController::filterTabModuleList() deprecated in 1.7.7
  • AdminController::initTabModuleList() deprecated in 1.7.7
  • AdminController::renderModulesList() deprecated in 1.7.4
  • AdminController::setDeprecatedMedia() deprecated in 1.6.0
  • AdminDashboardController::displayAjaxGetBlogRss()
  • AdminModulesController::ajaxProcessRefreshModuleList()
  • AdminModulesController::ajaxProcessLogOnAddonsWebservices()
  • AdminModulesController::ajaxProcessLogOutAddonsWebservices()
  • AdminModulesPositionsControllerCore::initMain()
  • AdminProductsController::recurseCategoryForInclude() deprecated in 1.7.0
  • Carrier::getCarrierNameFromShopName()
  • Cart::addExtraCarriers() deprecated in 1.7.6
  • Cart::replaceZeroByShopName()
  • Cart::checkDiscountValidity() deprecated in 1.5.0
  • Cart::deletePictureToProduct() deprecated in 1.5.5
  • Cart::getOrderShippingCost() deprecated in 1.5.0
  • Cart::getTaxesAverageUsed() deprecated in 1.7.6
  • CartRule::checkProductRestrictions() deprecated in 1.7.4
  • Category::_subTree() deprecated in 1.7.0
  • Category::getShopID() deprecated in 1.7.0
  • Category::getUrlRewriteInformations() deprecated in 1.7.0
  • Category::getCategoryInformations() deprecated in 1.7.0
  • CmsCategory::searchByNameAndParentCMSCategoryId() deprecated in 1.5.3
  • Combination::loadStockData()
  • Configuration::getInt()
  • Cookie::_setcookie() deprecated in 1.7.0
  • Cookie::isLogged() deprecated in 1.5.0
  • Cookie::isLoggedBack() deprecated in 1.5.0
  • DbPDO::_getPDO()
  • FrontController::addMedia() deprecated in 1.7.0
  • FrontController::removeMedia() deprecated in 1.7.0
  • GroupReduction::getGroupByCategoryId() deprecated in 1.5.3
  • GroupReduction::getGroupReductionByCategoryId() deprecated in 1.5.3
  • Helper::renderAdminCategorieTree() deprecated in 1.5.0
  • Helper::renderModulesList()
  • Helper::l()
  • Helper::renderShopList() deprecated in 1.6.1
  • Hook::getHookAliasList() deprecated in 1.7.1
  • Hook::getRetroHookName() deprecated in 1.7.1
  • ImageType::getFormatedName() deprecated in 1.7.0
  • Language::recurseDeleteDir() deprecated in 1.6.1
  • Language::_copyNoneFlag() deprecated in 1.7.7
  • Language::installEmailsLanguagePack() deprecated in 1.7.6
  • Media::getJqueryPath() deprecated in 1.7.7
  • Module::checkModuleFromAddonsApi()
  • Module::deleteTrustedXmlCache()
  • Module::generateTrustedXml()
  • Module::isModuleTrusted()
  • OrderHistory::getLastOrderState() deprecated in 1.5.0
  • OrderPayment::getByOrderId() deprecated in 1.5.3
  • OrderSlip::createOrderSlip() deprecated in 1.6.0
  • PaymentModule::formatProductAndVoucherForEmail() deprecated in 1.6.0
  • PrestaShopException::getExentedMessage() deprecated in 1.5.5
  • PrestaShopLogger::_isPresent() deprecated in 1.7.0
  • Product::addProductAttributeMultiple() deprecated in 1.5.5
  • Product::addAttributeCombinaison() deprecated in 1.5.0
  • Product::addAttributeCombinationMultiple() deprecated in 1.5.5
  • Product::updateQuantity() deprecated in 1.5.0
  • Product::reinjectQuantities() deprecated in 1.5.3
  • Product::getIdProductAttributesByIdAttributes() deprecated in 1.7.3
  • Product::getAttributeCombinaisons() deprecated in 1.5.0
  • Product::deleteAttributeCombinaison() deprecated in 1.5.5
  • Product::deleteAttributesImpacts()
  • Product::getAttributesImpacts()
  • ProductSupplier::delete()
  • Shop::getTheme()
  • Stock::addMissingMvt() deprecated in 1.5.0
  • Tax::getProductTaxRateViaRules() deprecated in 1.5.0
  • TaxRule::deleteTaxRuleByIdCounty() deprecated in 1.5.0
  • TaxRulesGroup::getTaxesRate() deprecated in 1.5.0
  • TaxRulesGroup::getTaxes() deprecated in 1.5.0
  • Tools::array_replace() deprecated in 1.7.4
  • Tools::display404Error() deprecated in 1.5.0
  • Tools::getCldr() deprecated in 1.7.6
  • Tools::getSafeModeStatus() deprecated in 1.7.0
  • Tools::jsonEncode() deprecated in 1.7.0
  • Tools::jsonDecode() deprecated in 1.7.0
  • Tools::addonsRequest()
  • Translate::getGenericAdminTranslation()
  • Uploader::_getFileSize() deprecated in 1.7.0
  • Uploader::_getServerVars() deprecated in 1.7.0
  • Uploader::_normalizeDirectory() deprecated in 1.7.0
  • Validate::isPasswd() deprecated in 1.7.0
  • PrestaShop\PrestaShop\Adapter\Employee\EmployeeFormAccessChecker::canAccessAddonsConnect()
  • PrestaShop\PrestaShop\Adapter\Hosting\HostingInformation::isHostMode()
  • PrestaShop\PrestaShop\Adapter\Module\AdminModuleDataProvider::clearCatalogCache()
  • PrestaShop\PrestaShop\Adapter\Module\AdminModuleDataProvider::clearModuleListCache()
  • PrestaShop\PrestaShop\Adapter\Module\AdminModuleDataProvider::getCatalogModules()
  • PrestaShop\PrestaShop\Adapter\Module\AdminModuleDataProvider::getCatalogModulesNames()
  • PrestaShop\PrestaShop\Adapter\Module\AdminModuleDataProvider::getModuleAttributesById()
  • PrestaShop\PrestaShop\Adapter\Module\ModuleDataUpdater::setModuleOnDiskFromAddons()
  • PrestaShop\PrestaShop\Adapter\Tools::bcadd() deprecated in 1.7.2
  • PrestaShop\PrestaShop\Adapter\Tools::link_rewrite()
  • PrestaShop\PrestaShop\Core\Addon\Module\ModuleManager::disable_mobile() deprecated in 1.7.3
  • PrestaShop\PrestaShop\Core\Addon\Module\ModuleManager::enable_mobile() deprecated in 1.7.3
  • PrestaShop\PrestaShop\Core\Addon\Module\ModuleRepository::getModuleById()
  • PrestaShop\PrestaShop\Core\Addon\Module\ModuleRepository::setPrestaTrustChecker()
  • PrestaShop\PrestaShop\Core\Domain\Order\QueryResult\OrderReturnForViewing::getCarrierId()
  • PrestaShop\PrestaShop\Core\Domain\Order\QueryResult\OrderReturnForViewing::getTrackingUrl()
  • PrestaShop\PrestaShop\Core\Domain\Order\QueryResult\OrderReturnForViewing::getTrackingNumber()
  • PrestaShop\PrestaShop\Core\Domain\Product\QueryResult\ProductStockInformation::useAdvancedStockManagement()
  • PrestaShop\PrestaShop\Core\Domain\Product\QueryResult\ProductStockInformation::dependsOnStock()
  • PrestaShop\PrestaShop\Core\Employee\Access\EmployeeFormAccessCheckerInterface::canAccessAddonsConnect()
  • PrestaShop\PrestaShop\Core\Foundation\Version::getReleaseVersion() deprecated in 1.7.6
  • PrestaShop\PrestaShop\Core\Localization\RTL\Processor::setIsInstall()
  • PrestaShop\PrestaShop\Core\Localization\RTL\Processor::setRegenerate()
  • PrestaShopBundle\Controller\Admin\CommonController::recommendedModulesAction()
  • PrestaShopBundle\Controller\Admin\Improve\ModuleController::catalogAction()
  • PrestaShopBundle\Controller\Admin\Improve\ModuleController::getModuleCartAction()
  • PrestaShopBundle\Controller\Admin\Improve\ModuleController::getPreferredModulesAction()
  • PrestaShopBundle\Controller\Admin\Improve\ModuleController::refreshCatalogAction()
  • PrestaShopBundle\Entity\Tab::getHideHostMode()
  • PrestaShopBundle\Install\Install::getAddonsModulesList()
  • PrestaShopBundle\Translation\Provider\AbstractProvider::getPrestaShopLocale() deprecated in 1.7.6
  • PrestaShopBundle\Translation\Provider\SearchProvider::getDomain() deprecated in 1.7.6
  • PrestaShopBundle\Translation\Provider\SearchProvider::getModuleDirectory() deprecated in 1.7.6
  • PrestaShopBundle\Translation\Provider\ThemeProvider::getDomain() deprecated in 1.7.6
  • PrestaShopBundle\Twig\HookExtension::hookCount() deprecated in 1.7.7

Removed variables or properties

  • $_LANGADM
  • $timer_start
  • AdminController::$timer_start
  • AdminController::$logged_on_addons
  • AdminModulesController::$_modules_ad
  • Combination::$location deprecated in 1.7.8
  • Combination::$quantity deprecated in 1.7.8
  • CustomerNameValidator::$characterCleaner
  • CustomerNameValidatorFactory::$characterCleaner
  • Employee::$bo_show_screencast deprecated in 1.6.0
  • FrontController::$smarty deprecated in 1.5.0.1
  • FrontController::$cookie deprecated in 1.5.0.1
  • FrontController::$link deprecated in 1.5.0.1
  • FrontController::$cart deprecated in 1.5.0.1
  • Module::$trusted
  • Order::$shipping_number deprecated in 1.5.0
  • Stock::$date_upd deprecated in 1.5.0
  • Stock::$quantity deprecated in 1.5.0
  • Tab::$hide_host_mode
  • PrestaShopBundle\Entity\Repository\StockManagementRepository::$languageId
  • PrestaShopBundle\Entity\Repository\StockManagementRepository::$shopId
  • PrestaShopBundle\Entity\Repository\StockManagementRepository::$context
  • TypedRegexValidator::$characterCleaner

Removed constants

  • _CUSTOMIZE_FILE_
  • _CUSTOMIZE_TEXTFIELD_
  • _PS_PEAR_XML_PARSER_PATH_
  • _PS_SMARTY_DIR_
  • _PS_SWIFT_DIR_
  • _PS_TAASC_PATH_
  • _PS_TCPDF_PATH_
  • PS_SEARCH_MAX_WORD_LENGTH
  • PhpEncryption::LEGACY_ENGINE
  • Module::CACHE_FILE_CUSTOMER_MODULES_LIST
  • Module::CACHE_FILE_DEFAULT_COUNTRY_MODULES_LIST
  • Module::CACHE_FILE_MUST_HAVE_MODULES_LIST
  • Module::CACHE_FILE_TRUSTED_MODULES_LIST
  • Module::CACHE_FILE_UNTRUSTED_MODULES_LIST
  • PrestaShop\PrestaShop\Adapter\Module\AdminModuleDataProvider::_CACHEKEY_MODULES_
  • PrestaShop\PrestaShop\Core\Domain\Employee\ValueObject\Password::MIN_LENGTH
  • PrestaShop\PrestaShop\Core\Domain\Employee\ValueObject\Password::MAX_LENGTH

Removed configuration keys

  • TRACKING_DIRECT_TRAFFIC

Removed classes

  • AdminAttributeGeneratorController
  • AdminPatternsController
  • AdminReferrersController
  • Referrer
  • PhpEncryptionLegacyEngine
  • Windows deprecated in 1.7.0
  • OrderDiscount deprecated in 1.5.0
  • PrestaShop\PrestaShop\Adapter\Addons\AddonsDataProvider
  • PrestaShop\PrestaShop\Adapter\Cache\CacheClearer deprecated in 1.7.6
  • PrestaShop\PrestaShop\Adapter\Currency\CommandHandler\ToggleExchangeRateAutomatizationHandler
  • PrestaShop\PrestaShop\Adapter\Module\PrestaTrust (whole namespace)
  • PrestaShop\PrestaShop\Adapter\Module\ModuleZip
  • PrestaShop\PrestaShop\Adapter\Module\ModuleZipManager
  • PrestaShop\PrestaShop\Adapter\Module\Presenter\PaymentModulesPresenter deprecated in 1.7.8
  • PrestaShop\PrestaShop\Adapter\News\NewsDataProvider
  • PrestaShop\PrestaShop\Core\Addon\Login\Exception\LoginErrorException
  • PrestaShop\PrestaShop\Core\Addon\AddonsCollection
  • PrestaShop\PrestaShop\Core\Addon\Module\Exception\UnconfirmedModuleActionException
  • PrestaShop\PrestaShop\Core\Addon\Module\ModuleInterface
  • PrestaShop\PrestaShop\Core\Addon\Module\ModuleManager
  • PrestaShop\PrestaShop\Core\Addon\Module\ModuleRepository
  • PrestaShop\PrestaShop\Core\Addon\Module\ModuleRepositoryInterface
  • PrestaShop\PrestaShop\Core\Domain\Attachment\Query\GetAttachmentInformationList
  • PrestaShop\PrestaShop\Core\Domain\Currency\Command\ToggleExchangeRateAutomatizationCommand
  • PrestaShop\PrestaShop\Core\Domain\Currency\CommandHandler\ToggleExchangeRateAutomatizationHandlerInterface
  • PrestaShop\PrestaShop\Core\Domain\Currency\Exception\AutomateExchangeRatesUpdateException
  • PrestaShop\PrestaShop\Core\Domain\Customer\QueryResult\ReferrerInformation
  • PrestaShop\PrestaShop\Core\Domain\Product\Command\AssociateProductAttachmentCommand
  • PrestaShop\PrestaShop\Core\Domain\SpecificPrice\Exception\CannotAddSpecificPriceException deprecated in 1.7.8
  • PrestaShop\PrestaShop\Core\Email\SmtpDataConfigurator deprecated in 1.7.8
  • PrestaShop\PrestaShop\Core\Kpi\Row\KpiRowFactory deprecated in 1.7.8
  • PrestaShopBundle\Cache\Factory\CacheSubscriberFactory
  • PrestaShopBundle\Cache\ModuleTemplateCacheWarmer
  • PrestaShopBundle\Controller\Admin\Improve\Design\ThemeCatalogController
  • PrestaShopBundle\Controller\Admin\Improve\Modules\AddonsStoreController
  • PrestaShopBundle\DependencyInjection\Compiler\OverrideTwigServiceCompilerPass
  • PrestaShopBundle\Event\ModuleZipManagementEvent
  • PrestaShopBundle\Form\Admin\Configure\AdvancedParameters\RequestSql\SqlRequestFormDataProvider
  • PrestaShopBundle\Form\Admin\Configure\AdvancedParameters\RequestSql\SqlRequestFormHandler
  • PrestaShopBundle\Form\Admin\Type\AddonsConnectType
  • PrestaShopBundle\Form\Admin\Type\TextWithUnitType
  • PrestaShopBundle\Install\Upgrade
  • PrestaShopBundle\Service\DataProvider\Admin\AddonsInterface
  • PrestaShopBundle\Service\DataProvider\Marketplace\ApiClient
  • PrestaShopBundle\Service\Hook\HookDispatcher deprecated in 1.7.5
  • PrestaShopBundle\Twig\AdminExtension
  • PrestaShopBundle\Twig\Locator\ModuleTemplateIterator

Removed routes

  • admin_common_recommended_modules
  • admin_module_addons_store
  • admin_module_cart
  • admin_module_catalog_post
  • admin_module_catalog_refresh
  • admin_module_catalog

Removed services

  • guzzle.cache
  • prestashop.adapter.admin.data_provider.addons
  • prestashop.adapter.cache_clearer
  • prestashop.adapter.currency.command_handler.update_live_exchange_rates
  • prestashop.adapter.news.circuit_breaker.settings
  • prestashop.adapter.news.circuit_breaker
  • prestashop.adapter.news.provider
  • prestashop.addons.client_api
  • prestashop.core.admin.data_provider.addons_interface
  • prestashop.core.email.smtp_configurator
  • prestashop.data_provider.modules.recommended
  • prestashop.module.zip.manager

Removed endpoints

  • admin-dev/ajax-tab.php deprecated in 1.7.6
  • admin-dev/ajax_products_list.php deprecated in 1.7.6
  • admin-dev/backup.php deprecated in 1.7.6
  • admin-dev/displayImage.php deprecated in 1.7.6
  • admin-dev/drawer.php deprecated in 1.7.6
  • admin-dev/grider.php deprecated in 1.7.6
  • admin-dev/pdf.php deprecated in 1.7.6
  • admin-dev/searchcron.php deprecated in 1.7.6

Removed files

  • images.inc.php deprecated in 1.5.0
  • admin-dev/themes/default/public/theme.rtlfix

Behavior changes

  • AdminController::l() no longer falls back to admin / legacy module translations (this is done in ModuleAdminController now)
  • Carrier::checkDeliveryPriceByWeight() returns boolean now if a given carrier is available for a provided weight
  • Carrier::checkDeliveryPriceByPrice() returns boolean now if a given carrier is available for a provided price
  • Module::getModuleNameFromClass() no longer produces side effects (i.e. it no longer loads the module’s translations)
  • Translate::getAdminTranslation() is now a wrapper to Context::getContext()->getTranslator()->trans() and it no longer attempts to translate using module translations.
  • Translate::getModuleTranslation() no longer falls back to admin translations

Deprecations

PHP

  • ApiClient::setSslVerification() → Configure the client passed in the constructor directly.
  • CharacterCleaner::cleanNonUnicodeSupport() → There is no need to use it.
  • Configuration::clearConfigurationCacheForTesting() → Use Configuration::resetStaticCache() instead.
  • Tools::cleanNonUnicodeSupport() → There is no need to use it.
  • Tools::safePostVars() → Avoid using this method.
  • Tools::redirectLink() → Avoid using this method. Use Tools::redirect() instead.
  • Translate::getAdminTranslation() → Use Context::getContext()->getTranslator()->trans().
  • ProductImageFolderProvider → Will be removed in the next major version. Use ImageFolderProvider instead.
  • TypeaheadRedirectionTargetTransformer → Will be removed in the next major version. This transformer was useful when the form used a TypeAhead form type, with the new EntitySearchInputType it became useless because the format is more adapted by default and not complex enough to justify a transformer.
  • Validate::isPlaintextPassword() → Avoid using this method. There are new methods to check password correctness.
  • Validate::isPasswdAdmin() → Avoid using this method. There are new methods to check password correctness.
  • admin-dev/filemanager/dialog.php → code related to Aviary has been removed from the File Manager.

Database

  • ps_product.unit_price_ratio → The reference is now ps_product.unit_price (read more).

Updated dependencies

PHP libraries

Library name Old version New version
curl/curl 1.2 2.3
csa/guzzle-bundle 1.3 (forked) ~ Removed ~
cssjanus/cssjanus 1.2 (forked) 2.1
doctrine/cache 1.8 2.0
doctrine/doctrine-bundle 1.6 2.3
egulias/email-validator 2.1 ~ Removed ~
guzzlehttp/cache-subscriber 0.2 ~ Removed ~
guzzlehttp/guzzle 5.3 7.4
mrclay/minify 2.3 3.0
paragonie/random_compat 2.0 ~ Removed ~
pelago/emogrifier 2.1 5.0
prestashop/circuit-breaker 3.0 4.0
prestashop/decimal 1.4 1.5
prestashop/translationtools-bundle 4.0 5.0
shudrum/array-finder 1.1 ~ Removed ~
symfony/polyfill-apcu 1.0 ~ Removed ~
symfony/polyfill-php73 1.10 ~ Removed ~
symfony/symfony 3.4 4.4
twig/twig 1.38 3.4

JS libraries

  • The file js/rtl.js has been removed.

  • The file admin-dev/themes/default/js/vendor/jquery-passy.js has been removed.

  • The following dependencies, not required by the Back office directly, have been removed from Symfony-based pages:

    • bootstrap-slider
    • compass
    • mobile-detect
    • sprintf-js
    • tether