From c1c2a305591696c9ad7491ffc20eca83ac5b4766 Mon Sep 17 00:00:00 2001 From: Bocki Date: Tue, 4 May 2021 14:52:03 +0200 Subject: [PATCH 1/5] [Core] Support for donation URLs --- actions/DisplayAction.php | 1 + actions/ListAction.php | 1 + config.default.ini.php | 7 +++++++ formats/HtmlFormat.php | 7 +++++++ lib/BridgeAbstract.php | 12 ++++++++++++ lib/BridgeCard.php | 11 ++++++++++- lib/BridgeInterface.php | 7 +++++++ lib/BridgeList.php | 7 ++++++- lib/Configuration.php | 3 +++ lib/FormatAbstract.php | 2 +- static/HtmlFormat.css | 7 +++++++ 11 files changed, 62 insertions(+), 3 deletions(-) diff --git a/actions/DisplayAction.php b/actions/DisplayAction.php index 16a67d54551..5db92b386a7 100644 --- a/actions/DisplayAction.php +++ b/actions/DisplayAction.php @@ -151,6 +151,7 @@ public function execute() { $infos = array( 'name' => $bridge->getName(), 'uri' => $bridge->getURI(), + 'donationUri' => $bridge->getDonationURI(), 'icon' => $bridge->getIcon() ); } catch(Error $e) { diff --git a/actions/ListAction.php b/actions/ListAction.php index 92aef0e0f5e..f3509564e2c 100644 --- a/actions/ListAction.php +++ b/actions/ListAction.php @@ -39,6 +39,7 @@ public function execute() { $list->bridges[$bridgeName] = array( 'status' => $status, 'uri' => $bridge->getURI(), + 'donationUri' => $bridge->getDonationURI(), 'name' => $bridge->getName(), 'icon' => $bridge->getIcon(), 'parameters' => $bridge->getParameters(), diff --git a/config.default.ini.php b/config.default.ini.php index 7d0bdaaa456..0660089212a 100644 --- a/config.default.ini.php +++ b/config.default.ini.php @@ -29,6 +29,13 @@ ; "" = Disabled (default) email = "" +; Show Donation information for bridges if available. +; This will display a 'Donate' link on the bridge view +; and a "Donate" button in the HTML view of the bridges feed. +; true = enabled (default) +; false = disabled +donations = true + [proxy] ; Sets the proxy url (i.e. "tcp://192.168.0.0:32") diff --git a/formats/HtmlFormat.php b/formats/HtmlFormat.php index ee60418dd64..9f76b9e6acd 100644 --- a/formats/HtmlFormat.php +++ b/formats/HtmlFormat.php @@ -6,6 +6,8 @@ public function stringify(){ $extraInfos = $this->getExtraInfos(); $title = htmlspecialchars($extraInfos['name']); $uri = htmlspecialchars($extraInfos['uri']); + $donationUri = htmlspecialchars($extraInfos['donationUri']); + $donationsAllowed = Configuration::getConfig('admin', 'donations'); // Dynamically build buttons for all formats (except HTML) $formatFac = new FormatFactory(); @@ -26,6 +28,11 @@ public function stringify(){ $links .= $this->buildLink($format, $query, $mime) . PHP_EOL; } + if($donationUri !== '' && $donationsAllowed) { + $buttons .= '' . PHP_EOL; + $links .= '' . PHP_EOL; + } + $entries = ''; foreach($this->getItems() as $item) { $entryAuthor = $item->getAuthor() ? '

by: ' . $item->getAuthor() . '

' : ''; diff --git a/lib/BridgeAbstract.php b/lib/BridgeAbstract.php index ee885bf9840..49d04cc71e2 100644 --- a/lib/BridgeAbstract.php +++ b/lib/BridgeAbstract.php @@ -40,6 +40,13 @@ abstract class BridgeAbstract implements BridgeInterface { */ const URI = ''; + /** + * Donation URI to the site the bridge is intended to be used for. + * + * Use {@see BridgeAbstract::getDonationURI()} to read this parameter + */ + const DONATION_URI = ''; + /** * A brief description of what the bridge can do * @@ -336,6 +343,11 @@ public function getURI(){ return static::URI; } + /** {@inheritdoc} */ + public function getDonationURI(){ + return static::DONATION_URI; + } + /** {@inheritdoc} */ public function getCacheTimeout(){ return static::CACHE_TIMEOUT; diff --git a/lib/BridgeCard.php b/lib/BridgeCard.php index 69c67bc4abd..9b810358407 100644 --- a/lib/BridgeCard.php +++ b/lib/BridgeCard.php @@ -322,6 +322,10 @@ static function displayBridgeCard($bridgeName, $formats, $isActive = true){ $icon = $bridge->getIcon(); $description = $bridge->getDescription(); $parameters = $bridge->getParameters(); + $donationUri = $bridge->getDonationURI(); + $maintainer = $bridge->getMaintainer(); + + $donationsAllowed = Configuration::getConfig('admin', 'donations'); if(defined('PROXY_URL') && PROXY_BYBRIDGE) { $parameters['global']['_noproxy'] = array( @@ -372,7 +376,12 @@ static function displayBridgeCard($bridgeName, $formats, $isActive = true){ } $card .= ''; - $card .= '

' . $bridge->getMaintainer() . '

'; + if($donationUri !== '' && $donationsAllowed){ + $card .= '

' . $maintainer . ' ~ Donate

'; + } + else { + $card .= '

' . $maintainer . '

'; + } $card .= ''; return $card; diff --git a/lib/BridgeInterface.php b/lib/BridgeInterface.php index e9309dbf7e8..706251253a0 100644 --- a/lib/BridgeInterface.php +++ b/lib/BridgeInterface.php @@ -120,6 +120,13 @@ public function getParameters(); */ public function getURI(); + /** + * Returns the bridge Donation URI + * + * @return string Bridge Donation URI + */ + public function getDonationURI(); + /** * Returns the cache timeout * diff --git a/lib/BridgeList.php b/lib/BridgeList.php index 7b2d5268729..893dd4c0022 100644 --- a/lib/BridgeList.php +++ b/lib/BridgeList.php @@ -154,6 +154,7 @@ private static function getSearchbar() { private static function getFooter($totalBridges, $totalActiveBridges, $showInactive) { $version = Configuration::getVersion(); + $donationsAllowed = Configuration::getConfig('admin', 'donations'); $email = Configuration::getConfig('admin', 'email'); $admininfo = ''; if (!empty($email)) { @@ -178,10 +179,14 @@ private static function getFooter($totalBridges, $totalActiveBridges, $showInact } + if($donationsAllowed){ + $donation = ' ~ Donate'; + } + return << RSS-Bridge ~ Public Domain
-

{$version}

+

{$version}{$donation}

{$totalActiveBridges}/{$totalBridges} active bridges.
{$inactive} {$admininfo} diff --git a/lib/Configuration.php b/lib/Configuration.php index 613089ab3d3..ced0062681f 100644 --- a/lib/Configuration.php +++ b/lib/Configuration.php @@ -197,6 +197,9 @@ public static function loadConfiguration() { if(!empty(self::getConfig('admin', 'email')) && !filter_var(self::getConfig('admin', 'email'), FILTER_VALIDATE_EMAIL)) self::reportConfigurationError('admin', 'email', 'Is not a valid email address'); + + if(!is_bool(self::getConfig('admin', 'donations'))) + self::reportConfigurationError('admin', 'donations', 'Is not a valid Boolean'); if(!is_string(self::getConfig('error', 'output'))) self::reportConfigurationError('error', 'output', 'Is not a valid String'); diff --git a/lib/FormatAbstract.php b/lib/FormatAbstract.php index 5c4b87f9800..29e86cb4f8a 100644 --- a/lib/FormatAbstract.php +++ b/lib/FormatAbstract.php @@ -140,7 +140,7 @@ public function getItems(){ * @param array $extraInfos {@inheritdoc} */ public function setExtraInfos(array $extraInfos = array()){ - foreach(array('name', 'uri', 'icon') as $infoName) { + foreach(array('name', 'uri', 'icon', 'donationUri') as $infoName) { if(!isset($extraInfos[$infoName])) { $extraInfos[$infoName] = ''; } diff --git a/static/HtmlFormat.css b/static/HtmlFormat.css index 4ebc79e9acd..77df12969e2 100644 --- a/static/HtmlFormat.css +++ b/static/HtmlFormat.css @@ -96,6 +96,13 @@ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockq button:hover { background: #49afff; } + button.highlight { + background: #ff6600; +} + button.highlight:hover { + background: #ff8a3b; +} + @media screen and (max-width: 767px) { From 0bea5e23993c8b6a4e665e7c78265699557a84be Mon Sep 17 00:00:00 2001 From: Henning Bocklage Date: Tue, 8 Jun 2021 19:06:42 +0200 Subject: [PATCH 2/5] phpcs fixes --- formats/HtmlFormat.php | 10 ++++++++-- lib/BridgeCard.php | 3 +-- lib/BridgeList.php | 2 +- lib/Configuration.php | 2 +- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/formats/HtmlFormat.php b/formats/HtmlFormat.php index 9f76b9e6acd..bab65644f6d 100644 --- a/formats/HtmlFormat.php +++ b/formats/HtmlFormat.php @@ -29,8 +29,14 @@ public function stringify(){ } if($donationUri !== '' && $donationsAllowed) { - $buttons .= '' . PHP_EOL; - $links .= '' . PHP_EOL; + $buttons .= '' + . PHP_EOL; + $links .= '' + . PHP_EOL; } $entries = ''; diff --git a/lib/BridgeCard.php b/lib/BridgeCard.php index 9b810358407..d4ef79583b9 100644 --- a/lib/BridgeCard.php +++ b/lib/BridgeCard.php @@ -355,9 +355,8 @@ static function displayBridgeCard($bridgeName, $formats, $isActive = true){ $card .= self::getForm($bridgeName, $formats, $isActive, $isHttps); // Display form with cache timeout and/or noproxy options (if enabled) when bridge has no parameters - } else if (count($parameters) === 1 && array_key_exists('global', $parameters)) { + } else if (count($parameters) === 1 && array_key_exists('global', $parameters) ) { $card .= self::getForm($bridgeName, $formats, $isActive, $isHttps, '', $parameters['global']); - } else { foreach($parameters as $parameterName => $parameter) { diff --git a/lib/BridgeList.php b/lib/BridgeList.php index 893dd4c0022..2d38846b421 100644 --- a/lib/BridgeList.php +++ b/lib/BridgeList.php @@ -179,7 +179,7 @@ private static function getFooter($totalBridges, $totalActiveBridges, $showInact } - if($donationsAllowed){ + if($donationsAllowed) { $donation = ' ~ Donate'; } diff --git a/lib/Configuration.php b/lib/Configuration.php index ced0062681f..7ab8294fc50 100644 --- a/lib/Configuration.php +++ b/lib/Configuration.php @@ -197,7 +197,7 @@ public static function loadConfiguration() { if(!empty(self::getConfig('admin', 'email')) && !filter_var(self::getConfig('admin', 'email'), FILTER_VALIDATE_EMAIL)) self::reportConfigurationError('admin', 'email', 'Is not a valid email address'); - + if(!is_bool(self::getConfig('admin', 'donations'))) self::reportConfigurationError('admin', 'donations', 'Is not a valid Boolean'); From a5e50038ec2de96cdbd324420b36cd9248b15a14 Mon Sep 17 00:00:00 2001 From: Henning Bocklage Date: Tue, 8 Jun 2021 19:12:01 +0200 Subject: [PATCH 3/5] More phpcs fixes --- formats/HtmlFormat.php | 10 +++++----- lib/BridgeCard.php | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/formats/HtmlFormat.php b/formats/HtmlFormat.php index bab65644f6d..86d0657d350 100644 --- a/formats/HtmlFormat.php +++ b/formats/HtmlFormat.php @@ -30,12 +30,12 @@ public function stringify(){ if($donationUri !== '' && $donationsAllowed) { $buttons .= '' + . $donationUri + . '" target="_blank">' . PHP_EOL; - $links .= '' + $links .= '' . PHP_EOL; } diff --git a/lib/BridgeCard.php b/lib/BridgeCard.php index d4ef79583b9..a45b37e7507 100644 --- a/lib/BridgeCard.php +++ b/lib/BridgeCard.php @@ -375,7 +375,7 @@ static function displayBridgeCard($bridgeName, $formats, $isActive = true){ } $card .= ''; - if($donationUri !== '' && $donationsAllowed){ + if($donationUri !== '' && $donationsAllowed) { $card .= '

' . $maintainer . ' ~ Donate

'; } else { From e92eb8c9cb6c6e00717d16ae36ef70215df4a216 Mon Sep 17 00:00:00 2001 From: Henning Bocklage Date: Tue, 8 Jun 2021 19:15:52 +0200 Subject: [PATCH 4/5] moar fixes --- lib/BridgeCard.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/BridgeCard.php b/lib/BridgeCard.php index a45b37e7507..a1c5e2ae365 100644 --- a/lib/BridgeCard.php +++ b/lib/BridgeCard.php @@ -355,7 +355,7 @@ static function displayBridgeCard($bridgeName, $formats, $isActive = true){ $card .= self::getForm($bridgeName, $formats, $isActive, $isHttps); // Display form with cache timeout and/or noproxy options (if enabled) when bridge has no parameters - } else if (count($parameters) === 1 && array_key_exists('global', $parameters) ) { + } else if (count($parameters) === 1 && array_key_exists('global', $parameters)) { $card .= self::getForm($bridgeName, $formats, $isActive, $isHttps, '', $parameters['global']); } else { @@ -377,8 +377,7 @@ static function displayBridgeCard($bridgeName, $formats, $isActive = true){ $card .= ''; if($donationUri !== '' && $donationsAllowed) { $card .= '

' . $maintainer . ' ~ Donate

'; - } - else { + } else { $card .= '

' . $maintainer . '

'; } $card .= ''; From ce2fc1d27252e9c05ea7c6174e9ee830573b4eba Mon Sep 17 00:00:00 2001 From: Eugene Molotov Date: Sun, 20 Jun 2021 15:15:01 +0500 Subject: [PATCH 5/5] Remove rss-bridge-general-donation-url --- lib/BridgeList.php | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/lib/BridgeList.php b/lib/BridgeList.php index 2d38846b421..7b2d5268729 100644 --- a/lib/BridgeList.php +++ b/lib/BridgeList.php @@ -154,7 +154,6 @@ private static function getSearchbar() { private static function getFooter($totalBridges, $totalActiveBridges, $showInactive) { $version = Configuration::getVersion(); - $donationsAllowed = Configuration::getConfig('admin', 'donations'); $email = Configuration::getConfig('admin', 'email'); $admininfo = ''; if (!empty($email)) { @@ -179,14 +178,10 @@ private static function getFooter($totalBridges, $totalActiveBridges, $showInact } - if($donationsAllowed) { - $donation = ' ~ Donate'; - } - return << RSS-Bridge ~ Public Domain
-

{$version}{$donation}

+

{$version}

{$totalActiveBridges}/{$totalBridges} active bridges.
{$inactive} {$admininfo}