diff --git a/phpBB/adm/style/acp_ext_catalog.html b/phpBB/adm/style/acp_ext_catalog.html index a6e9995cbb..84839adf9c 100644 --- a/phpBB/adm/style/acp_ext_catalog.html +++ b/phpBB/adm/style/acp_ext_catalog.html @@ -110,10 +110,8 @@ {{ lang('INSTALLED') }} {% elseif extension.name in installed_extensions -%} {{ lang('INSTALLED_MANUALLY') }} - {%- if enabled -%}
- ({{ lang('MANAGE') }}) - {%- endif -%} - {% elseif enabled -%} + ({{ lang('MANAGE') }}) + {% elseif not enabled -%} {{ lang('INSTALL') }} {%- endif -%} diff --git a/phpBB/composer-ext.json b/phpBB/composer-ext.json index e69de29bb2..8194460949 100644 --- a/phpBB/composer-ext.json +++ b/phpBB/composer-ext.json @@ -0,0 +1,160 @@ +{ + "require": { + "php": ">=5.5.9", + "bantu/ini-get-wrapper": "v1.0.1", + "google/recaptcha": "1.1.2", + "lusitanian/oauth": "v0.8.9", + "patchwork/utf8": "v1.1.31", + "psr/log": "1.0.0", + "ocramius/proxy-manager": "1.0.2", + "phing/phing": "2.4.14", + "sebastian/version": "1.0.6", + "sebastian/recursion-context": "1.0.2", + "sebastian/diff": "1.4.1", + "sebastian/comparator": "1.2.0", + "phpunit/php-text-template": "1.2.1", + "phpunit/php-token-stream": "1.4.8", + "phpunit/php-code-coverage": "2.2.4", + "paragonie/random_compat": "v1.4.1", + "symfony/polyfill-mbstring": "v1.2.0", + "squizlabs/php_codesniffer": "2.6.2", + "twig/twig": "v1.24.1", + "sebastian/exporter": "1.2.2", + "sebastian/environment": "1.3.7", + "phpunit/php-timer": "1.0.8", + "marc1706/fast-image-size": "v1.1.1", + "s9e/text-formatter": "0.6.2", + "guzzlehttp/psr7": "1.3.1", + "guzzlehttp/promises": "1.2.0", + "guzzlehttp/guzzle": "6.2.1", + "fabpot/goutte": "v3.1.2", + "facebook/webdriver": "1.1.1", + "symfony/process": "v3.1.3", + "laravel/homestead": "v3.0.2", + "sebastian/global-state": "1.1.1", + "doctrine/instantiator": "1.0.5", + "phpunit/phpunit-mock-objects": "2.3.8", + "phpunit/php-file-iterator": "1.4.1", + "phpdocumentor/reflection-common": "1.0", + "phpdocumentor/type-resolver": "0.2", + "phpdocumentor/reflection-docblock": "3.1.0", + "phpspec/prophecy": "v1.6.1", + "phpunit/phpunit": "4.8.27", + "phpunit/dbunit": "2.0.2", + "zendframework/zend-eventmanager": "3.0.1", + "zendframework/zend-code": "2.6.3", + "psr/http-message": "1.0", + "symfony/filesystem": "v3.1.3", + "symfony/config": "v3.1.3", + "symfony/http-foundation": "v3.1.3", + "symfony/event-dispatcher": "v3.1.3", + "symfony/debug": "v3.1.3", + "symfony/http-kernel": "v3.1.3", + "symfony/dependency-injection": "v3.1.3", + "symfony/proxy-manager-bridge": "v3.1.3", + "symfony/routing": "v3.1.3", + "symfony/twig-bridge": "v3.1.3", + "symfony/yaml": "v3.1.3", + "symfony/dom-crawler": "v3.1.3", + "symfony/browser-kit": "v3.1.3", + "symfony/css-selector": "v3.1.3", + "webmozart/assert": "1.0.2", + "symfony/finder": "v3.1.3", + "symfony/console": "v3.1.3", + "seld/phar-utils": "1.0.1", + "seld/jsonlint": "1.4.0", + "seld/cli-prompt": "1.0.2", + "justinrainbow/json-schema": "2.0.5", + "composer/spdx-licenses": "1.1.4", + "composer/semver": "1.4.2", + "composer/ca-bundle": "1.0.3", + "composer/composer": "1.2.0", + "phpbb/phpbb": "3.2.0-RC1", + "crizzo/aboutus": "*", + "phpbb/autogroups": "*" + }, + "replace": { + "bantu/ini-get-wrapper": "v1.0.1", + "google/recaptcha": "1.1.2", + "lusitanian/oauth": "v0.8.9", + "patchwork/utf8": "v1.1.31", + "psr/log": "1.0.0", + "ocramius/proxy-manager": "1.0.2", + "phing/phing": "2.4.14", + "sebastian/version": "1.0.6", + "sebastian/recursion-context": "1.0.2", + "sebastian/diff": "1.4.1", + "sebastian/comparator": "1.2.0", + "phpunit/php-text-template": "1.2.1", + "phpunit/php-token-stream": "1.4.8", + "phpunit/php-code-coverage": "2.2.4", + "paragonie/random_compat": "v1.4.1", + "symfony/polyfill-mbstring": "v1.2.0", + "squizlabs/php_codesniffer": "2.6.2", + "twig/twig": "v1.24.1", + "sebastian/exporter": "1.2.2", + "sebastian/environment": "1.3.7", + "phpunit/php-timer": "1.0.8", + "marc1706/fast-image-size": "v1.1.1", + "s9e/text-formatter": "0.6.2", + "guzzlehttp/psr7": "1.3.1", + "guzzlehttp/promises": "1.2.0", + "guzzlehttp/guzzle": "6.2.1", + "fabpot/goutte": "v3.1.2", + "facebook/webdriver": "1.1.1", + "symfony/process": "v3.1.3", + "laravel/homestead": "v3.0.2", + "sebastian/global-state": "1.1.1", + "doctrine/instantiator": "1.0.5", + "phpunit/phpunit-mock-objects": "2.3.8", + "phpunit/php-file-iterator": "1.4.1", + "phpdocumentor/reflection-common": "1.0", + "phpdocumentor/type-resolver": "0.2", + "phpdocumentor/reflection-docblock": "3.1.0", + "phpspec/prophecy": "v1.6.1", + "phpunit/phpunit": "4.8.27", + "phpunit/dbunit": "2.0.2", + "zendframework/zend-eventmanager": "3.0.1", + "zendframework/zend-code": "2.6.3", + "psr/http-message": "1.0", + "symfony/filesystem": "v3.1.3", + "symfony/config": "v3.1.3", + "symfony/http-foundation": "v3.1.3", + "symfony/event-dispatcher": "v3.1.3", + "symfony/debug": "v3.1.3", + "symfony/http-kernel": "v3.1.3", + "symfony/dependency-injection": "v3.1.3", + "symfony/proxy-manager-bridge": "v3.1.3", + "symfony/routing": "v3.1.3", + "symfony/twig-bridge": "v3.1.3", + "symfony/yaml": "v3.1.3", + "symfony/dom-crawler": "v3.1.3", + "symfony/browser-kit": "v3.1.3", + "symfony/css-selector": "v3.1.3", + "webmozart/assert": "1.0.2", + "symfony/finder": "v3.1.3", + "symfony/console": "v3.1.3", + "seld/phar-utils": "1.0.1", + "seld/jsonlint": "1.4.0", + "seld/cli-prompt": "1.0.2", + "justinrainbow/json-schema": "2.0.5", + "composer/spdx-licenses": "1.1.4", + "composer/semver": "1.4.2", + "composer/ca-bundle": "1.0.3", + "composer/composer": "1.2.0", + "phpbb/phpbb": "3.2.0-RC1" + }, + "repositories": [ + { + "packagist": false + }, + { + "type": "composer", + "url": "https://www.phpbb.com/customise/db/composer/" + } + ], + "config": { + "vendor-dir": "vendor-ext/" + }, + "minimum-stability": "stable" +} diff --git a/phpBB/composer-ext.lock b/phpBB/composer-ext.lock index e69de29bb2..e26a1065b5 100644 --- a/phpBB/composer-ext.lock +++ b/phpBB/composer-ext.lock @@ -0,0 +1,257 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" + ], + "hash": "bc644abe8f4679d245f64777bddac9f2", + "content-hash": "bf9b94509582458eddbadef8384bfdf5", + "packages": [ + { + "name": "composer/installers", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/composer/installers.git", + "reference": "d78064c68299743e0161004f2de3a0204e33b804" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/installers/zipball/d78064c68299743e0161004f2de3a0204e33b804", + "reference": "d78064c68299743e0161004f2de3a0204e33b804", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0" + }, + "replace": { + "roundcube/plugin-installer": "*", + "shama/baton": "*" + }, + "require-dev": { + "composer/composer": "1.0.*@dev", + "phpunit/phpunit": "4.1.*" + }, + "type": "composer-plugin", + "extra": { + "class": "Composer\\Installers\\Plugin", + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Installers\\": "src/Composer/Installers" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kyle Robinson Young", + "email": "kyle@dontkry.com", + "homepage": "https://github.com/shama" + } + ], + "description": "A multi-framework Composer library installer", + "homepage": "https://composer.github.io/installers/", + "keywords": [ + "Craft", + "Dolibarr", + "Hurad", + "ImageCMS", + "MODX Evo", + "Mautic", + "OXID", + "Plentymarkets", + "RadPHP", + "SMF", + "Thelia", + "WolfCMS", + "agl", + "aimeos", + "annotatecms", + "attogram", + "bitrix", + "cakephp", + "chef", + "cockpit", + "codeigniter", + "concrete5", + "croogo", + "dokuwiki", + "drupal", + "elgg", + "expressionengine", + "fuelphp", + "grav", + "installer", + "joomla", + "kohana", + "laravel", + "lithium", + "magento", + "mako", + "mediawiki", + "modulework", + "moodle", + "phpbb", + "piwik", + "ppi", + "puppet", + "reindex", + "roundcube", + "shopware", + "silverstripe", + "symfony", + "typo3", + "wordpress", + "yawik", + "zend", + "zikula" + ], + "time": "2016-08-13 20:53:52" + }, + { + "name": "crizzo/aboutus", + "version": "2.0.4", + "dist": { + "type": "zip", + "url": "https://www.phpbb.com/customise/db/download/121131/composer", + "reference": null, + "shasum": null + }, + "require": { + "php": ">=5.3.3" + }, + "type": "phpbb-extension", + "extra": { + "display-name": "About us", + "soft-require": { + "phpbb/phpbb": ">=3.1.2" + }, + "version-check": { + "host": "www.phpbb.com", + "directory": "/customise/db/extension/about_us", + "filename": "version_check" + } + }, + "license": [ + "GPL-2.0" + ], + "authors": [ + { + "name": "Christian Schnegelberger", + "username": "Crizzo", + "email": "kontakt@crizzo.de", + "homepage": "http://www.crizzo.de", + "role": "Developer/Founder" + } + ], + "description": "About us is an extension which adds to phpBB 3.1 a about us or legal notice-page, where you can add your contact details and more.", + "homepage": "https://www.phpbb.com/customise/db/extension/about_us/", + "time": "2015-10-23 00:00:00" + }, + { + "name": "phpbb/autogroups", + "version": "1.0.1", + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpbb-extensions/autogroups/zipball/38ffd4dfaa839310f42be43b32075c8237f239d0", + "reference": "38ffd4dfaa839310f42be43b32075c8237f239d0", + "shasum": "" + }, + "require": { + "composer/installers": "~1.0", + "php": ">=5.3.3" + }, + "require-dev": { + "phing/phing": "2.4.*", + "phpbb/epv": "dev-master" + }, + "type": "phpbb-extension", + "extra": { + "display-name": "Auto Groups", + "soft-require": { + "phpbb/phpbb": ">=3.1.0,<3.2.*@dev" + }, + "version-check": { + "host": "www.phpbb.com", + "directory": "/customise/db/extension/auto_groups", + "filename": "version_check" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0" + ], + "authors": [ + { + "name": "Michael Cullum", + "email": "michael@phpbb.com", + "homepage": "http://michaelcullum.com", + "role": "Extensions Team Consultant" + }, + { + "name": "Marc Alexander", + "email": "admin@m-a-styles.de", + "homepage": "http://www.m-a-styles.de", + "role": "Extensions Team Consultant" + }, + { + "name": "Matt Friedman", + "homepage": "http://mattfriedman.me", + "role": "Extensions Development Team Lead" + }, + { + "name": "Nathan Guse", + "email": "nathaniel.guse@gmail.com", + "role": "Former Extensions Development Team Lead" + }, + { + "name": "Clemens Husung", + "email": "wolfsblvt@pinkes-forum.de", + "role": "Extensions Development Team" + }, + { + "name": "Lukasz Kaczynski", + "role": "Former Extensions Development Team Member" + }, + { + "name": "John Peskens", + "email": "info@forumhulp.com", + "homepage": "http://forumhulp.com", + "role": "Former Extensions Development Team Member" + }, + { + "name": "Ruslan Uzdenov", + "homepage": "http://www.phpbbguru.net", + "role": "Extensions Development Team" + } + ], + "description": "An extension that can automate the process of adding and removing users from groups upon reaching specified milestones related to their post count, age, membership, and warnings count.", + "homepage": "https://www.phpbb.com", + "keywords": [ + "auto", + "extension", + "groups", + "phpbb" + ], + "time": "2015-09-05 17:30:29" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": { + "phpbb/phpbb": 5 + }, + "prefer-stable": true, + "prefer-lowest": false, + "platform": { + "php": ">=5.5.9" + }, + "platform-dev": [] +} diff --git a/phpBB/composer.json b/phpBB/composer.json index 324ef32a1f..6f8e930c8b 100644 --- a/phpBB/composer.json +++ b/phpBB/composer.json @@ -27,6 +27,7 @@ "require": { "php": ">=5.5.9", "bantu/ini-get-wrapper": "1.0.*", + "composer/composer": "^1.0", "google/recaptcha": "~1.1", "guzzlehttp/guzzle": "~6.2", "lusitanian/oauth": "^0.8.1", @@ -47,8 +48,7 @@ "symfony/routing": "~3.1", "symfony/twig-bridge": "~3.1", "symfony/yaml": "~3.1", - "twig/twig": "^1.0,<1.25", - "composer/composer": "^1.0" + "twig/twig": "^1.0,<1.25" }, "require-dev": { "fabpot/goutte": "~3.1", diff --git a/phpBB/composer.lock b/phpBB/composer.lock index 6ad23abf13..81903906a7 100644 --- a/phpBB/composer.lock +++ b/phpBB/composer.lock @@ -4,8 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "80752e19604f3bd6ac0af14d488a748b", - "content-hash": "60c4fa2116744111294d5c3a5c21afdd", + "hash": "fb27e08d4d657b78f87a3327a41d9e20", + "content-hash": "274c9cfc16d9a9cd40daffe7383d568a", "packages": [ { "name": "bantu/ini-get-wrapper", diff --git a/phpBB/includes/acp/acp_extensions.php b/phpBB/includes/acp/acp_extensions.php index b0a18719d1..eda3bace35 100644 --- a/phpBB/includes/acp/acp_extensions.php +++ b/phpBB/includes/acp/acp_extensions.php @@ -624,7 +624,14 @@ class acp_extensions $enable_on_install = $this->request->variable('enable_on_install', false); $purge_on_remove = $this->request->variable('purge_on_remove', false); $minimum_stability = $this->request->variable('minimum_stability', 'stable'); - $repositories = array_unique(explode("\n", $this->request->variable('repositories', ''))); + $repositories = array_unique( + array_filter( + array_map( + 'trim', + explode("\n", $this->request->variable('repositories', '')) + ) + ) + ); $previous_minimum_stability = $this->config['exts_composer_minimum_stability']; $previous_repositories = $this->config['exts_composer_repositories']; diff --git a/phpBB/phpbb/composer/installer.php b/phpBB/phpbb/composer/installer.php index 205312f9e3..b3933954f9 100644 --- a/phpBB/phpbb/composer/installer.php +++ b/phpBB/phpbb/composer/installer.php @@ -27,6 +27,7 @@ use phpbb\composer\io\null_io; use phpbb\config\config; use phpbb\exception\runtime_exception; use phpbb\filesystem\filesystem; +use Seld\JsonLint\ParsingException; /** * Class to install packages through composer while freezing core dependencies. @@ -513,7 +514,19 @@ class installer $this->ext_json_file_backup = null; $json_file = new JsonFile($this->get_composer_ext_json_filename()); - $ext_json_file_backup = $json_file->read(); + + try + { + $ext_json_file_backup = $json_file->read(); + } + catch (ParsingException $e) + { + $ext_json_file_backup = '{}'; + + $lockFile = new JsonFile(substr($this->get_composer_ext_json_filename(), 0, -5) . '.lock'); + $lockFile->write([]); + } + $json_file->write($ext_json_data); $this->ext_json_file_backup = $ext_json_file_backup; } diff --git a/phpBB/phpbb/composer/io/translate_composer_trait.php b/phpBB/phpbb/composer/io/translate_composer_trait.php index 9a0f63ceb5..444cf38e6b 100644 --- a/phpBB/phpbb/composer/io/translate_composer_trait.php +++ b/phpBB/phpbb/composer/io/translate_composer_trait.php @@ -33,7 +33,7 @@ trait translate_composer_trait /** * {@inheritdoc} */ - public function write($messages, $newline = true) + public function write($messages, $newline = true, $verbosity = self::NORMAL) { $messages = (array) $messages; $translated_messages = []; @@ -96,7 +96,7 @@ trait translate_composer_trait /** * {@inheritdoc} */ - public function writeError($messages, $newline = true) + public function writeError($messages, $newline = true, $verbosity = self::NORMAL) { $messages = (array) $messages; $translated_messages = []; diff --git a/phpBB/phpbb/composer/manager.php b/phpBB/phpbb/composer/manager.php index 8cc9a6ab8f..db2f713509 100644 --- a/phpBB/phpbb/composer/manager.php +++ b/phpBB/phpbb/composer/manager.php @@ -253,7 +253,7 @@ class manager implements manager_interface { $this->available_packages = $this->cache->get('_composer_' . $this->package_type . '_available'); - if (!$this->available_packages) + if (true || !$this->available_packages) { $this->available_packages = $this->installer->get_available_packages($this->package_type); $this->cache->put('_composer_' . $this->package_type . '_available', $this->available_packages, 24*60*60);