blob: ab5c57ba105786ac8bee19129912797d4518a0f0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
<?php
namespace SRF\Filtered;
use SMWDataValue;
use SMWDIGeoCoord;
use SMWDIWikiPage;
use SMWErrorValue;
use SMWResultArray;
/**
* File holding the SRF_Filtered_Item class
*
* @author Stephan Gambke
* @file
* @ingroup SemanticResultFormats
*/
/**
* The SRF_Filtered_Item class.
*
* @ingroup SemanticResultFormats
*/
class ResultItem {
private $mResultArray;
private $mItemData = [];
private $mQueryPrinter;
/**
* @param SMWResultArray[] $resultArray
* @param Filtered $queryPrinter
*/
public function __construct( array $resultArray, Filtered &$queryPrinter ) {
$this->mResultArray = $resultArray;
$this->mQueryPrinter = $queryPrinter;
}
public function setData( $viewOrFilterId, $data ) {
if ( $data === null ) {
$this->unsetData( $viewOrFilterId );
} else {
$this->mItemData[$viewOrFilterId] = $data;
}
}
public function unsetData( $viewOrFilterId ) {
unset( $this->mItemData[$viewOrFilterId] );
}
public function getData( $viewOrFilterId ) {
return $this->mItemData[$viewOrFilterId];
}
/**
* @return SMWResultArray[]
*/
public function getValue() {
return $this->mResultArray;
}
public function getArrayRepresentation() {
$printouts = [];
$isFirstColumn = true;
foreach ( $this->mResultArray as $field ) {
$printRequest = $field->getPrintRequest();
$values = []; // contains plain text
$formatted = []; // may contain links
$sorted = []; // uses DEFAULTSORT when available
$field->reset();
while ( ( $dataValue = $field->getNextDataValue() ) instanceof SMWDataValue ) {
$dataItem = $dataValue->getDataItem();
if ( $dataItem instanceof SMWDIGeoCoord ) {
$values[] = [ 'lat' => $dataItem->getLatitude(), 'lng' => $dataItem->getLongitude() ];
$sorted[] = $dataItem->getSortKey();
} elseif ( $dataItem instanceof SMWDIWikiPage ) {
$values[] = $dataValue->getShortWikiText();
$sorted[] = $dataItem->getSortKey();
} else {
$values[] = $dataValue->getShortWikiText();
$sorted[] = $dataValue->getShortWikiText();
}
if ( $dataValue instanceof SMWErrorValue ) {
$formatted[] = $dataItem->getSerialization();
} else {
$formatted[] = $dataValue->getShortHTMLText( $this->mQueryPrinter->getLinker( $isFirstColumn ) );
}
}
$printouts[$this->mQueryPrinter->uniqid( $printRequest->getHash() )] = [
'values' => $values,
'formatted values' => $formatted,
'sort values' => $sorted,
];
$isFirstColumn = false;
}
return [
'printouts' => $printouts,
'data' => $this->mItemData,
];
}
}
|