Seditio Source
Root |
./othercms/xenForo 2.2.8/src/XF/Import/Data/AbstractEmulatedData.php
<?php

namespace XF\Import\Data;

abstract class
AbstractEmulatedData extends AbstractData
{
   
/**
     * @var EntityEmulator
     */
   
protected $ee;

    protected
$columnMap = [
       
'like_id' => 'reaction_content_id',
       
'like_user_id' => 'reaction_user_id',
       
'like_date' => 'reaction_date'
   
];

    abstract protected function
getEntityShortName();

    protected function
init()
    {
       
$em = $this->em();
       
$structure = $em->getEntityStructure($this->getEntityShortName());

        if (
$this->requiresCustomStructure())
        {
           
$structure = clone $structure;
           
$this->customizeStructure($structure);
        }

       
$this->ee = new EntityEmulator($this, $structure, $em->getValueFormatter());
    }

    protected function
requiresCustomStructure(): bool
   
{
        return
false;
    }

    protected function
customizeStructure(\XF\Mvc\Entity\Structure $structure)
    {

    }

    public function
set($field, $value, array $options = [])
    {
        if (isset(
$this->columnMap[$field]))
        {
           
$field = $this->columnMap[$field];
        }

        return
$this->ee->set($field, $value, $options);
    }

    public function
setDirect($field, $value)
    {
        if (isset(
$this->columnMap[$field]))
        {
           
$field = $this->columnMap[$field];
        }

        return
$this->ee->setDirect($field, $value);
    }

    public function
get($field)
    {
        return
$this->ee->get($field);
    }

    protected function
write($oldId)
    {
        return
$this->ee->insert($oldId, $this->db());
    }

    public function
forceNotEmpty($field, $oldId)
    {
       
$this->setDirect($field, $this->validTextOrDefault($this->$field, $field, $oldId));
    }

    public function
getEntityEmulator()
    {
        return
$this->ee;
    }

    protected function
importedIdFound($oldId, $newId)
    {
       
$this->ee->setPrimaryKey($newId);
    }

    protected function
logIp($ip, $date, array $options = [])
    {
        return
$this->ee->logIp($this->db(), $ip, $date, $options);
    }

    protected function
insertStateRecord($state, $contentDate, array $options = [])
    {
        if (empty(
$options['delete']) && method_exists($this, 'getDeletionLogData'))
        {
           
$options['delete'] = $this->getDeletionLogData();
        }

       
$this->ee->insertStateRecord($this->db(), $state, $contentDate, $options);
    }
}