Spamworldpro Mini Shell
Spamworldpro


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/cartforge.co/app/code/Amasty/Base/Model/Source/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/cartforge.co/app/code/Amasty/Base/Model/Source/Category.php
<?php

declare(strict_types=1);

/**
 * @author Amasty Team
 * @copyright Copyright (c) Amasty (https://www.amasty.com)
 * @package Magento 2 Base Package
 */

namespace Amasty\Base\Model\Source;

use Magento\Framework\Data\OptionSourceInterface;

/**
 * Category Tree represented by single dimension array
 *
 * For variants - create virtualType of this class or OptionBuilder
 *
 * @api
 * @since 1.15.2
 */
class Category implements OptionSourceInterface
{
    private const ROOT_LEVEL = 0;

    public const EMPTY_OPTION_ID = 0;

    /**
     * @var Category\OptionsBuilder
     */
    private $optionsBuilder;

    /**
     * @var string|null
     */
    private $caption;

    /**
     * @var array|array[]
     */
    private $filters;

    /**
     * @param Category\OptionsBuilder $optionsBuilder
     * @param string|null $caption null if a constant option isn't needed, any string value will be used as a label
     * @param array $filters where key is column/attribute name and value is filter params for collection
     */
    public function __construct(
        Category\OptionsBuilder $optionsBuilder,
        ?string $caption = null,
        array $filters = ['level' => ['gt' => self::ROOT_LEVEL]]
    ) {
        $this->optionsBuilder = $optionsBuilder;
        $this->caption = $caption;
        $this->filters = $filters;
    }

    public function toOptionArray(): array
    {
        $optionArray = [];
        $arr = $this->toArray();
        foreach ($arr as $value => $label) {
            $optionArray[] = [
                'value' => $value,
                'label' => $label
            ];
        }

        return $optionArray;
    }

    /**
     * Get options in "key-value" format
     */
    public function toArray(): array
    {
        foreach ($this->filters as $filterName => $filterParams) {
            $this->optionsBuilder->addFilter($filterName, $filterParams);
        }

        $options = $this->optionsBuilder->build();
        if ($this->caption) {
            $options = [self::EMPTY_OPTION_ID => $this->caption] + $options;
        }

        return $options;
    }
}

Spamworldpro Mini