[core] Apply common indentation

All files are now using tabs for indentation
This commit is contained in:
logmanoriginal 2016-09-10 20:41:11 +02:00
parent 32ce2b6541
commit 62eec43980
19 changed files with 1365 additions and 1250 deletions

View file

@ -2,14 +2,12 @@
/** /**
* Cache with file system * Cache with file system
*/ */
class FileCache extends CacheAbstract{ class FileCache extends CacheAbstract {
protected $cacheDirCreated; // boolean to avoid always chck dir cache existance protected $cacheDirCreated; // boolean to avoid always chck dir cache existance
public function loadData(){ public function loadData(){
$this->isPrepareCache(); $this->isPrepareCache();
$datas = unserialize(file_get_contents($this->getCacheFile())); $datas = unserialize(file_get_contents($this->getCacheFile()));
return $datas; return $datas;
} }
@ -18,13 +16,10 @@ class FileCache extends CacheAbstract{
//Re-encode datas to UTF-8 //Re-encode datas to UTF-8
//$datas = Cache::utf8_encode_deep($datas); //$datas = Cache::utf8_encode_deep($datas);
$writeStream = file_put_contents($this->getCacheFile(), serialize($datas)); $writeStream = file_put_contents($this->getCacheFile(), serialize($datas));
if(!$writeStream) { if(!$writeStream) {
throw new \Exception("Cannot write the cache... Do you have the right permissions ?"); throw new \Exception("Cannot write the cache... Do you have the right permissions ?");
} }
return $this; return $this;
@ -34,7 +29,7 @@ class FileCache extends CacheAbstract{
$this->isPrepareCache(); $this->isPrepareCache();
$cacheFile = $this->getCacheFile(); $cacheFile = $this->getCacheFile();
if( file_exists($cacheFile) ){ if(file_exists($cacheFile)){
return filemtime($cacheFile); return filemtime($cacheFile);
} }
@ -47,7 +42,7 @@ class FileCache extends CacheAbstract{
* @return \Exception|true * @return \Exception|true
*/ */
protected function isPrepareCache(){ protected function isPrepareCache(){
if( is_null($this->param) ){ if(is_null($this->param)){
throw new \Exception('Please feed "prepare" method before try to load'); throw new \Exception('Please feed "prepare" method before try to load');
} }
@ -62,7 +57,7 @@ class FileCache extends CacheAbstract{
$cacheDir = __DIR__ . '/../cache/'; // FIXME : configuration ? $cacheDir = __DIR__ . '/../cache/'; // FIXME : configuration ?
// FIXME : implement recursive dir creation // FIXME : implement recursive dir creation
if( is_null($this->cacheDirCreated) && !is_dir($cacheDir) ){ if(is_null($this->cacheDirCreated) && !is_dir($cacheDir)){
$this->cacheDirCreated = true; $this->cacheDirCreated = true;
mkdir($cacheDir,0705); mkdir($cacheDir,0705);

View file

@ -1,7 +1,8 @@
<?php <?php
/** /**
* Atom * Atom
* Documentation Source http://en.wikipedia.org/wiki/Atom_%28standard%29 and http://tools.ietf.org/html/rfc4287 * Documentation Source http://en.wikipedia.org/wiki/Atom_%28standard%29 and
* http://tools.ietf.org/html/rfc4287
*/ */
class AtomFormat extends FormatAbstract{ class AtomFormat extends FormatAbstract{
@ -61,7 +62,7 @@ EOD;
// Remove invalid non-UTF8 characters // Remove invalid non-UTF8 characters
ini_set('mbstring.substitute_character', 'none'); ini_set('mbstring.substitute_character', 'none');
$toReturn= mb_convert_encoding($toReturn, 'UTF-8', 'UTF-8'); $toReturn = mb_convert_encoding($toReturn, 'UTF-8', 'UTF-8');
return $toReturn; return $toReturn;
} }
@ -73,7 +74,7 @@ EOD;
return parent::display(); return parent::display();
} }
private function xml_encode($text) { private function xml_encode($text){
return htmlspecialchars($text, ENT_XML1); return htmlspecialchars($text, ENT_XML1);
} }
} }

View file

@ -1,5 +1,5 @@
<?php <?php
class HtmlFormat extends FormatAbstract{ class HtmlFormat extends FormatAbstract {
public function stringify(){ public function stringify(){
$extraInfos = $this->getExtraInfos(); $extraInfos = $this->getExtraInfos();
@ -27,7 +27,6 @@ class HtmlFormat extends FormatAbstract{
EOD; EOD;
} }
/* Data are prepared, now let's begin the "MAGIE !!!" */ /* Data are prepared, now let's begin the "MAGIE !!!" */
$toReturn = <<<EOD $toReturn = <<<EOD
<!DOCTYPE html> <!DOCTYPE html>

View file

@ -3,11 +3,10 @@
* Json * Json
* Builds a JSON string from $this->items and return it to browser. * Builds a JSON string from $this->items and return it to browser.
*/ */
class JsonFormat extends FormatAbstract{ class JsonFormat extends FormatAbstract {
public function stringify(){ public function stringify(){
$items = $this->getItems(); $items = $this->getItems();
return json_encode($items, JSON_PRETTY_PRINT); return json_encode($items, JSON_PRETTY_PRINT);
} }

View file

@ -3,7 +3,7 @@
* Mrss * Mrss
* Documentation Source http://www.rssboard.org/media-rss * Documentation Source http://www.rssboard.org/media-rss
*/ */
class MrssFormat extends FormatAbstract{ class MrssFormat extends FormatAbstract {
public function stringify(){ public function stringify(){
$https = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on' ? 's' : ''; $https = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on' ? 's' : '';
@ -56,7 +56,7 @@ EOD;
// Remove invalid non-UTF8 characters // Remove invalid non-UTF8 characters
ini_set('mbstring.substitute_character', 'none'); ini_set('mbstring.substitute_character', 'none');
$toReturn= mb_convert_encoding($toReturn, 'UTF-8', 'UTF-8'); $toReturn = mb_convert_encoding($toReturn, 'UTF-8', 'UTF-8');
return $toReturn; return $toReturn;
} }
@ -68,7 +68,7 @@ EOD;
return parent::display(); return parent::display();
} }
private function xml_encode($text) { private function xml_encode($text){
return htmlspecialchars($text, ENT_XML1); return htmlspecialchars($text, ENT_XML1);
} }
} }

View file

@ -3,7 +3,7 @@
* Plaintext * Plaintext
* Returns $this->items as raw php data. * Returns $this->items as raw php data.
*/ */
class PlaintextFormat extends FormatAbstract{ class PlaintextFormat extends FormatAbstract {
public function stringify(){ public function stringify(){
$items = $this->getItems(); $items = $this->getItems();

View file

@ -36,7 +36,9 @@ EOD;
$pathBridge = self::getDir() . $nameBridge . '.php'; $pathBridge = self::getDir() . $nameBridge . '.php';
if(!file_exists($pathBridge)){ if(!file_exists($pathBridge)){
throw new \Exception('The bridge you looking for does not exist. It should be at path ' . $pathBridge); throw new \Exception('The bridge you looking for does not exist.'
. ' It should be at path '
. $pathBridge);
} }
require_once $pathBridge; require_once $pathBridge;
@ -92,10 +94,10 @@ EOD;
static public function isWhitelisted($whitelist, $name){ static public function isWhitelisted($whitelist, $name){
if(in_array($name, $whitelist) if(in_array($name, $whitelist)
or in_array($name . '.php', $whitelist) || in_array($name . '.php', $whitelist)
or in_array($name . 'Bridge', $whitelist) // DEPRECATED || in_array($name . 'Bridge', $whitelist) // DEPRECATED
or in_array($name . 'Bridge.php', $whitelist) // DEPRECATED || in_array($name . 'Bridge.php', $whitelist) // DEPRECATED
or count($whitelist) === 1 and trim($whitelist[0]) === '*'){ || count($whitelist) === 1 and trim($whitelist[0]) === '*'){
return true; return true;
} else { } else {
return false; return false;

View file

@ -37,8 +37,9 @@ abstract class BridgeAbstract implements BridgeInterface {
protected function validateTextValue($value, $pattern = null){ protected function validateTextValue($value, $pattern = null){
if(!is_null($pattern)){ if(!is_null($pattern)){
$filteredValue = filter_var($value, FILTER_VALIDATE_REGEXP, $filteredValue = filter_var($value
array('options' => array( , FILTER_VALIDATE_REGEXP
, array('options' => array(
'regexp' => '/^' . $pattern . '$/' 'regexp' => '/^' . $pattern . '$/'
)) ))
); );
@ -91,13 +92,13 @@ abstract class BridgeAbstract implements BridgeInterface {
if(!is_array($data)) if(!is_array($data))
return false; return false;
foreach($data as $name=>$value){ foreach($data as $name => $value){
$registered = false; $registered = false;
foreach(static::PARAMETERS as $context=>$set){ foreach(static::PARAMETERS as $context => $set){
if(array_key_exists($name,$set)){ if(array_key_exists($name, $set)){
$registered = true; $registered = true;
if(!isset($set[$name]['type'])){ if(!isset($set[$name]['type'])){
$set[$name]['type']='text'; $set[$name]['type'] = 'text';
} }
switch($set[$name]['type']){ switch($set[$name]['type']){
@ -209,35 +210,35 @@ abstract class BridgeAbstract implements BridgeInterface {
} }
protected function getQueriedContext(array $inputs){ protected function getQueriedContext(array $inputs){
$queriedContexts=array(); $queriedContexts = array();
foreach(static::PARAMETERS as $context=>$set){ foreach(static::PARAMETERS as $context => $set){
$queriedContexts[$context]=null; $queriedContexts[$context] = null;
foreach($set as $id=>$properties){ foreach($set as $id => $properties){
if(isset($inputs[$id]) && !empty($inputs[$id])){ if(isset($inputs[$id]) && !empty($inputs[$id])){
$queriedContexts[$context]=true; $queriedContexts[$context] = true;
}elseif(isset($properties['required']) && } elseif(isset($properties['required'])
$properties['required']===true){ && $properties['required'] === true){
$queriedContexts[$context]=false; $queriedContexts[$context] = false;
break; break;
} }
} }
} }
if(array_key_exists('global',static::PARAMETERS) && if(array_key_exists('global', static::PARAMETERS)
$queriedContexts['global']===false){ && $queriedContexts['global'] === false){
return null; return null;
} }
unset($queriedContexts['global']); unset($queriedContexts['global']);
switch(array_sum($queriedContexts)){ switch(array_sum($queriedContexts)){
case 0: case 0:
foreach($queriedContexts as $context=>$queried){ foreach($queriedContexts as $context => $queried){
if (is_null($queried)){ if (is_null($queried)){
return $context; return $context;
} }
} }
return null; return null;
case 1: return array_search(true,$queriedContexts); case 1: return array_search(true, $queriedContexts);
default: return false; default: return false;
} }
} }
@ -337,7 +338,7 @@ abstract class BridgeAbstract implements BridgeInterface {
$contextOptions = array( $contextOptions = array(
'http' => array( 'http' => array(
'user_agent' => ini_get('user_agent') 'user_agent' => ini_get('user_agent')
), )
); );
if(defined('PROXY_URL') && $this->useProxy){ if(defined('PROXY_URL') && $this->useProxy){

View file

@ -1,6 +1,6 @@
<?php <?php
require_once(__DIR__ . '/CacheInterface.php'); require_once(__DIR__ . '/CacheInterface.php');
class Cache{ class Cache {
static protected $dirCache; static protected $dirCache;
@ -9,13 +9,14 @@ class Cache{
} }
static public function create($nameCache){ static public function create($nameCache){
if( !static::isValidNameCache($nameCache) ){ if(!static::isValidNameCache($nameCache)){
throw new \InvalidArgumentException('Name cache must be at least one uppercase follow or not by alphanumeric or dash characters.'); throw new \InvalidArgumentException('Name cache must be at least'
. ' one uppercase follow or not by alphanumeric or dash characters.');
} }
$pathCache = self::getDir() . $nameCache . '.php'; $pathCache = self::getDir() . $nameCache . '.php';
if( !file_exists($pathCache) ){ if(!file_exists($pathCache)){
throw new \Exception('The cache you looking for does not exist.'); throw new \Exception('The cache you looking for does not exist.');
} }
@ -25,11 +26,11 @@ class Cache{
} }
static public function setDir($dirCache){ static public function setDir($dirCache){
if( !is_string($dirCache) ){ if(!is_string($dirCache)){
throw new \InvalidArgumentException('Dir cache must be a string.'); throw new \InvalidArgumentException('Dir cache must be a string.');
} }
if( !file_exists($dirCache) ){ if(!file_exists($dirCache)){
throw new \Exception('Dir cache does not exist.'); throw new \Exception('Dir cache does not exist.');
} }
@ -39,7 +40,7 @@ class Cache{
static public function getDir(){ static public function getDir(){
$dirCache = self::$dirCache; $dirCache = self::$dirCache;
if( is_null($dirCache) ){ if(is_null($dirCache)){
throw new \LogicException(__CLASS__ . ' class need to know cache path !'); throw new \LogicException(__CLASS__ . ' class need to know cache path !');
} }
@ -51,39 +52,40 @@ class Cache{
} }
static public function utf8_encode_deep(&$input) { static public function utf8_encode_deep(&$input){
if (is_string($input)) { if (is_string($input)){
$input = utf8_encode($input); $input = utf8_encode($input);
} else if (is_array($input)) { } elseif(is_array($input)){
foreach ($input as &$value) { foreach($input as &$value){
Cache::utf8_encode_deep($value); Cache::utf8_encode_deep($value);
} }
unset($value); unset($value);
} else if (is_object($input)) { } elseif(is_object($input)){
$vars = array_keys(get_object_vars($input)); $vars = array_keys(get_object_vars($input));
foreach ($vars as $var) { foreach($vars as $var){
Cache::utf8_encode_deep($input->$var); Cache::utf8_encode_deep($input->$var);
} }
} }
} }
static public function purge() { static public function purge(){
$cacheTimeLimit = time() - 60*60*24 ; $cacheTimeLimit = time() - 60*60*24;
$cachePath = 'cache'; $cachePath = 'cache';
if(file_exists($cachePath)) { if(file_exists($cachePath)){
$cacheIterator = new RecursiveIteratorIterator( $cacheIterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($cachePath), new RecursiveDirectoryIterator($cachePath),
RecursiveIteratorIterator::CHILD_FIRST RecursiveIteratorIterator::CHILD_FIRST
); );
foreach ($cacheIterator as $cacheFile) {
if (in_array($cacheFile->getBasename(), array('.', '..'))) foreach($cacheIterator as $cacheFile){
if(in_array($cacheFile->getBasename(), array('.', '..')))
continue; continue;
elseif ($cacheFile->isFile()) { elseif($cacheFile->isFile()){
if( filemtime($cacheFile->getPathname()) < $cacheTimeLimit ) if(filemtime($cacheFile->getPathname()) < $cacheTimeLimit)
unlink( $cacheFile->getPathname() ); unlink($cacheFile->getPathname());
} }
} }
} }

View file

@ -1,6 +1,6 @@
<?php <?php
require_once(__DIR__ . '/CacheInterface.php'); require_once(__DIR__ . '/CacheInterface.php');
abstract class CacheAbstract implements CacheInterface{ abstract class CacheAbstract implements CacheInterface {
protected $param; protected $param;
public function prepare(array $param){ public function prepare(array $param){

View file

@ -1,5 +1,5 @@
<?php <?php
interface CacheInterface{ interface CacheInterface {
public function loadData(); public function loadData();
public function saveData($datas); public function saveData($datas);
public function getTime(); public function getTime();

View file

@ -12,9 +12,8 @@ class Http{
static public function getMessageForCode($code){ static public function getMessageForCode($code){
$codes = self::getCodes(); $codes = self::getCodes();
if( isset($codes[$code]) ){ if(isset($codes[$code]))
return $codes[$code]; return $codes[$code];
}
return ''; return '';
} }

View file

@ -50,7 +50,10 @@ abstract class FeedExpander extends BridgeAbstract {
protected function collect_RSS_2_0_data($rssContent, $maxItems){ protected function collect_RSS_2_0_data($rssContent, $maxItems){
$rssContent = $rssContent->channel[0]; $rssContent = $rssContent->channel[0];
$this->debugMessage('RSS content is ===========\n' . var_export($rssContent, true) . '==========='); $this->debugMessage('RSS content is ===========\n'
. var_export($rssContent, true)
. '===========');
$this->load_RSS_2_0_feed_data($rssContent); $this->load_RSS_2_0_feed_data($rssContent);
foreach($rssContent->item as $item){ foreach($rssContent->item as $item){
$this->debugMessage('parsing item ' . var_export($item, true)); $this->debugMessage('parsing item ' . var_export($item, true));

View file

@ -1,6 +1,6 @@
<?php <?php
require_once(__DIR__ . '/FormatInterface.php'); require_once(__DIR__ . '/FormatInterface.php');
class Format{ class Format {
static protected $dirFormat; static protected $dirFormat;
@ -9,14 +9,15 @@ class Format{
} }
static public function create($nameFormat){ static public function create($nameFormat){
if( !preg_match('@^[A-Z][a-zA-Z]*$@', $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.'); throw new \InvalidArgumentException('Name format must be at least '
. 'one uppercase follow or not by alphabetic characters.');
} }
$nameFormat=$nameFormat.'Format'; $nameFormat = $nameFormat . 'Format';
$pathFormat = self::getDir() . $nameFormat . '.php'; $pathFormat = self::getDir() . $nameFormat . '.php';
if( !file_exists($pathFormat) ){ if(!file_exists($pathFormat)){
throw new \Exception('The format you looking for does not exist.'); throw new \Exception('The format you looking for does not exist.');
} }
@ -26,11 +27,11 @@ class Format{
} }
static public function setDir($dirFormat){ static public function setDir($dirFormat){
if( !is_string($dirFormat) ){ if(!is_string($dirFormat)){
throw new \InvalidArgumentException('Dir format must be a string.'); throw new \InvalidArgumentException('Dir format must be a string.');
} }
if( !file_exists($dirFormat) ){ if(!file_exists($dirFormat)){
throw new \Exception('Dir format does not exist.'); throw new \Exception('Dir format does not exist.');
} }
@ -40,7 +41,7 @@ class Format{
static public function getDir(){ static public function getDir(){
$dirFormat = self::$dirFormat; $dirFormat = self::$dirFormat;
if( is_null($dirFormat) ){ if(is_null($dirFormat)){
throw new \LogicException(__CLASS__ . ' class need to know format path !'); throw new \LogicException(__CLASS__ . ' class need to know format path !');
} }
@ -59,9 +60,9 @@ class Format{
$searchCommonPattern = array('name'); $searchCommonPattern = array('name');
$dirFiles = scandir($pathDirFormat); $dirFiles = scandir($pathDirFormat);
if( $dirFiles !== false ){ if($dirFiles !== false){
foreach( $dirFiles as $fileName ){ foreach($dirFiles as $fileName){
if( preg_match('@^([^.]+)Format\.php$@U', $fileName, $out) ){ // Is PHP file ? if(preg_match('@^([^.]+)Format\.php$@U', $fileName, $out)){ // Is PHP file ?
$listFormat[] = $out[1]; $listFormat[] = $out[1];
} }
} }

View file

@ -1,6 +1,6 @@
<?php <?php
require_once(__DIR__ . '/FormatInterface.php'); require_once(__DIR__ . '/FormatInterface.php');
abstract class FormatAbstract implements FormatInterface{ abstract class FormatAbstract implements FormatInterface {
const DEFAULT_CHARSET = 'UTF-8'; const DEFAULT_CHARSET = 'UTF-8';
protected protected

View file

@ -1,9 +1,8 @@
<?php <?php
class HTMLUtils { class HTMLUtils {
public static function displayBridgeCard($bridgeName, $formats, $isActive = true){ public static function displayBridgeCard($bridgeName, $formats, $isActive = true){
$bridgeElement = Bridge::create($bridgeName); $bridgeElement = Bridge::create($bridgeName);
$bridgeClass=$bridgeName.'Bridge'; $bridgeClass = $bridgeName . 'Bridge';
if($bridgeElement == false) if($bridgeElement == false)
return ""; return "";
@ -22,15 +21,30 @@ class HTMLUtils {
CARD; CARD;
// If we don't have any parameter for the bridge, we print a generic form to load it. // If we don't have any parameter for the bridge, we print a generic form to load it.
if(count($bridgeClass::PARAMETERS) == 0) { if(count($bridgeClass::PARAMETERS) == 0){
$card .= HTMLUtils::getFormHeader($bridgeName); $card .= HTMLUtils::getFormHeader($bridgeName);
if ($isActive){ if($isActive){
if(defined('PROXY_URL') && PROXY_BYBRIDGE){ if(defined('PROXY_URL') && PROXY_BYBRIDGE){
$idArg = 'arg-' . urlencode($bridgeName) . '-' . urlencode('proxyoff') . '-' . urlencode('_noproxy'); $idArg = 'arg-'
$card .= '<input id="' . $idArg . '" type="checkbox" name="_noproxy" />' . PHP_EOL; . urlencode($bridgeName)
$card .= '<label for="' .$idArg. '">Disable proxy ('.((defined('PROXY_NAME') && PROXY_NAME)?PROXY_NAME:PROXY_URL).')</label><br />' . PHP_EOL; . '-'
. urlencode('proxyoff')
. '-'
. urlencode('_noproxy');
$card .= '<input id="'
. $idArg
. '" type="checkbox" name="_noproxy" />'
. PHP_EOL;
$card .= '<label for="'
. $idArg
. '">Disable proxy ('
. ((defined('PROXY_NAME') && PROXY_NAME) ? PROXY_NAME : PROXY_URL)
. ')</label><br />'
. PHP_EOL;
} }
$card .= HTMLUtils::getHelperButtonsFormat($formats); $card .= HTMLUtils::getHelperButtonsFormat($formats);
@ -59,7 +73,7 @@ CARD;
$card .= HTMLUtils::getFormHeader($bridgeName); $card .= HTMLUtils::getFormHeader($bridgeName);
foreach($parameter as $id=>$inputEntry) { foreach($parameter as $id=>$inputEntry){
$additionalInfoString = ''; $additionalInfoString = '';
if(isset($inputEntry['required']) && $inputEntry['required'] === true) if(isset($inputEntry['required']) && $inputEntry['required'] === true)
@ -77,55 +91,140 @@ CARD;
if(!isset($inputEntry['defaultValue'])) if(!isset($inputEntry['defaultValue']))
$inputEntry['defaultValue'] = ''; $inputEntry['defaultValue'] = '';
$idArg = 'arg-' . urlencode($bridgeName) . '-' . urlencode($parameterName) . '-' . urlencode($id); $idArg = 'arg-'
$card .= '<label for="' . $idArg . '">' . $inputEntry['name'] . ' : </label>' . PHP_EOL; . urlencode($bridgeName)
. '-'
. urlencode($parameterName)
. '-'
. urlencode($id);
if(!isset($inputEntry['type']) || $inputEntry['type'] == 'text') { $card .= '<label for="'
$card .= '<input ' . $additionalInfoString . ' id="' . $idArg . '" type="text" value="' . $inputEntry['defaultValue'] . '" placeholder="' . $inputEntry['exampleValue'] . '" name="' . $id . '" /><br />' . PHP_EOL; . $idArg
} else if($inputEntry['type'] == 'number') { . '">'
$card .= '<input ' . $additionalInfoString . ' id="' . $idArg . '" type="number" value="' . $inputEntry['defaultValue'] . '" placeholder="' . $inputEntry['exampleValue'] . '" name="' . $id . '" /><br />' . PHP_EOL; . $inputEntry['name']
} else if($inputEntry['type'] == 'list') { . ' : </label>'
$card .= '<select ' . $additionalInfoString . ' id="' . $idArg . '" name="' . $id . '" >'; . PHP_EOL;
foreach($inputEntry['values'] as $name=>$value) { if(!isset($inputEntry['type']) || $inputEntry['type'] == 'text'){
$card .= '<input '
. $additionalInfoString
. ' id="'
. $idArg
. '" type="text" value="'
. $inputEntry['defaultValue']
. '" placeholder="'
. $inputEntry['exampleValue']
. '" name="'
. $id
. '" /><br />'
. PHP_EOL;
} elseif($inputEntry['type'] == 'number'){
$card .= '<input '
. $additionalInfoString
. ' id="'
. $idArg
. '" type="number" value="'
. $inputEntry['defaultValue']
. '" placeholder="'
. $inputEntry['exampleValue']
. '" name="'
. $id
. '" /><br />'
. PHP_EOL;
} else if($inputEntry['type'] == 'list'){
$card .= '<select '
. $additionalInfoString
. ' id="'
. $idArg
. '" name="'
. $id
. '" >';
foreach($inputEntry['values'] as $name => $value){
if(is_array($value)){ if(is_array($value)){
$card.='<optgroup label="'.htmlentities($name).'">'; $card .= '<optgroup label="' . htmlentities($name) . '">';
foreach($value as $subname=>$subvalue){ foreach($value as $subname => $subvalue){
if($inputEntry['defaultValue'] === $subname || $inputEntry['defaultValue'] === $subvalue) if($inputEntry['defaultValue'] === $subname
$card .= '<option value="' . $subvalue . '" selected>' . $subname . '</option>'; || $inputEntry['defaultValue'] === $subvalue){
else $card .= '<option value="'
$card .= '<option value="' . $subvalue . '">' . $subname . '</option>'; . $subvalue
} . '" selected>'
$card.='</optgroup>'; . $subname
}else{ . '</option>';
if($inputEntry['defaultValue'] === $name || $inputEntry['defaultValue'] === $value) } else {
$card .= '<option value="' . $value . '" selected>' . $name . '</option>'; $card .= '<option value="'
else . $subvalue
$card .= '<option value="' . $value . '">' . $name . '</option>'; . '">'
. $subname
. '</option>';
}
}
$card .= '</optgroup>';
} else {
if($inputEntry['defaultValue'] === $name
|| $inputEntry['defaultValue'] === $value){
$card .= '<option value="'
. $value
. '" selected>'
. $name
. '</option>';
} else {
$card .= '<option value="'
. $value
. '">'
. $name
. '</option>';
}
} }
} }
$card .= '</select><br >'; $card .= '</select><br >';
} else if($inputEntry['type'] == 'checkbox') { } elseif($inputEntry['type'] == 'checkbox'){
if($inputEntry['defaultValue'] === 'checked') if($inputEntry['defaultValue'] === 'checked')
$card .= '<input ' . $additionalInfoString . ' id="' . $idArg . '" type="checkbox" name="' . $id . '" checked /><br />' . PHP_EOL; $card .= '<input '
. $additionalInfoString
. ' id="'
. $idArg
. '" type="checkbox" name="'
. $id
. '" checked /><br />'
. PHP_EOL;
else else
$card .= '<input ' . $additionalInfoString . ' id="' . $idArg . '" type="checkbox" name="' . $id . '" /><br />' . PHP_EOL; $card .= '<input '
. $additionalInfoString
. ' id="'
. $idArg
. '" type="checkbox" name="'
. $id
. '" /><br />'
. PHP_EOL;
} }
} }
if ($isActive){ if($isActive){
if(defined('PROXY_URL') && PROXY_BYBRIDGE){ if(defined('PROXY_URL') && PROXY_BYBRIDGE){
$idArg = 'arg-' . urlencode($bridgeName) . '-' . urlencode('proxyoff') . '-' . urlencode('_noproxy'); $idArg = 'arg-'
$card .= '<input id="' . $idArg . '" type="checkbox" name="_noproxy" />' . PHP_EOL; . urlencode($bridgeName)
$card .= '<label for="' .$idArg. '">Disable proxy ('.((defined('PROXY_NAME') && PROXY_NAME)?PROXY_NAME:PROXY_URL).')</label><br />' . PHP_EOL; . '-'
} . urlencode('proxyoff')
. '-'
. urlencode('_noproxy');
$card .= '<input id="'
. $idArg
. '" type="checkbox" name="_noproxy" />'
. PHP_EOL;
$card .= '<label for="'
. $idArg
. '">Disable proxy ('
. ((defined('PROXY_NAME') && PROXY_NAME) ? PROXY_NAME : PROXY_URL)
. ')</label><br />'
. PHP_EOL;
}
$card .= HTMLUtils::getHelperButtonsFormat($formats); $card .= HTMLUtils::getHelperButtonsFormat($formats);
} else { } else {
$card .= '<span style="font-weight: bold;">Inactive</span>'; $card .= '<span style="font-weight: bold;">Inactive</span>';
} }
$card .= '</form>' . PHP_EOL; $card .= '</form>' . PHP_EOL;
} }
@ -138,8 +237,13 @@ CARD;
private static function getHelperButtonsFormat($formats){ private static function getHelperButtonsFormat($formats){
$buttons = ''; $buttons = '';
foreach( $formats as $name){ foreach($formats as $name){
$buttons .= '<button type="submit" name="format" value="' . $name . '">' . $name . '</button>' . PHP_EOL; $buttons .= '<button type="submit" name="format" value="'
. $name
. '">'
. $name
. '</button>'
. PHP_EOL;
} }
return $buttons; return $buttons;
@ -164,22 +268,24 @@ class HTMLSanitizer {
public static $KEPT_ATTRIBUTES = ["title", "href", "src"]; public static $KEPT_ATTRIBUTES = ["title", "href", "src"];
public static $ONLY_TEXT = []; public static $ONLY_TEXT = [];
public function __construct($tags_to_remove = null, $kept_attributes = null, $only_keep_text = null) { public function __construct($tags_to_remove = null
$this->tagsToRemove = $tags_to_remove == null ? HTMLSanitizer::$DEFAULT_CLEAR_TAGS : $tags_to_remove; , $kept_attributes = null
$this->keptAttributes = $kept_attributes == null ? HTMLSanitizer::$KEPT_ATTRIBUTES : $kept_attributes; , $only_keep_text = null){
$this->onlyKeepText = $only_keep_text == null ? HTMLSanitizer::$ONLY_TEXT : $only_keep_text; $this->tagsToRemove = is_null($tags_to_remove) ? HTMLSanitizer::$DEFAULT_CLEAR_TAGS : $tags_to_remove;
$this->keptAttributes = is_null($kept_attributes) ? HTMLSanitizer::$KEPT_ATTRIBUTES : $kept_attributes;
$this->onlyKeepText = is_null($only_keep_text) ? HTMLSanitizer::$ONLY_TEXT : $only_keep_text;
} }
public function sanitize($textToSanitize) { public function sanitize($textToSanitize){
$htmlContent = str_get_html($textToSanitize); $htmlContent = str_get_html($textToSanitize);
foreach($htmlContent->find('*[!b38fd2b1fe7f4747d6b1c1254ccd055e]') as $element) { foreach($htmlContent->find('*[!b38fd2b1fe7f4747d6b1c1254ccd055e]') as $element){
if(in_array($element->tag, $this->onlyKeepText)) { if(in_array($element->tag, $this->onlyKeepText)){
$element->outertext = $element->plaintext; $element->outertext = $element->plaintext;
} else if(in_array($element->tag, $this->tagsToRemove)) { } elseif(in_array($element->tag, $this->tagsToRemove)){
$element->outertext = ''; $element->outertext = '';
} else { } else {
foreach($element->getAllAttributes() as $attributeName => $attribute) { foreach($element->getAllAttributes() as $attributeName => $attribute){
if(!in_array($attributeName, $this->keptAttributes)) if(!in_array($attributeName, $this->keptAttributes))
$element->removeAttribute($attributeName); $element->removeAttribute($attributeName);
} }
@ -189,10 +295,12 @@ class HTMLSanitizer {
return $htmlContent; return $htmlContent;
} }
public static function defaultImageSrcTo($content, $server) { public static function defaultImageSrcTo($content, $server){
foreach($content->find('img') as $image) { foreach($content->find('img') as $image){
if(strpos($image->src, "http") == NULL && strpos($image->src, "//") == NULL && strpos($image->src, "data:") == NULL) if(is_null(strpos($image->src, "http"))
$image->src = $server.$image->src; && is_null(strpos($image->src, "//"))
&& is_null(strpos($image->src, "data:")))
$image->src = $server . $image->src;
} }
return $content; return $content;
} }

View file

@ -19,7 +19,12 @@ require __DIR__ . '/HTMLUtils.php';
$vendorLibSimpleHtmlDom = __DIR__ . PATH_VENDOR . '/simplehtmldom/simple_html_dom.php'; $vendorLibSimpleHtmlDom = __DIR__ . PATH_VENDOR . '/simplehtmldom/simple_html_dom.php';
if( !file_exists($vendorLibSimpleHtmlDom) ){ if( !file_exists($vendorLibSimpleHtmlDom) ){
throw new \HttpException('"PHP Simple HTML DOM Parser" library is missing. Get it from http://simplehtmldom.sourceforge.net and place the script "simple_html_dom.php" in '.substr(PATH_VENDOR,4) . '/simplehtmldom/', 500); throw new \HttpException('"PHP Simple HTML DOM Parser" library is missing.'
. ' Get it from http://simplehtmldom.sourceforge.net and place the script'
. ' "simple_html_dom.php" in '
. substr(PATH_VENDOR,4)
. '/simplehtmldom/'
, 500);
} }
require_once $vendorLibSimpleHtmlDom; require_once $vendorLibSimpleHtmlDom;