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

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. /**
  6.  * @extends EntityCollection<PropertyGroupEntity>
  7.  */
  8. class PropertyGroupCollection extends EntityCollection
  9. {
  10.     public function getOptionIdMap(): array
  11.     {
  12.         $map = [];
  13.         /** @var PropertyGroupEntity $group */
  14.         foreach ($this->elements as $group) {
  15.             if ($group->getOptions() === null) {
  16.                 continue;
  17.             }
  18.             foreach ($group->getOptions() as $option) {
  19.                 $map[$option->getId()] = $group->getId();
  20.             }
  21.         }
  22.         return $map;
  23.     }
  24.     public function sortByPositions(): void
  25.     {
  26.         usort($this->elements, function (PropertyGroupEntity $aPropertyGroupEntity $b) {
  27.             $posA $a->getTranslation('position') ?? $a->getPosition() ?? 0;
  28.             $posB $b->getTranslation('position') ?? $b->getPosition() ?? 0;
  29.             if ($posA === $posB) {
  30.                 return strnatcmp($a->getTranslation('name'), $b->getTranslation('name'));
  31.             }
  32.             return $posA <=> $posB;
  33.         });
  34.     }
  35.     public function sortByConfig(): void
  36.     {
  37.         /** @var PropertyGroupEntity $group */
  38.         foreach ($this->elements as $group) {
  39.             if ($group->getOptions() === null) {
  40.                 continue;
  41.             }
  42.             $group->getOptions()->sort(static function (PropertyGroupOptionEntity $aPropertyGroupOptionEntity $b) use ($group) {
  43.                 if ($group->getSortingType() === PropertyGroupDefinition::SORTING_TYPE_ALPHANUMERIC) {
  44.                     return strnatcmp($a->getTranslation('name'), $b->getTranslation('name'));
  45.                 }
  46.                 return ($a->getTranslation('position') ?? $a->getPosition() ?? 0) <=> ($b->getTranslation('position') ?? $b->getPosition() ?? 0);
  47.             });
  48.         }
  49.     }
  50.     public function getApiAlias(): string
  51.     {
  52.         return 'product_group_collection';
  53.     }
  54.     protected function getExpectedClass(): string
  55.     {
  56.         return PropertyGroupEntity::class;
  57.     }
  58. }