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
|
<?php
declare( strict_types = 1 );
namespace ModernTimeline\ResultFacade;
use SMW\DIWikiPage;
use SMW\Query\PrintRequest;
use SMWQueryResult;
class ResultSimplifier {
public function newSubjectCollection( SMWQueryResult $result ): SubjectCollection {
$subjects = [];
foreach ( $result->getResults() as $diWikiPage ) {
$subjects[] = $this->newSubject( $diWikiPage, $result->getPrintRequests(), $result );
}
return new SubjectCollection( $subjects );
}
/**
* @param DIWikiPage $resultPage
* @param PrintRequest[] $printRequests
* @param SMWQueryResult $result
* @return Subject
*/
private function newSubject( DIWikiPage $resultPage, array $printRequests, SMWQueryResult $result ): Subject {
$propertyValueCollections = [];
foreach ( $printRequests as $printRequest ) {
$dataItems = $this->newResultArray( $resultPage, $printRequest, $result )->getContent();
$propertyValueCollections[] = new PropertyValueCollection(
$printRequest,
$dataItems === false ? [] : $dataItems
);
}
return new Subject( $resultPage, $propertyValueCollections );
}
/**
* Compat with SMW 3.0
* In 3.1+ do: ResultArray::factory( $resultPage, $printRequest, $result )
*/
private function newResultArray( DIWikiPage $resultPage, PrintRequest $printRequest, SMWQueryResult $result ): \SMWResultArray {
return new \SMWResultArray(
$resultPage,
$printRequest,
$result->getStore(),
method_exists( $result, 'getFieldItemFinder' ) ? $result->getFieldItemFinder() : null
);
}
}
|