diff --git a/libraries/src/Client/FtpClient.php b/libraries/src/Client/FtpClient.php index 9d85bd265aa98..fd5f6de91b80e 100644 --- a/libraries/src/Client/FtpClient.php +++ b/libraries/src/Client/FtpClient.php @@ -11,6 +11,7 @@ defined('JPATH_PLATFORM') or die; use Joomla\CMS\Log\Log; +use Joomla\CMS\Utility\BufferStreamHandler; /** Error Codes: * - 30 : Unable to connect to host @@ -153,11 +154,7 @@ public function __construct(array $options = array()) if (FTP_NATIVE) { - // Import the generic buffer stream handler - \JLoader::import('joomla.utilities.buffer'); - - // Autoloading fails for JBuffer as the class is used as a stream handler - \JLoader::load('JBuffer'); + BufferStreamHandler::stream_register(); } } diff --git a/libraries/src/Utility/BufferStreamHandler.php b/libraries/src/Utility/BufferStreamHandler.php index aa335d834a926..c6bafeb7ef64a 100644 --- a/libraries/src/Utility/BufferStreamHandler.php +++ b/libraries/src/Utility/BufferStreamHandler.php @@ -10,8 +10,8 @@ defined('JPATH_PLATFORM') or die; -// Register the stream -stream_wrapper_register('buffer', '\\Joomla\\CMS\\Utility\\BufferStreamHandler'); +// Workaround for B/C. Will be removed with 4.0 +BufferStreamHandler::stream_register(); /** * Generic Buffer stream handler @@ -47,6 +47,33 @@ class BufferStreamHandler */ public $buffers = array(); + /** + * Status of registering the wrapper + * + * @var boolean + * @since __DEPLOY_VERSION__ + */ + static private $registered = false; + + /** + * Function to register the stream wrapper + * + * @return void + * + * @since __DEPLOY_VERSION__ + */ + public static function stream_register() + { + if (!self::$registered) + { + stream_wrapper_register('buffer', '\\Joomla\\CMS\\Utility\\BufferStreamHandler'); + + self::$registered = true; + } + + return; + } + /** * Function to open file or url *