aboutsummaryrefslogtreecommitdiffstats
path: root/include/classes/BigPipe/Resource.php
blob: d5ff21fd8757e1ff02cc5b435ec0b2dcf574601e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?php
#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#
# Abstract Resource representation class     [Thomas Lange <code@nerdmind.de>] #
#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#
#                                                                              #
# [More information coming soon]                                               #
#                                                                              #
#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#
namespace BigPipe;

abstract class Resource extends Item {
	private $type         = '';
	private $resourceURL  = '';

	#===============================================================================
	# Render resource HTML for disabled pipeline
	#===============================================================================
	abstract public function renderHTML(): string;

	#===============================================================================
	# Resource types
	#===============================================================================
	const TYPE_STYLESHEET = 0;
	const TYPE_JAVASCRIPT = 1;

	#===============================================================================
	# Phase numbers for PhaseDoneJS
	#===============================================================================
	const PHASE_INIT = 0; # Resource object has been initialized
	const PHASE_LOAD = 1; # Loading of resource has been started
	const PHASE_DONE = 2; # Loading of resource is done.

	#===============================================================================
	# Build resource
	#===============================================================================
	public function __construct(string $customID, int $type, string $resourceURL) {
		$this->ID = $customID ?? spl_object_hash($this);
		$this->type = $type;
		$this->resourceURL = $resourceURL;

		$this->phaseDoneJS = array_pad($this->phaseDoneJS, 3, []);
	}

	#===============================================================================
	# Return the resource type
	#===============================================================================
	public function getType(): int {
		return $this->type;
	}

	#===============================================================================
	# Return the resource URL
	#===============================================================================
	public function getURL(): string {
		return $this->resourceURL;
	}

	#===============================================================================
	# Return the resource structure
	#===============================================================================
	public function getStructure(): array {
		return [
			'ID' => $this->getID(),
			'HREF' => $this->getURL(),
			'PHASE' => $this->getPhaseDoneJS()
		];
	}
}