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

namespace XF\Job;

use function
is_array;

class
Sitemap extends AbstractJob
{
    protected
$defaultData = [
       
'state' => null
   
];

    public function
run($maxRunTime)
    {
       
$s = microtime(true);

       
$builder = $this->app->sitemapBuilder();
        if (
$this->data['state'] && is_array($this->data['state']))
        {
           
$builder->setupFromJobData($this->data['state']);
        }

       
$timeRemaining = $maxRunTime;

        do
        {
           
$hasMore = $builder->build($timeRemaining);

           
$this->data['state'] = $builder->getDataForJob();
           
$this->saveIncrementalData();

           
// we need to throw away the previous entity cache to prevent potential memory issues
           
$this->app->em()->clearEntityCache();

           
$timeRemaining = $maxRunTime - (microtime(true) - $s);
        }
        while (
$hasMore && $timeRemaining >= 0.5);

        if (!
$hasMore)
        {
            return
$this->complete();
        }

        return
$this->resume();
    }

    public function
getStatusMessage()
    {
       
$actionPhrase = \XF::phrase('rebuilding');
       
$typePhrase = \XF::phrase('sitemap');

       
$state = $this->data['state'];

        if (!empty(
$state['finalizing']))
        {
           
$phrase = \XF::phrase('finalizing');
           
$text = "$phrase - $state[finalize_file]";

            return
sprintf('%s... %s (%s)', $actionPhrase, $typePhrase, $text);
        }

        if (!empty(
$state['current_type']))
        {
           
$contentType = $this->app->getContentTypePhrase($state['current_type'], true);
           
$text = "$contentType $state[last_type_id]";

            return
sprintf('%s... %s (%s)', $actionPhrase, $typePhrase, $text);
        }

        return
sprintf('%s... %s', $actionPhrase, $typePhrase);
    }

    public function
canCancel()
    {
        return
true;
    }

    public function
canTriggerByChoice()
    {
        return
true;
    }
}