![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/setup/src/Magento/Setup/Fixtures/AttributeSet/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\Setup\Fixtures\AttributeSet; /** * Generate Data for Fixture to create an Attribute Set with specified pattern. */ class Pattern { /** * @var array */ private $attributePattern = [ 'is_required' => 1, 'is_visible_on_front' => 1, 'is_visible_in_advanced_search' => 0, 'attribute_code' => 'attribute_', 'backend_type' => '', 'is_searchable' => 0, 'is_filterable' => 0, 'is_filterable_in_search' => 0, 'frontend_label' => 'Attribute ', 'frontend_input' => 'select', ]; /** * Generate Data for Fixture to create an Attribute Set with specified pattern. * * @param string $name * @param int $attributesPerSet * @param int $optionsPerAttribute * @param callable $attributePattern callback in f($index, $attributeData) format * @return array */ public function generateAttributeSet( $name, $attributesPerSet, $optionsPerAttribute, $attributePattern = null ) { $attributeSet = [ 'name' => $name, 'attributes' => [] ]; for ($index = 1; $index <= $attributesPerSet; $index++) { $attributeData = $this->generateAttribute( $index, is_array($optionsPerAttribute) ? $optionsPerAttribute[$index - 1] : $optionsPerAttribute ); if (is_callable($attributePattern)) { $attributeData = $attributePattern($index, $attributeData); } $attributeSet['attributes']['attribute'][] = $attributeData; } return $attributeSet; } /** * Generate Attributes for Set. * * @param int $index * @param int $optionsPerAttribute * @return array */ private function generateAttribute($index, $optionsPerAttribute) { $attribute = $this->attributePattern; // copy pattern $attribute['attribute_code'] = $attribute['attribute_code'] . $index; $attribute['frontend_label'] = $attribute['frontend_label'] . $index; $attribute['options'] = ['option' => $this->generateOptions($optionsPerAttribute)]; $attribute['default_value'] = $attribute['options']['option'][0]['value']; return $attribute; } /** * Generate Options for Attribute. * * @param int $optionsPerAttribute * @return array */ private function generateOptions($optionsPerAttribute) { $options = []; for ($index = 1; $index <= $optionsPerAttribute; $index++) { $options[] = [ 'label' => 'option ' . $index, 'value' => 'option_' . $index ]; } return $options; } }