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

namespace XF\DevelopmentOutput;

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

class
BbCodeMediaSite extends AbstractHandler
{
    protected function
getTypeDir()
    {
        return
'bb_code_media_sites';
    }

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

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

       
$keys = [
           
'site_title',
           
'site_url',
           
'match_urls',
           
'match_is_regex',
           
'match_callback_class',
           
'match_callback_method',
           
'embed_html',
           
'embed_html_callback_class',
           
'embed_html_callback_method',
           
'oembed_enabled',
           
'oembed_api_endpoint',
           
'oembed_url_scheme',
           
'oembed_retain_scripts',
           
'supported',
           
'active'
       
];
       
$json = $this->pullEntityKeys($mediaSite, $keys);

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

    public function
import($name, $addOnId, $contents, array $metadata, array $options = [])
    {
       
$json = json_decode($contents, true);

       
/** @var \XF\Entity\BbCodeMediaSite $mediaSite */
       
$mediaSite = $this->getEntityForImport($name, $addOnId, $json, $options);

        if (isset(
$json['embed_html']))
        {
           
$template = $mediaSite->getMasterTemplate();
           
$template->template = $json['embed_html'];
           
$mediaSite->addCascadedSave($template);
            unset(
$json['embed_html']);
        }

       
$mediaSite->bulkSetIgnore($json);
       
$mediaSite->media_site_id = $name;
       
$mediaSite->addon_id = $addOnId;
       
$mediaSite->save();
       
// this will update the metadata itself

       
return $mediaSite;
    }
}