Skip to content

Release 4.6.22 #2867

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 16 commits into from
Aug 6, 2025
Merged

Release 4.6.22 #2867

merged 16 commits into from
Aug 6, 2025

Conversation

mnocon
Copy link
Contributor

@mnocon mnocon commented Aug 5, 2025

@adriendupuis adriendupuis mentioned this pull request Aug 5, 2025
7 tasks
@mnocon mnocon marked this pull request as ready for review August 5, 2025 18:57
@mnocon mnocon requested a review from a team August 6, 2025 11:41
@ezrobot ezrobot requested review from adriendupuis, dabrt and julitafalcondusza and removed request for a team August 6, 2025 11:42
mnocon and others added 16 commits August 6, 2025 15:17
* Added Priority for YAML configuration

* Added doc for storefront groups

* Adjusted paths

* Update docs/templating/layout/customize_storefront_layout.md

Co-authored-by: julitafalcondusza <[email protected]>

---------

Co-authored-by: julitafalcondusza <[email protected]>
* Docs: Add Menu component to Twig Components documentation

* Docs: Extend Twig Components YAML example with Menu component
* Adjusted code samples

* [Discounts] Added doc for 4.6.22

* Fixed limit mention

* Added update mention

* Removed mentions of OverridePrioritatization

* Wording

* Update code_samples/discounts/src/Command/ManageDiscountsCommand.php

Co-authored-by: Konrad Oboza <[email protected]>

* Fixed highlights

* Review suggestions

* Added missing v prefix

---------

Co-authored-by: Konrad Oboza <[email protected]>
…- v4.6 (#2525)

* Symbol attribute type described

* Fixes after review

* PHP CS Fixes

* Resolved conflicts in product search criteria

* Added composer dependency

* fixes

* review fixes

* PHP & JS CS Fixes

* symbol_attribute_type.md moved to Attributes folder

* fixes; mysql added

* fix in the table

* fix

---------

Co-authored-by: julitafalcondusza <[email protected]>
Co-authored-by: Marek Nocoń <[email protected]>
* Adjusted code samples

* [Discounts] Added doc for 4.6.22

* Fixed limit mention

* Added update mention

* Removed mentions of OverridePrioritatization

* Wording

* Update code_samples/discounts/src/Command/ManageDiscountsCommand.php

Co-authored-by: Konrad Oboza <[email protected]>

* Fixed highlights

* Review suggestions

* Added missing v prefix

* Added doc for IBX-9933

* Fixed badge

---------

Co-authored-by: Konrad Oboza <[email protected]>
* Adjusted code samples

* [Discounts] Added doc for 4.6.22

* Fixed limit mention

* Added update mention

* Removed mentions of OverridePrioritatization

* Wording

* Update code_samples/discounts/src/Command/ManageDiscountsCommand.php

Co-authored-by: Konrad Oboza <[email protected]>

* Fixed highlights

* Review suggestions

* Added missing v prefix

* Described requirements

* Added Solr 9 instructions

* Fixed link

* Updated instructions

* Apply suggestions from code review

Co-authored-by: julitafalcondusza <[email protected]>

---------

Co-authored-by: Konrad Oboza <[email protected]>
Co-authored-by: julitafalcondusza <[email protected]>
* IBX-10262: Added mention of the renamed class

* Release notes for 4.6.22

* Apply suggestions from code review

Co-authored-by: julitafalcondusza <[email protected]>

* Review fixes

* Fixed link

* Last minute fixes

---------

Co-authored-by: julitafalcondusza <[email protected]>
Copy link

github-actions bot commented Aug 6, 2025

code_samples/ change report

Before (on target branch)After (in current PR)

code_samples/back_office/components/twig_components.yaml


code_samples/back_office/components/twig_components.yaml

docs/templating/components.md@69:``` yaml
docs/templating/components.md@70:[[= include_file('code_samples/back_office/components/twig_components.yaml') =]]
docs/templating/components.md@71:```
docs/templating/components.md@87:``` yaml
docs/templating/components.md@88:[[= include_file('code_samples/back_office/components/twig_components.yaml') =]]
docs/templating/components.md@89:```

001⫶ibexa_twig_components:
002⫶ admin-ui-user-menu:

001⫶ibexa_twig_components:
002⫶ admin-ui-user-menu:
003⫶        custom-html-component:
004⫶ type: html
003⫶        custom-controller-component:
004⫶ type: controller
005⫶            arguments:
005⫶            arguments:
006⫶                content: '<b>Hello world!</b>'
007⫶ custom-template-component:
008⫶ type: template
009⫶ arguments:
010⫶ template: '@ibexadesign/ui/component/user_thumbnail/user_thumbnail.html.twig'
011⫶ parameters:
012⫶ user_content:
013⫶ name: "Thumbnail"
014⫶ thumbnail:
015⫶ resource: https://placecats.com/100/100
016⫶ custom-controller-component:
017⫶ type: controller
006⫶                controller: '\App\Controller\MyController::requestAction'
007⫶ parameters:
008⫶ parameter1: 'custom'
009⫶ parameter2: true
010⫶ custom-html-component:
011⫶ type: html
012⫶ priority: 0
013⫶ arguments:
014⫶ content: '<b>Hello world!</b>'
015⫶ admin-ui-user-menu:
016⫶ duplicated_user_menu:
017⫶ type: menu
018⫶            arguments:
018⫶            arguments:
019⫶                controller: '\App\Controller\MyController::requestAction'
020⫶ parameters:
021⫶ parameter1: 'custom'
022⫶ parameter2: true
023⫶ admin-ui-stylesheet-head:
024⫶ custom-link-component:
025⫶ type: stylesheet
026⫶ arguments:
027⫶ href: 'https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback'
028⫶ rel: stylesheet
029⫶ crossorigin: anonymous
030⫶ integrity: sha384-LN/mLhO/GN6Ge8ZPvI7uRsZpiXmtSkep+aFlJcHa8by4TvA34o1am9sa88eUzKTD
031⫶ type: text/css
032⫶ admin-ui-script-head:
033⫶ custom-script-component:
034⫶ type: script
019⫶                name: ezplatform_admin_ui.menu.user
020⫶ template: '@ibexadesign/ui/menu/user.html.twig'
021⫶ depth: 1
022⫶ admin-ui-script-head:
023⫶ custom-script-component:
024⫶ type: script
025⫶ arguments:
026⫶ src: 'https://doc.ibexa.co/en/latest/js/custom.js'
027⫶ crossorigin: anonymous
028⫶ defer: false
029⫶ async: true
030⫶ integrity: sha384-Ewi2bBDtPbbu4/+fs8sIbBJ3zVl0LDOSznfhFR/JBK+SzggdRdX8XQKauWmI9HH2
031⫶ type: text/javascript
032⫶ admin-ui-stylesheet-head:
033⫶ custom-link-component:
034⫶ type: stylesheet
035⫶            arguments:
035⫶            arguments:
036⫶                src: 'https://doc.ibexa.co/en/latest/js/custom.js'
037⫶ crossorigin: anonymous
038⫶ defer: false
039⫶ async: true
040⫶ integrity: sha384-Ewi2bBDtPbbu4/+fs8sIbBJ3zVl0LDOSznfhFR/JBK+SzggdRdX8XQKauWmI9HH2
041⫶ type: text/javascript
036⫶                href: 'https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback'
037⫶ rel: stylesheet
038⫶ crossorigin: anonymous
039⫶ integrity: sha384-LN/mLhO/GN6Ge8ZPvI7uRsZpiXmtSkep+aFlJcHa8by4TvA34o1am9sa88eUzKTD
040⫶ type: text/css
041⫶ admin-ui-global-search:
042⫶ custom-template-component:
043⫶ type: template
044⫶ priority: 50
045⫶ arguments:
046⫶ template: '@ibexadesign/ui/component/user_thumbnail/user_thumbnail.html.twig'
047⫶ parameters:
048⫶ user_content:
049⫶ name: "Thumbnail"
050⫶ thumbnail:
051⫶ resource: https://placecats.com/100/100


code_samples/back_office/search/src/Query/SymbolAttributeTypeQuery.php



code_samples/back_office/search/src/Query/SymbolAttributeTypeQuery.php

docs/search/criteria_reference/symbolattribute_criterion.md@19:``` php
docs/search/criteria_reference/symbolattribute_criterion.md@20:[[= include_file('code_samples/back_office/search/src/Query/SymbolAttributeTypeQuery.php') =]]
docs/search/criteria_reference/symbolattribute_criterion.md@21:```

001⫶<?php declare(strict_types=1);
002⫶
003⫶use Ibexa\Contracts\ProductCatalog\Values\Product\ProductQuery;
004⫶use Ibexa\Contracts\ProductCatalogSymbolAttribute\Search\Criterion\SymbolAttribute;
005⫶
006⫶$query = new ProductQuery();
007⫶$query->setFilter(new SymbolAttribute('ean', ['5023920187205']));
008⫶/** @var \Ibexa\Contracts\ProductCatalog\ProductServiceInterface $productService */
009⫶$results = $productService->findProducts($query);


code_samples/data_migration/examples/discounts/discount_code_create.yaml


code_samples/data_migration/examples/discounts/discount_code_create.yaml

docs/content_management/data_migration/importing_data.md@539:``` yaml
docs/content_management/data_migration/importing_data.md@540:[[= include_file('code_samples/data_migration/examples/discounts/discount_code_create.yaml') =]]
docs/content_management/data_migration/importing_data.md@541:```

001⫶type: discount_code
002⫶mode: create
003⫶code: summer10
004⫶global_usage_limit: 100 # Optional
005⫶user_usage_limit: 5 # Optional
006⫶created_at: '2023-01-01T12:00:00+00:00' # Optional
007⫶creator_id: 42 # Optional


code_samples/discounts/src/Command/ManageDiscountsCommand.php


code_samples/discounts/src/Command/ManageDiscountsCommand.php

docs/discounts/discounts_api.md@118:``` php hl_lines="60-66 68-92"
docs/discounts/discounts_api.md@118:``` php hl_lines="60-67 69-97"
docs/discounts/discounts_api.md@119:[[= include_file('code_samples/discounts/src/Command/ManageDiscountsCommand.php') =]]
docs/discounts/discounts_api.md@120:```

001⫶<?php
002⫶
003⫶declare(strict_types=1);
004⫶
005⫶namespace App\Command;
006⫶
007⫶use DateTimeImmutable;
008⫶use Ibexa\Contracts\Core\Collection\ArrayMap;
009⫶use Ibexa\Contracts\Core\Repository\PermissionResolver;
010⫶use Ibexa\Contracts\Core\Repository\UserService;
011⫶use Ibexa\Contracts\Discounts\DiscountServiceInterface;
012⫶use Ibexa\Contracts\Discounts\Value\DiscountType;
013⫶use Ibexa\Contracts\Discounts\Value\Struct\DiscountCreateStruct;
014⫶use Ibexa\Contracts\Discounts\Value\Struct\DiscountTranslationStruct;
015⫶use Ibexa\Contracts\DiscountsCodes\DiscountCodeServiceInterface;
016⫶use Ibexa\Contracts\DiscountsCodes\Value\Struct\DiscountCodeCreateStruct;
017⫶use Ibexa\Discounts\Value\DiscountCondition\IsInCurrency;
018⫶use Ibexa\Discounts\Value\DiscountCondition\IsInRegions;
019⫶use Ibexa\Discounts\Value\DiscountCondition\IsProductInArray;
020⫶use Ibexa\Discounts\Value\DiscountRule\FixedAmount;
021⫶use Ibexa\DiscountsCodes\Value\DiscountCondition\IsValidDiscountCode;
022⫶use Symfony\Component\Console\Command\Command;
023⫶use Symfony\Component\Console\Input\InputInterface;
024⫶use Symfony\Component\Console\Output\OutputInterface;
025⫶
026⫶final class ManageDiscountsCommand extends Command
027⫶{
028⫶ protected static $defaultName = 'discounts:manage';
029⫶
030⫶ private DiscountServiceInterface $discountService;
031⫶
032⫶ private DiscountCodeServiceInterface $discountCodeService;
033⫶
034⫶ private PermissionResolver $permissionResolver;
035⫶
036⫶ private UserService $userService;
037⫶
038⫶ public function __construct(
039⫶ UserService $userSerice,
040⫶ PermissionResolver $permissionResolver,
041⫶ DiscountServiceInterface $discountService,
042⫶ DiscountCodeServiceInterface $discountCodeService
043⫶ ) {
044⫶ $this->userService = $userSerice;
045⫶ $this->discountService = $discountService;
046⫶ $this->discountCodeService = $discountCodeService;
047⫶ $this->permissionResolver = $permissionResolver;
048⫶
049⫶ parent::__construct();
050⫶ }
051⫶
052⫶ protected function execute(InputInterface $input, OutputInterface $output): int
053⫶ {
054⫶ $this->permissionResolver->setCurrentUserReference(
055⫶ $this->userService->loadUserByLogin('admin')
056⫶ );
057⫶
058⫶ $now = new DateTimeImmutable();
059⫶
060❇️ $discountCodeCreateStruct = new DiscountCodeCreateStruct(
061❇️ 'summer10',
docs/discounts/discounts_api.md@119:[[= include_file('code_samples/discounts/src/Command/ManageDiscountsCommand.php') =]]
docs/discounts/discounts_api.md@120:```

001⫶<?php
002⫶
003⫶declare(strict_types=1);
004⫶
005⫶namespace App\Command;
006⫶
007⫶use DateTimeImmutable;
008⫶use Ibexa\Contracts\Core\Collection\ArrayMap;
009⫶use Ibexa\Contracts\Core\Repository\PermissionResolver;
010⫶use Ibexa\Contracts\Core\Repository\UserService;
011⫶use Ibexa\Contracts\Discounts\DiscountServiceInterface;
012⫶use Ibexa\Contracts\Discounts\Value\DiscountType;
013⫶use Ibexa\Contracts\Discounts\Value\Struct\DiscountCreateStruct;
014⫶use Ibexa\Contracts\Discounts\Value\Struct\DiscountTranslationStruct;
015⫶use Ibexa\Contracts\DiscountsCodes\DiscountCodeServiceInterface;
016⫶use Ibexa\Contracts\DiscountsCodes\Value\Struct\DiscountCodeCreateStruct;
017⫶use Ibexa\Discounts\Value\DiscountCondition\IsInCurrency;
018⫶use Ibexa\Discounts\Value\DiscountCondition\IsInRegions;
019⫶use Ibexa\Discounts\Value\DiscountCondition\IsProductInArray;
020⫶use Ibexa\Discounts\Value\DiscountRule\FixedAmount;
021⫶use Ibexa\DiscountsCodes\Value\DiscountCondition\IsValidDiscountCode;
022⫶use Symfony\Component\Console\Command\Command;
023⫶use Symfony\Component\Console\Input\InputInterface;
024⫶use Symfony\Component\Console\Output\OutputInterface;
025⫶
026⫶final class ManageDiscountsCommand extends Command
027⫶{
028⫶ protected static $defaultName = 'discounts:manage';
029⫶
030⫶ private DiscountServiceInterface $discountService;
031⫶
032⫶ private DiscountCodeServiceInterface $discountCodeService;
033⫶
034⫶ private PermissionResolver $permissionResolver;
035⫶
036⫶ private UserService $userService;
037⫶
038⫶ public function __construct(
039⫶ UserService $userSerice,
040⫶ PermissionResolver $permissionResolver,
041⫶ DiscountServiceInterface $discountService,
042⫶ DiscountCodeServiceInterface $discountCodeService
043⫶ ) {
044⫶ $this->userService = $userSerice;
045⫶ $this->discountService = $discountService;
046⫶ $this->discountCodeService = $discountCodeService;
047⫶ $this->permissionResolver = $permissionResolver;
048⫶
049⫶ parent::__construct();
050⫶ }
051⫶
052⫶ protected function execute(InputInterface $input, OutputInterface $output): int
053⫶ {
054⫶ $this->permissionResolver->setCurrentUserReference(
055⫶ $this->userService->loadUserByLogin('admin')
056⫶ );
057⫶
058⫶ $now = new DateTimeImmutable();
059⫶
060❇️ $discountCodeCreateStruct = new DiscountCodeCreateStruct(
061❇️ 'summer10',
062❇️            null, // Unlimited usage
063❇️ $this->permissionResolver->getCurrentUserReference()->getUserId(),
064❇️ $now
065❇️ );
066❇️ $discountCode = $this->discountCodeService->createDiscountCode($discountCodeCreateStruct);
067⫶
068❇️ $discountCreateStruct = new DiscountCreateStruct();
069❇️ $discountCreateStruct
070❇️ ->setIdentifier('discount_identifier')
071❇️ ->setType(DiscountType::CART)
072❇️ ->setPriority(10)
073❇️ ->setEnabled(true)
074❇️ ->setUser($this->userService->loadUserByLogin('admin'))
075❇️ ->setRule(new FixedAmount(10))
076❇️ ->setStartDate($now)
077❇️ ->setConditions([
078❇️ new IsInRegions(['germany', 'france']),
079❇️ new IsProductInArray(['product-1', 'product-2']),
080❇️ new IsInCurrency('EUR'),
081❇️ new IsValidDiscountCode($discountCode->getCode(), $discountCode->getUsedLimit()),
082❇️ ])
083❇️ ->setTranslations([
084❇️ new DiscountTranslationStruct('eng-GB', 'Discount name', 'This is a discount description', 'Promotion Label', 'Promotion Description'),
085❇️ new DiscountTranslationStruct('ger-DE', 'Discount name (German)', 'Description (German)', 'Promotion Label (German)', 'Promotion Description (German)'),
086❇️ ])
087❇️ ->setEndDate(null) // Permanent discount
088❇️ ->setCreatedAt($now)
089❇️ ->setUpdatedAt($now)
090❇️ ->setContext(new ArrayMap(['custom_context' => 'custom_value']));
091❇️
092❇️ $this->discountService->createDiscount($discountCreateStruct);
093⫶
094⫶ return Command::SUCCESS;
095⫶ }
096⫶}
062❇️            10, // Global usage limit
063❇️ null, // Unlimited usage per customer
064❇️ $this->permissionResolver->getCurrentUserReference()->getUserId(),
065❇️ $now
066❇️ );
067❇️ $discountCode = $this->discountCodeService->createDiscountCode($discountCodeCreateStruct);
068⫶
069❇️ $discountCreateStruct = new DiscountCreateStruct();
070❇️ $discountCreateStruct
071❇️ ->setIdentifier('discount_identifier')
072❇️ ->setType(DiscountType::CART)
073❇️ ->setPriority(10)
074❇️ ->setEnabled(true)
075❇️ ->setUser($this->userService->loadUserByLogin('admin'))
076❇️ ->setRule(new FixedAmount(10))
077❇️ ->setStartDate($now)
078❇️ ->setConditions([
079❇️ new IsInRegions(['germany', 'france']),
080❇️ new IsProductInArray(['product-1', 'product-2']),
081❇️ new IsInCurrency('EUR'),
082❇️ new IsValidDiscountCode(
083❇️ $discountCode->getCode(),
084❇️ $discountCode->getGlobalLimit(),
085❇️ $discountCode->getUsedLimit()
086❇️ ),
087❇️ ])
088❇️ ->setTranslations([
089❇️ new DiscountTranslationStruct('eng-GB', 'Discount name', 'This is a discount description', 'Promotion Label', 'Promotion Description'),
090❇️ new DiscountTranslationStruct('ger-DE', 'Discount name (German)', 'Description (German)', 'Promotion Label (German)', 'Promotion Description (German)'),
091❇️ ])
092❇️ ->setEndDate(null) // Permanent discount
093❇️ ->setCreatedAt($now)
094❇️ ->setUpdatedAt($now)
095❇️ ->setContext(new ArrayMap(['custom_context' => 'custom_value']));
096❇️
097❇️ $this->discountService->createDiscount($discountCreateStruct);
098⫶
099⫶ return Command::SUCCESS;
100⫶ }
101⫶}


code_samples/pim/Symbol/Format/Checksum/LuhnChecksum.php



code_samples/pim/Symbol/Format/Checksum/LuhnChecksum.php

docs/pim/attributes/symbol_attribute_type.md@119:``` php
docs/pim/attributes/symbol_attribute_type.md@120:[[= include_file('code_samples/pim/Symbol/Format/Checksum/LuhnChecksum.php') =]]
docs/pim/attributes/symbol_attribute_type.md@121:```

001⫶<?php
002⫶
003⫶declare(strict_types=1);
004⫶
005⫶namespace App\PIM\Symbol\Format\Checksum;
006⫶
007⫶use Ibexa\Contracts\ProductCatalog\Values\AttributeDefinitionInterface;
008⫶use Ibexa\Contracts\ProductCatalogSymbolAttribute\Value\ChecksumInterface;
009⫶
010⫶final class LuhnChecksum implements ChecksumInterface
011⫶{
012⫶ public function validate(AttributeDefinitionInterface $attributeDefinition, string $value): bool
013⫶ {
014⫶ $digits = $this->getDigits($value);
015⫶
016⫶ $count = count($digits);
017⫶ $total = 0;
018⫶ for ($i = $count - 2; $i >= 0; $i -= 2) {
019⫶ $digit = $digits[$i];
020⫶ if ($i % 2 === 0) {
021⫶ $digit *= 2;
022⫶ }
023⫶
024⫶ $total += $digit > 9 ? $digit - 9 : $digit;
025⫶ }
026⫶
027⫶ $checksum = $digits[$count - 1];
028⫶
029⫶ return $total + $checksum === 0;
030⫶ }
031⫶
032⫶ /**
033⫶ * Returns an array of digits from the given value (skipping any formatting characters).
034⫶ *
035⫶ * @return int[]
036⫶ */
037⫶ private function getDigits(string $value): array
038⫶ {
039⫶ $chars = array_filter(
040⫶ str_split($value),
041⫶ static fn (string $char): bool => $char !== '-'
042⫶ );
043⫶
044⫶ return array_map('intval', array_values($chars));
045⫶ }
046⫶}


code_samples/symbol_attribute/config/mysql/symbol_attribute.sql


code_samples/symbol_attribute/config/mysql/symbol_attribute.sql

docs/pim/attributes/symbol_attribute_type.md@44:    ``` sql
docs/pim/attributes/symbol_attribute_type.md@45: [[= include_file('code_samples/symbol_attribute/config/mysql/symbol_attribute.sql', glue=' ') =]]
docs/pim/attributes/symbol_attribute_type.md@46: ```

The following line doesn't include file correctly: [[= include_file('code_samples/symbol_attribute/config/mysql/symbol_attribute.sql', glue=' ') =]]


code_samples/symbol_attribute/config/postgresql/symbol_attribute.sql


code_samples/symbol_attribute/config/postgresql/symbol_attribute.sql

docs/pim/attributes/symbol_attribute_type.md@50:    ``` sql
docs/pim/attributes/symbol_attribute_type.md@51: [[= include_file('code_samples/symbol_attribute/config/postgresql/symbol_attribute.sql', glue=' ') =]]
docs/pim/attributes/symbol_attribute_type.md@52: ```

The following line doesn't include file correctly: [[= include_file('code_samples/symbol_attribute/config/postgresql/symbol_attribute.sql', glue=' ') =]]

Download colorized diff

@mnocon mnocon merged commit 7c5e266 into 4.6 Aug 6, 2025
7 checks passed
@mnocon mnocon deleted the release-4.6.22 branch August 6, 2025 13:34
mnocon added a commit that referenced this pull request Aug 6, 2025
* Added new Twig Component group (#2790)

* Twig Component follow ups (#2792)

* Added Priority for YAML configuration

* Added doc for storefront groups

* Adjusted paths

* Update docs/templating/layout/customize_storefront_layout.md

Co-authored-by: julitafalcondusza <[email protected]>

---------

Co-authored-by: julitafalcondusza <[email protected]>

* [Twig Components] Added Menu component (#2799)

* Docs: Add Menu component to Twig Components documentation

* Docs: Extend Twig Components YAML example with Menu component

* Discounts 4.6.22 (#2810)

* Adjusted code samples

* [Discounts] Added doc for 4.6.22

* Fixed limit mention

* Added update mention

* Removed mentions of OverridePrioritatization

* Wording

* Update code_samples/discounts/src/Command/ManageDiscountsCommand.php

Co-authored-by: Konrad Oboza <[email protected]>

* Fixed highlights

* Review suggestions

* Added missing v prefix

---------

Co-authored-by: Konrad Oboza <[email protected]>

* IBX-9147: Symbol attribute type described in Developer Documentation - v4.6 (#2525)

* Symbol attribute type described

* Fixes after review

* PHP CS Fixes

* Resolved conflicts in product search criteria

* Added composer dependency

* fixes

* review fixes

* PHP & JS CS Fixes

* symbol_attribute_type.md moved to Attributes folder

* fixes; mysql added

* fix in the table

* fix

---------

Co-authored-by: julitafalcondusza <[email protected]>
Co-authored-by: Marek Nocoń <[email protected]>

* Update 4.6.22 (#2851)

* Adjusted code samples

* [Discounts] Added doc for 4.6.22

* Fixed limit mention

* Added update mention

* Removed mentions of OverridePrioritatization

* Wording

* Update code_samples/discounts/src/Command/ManageDiscountsCommand.php

Co-authored-by: Konrad Oboza <[email protected]>

* Fixed highlights

* Review suggestions

* Added missing v prefix

* Added doc for IBX-9933

* Fixed badge

---------

Co-authored-by: Konrad Oboza <[email protected]>

* IBX-9845: Solr9 (#2866)

* Adjusted code samples

* [Discounts] Added doc for 4.6.22

* Fixed limit mention

* Added update mention

* Removed mentions of OverridePrioritatization

* Wording

* Update code_samples/discounts/src/Command/ManageDiscountsCommand.php

Co-authored-by: Konrad Oboza <[email protected]>

* Fixed highlights

* Review suggestions

* Added missing v prefix

* Described requirements

* Added Solr 9 instructions

* Fixed link

* Updated instructions

* Apply suggestions from code review

Co-authored-by: julitafalcondusza <[email protected]>

---------

Co-authored-by: Konrad Oboza <[email protected]>
Co-authored-by: julitafalcondusza <[email protected]>

* Release notes (#2869)

* IBX-10262: Added mention of the renamed class

* Release notes for 4.6.22

* Apply suggestions from code review

Co-authored-by: julitafalcondusza <[email protected]>

* Review fixes

* Fixed link

* Last minute fixes

---------

Co-authored-by: julitafalcondusza <[email protected]>

* Regenerated baseline

* Removed bullet

* Bumped latest tag

* Added PHP API links

* Added mention about Symbol attribute

* Fixed link

* Moved PHP API Symbol links

* symbol_attribute_type.md: Link to PHP API Ref

---------

Co-authored-by: julitafalcondusza <[email protected]>
Co-authored-by: Konrad Oboza <[email protected]>
Co-authored-by: julitafalcondusza <[email protected]>
Co-authored-by: Adrien Dupuis <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants