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();
}
}