Completed
Push — master ( 36e04f...8ec39e )
by Jeroen De
04:55 queued 03:58
created

JsonBuilder::buildEvent()   A

Complexity

Conditions 3
Paths 4

Size

Total Lines 22

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 3.1825

Importance

Changes 0
Metric Value
dl 0
loc 22
ccs 8
cts 11
cp 0.7272
rs 9.568
c 0
b 0
f 0
cc 3
nc 4
nop 1
crap 3.1825
1
<?php
2
3
declare( strict_types = 1 );
4
5
namespace ModernTimeline;
6
7
use ModernTimeline\ResultFacade\SubjectCollection;
8
use ModernTimeline\SlidePresenter\SlidePresenter;
9
use SMWDITime;
10
11
class JsonBuilder {
12
13
	private $slidePresenter;
14
15 3
	public function __construct( SlidePresenter $slidePresenter ) {
16 3
		$this->slidePresenter = $slidePresenter;
17 3
	}
18
19
	/**
20
	 * @param Event[] $events
21
	 * @return array
22
	 */
23 3
	public function eventsToTimelineJson( array $events ): array {
24 3
		$jsonEvents = [];
25
26 3
		foreach ( $events as $event ) {
27 2
			$jsonEvents[] = $this->buildEvent( $event );
28
		}
29
30 3
		return [ 'events' => $jsonEvents ];
31
	}
32
33 2
	public function buildEvent( Event $event ): array {
34
		$jsonEvent = [
35
			'text' => [
36 2
				'headline' => $this->newHeadline( $event->getSubject()->getWikiPage()->getTitle() ),
37 2
				'text' =>  $this->slidePresenter->getText( $event->getSubject() )
38
			],
39 2
			'start_date' => $this->timeToJson( $event->getStartDate() ),
40
		];
41
42 2
		if ( $event->getEndDate() !== null ) {
43 1
			$jsonEvent['end_date'] = $this->timeToJson( $event->getEndDate() );
44
		}
45
46 2
		if ( $event->hasImage() ) {
47
			$jsonEvent['media'] = [
48
				'url' => $event->getImageUrl(),
49
				'thumbnail' => $event->getImageUrl()
50
			];
51
		}
52
53 2
		return $jsonEvent;
54
	}
55
56 2
	private function newHeadline( \Title $title ): string {
57 2
		return \Html::element(
58 2
			'a',
59 2
			[ 'href' => $title->getFullURL() ],
60 2
			$title->getText()
61
		);
62
63
//		return DataValueFactory::getInstance()->newDataValueByItem( $subject->getWikiPage() )->getLongHTMLText( smwfGetLinker() );
64
	}
65
66 2
	private function timeToJson( SMWDITime $time ): array {
67
		return [
68 2
			'year' => $time->getYear(),
69 2
			'month' => $time->getMonth(),
70 2
			'day' => $time->getDay(),
71 2
			'hour' => $time->getHour(),
72 2
			'minute' => $time->getMinute(),
73 2
			'second' => (int)$time->getSecond(),
74
		];
75
	}
76
77
}
78