* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ namespace PrestaShop\PrestaShop\Core\Form\ChoiceProvider; use PrestaShop\PrestaShop\Core\Form\FormChoiceProviderInterface; final class CmsCategoriesChoiceProvider implements FormChoiceProviderInterface { /** * @var array */ private $nestedCategories; /** * @param array $nestedCategories */ public function __construct(array $nestedCategories) { $this->nestedCategories = $nestedCategories; } /** * {@inheritdoc} */ public function getChoices() { $choices[] = $this->buildChoiceTree($this->nestedCategories); return $choices; } /** * @param array $category * * @return array */ private function buildChoiceTree(array $category) { $tree = [ 'id_cms_category' => $category['id_cms_category'], 'name' => $category['name'], ]; if (isset($category['children'])) { foreach ($category['children'] as $childCategory) { $tree['children'][] = $this->buildChoiceTree($childCategory); } } return $tree; } }