Completed
Push — master ( 2623ee...a82f7c )
by Jeroen De
06:13 queued 04:44
created

JsonBuilder   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 63
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 7
lcom 1
cbo 3
dl 0
loc 63
ccs 27
cts 27
cp 1
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A eventsToTimelineJson() 0 9 2
A buildEvent() 0 18 2
A newHeadline() 0 9 1
A timeToJson() 0 10 1
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 9
	public function __construct( SlidePresenter $slidePresenter ) {
16 9
		$this->slidePresenter = $slidePresenter;
17 9
	}
18
19
	/**
20
	 * @param Event[] $events
21
	 * @return array
22
	 */
23 9
	public function eventsToTimelineJson( array $events ): array {
24 9
		$jsonEvents = [];
25
26 9
		foreach ( $events as $event ) {
27 8
			$jsonEvents[] = $this->buildEvent( $event );
28
		}
29
30 9
		return [ 'events' => $jsonEvents ];
31
	}
32
33 8
	public function buildEvent( Event $event ): array {
34
		$jsonEvent = [
35
			'text' => [
36 8
				'headline' => $this->newHeadline( $event->getSubject()->getWikiPage()->getTitle() ),
37 8
				'text' =>  $this->slidePresenter->getText( $event->getSubject() )
38
			],
39 8
			'start_date' => $this->timeToJson( $event->getStartDate() ),
40
//			'media' => [
41
//				'thumbnail' => 'http://default.web.mw.localhost:8080/mediawiki/images/docker/default/3/35/Media.png'
42
//			]
43
		];
44
45 8
		if ( $event->getEndDate() !== null ) {
46 6
			$jsonEvent['end_date'] = $this->timeToJson( $event->getEndDate() );
47
		}
48
49 8
		return $jsonEvent;
50
	}
51
52 8
	private function newHeadline( \Title $title ): string {
53 8
		return \Html::element(
54 8
			'a',
55 8
			[ 'href' => $title->getFullURL() ],
56 8
			$title->getText()
57
		);
58
59
//		return DataValueFactory::getInstance()->newDataValueByItem( $subject->getWikiPage() )->getLongHTMLText( smwfGetLinker() );
60
	}
61
62 8
	private function timeToJson( SMWDITime $time ): array {
63
		return [
64 8
			'year' => $time->getYear(),
65 8
			'month' => $time->getMonth(),
66 8
			'day' => $time->getDay(),
67 8
			'hour' => $time->getHour(),
68 8
			'minute' => $time->getMinute(),
69 8
			'second' => (int)$time->getSecond(),
70
		];
71
	}
72
73
}
74