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

namespace XF\DevelopmentOutput;

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

class
MemberStat extends AbstractHandler
{
    protected function
getTypeDir()
    {
        return
'member_stats';
    }

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

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

       
$keys = [
           
'criteria',
           
'sort_order',
           
'sort_direction',
           
'permission_limit',
           
'callback_class',
           
'callback_method',
           
'visibility_class',
           
'visibility_method',
           
'show_value',
           
'overview_display',
           
'active',
           
'user_limit',
           
'display_order',
           
'cache_lifetime'
       
];
       
$json = $this->pullEntityKeys($memberStat, $keys);

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

    protected function
getEntityForImport($name, $addOnId, $json, array $options)
    {
       
/** @var \XF\Entity\MemberStat $memberStat */
       
$memberStat = \XF::finder('XF:MemberStat')->where('member_stat_key', $name)->fetchOne();
        if (!
$memberStat)
        {
           
$memberStat = \XF::em()->create('XF:MemberStat');
        }

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

        return
$memberStat;
    }

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

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

        if (
$memberStat->exists())
        {
           
// persist the active state in case it is already set elsewhere
           
$json['active'] = $memberStat->active;
        }

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

       
return $memberStat;
    }

    protected function
getFileName(Entity $memberStat, $new = true)
    {
       
$id = $new ? $memberStat->getValue('member_stat_key') : $memberStat->getExistingValue('member_stat_key');
        return
"{$id}.json";
    }
}