vendor/shopware/core/Content/Property/PropertyGroupCollection.php line 13

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Shopware\Core\Content\Property;
  3. use Shopware\Core\Content\Property\Aggregate\PropertyGroupOption\PropertyGroupOptionEntity;
  4. use Shopware\Core\Framework\DataAbstractionLayer\EntityCollection;
  5. use Shopware\Core\Framework\Log\Package;
  6. /**
  7.  * @extends EntityCollection<PropertyGroupEntity>
  8.  */
  9. #[Package('inventory')]
  10. class PropertyGroupCollection extends EntityCollection
  11. {
  12.     public function getOptionIdMap(): array
  13.     {
  14.         $map = [];
  15.         /** @var PropertyGroupEntity $group */
  16.         foreach ($this->elements as $group) {
  17.             if ($group->getOptions() === null) {
  18.                 continue;
  19.             }
  20.             foreach ($group->getOptions() as $option) {
  21.                 $map[$option->getId()] = $group->getId();
  22.             }
  23.         }
  24.         return $map;
  25.     }
  26.     public function sortByPositions(): void
  27.     {
  28.         usort($this->elements, function (PropertyGroupEntity $aPropertyGroupEntity $b) {
  29.             $posA $a->getTranslation('position') ?? $a->getPosition() ?? 0;
  30.             $posB $b->getTranslation('position') ?? $b->getPosition() ?? 0;
  31.             if ($posA === $posB) {
  32.                 return strnatcmp($a->getTranslation('name'), $b->getTranslation('name'));
  33.             }
  34.             return $posA <=> $posB;
  35.         });
  36.     }
  37.     public function sortByConfig(): void
  38.     {
  39.         /** @var PropertyGroupEntity $group */
  40.         foreach ($this->elements as $group) {
  41.             if ($group->getOptions() === null) {
  42.                 continue;
  43.             }
  44.             $group->getOptions()->sort(static function (PropertyGroupOptionEntity $aPropertyGroupOptionEntity $b) use ($group) {
  45.                 if ($group->getSortingType() === PropertyGroupDefinition::SORTING_TYPE_ALPHANUMERIC) {
  46.                     return strnatcmp($a->getTranslation('name'), $b->getTranslation('name'));
  47.                 }
  48.                 return ($a->getTranslation('position') ?? $a->getPosition() ?? 0) <=> ($b->getTranslation('position') ?? $b->getPosition() ?? 0);
  49.             });
  50.         }
  51.     }
  52.     public function getApiAlias(): string
  53.     {
  54.         return 'product_group_collection';
  55.     }
  56.     protected function getExpectedClass(): string
  57.     {
  58.         return PropertyGroupEntity::class;
  59.     }
  60. }