Seditio Source
Root |
./othercms/xenForo 2.2.8/src/XF/Job/Upgrade/StyleProperty200.php
<?php

namespace XF\Job\Upgrade;

use
XF\Job\AbstractJob;

use function
intval, is_array;

class
StyleProperty200 extends AbstractJob
{
    protected
$defaultData = [
       
'properties' => []
    ];

    public function
run($maxRunTime)
    {
        if (!
$this->data['properties'] || !is_array($this->data['properties']))
        {
            return
$this->complete();
        }

       
/** @var \XF\Entity\StyleProperty[] $properties */
       
$properties = $this->app->finder('XF:StyleProperty')
            ->
where('style_id', 0)
            ->
keyedBy('property_name')
            ->
fetch();

       
/** @var \XF\Entity\Style[] $styles */
       
$styles = $this->app->finder('XF:Style')->fetch();

       
$this->app->db()->beginTransaction();

        foreach (
$this->data['properties'] AS $styleId => $propertyMap)
        {
           
$styleId = intval($styleId);
            if (
$styleId < 1 || !is_array($propertyMap) || !isset($styles[$styleId]))
            {
                continue;
            }

           
$style = $styles[$styleId];

            foreach (
$propertyMap AS $propertyName => $value)
            {
                if (!isset(
$properties[$propertyName]))
                {
                    continue;
                }

               
$property = $properties[$propertyName]->getPropertyCopyInStyle($style);
                if (
$property->updatePropertyValue($value))
                {
                   
$property->save(false, true);
                }
            }
        }

       
$this->app->db()->commit();

        return
$this->complete();
    }

    public function
getStatusMessage()
    {
        return
'Converting legacy style properties...';
    }

    public function
canCancel()
    {
        return
false;
    }

    public function
canTriggerByChoice()
    {
        return
false;
    }
}