diff --git a/index.php b/index.php
index 4a1e2aa..e281b01 100644
--- a/index.php
+++ b/index.php
@@ -95,6 +95,7 @@ try {
$whitelist_selection = array_map('strtolower', $whitelist_selection);
}
+ $showInactive = filter_input(INPUT_GET, 'show_inactive', FILTER_VALIDATE_BOOLEAN);
$action = array_key_exists('action', $params) ? $params['action'] : null;
$bridge = array_key_exists('bridge', $params) ? $params['bridge'] : null;
@@ -180,8 +181,8 @@ try {
header('Content-Type: text/html');
die(buildBridgeException($e, $bridge));
}
-
- die;
+ } else {
+ echo BridgeList::create($whitelist_selection, $showInactive);
}
} catch(HttpException $e) {
http_response_code($e->getCode());
@@ -190,81 +191,3 @@ try {
} catch(\Exception $e) {
die($e->getMessage());
}
-
-$formats = Format::searchInformation();
-
-?>
-
-
-
-
-
-
- RSS-Bridge
-
-
-
-
-
-
-
-
- RSS-Bridge
- ·Reconnecting the Web·
- {$status}
-
-
-
-EOD;
-
- $activeFoundBridgeCount = 0;
- $showInactive = filter_input(INPUT_GET, 'show_inactive', FILTER_VALIDATE_BOOLEAN);
- $inactiveBridges = '';
- $bridgeList = Bridge::listBridges();
- foreach($bridgeList as $bridgeName) {
- if(Bridge::isWhitelisted($whitelist_selection, strtolower($bridgeName))) {
- echo displayBridgeCard($bridgeName, $formats);
- $activeFoundBridgeCount++;
- } elseif($showInactive) {
- // inactive bridges
- $inactiveBridges .= displayBridgeCard($bridgeName, $formats, false) . PHP_EOL;
- }
- }
- echo $inactiveBridges;
- ?>
-
-
-
diff --git a/lib/BridgeCard.php b/lib/BridgeCard.php
new file mode 100644
index 0000000..d68e49c
--- /dev/null
+++ b/lib/BridgeCard.php
@@ -0,0 +1,259 @@
+'
+ . $name
+ . ''
+ . PHP_EOL;
+ }
+
+ return $buttons;
+ }
+
+ private static function getFormHeader($bridgeName, $isHttps = false) {
+ $form = <<
+
+
+EOD;
+
+ if(!$isHttps) {
+ $form .= 'Warning :
+This bridge is not fetching its content through a secure connection
';
+ }
+
+ return $form;
+ }
+
+ private static function getForm($bridgeName,
+ $formats,
+ $isActive = false,
+ $isHttps = false,
+ $parameterName = '',
+ $parameters = array()) {
+ $form = BridgeCard::getFormHeader($bridgeName, $isHttps);
+
+ foreach($parameters as $id => $inputEntry) {
+ if(!isset($inputEntry['exampleValue']))
+ $inputEntry['exampleValue'] = '';
+
+ if(!isset($inputEntry['defaultValue']))
+ $inputEntry['defaultValue'] = '';
+
+ $idArg = 'arg-'
+ . urlencode($bridgeName)
+ . '-'
+ . urlencode($parameterName)
+ . '-'
+ . urlencode($id);
+
+ $form .= ''
+ . PHP_EOL;
+
+ if(!isset($inputEntry['type']) || $inputEntry['type'] === 'text') {
+ $form .= BridgeCard::getTextInput($inputEntry, $idArg, $id);
+ } elseif($inputEntry['type'] === 'number') {
+ $form .= BridgeCard::getNumberInput($inputEntry, $idArg, $id);
+ } else if($inputEntry['type'] === 'list') {
+ $form .= BridgeCard::getListInput($inputEntry, $idArg, $id);
+ } elseif($inputEntry['type'] === 'checkbox') {
+ $form .= BridgeCard::getCheckboxInput($inputEntry, $idArg, $id);
+ }
+ }
+
+ if($isActive) {
+ $form .= BridgeCard::buildFormatButtons($formats);
+ } else {
+ $form .= 'Inactive';
+ }
+
+ return $form . '' . PHP_EOL;
+ }
+
+ private static function getInputAttributes($entry) {
+ $retVal = '';
+
+ if(isset($entry['required']) && $entry['required'] === true)
+ $retVal .= ' required';
+
+ if(isset($entry['pattern']))
+ $retVal .= ' pattern="' . $entry['pattern'] . '"';
+
+ if(isset($entry['title']))
+ $retVal .= ' title="' . filter_var($entry['title'], FILTER_SANITIZE_STRING) . '"';
+
+ return $retVal;
+ }
+
+ private static function getTextInput($entry, $id, $name) {
+ return '
'
+ . PHP_EOL;
+ }
+
+ private static function getNumberInput($entry, $id, $name) {
+ return '
'
+ . PHP_EOL;
+ }
+
+ private static function getListInput($entry, $id, $name) {
+ $list = '
';
+
+ return $list;
+ }
+
+ private static function getCheckboxInput($entry, $id, $name) {
+ return '
'
+ . PHP_EOL;
+ }
+
+ static function displayBridgeCard($bridgeName, $formats, $isActive = true){
+
+ $bridge = Bridge::create($bridgeName);
+
+ if($bridge == false)
+ return '';
+
+ $isHttps = strpos($bridge->getURI(), 'https') === 0;
+
+ $uri = $bridge->getURI();
+ $name = $bridge->getName();
+ $description = $bridge->getDescription();
+ $parameters = $bridge->getParameters();
+
+ if(defined('PROXY_URL') && PROXY_BYBRIDGE) {
+ $parameters['global']['_noproxy'] = array(
+ 'name' => 'Disable proxy (' . ((defined('PROXY_NAME') && PROXY_NAME) ? PROXY_NAME : PROXY_URL) . ')',
+ 'type' => 'checkbox'
+ );
+ }
+
+ if(CUSTOM_CACHE_TIMEOUT) {
+ $parameters['global']['_cache_timeout'] = array(
+ 'name' => 'Cache timeout in seconds',
+ 'type' => 'number',
+ 'defaultValue' => $bridge->getCacheTimeout()
+ );
+ }
+
+ $card = <<
+
+ {$description}
+
+
+CARD;
+
+ // If we don't have any parameter for the bridge, we print a generic form to load it.
+ if(count($parameters) === 0
+ || count($parameters) === 1 && array_key_exists('global', $parameters)) {
+
+ $card .= BridgeCard::getForm($bridgeName, $formats, $isActive, $isHttps);
+
+ } else {
+
+ foreach($parameters as $parameterName => $parameter) {
+ if(!is_numeric($parameterName) && $parameterName === 'global')
+ continue;
+
+ if(array_key_exists('global', $parameters))
+ $parameter = array_merge($parameter, $parameters['global']);
+
+ if(!is_numeric($parameterName))
+ $card .= '' . $parameterName . '
' . PHP_EOL;
+
+ $card .= BridgeCard::getForm($bridgeName, $formats, $isActive, $isHttps, $parameterName, $parameter);
+ }
+
+ }
+
+ $card .= '';
+ $card .= '' . $bridge->getMaintainer() . '
';
+ $card .= '';
+
+ return $card;
+ }
+}
diff --git a/lib/BridgeList.php b/lib/BridgeList.php
new file mode 100644
index 0000000..e3f55cc
--- /dev/null
+++ b/lib/BridgeList.php
@@ -0,0 +1,126 @@
+
+
+
+
+ RSS-Bridge
+
+
+
+
+
+EOD;
+ }
+
+ private static function getBridges($whitelist, $showInactive, &$totalBridges, &$totalActiveBridges) {
+
+ $body = '';
+ $totalActiveBridges = 0;
+ $inactiveBridges = '';
+
+ $bridgeList = Bridge::listBridges();
+ $formats = Format::searchInformation();
+
+ $totalBridges = count($bridgeList);
+
+ foreach($bridgeList as $bridgeName) {
+
+ if(Bridge::isWhitelisted($whitelist, strtolower($bridgeName))) {
+
+ $body .= BridgeCard::displayBridgeCard($bridgeName, $formats);
+ $totalActiveBridges++;
+
+ } elseif($showInactive) {
+
+ // inactive bridges
+ $inactiveBridges .= BridgeCard::displayBridgeCard($bridgeName, $formats, false) . PHP_EOL;
+
+ }
+
+ }
+
+ $body .= $inactiveBridges;
+
+ return $body;
+ }
+
+ private static function getHeader() {
+ $status = '';
+
+ if(defined('DEBUG') && DEBUG === true) {
+ $status .= 'debug mode active';
+ }
+
+ return <<
+ RSS-Bridge
+ ·Reconnecting the Web·
+ {$status}
+
+EOD;
+ }
+
+ private static function getSearchbar() {
+ $query = filter_input(INPUT_GET, 'q');
+
+ return <<
+ Search
+
+
+EOD;
+ }
+
+ private static function getFooter($totalBridges, $totalActiveBridges, $showInactive) {
+ $version = Configuration::getVersion();
+
+ $inactive = '';
+
+ if($totalActiveBridges !== $totalBridges) {
+
+ if(!$showInactive) {
+ $inactive = '
';
+ } else {
+ $inactive = '
';
+ }
+
+ }
+
+ return <<