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

namespace XF\Service\Widget;

use
XF\Entity\Widget;
use
XF\Service\AbstractService;
use
XF\Widget\WidgetCompiler;

class
Compile extends AbstractService
{
   
/**
     * @var Widget
     */
   
protected $widget;

   
/**
     * @var WidgetCompiler
     */
   
protected $compiler;

    public function
__construct(\XF\App $app, Widget $widget)
    {
       
parent::__construct($app);

       
$this->widget = $widget;
       
$this->compiler = $this->app->widget()->getWidgetCompiler();
    }

    public function
compile()
    {
       
$widget = $this->widget;
       
$compiler = $this->compiler;

       
$code = $compiler->compile($widget);
       
$contents = "<?php\n\n" . $code;

       
$this->writeCode($contents);
    }

    public function
writeCode($contents)
    {
       
$widgetFile = $this->getWidgetFilename();
        \
XF\Util\File::writeToAbstractedPath($widgetFile, $contents);
    }

    protected function
getWidgetFilename()
    {
        return
"code-cache://widgets/_{$this->widget->widget_id}_{$this->widget->widget_key}.php";
    }
}