Merge branch 'core' of https://framagit.org/peetah/rss-bridge
This commit is contained in:
commit
c94cfce511
9 changed files with 49 additions and 78 deletions
|
@ -2,8 +2,6 @@
|
|||
/**
|
||||
* Atom
|
||||
* Documentation Source http://en.wikipedia.org/wiki/Atom_%28standard%29 and http://tools.ietf.org/html/rfc4287
|
||||
*
|
||||
* @name Atom
|
||||
*/
|
||||
class AtomFormat extends FormatAbstract{
|
||||
|
||||
|
|
|
@ -1,10 +1,4 @@
|
|||
<?php
|
||||
/**
|
||||
* Html
|
||||
* Documentation Source http://en.wikipedia.org/wiki/Atom_%28standard%29 and http://tools.ietf.org/html/rfc4287
|
||||
*
|
||||
* @name Html
|
||||
*/
|
||||
class HtmlFormat extends FormatAbstract{
|
||||
|
||||
public function stringify(){
|
||||
|
|
|
@ -2,8 +2,6 @@
|
|||
/**
|
||||
* Json
|
||||
* Builds a JSON string from $this->items and return it to browser.
|
||||
*
|
||||
* @name Json
|
||||
*/
|
||||
class JsonFormat extends FormatAbstract{
|
||||
|
||||
|
|
|
@ -2,8 +2,6 @@
|
|||
/**
|
||||
* Mrss
|
||||
* Documentation Source http://www.rssboard.org/media-rss
|
||||
*
|
||||
* @name Media RSS
|
||||
*/
|
||||
class MrssFormat extends FormatAbstract{
|
||||
|
||||
|
|
|
@ -2,8 +2,6 @@
|
|||
/**
|
||||
* Plaintext
|
||||
* Returns $this->items as raw php data.
|
||||
*
|
||||
* @name Plaintext
|
||||
*/
|
||||
class PlaintextFormat extends FormatAbstract{
|
||||
|
||||
|
|
47
index.php
47
index.php
|
@ -91,15 +91,25 @@ try{
|
|||
Format::setDir(__DIR__ . '/formats/');
|
||||
Cache::setDir(__DIR__ . '/caches/');
|
||||
|
||||
if( isset($_REQUEST) && isset($_REQUEST['action']) ){
|
||||
switch($_REQUEST['action']){
|
||||
case 'display':
|
||||
if( isset($_REQUEST['bridge']) ){
|
||||
unset($_REQUEST['action']);
|
||||
$bridge = $_REQUEST['bridge'];
|
||||
unset($_REQUEST['bridge']);
|
||||
$format = $_REQUEST['format'];
|
||||
unset($_REQUEST['format']);
|
||||
$action=filter_input(INPUT_GET,'action');
|
||||
$bridge=filter_input(INPUT_GET,'bridge');
|
||||
if($action === 'display' && !empty($bridge)){
|
||||
unset($_REQUEST['action']);
|
||||
unset($_REQUEST['bridge']);
|
||||
// DEPRECATED: 'nameBridge' scheme is replaced by 'name' in bridge parameter values
|
||||
// this is to keep compatibility until futher complete removal
|
||||
if(($pos=strpos($bridge,'Bridge'))===(strlen($bridge)-strlen('Bridge'))){
|
||||
$bridge=substr($bridge,0,$pos);
|
||||
}
|
||||
|
||||
$format = filter_input(INPUT_GET,'format');
|
||||
unset($_REQUEST['format']);
|
||||
// DEPRECATED: 'nameFormat' scheme is replaced by 'name' in format parameter values
|
||||
// this is to keep compatibility until futher complete removal
|
||||
if(($pos=strpos($format,'Format'))===(strlen($format)-strlen('Format'))){
|
||||
$format=substr($format,0,$pos);
|
||||
}
|
||||
|
||||
|
||||
// whitelist control
|
||||
if(!Bridge::isWhitelisted($whitelist_selection, $bridge)) {
|
||||
|
@ -111,13 +121,12 @@ try{
|
|||
|
||||
// Data retrieval
|
||||
$bridge = Bridge::create($bridge);
|
||||
if(defined("DEBUG")) {
|
||||
} else {
|
||||
$bridge->setCache($cache); // just add disable cache to your query to disable caching
|
||||
if(!defined("DEBUG")) {
|
||||
$bridge->setCache($cache);
|
||||
}
|
||||
if(defined('PROXY_URL') && PROXY_BYBRIDGE &&
|
||||
isset($_REQUEST['_noproxy'])
|
||||
){
|
||||
|
||||
$noproxy=filter_input(INPUT_GET,'_noproxy',FILTER_VALIDATE_BOOLEAN);
|
||||
if(defined('PROXY_URL') && PROXY_BYBRIDGE && $noproxy){
|
||||
$bridge->useProxy=false;
|
||||
}
|
||||
$bridge->loadMetadatas();
|
||||
|
@ -138,10 +147,8 @@ try{
|
|||
|
||||
}
|
||||
die;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
catch(HttpException $e){
|
||||
header('HTTP/1.1 ' . $e->getCode() . ' ' . Http::getMessageForCode($e->getCode()));
|
||||
|
@ -173,7 +180,7 @@ $formats = Format::searchInformation();
|
|||
</header>
|
||||
<?php
|
||||
$activeFoundBridgeCount = 0;
|
||||
$showInactive = isset($_REQUEST['show_inactive']) && $_REQUEST['show_inactive'] == 1;
|
||||
$showInactive = filter_input(INPUT_GET,'show_inactive',FILTER_VALIDATE_BOOLEAN);
|
||||
$inactiveBridges = '';
|
||||
$bridgeList = Bridge::listBridges();
|
||||
foreach($bridgeList as $bridgeName)
|
||||
|
|
|
@ -262,10 +262,11 @@ class Bridge{
|
|||
* @return Bridge object dedicated
|
||||
*/
|
||||
static public function create($nameBridge){
|
||||
if( !static::isValidNameBridge($nameBridge) ){
|
||||
if( !preg_match('@^[A-Z][a-zA-Z0-9-]*$@', $nameBridge)){
|
||||
throw new \InvalidArgumentException('Name bridge must be at least one uppercase follow or not by alphanumeric or dash characters.');
|
||||
}
|
||||
|
||||
$nameBridge=$nameBridge.'Bridge';
|
||||
$pathBridge = self::getDir() . $nameBridge . '.php';
|
||||
|
||||
if( !file_exists($pathBridge) ){
|
||||
|
@ -303,10 +304,6 @@ class Bridge{
|
|||
return $dirBridge;
|
||||
}
|
||||
|
||||
static public function isValidNameBridge($nameBridge){
|
||||
return preg_match('@^[A-Z][a-zA-Z0-9-]*$@', $nameBridge);
|
||||
}
|
||||
|
||||
/**
|
||||
* Lists the available bridges.
|
||||
* @return array List of the bridges
|
||||
|
@ -317,19 +314,21 @@ class Bridge{
|
|||
$listBridge = array();
|
||||
$dirFiles = scandir($pathDirBridge);
|
||||
|
||||
if( $dirFiles !== false ){
|
||||
|
||||
foreach( $dirFiles as $fileName ) {
|
||||
if( preg_match('@([^.]+)\.php$@U', $fileName, $out) ){
|
||||
$listBridge[] = $out[1];
|
||||
}
|
||||
}
|
||||
}
|
||||
if( $dirFiles !== false ){
|
||||
foreach( $dirFiles as $fileName ) {
|
||||
if( preg_match('@^([^.]+)Bridge\.php$@U', $fileName, $out) ){
|
||||
$listBridge[] = $out[1];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $listBridge;
|
||||
}
|
||||
static function isWhitelisted( $whitelist, $name ) {
|
||||
if(in_array("$name", $whitelist) or in_array("$name.php", $whitelist) or count($whitelist) === 1 and trim($whitelist[0]) === '*')
|
||||
if(in_array($name, $whitelist) or in_array($name.'.php', $whitelist) or
|
||||
// DEPRECATED: the nameBridge notation will be removed in future releases
|
||||
in_array($name.'Bridge', $whitelist) or in_array($name.'Bridge.php', $whitelist) or
|
||||
count($whitelist) === 1 and trim($whitelist[0]) === '*')
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
|
|
|
@ -118,10 +118,11 @@ class Format{
|
|||
}
|
||||
|
||||
static public function create($nameFormat){
|
||||
if( !static::isValidNameFormat($nameFormat) ){
|
||||
if( !preg_match('@^[A-Z][a-zA-Z]*$@', $nameFormat)){
|
||||
throw new \InvalidArgumentException('Name format must be at least one uppercase follow or not by alphabetic characters.');
|
||||
}
|
||||
|
||||
$nameFormat=$nameFormat.'Format';
|
||||
$pathFormat = self::getDir() . $nameFormat . '.php';
|
||||
|
||||
if( !file_exists($pathFormat) ){
|
||||
|
@ -155,10 +156,6 @@ class Format{
|
|||
return $dirFormat;
|
||||
}
|
||||
|
||||
static public function isValidNameFormat($nameFormat){
|
||||
return preg_match('@^[A-Z][a-zA-Z]*$@', $nameFormat);
|
||||
}
|
||||
|
||||
/**
|
||||
* Read format dir and catch informations about each format depending annotation
|
||||
* @return array Informations about each format
|
||||
|
@ -172,29 +169,13 @@ class Format{
|
|||
|
||||
$dirFiles = scandir($pathDirFormat);
|
||||
if( $dirFiles !== false ){
|
||||
foreach( $dirFiles as $fileName ){
|
||||
if( preg_match('@([^.]+)\.php@U', $fileName, $out) ){ // Is PHP file ?
|
||||
$infos = array(); // Information about the bridge
|
||||
$resParse = token_get_all(file_get_contents($pathDirFormat . $fileName)); // Parse PHP file
|
||||
foreach($resParse as $v){
|
||||
if( is_array($v) && $v[0] == T_DOC_COMMENT ){ // Lexer node is COMMENT ?
|
||||
$commentary = $v[1];
|
||||
foreach( $searchCommonPattern as $name){ // Catch information with common pattern
|
||||
preg_match('#@' . preg_quote($name, '#') . '\s+(.+)#', $commentary, $outComment);
|
||||
if( isset($outComment[1]) ){
|
||||
$infos[$name] = $outComment[1];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if( isset($infos['name']) ){ // If informations containt at least a name
|
||||
$listFormat[$out[1]] = $infos;
|
||||
}
|
||||
}
|
||||
foreach( $dirFiles as $fileName ){
|
||||
if( preg_match('@^([^.]+)Format\.php$@U', $fileName, $out) ){ // Is PHP file ?
|
||||
$listFormat[] = $out[1];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $listFormat;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -139,10 +139,8 @@ CARD;
|
|||
|
||||
private static function getHelperButtonsFormat($formats){
|
||||
$buttons = '';
|
||||
|
||||
foreach( $formats as $name => $infos ){
|
||||
if ( isset($infos['name']) )
|
||||
$buttons .= '<button type="submit" name="format" value="' . $name . '">' . $infos['name'] . '</button>' . PHP_EOL;
|
||||
foreach( $formats as $name){
|
||||
$buttons .= '<button type="submit" name="format" value="' . $name . '">' . $name . '</button>' . PHP_EOL;
|
||||
}
|
||||
|
||||
return $buttons;
|
||||
|
|
Loading…
Reference in a new issue