summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/ModernTimeline/src/SlidePresenter/SimpleSlidePresenter.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/ModernTimeline/src/SlidePresenter/SimpleSlidePresenter.php')
-rw-r--r--www/wiki/extensions/ModernTimeline/src/SlidePresenter/SimpleSlidePresenter.php40
1 files changed, 40 insertions, 0 deletions
diff --git a/www/wiki/extensions/ModernTimeline/src/SlidePresenter/SimpleSlidePresenter.php b/www/wiki/extensions/ModernTimeline/src/SlidePresenter/SimpleSlidePresenter.php
new file mode 100644
index 00000000..14be23e1
--- /dev/null
+++ b/www/wiki/extensions/ModernTimeline/src/SlidePresenter/SimpleSlidePresenter.php
@@ -0,0 +1,40 @@
+<?php
+
+declare( strict_types = 1 );
+
+namespace ModernTimeline\SlidePresenter;
+
+use ModernTimeline\ResultFacade\Subject;
+use SMW\DataValueFactory;
+use SMW\Query\PrintRequest;
+
+class SimpleSlidePresenter implements SlidePresenter {
+
+ public function getText( Subject $subject ): string {
+ return implode( '<br>', iterator_to_array( $this->getDisplayValues( $subject ) ) );
+ }
+
+ private function getDisplayValues( Subject $subject ) {
+ foreach ( $subject->getPropertyValueCollections() as $propertyValues ) {
+ foreach ( $propertyValues->getDataItems() as $dataItem ) {
+ yield $this->getDisplayValue( $propertyValues->getPrintRequest(), $dataItem );
+ }
+ }
+ }
+
+ private function getDisplayValue( PrintRequest $pr, \SMWDataItem $dataItem ) {
+ $property = $pr->getText( null );
+ $value = $this->dataItemToText( $dataItem );
+
+ if ( $property === '' ) {
+ return $value;
+ }
+
+ return $property . ': ' . $value;
+ }
+
+ private function dataItemToText( \SMWDataItem $dataItem ): string {
+ return DataValueFactory::getInstance()->newDataValueByItem( $dataItem )->getLongHTMLText();
+ }
+
+}