From 704a87ad978488e9db52b03ba4fddd96d30d1918 Mon Sep 17 00:00:00 2001 From: Walter Barrett Date: Tue, 21 Aug 2018 11:46:47 -0400 Subject: [PATCH] Icons: Allow Bridge-specified icons (#788) --- formats/AtomFormat.php | 6 +++++- index.php | 1 + lib/BridgeAbstract.php | 12 +++++++++++- lib/BridgeCard.php | 1 + lib/BridgeInterface.php | 7 +++++++ lib/FeedExpander.php | 4 ++++ lib/FormatAbstract.php | 4 ++-- lib/RssBridge.php | 1 + 8 files changed, 32 insertions(+), 4 deletions(-) diff --git a/formats/AtomFormat.php b/formats/AtomFormat.php index 9bd08bd1..7d69535e 100644 --- a/formats/AtomFormat.php +++ b/formats/AtomFormat.php @@ -18,7 +18,11 @@ class AtomFormat extends FormatAbstract{ $uri = !empty($extraInfos['uri']) ? $extraInfos['uri'] : 'https://github.com/RSS-Bridge/rss-bridge'; $uriparts = parse_url($uri); - $icon = $this->xml_encode($uriparts['scheme'] . '://' . $uriparts['host'] .'/favicon.ico'); + if(!empty($extraInfos['icon'])) { + $icon = $extraInfos['icon']; + } else { + $icon = $this->xml_encode($uriparts['scheme'] . '://' . $uriparts['host'] .'/favicon.ico'); + } $uri = $this->xml_encode($uri); diff --git a/index.php b/index.php index f141d49f..4d59f46d 100644 --- a/index.php +++ b/index.php @@ -126,6 +126,7 @@ try { 'status' => $status, 'uri' => $bridge->getURI(), 'name' => $bridge->getName(), + 'icon' => $bridge->getIcon(), 'parameters' => $bridge->getParameters(), 'maintainer' => $bridge->getMaintainer(), 'description' => $bridge->getDescription() diff --git a/lib/BridgeAbstract.php b/lib/BridgeAbstract.php index 0bd1c7c7..fb7456fd 100644 --- a/lib/BridgeAbstract.php +++ b/lib/BridgeAbstract.php @@ -246,6 +246,15 @@ abstract class BridgeAbstract implements BridgeInterface { return static::NAME; } + public function getIcon(){ + // Return cached icon when bridge is using cached data + if(isset($this->extraInfos)) { + return $this->extraInfos['icon']; + } + + return ''; + } + public function getParameters(){ return static::PARAMETERS; } @@ -262,7 +271,8 @@ abstract class BridgeAbstract implements BridgeInterface { public function getExtraInfos(){ return array( 'name' => $this->getName(), - 'uri' => $this->getURI() + 'uri' => $this->getURI(), + 'icon' => $this->getIcon() ); } diff --git a/lib/BridgeCard.php b/lib/BridgeCard.php index d68e49c0..884b2345 100644 --- a/lib/BridgeCard.php +++ b/lib/BridgeCard.php @@ -201,6 +201,7 @@ This bridge is not fetching its content through a secure connection'; $uri = $bridge->getURI(); $name = $bridge->getName(); + $icon = $bridge->getIcon(); $description = $bridge->getDescription(); $parameters = $bridge->getParameters(); diff --git a/lib/BridgeInterface.php b/lib/BridgeInterface.php index b8f5cf47..d67b99ed 100644 --- a/lib/BridgeInterface.php +++ b/lib/BridgeInterface.php @@ -48,6 +48,13 @@ interface BridgeInterface { */ public function getName(); + /** + * Returns the bridge icon + * + * @return string Bridge icon + */ + public function getIcon(); + /** * Returns the bridge parameters * diff --git a/lib/FeedExpander.php b/lib/FeedExpander.php index 6e1f16ff..d3417a7f 100644 --- a/lib/FeedExpander.php +++ b/lib/FeedExpander.php @@ -205,4 +205,8 @@ abstract class FeedExpander extends BridgeAbstract { public function getName(){ return $this->name ?: parent::getName(); } + + public function getIcon(){ + return $this->icon ?: parent::getIcon(); + } } diff --git a/lib/FormatAbstract.php b/lib/FormatAbstract.php index 46d5e4ab..db8d3dd4 100644 --- a/lib/FormatAbstract.php +++ b/lib/FormatAbstract.php @@ -51,12 +51,12 @@ abstract class FormatAbstract implements FormatInterface { } /** - * Define common informations can be required by formats and set default value for unknow values + * Define common informations can be required by formats and set default value for unknown values * @param array $extraInfos array with know informations (there isn't merge !!!) * @return this */ public function setExtraInfos(array $extraInfos = array()){ - foreach(array('name', 'uri') as $infoName) { + foreach(array('name', 'uri', 'icon') as $infoName) { if(!isset($extraInfos[$infoName])) { $extraInfos[$infoName] = ''; } diff --git a/lib/RssBridge.php b/lib/RssBridge.php index 1d66e737..281e201d 100644 --- a/lib/RssBridge.php +++ b/lib/RssBridge.php @@ -62,6 +62,7 @@ require_once $vendorLibPhpUrlJoin; ->setExtraInfos(array( 'name' => $bridge->getName(), 'uri' => $bridge->getURI(), + 'icon' => $bridge->getIcon(), )) ->display();