aboutsummaryrefslogtreecommitdiffstats
path: root/include/classes/BigPipe
diff options
context:
space:
mode:
Diffstat (limited to 'include/classes/BigPipe')
-rwxr-xr-xinclude/classes/BigPipe/BigPipe.php22
-rw-r--r--include/classes/BigPipe/Item.php5
-rwxr-xr-xinclude/classes/BigPipe/Pagelet.php24
-rwxr-xr-xinclude/classes/BigPipe/Resource.php7
4 files changed, 37 insertions, 21 deletions
diff --git a/include/classes/BigPipe/BigPipe.php b/include/classes/BigPipe/BigPipe.php
index 2989a75..ab8c8f7 100755
--- a/include/classes/BigPipe/BigPipe.php
+++ b/include/classes/BigPipe/BigPipe.php
@@ -64,27 +64,7 @@ class BigPipe {
usleep(rand(125, 175) * 2000);
}
- $stylesheets = [];
- $javascripts = [];
-
- foreach($Pagelet->getResources()[Resource::TYPE_STYLESHEET] as $Resource) {
- $stylesheets[] = ['ID' => $Resource->getID(), 'HREF' => $Resource->getURL(), 'PHASE' => $Resource->getPhaseDoneJS()];
- }
-
- foreach($Pagelet->getResources()[Resource::TYPE_JAVASCRIPT] as $Resource) {
- $javascripts[] = ['ID' => $Resource->getID(), 'HREF' => $Resource->getURL(), 'PHASE' => $Resource->getPhaseDoneJS()];
- }
-
- $pageletJSON = [
- 'ID' => $Pagelet->getID(),
- 'NEED' => $Pagelet->getDependencies(),
- 'RSRC' => [
- Resource::TYPE_STYLESHEET => $stylesheets,
- Resource::TYPE_JAVASCRIPT => $javascripts,
- ],
- 'CODE' => removeLineBreaksAndTabs($Pagelet->getJSCode()),
- 'PHASE' => $Pagelet->getPhaseDoneJS()
- ];
+ $pageletJSON = $Pagelet->getStructure();
if($last) {
$pageletJSON['IS_LAST'] = TRUE;
diff --git a/include/classes/BigPipe/Item.php b/include/classes/BigPipe/Item.php
index 5edf9c8..9c66eb9 100644
--- a/include/classes/BigPipe/Item.php
+++ b/include/classes/BigPipe/Item.php
@@ -15,6 +15,11 @@ abstract class Item {
protected $phaseDoneJS = [];
#===============================================================================
+ # Required methods in child classes
+ #===============================================================================
+ abstract public function getStructure(): array;
+
+ #===============================================================================
# Return the unique ID
#===============================================================================
public function getID() {
diff --git a/include/classes/BigPipe/Pagelet.php b/include/classes/BigPipe/Pagelet.php
index 664883a..ae465ab 100755
--- a/include/classes/BigPipe/Pagelet.php
+++ b/include/classes/BigPipe/Pagelet.php
@@ -124,6 +124,30 @@ class Pagelet extends Item {
}
#===============================================================================
+ # Return the pagelet structure
+ #===============================================================================
+ public function getStructure(): array {
+ foreach($this->getResources()[Resource::TYPE_STYLESHEET] as $Resource) {
+ $stylesheets[] = $Resource->getStructure();
+ }
+
+ foreach($this->getResources()[Resource::TYPE_JAVASCRIPT] as $Resource) {
+ $javascripts[] = $Resource->getStructure();
+ }
+
+ return [
+ 'ID' => $this->getID(),
+ 'NEED' => $this->getDependencies(),
+ 'RSRC' => [
+ Resource::TYPE_STYLESHEET => $stylesheets ?? [],
+ Resource::TYPE_JAVASCRIPT => $javascripts ?? []
+ ],
+ 'CODE' => removeLineBreaksAndTabs($this->getJSCode()),
+ 'PHASE' => $this->getPhaseDoneJS()
+ ];
+ }
+
+ #===============================================================================
# Magic method: __toString()
#===============================================================================
public function __toString() {
diff --git a/include/classes/BigPipe/Resource.php b/include/classes/BigPipe/Resource.php
index 438b83c..4711d48 100755
--- a/include/classes/BigPipe/Resource.php
+++ b/include/classes/BigPipe/Resource.php
@@ -55,5 +55,12 @@ abstract class Resource extends Item {
public function getURL() {
return $this->resourceURL;
}
+
+ #===============================================================================
+ # Return the resource structure
+ #===============================================================================
+ public function getStructure(): array {
+ return ['ID' => $this->getID(), 'HREF' => $this->getURL(), 'PHASE' => $this->getPhaseDoneJS()];
+ }
}
?> \ No newline at end of file