diff options
Diffstat (limited to 'www/wiki/extensions/ModernTimeline/src/SlidePresenter/SimpleSlidePresenter.php')
-rw-r--r-- | www/wiki/extensions/ModernTimeline/src/SlidePresenter/SimpleSlidePresenter.php | 40 |
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(); + } + +} |