Seditio Source
Root |
./othercms/xenForo 2.2.8/src/XF/Behavior/DevOutputWritable.php
<?php

namespace XF\Behavior;

use
XF\Mvc\Entity\Behavior;

class
DevOutputWritable extends Behavior
{
    protected function
getDefaultConfig()
    {
        return [
           
'checkForUpdates' => null
       
];
    }

    protected function
getDefaultOptions()
    {
        return [
           
'write_dev_output' => true
       
];
    }

    protected function
verifyConfig()
    {
       
$checkForUpdates = $this->config['checkForUpdates'];
        if (
$checkForUpdates !== null && !($checkForUpdates instanceof \Closure))
        {
            throw new \
LogicException("Check_for_updates must be a closure if specified");
        }
    }

    public function
postSave()
    {
        if (!
$this->isDevOutputWritable())
        {
            return;
        }

        if (!
$this->isDevOutputUpdateNeeded())
        {
            return;
        }

       
$devOutput = \XF::app()->developmentOutput();
       
$entity = $this->entity;

        if (
$devOutput->hasNameChange($entity))
        {
           
$devOutput->delete($entity, false);
        }

       
$devOutput->export($entity);
    }

    protected function
isDevOutputUpdateNeeded()
    {
        if (
$this->entity->getNewValues())
        {
            return
true;
        }

       
/** @var \Closure|null $checkForUpdates */
       
$checkForUpdates = $this->config['checkForUpdates'];
        if (
$checkForUpdates && $checkForUpdates($this->entity))
        {
            return
true;
        }

        return
false;
    }

    public function
postDelete()
    {
        if (!
$this->isDevOutputWritable())
        {
            return;
        }

        \
XF::app()->developmentOutput()->delete($this->entity);
    }

    public function
isDevOutputWritable()
    {
        return (
           
$this->options['write_dev_output']
            && \
XF::app()->developmentOutput()->isEnabled()
        );
    }
}