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

namespace XF\Import\Data;

/**
 * Class Node
 *
 * @package XF\Import\Data
 *
 * COLUMNS
 * @property int|null node_id
 * @property string title
 * @property string|null node_name
 * @property string description
 * @property string node_type_id
 * @property int parent_node_id
 * @property int display_order
 * @property int lft
 * @property int rgt
 * @property int depth
 * @property int style_id
 * @property int effective_style_id
 * @property bool display_in_list
 * @property array breadcrumb_data
 * @property string navigation_id
 * @property string effective_navigation_id
 */
class Node extends AbstractEmulatedData
{
   
/**
     * @var AbstractNode|null
     */
   
protected $typeData;

    public function
getImportType()
    {
        return
'node';
    }

    public function
getEntityShortName()
    {
        return
'XF:Node';
    }

    public function
setType($nodeTypeId, AbstractNode $typeData)
    {
       
$this->node_type_id = $nodeTypeId;
       
$this->typeData = $typeData;

        return
$this;
    }

    protected function
preSave($oldId)
    {
       
$this->forceNotEmpty('title', $oldId);

        if (!
$this->typeData)
        {
            throw new \
LogicException("Must provide a node type and data");
        }
    }

    protected function
postSave($oldId, $newId)
    {
       
$this->typeData->node_id = $newId;
       
$this->typeData->save($oldId);

        \
XF::runOnce('nodeImport', function()
        {
           
/** @var \XF\Service\Node\RebuildNestedSet $service */
           
$service = \XF::service('XF:Node\RebuildNestedSet', 'XF:Node', [
               
'parentField' => 'parent_node_id'
           
]);
           
$service->rebuildNestedSetInfo();
        });
    }
}