SolrReindexQueuedJobBase::getJobData()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 13
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 7
nc 2
nop 0
dl 0
loc 13
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace SilverStripe\FullTextSearch\Solr\Reindex\Jobs;
4
5
use Monolog\Logger;
6
use Psr\Log\LoggerInterface;
7
use SilverStripe\Core\Injector\Injector;
8
use SilverStripe\FullTextSearch\Solr\Reindex\Handlers\SolrReindexHandler;
9
use SilverStripe\FullTextSearch\Utils\Logging\SearchLogFactory;
10
use stdClass;
11
use Symbiote\QueuedJobs\Services\QueuedJob;
0 ignored issues
show
Bug introduced by
The type Symbiote\QueuedJobs\Services\QueuedJob was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
12
13
if (!interface_exists(QueuedJob::class)) {
14
    return;
15
}
16
17
/**
18
 * Base class for jobs which perform re-index
19
 */
20
abstract class SolrReindexQueuedJobBase implements QueuedJob
21
{
22
    /**
23
     * Flag whether this job is done
24
     *
25
     * @var bool
26
     */
27
    protected $isComplete;
28
29
    /**
30
     * List of messages
31
     *
32
     * @var array
33
     */
34
    protected $messages;
35
36
    /**
37
     * Logger to use for this job
38
     *
39
     * @var LoggerInterface
40
     */
41
    protected $logger;
42
43
    public function __construct()
44
    {
45
        $this->isComplete = false;
46
        $this->messages = array();
47
    }
48
49
    /**
50
     * @return SearchLogFactory
51
     */
52
    protected function getLoggerFactory()
53
    {
54
        return Injector::inst()->get(SearchLogFactory::class);
55
    }
56
57
    /**
58
     * Gets a logger for this job
59
     *
60
     * @return LoggerInterface
61
     */
62
    protected function getLogger()
63
    {
64
        if ($this->logger) {
65
            return $this->logger;
66
        }
67
68
        // Set logger for this job
69
        $this->logger = $this
70
            ->getLoggerFactory()
71
            ->getQueuedJobLogger($this);
72
        return $this->logger;
73
    }
74
75
    /**
76
     * Assign custom logger for this job
77
     *
78
     * @param LoggerInterface $logger
79
     */
80
    public function setLogger($logger)
81
    {
82
        $this->logger = $logger;
83
    }
84
85
    public function getJobData()
86
    {
87
        $data = new stdClass();
88
89
        // Standard fields
90
        $data->totalSteps = 1;
91
        $data->currentStep = $this->isComplete ? 0 : 1;
92
        $data->isComplete = $this->isComplete;
93
        $data->messages = $this->messages;
94
95
        // Custom data
96
        $data->jobData = new stdClass();
97
        return $data;
98
    }
99
100
    public function setJobData($totalSteps, $currentStep, $isComplete, $jobData, $messages)
101
    {
102
        $this->isComplete = $isComplete;
103
        $this->messages = $messages;
104
    }
105
106
    /**
107
     * Get the reindex handler
108
     *
109
     * @return SolrReindexHandler
110
     */
111
    protected function getHandler()
112
    {
113
        return Injector::inst()->get(SolrReindexHandler::class);
114
    }
115
116
    public function jobFinished()
117
    {
118
        return $this->isComplete;
119
    }
120
121
    public function prepareForRestart()
122
    {
123
        // NOOP
124
    }
125
126
    public function setup()
127
    {
128
        // NOOP
129
    }
130
131
    public function afterComplete()
132
    {
133
        // NOOP
134
    }
135
136
    public function getJobType()
137
    {
138
        return QueuedJob::QUEUED;
139
    }
140
141
    public function getSignature()
142
    {
143
        return sha1(get_class($this) . time() . mt_rand(0, 100000));
144
    }
145
146
    public function addMessage($message)
147
    {
148
        $this->messages[] = $message;
149
    }
150
}
151