Seditio Source
Root |
./othercms/xenForo 2.2.8/src/XF/Widget/Html.php
<?php

namespace XF\Widget;

class
Html extends AbstractWidget
{
    protected
$defaultOptions = [
       
'advanced_mode' => false,
       
'template_title' => ''
   
];

    public function
render()
    {
       
$template = $this->app->templater()->renderTemplate(
           
'public:' . $this->options['template_title'],
           
$this->getDefaultTemplateParams('render')
        );
        return
$this->renderer('widget_html', ['template' => $template]);
    }

    public function
verifyOptions(\XF\Http\Request $request, array &$options, &$error = null)
    {
       
$widgetConfig = $this->widgetConfig;

        if (!
$widgetConfig->widgetKey)
        {
            return
false;
        }

       
$templateTitle = '_widget_' . $widgetConfig->widgetKey;

        if (!
$widgetConfig->widgetId)
        {
           
$templateEnt = $this->em()->create('XF:Template');
           
$templateEnt->type = 'public';
           
$templateEnt->title = $templateTitle;
           
$templateEnt->style_id = 0;
           
$templateEnt->addon_id = '';
        }
        else
        {
           
$templateEnt = $this->getMasterTemplate();

           
// Template name change
           
if ($templateEnt->title !== $templateTitle)
            {
               
$templateEnt->title = $templateTitle;
            }
        }

       
$templateEnt->template = $request->filter('template', 'str');

       
$templateEnt->save();

       
$options = $request->filter([
           
'advanced_mode' => 'bool'
       
]);
       
$options['template_title'] = $templateTitle;

        return
true;
    }

    public function
getDefaultTitle()
    {
        return
'';
    }

    protected function
getDefaultTemplateParams($context)
    {
       
$params = parent::getDefaultTemplateParams($context);
        if (
$context == 'options')
        {
           
$params['template'] = $this->getMasterTemplate();
        }
        return
$params;
    }

    public function
postDelete()
    {
       
$template = $this->getMasterTemplate();
        if (
$template)
        {
           
$template->delete(false, false);
        }
    }

    protected function
getMasterTemplate()
    {
        if (isset(
$this->options['template_title']))
        {
            return
$this->em()->findOne('XF:Template', [
               
'style_id' => 0,
               
'type' => 'public',
               
'title' => $this->options['template_title']
            ]);
        }
        return
null;
    }
}