?? GreyFile — Mystic File Browser

Current path: home/webdevt/www/wdp/wp-content/plugins/brizy/content/



?? Go up: /home/webdevt/www/wdp/wp-content/plugins/brizy

?? Viewing: placeholder-provider.php

<?php

use BrizyPlaceholders\PlaceholderInterface;
use BrizyPlaceholders\RegistryInterface;

class Brizy_Content_PlaceholderProvider implements RegistryInterface
{

    /**
     * @var array of implements Brizy_Editor_Content_PlaceholdersProviderInterface
     */
    protected $providers = array();

    /**
     * @var array
     */
    static private $cache_grouped_placeholders = null;
    static private $cache_all_placeholders = null;

    /**
     * BrizyPro_Content_ProviderPlaceholders constructor.
     *
     * $context: for back compatibility
     *
     * @param Brizy_Content_Context $context
     */
    public function __construct($context = null)
    {
        $this->providers[] = new Brizy_Content_Providers_FreeProvider();
        $this->providers = apply_filters('brizy_providers', $this->providers, null);
    }

    /**
     * @return array
     */
    public function getPlaceholders()
    {
        $out = array();

        if (self::$cache_all_placeholders) {
            return self::$cache_all_placeholders;
        }

        foreach ($this->providers as $provider) {
            $out = array_merge($out, $provider->getPlaceholders());
        }

        self::$cache_all_placeholders = $out;

        return $out;
    }


    /**
     * @return array
     */
    public function getGroupedPlaceholders()
    {
        if (self::$cache_grouped_placeholders) {
            return self::$cache_grouped_placeholders;
        }

        $result = array();

        foreach ($this->providers as $provider) {

            foreach ($provider->getPlaceholders() as $placeholder) {

                if ($placeholder->getGroup()) {
                    $result[$placeholder->getGroup()][] = $placeholder;
                }
            }
        }

        return apply_filters('brizy_placeholders', self::$cache_grouped_placeholders = $result);
    }

    public function getGroupedPlaceholdersForApiResponse()
    {
        $groups = $this->getGroupedPlaceholders();
        $result = [];
        foreach ($groups as $group => $entries) {
            $result[$group] = array_map(function (PlaceholderInterface $entry) {
                return apply_filters('editor_placeholder_data', $entry->getConfigStructure(), $entry);
            }, $entries);
        }

        return $result;
    }

    /**
     * @param $name
     *
     * @return \BrizyPlaceholders\PlaceholderInterface
     */
//    public function getPlaceholder($name)
//    {
//        return $this->getPlaceholderSupportingName($name);
//    }

    /**
     * @inheritDoc
     */
//    public function getPlaceholdersByGroup($groupName)
//    {
//        $getGroupedPlaceholders = $this->getGroupedPlaceholders();
//
//        if (isset($getGroupedPlaceholders[$groupName])) {
//            return $getGroupedPlaceholders[$groupName];
//        }
//    }

    /**
     * @inheritDoc
     */
    public function getPlaceholderSupportingName($name)
    {
        foreach ($this->providers as $provider) {
            if ($instance = $provider->getPlaceholderSupportingName($name)) {
                return $instance;
            }
        }
    }

    public function registerPlaceholder(PlaceholderInterface $instance)
    {
        throw new Exception('Try to use a specific registry to register the placeholder');
    }
}


??

??