diff --git a/.github/workflows/tests-3.2.yml b/.github/workflows/tests-3.2.yml
new file mode 100644
index 0000000..08b6319
--- /dev/null
+++ b/.github/workflows/tests-3.2.yml
@@ -0,0 +1,61 @@
+name: Tests phpBB 3.2
+
+on:
+ workflow_call:
+
+env:
+ EXTNAME: gn36/hookup
+ PHPBB_BRANCH: 3.2.x
+
+jobs:
+ tests:
+ name: PHP ${{ matrix.php }}
+ runs-on: ubuntu-22.04
+ strategy:
+ fail-fast: false
+ matrix:
+ # phpBB 3.2.x selbst unterstützt PHP 7.3 und neuer nicht (Notices im Core)
+ php: ['5.6', '7.1', '7.2']
+
+ steps:
+ - name: Checkout phpBB
+ uses: actions/checkout@v4
+ with:
+ repository: phpbb/phpbb
+ ref: ${{ env.PHPBB_BRANCH }}
+ path: phpBB3
+
+ - name: Checkout extension
+ uses: actions/checkout@v4
+ with:
+ path: phpBB3/phpBB/ext/${{ env.EXTNAME }}
+
+ - name: Setup PHP
+ uses: shivammathur/setup-php@v2
+ with:
+ php-version: ${{ matrix.php }}
+ extensions: dom, curl, libxml, mbstring, zip, pdo, sqlite, pdo_sqlite, intl, gd, iconv
+ tools: composer:v2
+ coverage: none
+
+ - name: Install phpBB dependencies
+ run: composer install --dev --no-interaction --no-progress
+ working-directory: ./phpBB3/phpBB
+
+ - name: Install extension dependencies
+ run: composer install --no-interaction --no-progress
+ working-directory: ./phpBB3/phpBB/ext/${{ env.EXTNAME }}
+
+ - name: Start web server for functional tests
+ run: nohup php -S 127.0.0.1:8000 -t . > /tmp/php-server.log 2>&1 &
+ working-directory: ./phpBB3
+
+ - name: Run unit and functional tests
+ env:
+ PHPBB_TEST_DBMS: sqlite3
+ PHPBB_TEST_DBHOST: /tmp/phpbb_test.sqlite
+ PHPBB_FUNCTIONAL_URL: http://127.0.0.1:8000/phpBB/
+ run: |
+ phpBB/vendor/bin/phpunit --configuration "phpBB/ext/$EXTNAME/phpunit.xml.dist" --testsuite "Extension Test Suite"
+ phpBB/vendor/bin/phpunit --configuration "phpBB/ext/$EXTNAME/phpunit.xml.dist" --testsuite "Extension Functional Tests"
+ working-directory: ./phpBB3
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
new file mode 100644
index 0000000..683c2ac
--- /dev/null
+++ b/.github/workflows/tests.yml
@@ -0,0 +1,24 @@
+name: Tests
+
+on:
+ push:
+ branches:
+ - master
+ pull_request:
+
+jobs:
+ # phpBB 3.3.x: gemeinsamer Workflow der phpBB-Extension-Entwickler (Sniffer, EPV, Unit- und Funktionstests auf allen DBs)
+ # Der Branch 3.3.x des Frameworks zielt auf phpBB 3.3.x (master zielt auf phpBB 4)
+ phpbb-3-3:
+ name: phpBB 3.3
+ uses: phpbb-extensions/test-framework/.github/workflows/tests.yml@3.3.x
+ with:
+ EXTNAME: gn36/hookup
+ PHPBB_BRANCH: 3.3.x
+ # Die Funktionstests benötigen die Composer-Abhängigkeiten (vendor/) der Erweiterung
+ RUN_COMPOSER_INSTALL: '1'
+
+ # phpBB 3.2.x: das Framework unterstützt nur 3.3.x, daher ein eigener, kleiner Workflow
+ phpbb-3-2:
+ name: phpBB 3.2
+ uses: ./.github/workflows/tests-3.2.yml
diff --git a/.gitignore b/.gitignore
index b7c6d4a..d1ed8b3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
components/*
-vendor/*
\ No newline at end of file
+vendor/*
+composer.lock
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 2cefa61..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,62 +0,0 @@
-language: php
-sudo: required
-dist: xenial
-
-matrix:
- include:
- - php: 7.3
- env: DB=mariadb # MyISAM
- - php: 7.4
- env: DB=mysqli
- - php: 7.4
- env: DB=mariadb
- - php: 7.4
- env: DB=postgres
- - php: 7.4
- env: DB=sqlite3
- - php: 7.2
- env: DB=mariadb
- - php: 7.1
- env: DB=mariadb
- - php: 8.0
- env: DB=mariadb
- - php: hhvm
- env: DB=mariadb
- allow_failures:
- - php: hhvm
- fast_finish: true
-
-env:
- global:
- - EXTNAME="gn36/hookup" # CHANGE name of the extension HERE
- - SNIFF="1" # Should we run code sniffer on your code?
- - IMAGE_ICC="1" # Should we run icc profile sniffer on your images?
- - EPV="1" # Should we run EPV (Extension Pre Validator) on your code?
- - PHPBB_BRANCH="3.3.x"
-
-branches:
- only:
- - master
- - develop
- - /^dev\/.*$/
-
-install:
- - if [ "${TRAVIS_PHP_VERSION}" = "5.3.3" ]; then cat composer.json | sed 's/"version"/"config":{\n\t\t"disable-tls":true,\n\t\t"secure-http":false\n\t},\n\t"version"/' > composer.tmp.json ; mv composer.tmp.json composer.json ; fi
- - composer self-update --1 # Enforce composer version 1 for now
- - composer install --dev --no-interaction --prefer-source
- - chmod +x travis/prepare-phpbb.sh
- - travis/prepare-phpbb.sh $EXTNAME $PHPBB_BRANCH
- - travis/prepare-langtest.sh $EXTNAME $PHPBB_BRANCH
- - cd ../../phpBB3
- - travis/prepare-extension.sh $EXTNAME $PHPBB_BRANCH
- - travis/setup-phpbb.sh $DB $TRAVIS_PHP_VERSION
-
-before_script:
- - travis/setup-database.sh $DB $TRAVIS_PHP_VERSION
-
-script:
- - sh -c "if [ '$SNIFF' != '0' ]; then travis/ext-sniff.sh $DB $TRAVIS_PHP_VERSION $EXTNAME; fi"
- - sh -c "if [ '$IMAGE_ICC' != '0' ]; then travis/check-image-icc-profiles.sh $DB $TRAVIS_PHP_VERSION; fi"
- - phpBB/vendor/bin/phpunit --configuration phpBB/ext/$EXTNAME/travis/phpunit-$DB-travis.xml --bootstrap ./tests/bootstrap.php
- - sh -c "if [ '$EPV' != '0' ] && [ '$TRAVIS_PHP_VERSION' = '7.4' ] && [ '$DB' = 'mysqli' ]; then phpBB/ext/$EXTNAME/vendor/bin/EPV.php run --dir='phpBB/ext/$EXTNAME/'; fi"
- - sh -c "if [ '$TRAVIS_PHP_VERSION' = '7.4' ] && [ '$DB' = 'mysqli' ]; then ../langtest/travis/test-lang.sh; fi"
diff --git a/README.md b/README.md
index f92b54a..ebcdcc3 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# phpBB 3.1 Extension - Hookup
+# phpBB 3.3 Extension - Hookup
This Extension adds the possibility of scheduling meetings with multiple people to your topics. Use this for finding the right date for a meeting very easy or for getting feedback on availability of users on certain dates.
This Extension is intended to be fully backwards compatible to the existing phpBB 3.0.x Mod "Hookup" from the phpBB.de Team for Upgrades, but may include additional features.
@@ -27,6 +27,8 @@ Clone into ext/gn36/hookup:
git clone https://github.com/gn36/phpbb-ext-hookup ext/gn36/hookup
+Requires phpBB 3.3.x and PHP 7.2 or newer (including PHP 8).
+
Go to "ACP" > "Customise" > "Extensions" and enable the "Hookup" extension.
## Development
@@ -39,9 +41,7 @@ If you wish to contribute a translation, feel free to send a pull request. Your
## Automated Testing
-We use automated unit tests including functional tests to prevent regressions. Check out our travis build below:
-
-master: [](http://travis-ci.org/gn36/phpbb-ext-hookup)
+Tests run via GitHub Actions using the [phpbb-extensions test framework](https://github.com/phpbb-extensions/test-framework) (see `.github/workflows/tests.yml`).
## License
diff --git a/build.xml b/build.xml
deleted file mode 100644
index f5f91f6..0000000
--- a/build.xml
+++ /dev/null
@@ -1,135 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/composer.json b/composer.json
index 9588c80..ffdf60b 100644
--- a/composer.json
+++ b/composer.json
@@ -5,7 +5,7 @@
"homepage" : "https://github.com/gn36/phpbb-ext-hookup/",
"version" : "1.0.3",
"time" : "2015-01-03",
- "license" : "GPL-2.0",
+ "license" : "GPL-2.0-only",
"authors" : [{
"name" : "Martin Beckmann",
"email" : "gn#36@phpbb.de",
@@ -18,13 +18,16 @@
}
],
"require" : {
- "php" : ">=5.3.3",
+ "php" : ">=5.4",
"eonasdan/bootstrap-datetimepicker" : ">=4.17",
"fortawesome/font-awesome" : "~4.4.0"
},
- "require-dev" : {
- "phpbb/epv" : "dev-master",
- "phpbb/translation-validator" : "1.*"
+ "config" : {
+ "allow-plugins" : {
+ "composer/installers" : true,
+ "oomphinc/composer-installers-extender" : true,
+ "robloach/component-installer" : true
+ }
},
"extra" : {
"display-name" : "Hookup",
diff --git a/composer.lock b/composer.lock
deleted file mode 100644
index c7edbe5..0000000
--- a/composer.lock
+++ /dev/null
@@ -1,2039 +0,0 @@
-{
- "_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#installing-dependencies",
- "This file is @generated automatically"
- ],
- "content-hash": "359b5dec08404d4be3a0ec81ce549278",
- "packages": [
- {
- "name": "components/jquery",
- "version": "3.5.1",
- "source": {
- "type": "git",
- "url": "https://github.com/components/jquery.git",
- "reference": "b33e8f0f9a1cb2ae390cf05d766a900b53d2125b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/components/jquery/zipball/b33e8f0f9a1cb2ae390cf05d766a900b53d2125b",
- "reference": "b33e8f0f9a1cb2ae390cf05d766a900b53d2125b",
- "shasum": ""
- },
- "type": "component",
- "extra": {
- "component": {
- "scripts": [
- "jquery.js"
- ],
- "files": [
- "jquery.min.js",
- "jquery.min.map",
- "jquery.slim.js",
- "jquery.slim.min.js",
- "jquery.slim.min.map"
- ]
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "JS Foundation and other contributors"
- }
- ],
- "description": "jQuery JavaScript Library",
- "homepage": "http://jquery.com",
- "time": "2020-05-05T13:21:02+00:00"
- },
- {
- "name": "composer/installers",
- "version": "v1.9.0",
- "source": {
- "type": "git",
- "url": "https://github.com/composer/installers.git",
- "reference": "b93bcf0fa1fccb0b7d176b0967d969691cd74cca"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/composer/installers/zipball/b93bcf0fa1fccb0b7d176b0967d969691cd74cca",
- "reference": "b93bcf0fa1fccb0b7d176b0967d969691cd74cca",
- "shasum": ""
- },
- "require": {
- "composer-plugin-api": "^1.0 || ^2.0"
- },
- "replace": {
- "roundcube/plugin-installer": "*",
- "shama/baton": "*"
- },
- "require-dev": {
- "composer/composer": "1.6.* || 2.0.*@dev",
- "composer/semver": "1.0.* || 2.0.*@dev",
- "phpunit/phpunit": "^4.8.36",
- "sebastian/comparator": "^1.2.4",
- "symfony/process": "^2.3"
- },
- "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",
- "Eliasis",
- "Hurad",
- "ImageCMS",
- "Kanboard",
- "Lan Management System",
- "MODX Evo",
- "MantisBT",
- "Mautic",
- "Maya",
- "OXID",
- "Plentymarkets",
- "Porto",
- "RadPHP",
- "SMF",
- "Thelia",
- "Whmcs",
- "WolfCMS",
- "agl",
- "aimeos",
- "annotatecms",
- "attogram",
- "bitrix",
- "cakephp",
- "chef",
- "cockpit",
- "codeigniter",
- "concrete5",
- "croogo",
- "dokuwiki",
- "drupal",
- "eZ Platform",
- "elgg",
- "expressionengine",
- "fuelphp",
- "grav",
- "installer",
- "itop",
- "joomla",
- "known",
- "kohana",
- "laravel",
- "lavalite",
- "lithium",
- "magento",
- "majima",
- "mako",
- "mediawiki",
- "modulework",
- "modx",
- "moodle",
- "osclass",
- "phpbb",
- "piwik",
- "ppi",
- "puppet",
- "pxcms",
- "reindex",
- "roundcube",
- "shopware",
- "silverstripe",
- "sydes",
- "sylius",
- "symfony",
- "typo3",
- "wordpress",
- "yawik",
- "zend",
- "zikula"
- ],
- "funding": [
- {
- "url": "https://packagist.com",
- "type": "custom"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/composer/composer",
- "type": "tidelift"
- }
- ],
- "time": "2020-04-07T06:57:05+00:00"
- },
- {
- "name": "eonasdan/bootstrap-datetimepicker",
- "version": "4.17.47",
- "source": {
- "type": "git",
- "url": "https://github.com/Eonasdan/bootstrap-datetimepicker.git",
- "reference": "25c11d79e614bc6463a87c3dd9cbf8280422e006"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Eonasdan/bootstrap-datetimepicker/zipball/25c11d79e614bc6463a87c3dd9cbf8280422e006",
- "reference": "25c11d79e614bc6463a87c3dd9cbf8280422e006",
- "shasum": ""
- },
- "require": {
- "components/jquery": ">=1.9.1",
- "moment/moment": ">=2.10.5",
- "robloach/component-installer": "*"
- },
- "type": "component",
- "extra": {
- "component": {
- "scripts": [
- "src/js/bootstrap-datetimepicker.js"
- ],
- "files": [
- "build/js/bootstrap-datetimepicker.min.js",
- "build/css/bootstrap-datetimepicker.min.css"
- ]
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "Date/time picker widget based on twitter bootstrap",
- "homepage": "http://eonasdan.github.io/bootstrap-datetimepicker/",
- "keywords": [
- "DateTimePicker",
- "bootstrap"
- ],
- "time": "2017-02-28T14:32:02+00:00"
- },
- {
- "name": "fortawesome/font-awesome",
- "version": "v4.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/FortAwesome/Font-Awesome.git",
- "reference": "e554555d73a44e0a7d11b0361ad7a5325a5f551c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/FortAwesome/Font-Awesome/zipball/e554555d73a44e0a7d11b0361ad7a5325a5f551c",
- "reference": "e554555d73a44e0a7d11b0361ad7a5325a5f551c",
- "shasum": ""
- },
- "require-dev": {
- "jekyll": "1.0.2",
- "lessc": "1.4.2"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.0.x-dev"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "OFL-1.1",
- "MIT"
- ],
- "authors": [
- {
- "name": "Dave Gandy",
- "email": "dave@fontawesome.io",
- "homepage": "http://twitter.com/davegandy",
- "role": "Developer"
- }
- ],
- "description": "The iconic font and CSS framework",
- "homepage": "http://fontawesome.io/",
- "keywords": [
- "FontAwesome",
- "awesome",
- "bootstrap",
- "font",
- "icon"
- ],
- "time": "2015-07-28T21:55:03+00:00"
- },
- {
- "name": "kriswallsmith/assetic",
- "version": "v1.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/kriswallsmith/assetic.git",
- "reference": "e911c437dbdf006a8f62c2f59b15b2d69a5e0aa1"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/kriswallsmith/assetic/zipball/e911c437dbdf006a8f62c2f59b15b2d69a5e0aa1",
- "reference": "e911c437dbdf006a8f62c2f59b15b2d69a5e0aa1",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.1",
- "symfony/process": "~2.1|~3.0"
- },
- "conflict": {
- "twig/twig": "<1.27"
- },
- "require-dev": {
- "leafo/lessphp": "^0.3.7",
- "leafo/scssphp": "~0.1",
- "meenie/javascript-packer": "^1.1",
- "mrclay/minify": "<2.3",
- "natxet/cssmin": "3.0.4",
- "patchwork/jsqueeze": "~1.0|~2.0",
- "phpunit/phpunit": "~4.8 || ^5.6",
- "psr/log": "~1.0",
- "ptachoire/cssembed": "~1.0",
- "symfony/phpunit-bridge": "~2.7|~3.0",
- "twig/twig": "~1.23|~2.0",
- "yfix/packager": "dev-master"
- },
- "suggest": {
- "leafo/lessphp": "Assetic provides the integration with the lessphp LESS compiler",
- "leafo/scssphp": "Assetic provides the integration with the scssphp SCSS compiler",
- "leafo/scssphp-compass": "Assetic provides the integration with the SCSS compass plugin",
- "patchwork/jsqueeze": "Assetic provides the integration with the JSqueeze JavaScript compressor",
- "ptachoire/cssembed": "Assetic provides the integration with phpcssembed to embed data uris",
- "twig/twig": "Assetic provides the integration with the Twig templating engine"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.4-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Assetic": "src/"
- },
- "files": [
- "src/functions.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Kris Wallsmith",
- "email": "kris.wallsmith@gmail.com",
- "homepage": "http://kriswallsmith.net/"
- }
- ],
- "description": "Asset Management for PHP",
- "homepage": "https://github.com/kriswallsmith/assetic",
- "keywords": [
- "assets",
- "compression",
- "minification"
- ],
- "time": "2016-11-11T18:43:20+00:00"
- },
- {
- "name": "moment/moment",
- "version": "2.29.1",
- "source": {
- "type": "git",
- "url": "https://github.com/moment/moment.git",
- "reference": "b7ec8e2ec068e03de4f832f28362675bb9e02261"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/moment/moment/zipball/b7ec8e2ec068e03de4f832f28362675bb9e02261",
- "reference": "b7ec8e2ec068e03de4f832f28362675bb9e02261",
- "shasum": ""
- },
- "require": {
- "oomphinc/composer-installers-extender": "*"
- },
- "type": "component",
- "extra": {
- "component": {
- "scripts": [
- "moment.js"
- ],
- "files": [
- "min/*.js",
- "locale/*.js"
- ]
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Tim Wood",
- "email": "washwithcare@gmail.com"
- }
- ],
- "description": "Parse, validate, manipulate, and display dates in JavaScript.",
- "homepage": "https://github.com/moment/moment",
- "keywords": [
- "date",
- "ender",
- "format",
- "i18n",
- "l10n",
- "moment",
- "parse",
- "time",
- "validate"
- ],
- "time": "2020-10-06T11:13:21+00:00"
- },
- {
- "name": "oomphinc/composer-installers-extender",
- "version": "2.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/oomphinc/composer-installers-extender.git",
- "reference": "8d3fe38a1723e0e91076920c8bb946b1696e28ca"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/oomphinc/composer-installers-extender/zipball/8d3fe38a1723e0e91076920c8bb946b1696e28ca",
- "reference": "8d3fe38a1723e0e91076920c8bb946b1696e28ca",
- "shasum": ""
- },
- "require": {
- "composer-plugin-api": "^1.1 || ^2.0",
- "composer/installers": "^1.0",
- "php": ">=7.1"
- },
- "require-dev": {
- "composer/composer": "^2.0",
- "phpunit/phpunit": "^7.2",
- "squizlabs/php_codesniffer": "^3.3"
- },
- "type": "composer-plugin",
- "extra": {
- "class": "OomphInc\\ComposerInstallersExtender\\Plugin"
- },
- "autoload": {
- "psr-4": {
- "OomphInc\\ComposerInstallersExtender\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Stephen Beemsterboer",
- "email": "stephen@oomphinc.com",
- "homepage": "https://github.com/balbuf"
- },
- {
- "name": "Nathan Dentzau",
- "email": "nate@oomphinc.com",
- "homepage": "http://oomph.is/ndentzau"
- }
- ],
- "description": "Extend the composer/installers plugin to accept any arbitrary package type.",
- "homepage": "http://www.oomphinc.com/",
- "time": "2020-08-11T21:06:11+00:00"
- },
- {
- "name": "robloach/component-installer",
- "version": "0.2.3",
- "source": {
- "type": "git",
- "url": "https://github.com/RobLoach/component-installer.git",
- "reference": "908a859aa7c4949ba9ad67091e67bac10b66d3d7"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/RobLoach/component-installer/zipball/908a859aa7c4949ba9ad67091e67bac10b66d3d7",
- "reference": "908a859aa7c4949ba9ad67091e67bac10b66d3d7",
- "shasum": ""
- },
- "require": {
- "composer-plugin-api": "^1.0",
- "kriswallsmith/assetic": "1.*",
- "php": ">=5.3.2"
- },
- "require-dev": {
- "composer/composer": "1.*@alpha",
- "phpunit/phpunit": "4.*"
- },
- "type": "composer-plugin",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- },
- "class": "ComponentInstaller\\ComponentInstallerPlugin"
- },
- "autoload": {
- "psr-0": {
- "ComponentInstaller": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Rob Loach",
- "homepage": "http://robloach.net"
- }
- ],
- "description": "Allows installation of Components via Composer.",
- "abandoned": "oomphinc/composer-installers-extender",
- "time": "2015-08-10T12:35:38+00:00"
- },
- {
- "name": "symfony/process",
- "version": "v3.4.47",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/process.git",
- "reference": "b8648cf1d5af12a44a51d07ef9bf980921f15fca"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/b8648cf1d5af12a44a51d07ef9bf980921f15fca",
- "reference": "b8648cf1d5af12a44a51d07ef9bf980921f15fca",
- "shasum": ""
- },
- "require": {
- "php": "^5.5.9|>=7.0.8"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Process\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony Process Component",
- "homepage": "https://symfony.com",
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2020-10-24T10:57:07+00:00"
- }
- ],
- "packages-dev": [
- {
- "name": "battye/php-array-parser",
- "version": "v1.0.8",
- "source": {
- "type": "git",
- "url": "https://github.com/battye/php-array-parser.git",
- "reference": "e5da491091cfba55e7d3eaee4e35fa12094b8a9b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/battye/php-array-parser/zipball/e5da491091cfba55e7d3eaee4e35fa12094b8a9b",
- "reference": "e5da491091cfba55e7d3eaee4e35fa12094b8a9b",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "symfony/phpunit-bridge": "^4.1"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "battye\\array_parser\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "Parse text representation of a PHP array into an actual PHP array.",
- "keywords": [
- "array",
- "parser",
- "php"
- ],
- "time": "2019-09-27T16:08:09+00:00"
- },
- {
- "name": "composer/ca-bundle",
- "version": "1.2.9",
- "source": {
- "type": "git",
- "url": "https://github.com/composer/ca-bundle.git",
- "reference": "78a0e288fdcebf92aa2318a8d3656168da6ac1a5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/composer/ca-bundle/zipball/78a0e288fdcebf92aa2318a8d3656168da6ac1a5",
- "reference": "78a0e288fdcebf92aa2318a8d3656168da6ac1a5",
- "shasum": ""
- },
- "require": {
- "ext-openssl": "*",
- "ext-pcre": "*",
- "php": "^5.3.2 || ^7.0 || ^8.0"
- },
- "require-dev": {
- "phpstan/phpstan": "^0.12.55",
- "psr/log": "^1.0",
- "symfony/phpunit-bridge": "^4.2 || ^5",
- "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Composer\\CaBundle\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jordi Boggiano",
- "email": "j.boggiano@seld.be",
- "homepage": "http://seld.be"
- }
- ],
- "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.",
- "keywords": [
- "cabundle",
- "cacert",
- "certificate",
- "ssl",
- "tls"
- ],
- "funding": [
- {
- "url": "https://packagist.com",
- "type": "custom"
- },
- {
- "url": "https://github.com/composer",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/composer/composer",
- "type": "tidelift"
- }
- ],
- "time": "2021-01-12T12:10:35+00:00"
- },
- {
- "name": "composer/composer",
- "version": "1.10.22",
- "source": {
- "type": "git",
- "url": "https://github.com/composer/composer.git",
- "reference": "28c9dfbe2351635961f670773e8d7b17bc5eda25"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/composer/composer/zipball/28c9dfbe2351635961f670773e8d7b17bc5eda25",
- "reference": "28c9dfbe2351635961f670773e8d7b17bc5eda25",
- "shasum": ""
- },
- "require": {
- "composer/ca-bundle": "^1.0",
- "composer/semver": "^1.0",
- "composer/spdx-licenses": "^1.2",
- "composer/xdebug-handler": "^1.1",
- "justinrainbow/json-schema": "^5.2.10",
- "php": "^5.3.2 || ^7.0 || ^8.0",
- "psr/log": "^1.0",
- "seld/jsonlint": "^1.4",
- "seld/phar-utils": "^1.0",
- "symfony/console": "^2.7 || ^3.0 || ^4.0 || ^5.0",
- "symfony/filesystem": "^2.7 || ^3.0 || ^4.0 || ^5.0",
- "symfony/finder": "^2.7 || ^3.0 || ^4.0 || ^5.0",
- "symfony/process": "^2.7 || ^3.0 || ^4.0 || ^5.0"
- },
- "conflict": {
- "symfony/console": "2.8.38"
- },
- "require-dev": {
- "phpspec/prophecy": "^1.10",
- "symfony/phpunit-bridge": "^4.2"
- },
- "suggest": {
- "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages",
- "ext-zip": "Enabling the zip extension allows you to unzip archives",
- "ext-zlib": "Allow gzip compression of HTTP requests"
- },
- "bin": [
- "bin/composer"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.10-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Composer\\": "src/Composer"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nils Adermann",
- "email": "naderman@naderman.de",
- "homepage": "http://www.naderman.de"
- },
- {
- "name": "Jordi Boggiano",
- "email": "j.boggiano@seld.be",
- "homepage": "http://seld.be"
- }
- ],
- "description": "Composer helps you declare, manage and install dependencies of PHP projects. It ensures you have the right stack everywhere.",
- "homepage": "https://getcomposer.org/",
- "keywords": [
- "autoload",
- "dependency",
- "package"
- ],
- "funding": [
- {
- "url": "https://packagist.com",
- "type": "custom"
- },
- {
- "url": "https://github.com/composer",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/composer/composer",
- "type": "tidelift"
- }
- ],
- "time": "2021-04-27T11:10:45+00:00"
- },
- {
- "name": "composer/semver",
- "version": "1.7.2",
- "source": {
- "type": "git",
- "url": "https://github.com/composer/semver.git",
- "reference": "647490bbcaf7fc4891c58f47b825eb99d19c377a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/composer/semver/zipball/647490bbcaf7fc4891c58f47b825eb99d19c377a",
- "reference": "647490bbcaf7fc4891c58f47b825eb99d19c377a",
- "shasum": ""
- },
- "require": {
- "php": "^5.3.2 || ^7.0 || ^8.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.5 || ^5.0.5"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Composer\\Semver\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nils Adermann",
- "email": "naderman@naderman.de",
- "homepage": "http://www.naderman.de"
- },
- {
- "name": "Jordi Boggiano",
- "email": "j.boggiano@seld.be",
- "homepage": "http://seld.be"
- },
- {
- "name": "Rob Bast",
- "email": "rob.bast@gmail.com",
- "homepage": "http://robbast.nl"
- }
- ],
- "description": "Semver library that offers utilities, version constraint parsing and validation.",
- "keywords": [
- "semantic",
- "semver",
- "validation",
- "versioning"
- ],
- "funding": [
- {
- "url": "https://packagist.com",
- "type": "custom"
- },
- {
- "url": "https://github.com/composer",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/composer/composer",
- "type": "tidelift"
- }
- ],
- "time": "2020-12-03T15:47:16+00:00"
- },
- {
- "name": "composer/spdx-licenses",
- "version": "1.5.5",
- "source": {
- "type": "git",
- "url": "https://github.com/composer/spdx-licenses.git",
- "reference": "de30328a7af8680efdc03e396aad24befd513200"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/de30328a7af8680efdc03e396aad24befd513200",
- "reference": "de30328a7af8680efdc03e396aad24befd513200",
- "shasum": ""
- },
- "require": {
- "php": "^5.3.2 || ^7.0 || ^8.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 7"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Composer\\Spdx\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nils Adermann",
- "email": "naderman@naderman.de",
- "homepage": "http://www.naderman.de"
- },
- {
- "name": "Jordi Boggiano",
- "email": "j.boggiano@seld.be",
- "homepage": "http://seld.be"
- },
- {
- "name": "Rob Bast",
- "email": "rob.bast@gmail.com",
- "homepage": "http://robbast.nl"
- }
- ],
- "description": "SPDX licenses list and validation library.",
- "keywords": [
- "license",
- "spdx",
- "validator"
- ],
- "funding": [
- {
- "url": "https://packagist.com",
- "type": "custom"
- },
- {
- "url": "https://github.com/composer",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/composer/composer",
- "type": "tidelift"
- }
- ],
- "time": "2020-12-03T16:04:16+00:00"
- },
- {
- "name": "composer/xdebug-handler",
- "version": "1.4.6",
- "source": {
- "type": "git",
- "url": "https://github.com/composer/xdebug-handler.git",
- "reference": "f27e06cd9675801df441b3656569b328e04aa37c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/f27e06cd9675801df441b3656569b328e04aa37c",
- "reference": "f27e06cd9675801df441b3656569b328e04aa37c",
- "shasum": ""
- },
- "require": {
- "php": "^5.3.2 || ^7.0 || ^8.0",
- "psr/log": "^1.0"
- },
- "require-dev": {
- "phpstan/phpstan": "^0.12.55",
- "symfony/phpunit-bridge": "^4.2 || ^5"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Composer\\XdebugHandler\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "John Stevenson",
- "email": "john-stevenson@blueyonder.co.uk"
- }
- ],
- "description": "Restarts a process without Xdebug.",
- "keywords": [
- "Xdebug",
- "performance"
- ],
- "funding": [
- {
- "url": "https://packagist.com",
- "type": "custom"
- },
- {
- "url": "https://github.com/composer",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/composer/composer",
- "type": "tidelift"
- }
- ],
- "time": "2021-03-25T17:01:18+00:00"
- },
- {
- "name": "gitonomy/gitlib",
- "version": "v0.1.8",
- "source": {
- "type": "git",
- "url": "https://github.com/gitonomy/gitlib.git",
- "reference": "f575b8f7da917ade7890c6aa705fa22545690389"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/gitonomy/gitlib/zipball/f575b8f7da917ade7890c6aa705fa22545690389",
- "reference": "f575b8f7da917ade7890c6aa705fa22545690389",
- "shasum": ""
- },
- "require": {
- "symfony/process": "^2.3|^3.0"
- },
- "require-dev": {
- "psr/log": "^1.0"
- },
- "suggest": {
- "psr/log": "Add some log"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Gitonomy\\Git\\": "src/Gitonomy/Git/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Alexandre Salomé",
- "email": "alexandre.salome@gmail.com",
- "homepage": "http://alexandre-salome.fr"
- },
- {
- "name": "Julien DIDIER",
- "email": "genzo.wm@gmail.com",
- "homepage": "http://www.jdidier.net"
- }
- ],
- "description": "Library for accessing git",
- "homepage": "http://gitonomy.com",
- "time": "2015-12-01T22:25:57+00:00"
- },
- {
- "name": "justinrainbow/json-schema",
- "version": "5.2.10",
- "source": {
- "type": "git",
- "url": "https://github.com/justinrainbow/json-schema.git",
- "reference": "2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b",
- "reference": "2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1",
- "json-schema/json-schema-test-suite": "1.2.0",
- "phpunit/phpunit": "^4.8.35"
- },
- "bin": [
- "bin/validate-json"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "JsonSchema\\": "src/JsonSchema/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Bruno Prieto Reis",
- "email": "bruno.p.reis@gmail.com"
- },
- {
- "name": "Justin Rainbow",
- "email": "justin.rainbow@gmail.com"
- },
- {
- "name": "Igor Wiedler",
- "email": "igor@wiedler.ch"
- },
- {
- "name": "Robert Schönthal",
- "email": "seroscho@googlemail.com"
- }
- ],
- "description": "A library to validate a json schema.",
- "homepage": "https://github.com/justinrainbow/json-schema",
- "keywords": [
- "json",
- "schema"
- ],
- "time": "2020-05-27T16:41:55+00:00"
- },
- {
- "name": "nikic/php-parser",
- "version": "v3.1.5",
- "source": {
- "type": "git",
- "url": "https://github.com/nikic/PHP-Parser.git",
- "reference": "bb87e28e7d7b8d9a7fda231d37457c9210faf6ce"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/bb87e28e7d7b8d9a7fda231d37457c9210faf6ce",
- "reference": "bb87e28e7d7b8d9a7fda231d37457c9210faf6ce",
- "shasum": ""
- },
- "require": {
- "ext-tokenizer": "*",
- "php": ">=5.5"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.0|~5.0"
- },
- "bin": [
- "bin/php-parse"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "PhpParser\\": "lib/PhpParser"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Nikita Popov"
- }
- ],
- "description": "A PHP parser written in PHP",
- "keywords": [
- "parser",
- "php"
- ],
- "time": "2018-02-28T20:30:58+00:00"
- },
- {
- "name": "phpbb/epv",
- "version": "dev-master",
- "source": {
- "type": "git",
- "url": "https://github.com/phpbb/epv.git",
- "reference": "f79c2f60406786873d9d3c4d26de2983ffbfd2ef"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpbb/epv/zipball/f79c2f60406786873d9d3c4d26de2983ffbfd2ef",
- "reference": "f79c2f60406786873d9d3c4d26de2983ffbfd2ef",
- "shasum": ""
- },
- "require": {
- "composer/composer": "^1.5",
- "gitonomy/gitlib": "0.1.*@dev",
- "nikic/php-parser": "~3.0",
- "php": ">=7.0",
- "sensiolabs/ansi-to-html": "~1.1",
- "symfony/console": "^3.0|^4.0|^5.0",
- "symfony/finder": "^3.0|^4.0|^5.0",
- "symfony/process": "^3.0|^4.0|^5.0",
- "symfony/yaml": "^3.0|^4.0|^5.0"
- },
- "require-dev": {
- "phpunit/phpunit": "~5.4",
- "phpunit/phpunit-mock-objects": "~3.2"
- },
- "bin": [
- "src/EPV.php"
- ],
- "type": "library",
- "autoload": {
- "psr-4": {
- "Phpbb\\Epv\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "GPL-2.0-only"
- ],
- "authors": [
- {
- "name": "Paul Sohier",
- "email": "paul@phpbb.com"
- }
- ],
- "description": "A extension validator for phpBB extensions. Extensions are required to pass the validator when submitted to the extension database.",
- "time": "2021-02-26T18:45:45+00:00"
- },
- {
- "name": "phpbb/translation-validator",
- "version": "1.5.3",
- "source": {
- "type": "git",
- "url": "https://github.com/phpbb/phpbb-translation-validator.git",
- "reference": "28caf76f9e9f7374e2ad2053dd0ddb25b12662a0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpbb/phpbb-translation-validator/zipball/28caf76f9e9f7374e2ad2053dd0ddb25b12662a0",
- "reference": "28caf76f9e9f7374e2ad2053dd0ddb25b12662a0",
- "shasum": ""
- },
- "require": {
- "battye/php-array-parser": "~1.0",
- "php": ">=5.5.9",
- "symfony/console": "~3.0",
- "symfony/finder": "~3.0",
- "symfony/yaml": "~3.0"
- },
- "require-dev": {
- "phpunit/phpunit": "~5.7"
- },
- "bin": [
- "translation.php"
- ],
- "type": "library",
- "autoload": {
- "classmap": [
- "src/",
- "tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "GPL-2.0-only"
- ],
- "authors": [
- {
- "name": "Joas Schilling",
- "email": "nickvergessen@phpbb.com",
- "homepage": "http://www.phpbb.com/",
- "role": "Developer"
- },
- {
- "name": "Battye",
- "email": "battye@phpbb.com",
- "homepage": "https://www.phpbb.com",
- "role": "Developer"
- }
- ],
- "description": "A language package validator for phpBB language packs. Language packs are required to pass the validator when submitted to the language pack database.",
- "homepage": "https://github.com/phpbb/phpbb-translation-validator",
- "time": "2020-11-10T19:57:39+00:00"
- },
- {
- "name": "psr/log",
- "version": "1.1.3",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/log.git",
- "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
- "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Psr\\Log\\": "Psr/Log/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
- }
- ],
- "description": "Common interface for logging libraries",
- "homepage": "https://github.com/php-fig/log",
- "keywords": [
- "log",
- "psr",
- "psr-3"
- ],
- "time": "2020-03-23T09:12:05+00:00"
- },
- {
- "name": "seld/jsonlint",
- "version": "1.8.3",
- "source": {
- "type": "git",
- "url": "https://github.com/Seldaek/jsonlint.git",
- "reference": "9ad6ce79c342fbd44df10ea95511a1b24dee5b57"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/9ad6ce79c342fbd44df10ea95511a1b24dee5b57",
- "reference": "9ad6ce79c342fbd44df10ea95511a1b24dee5b57",
- "shasum": ""
- },
- "require": {
- "php": "^5.3 || ^7.0 || ^8.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
- },
- "bin": [
- "bin/jsonlint"
- ],
- "type": "library",
- "autoload": {
- "psr-4": {
- "Seld\\JsonLint\\": "src/Seld/JsonLint/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jordi Boggiano",
- "email": "j.boggiano@seld.be",
- "homepage": "http://seld.be"
- }
- ],
- "description": "JSON Linter",
- "keywords": [
- "json",
- "linter",
- "parser",
- "validator"
- ],
- "funding": [
- {
- "url": "https://github.com/Seldaek",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/seld/jsonlint",
- "type": "tidelift"
- }
- ],
- "time": "2020-11-11T09:19:24+00:00"
- },
- {
- "name": "seld/phar-utils",
- "version": "1.1.1",
- "source": {
- "type": "git",
- "url": "https://github.com/Seldaek/phar-utils.git",
- "reference": "8674b1d84ffb47cc59a101f5d5a3b61e87d23796"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/8674b1d84ffb47cc59a101f5d5a3b61e87d23796",
- "reference": "8674b1d84ffb47cc59a101f5d5a3b61e87d23796",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Seld\\PharUtils\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jordi Boggiano",
- "email": "j.boggiano@seld.be"
- }
- ],
- "description": "PHAR file format utilities, for when PHP phars you up",
- "keywords": [
- "phar"
- ],
- "time": "2020-07-07T18:42:57+00:00"
- },
- {
- "name": "sensiolabs/ansi-to-html",
- "version": "v1.2.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sensiolabs/ansi-to-html.git",
- "reference": "94a3145aae4733ff933c8910263ef56d1ae317a9"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sensiolabs/ansi-to-html/zipball/94a3145aae4733ff933c8910263ef56d1ae317a9",
- "reference": "94a3145aae4733ff933c8910263ef56d1ae317a9",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2.5"
- },
- "conflict": {
- "twig/twig": "< 2.4.0"
- },
- "require-dev": {
- "twig/twig": "^2.4 || ^3.0"
- },
- "suggest": {
- "twig/twig": "Provides nice templating features"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.2-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "SensioLabs\\AnsiConverter\\": "SensioLabs/AnsiConverter"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "A library to convert a text with ANSI codes to HTML",
- "time": "2020-10-06T05:48:55+00:00"
- },
- {
- "name": "symfony/console",
- "version": "v3.4.47",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/console.git",
- "reference": "a10b1da6fc93080c180bba7219b5ff5b7518fe81"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/a10b1da6fc93080c180bba7219b5ff5b7518fe81",
- "reference": "a10b1da6fc93080c180bba7219b5ff5b7518fe81",
- "shasum": ""
- },
- "require": {
- "php": "^5.5.9|>=7.0.8",
- "symfony/debug": "~2.8|~3.0|~4.0",
- "symfony/polyfill-mbstring": "~1.0"
- },
- "conflict": {
- "symfony/dependency-injection": "<3.4",
- "symfony/process": "<3.3"
- },
- "provide": {
- "psr/log-implementation": "1.0"
- },
- "require-dev": {
- "psr/log": "~1.0",
- "symfony/config": "~3.3|~4.0",
- "symfony/dependency-injection": "~3.4|~4.0",
- "symfony/event-dispatcher": "~2.8|~3.0|~4.0",
- "symfony/lock": "~3.4|~4.0",
- "symfony/process": "~3.3|~4.0"
- },
- "suggest": {
- "psr/log": "For using the console logger",
- "symfony/event-dispatcher": "",
- "symfony/lock": "",
- "symfony/process": ""
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Console\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony Console Component",
- "homepage": "https://symfony.com",
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2020-10-24T10:57:07+00:00"
- },
- {
- "name": "symfony/debug",
- "version": "v4.4.20",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/debug.git",
- "reference": "157bbec4fd773bae53c5483c50951a5530a2cc16"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/debug/zipball/157bbec4fd773bae53c5483c50951a5530a2cc16",
- "reference": "157bbec4fd773bae53c5483c50951a5530a2cc16",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1.3",
- "psr/log": "~1.0",
- "symfony/polyfill-php80": "^1.15"
- },
- "conflict": {
- "symfony/http-kernel": "<3.4"
- },
- "require-dev": {
- "symfony/http-kernel": "^3.4|^4.0|^5.0"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Debug\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Provides tools to ease debugging PHP code",
- "homepage": "https://symfony.com",
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2021-01-28T16:54:48+00:00"
- },
- {
- "name": "symfony/filesystem",
- "version": "v5.2.6",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/filesystem.git",
- "reference": "8c86a82f51658188119e62cff0a050a12d09836f"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/filesystem/zipball/8c86a82f51658188119e62cff0a050a12d09836f",
- "reference": "8c86a82f51658188119e62cff0a050a12d09836f",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2.5",
- "symfony/polyfill-ctype": "~1.8"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Filesystem\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Provides basic utilities for the filesystem",
- "homepage": "https://symfony.com",
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2021-03-28T14:30:26+00:00"
- },
- {
- "name": "symfony/finder",
- "version": "v3.4.47",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/finder.git",
- "reference": "b6b6ad3db3edb1b4b1c1896b1975fb684994de6e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/b6b6ad3db3edb1b4b1c1896b1975fb684994de6e",
- "reference": "b6b6ad3db3edb1b4b1c1896b1975fb684994de6e",
- "shasum": ""
- },
- "require": {
- "php": "^5.5.9|>=7.0.8"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Finder\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony Finder Component",
- "homepage": "https://symfony.com",
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2020-11-16T17:02:08+00:00"
- },
- {
- "name": "symfony/polyfill-ctype",
- "version": "v1.22.1",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-ctype.git",
- "reference": "c6c942b1ac76c82448322025e084cadc56048b4e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/c6c942b1ac76c82448322025e084cadc56048b4e",
- "reference": "c6c942b1ac76c82448322025e084cadc56048b4e",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "suggest": {
- "ext-ctype": "For best performance"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.22-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Ctype\\": ""
- },
- "files": [
- "bootstrap.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Gert de Pagter",
- "email": "BackEndTea@gmail.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill for ctype functions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "ctype",
- "polyfill",
- "portable"
- ],
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2021-01-07T16:49:33+00:00"
- },
- {
- "name": "symfony/polyfill-mbstring",
- "version": "v1.22.1",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "5232de97ee3b75b0360528dae24e73db49566ab1"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/5232de97ee3b75b0360528dae24e73db49566ab1",
- "reference": "5232de97ee3b75b0360528dae24e73db49566ab1",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "suggest": {
- "ext-mbstring": "For best performance"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.22-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Mbstring\\": ""
- },
- "files": [
- "bootstrap.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill for the Mbstring extension",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "mbstring",
- "polyfill",
- "portable",
- "shim"
- ],
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2021-01-22T09:19:47+00:00"
- },
- {
- "name": "symfony/polyfill-php80",
- "version": "v1.22.1",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-php80.git",
- "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/dc3063ba22c2a1fd2f45ed856374d79114998f91",
- "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.22-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Php80\\": ""
- },
- "files": [
- "bootstrap.php"
- ],
- "classmap": [
- "Resources/stubs"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Ion Bazan",
- "email": "ion.bazan@gmail.com"
- },
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ],
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2021-01-07T16:49:33+00:00"
- },
- {
- "name": "symfony/yaml",
- "version": "v3.4.47",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/yaml.git",
- "reference": "88289caa3c166321883f67fe5130188ebbb47094"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/88289caa3c166321883f67fe5130188ebbb47094",
- "reference": "88289caa3c166321883f67fe5130188ebbb47094",
- "shasum": ""
- },
- "require": {
- "php": "^5.5.9|>=7.0.8",
- "symfony/polyfill-ctype": "~1.8"
- },
- "conflict": {
- "symfony/console": "<3.4"
- },
- "require-dev": {
- "symfony/console": "~3.4|~4.0"
- },
- "suggest": {
- "symfony/console": "For validating YAML files using the lint command"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Yaml\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony Yaml Component",
- "homepage": "https://symfony.com",
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2020-10-24T10:57:07+00:00"
- }
- ],
- "aliases": [],
- "minimum-stability": "stable",
- "stability-flags": {
- "phpbb/epv": 20
- },
- "prefer-stable": false,
- "prefer-lowest": false,
- "platform": {
- "php": ">=5.3.3"
- },
- "platform-dev": [],
- "plugin-api-version": "1.1.0"
-}
diff --git a/develop/check.sh b/develop/check.sh
new file mode 100755
index 0000000..40dd668
--- /dev/null
+++ b/develop/check.sh
@@ -0,0 +1,36 @@
+#!/bin/bash
+# Führt lokal dieselben Prüfungen wie das CI (phpbb-extensions/test-framework@3.3.x) aus:
+# Code Sniffer, Executable-Check, ICC-Profile, EPV (falls installiert) und die Unit-Tests (SQLite).
+# Nutzung: develop/check.sh
+set -e
+EXTNAME=gn36/hookup
+EXT="$(cd "$(dirname "$0")/.." && pwd)"
+CORE="${PHPBB_DIR:-/opt/phpbb-core}"
+DEST="$CORE/phpBB/ext/$EXTNAME"
+rm -rf "$DEST" && mkdir -p "$DEST"
+cp -a "$EXT/." "$DEST/" && rm -rf "$DEST/.git"
+cd "$CORE"
+
+echo "== Code Sniffer"
+phpBB/vendor/bin/phpcs -s --extensions=php --standard=build/code_sniffer/ruleset-php-extensions.xml \
+ --ignore=*/"$EXTNAME"/tests/*,*/"$EXTNAME"/vendor/* phpBB/ext/"$EXTNAME"
+
+echo "== Executable files"
+.github/ext-check-executable-files.sh ./ "$EXTNAME"
+
+echo "== ICC profiles"
+if command -v exiftool >/dev/null; then
+ .github/check-image-icc-profiles.sh
+else
+ echo "exiftool nicht installiert, übersprungen"
+fi
+
+echo "== EPV"
+if [ -x phpBB/vendor/bin/EPV.php ]; then
+ phpBB/vendor/bin/EPV.php run --dir="phpBB/ext/$EXTNAME/"
+else
+ echo "EPV nicht installiert, übersprungen"
+fi
+
+echo "== Unit tests"
+"$EXT/develop/run-tests.sh"
diff --git a/develop/cloud-setup.sh b/develop/cloud-setup.sh
new file mode 100755
index 0000000..d4f2f64
--- /dev/null
+++ b/develop/cloud-setup.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+# Setup-Script für eine Claude-Cloud-Umgebung zum Testen von phpBB-3.3-Erweiterungen.
+# Installiert (möglichst versionsunabhängig): MariaDB, PHP-Erweiterungen, phpBB 3.3.x inkl. PHPUnit 9.
+# Wird bei Umgebungen mit Setup-Script einmal ausgeführt und im Ergebnis zwischengespeichert.
+set -euo pipefail
+
+PHPBB_BRANCH="${PHPBB_BRANCH:-3.3.x}"
+PHPBB_DIR="${PHPBB_DIR:-/opt/phpbb-core}"
+
+export DEBIAN_FRONTEND=noninteractive
+apt-get update -qq
+# php-cli ist im Basis-Image meist vorhanden; die Pakete ohne Versionsnummer nehmen die Standard-PHP-Version der Distribution.
+apt-get install -y -qq git unzip rsync mariadb-server \
+ php-cli php-mbstring php-xml php-zip php-gd php-curl php-intl php-mysql php-sqlite3 php-pgsql
+
+# Datenbank für die phpBB-Tests (MariaDB); SQLite geht auch ohne Server.
+service mariadb start || service mysql start || true
+for i in $(seq 1 20); do mysqladmin ping --silent && break; sleep 1; done
+mysql -e "CREATE DATABASE IF NOT EXISTS phpbb_tests CHARACTER SET utf8mb4;
+ CREATE USER IF NOT EXISTS 'phpbb'@'localhost' IDENTIFIED BY 'phpbb';
+ GRANT ALL ON phpbb_tests.* TO 'phpbb'@'localhost';"
+
+# phpBB-Quellcode (aktueller Stand des 3.3-Branches)
+if [ ! -d "$PHPBB_DIR/.git" ]; then
+ git clone --depth 1 -b "$PHPBB_BRANCH" https://github.com/phpbb/phpbb "$PHPBB_DIR"
+fi
+cd "$PHPBB_DIR/phpBB"
+composer install --no-interaction --no-progress
+# Wie phpBBs eigenes CI unter PHP 8: PHPUnit 9 statt 7
+composer remove phpunit/dbunit --dev --update-with-dependencies --no-interaction
+composer require symfony/yaml:^4.4 misantron/dbunit:5.2.1 phpunit/phpunit:^9.3 doctrine/instantiator:^1.4 \
+ --dev --update-with-all-dependencies --ignore-platform-reqs --no-interaction
diff --git a/develop/run-functional-tests.sh b/develop/run-functional-tests.sh
new file mode 100755
index 0000000..e56b27f
--- /dev/null
+++ b/develop/run-functional-tests.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+# Führt die Funktionstests headless aus: startet den PHP-Entwicklungsserver auf dem phpBB-Checkout,
+# installiert die Erweiterungs-Abhängigkeiten (vendor/) falls nötig und ruft develop/run-tests.sh auf.
+set -e
+EXT="$(cd "$(dirname "$0")/.." && pwd)"
+CORE="${PHPBB_DIR:-/opt/phpbb-core}"
+PORT="${PORT:-8000}"
+[ -d "$EXT/vendor" ] || (cd "$EXT" && composer install --no-interaction)
+php -S "127.0.0.1:$PORT" -t "$CORE" >/dev/null 2>&1 &
+SERVER=$!
+trap 'kill $SERVER 2>/dev/null' EXIT
+sleep 1
+export PHPBB_FUNCTIONAL_URL="http://127.0.0.1:$PORT/phpBB/"
+"$EXT/develop/run-tests.sh" --testsuite="Extension Functional Tests" "$@"
diff --git a/develop/run-tests.sh b/develop/run-tests.sh
new file mode 100755
index 0000000..fd4a682
--- /dev/null
+++ b/develop/run-tests.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+# Führt die Extension-Tests gegen den phpBB-Checkout aus (SQLite, ohne DB-Server).
+# Nutzung: develop/run-tests.sh [phpunit-Argumente]
+set -e
+EXT="$(cd "$(dirname "$0")/.." && pwd)"
+CORE="${PHPBB_DIR:-/opt/phpbb-core}"
+DEST="$CORE/phpBB/ext/gn36/hookup"
+rm -rf "$DEST" && mkdir -p "$DEST"
+cp -a "$EXT/." "$DEST/" && rm -rf "$DEST/.git"
+cd "$CORE"
+export PHPBB_TEST_DBMS=sqlite3 PHPBB_TEST_DBHOST=/tmp/phpbb_test.sqlite
+php -d error_reporting=24575 phpBB/vendor/bin/phpunit \
+ --configuration phpBB/ext/gn36/hookup/phpunit.xml.dist \
+ "${@:---testsuite=Extension Test Suite}"
diff --git a/event/viewtopic.php b/event/viewtopic.php
index 75ba08a..8f71820 100644
--- a/event/viewtopic.php
+++ b/event/viewtopic.php
@@ -30,7 +30,7 @@ static public function getSubscribedEvents()
);
}
- /** @var \gn36\hookup\functions\hookup */
+ /** @var hookup */
protected $hookup;
/** @var \phpbb\db\driver\driver_interface */
@@ -66,7 +66,7 @@ static public function getSubscribedEvents()
/**
* Constructor
*
- * @param \gn36\hookup\functions\hookup $hookup
+ * @param hookup $hookup
* @param \phpbb\template\template $template
* @param \phpbb\db\driver\driver_interface $db
* @param \phpbb\user $user
@@ -78,7 +78,7 @@ static public function getSubscribedEvents()
* @param string $phpEx
* @param string $hookup_path
*/
- function __construct(\gn36\hookup\functions\hookup $hookup, \phpbb\template\template $template, \phpbb\db\driver\driver_interface $db, \phpbb\user $user, \phpbb\auth\auth $auth, \phpbb\request\request_interface $request, \phpbb\event\dispatcher_interface $phpbb_dispatcher, \phpbb\notification\manager $notification_manager, $phpbb_root_path, $phpEx, $hookup_path)
+ function __construct(hookup $hookup, \phpbb\template\template $template, \phpbb\db\driver\driver_interface $db, \phpbb\user $user, \phpbb\auth\auth $auth, \phpbb\request\request_interface $request, \phpbb\event\dispatcher_interface $phpbb_dispatcher, \phpbb\notification\manager $notification_manager, $phpbb_root_path, $phpEx, $hookup_path)
{
$this->hookup = $hookup;
$this->template = $template;
diff --git a/ext.php b/ext.php
index fd937f7..3ca8cae 100644
--- a/ext.php
+++ b/ext.php
@@ -35,7 +35,7 @@ protected function extra_dependencies()
*/
protected function split_version_info($string)
{
- $pattern = '#(\^|~|>=|>|gt(?:;=?)?|ge|==?|eq|!=|<>|ne|<=|<|le|lt(?:;=?)?(?:gt;)?)([0-9._*-PLAHBETRCDV]+?)(?:$|,)#is';
+ $pattern = '#(\^|~|>=|>|gt(?:;=?)?|ge|==?|eq|!=|<>|ne|<=|<|le|lt(?:;=?)?(?:gt;)?)([0-9._*\-PLAHBETRCDV]+?)(?:$|,)#is';
$matches = null;
preg_match_all($pattern, $string, $matches);
@@ -73,23 +73,23 @@ function is_enableable()
$require = array();
}
- if (isset($meta['extra']['soft_require']))
+ if (isset($meta['extra']['soft-require']))
{
- $require = array_merge($require, $meta['extra']['soft_require']);
+ $require = array_merge($require, $meta['extra']['soft-require']);
}
$require = array_merge($require, $this->extra_dependencies());
- /** @var $user \phpbb\user */
- $user = $this->container->get('user');
- $user->add_lang_ext($this->extension_name, 'install');
+ /** @var $language \phpbb\language\language */
+ $language = $this->container->get('language');
+ $language->add_lang('install', $this->extension_name);
$dep_files_to_search = array();
foreach ($require as $key => $value)
{
$info = $this->split_version_info($value);
-
+
foreach ($info['version'] as $vkey => $version)
{
switch (strtolower($key))
@@ -97,7 +97,7 @@ function is_enableable()
case 'php':
if (!phpbb_version_compare(PHP_VERSION, $version, $info['operator'][$vkey]))
{
- trigger_error($user->lang('WRONG_PHP_VERSION') . adm_back_link(append_sid('index.' . $this->container->getParameter('core.php_ext'), 'i=acp_extensions&mode=main')), E_USER_WARNING);
+ trigger_error($language->lang('WRONG_PHP_VERSION') . adm_back_link(append_sid('index.' . $this->container->getParameter('core.php_ext'), 'i=acp_extensions&mode=main')), E_USER_WARNING);
return false;
}
break;
@@ -105,7 +105,7 @@ function is_enableable()
case 'phpbb/phpbb':
if (!phpbb_version_compare($config['version'], $version, $info['operator'][$vkey]))
{
- trigger_error($user->lang('WRONG_PHPBB_VERSION') . adm_back_link(append_sid('index.' . $this->container->getParameter('core.php_ext'), 'i=acp_extensions&mode=main')), E_USER_WARNING);
+ trigger_error($language->lang('WRONG_PHPBB_VERSION') . adm_back_link(append_sid('index.' . $this->container->getParameter('core.php_ext'), 'i=acp_extensions&mode=main')), E_USER_WARNING);
return false;
}
break;
@@ -134,11 +134,11 @@ function is_enableable()
// Assume installed for simplicity
break;
}
-
+
// Apparently not a vendor dir. This should be an extension as a requirement
if (!$mgr->is_enabled($key))
{
- trigger_error($user->lang('MISSING_EXTENSION', $key) . adm_back_link(append_sid('index.' . $this->container->getParameter('core.php_ext'), 'i=acp_extensions&mode=main')), E_USER_WARNING);
+ trigger_error($language->lang('MISSING_EXTENSION', $key) . adm_back_link(append_sid('index.' . $this->container->getParameter('core.php_ext'), 'i=acp_extensions&mode=main')), E_USER_WARNING);
return false;
}
@@ -148,20 +148,20 @@ function is_enableable()
if (!phpbb_version_compare($ext_version, $version, $info['operator'][$vkey]))
{
- trigger_error($user->lang('WRONG_EXTENSION_VERSION', $key) . adm_back_link(append_sid('index.' . $this->container->getParameter('core.php_ext'), 'i=acp_extensions&mode=main')), E_USER_WARNING);
+ trigger_error($language->lang('WRONG_EXTENSION_VERSION', $key) . adm_back_link(append_sid('index.' . $this->container->getParameter('core.php_ext'), 'i=acp_extensions&mode=main')), E_USER_WARNING);
return false;
}
break;
}
}
}
-
+
// Now check the files to search for:
foreach ($dep_files_to_search as $key => $file)
{
if (!file_exists($file))
{
- trigger_error($user->lang('MISSING_DEPENDENCIES', $key) . adm_back_link(append_sid('index.' . $this->container->getParameter('core.php_ext'), 'i=acp_extensions&mode=main')), E_USER_WARNING);
+ trigger_error($language->lang('MISSING_DEPENDENCIES', $key) . adm_back_link(append_sid('index.' . $this->container->getParameter('core.php_ext'), 'i=acp_extensions&mode=main')), E_USER_WARNING);
return false;
}
}
diff --git a/functions/hookup.php b/functions/hookup.php
index 404ca5a..53779d9 100644
--- a/functions/hookup.php
+++ b/functions/hookup.php
@@ -471,7 +471,18 @@ public function submit($reload_data = true, $return_changes = false, $force_run
}
$date['topic_id'] = $topic_id;
$sql = 'INSERT INTO ' . $this->hookup_dates_table . ' ' . $db->sql_build_array('INSERT', $date);
+
+ // MSSQL only accepts explicit values for the identity column date_id when told so
+ $identity_insert = isset($date['date_id']) && strpos($db->get_sql_layer(), 'mssql') === 0;
+ if ($identity_insert)
+ {
+ $db->sql_query('SET IDENTITY_INSERT ' . $this->hookup_dates_table . ' ON');
+ }
$db->sql_query($sql);
+ if ($identity_insert)
+ {
+ $db->sql_query('SET IDENTITY_INSERT ' . $this->hookup_dates_table . ' OFF');
+ }
}
//Update the entries for availability:
diff --git a/notification/active_date_reset.php b/notification/active_date_reset.php
index da0a25a..fd9be96 100644
--- a/notification/active_date_reset.php
+++ b/notification/active_date_reset.php
@@ -32,7 +32,7 @@ public function is_available()
public function get_title()
{
$username = $this->user_loader->get_username($this->get_data('user_id'), 'no_profile');
- return $this->user->lang($this->language_key, $username, $this->get_data('topic_title'));
+ return $this->language->lang($this->language_key, $username, $this->get_data('topic_title'));
}
public function get_email_template()
diff --git a/notification/base.php b/notification/base.php
index ab112bb..ca8e04f 100644
--- a/notification/base.php
+++ b/notification/base.php
@@ -21,13 +21,13 @@ class base extends \phpbb\notification\type\base
'lang' => 'HOOKUP_NOTIFY_OPTION',
'group' => 'NOTIFICATION_GROUP_MISCELLANEOUS',
);
-
+
/** @var \phpbb\user_loader */
protected $user_loader;
-
+
/** @var \phpbb\config\config */
protected $config;
-
+
/** @var string */
protected $notification_types_table;
@@ -124,7 +124,7 @@ public function get_title()
$description = $this->user->format_date($this->get_data('date'));
}
- return $this->user->lang($this->language_key, $username, $this->get_data('topic_title'), $description , $this->get_data('yes'), $this->get_data('no'), $this->get_data('maybe'));
+ return $this->language->lang($this->language_key, $username, $this->get_data('topic_title'), $description , $this->get_data('yes'), $this->get_data('no'), $this->get_data('maybe'));
}
function users_to_query()
diff --git a/notification/date_added.php b/notification/date_added.php
index 9b8dc40..9a3d6d4 100644
--- a/notification/date_added.php
+++ b/notification/date_added.php
@@ -36,7 +36,7 @@ public function is_available()
public function get_title()
{
$username = $this->user_loader->get_username($this->get_data('user_id'), 'no_profile');
- return $this->user->lang($this->language_key, $username, $this->get_data('topic_title'));
+ return $this->language->lang($this->language_key, $username, $this->get_data('topic_title'));
}
public function get_email_template()
diff --git a/notification/date_added_rotation.php b/notification/date_added_rotation.php
index bf629cd..ff5f69e 100644
--- a/notification/date_added_rotation.php
+++ b/notification/date_added_rotation.php
@@ -40,7 +40,7 @@ public function get_avatar()
public function get_title()
{
- return $this->user->lang($this->language_key, $this->get_data('topic_title'));
+ return $this->language->lang($this->language_key, $this->get_data('topic_title'));
}
public function get_email_template()
diff --git a/notification/invited.php b/notification/invited.php
index c525038..e7e6752 100644
--- a/notification/invited.php
+++ b/notification/invited.php
@@ -61,7 +61,7 @@ public function find_users_for_notification($notification_data, $options = array
public function get_title()
{
$username = $this->user_loader->get_username($this->get_data('user_id'), 'no_profile');
- return $this->user->lang($this->language_key, $username, $this->get_data('topic_title'));
+ return $this->language->lang($this->language_key, $username, $this->get_data('topic_title'));
}
public function get_email_template()
diff --git a/notification/user_added.php b/notification/user_added.php
index a0cca57..16e8f22 100644
--- a/notification/user_added.php
+++ b/notification/user_added.php
@@ -50,7 +50,7 @@ public function find_users_for_notification($notification_data, $options = array
public function get_title()
{
$username = $this->user_loader->get_username($this->get_data('user_id'), 'no_profile');
- return $this->user->lang($this->language_key, $username, $this->get_data('topic_title'));
+ return $this->language->lang($this->language_key, $username, $this->get_data('topic_title'));
}
public function get_email_template()
diff --git a/phpunit.xml.dist b/phpunit.xml.dist
index 30b52c2..3e8e6a5 100644
--- a/phpunit.xml.dist
+++ b/phpunit.xml.dist
@@ -1,14 +1,14 @@
-
@@ -17,18 +17,18 @@
./tests/functional
- ./tests/functional/
+ ./tests/functional/
-
-
+
+
./
-
- ./language/
- ./migrations/
- ./tests/
-
-
-
+
+
+ ./language/
+ ./migrations/
+ ./tests/
+
+
diff --git a/tests/compat.php b/tests/compat.php
new file mode 100644
index 0000000..e0cf5a6
--- /dev/null
+++ b/tests/compat.php
@@ -0,0 +1,26 @@
+assertThat($haystack, $this->stringContains($needle), $message);
+ }
+
+ public function assertTextNotContains($needle, $haystack, $message = '')
+ {
+ $this->assertThat($haystack, $this->logicalNot($this->stringContains($needle)), $message);
+ }
+}
diff --git a/tests/cron/main_test.php b/tests/cron/main_test.php
index 7e3341d..52b14bb 100644
--- a/tests/cron/main_test.php
+++ b/tests/cron/main_test.php
@@ -21,16 +21,6 @@ public function getDataSet()
return $this->createXMLDataSet(dirname(__FILE__) . '/fixtures/hookup_entries.xml');
}
- protected function setUp() : void
- {
- parent::setUp();
-
- //$this->db = $this->new_dbal();
-
- $this->cache = $this->getMockBuilder('\phpbb\cache\service')->disableOriginalConstructor()->getMock();
- $this->log = $this->getMockBuilder('\phpbb\log\log')->disableOriginalConstructor()->getMock();
- }
-
public function runProvider()
{
$now = time();
@@ -140,6 +130,9 @@ private function get_task($last_run = 0)
$db = $this->new_dbal();
$this->db = $db;
+ $this->cache = $this->getMockBuilder('\phpbb\cache\service')->disableOriginalConstructor()->getMock();
+ $this->log = $this->getMockBuilder('\phpbb\log\log')->disableOriginalConstructor()->getMock();
+
$this->config = new \phpbb\config\config(array(
'hookup_weekly_reset_last_gc' => $last_run,
'hookup_weekly_reset_gc' => 86400,
diff --git a/tests/functional/install_test.php b/tests/functional/install_test.php
index 2c28d5a..cc19c8e 100644
--- a/tests/functional/install_test.php
+++ b/tests/functional/install_test.php
@@ -15,6 +15,8 @@
*/
class install_test extends \phpbb_functional_test_case
{
+ use \gn36\hookup\tests\compat;
+
static protected function setup_extensions()
{
return array('gn36/hookup');
@@ -24,12 +26,12 @@ public function test_validate_posting()
{
// Check whether we can still call posting.php in edit mode (even though login prevents any useful use)
$crawler = self::request('GET', 'posting.php?mode=edit&f=2&p=1');
- $this->assertContains('Username', $crawler->filter('dt')->text());
+ $this->assertTextContains('Username', $crawler->filter('dt')->text());
// The same thing with login, check for hookup buttons
$this->login();
$crawler = self::request('GET', 'posting.php?mode=edit&f=2&p=1');
- $this->assertContains('Meeting planner', $crawler->text());
+ $this->assertTextContains('Meeting planner', $crawler->text());
$this->assert_find_one_checkbox($crawler, 'hookup_enabled');
$this->assert_find_one_checkbox($crawler, 'hookup_self_invite');
$this->assert_find_one_checkbox($crawler, 'hookup_autoreset');
@@ -39,6 +41,6 @@ public function test_validate_viewtopic()
{
// Check whether we can still call viewtopic.php without errors
$crawler = self::request('GET', 'viewtopic.php?f=2&p=1');
- $this->assertContains('Welcome', $crawler->filter('h2')->text());
+ $this->assertTextContains('Welcome', $crawler->filter('h2')->text());
}
}
diff --git a/tests/functional/use_test.php b/tests/functional/use_test.php
index 27b99c2..100880d 100644
--- a/tests/functional/use_test.php
+++ b/tests/functional/use_test.php
@@ -15,6 +15,8 @@
*/
class use_test extends \phpbb_functional_test_case
{
+ use \gn36\hookup\tests\compat;
+
static protected function setup_extensions()
{
return array('gn36/hookup');
@@ -133,37 +135,37 @@ public function test_validate_viewtopic_login($hookup, $result, $title)
if ($result)
{
- $this->assertContains('Meeting planner', implode(' ', $crawler->filter('h2')->each(function($node, $i){ return $node->text(); })));
+ $this->assertTextContains('Meeting planner', implode(' ', $crawler->filter('h2')->each(function($node, $i){ return $node->text(); })));
if ($hookup['hookup_autoreset'])
{
- $this->assertContains('Weekly reset', implode(' ', $crawler->filter('h3')->each(function($node, $i){ return $node->text(); })));
+ $this->assertTextContains('Weekly reset', implode(' ', $crawler->filter('h3')->each(function($node, $i){ return $node->text(); })));
}
else
{
- $this->assertNotContains('Weekly reset', implode(' ', $crawler->filter('h3')->each(function($node, $i){ return $node->text(); })));
+ $this->assertTextNotContains('Weekly reset', implode(' ', $crawler->filter('h3')->each(function($node, $i){ return $node->text(); })));
}
if ($hookup['hookup_self_invite'])
{
- $this->assertContains('Participate', implode(' ', $crawler->filter('h3')->each(function($node, $i){ return $node->text(); })));
- $this->assertContains('invite_self', implode(' ', $crawler->filter('form')->each(function($node, $i){ return $node->html();})));
- $this->assertContains('part of this meeting planner', implode(' ', $crawler->filter('form')->each(function($node, $i){ return $node->html();})));
+ $this->assertTextContains('Participate', implode(' ', $crawler->filter('h3')->each(function($node, $i){ return $node->text(); })));
+ $this->assertTextContains('invite_self', implode(' ', $crawler->filter('form')->each(function($node, $i){ return $node->html();})));
+ $this->assertTextContains('part of this meeting planner', implode(' ', $crawler->filter('form')->each(function($node, $i){ return $node->html();})));
}
else
{
- $this->assertNotContains('Participate', implode(' ', $crawler->filter('h3')->each(function($node, $i){ return $node->text(); })));
+ $this->assertTextNotContains('Participate', implode(' ', $crawler->filter('h3')->each(function($node, $i){ return $node->text(); })));
// This actually can still be in there because the admin has permission to invite users
- //$this->assertNotContains('invite_self', implode(' ', $crawler->filter('form')->each(function($node, $i){ return $node->html();})));
- $this->assertNotContains('part of this meeting planner', implode(' ', $crawler->filter('form')->each(function($node, $i){ return $node->html();})));
+ //$this->assertTextNotContains('invite_self', implode(' ', $crawler->filter('form')->each(function($node, $i){ return $node->html();})));
+ $this->assertTextNotContains('part of this meeting planner', implode(' ', $crawler->filter('form')->each(function($node, $i){ return $node->html();})));
}
}
else
{
- $this->assertNotContains('Meeting planner', implode(' ', $crawler->filter('h2')->each(function($node, $i){ return $node->text(); })));
- $this->assertNotContains('Weekly reset', implode(' ', $crawler->filter('h3')->each(function($node, $i){ return $node->text(); })));
- $this->assertNotContains('Participate', implode(' ', $crawler->filter('h3')->each(function($node, $i){ return $node->text(); })));
- $this->assertNotContains('invite_self', implode(' ', $crawler->filter('input')->each(function($node, $i){ return $node->html();})));
- $this->assertNotContains('part of this meeting planner', implode(' ', $crawler->filter('input')->each(function($node, $i){ return $node->html();})));
+ $this->assertTextNotContains('Meeting planner', implode(' ', $crawler->filter('h2')->each(function($node, $i){ return $node->text(); })));
+ $this->assertTextNotContains('Weekly reset', implode(' ', $crawler->filter('h3')->each(function($node, $i){ return $node->text(); })));
+ $this->assertTextNotContains('Participate', implode(' ', $crawler->filter('h3')->each(function($node, $i){ return $node->text(); })));
+ $this->assertTextNotContains('invite_self', implode(' ', $crawler->filter('input')->each(function($node, $i){ return $node->html();})));
+ $this->assertTextNotContains('part of this meeting planner', implode(' ', $crawler->filter('input')->each(function($node, $i){ return $node->html();})));
}
}
diff --git a/tests/functions/hookup_test.php b/tests/functions/hookup_test.php
index 87906af..6e86d0b 100644
--- a/tests/functions/hookup_test.php
+++ b/tests/functions/hookup_test.php
@@ -703,10 +703,10 @@ public function test_delete($topic_id, $returnvalue, $topicdata, $datedata, $mem
$this->assertEquals($returnvalue, $hookup->delete());
// Attributes
- $this->assertAttributeEmpty('hookup_availables', $hookup);
- $this->assertAttributeEmpty('hookup_dates', $hookup);
- $this->assertAttributeEmpty('hookup_users', $hookup);
- $this->assertAttributeEmpty('hookup_available_sums', $hookup);
+ $this->assertEmpty($hookup->hookup_availables);
+ $this->assertEmpty($hookup->hookup_dates);
+ $this->assertEmpty($hookup->hookup_users);
+ $this->assertEmpty($hookup->hookup_available_sums);
$this->assertFalse($hookup->hookup_enabled);
$this->assertFalse($hookup->hookup_autoreset);
$this->assertFalse($hookup->hookup_self_invite);
diff --git a/travis/local_tools/full_test.sh b/travis/local_tools/full_test.sh
deleted file mode 100644
index 6993759..0000000
--- a/travis/local_tools/full_test.sh
+++ /dev/null
@@ -1,76 +0,0 @@
-#!/bin/bash
-
-# Environment:
-#EXTNAME="phpbbde/pastebin" # CHANGE name of the extension HERE
-EXTNAME="gn36/hookup" # CHANGE name of the extension HERE
-#EXTBRANCH="dev/translation-validator" # Branch to test
-EXTBRANCH="dev/tests" # Branch to test
-SNIFF="1" # Should we run code sniffer on your code?
-IMAGE_ICC="1" # Should we run icc profile sniffer on your images?
-EPV="1" # Should we run EPV (Extension Pre Validator) on your code?
-LANG_TEST="0"
-PHPBB_BRANCH="3.1.x"
-
-DB=mysqli
-TRAVIS_PHP_VERSION=5.5.9
-
-# Go into testdir and copy the extension:
-EXTDIR=${EXTNAME%/*}
-if [ ! -e testdir ]; then
- mkdir testdir
-fi
-cd testdir
-if [ -e $EXTDIR ]; then
- rm -rf $EXTDIR
-fi
-mkdir $EXTDIR
-cp -r ../../extensions/$EXTNAME $EXTDIR
-#git clone --depth=1 ../../extensions/$EXTNAME $EXTNAME --branch=$EXTBRANCH
-cd $EXTNAME
-
-# Install
-#php composer.phar install --dev --no-interaction --prefer-source
-php composer.phar install --no-interaction
-if [ ! -e ../../phpBB3 ]; then
- chmod +x travis/prepare-phpbb.sh
- travis/prepare-phpbb.sh $EXTNAME $PHPBB_BRANCH
- if [ "$LANG_TEST" != '0' ]; then
- travis/prepare-langtest.sh $EXTNAME $PHPBB_BRANCH
- fi
- cd ../../phpBB3
-else
- if [ "$LANG_TEST" != '0' ]; then
- travis/prepare-langtest.sh $EXTNAME $PHPBB_BRANCH
- fi
- if [ ! -e ../../tmp ]; then
- # This is from prepare-phpbb.sh
- mkdir ../../tmp
- cp -R . ../../tmp
- fi
- cd ../../phpBB3
- git pull origin
-fi
-
-travis/prepare-extension.sh $EXTNAME $PHPBB_BRANCH
-travis/setup-phpbb.sh $DB $TRAVIS_PHP_VERSION
-travis/install-phpbb-test-dependencies.sh
-cd phpBB
-#php ../composer.phar install --dev --no-interaction --prefer-source
-php ../composer.phar install --no-interaction
-cd ..
-
-# Preparation:
-travis/setup-database.sh $DB $TRAVIS_PHP_VERSION
-
-# Functional tests:
-if [ -e ../../../test_config.php ]; then
- cp ../../../test_config.php ../tests/
-fi
-
-# script:
-sh -c "if [ '$SNIFF' != '0' ]; then travis/ext-sniff.sh $DB $TRAVIS_PHP_VERSION $EXTNAME; fi"
-sh -c "if [ '$IMAGE_ICC' != '0' ]; then travis/check-image-icc-profiles.sh $DB $TRAVIS_PHP_VERSION; fi"
-#php phpBB/vendor/bin/phpunit --configuration phpBB/ext/$EXTNAME/travis/phpunit-$DB-travis.xml --bootstrap ./tests/bootstrap.php
-php phpBB/vendor/bin/phpunit --configuration phpBB/ext/$EXTNAME/phpunit.xml.dist --bootstrap ./tests/bootstrap.php
-sh -c "if [ '$EPV' != '0' ] && [ '$DB' = 'mysqli' ]; then phpBB/ext/$EXTNAME/vendor/bin/EPV.php run --dir='phpBB/ext/$EXTNAME/'; fi"
-sh -c "if [ '$LANG_TEST' != '0' ]; then ../langtest/travis/test-lang.sh; fi"
diff --git a/travis/local_tools/phpunittest.sh b/travis/local_tools/phpunittest.sh
deleted file mode 100644
index 1314465..0000000
--- a/travis/local_tools/phpunittest.sh
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/bin/bash
-# This script assumes a working test setup in testdir (e.g. setup by one of the other scripts)
-# It also assumes the extensions to be tested to be located in ../extensions/vendor/name (relative to this script)
-# Please make sure this is correct, otherwise testing won't work
-# For db and functional tests, the test_config.php is required to be in the same folder.
-#
-# (c) 2016 - Martin Beckmann
-# License: GPL v2
-#
-
-# Environment:
-export EXTNAME="gn36/hookup" # Name of extension
-
-# Copy the current version of the ext for testing:
-EXTDIR=${EXTNAME%/*}
-if [ ! -e testdir ]; then
- mkdir testdir
-fi
-cd testdir/phpBB3/phpBB/ext/
-if [ -e $EXTDIR ]; then
- rm -rf $EXTDIR 2>/dev/null
-fi
-mkdir $EXTDIR
-#cp -r ../../../../../extensions/$EXTNAME $EXTDIR
-cp -r ../../../../../phpbb/phpBB/ext/$EXTNAME $EXTDIR
-
-#cp -r ../../../../../extensions/$EXTNAME/event $EXTNAME
-cp -r ../../../../../phpbb/phpBB/ext/$EXTNAME/event $EXTNAME
-
-cd ../../
-pwd
-
-# Functional and database tests require test_config, make sure it's there:
-if [ -e ../../test_config.php ]; then
- cp ../../test_config.php tests/
-fi
-
-# Use installed phpunit version (may be fairly old)
-#phpunit -c phpBB/ext/$EXTNAME/phpunit.xml.dist |sed "s/\[^[[0-9;]*[a-zA-Z]//gi"
-#phpunit -c phpBB/ext/$EXTNAME/travis/phpunit-mysqli-travis.xml
-
-# Use phpBB dependency phpunit:
-phpBB/vendor/bin/phpunit -c phpBB/ext/$EXTNAME/phpunit.xml.dist
diff --git a/travis/local_tools/smart_full_test.sh b/travis/local_tools/smart_full_test.sh
deleted file mode 100644
index 509fdd5..0000000
--- a/travis/local_tools/smart_full_test.sh
+++ /dev/null
@@ -1,113 +0,0 @@
-#!/bin/bash
-#
-# Performs a full travis-like test on the extension.
-# Please adjust settings to ensure that this works.
-#
-# This crude script assumes the following setup:
-# /
-# extensions/
-# gn36/hookup/
-# test/
-# testdir/ (will be created automatically)
-# smart_full_test.sh
-# phpunittest.sh
-# full_test.sh
-# test_config.php (optional)
-#
-# Testing done by this script is very similar to travis testing.
-# The script was created based upon a travis configuration.
-# This leads to some weird constructions of folders sometimes.
-#
-# (c) 2016 - Martin Beckmann
-# License: GPL v2
-#
-
-# Environment:
-EXTNAME="gn36/hookup" # CHANGE name of the extension HERE
-EXTBRANCH="dev/tests" # Branch to test (not used)
-SNIFF="1" # Should we run code sniffer on your code?
-IMAGE_ICC="1" # Should we run icc profile sniffer on your images?
-EPV="1" # Should we run EPV (Extension Pre Validator) on your code?
-LANG_TEST="0" # Should we validate the language files?
-PHPBB_BRANCH="3.1.x" # Which phpBB branch to check out
-
-DB=mysqli
-TRAVIS_PHP_VERSION=5.5.9
-
-# Go into testdir and copy the extension:
-EXTDIR=${EXTNAME%/*}
-if [ ! -e testdir ]; then
- mkdir testdir
-else
- # Existing test dir, delete a few things to make sure everything works out correctly
- rm -rf testdir/$EXTNAME
- rm -rf testdir/phpBB3/phpBB/ext/$EXTNAME
- rm -rf testdir/phpBB3/phpBB/ext/$EXTDIR
- rm -rf testdir/phpBB3/phpBB/cache/*
- cp testdir/phpBB3/phpBB/ext/index.htm testdir/phpBB3/phpBB/cache/
- rm -rf testdir/tmp
-
- # Not sure if this is really necessary
- dbs=$(mysql -e "SET SESSION group_concat_max_len=1000000; SELECT CONCAT( 'DROP TABLE ', GROUP_CONCAT(table_name) , ';' ) AS statement FROM information_schema.tables WHERE table_schema = 'phpbb_tests' AND table_name LIKE 'phpbb_%';")
- cleaned=$(echo "$dbs" | sed 's/statement//g')
- mysql -e "USE phpbb_tests; $cleaned"
-fi
-cd testdir
-if [ -e $EXTDIR ]; then
- rm -rf $EXTDIR
-fi
-mkdir $EXTDIR
-
-# Copy instead of cloning (on some systems, cloning may be faster?)
-cp -r ../../extensions/$EXTNAME $EXTDIR
-#git clone --depth=1 ../../extensions/$EXTNAME $EXTNAME --branch=$EXTBRANCH
-cd $EXTNAME
-
-# Install
-#php composer.phar install --dev --no-interaction --prefer-source
-php composer.phar install --no-interaction
-if [ ! -e ../../phpBB3 ]; then
- chmod +x travis/prepare-phpbb.sh
- travis/prepare-phpbb.sh $EXTNAME $PHPBB_BRANCH
- if [ "$LANG_TEST" != '0' ]; then
- travis/prepare-langtest.sh $EXTNAME $PHPBB_BRANCH
- fi
- cd ../../phpBB3
-else
- if [ "$LANG_TEST" != '0' ]; then
- travis/prepare-langtest.sh $EXTNAME $PHPBB_BRANCH
- fi
- if [ ! -e ../../tmp ]; then
- # This is from prepare-phpbb.sh
- mkdir ../../tmp
- cp -R . ../../tmp
- fi
- cd ../../phpBB3
- git pull origin
-fi
-
-travis/prepare-extension.sh $EXTNAME $PHPBB_BRANCH
-travis/setup-phpbb.sh $DB $TRAVIS_PHP_VERSION
-travis/install-phpbb-test-dependencies.sh
-cd phpBB
-#php ../composer.phar install --dev --no-interaction --prefer-source
-php ../composer.phar install --no-interaction
-cd ..
-
-# Preparation:
-travis/setup-database.sh $DB $TRAVIS_PHP_VERSION
-
-# Database setup:
-if [ -e ../../../test_config.php ]; then
- cp ../../../test_config.php ../tests/
-fi
-
-# script:
-sh -c "if [ '$SNIFF' != '0' ]; then travis/ext-sniff.sh $DB $TRAVIS_PHP_VERSION $EXTNAME; fi"
-sh -c "if [ '$IMAGE_ICC' != '0' ]; then travis/check-image-icc-profiles.sh $DB $TRAVIS_PHP_VERSION; fi"
-# This would be default, but the default sql user config is kind of stupid in some setups.
-# So use the project unittest file and a config file instead:
-#php phpBB/vendor/bin/phpunit --configuration phpBB/ext/$EXTNAME/travis/phpunit-$DB-travis.xml --bootstrap ./tests/bootstrap.php
-php phpBB/vendor/bin/phpunit --configuration phpBB/ext/$EXTNAME/phpunit.xml.dist --bootstrap ./tests/bootstrap.php
-sh -c "if [ '$EPV' != '0' ] && [ '$DB' = 'mysqli' ]; then phpBB/ext/$EXTNAME/vendor/bin/EPV.php run --dir='phpBB/ext/$EXTNAME/'; fi"
-sh -c "if [ '$LANG_TEST' != '0' ]; then ../langtest/travis/test-lang.sh; fi"
diff --git a/travis/local_tools/test_config.php b/travis/local_tools/test_config.php
deleted file mode 100644
index 7ebb625..0000000
--- a/travis/local_tools/test_config.php
+++ /dev/null
@@ -1,16 +0,0 @@
- 3,
-));" > $LANGTESTPATH/language/$i/common.php
-done
-
-# copy the license file to all languages to avoid that fatal error
-for i in $(ls $EXTPATH/language/)
-do
- cp $EXTPATH/license.txt $LANGTESTPATH/language/$i/LICENSE
-done
-
-# link to vendor dir and travis dir
-currentdir=`pwd`
-cd $EXTPATH
-absextpath=`pwd`
-cd $currentdir
-ln -s $absextpath/vendor/ $LANGTESTPATH/vendor
-ln -s $absextpath/travis/ $LANGTESTPATH/travis
-
diff --git a/travis/prepare-phpbb.sh b/travis/prepare-phpbb.sh
deleted file mode 100755
index 46b739b..0000000
--- a/travis/prepare-phpbb.sh
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/bash
-#
-# This file is part of the phpBB Forum Software package.
-#
-# @copyright (c) phpBB Limited
-# @license GNU General Public License, version 2 (GPL-2.0)
-#
-# For full copyright and license information, please see
-# the docs/CREDITS.txt file.
-#
-set -e
-set -x
-
-EXTNAME=$1
-BRANCH=$2
-EXTPATH_TEMP=$3
-
-# Copy extension to a temp folder
-mkdir ../../tmp
-cp -R . ../../tmp
-cd ../../
-
-# Clone phpBB
-git clone --depth=1 "git://github.com/phpbb/phpbb.git" "phpBB3" --branch=$BRANCH
\ No newline at end of file
diff --git a/travis/test-lang.sh b/travis/test-lang.sh
deleted file mode 100755
index d396289..0000000
--- a/travis/test-lang.sh
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/bash
-#
-# This file is part of the hookup extension for phpBB
-#
-# @copyright (c) gn#36
-# @license GNU General Public License, version 2 (GPL-2.0)
-#
-#
-#set -e
-#set -x
-
-echo "Running language tests"
-retval=true
-# we should be in phpBB3, so we need to go up one level into the langtest dir:
-cd ../langtest ;
-
-for i in $(ls language/)
-do
- php vendor/bin/PhpbbTranslationValidator.php validate --language-dir=language $i
- if [ ! $? -eq 0 ]; then
- retval=false
- fi
- echo "";
-done;
-
-cd ../phpBB3
-if [ "$retval" = true ]; then
- exit 0
-fi
-exit 1
-