summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/ModernTimeline/src/ResultFacade/ResultSimplifier.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/ModernTimeline/src/ResultFacade/ResultSimplifier.php')
-rw-r--r--www/wiki/extensions/ModernTimeline/src/ResultFacade/ResultSimplifier.php57
1 files changed, 57 insertions, 0 deletions
diff --git a/www/wiki/extensions/ModernTimeline/src/ResultFacade/ResultSimplifier.php b/www/wiki/extensions/ModernTimeline/src/ResultFacade/ResultSimplifier.php
new file mode 100644
index 00000000..1c58345a
--- /dev/null
+++ b/www/wiki/extensions/ModernTimeline/src/ResultFacade/ResultSimplifier.php
@@ -0,0 +1,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
+ );
+ }
+
+}