Skip to content

Commit

Permalink
[core] Support for bridge maintainers' donation URLs (#2102)
Browse files Browse the repository at this point in the history
  • Loading branch information
Bockiii authored Jun 25, 2021
1 parent 5598fef commit ecaae73
Show file tree
Hide file tree
Showing 10 changed files with 61 additions and 3 deletions.
1 change: 1 addition & 0 deletions actions/DisplayAction.php
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,7 @@ public function execute() {
$infos = array(
'name' => $bridge->getName(),
'uri' => $bridge->getURI(),
'donationUri' => $bridge->getDonationURI(),
'icon' => $bridge->getIcon()
);
} catch(Error $e) {
Expand Down
1 change: 1 addition & 0 deletions actions/ListAction.php
Original file line number Diff line number Diff line change
Expand Up @@ -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(),
Expand Down
7 changes: 7 additions & 0 deletions config.default.ini.php
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down
13 changes: 13 additions & 0 deletions formats/HtmlFormat.php
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand All @@ -26,6 +28,17 @@ public function stringify(){
$links .= $this->buildLink($format, $query, $mime) . PHP_EOL;
}

if($donationUri !== '' && $donationsAllowed) {
$buttons .= '<a href="'
. $donationUri
. '" target="_blank"><button class="highlight">Donate to maintainer</button></a>'
. PHP_EOL;
$links .= '<link href="'
. $donationUri
. ' target="_blank"" title="Donate to Maintainer" rel="alternate">'
. PHP_EOL;
}

$entries = '';
foreach($this->getItems() as $item) {
$entryAuthor = $item->getAuthor() ? '<br /><p class="author">by: ' . $item->getAuthor() . '</p>' : '';
Expand Down
12 changes: 12 additions & 0 deletions lib/BridgeAbstract.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
*
Expand Down Expand Up @@ -341,6 +348,11 @@ public function getURI(){
return static::URI;
}

/** {@inheritdoc} */
public function getDonationURI(){
return static::DONATION_URI;
}

/** {@inheritdoc} */
public function getCacheTimeout(){
return static::CACHE_TIMEOUT;
Expand Down
11 changes: 9 additions & 2 deletions lib/BridgeCard.php
Original file line number Diff line number Diff line change
Expand Up @@ -301,6 +301,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(
Expand Down Expand Up @@ -332,7 +336,6 @@ static function displayBridgeCard($bridgeName, $formats, $isActive = true){
// 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)) {
$card .= self::getForm($bridgeName, $formats, $isActive, $isHttps, '', $parameters['global']);

} else {

foreach($parameters as $parameterName => $parameter) {
Expand All @@ -351,7 +354,11 @@ static function displayBridgeCard($bridgeName, $formats, $isActive = true){
}

$card .= '<label class="showless" for="showmore-' . $bridgeName . '">Show less</label>';
$card .= '<p class="maintainer">' . $bridge->getMaintainer() . '</p>';
if($donationUri !== '' && $donationsAllowed) {
$card .= '<p class="maintainer">' . $maintainer . ' ~ <a href="' . $donationUri . '">Donate</a></p>';
} else {
$card .= '<p class="maintainer">' . $maintainer . '</p>';
}
$card .= '</section>';

return $card;
Expand Down
7 changes: 7 additions & 0 deletions lib/BridgeInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
*
Expand Down
3 changes: 3 additions & 0 deletions lib/Configuration.php
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,9 @@ public static function loadConfiguration() {
&& !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');

Expand Down
2 changes: 1 addition & 1 deletion lib/FormatAbstract.php
Original file line number Diff line number Diff line change
Expand Up @@ -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] = '';
}
Expand Down
7 changes: 7 additions & 0 deletions static/HtmlFormat.css
Original file line number Diff line number Diff line change
Expand Up @@ -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) {

Expand Down

0 comments on commit ecaae73

Please sign in to comment.