View file MMO-Hide-2.3.4/upload/src/addons/MMO/Hide/Listener.php

File size: 2.11Kb
<?php

namespace MMO\Hide;

use MMO\Hide\Data\HideTags;
use MMO\Hide\Template\TemplaterSetup;
use XF\Container;
use XF\Mvc\Controller;
use XF\Template\Templater;
use XF\Util\Arr;

class Listener
{
    /**
     * @param array $data
     * @param Controller $controller
     */
    public static function editorDialog(array &$data, Controller $controller)
    {
        if(\in_array($data['dialog'], self::getHideTags()))
        {
            $data['template'] = 'mh_hide_editor_dialog_' . $data['dialog'];
        }
    }

    /**
     * @param Container $container
     * @param Templater $templater
     *
     * @throws \Exception
     */
    public static function templaterSetup(Container $container, Templater &$templater)
    {
        /** @var TemplaterSetup $templaterSetup */
        $class = \XF::extendClass(TemplaterSetup::class);
        $templaterSetup = new $class();

        $templater->addFunction('mh_react', [$templaterSetup, 'funcMhReact']);
        $templater->addFunction('mh_hide_allowed_tags', [$templaterSetup, 'funcMhAllowedTags']);
    }

    /**
     * @param Templater
     * @param $type
     * @param $template
     * @param array $params
     */
    public static function templaterTemplatePreRender(Templater $templater, &$type, &$template, array &$params)
    {
        foreach (self::getHideTags() as $tag)
        {
            if (!\XF::visitor()->canUseHideTag(ucfirst($tag)))
            {
                $params['removeButtons'][] = "xfCustom_{$tag}";
            }
        }

        $params['mhHide'] = [
            'buttons' => self::getHideTags(),
            'disabledDialog' => Arr::stringToArray(\XF::options()->mhHideDisabledDialog, '/\r?\n/')
        ];
    }

    public static function bbCodeProcessorActionMap(array &$processorActionMap)
    {
        $processorActionMap['mhHideBbCodeUsage'] = 'MMO\Hide:AnalyzeHideBbCodeUsage';
    }

    private static function getHideTags()
    {
        /** @var HideTags $hideTags */
        $hideTags = \XF::app()->data(HideTags::class);
        return $hideTags->getHideTags();
    }
}