Completed
Push — EZP-25088-search-handler-inter... ( f8bc81...730b47 )
by
unknown
23:29 queued 55s
created

Recover::receive()   C

Complexity

Conditions 7
Paths 7

Size

Total Lines 30
Code Lines 16

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 7
eloc 16
c 1
b 0
f 0
nc 7
nop 1
dl 0
loc 30
rs 6.7272
1
<?php
2
3
/**
4
 * This file is part of the eZ Publish Kernel package.
5
 *
6
 * @copyright Copyright (C) eZ Systems AS. All rights reserved.
7
 * @license For full copyright and license information view LICENSE file distributed with this source code.
8
 *
9
 * @version //autogentag//
10
 */
11
namespace eZ\Publish\Core\Search\Common\Slot;
12
13
use eZ\Publish\Core\SignalSlot\Signal;
14
use eZ\Publish\Core\Search\Common\Slot;
15
use eZ\Publish\SPI\Search\Indexer;
16
use eZ\Publish\SPI\Search\Indexer\ContentIndexer;
17
use eZ\Publish\SPI\Search\Indexer\FullTextIndexer;
18
use eZ\Publish\SPI\Search\Indexer\LocationIndexer;
19
20
/**
21
 * A Search Engine slot handling RecoverSignal.
22
 */
23
class Recover extends Slot
24
{
25
    /**
26
     * Receive the given $signal and react on it.
27
     *
28
     * @param \eZ\Publish\Core\SignalSlot\Signal $signal
29
     */
30
    public function receive(Signal $signal)
31
    {
32
        if (!$signal instanceof Signal\TrashService\RecoverSignal) {
33
            return;
34
        }
35
36
        if (!$this->searchHandler instanceof Indexer) {
37
            return;
38
        }
39
40
        $contentHandler = $this->persistenceHandler->contentHandler();
41
        $subtreeIds = $this->persistenceHandler->locationHandler()->loadSubtreeIds(
42
            $signal->newLocationId
43
        );
44
45
        foreach ($subtreeIds as $contentId) {
46
            if ($this->searchHandler instanceof ContentIndexer || $this->searchHandler instanceof FullTextIndexer) {
47
                $contentInfo = $contentHandler->loadContentInfo($contentId);
48
                $this->searchHandler->indexContent(
49
                    $contentHandler->load($contentInfo->id, $contentInfo->currentVersionNo)
50
                );
51
            }
52
53
            if ($this->searchHandler instanceof LocationIndexer) {
54
                $this->searchHandler->indexLocation(
55
                    $this->persistenceHandler->locationHandler()->load($signal->newLocationId)
56
                );
57
            }
58
        }
59
    }
60
}
61