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

namespace XF\DevelopmentOutput;

use
XF\Mvc\Entity\Entity;

class
Phrase extends AbstractHandler
{
    protected function
getTypeDir()
    {
        return
'phrases';
    }
   
    public function
export(Entity $phrase)
    {
        if (!
$this->isRelevant($phrase))
        {
            return
true;
        }

       
$fileName = $this->getFileName($phrase);
       
$metadata = [
           
'global_cache' => $phrase->global_cache,
           
'version_id' => $phrase->version_id,
           
'version_string' => $phrase->version_string
       
];

        return
$this->developmentOutput->writeFile($this->getTypeDir(), $phrase->addon_id, $fileName, $phrase->phrase_text, $metadata);
    }

    protected function
getEntityForImport($name, $addOnId, $json, array $options)
    {
       
$phrase = \XF::em()->getFinder('XF:Phrase')->where('title', $name)->where('language_id', 0)->fetchOne();
        if (!
$phrase)
        {
           
$phrase = \XF::em()->create('XF:Phrase');
        }

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

        return
$phrase;
    }

    public function
import($name, $addOnId, $contents, array $metadata, array $options = [])
    {
       
$phrase = $this->getEntityForImport($name, $addOnId, null, $options);
       
$phrase->setOption('check_duplicate', false);

       
$phrase->title = $name;
       
$phrase->language_id = 0;
       
$phrase->addon_id = $addOnId;
       
$phrase->phrase_text = $contents;

        if (isset(
$metadata['global_cache']))
        {
           
$phrase->global_cache = $metadata['global_cache'];
        }

       
// ignoring the meta version can be used when you want to just
        // update the version naturally if needed; requires writing back to the
        // dev output so import mode must be disabled
       
if (empty($options['ignore_meta_version']))
        {
            if (isset(
$metadata['version_id']))
            {
               
$phrase->version_id = $metadata['version_id'];
            }
            if (isset(
$metadata['version_string']))
            {
               
$phrase->version_string = $metadata['version_string'];
            }
        }

       
$phrase->save();
       
// this will update the metadata itself

       
return $phrase;
    }

    protected function
isRelevant(Entity $entity, $new = true)
    {
       
$languageId = $new ? $entity->getValue('language_id') : $entity->getExistingValue('language_id');
        return
parent::isRelevant($entity, $new) && !$languageId;
    }

    public function
getFileName(Entity $phrase, $new = true)
    {
       
$title = $new ? $phrase->getValue('title') : $phrase->getExistingValue('title');
        return
$title . '.txt';
    }
}