Seditio Source
Root |
./othercms/xenForo 2.2.8/src/XF/DevelopmentOutput/TemplateModification.php
<?php

namespace XF\DevelopmentOutput;

use
XF\Mvc\Entity\Entity;
use
XF\Util\Json;

class
TemplateModification extends AbstractHandler
{
    protected function
getTypeDir()
    {
        return
'template_modifications';
    }

    public function
export(Entity $modification)
    {
        if (!
$this->isRelevant($modification))
        {
            return
true;
        }

       
$fileName = $this->getFileName($modification);

       
$json = [
           
'template' => $modification->template,
           
'description' => $modification->description,
           
'execution_order' => $modification->execution_order,
           
'enabled' => $modification->enabled,
           
'action' => $modification->action,
           
'find' => $modification->find,
           
'replace' => $modification->replace
       
];

        return
$this->developmentOutput->writeFile($this->getTypeDir(), $modification->addon_id, $fileName, Json::jsonEncodePretty($json));
    }

    protected function
getEntityForImport($name, $addOnId, $json, array $options)
    {
        list(
$type, $modKey) = explode('/', $name, 2);

       
$modification = \XF::em()->getFinder('XF:TemplateModification')->where('modification_key', $modKey)->fetchOne();
        if (!
$modification)
        {
           
$modification = \XF::em()->create('XF:TemplateModification');
        }

       
$modification = $this->prepareEntityForImport($modification, $options);

        return
$modification;
    }

    public function
import($name, $addOnId, $contents, array $metadata, array $options = [])
    {
        list(
$type, $modKey) = explode('/', $name, 2);

       
$json = json_decode($contents);

       
$modification = $this->getEntityForImport($name, $addOnId, $json, $options);

       
$modification->modification_key = $modKey;
       
$modification->type = $type;
       
$modification->template = $json->template;
       
$modification->description = $json->description;
       
$modification->execution_order = $json->execution_order;
       
$modification->enabled = $json->enabled;
       
$modification->action = $json->action;
       
$modification->find = $json->find;
       
$modification->replace = $json->replace;
       
$modification->addon_id = $addOnId;
       
$modification->save();
       
// this will update the metadata itself

       
return $modification;
    }

    protected function
getFileName(Entity $modification, $new = true)
    {
       
$modKey = $new ? $modification->getValue('modification_key') : $modification->getExistingValue('modification_key');
        return
"{$modification->type}/{$modKey}.json";
    }
}