Seditio Source
Root |
./othercms/xenForo 2.2.8/src/XF/Service/Style/Rebuild.php
<?php

namespace XF\Service\Style;

class
Rebuild extends \XF\Service\AbstractService
{
   
/**
     * @var \XF\Tree
     */
   
protected $styleTree;

    protected function
setupStyleTree()
    {
        if (
$this->styleTree)
        {
            return;
        }

       
/** @var \XF\Repository\Style $repo */
       
$repo = $this->app->em()->getRepository('XF:Style');
       
$this->styleTree = $repo->getStyleTree(false);
    }

    public function
rebuildFullParentList()
    {
       
$this->setupStyleTree();

       
$this->db()->beginTransaction();
       
$this->_rebuildParentList(0, []);
       
$this->db()->commit();
    }

    protected function
_rebuildParentList($id, array $path)
    {
       
array_unshift($path, $id);

       
/** @var \XF\Entity\Style $style */
       
$style = $this->styleTree->getData($id);
        if (
$style)
        {
            if (
$path != $style->parent_list)
            {
               
$style->fastUpdate('parent_list', $path);
            }
        }

        foreach (
$this->styleTree->childIds($id) AS $childId)
        {
           
$this->_rebuildParentList($childId, $path);
        }
    }
}