1
|
|
|
<?php |
2
|
|
|
/** |
3
|
|
|
* (c) Kitodo. Key to digital objects e.V. <[email protected]> |
4
|
|
|
* |
5
|
|
|
* This file is part of the Kitodo and TYPO3 projects. |
6
|
|
|
* |
7
|
|
|
* @license GNU General Public License version 3 or later. |
8
|
|
|
* For the full copyright and license information, please read the |
9
|
|
|
* LICENSE.txt file that was distributed with this source code. |
10
|
|
|
*/ |
11
|
|
|
|
12
|
|
|
namespace Kitodo\Dlf\Controller; |
13
|
|
|
|
14
|
|
|
use Kitodo\Dlf\Domain\Model\Collection; |
15
|
|
|
use Kitodo\Dlf\Domain\Model\Metadata; |
16
|
|
|
use TYPO3\CMS\Core\Utility\GeneralUtility; |
17
|
|
|
use TYPO3\CMS\Core\Utility\MathUtility; |
18
|
|
|
use Kitodo\Dlf\Domain\Repository\MetadataRepository; |
19
|
|
|
use Kitodo\Dlf\Domain\Repository\CollectionRepository; |
20
|
|
|
|
21
|
|
|
/** |
22
|
|
|
* Plugin 'List View' for the 'dlf' extension |
23
|
|
|
* |
24
|
|
|
* @author Sebastian Meyer <[email protected]> |
25
|
|
|
* @author Henrik Lochmann <[email protected]> |
26
|
|
|
* @author Frank Ulrich Weber <[email protected]> |
27
|
|
|
* @package TYPO3 |
28
|
|
|
* @subpackage dlf |
29
|
|
|
* @access public |
30
|
|
|
*/ |
31
|
|
|
class ListViewController extends AbstractController |
32
|
|
|
{ |
33
|
|
|
/** |
34
|
|
|
* @var CollectionRepository |
35
|
|
|
*/ |
36
|
|
|
protected $collectionRepository; |
37
|
|
|
|
38
|
|
|
/** |
39
|
|
|
* @param CollectionRepository $collectionRepository |
40
|
|
|
*/ |
41
|
|
|
public function injectCollectionRepository(CollectionRepository $collectionRepository) |
42
|
|
|
{ |
43
|
|
|
$this->collectionRepository = $collectionRepository; |
44
|
|
|
} |
45
|
|
|
|
46
|
|
|
/** |
47
|
|
|
* @var MetadataRepository |
48
|
|
|
*/ |
49
|
|
|
protected $metadataRepository; |
50
|
|
|
|
51
|
|
|
/** |
52
|
|
|
* @param MetadataRepository $metadataRepository |
53
|
|
|
*/ |
54
|
|
|
public function injectMetadataRepository(MetadataRepository $metadataRepository) |
55
|
|
|
{ |
56
|
|
|
$this->metadataRepository = $metadataRepository; |
57
|
|
|
} |
58
|
|
|
|
59
|
|
|
/** |
60
|
|
|
* @var array $this->searchParams: The current search parameter |
61
|
|
|
* @access protected |
62
|
|
|
*/ |
63
|
|
|
protected $searchParams; |
64
|
|
|
|
65
|
|
|
/** |
66
|
|
|
* The main method of the plugin |
67
|
|
|
* |
68
|
|
|
* @return void |
69
|
|
|
*/ |
70
|
|
|
public function mainAction() |
71
|
|
|
{ |
72
|
|
|
$this->searchParams = $this->getParametersSafely('searchParameter'); |
|
|
|
|
73
|
|
|
|
74
|
|
|
if ($this->searchParams['collection'] && MathUtility::canBeInterpretedAsInteger($this->searchParams['collection'])) { |
75
|
|
|
$collection = $this->collectionRepository->findByUid($this->searchParams['collection']); |
76
|
|
|
} |
77
|
|
|
|
78
|
|
|
$widgetPage = $this->getParametersSafely('@widget_0'); |
79
|
|
|
if (empty($widgetPage)) { |
80
|
|
|
$widgetPage = ['currentPage' => 1]; |
81
|
|
|
} |
82
|
|
|
|
83
|
|
|
// get all sortable metadata records |
84
|
|
|
$sortableMetadata = $this->metadataRepository->findByIsSortable(true); |
|
|
|
|
85
|
|
|
|
86
|
|
|
// get all metadata records to be shown in results |
87
|
|
|
$listedMetadata = $this->metadataRepository->findByIsListed(true); |
|
|
|
|
88
|
|
|
|
89
|
|
|
$solrResults = []; |
90
|
|
|
if (is_array($this->searchParams) && !empty($this->searchParams)) { |
91
|
|
|
$solrResults = $this->documentRepository->findSolrByCollection($collection ? : null, $this->settings, $this->searchParams, $listedMetadata); |
|
|
|
|
92
|
|
|
} |
93
|
|
|
|
94
|
|
|
$documents = $solrResults['documents'] ? : []; |
95
|
|
|
$this->view->assign('documents', $documents); |
96
|
|
|
$rawResults = $solrResults['solrResults']['documents'] ? : []; |
97
|
|
|
$this->view->assign('numResults', count($rawResults)); |
98
|
|
|
$this->view->assign('widgetPage', $widgetPage); |
99
|
|
|
$this->view->assign('lastSearch', $this->searchParams); |
100
|
|
|
|
101
|
|
|
$this->view->assign('sortableMetadata', $sortableMetadata); |
102
|
|
|
$this->view->assign('listedMetadata', $listedMetadata); |
103
|
|
|
} |
104
|
|
|
} |
105
|
|
|
|
Our type inference engine has found a suspicous assignment of a value to a property. This check raises an issue when a value that can be of a mixed type is assigned to a property that is type hinted more strictly.
For example, imagine you have a variable
$accountId
that can either hold an Id object or false (if there is no account id yet). Your code now assigns that value to theid
property of an instance of theAccount
class. This class holds a proper account, so the id value must no longer be false.Either this assignment is in error or a type check should be added for that assignment.