diff --git a/phpBB/phpbb/composer/installer.php b/phpBB/phpbb/composer/installer.php index 72378cfa73..7731d5c074 100644 --- a/phpBB/phpbb/composer/installer.php +++ b/phpBB/phpbb/composer/installer.php @@ -287,7 +287,6 @@ class installer $packages), 'replace' => $core_packages, 'repositories' => $this->get_composer_repositories(), - 'minimum-stability' => 'dev', ]; $json_file = new JsonFile($this->get_composer_ext_json_filename()); diff --git a/phpBB/phpbb/composer/io/console_io.php b/phpBB/phpbb/composer/io/console_io.php index bf1754d4c0..33ac77ba4e 100644 --- a/phpBB/phpbb/composer/io/console_io.php +++ b/phpBB/phpbb/composer/io/console_io.php @@ -21,15 +21,7 @@ use Symfony\Component\Console\Output\OutputInterface; class console_io extends ConsoleIO { - /** - * @var language - */ - protected $language; - - /** - * @var array - */ - protected $composer_error; + use translate_composer_trait; /** * Constructor. @@ -44,174 +36,4 @@ class console_io extends ConsoleIO parent::__construct($input, $output, $helperSet); } - - /** - * {@inheritdoc} - */ - public function write($messages, $newline = true) - { - $messages = (array) $messages; - $translated_messages = []; - - foreach ($messages as $message) - { - $lang_key = $message; - $parameters = []; - $level = 0; - - $message = trim(strip_tags($message), "\n\r"); - - if (strpos($message, 'Deleting ') === 0) - { - $elements = explode(' ', $message); - $lang_key = 'COMPOSER_DELETING'; - $parameters = [$elements[1]]; - } - - //$translated_message = $this->language->lang_array($lang_key, $parameters); - $translated_message = call_user_func_array([$this->language, 'lang'], array_merge((array)$lang_key, $parameters)); - - switch ($level) - { - case 1: - $translated_message = '' . $translated_message . ''; - break; - case 2: - $translated_message = '' . $translated_message . ''; - break; - case 3: - $translated_message = '' . $translated_message . ''; - break; - case 4: - $translated_message = '' . $translated_message . ''; - break; - } - - $translated_messages[] = $translated_message; - } - - parent::write($translated_messages, $newline); - } - - /** - * {@inheritdoc} - */ - public function writeError($messages, $newline = true) - { - $messages = (array) $messages; - $translated_messages = []; - - foreach ($messages as $message) - { - $lang_key = $message; - $parameters = []; - $level = 0; - - $message = trim(strip_tags($message), "\n\r"); - - if (strpos($message, ' Problem ') === 0) - { - if ($this->output->getVerbosity() < OutputInterface::VERBOSITY_VERBOSE) - { - continue; - } - - $lang_key = "\n" . $message . "\n"; - $level = 4; - } - else if ($message === 'Updating dependencies') - { - $lang_key = 'COMPOSER_UPDATING_DEPENDENCIES'; - $level = 1; - } - else if ($message === 'Loading composer repositories with package information') - { - $lang_key = 'COMPOSER_LOADING_REPOSITORIES'; - $level = 1; - } - else if ($message === 'Your requirements could not be resolved to an installable set of packages.') - { - $this->composer_error[] = ['COMPOSER_ERROR_CONFLICT', []]; - continue; - } - else if (strpos($message, 'could not be fully loaded, package information was loaded from the local cache and may be out of date') !== false) - { - $end_repo = strpos($message, 'could not be fully loaded, package information was loaded from the local cache and may be out of date'); - $repo = substr($message, 0, $end_repo - 1); - - $lang_key = 'COMPOSER_REPOSITORY_UNAVAILABLE'; - $parameters = [$repo]; - $level = 3; - } - else if (strpos($message, 'file could not be downloaded') !== false) - { - continue; - } - else if (strpos($message, ' - Installing ') === 0) - { - $elements = explode(' ', $message); - $lang_key = 'COMPOSER_INSTALLING_PACKAGE'; - $parameters = [$elements[4], trim($elements[5], '()')]; - } - else if ($message === 'Nothing to install or update') - { - $lang_key = 'COMPOSER_UPDATE_NOTHING'; - $level = 3; - } - else if ($message === ' Downloading') - { - continue; - } - else if ($message === ' Loading from cache') - { - continue; - } - else if ($message === 'Writing lock file') - { - continue; - } - else if (empty($message)) - { - continue; - } - - //$translated_message = $this->language->lang_array($lang_key, $parameters); - $translated_message = call_user_func_array([$this->language, 'lang'], array_merge((array)$lang_key, $parameters)); - - switch ($level) - { - case 1: - $translated_message = '' . $translated_message . ''; - break; - case 2: - $translated_message = '' . $translated_message . ''; - break; - case 3: - $translated_message = '' . $translated_message . ''; - break; - case 4: - $translated_message = '' . $translated_message . ''; - break; - } - - $translated_messages[] = $translated_message; - } - - parent::writeError($translated_messages, $newline); - } - - public function get_composer_error() - { - $error = ''; - foreach ($this->composer_error as $error_line) - { - // $error .= $this->language->lang_array($error_line[0], $error_line[1]); - $error .= call_user_func_array([$this->language, 'lang'], array_merge((array)$error_line[0], $error_line[1])); - $error .= "\n"; - } - - $this->composer_error = []; - - return $error; - } } diff --git a/phpBB/phpbb/composer/io/translate_composer_trait.php b/phpBB/phpbb/composer/io/translate_composer_trait.php new file mode 100644 index 0000000000..376ef28a80 --- /dev/null +++ b/phpBB/phpbb/composer/io/translate_composer_trait.php @@ -0,0 +1,200 @@ + + * @license GNU General Public License, version 2 (GPL-2.0) + * + * For full copyright and license information, please see + * the docs/CREDITS.txt file. + * + */ + +namespace phpbb\composer\io; + +use phpbb\language\language; +use Symfony\Component\Console\Output\OutputInterface; + +trait translate_composer_trait +{ + /** + * @var language + */ + protected $language; + + /** + * @var array + */ + protected $composer_error; + + /** + * {@inheritdoc} + */ + public function write($messages, $newline = true) + { + $messages = (array) $messages; + $translated_messages = []; + + foreach ($messages as $message) + { + $lang_key = $message; + $parameters = []; + $level = 0; + + $message = trim(strip_tags($message), "\n\r"); + + if (strpos($message, 'Deleting ') === 0) + { + $elements = explode(' ', $message); + $lang_key = 'COMPOSER_DELETING'; + $parameters = [$elements[1]]; + } + + //$translated_message = $this->language->lang_array($lang_key, $parameters); + $translated_message = call_user_func_array([$this->language, 'lang'], array_merge((array)$lang_key, $parameters)); + + switch ($level) + { + case 1: + $translated_message = '' . $translated_message . ''; + break; + case 2: + $translated_message = '' . $translated_message . ''; + break; + case 3: + $translated_message = '' . $translated_message . ''; + break; + case 4: + $translated_message = '' . $translated_message . ''; + break; + } + + $translated_messages[] = $translated_message; + } + + parent::write($translated_messages, $newline); + } + + /** + * {@inheritdoc} + */ + public function writeError($messages, $newline = true) + { + $messages = (array) $messages; + $translated_messages = []; + + foreach ($messages as $message) + { + $lang_key = $message; + $parameters = []; + $level = 0; + + $message = trim(strip_tags($message), "\n\r"); + + if (strpos($message, ' Problem ') === 0) + { + if ($this->output->getVerbosity() < OutputInterface::VERBOSITY_VERBOSE) + { + continue; + } + + $lang_key = "\n" . $message . "\n"; + $level = 4; + } + else if ($message === 'Updating dependencies') + { + $lang_key = 'COMPOSER_UPDATING_DEPENDENCIES'; + $level = 1; + } + else if ($message === 'Loading composer repositories with package information') + { + $lang_key = 'COMPOSER_LOADING_REPOSITORIES'; + $level = 1; + } + else if ($message === 'Your requirements could not be resolved to an installable set of packages.') + { + $this->composer_error[] = ['COMPOSER_ERROR_CONFLICT', []]; + continue; + } + else if (strpos($message, 'could not be fully loaded, package information was loaded from the local cache and may be out of date') !== false) + { + $end_repo = strpos($message, 'could not be fully loaded, package information was loaded from the local cache and may be out of date'); + $repo = substr($message, 0, $end_repo - 1); + + $lang_key = 'COMPOSER_REPOSITORY_UNAVAILABLE'; + $parameters = [$repo]; + $level = 3; + } + else if (strpos($message, 'file could not be downloaded') !== false) + { + continue; + } + else if (strpos($message, ' - Installing ') === 0) + { + $elements = explode(' ', $message); + $lang_key = 'COMPOSER_INSTALLING_PACKAGE'; + $parameters = [$elements[4], trim($elements[5], '()')]; + } + else if ($message === 'Nothing to install or update') + { + $lang_key = 'COMPOSER_UPDATE_NOTHING'; + $level = 3; + } + else if ($message === ' Downloading') + { + continue; + } + else if ($message === ' Loading from cache') + { + continue; + } + else if ($message === 'Writing lock file') + { + continue; + } + else if (empty($message)) + { + continue; + } + + //$translated_message = $this->language->lang_array($lang_key, $parameters); + $translated_message = call_user_func_array([$this->language, 'lang'], array_merge((array)$lang_key, $parameters)); + + switch ($level) + { + case 1: + $translated_message = '' . $translated_message . ''; + break; + case 2: + $translated_message = '' . $translated_message . ''; + break; + case 3: + $translated_message = '' . $translated_message . ''; + break; + case 4: + $translated_message = '' . $translated_message . ''; + break; + } + + $translated_messages[] = $translated_message; + } + + parent::writeError($translated_messages, $newline); + } + + public function get_composer_error() + { + $error = ''; + foreach ($this->composer_error as $error_line) + { + // $error .= $this->language->lang_array($error_line[0], $error_line[1]); + $error .= call_user_func_array([$this->language, 'lang'], array_merge((array)$error_line[0], $error_line[1])); + $error .= "\n"; + } + + $this->composer_error = []; + + return $error; + } +} diff --git a/phpBB/phpbb/composer/io/web_io.php b/phpBB/phpbb/composer/io/web_io.php new file mode 100644 index 0000000000..9e8aa6ec76 --- /dev/null +++ b/phpBB/phpbb/composer/io/web_io.php @@ -0,0 +1,39 @@ + + * @license GNU General Public License, version 2 (GPL-2.0) + * + * For full copyright and license information, please see + * the docs/CREDITS.txt file. + * + */ + +namespace phpbb\composer\io; + +use Composer\IO\BufferIO; +use phpbb\language\language; +use Symfony\Component\Console\Helper\HelperSet; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +class web_io extends BufferIO +{ + use translate_composer_trait; + + /** + * Constructor. + * + * @param InputInterface $input The input instance + * @param OutputInterface $output The output instance + * @param HelperSet $helperSet The helperSet instance + */ + public function __construct(InputInterface $input, OutputInterface $output, HelperSet $helperSet, language $language) + { + $this->language = $language; + + parent::__construct($input, $output, $helperSet); + } +}