Seditio Source
Root |
./othercms/xenForo 2.2.8/src/XF/DesignerOutput/AbstractHandler.php
<?php

namespace XF\DesignerOutput;

use
XF\DesignerOutput;
use
XF\Mvc\Entity\Entity;

abstract class
AbstractHandler
{
   
/**
     * @var DesignerOutput
     */
   
protected $designerOutput;
    protected
$shortName;

    public function
__construct(DesignerOutput $designerOutput, $shortName)
    {
       
$this->designerOutput = $designerOutput;
       
$this->shortName = $shortName;
    }

    abstract protected function
getTypeDir();
   
    abstract public function
export(Entity $entity);
    abstract protected function
getEntityForImport($name, $styleId, $json, array $options);
    abstract public function
import($name, $styleId, $contents, array $metadata, array $options = []);

    abstract protected function
getFileName(Entity $entity, $new = true);

    public function
delete(Entity $entity, $new = true)
    {
        if (!
$this->isRelevant($entity))
        {
            return
false;
        }

       
$fileName = $this->getFileName($entity, $new);
        return
$this->designerOutput->deleteFile($this->getTypeDir(), $entity->Style, $fileName);
    }

    protected function
isRelevant(Entity $entity)
    {
       
$entityClass = \XF::stringToClass($this->shortName, '%s\Entity\%s');
        return (
$entity instanceof $entityClass);
    }

    protected function
prepareEntityForImport(Entity $entity, array $options)
    {
        if (!empty(
$options['import']))
        {
           
$entity->getBehavior('XF:DesignerOutputWritable')->setOption('write_designer_output', false);
        }
        return
$entity;
    }

    public function
hasNameChange(Entity $entity)
    {
        if (
$entity->isUpdate())
        {
            if (
$this->getFileName($entity, true) !== $this->getFileName($entity, false))
            {
                return
true;
            }
        }

        return
false;
    }
}