Passed
Push — master ( 0c15ec...cd3ff1 )
by Timo
16:18
created

AbstractSolrTask::__sleep()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 7
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 4
nc 1
nop 0
1
<?php
2
namespace ApacheSolrForTypo3\Solr\Task;
3
4
/***************************************************************
5
 *  Copyright notice
6
 *
7
 *  (c) 2017 Timo Hund <[email protected]>
8
 *  All rights reserved
9
 *
10
 *  This script is part of the TYPO3 project. The TYPO3 project is
11
 *  free software; you can redistribute it and/or modify
12
 *  it under the terms of the GNU General Public License as published by
13
 *  the Free Software Foundation; either version 2 of the License, or
14
 *  (at your option) any later version.
15
 *
16
 *  The GNU General Public License can be found at
17
 *  http://www.gnu.org/copyleft/gpl.html.
18
 *
19
 *  This script is distributed in the hope that it will be useful,
20
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
21
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22
 *  GNU General Public License for more details.
23
 *
24
 *  This copyright notice MUST APPEAR in all copies of the script!
25
 ***************************************************************/
26
27
use ApacheSolrForTypo3\Solr\Domain\Site\SiteRepository;
28
use ApacheSolrForTypo3\Solr\Site;
29
use TYPO3\CMS\Core\Utility\GeneralUtility;
30
use TYPO3\CMS\Scheduler\Task\AbstractTask;
31
32
/**
33
 * Abstract scheduler task for solr scheduler tasks, contains the logic to
34
 * retrieve the site, avoids serialization of site, when scheduler task is saved.
35
 *
36
 * @package ApacheSolrForTypo3\Solr\Task
37
 */
38
abstract class AbstractSolrTask extends AbstractTask {
39
    /**
40
     * The site this task is supposed to initialize the index queue for.
41
     *
42
     * @var Site
43
     */
44
    protected $site;
45
46
    /**
47
     * The rootPageId of the site that should be reIndexed
48
     *
49
     * @var integer
50
     */
51
    protected $rootPageId;
52
53
    /**
54
     * @return int
55
     */
56
    public function getRootPageId()
57
    {
58
        return $this->rootPageId;
59
    }
60
61
    /**
62
     * @param int $rootPageId
63
     */
64
    public function setRootPageId($rootPageId)
65
    {
66
        $this->rootPageId = $rootPageId;
67
    }
68
69
    /**
70
     * @deprecated Use setRootPageId() with rootPageId of the site instead, will be removed in 8.0
71
     * @param Site $site
72
     */
73
    public function setSite(Site $site)
74
    {
75
        $this->site = $site;
76
        $this->rootPageId = $site->getRootPageId();
77
    }
78
79
    /**
80
     * @return Site
81
     */
82
    public function getSite()
83
    {
84
        if (!is_null($this->site)) {
85
            return $this->site;
86
        }
87
            /** @var $siteRepository SiteRepository */
88
        $siteRepository = GeneralUtility::makeInstance(SiteRepository::class);
89
        $this->site = $siteRepository->getSiteByRootPageId($this->rootPageId);
90
91
        return $this->site;
92
    }
93
94
    /**
95
     * @return array
96
     */
97
    public function __sleep()
98
    {
99
        $properties = get_object_vars($this);
100
        // avoid serialization if the site object
101
        unset($properties['site']);
102
        return array_keys($properties);
103
    }
104
}