From dc8b83e800f40f606b596b9722a9a7c4ed6d6f50 Mon Sep 17 00:00:00 2001 From: DariusIII Date: Fri, 21 Jul 2017 10:42:11 +0200 Subject: [PATCH] Update Yenc support to properly detect and use available extensions --- app/Extensions/util/Yenc.php | 6 ++-- .../util/yenc/adapter/NzedbYenc.php | 2 +- app/Extensions/util/yenc/adapter/Php.php | 5 ++- app/Providers/YencServiceProvider.php | 34 ++++++++++--------- bootstrap/bootstrap.php | 2 ++ bootstrap/yenc.php | 26 ++++++-------- 6 files changed, 36 insertions(+), 39 deletions(-) diff --git a/app/Extensions/util/Yenc.php b/app/Extensions/util/Yenc.php index fb0820b07..ad6b79f92 100644 --- a/app/Extensions/util/Yenc.php +++ b/app/Extensions/util/Yenc.php @@ -37,7 +37,7 @@ class Yenc extends YencServiceProvider 'name' => 'default', 'file' => true, ]; - return static::config($options['name'])->decode($text); + return static::config($options)->decode($text); } /** @@ -54,7 +54,7 @@ class Yenc extends YencServiceProvider 'file' => true, ]; - return static::config($options['name'])->decodeIgnore($text); + return static::config($options)->decodeIgnore($text); } /** @@ -72,6 +72,6 @@ class Yenc extends YencServiceProvider { $options += ['name' => 'default']; - return static::config($options['name'])->encode($data, $filename, $line, $crc32); + return static::config($options)->encode($data, $filename, $line, $crc32); } } diff --git a/app/Extensions/util/yenc/adapter/NzedbYenc.php b/app/Extensions/util/yenc/adapter/NzedbYenc.php index 471f3679e..4ede2179a 100644 --- a/app/Extensions/util/yenc/adapter/NzedbYenc.php +++ b/app/Extensions/util/yenc/adapter/NzedbYenc.php @@ -22,7 +22,7 @@ namespace App\Extensions\util\yenc\adapter; use yenc\yenc; -class NzedbYenc extends \App\Extensions\util\Yenc +class NzedbYenc { public static function decode(&$text, $ignore = false, array $options = []) { diff --git a/app/Extensions/util/yenc/adapter/Php.php b/app/Extensions/util/yenc/adapter/Php.php index c0c187fc2..20d9e0027 100644 --- a/app/Extensions/util/yenc/adapter/Php.php +++ b/app/Extensions/util/yenc/adapter/Php.php @@ -17,9 +17,8 @@ * @copyright 2016 nZEDb */ -namespace app\extensions\util\yenc\adapter; +namespace App\Extensions\util\yenc\adapter; -use App\Extensions\util\Yenc; use nntmux\Logger; @@ -28,7 +27,7 @@ use nntmux\Logger; * * @package app\extensions\util\yenc\adapter */ -class Php extends Yenc +class Php { public static function decode(&$text, $ignore = false) { diff --git a/app/Providers/YencServiceProvider.php b/app/Providers/YencServiceProvider.php index 179cdf785..03eb4ab25 100644 --- a/app/Providers/YencServiceProvider.php +++ b/app/Providers/YencServiceProvider.php @@ -2,8 +2,9 @@ namespace App\Providers; -use App\Extensions\util\Yenc; use Illuminate\Support\ServiceProvider; +use App\Extensions\util\yenc\adapter\NzedbYenc; +use App\Extensions\util\yenc\adapter\Php; class YencServiceProvider extends ServiceProvider { @@ -15,7 +16,7 @@ class YencServiceProvider extends ServiceProvider */ public function boot() { - // + } /** @@ -25,31 +26,32 @@ class YencServiceProvider extends ServiceProvider */ public function register() { - // + } + /** + * @param array $options + * + * @return mixed + * @internal param $option + * + */ public static function config(array $options = []) { $defaults = [ ['name' => [ - 'default' => [ - 'adapter' => '' - ], - - 'nzedb' => [ - 'adapter' => 'NzedbYenc' - ], - - 'php' => [ - 'adapter' => 'Php' - ], - ] + 'default' => 'Php' + ] ] ]; $options += $defaults; - return $options['name']; + $namespace = '\App\Extensions\util\yenc\adapter\\'; + + $class = $namespace . $options[0]['name']['default']; + + return new $class; } } diff --git a/bootstrap/bootstrap.php b/bootstrap/bootstrap.php index 884dec164..f28c75966 100644 --- a/bootstrap/bootstrap.php +++ b/bootstrap/bootstrap.php @@ -3,6 +3,8 @@ require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . 'nntmux' . DIRECTORY_SEPARATOR . 'constants.php'; require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . 'nntmux' . DIRECTORY_SEPARATOR . 'bootstrap.php'; require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'nntmux.php'; +require_once __DIR__ . DIRECTORY_SEPARATOR . 'yenc.php'; + use Dotenv\Dotenv; diff --git a/bootstrap/yenc.php b/bootstrap/yenc.php index 6e5181ada..1069ade45 100644 --- a/bootstrap/yenc.php +++ b/bootstrap/yenc.php @@ -17,8 +17,6 @@ * @copyright 2016 nZEDb */ -use app\models\Settings; - if (defined('NN_INSTALLER') && NN_INSTALLER !== false) { $adapter = 'Php'; @@ -36,25 +34,21 @@ if (defined('NN_INSTALLER') && NN_INSTALLER !== false) { break; } else { trigger_error('Your version of the php-yenc extension is out of date and will be - ignored. Please update it to use the extension.', E_USER_WARNING); + ignored. Please update it to use the extension.', E_USER_WARNING + ); } default: $adapter = 'Php'; } } -\App\Extensions\util\Yenc::config([ - 'default' => [ - 'adapter' => $adapter - ], - - 'nzedb' => [ - 'adapter' => 'NzedbYenc' - ], - - 'php' => [ - 'adapter' => 'Php' - ], -]); +\App\Providers\YencServiceProvider::config([ + ['name' => + [ + 'default' => $adapter + ] + ] + ] +); ?>