MessageConfigurationsPool.php 1.67 KB
Newer Older
Ketan's avatar
Ketan committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
namespace Magento\Framework\View\Element\Message;

class MessageConfigurationsPool
{
    /**
     * @var array
     */
    private $configurationsMap;

    /**
     * Expected input:
     * ['message_identifier' => ['renderer' => '{renderer_code}', 'data' => []], ...]
     *
     * @param array $configurationsMap
     */
    public function __construct(
        array $configurationsMap = []
    ) {
        array_walk(
            $configurationsMap,
            function (array &$configuration) {
                if (!isset($configuration['renderer'])
                    || !is_string($configuration['renderer'])
                ) {
                    throw new \InvalidArgumentException('Renderer should be defined.');
                }

                if (isset($configuration['data'])
                    && !is_array($configuration['data'])
                ) {
                    throw new \InvalidArgumentException('Data should be of array type.');
                }

                if (!isset($configuration['data'])) {
                    $configuration['data'] = [];
                }
            }
        );

        $this->configurationsMap = $configurationsMap;
    }

    /**
     * Returns message configuration as
     * ['message_identifier' => ['renderer' => '{renderer_code}', 'data' => []], ...]
     *
     * @param string $identifier
     * @return null|array
     */
    public function getMessageConfiguration($identifier)
    {
        return !isset($this->configurationsMap[$identifier])
            ? null
            : $this->configurationsMap[$identifier];
    }
}