Merge pull request #4960 from rxu/ticket/15367

[ticket/15367] Escape special characters in Sphinx search backend
This commit is contained in:
Oliver Schramm 2017-10-05 14:54:47 +02:00
commit 5514b10699
1672 changed files with 78265 additions and 44786 deletions

6
.gitignore vendored
View file

@ -4,7 +4,7 @@
!/phpBB/cache/.htaccess !/phpBB/cache/.htaccess
!/phpBB/cache/index.html !/phpBB/cache/index.html
/phpBB/composer.phar /phpBB/composer.phar
/phpBB/config*.php /phpBB/config*.php*
/phpBB/ext/* /phpBB/ext/*
/phpBB/files/* /phpBB/files/*
/phpBB/images/avatars/gallery/* /phpBB/images/avatars/gallery/*
@ -16,9 +16,11 @@
/phpBB/store/* /phpBB/store/*
/phpBB/styles/* /phpBB/styles/*
!/phpBB/styles/prosilver !/phpBB/styles/prosilver
!/phpBB/styles/subsilver2 !/phpBB/styles/all
/phpBB/vendor /phpBB/vendor
/tests/phpbb_unit_tests.sqlite* /tests/phpbb_unit_tests.sqlite*
/tests/test_config*.php /tests/test_config*.php
/tests/tmp/* /tests/tmp/*
/tests/vendor /tests/vendor
/vagrant/phpbb-install-config.yml
.vagrant

View file

@ -4,12 +4,10 @@ dist: precise
matrix: matrix:
include: include:
- php: 5.3.3
env: DB=mysqli
- php: 5.3
env: DB=mysqli # MyISAM
- php: 5.4 - php: 5.4
env: DB=mysqli env: DB=none;NOTESTS=1
- php: 5.4
env: DB=mysqli # MyISAM
- php: 5.4 - php: 5.4
env: DB=mysql env: DB=mysql
- php: 5.4 - php: 5.4
@ -24,28 +22,35 @@ matrix:
env: DB=mysqli env: DB=mysqli
- php: 5.6 - php: 5.6
env: DB=mysqli env: DB=mysqli
- php: 7.0
env: DB=mysqli
- php: 7.1
env: DB=mysqli
- php: nightly
env: DB=mysqli
- php: hhvm - php: hhvm
env: DB=mysqli env: DB=mysqli
allow_failures: allow_failures:
- php: hhvm - php: hhvm
- php: nightly
fast_finish: true fast_finish: true
services: services:
- redis-server - redis-server
install: install:
- travis/setup-phpbb.sh $DB $TRAVIS_PHP_VERSION - travis/setup-phpbb.sh $DB $TRAVIS_PHP_VERSION $NOTESTS
before_script: before_script:
- travis/setup-database.sh $DB $TRAVIS_PHP_VERSION - travis/setup-database.sh $DB $TRAVIS_PHP_VERSION $NOTESTS
- phantomjs --webdriver=8910 > /dev/null & - phantomjs --webdriver=8910 > /dev/null &
script: script:
- travis/phing-sniff.sh $DB $TRAVIS_PHP_VERSION - travis/phing-sniff.sh $DB $TRAVIS_PHP_VERSION $NOTESTS
- travis/check-sami-parse-errors.sh $DB $TRAVIS_PHP_VERSION - travis/check-sami-parse-errors.sh $DB $TRAVIS_PHP_VERSION $NOTESTS
- travis/check-image-icc-profiles.sh $DB $TRAVIS_PHP_VERSION - travis/check-image-icc-profiles.sh $DB $TRAVIS_PHP_VERSION $NOTESTS
- travis/check-executable-files.sh $DB $TRAVIS_PHP_VERSION ./ - travis/check-executable-files.sh $DB $TRAVIS_PHP_VERSION $NOTESTS ./
- sh -c "if [ '$SLOWTESTS' != '1' -a '$DB' = 'mysqli' ]; then phpBB/vendor/bin/phpunit tests/lint_test.php; fi" - sh -c "if [ '$SLOWTESTS' != '1' -a '$DB' = 'mysqli' ]; then phpBB/vendor/bin/phpunit tests/lint_test.php; fi"
- sh -c "if [ '$SLOWTESTS' != '1' ]; then phpBB/vendor/bin/phpunit --configuration travis/phpunit-$DB-travis.xml; fi" - sh -c "if [ '$NOTESTS' != '1' -a '$SLOWTESTS' != '1' ]; then phpBB/vendor/bin/phpunit --configuration travis/phpunit-$DB-travis.xml --verbose --stop-on-error; fi"
- sh -c "if [ '$SLOWTESTS' = '1' ]; then phpBB/vendor/bin/phpunit --configuration travis/phpunit-$DB-travis.xml --group slow; fi" - sh -c "if [ '$SLOWTESTS' = '1' ]; then phpBB/vendor/bin/phpunit --configuration travis/phpunit-$DB-travis.xml --group slow; fi"
- sh -c "if [ '$TRAVIS_PHP_VERSION' = '5.3.3' -a '$DB' = 'mysqli' -a '$TRAVIS_PULL_REQUEST' != 'false' ]; then git-tools/commit-msg-hook-range.sh origin/$TRAVIS_BRANCH..FETCH_HEAD; fi" - sh -c "set -x;if [ '$NOTESTS' = '1' -a '$TRAVIS_PULL_REQUEST' != 'false' ]; then git-tools/commit-msg-hook-range.sh origin/$TRAVIS_BRANCH..FETCH_HEAD; fi"

View file

@ -23,6 +23,10 @@ To be able to run an installation from the repo (and not from a pre-built packag
3. Read our [Coding guidelines](https://wiki.phpbb.com/Coding_guidelines) and [Git Contribution Guidelines](http://wiki.phpbb.com/Git) 3. Read our [Coding guidelines](https://wiki.phpbb.com/Coding_guidelines) and [Git Contribution Guidelines](http://wiki.phpbb.com/Git)
4. Send us a pull request 4. Send us a pull request
## VAGRANT
Read our [Vagrant documentation](phpBB/docs/vagrant.md) to find out how to use Vagrant to develop and contribute to phpBB.
## AUTOMATED TESTING ## AUTOMATED TESTING
We have unit and functional tests in order to prevent regressions. You can view the bamboo continuous integration [here](http://bamboo.phpbb.com) or check our travis builds below: We have unit and functional tests in order to prevent regressions. You can view the bamboo continuous integration [here](http://bamboo.phpbb.com) or check our travis builds below:

25
Vagrantfile vendored Normal file
View file

@ -0,0 +1,25 @@
require 'json'
require 'yaml'
VAGRANTFILE_API_VERSION ||= "2"
confDir = $confDir ||= File.expand_path("phpBB/vendor/laravel/homestead", File.dirname(__FILE__))
homesteadYamlPath = "vagrant/bootstrap.yaml"
afterScriptPath = "vagrant/after.sh"
aliasesPath = "vagrant/aliases"
require File.expand_path(confDir + '/scripts/homestead.rb')
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
if File.exists? aliasesPath then
config.vm.provision "file", source: aliasesPath, destination: "~/.bash_aliases"
end
if File.exists? homesteadYamlPath then
Homestead.configure(config, YAML::load(File.read(homesteadYamlPath)))
end
if File.exists? afterScriptPath then
config.vm.provision "shell", path: afterScriptPath
end
end

View file

@ -2,9 +2,9 @@
<project name="phpBB" description="The phpBB forum software" default="all" basedir="../"> <project name="phpBB" description="The phpBB forum software" default="all" basedir="../">
<!-- a few settings for the build --> <!-- a few settings for the build -->
<property name="newversion" value="3.1.12-dev" /> <property name="newversion" value="3.2.2-dev" />
<property name="prevversion" value="3.1.11" /> <property name="prevversion" value="3.2.1" />
<property name="olderversions" value="3.0.14, 3.1.0, 3.1.1, 3.1.2, 3.1.3, 3.1.4, 3.1.5, 3.1.6, 3.1.7, 3.1.7-pl1, 3.1.8, 3.1.9, 3.1.10" /> <property name="olderversions" value="3.0.14, 3.1.0, 3.1.1, 3.1.2, 3.1.3, 3.1.4, 3.1.5, 3.1.6, 3.1.7, 3.1.7-pl1, 3.1.8, 3.1.9, 3.1.10, 3.1.11, 3.2.0-a1, 3.2.0-a2, 3.2.0-b1, 3.2.0-b2, 3.2.0-RC1, 3.2.0-RC2, 3.2.0" />
<!-- no configuration should be needed beyond this point --> <!-- no configuration should be needed beyond this point -->
<property name="oldversions" value="${olderversions}, ${prevversion}" /> <property name="oldversions" value="${olderversions}, ${prevversion}" />
@ -142,6 +142,7 @@
<phingcall target="export"> <phingcall target="export">
<property name="revision" value="release-${version}" /> <property name="revision" value="release-${version}" />
<property name="version" value="${version}" />
<property name="dir" value="build/old_versions/release-${version}" /> <property name="dir" value="build/old_versions/release-${version}" />
<property name="skip-composer" value="true" /> <property name="skip-composer" value="true" />
</phingcall> </phingcall>
@ -183,9 +184,6 @@
<exec dir="build" escape="false" <exec dir="build" escape="false"
command="LC_ALL=C diff -crNEBZbd old_versions/release-${prevversion}/styles/prosilver new_version/phpBB3/styles/prosilver > command="LC_ALL=C diff -crNEBZbd old_versions/release-${prevversion}/styles/prosilver new_version/phpBB3/styles/prosilver >
save/phpbb-${prevversion}_to_${newversion}_prosilver.patch" /> save/phpbb-${prevversion}_to_${newversion}_prosilver.patch" />
<exec dir="build" escape="false"
command="LC_ALL=C diff -crNEBZbd old_versions/release-${prevversion}/styles/subsilver2 new_version/phpBB3/styles/subsilver2 >
save/phpbb-${prevversion}_to_${newversion}_subsilver2.patch" />
<exec dir="build" escape="false" <exec dir="build" escape="false"
command="git shortlog --summary --numbered release-${prevversion}...HEAD > command="git shortlog --summary --numbered release-${prevversion}...HEAD >
@ -290,12 +288,62 @@
</else> </else>
</if> </if>
<!-- Checkout latest viglink to ext folder -->
<available file="${dir}/ext" type="dir" property="add-viglink-ext" />
<exec dir="${dir}"
command='php -r "echo version_compare(&apos;${version}&apos;, &apos;3.2.0-RC2&apos;, &apos;>=&apos;) ? &apos;true&apos; : &apos;false&apos;;"'
checkreturn="true"
outputProperty='viglink-available' />
<if>
<and>
<equals arg1="${add-viglink-ext}" arg2="1" trim="true" />
<or>
<equals arg1="${revision}" arg2="HEAD" trim="true" />
<equals arg1="${viglink-available}" arg2="1" trim="true" />
</or>
</and>
<then>
<exec dir="${dir}/ext" command="mkdir phpbb" passthru="true" />
<exec dir="${dir}/ext/phpbb" command="git clone https://github.com/phpbb-extensions/viglink.git viglink" passthru="true" checkreturn="true" />
<if>
<equals arg1="${revision}" arg2="HEAD" trim="true" />
<then>
<exec dir="${dir}/ext/phpbb/viglink"
command="git rev-parse release-phpbb-${version}"
returnProperty='viglink_head_tag_exists' />
<if>
<equals arg1="${viglink_head_tag_exists}" arg2="0" trim="true" />
<then>
<exec dir="${dir}/ext/phpbb/viglink" command="git checkout release-phpbb-${version}" passthru="true" />
</then>
<else>
<exec dir="${dir}/ext/phpbb/viglink" command="git checkout master" passthru="true" />
</else>
</if>
</then>
<else>
<exec dir="${dir}/ext/phpbb/viglink" command="git checkout release-phpbb-${version}" passthru="true" />
</else>
</if>
<delete dir="${dir}/ext/phpbb/viglink/.git" />
<delete dir="${dir}/ext/phpbb/viglink/tests" />
<delete dir="${dir}/ext/phpbb/viglink/travis" />
<delete file="${dir}/ext/phpbb/viglink/.gitattributes" />
<delete file="${dir}/ext/phpbb/viglink/.travis.yml" />
<delete file="${dir}/ext/phpbb/viglink/phpunit.xml.dist" />
<delete file="${dir}/ext/phpbb/viglink/README.md" />
</then>
</if>
<!-- Create schema.json --> <!-- Create schema.json -->
<exec dir="${dir}" command="php develop/create_schema_files.php" /> <exec dir="${dir}" command="php develop/create_schema_files.php" />
<delete file="${dir}/config.php" /> <delete file="${dir}/config.php" />
<delete dir="${dir}/develop" /> <delete dir="${dir}/develop" />
<delete dir="${dir}/install/data" /> <delete dir="${dir}/install/data" />
<delete dir="${dir}/config/development" />
<delete dir="${dir}/config/test" />
<echo msg="Setting permissions for checkout of ${revision} in ${dir}" /> <echo msg="Setting permissions for checkout of ${revision} in ${dir}" />
<!-- set permissions of all files to 644, directories to 755 --> <!-- set permissions of all files to 644, directories to 755 -->
@ -310,6 +358,50 @@
<target name="clean-vendor-dir"> <target name="clean-vendor-dir">
<!-- Delete unrelated files from vendor/, see PHPBB3-12390 --> <!-- Delete unrelated files from vendor/, see PHPBB3-12390 -->
<delete dir="${dir}/vendor/bantu/ini-get-wrapper/tests" />
<delete file="${dir}/vendor/bantu/ini-get-wrapper/.gitignore" />
<delete file="${dir}/vendor/bantu/ini-get-wrapper/.scrutinizer.yml" />
<delete file="${dir}/vendor/bantu/ini-get-wrapper/.travis.yml" />
<delete file="${dir}/vendor/bantu/ini-get-wrapper/phpunit.xml.dist" />
<delete file="${dir}/vendor/bantu/ini-get-wrapper/README.md" />
<delete dir="${dir}/vendor/google/recaptcha/examples" />
<delete dir="${dir}/vendor/google/recaptcha/tests" />
<delete file="${dir}/vendor/google/recaptcha/.gitignore" />
<delete file="${dir}/vendor/google/recaptcha/.travis.yml" />
<delete file="${dir}/vendor/google/recaptcha/CONTRIBUTING.md" />
<delete file="${dir}/vendor/google/recaptcha/phpunit.xml.dist" />
<delete file="${dir}/vendor/google/recaptcha/README.md" />
<delete dir="${dir}/vendor/guzzlehttp/guzzle/build" />
<delete dir="${dir}/vendor/guzzlehttp/guzzle/docs" />
<delete dir="${dir}/vendor/guzzlehttp/guzzle/tests" />
<delete file="${dir}/vendor/guzzlehttp/guzzle/CHANGELOG.md" />
<delete file="${dir}/vendor/guzzlehttp/guzzle/.editorconfig" />
<delete file="${dir}/vendor/guzzlehttp/guzzle/.gitignore" />
<delete file="${dir}/vendor/guzzlehttp/guzzle/Makefile" />
<delete file="${dir}/vendor/guzzlehttp/guzzle/phpunit.xml.dist" />
<delete file="${dir}/vendor/guzzlehttp/guzzle/README.md" />
<delete file="${dir}/vendor/guzzlehttp/guzzle/.travis.yml" />
<delete file="${dir}/vendor/guzzlehttp/guzzle/UPGRADING.md" />
<delete dir="${dir}/vendor/guzzlehttp/ringphp/docs" />
<delete dir="${dir}/vendor/guzzlehttp/ringphp/tests" />
<delete file="${dir}/vendor/guzzlehttp/ringphp/CHANGELOG.md" />
<delete file="${dir}/vendor/guzzlehttp/ringphp/.gitignore" />
<delete file="${dir}/vendor/guzzlehttp/ringphp/Makefile" />
<delete file="${dir}/vendor/guzzlehttp/ringphp/phpunit.xml.dist" />
<delete file="${dir}/vendor/guzzlehttp/ringphp/README.rst" />
<delete file="${dir}/vendor/guzzlehttp/ringphp/.travis.yml" />
<delete dir="${dir}/vendor/guzzlehttp/streams/tests" />
<delete file="${dir}/vendor/guzzlehttp/streams/CHANGELOG.rst" />
<delete file="${dir}/vendor/guzzlehttp/streams/.gitignore" />
<delete file="${dir}/vendor/guzzlehttp/streams/Makefile" />
<delete file="${dir}/vendor/guzzlehttp/streams/phpunit.xml.dist" />
<delete file="${dir}/vendor/guzzlehttp/streams/README.rst" />
<delete file="${dir}/vendor/guzzlehttp/streams/.travis.yml" />
<delete dir="${dir}/vendor/lusitanian/oauth/examples" /> <delete dir="${dir}/vendor/lusitanian/oauth/examples" />
<delete dir="${dir}/vendor/lusitanian/oauth/tests" /> <delete dir="${dir}/vendor/lusitanian/oauth/tests" />
<delete file="${dir}/vendor/lusitanian/oauth/.gitignore" /> <delete file="${dir}/vendor/lusitanian/oauth/.gitignore" />
@ -318,69 +410,121 @@
<delete file="${dir}/vendor/lusitanian/oauth/phpunit.xml.dist" /> <delete file="${dir}/vendor/lusitanian/oauth/phpunit.xml.dist" />
<delete file="${dir}/vendor/lusitanian/oauth/README.md" /> <delete file="${dir}/vendor/lusitanian/oauth/README.md" />
<delete dir="${dir}/vendor/paragonie/random_compat/dist" />
<delete dir="${dir}/vendor/paragonie/random_compat/other" />
<delete file="${dir}/vendor/paragonie/random_compat/CHANGELOG.md" />
<delete file="${dir}/vendor/paragonie/random_compat/ERRATA.md" />
<delete file="${dir}/vendor/paragonie/random_compat/README.md" />
<delete file="${dir}/vendor/paragonie/random_compat/SECURITY.md" />
<delete file="${dir}/vendor/patchwork/utf8/.travis.yml" />
<delete file="${dir}/vendor/patchwork/utf8/CHANGELOG.md" />
<delete file="${dir}/vendor/patchwork/utf8/phpunit.xml.dist" />
<delete file="${dir}/vendor/patchwork/utf8/README.md" />
<delete dir="${dir}/vendor/psr/log/Psr/Log/Test" /> <delete dir="${dir}/vendor/psr/log/Psr/Log/Test" />
<delete file="${dir}/vendor/psr/log/.gitignore" /> <delete file="${dir}/vendor/psr/log/.gitignore" />
<delete file="${dir}/vendor/psr/log/README.md" /> <delete file="${dir}/vendor/psr/log/README.md" />
<delete dir="${dir}/vendor/symfony/config/Symfony/Component/Config/Tests" /> <delete dir="${dir}/vendor/react/promise/tests" />
<delete file="${dir}/vendor/symfony/config/Symfony/Component/Config/.gitignore" /> <delete file="${dir}/vendor/react/promise/CHANGELOG.md" />
<delete file="${dir}/vendor/symfony/config/Symfony/Component/Config/CHANGELOG.md" /> <delete file="${dir}/vendor/react/promise/.gitignore" />
<delete file="${dir}/vendor/symfony/config/Symfony/Component/Config/README.md" /> <delete file="${dir}/vendor/react/promise/phpunit.xml.dist" />
<delete file="${dir}/vendor/symfony/config/Symfony/Component/Config/phpunit.xml.dist" /> <delete file="${dir}/vendor/react/promise/README.md" />
<delete file="${dir}/vendor/react/promise/.travis.yml" />
<delete dir="${dir}/vendor/symfony/console/Symfony/Component/Console/Tests" /> <delete dir="${dir}/vendor/s9e/text-formatter/.git" />
<delete file="${dir}/vendor/symfony/console/Symfony/Component/Console/.gitignore" />
<delete file="${dir}/vendor/symfony/console/Symfony/Component/Console/CHANGELOG.md" />
<delete file="${dir}/vendor/symfony/console/Symfony/Component/Console/README.md" />
<delete file="${dir}/vendor/symfony/console/Symfony/Component/Console/phpunit.xml.dist" />
<delete dir="${dir}/vendor/symfony/debug/Symfony/Component/Debug/Tests" /> <delete dir="${dir}/vendor/symfony/config/.git" />
<delete file="${dir}/vendor/symfony/debug/Symfony/Component/Debug/.gitignore" /> <delete dir="${dir}/vendor/symfony/config/Tests" />
<delete file="${dir}/vendor/symfony/debug/Symfony/Component/Debug/CHANGELOG.md" /> <delete file="${dir}/vendor/symfony/config/.gitignore" />
<delete file="${dir}/vendor/symfony/debug/Symfony/Component/Debug/README.md" /> <delete file="${dir}/vendor/symfony/config/CHANGELOG.md" />
<delete file="${dir}/vendor/symfony/debug/Symfony/Component/Debug/phpunit.xml.dist" /> <delete file="${dir}/vendor/symfony/config/README.md" />
<delete file="${dir}/vendor/symfony/config/phpunit.xml.dist" />
<delete dir="${dir}/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Tests" /> <delete dir="${dir}/vendor/symfony/console/.git" />
<delete file="${dir}/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/.gitignore" /> <delete dir="${dir}/vendor/symfony/console/Tests" />
<delete file="${dir}/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/CHANGELOG.md" /> <delete file="${dir}/vendor/symfony/console/.gitignore" />
<delete file="${dir}/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/README.md" /> <delete file="${dir}/vendor/symfony/console/CHANGELOG.md" />
<delete file="${dir}/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/phpunit.xml.dist" /> <delete file="${dir}/vendor/symfony/console/README.md" />
<delete file="${dir}/vendor/symfony/console/phpunit.xml.dist" />
<delete dir="${dir}/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/Tests" /> <delete dir="${dir}/vendor/symfony/debug/.git" />
<delete file="${dir}/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/.gitignore" /> <delete dir="${dir}/vendor/symfony/debug/Tests" />
<delete file="${dir}/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/CHANGELOG.md" /> <delete file="${dir}/vendor/symfony/debug/.gitignore" />
<delete file="${dir}/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/README.md" /> <delete file="${dir}/vendor/symfony/debug/CHANGELOG.md" />
<delete file="${dir}/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/phpunit.xml.dist" /> <delete file="${dir}/vendor/symfony/debug/README.md" />
<delete file="${dir}/vendor/symfony/debug/phpunit.xml.dist" />
<delete dir="${dir}/vendor/symfony/filesystem/Symfony/Component/Filesystem/Tests" /> <delete dir="${dir}/vendor/symfony/dependency-injection/.git" />
<delete file="${dir}/vendor/symfony/filesystem/Symfony/Component/Filesystem/.gitignore" /> <delete dir="${dir}/vendor/symfony/dependency-injection/Tests" />
<delete file="${dir}/vendor/symfony/filesystem/Symfony/Component/Filesystem/CHANGELOG.md" /> <delete file="${dir}/vendor/symfony/dependency-injection/.gitignore" />
<delete file="${dir}/vendor/symfony/filesystem/Symfony/Component/Filesystem/README.md" /> <delete file="${dir}/vendor/symfony/dependency-injection/CHANGELOG.md" />
<delete file="${dir}/vendor/symfony/filesystem/Symfony/Component/Filesystem/phpunit.xml.dist" /> <delete file="${dir}/vendor/symfony/dependency-injection/README.md" />
<delete file="${dir}/vendor/symfony/dependency-injection/phpunit.xml.dist" />
<delete dir="${dir}/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/Tests" /> <delete dir="${dir}/vendor/symfony/event-dispatcher/.git" />
<delete file="${dir}/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/.gitignore" /> <delete dir="${dir}/vendor/symfony/event-dispatcher/Tests" />
<delete file="${dir}/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/CHANGELOG.md" /> <delete file="${dir}/vendor/symfony/event-dispatcher/.gitignore" />
<delete file="${dir}/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/README.md" /> <delete file="${dir}/vendor/symfony/event-dispatcher/CHANGELOG.md" />
<delete file="${dir}/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/phpunit.xml.dist" /> <delete file="${dir}/vendor/symfony/event-dispatcher/README.md" />
<delete file="${dir}/vendor/symfony/event-dispatcher/phpunit.xml.dist" />
<delete dir="${dir}/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Tests" /> <delete dir="${dir}/vendor/symfony/filesystem/.git" />
<delete file="${dir}/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/.gitignore" /> <delete dir="${dir}/vendor/symfony/filesystem/Tests" />
<delete file="${dir}/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/CHANGELOG.md" /> <delete file="${dir}/vendor/symfony/filesystem/.gitignore" />
<delete file="${dir}/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/README.md" /> <delete file="${dir}/vendor/symfony/filesystem/CHANGELOG.md" />
<delete file="${dir}/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/phpunit.xml.dist" /> <delete file="${dir}/vendor/symfony/filesystem/README.md" />
<delete file="${dir}/vendor/symfony/filesystem/phpunit.xml.dist" />
<delete dir="${dir}/vendor/symfony/routing/Symfony/Component/Routing/Tests" /> <delete dir="${dir}/vendor/symfony/finder/.git" />
<delete file="${dir}/vendor/symfony/routing/Symfony/Component/Routing/.gitignore" /> <delete dir="${dir}/vendor/symfony/finder/Tests" />
<delete file="${dir}/vendor/symfony/routing/Symfony/Component/Routing/CHANGELOG.md" /> <delete file="${dir}/vendor/symfony/finder/.gitignore" />
<delete file="${dir}/vendor/symfony/routing/Symfony/Component/Routing/README.md" /> <delete file="${dir}/vendor/symfony/finder/CHANGELOG.md" />
<delete file="${dir}/vendor/symfony/routing/Symfony/Component/Routing/phpunit.xml.dist" /> <delete file="${dir}/vendor/symfony/finder/README.md" />
<delete file="${dir}/vendor/symfony/finder/phpunit.xml.dist" />
<delete dir="${dir}/vendor/symfony/yaml/Symfony/Component/Yaml/Tests" /> <delete dir="${dir}/vendor/symfony/http-foundation/.git" />
<delete file="${dir}/vendor/symfony/yaml/Symfony/Component/Yaml/.gitignore" /> <delete dir="${dir}/vendor/symfony/http-foundation/Tests" />
<delete file="${dir}/vendor/symfony/yaml/Symfony/Component/Yaml/CHANGELOG.md" /> <delete file="${dir}/vendor/symfony/http-foundation/.gitignore" />
<delete file="${dir}/vendor/symfony/yaml/Symfony/Component/Yaml/README.md" /> <delete file="${dir}/vendor/symfony/http-foundation/CHANGELOG.md" />
<delete file="${dir}/vendor/symfony/yaml/Symfony/Component/Yaml/phpunit.xml.dist" /> <delete file="${dir}/vendor/symfony/http-foundation/README.md" />
<delete file="${dir}/vendor/symfony/http-foundation/phpunit.xml.dist" />
<delete dir="${dir}/vendor/symfony/http-kernel/.git" />
<delete dir="${dir}/vendor/symfony/http-kernel/Tests" />
<delete file="${dir}/vendor/symfony/http-kernel/.gitignore" />
<delete file="${dir}/vendor/symfony/http-kernel/CHANGELOG.md" />
<delete file="${dir}/vendor/symfony/http-kernel/README.md" />
<delete file="${dir}/vendor/symfony/http-kernel/phpunit.xml.dist" />
<delete dir="${dir}/vendor/symfony/proxy-manager-bridge/.git" />
<delete dir="${dir}/vendor/symfony/proxy-manager-bridge/Tests" />
<delete file="${dir}/vendor/symfony/proxy-manager-bridge/.gitignore" />
<delete file="${dir}/vendor/symfony/proxy-manager-bridge/CHANGELOG.md" />
<delete file="${dir}/vendor/symfony/proxy-manager-bridge/README.md" />
<delete file="${dir}/vendor/symfony/proxy-manager-bridge/phpunit.xml.dist" />
<delete dir="${dir}/vendor/symfony/routing/.git" />
<delete dir="${dir}/vendor/symfony/routing/Tests" />
<delete file="${dir}/vendor/symfony/routing/.gitignore" />
<delete file="${dir}/vendor/symfony/routing/CHANGELOG.md" />
<delete file="${dir}/vendor/symfony/routing/README.md" />
<delete file="${dir}/vendor/symfony/routing/phpunit.xml.dist" />
<delete dir="${dir}/vendor/symfony/twig-bridge/.git" />
<delete dir="${dir}/vendor/symfony/twig-bridge/Tests" />
<delete file="${dir}/vendor/symfony/twig-bridge/.gitignore" />
<delete file="${dir}/vendor/symfony/twig-bridge/CHANGELOG.md" />
<delete file="${dir}/vendor/symfony/twig-bridge/README.md" />
<delete file="${dir}/vendor/symfony/twig-bridge/phpunit.xml.dist" />
<delete dir="${dir}/vendor/symfony/yaml/.git" />
<delete dir="${dir}/vendor/symfony/yaml/Tests" />
<delete file="${dir}/vendor/symfony/yaml/.gitignore" />
<delete file="${dir}/vendor/symfony/yaml/CHANGELOG.md" />
<delete file="${dir}/vendor/symfony/yaml/README.md" />
<delete file="${dir}/vendor/symfony/yaml/phpunit.xml.dist" />
<delete dir="${dir}/vendor/twig/twig/doc" /> <delete dir="${dir}/vendor/twig/twig/doc" />
<delete dir="${dir}/vendor/twig/twig/ext" /> <delete dir="${dir}/vendor/twig/twig/ext" />
@ -391,6 +535,15 @@
<delete file="${dir}/vendor/twig/twig/CHANGELOG" /> <delete file="${dir}/vendor/twig/twig/CHANGELOG" />
<delete file="${dir}/vendor/twig/twig/phpunit.xml.dist" /> <delete file="${dir}/vendor/twig/twig/phpunit.xml.dist" />
<delete file="${dir}/vendor/twig/twig/README.rst" /> <delete file="${dir}/vendor/twig/twig/README.rst" />
<delete file="${dir}/vendor/zendframework/zend-code/CONTRIBUTING.md" />
<delete file="${dir}/vendor/zendframework/zend-code/README.md" />
<delete file="${dir}/vendor/zendframework/zend-eventmanager/CONTRIBUTING.md" />
<delete file="${dir}/vendor/zendframework/zend-eventmanager/README.md" />
<delete file="${dir}/vendor/zendframework/zend-stdlib/CONTRIBUTING.md" />
<delete file="${dir}/vendor/zendframework/zend-stdlib/README.md" />
</target> </target>
<target name="clean-diff-dir"> <target name="clean-diff-dir">

View file

@ -87,6 +87,11 @@ class phpbb_Sniffs_Namespaces_UnusedUseSniff implements PHP_CodeSniffer_Sniff
$old_simple_statement = $simple_statement; $old_simple_statement = $simple_statement;
$simple_class_name_start = $phpcsFile->findNext(array(T_NS_SEPARATOR, T_STRING), ($simple_statement + 1)); $simple_class_name_start = $phpcsFile->findNext(array(T_NS_SEPARATOR, T_STRING), ($simple_statement + 1));
if ($simple_class_name_start === false) {
continue;
}
$simple_class_name_end = $phpcsFile->findNext($find, ($simple_statement + 1), null, true); $simple_class_name_end = $phpcsFile->findNext($find, ($simple_statement + 1), null, true);
$simple_class_name = trim($phpcsFile->getTokensAsString($simple_class_name_start, ($simple_class_name_end - $simple_class_name_start))); $simple_class_name = trim($phpcsFile->getTokensAsString($simple_class_name_start, ($simple_class_name_end - $simple_class_name_start)));

View file

@ -196,9 +196,10 @@ if (sizeof($package->old_packages))
*/ */
$copy_relative_directories = array( $copy_relative_directories = array(
'config/' => array( 'config/' => array(
'recursive' => true,
'copied' => false, 'copied' => false,
'copy' => array( 'copy' => array(
'config/*.yml' => 'config', 'config/*' => 'config',
), ),
), ),
); );
@ -256,8 +257,16 @@ if (sizeof($package->old_packages))
} }
$source_dir_files = $package->locations['old_versions'] . $package->get('simple_name') . '/' . $source_dir_files; $source_dir_files = $package->locations['old_versions'] . $package->get('simple_name') . '/' . $source_dir_files;
$destination_dir = $dest_filename_dir . '/install/update/new/' . $destination_dir; $destination_dir = $dest_filename_dir . '/install/update/new/' . $destination_dir;
if (isset($data['recursive']) && $data['recursive'])
{
$package->run_command('cp -Rp ' . $source_dir_files . ' ' . $destination_dir);
}
else
{
$package->run_command('cp ' . $source_dir_files . ' ' . $destination_dir); $package->run_command('cp ' . $source_dir_files . ' ' . $destination_dir);
} }
}
$copy_relative_directories[$reference]['copied'] = true; $copy_relative_directories[$reference]['copied'] = true;
} }
} }
@ -272,7 +281,7 @@ if (sizeof($package->old_packages))
'adm/style/admin.css' => 'adm/style', 'adm/style/admin.css' => 'adm/style',
'adm/style/admin.js' => 'adm/style', 'adm/style/admin.js' => 'adm/style',
'adm/style/ajax.js' => 'adm/style', 'adm/style/ajax.js' => 'adm/style',
'adm/style/install_*' => 'adm/style', 'adm/style/installer_*' => 'adm/style',
'assets/javascript/*' => 'assets/javascript', 'assets/javascript/*' => 'assets/javascript',
); );
@ -470,22 +479,14 @@ chdir($package->get('dest_dir') . '/install');
// $package->run_command('rm -v database_update.php'); // $package->run_command('rm -v database_update.php');
$package->run_command('rm -v install_update.php'); $package->run_command('rm -v install_update.php');
chdir($package->get('dest_dir'));
$package->run_command('mv -v styles/subsilver2 ../subsilver2');
$package->run_command('cp -p docs/COPYING ../subsilver2/license.txt');
chdir($package->locations['package_dir']); chdir($package->locations['package_dir']);
foreach ($compress_programs as $extension => $compress_command) foreach ($compress_programs as $extension => $compress_command)
{ {
$package->begin_status('Packaging phpBB for ' . $extension); $package->begin_status('Packaging phpBB for ' . $extension);
$package->run_command('rm -v ./release_files/' . $package->get('release_filename') . ".{$extension}"); $package->run_command('rm -v ./release_files/' . $package->get('release_filename') . ".{$extension}");
$package->run_command('rm -v ./release_files/subsilver2_' . $package->get('new_version_number') . ".{$extension}");
// Build Package // Build Package
$package->run_command("$compress_command ./release_files/" . $package->get('release_filename') . '.' . $extension . ' ' . $package->get('package_name')); $package->run_command("$compress_command ./release_files/" . $package->get('release_filename') . '.' . $extension . ' ' . $package->get('package_name'));
// Build subSilver2 Package
$package->run_command("$compress_command ./release_files/subsilver2_" . $package->get('new_version_number') . '.' . $extension . ' subsilver2');
} }
// Microsoft Web PI packaging // Microsoft Web PI packaging

View file

@ -41,6 +41,7 @@ if (!isset($user->data['session_admin']) || !$user->data['session_admin'])
// check specific permissions but this is a catchall // check specific permissions but this is a catchall
if (!$auth->acl_get('a_')) if (!$auth->acl_get('a_'))
{ {
send_status_line(403, 'Forbidden');
trigger_error('NO_ADMIN'); trigger_error('NO_ADMIN');
} }
@ -50,8 +51,8 @@ define('IN_ADMIN', true);
// Some oft used variables // Some oft used variables
$safe_mode = (@ini_get('safe_mode') == '1' || strtolower(@ini_get('safe_mode')) === 'on') ? true : false; $safe_mode = (@ini_get('safe_mode') == '1' || strtolower(@ini_get('safe_mode')) === 'on') ? true : false;
$file_uploads = (@ini_get('file_uploads') == '1' || strtolower(@ini_get('file_uploads')) === 'on') ? true : false; $file_uploads = (@ini_get('file_uploads') == '1' || strtolower(@ini_get('file_uploads')) === 'on') ? true : false;
$module_id = request_var('i', ''); $module_id = $request->variable('i', '');
$mode = request_var('mode', ''); $mode = $request->variable('mode', '');
// Set custom style for admin area // Set custom style for admin area
$template->set_custom_style(array( $template->set_custom_style(array(

View file

@ -20,6 +20,7 @@
<!-- IF not options.S_FIRST_ROW --> <!-- IF not options.S_FIRST_ROW -->
</fieldset> </fieldset>
<!-- ENDIF --> <!-- ENDIF -->
<fieldset> <fieldset>
<legend>{options.LEGEND}</legend> <legend>{options.LEGEND}</legend>
<!-- ELSE --> <!-- ELSE -->

View file

@ -7,20 +7,18 @@
<h1>{L_EXTENSIONS_ADMIN}</h1> <h1>{L_EXTENSIONS_ADMIN}</h1>
<!-- IF S_VERSIONCHECK --> <!-- IF S_VERSIONCHECK -->
<div class="<!-- IF S_UP_TO_DATE -->successbox<!-- ELSE -->errorbox<!-- ENDIF -->"> <!-- IF S_VERSIONCHECK_FAIL -->
<p>{UP_TO_DATE_MSG} - <a href="{U_VERSIONCHECK_FORCE}">{L_VERSIONCHECK_FORCE_UPDATE}</a></p>
</div>
<!-- ELSE IF S_VERSIONCHECK_STATUS == 0 -->
<div class="errorbox notice"> <div class="errorbox notice">
<p>{L_VERSIONCHECK_FAIL}</p> <p>{L_VERSIONCHECK_FAIL}</p>
<p>{VERSIONCHECK_FAIL_REASON}</p> <p>{VERSIONCHECK_FAIL_REASON}</p>
<p><a href="{U_VERSIONCHECK_FORCE}">{L_VERSIONCHECK_FORCE_UPDATE}</a></p> <p><a href="{U_VERSIONCHECK_FORCE}">{L_VERSIONCHECK_FORCE_UPDATE}</a></p>
</div> </div>
<!-- ELSE IF S_VERSIONCHECK_STATUS == 1 --> <!-- ELSE -->
<div class="errorbox notice"> <div class="<!-- IF S_UP_TO_DATE -->successbox<!-- ELSE -->errorbox<!-- ENDIF -->">
<p>{VERSIONCHECK_FAIL_REASON}</p> <p>{UP_TO_DATE_MSG} - <a href="{U_VERSIONCHECK_FORCE}">{L_VERSIONCHECK_FORCE_UPDATE}</a></p>
</div> </div>
<!-- ENDIF --> <!-- ENDIF -->
<!-- ENDIF -->
<!-- EVENT acp_ext_details_notice --> <!-- EVENT acp_ext_details_notice -->
<fieldset> <fieldset>

View file

@ -267,11 +267,12 @@
<!-- EVENT acp_groups_manage_before --> <!-- EVENT acp_groups_manage_before -->
<table class="table1"> <table class="table1">
<col class="col1" /><col class="col1" /><col class="col2" /><col class="col2" /><col class="col2" /> <col class="col1" /><col class="col1" /><col class="col1" /><col class="col2" /><col class="col2" /><col class="col2" />
<thead> <thead>
<tr> <tr>
<th style="width: 50%">{L_GROUP}</th> <th style="width: 50%">{L_GROUP}</th>
<th>{L_TOTAL_MEMBERS}</th> <th>{L_TOTAL_MEMBERS}</th>
<th>{L_PENDING_MEMBERS}</th>
<th colspan="2">{L_OPTIONS}</th> <th colspan="2">{L_OPTIONS}</th>
<th>{L_ACTION}</th> <th>{L_ACTION}</th>
</tr> </tr>
@ -281,7 +282,7 @@
<!-- IF groups.S_SPECIAL --> <!-- IF groups.S_SPECIAL -->
<!-- IF groups.S_FIRST_ROW --> <!-- IF groups.S_FIRST_ROW -->
<tr> <tr>
<td colspan="5" class="row3">{L_NO_GROUPS_CREATED}</td> <td colspan="6" class="row3">{L_NO_GROUPS_CREATED}</td>
</tr> </tr>
<!-- ENDIF --> <!-- ENDIF -->
</tbody> </tbody>
@ -302,11 +303,12 @@
<p>{L_SPECIAL_GROUPS_EXPLAIN}</p> <p>{L_SPECIAL_GROUPS_EXPLAIN}</p>
<table class="table1"> <table class="table1">
<col class="col1" /><col class="col1" /><col class="col2" /><col class="col2" /><col class="col2" /> <col class="col1" /><col class="col1" /><col class="col1" /><col class="col2" /><col class="col2" />
<thead> <thead>
<tr> <tr>
<th style="width: 50%">{L_GROUP}</th> <th style="width: 50%">{L_GROUP}</th>
<th>{L_TOTAL_MEMBERS}</th> <th>{L_TOTAL_MEMBERS}</th>
<th>{L_PENDING_MEMBERS}</th>
<th colspan="2">{L_OPTIONS}</th> <th colspan="2">{L_OPTIONS}</th>
<th>{L_ACTION}</th> <th>{L_ACTION}</th>
</tr> </tr>
@ -316,6 +318,7 @@
<tr> <tr>
<td><strong>{groups.GROUP_NAME}</strong></td> <td><strong>{groups.GROUP_NAME}</strong></td>
<td style="text-align: center;">{groups.TOTAL_MEMBERS}</td> <td style="text-align: center;">{groups.TOTAL_MEMBERS}</td>
<td style="text-align: center;">{groups.PENDING_MEMBERS}</td>
<td style="text-align: center;"><a href="{groups.U_EDIT}">{L_SETTINGS}</a></td> <td style="text-align: center;"><a href="{groups.U_EDIT}">{L_SETTINGS}</a></td>
<td style="text-align: center;"><a href="{groups.U_LIST}">{L_MEMBERS}</a></td> <td style="text-align: center;"><a href="{groups.U_LIST}">{L_MEMBERS}</a></td>
<td style="text-align: center;"><!-- IF not groups.S_GROUP_SPECIAL and groups.U_DELETE --><a href="{groups.U_DELETE}" data-ajax="row_delete">{L_DELETE}</a><!-- ELSE -->{L_DELETE}<!-- ENDIF --></td> <td style="text-align: center;"><!-- IF not groups.S_GROUP_SPECIAL and groups.U_DELETE --><a href="{groups.U_DELETE}" data-ajax="row_delete">{L_DELETE}</a><!-- ELSE -->{L_DELETE}<!-- ENDIF --></td>

View file

@ -0,0 +1,61 @@
<!-- INCLUDE overall_header.html -->
<a id="maincontent"></a>
<h1>{L_ACP_HELP_PHPBB}</h1>
<form id="acp_help_phpbb" method="post" action="{U_ACTION}" data-ajax-action="{U_COLLECT_STATS}">
<div class="send-stats-row">
<!-- EVENT acp_help_phpbb_stats_before -->
<div class="send-stats-tile">
<h2><i class="icon fa-bar-chart"></i>{L_SEND_STATISTICS}</h2>
<p>{L_EXPLAIN_SEND_STATISTICS}</p>
<div class="send-stats-row">
<div class="send-stats-data-row send-stats-data-only-row">
<a id="trigger-configlist" data-ajax="toggle_link" data-overlay="false" data-toggle-text="{L_HIDE_STATISTICS}"><span>{L_SHOW_STATISTICS}</span><i class="icon fa-angle-down"></i></a>
</div>
<div class="send-stats-data-row">
<div class="configlist" id="configlist">
<!-- BEGIN providers -->
<fieldset>
<legend>{providers.NAME}</legend>
<!-- BEGIN values -->
<dl>
<dt>{providers.values.KEY}</dt>
<dd>{providers.values.VALUE}</dd>
</dl>
<!-- END values -->
</fieldset>
<!-- END providers -->
</div>
</div>
</div>
<dl class="send-stats-settings">
<dt>
<input name="help_send_statistics" id="help_send_statistics" type="checkbox"<!-- IF S_COLLECT_STATS --> checked="checked"<!-- ENDIF --> />
<label for="help_send_statistics"></label>
</dt>
<dd>{L_SEND_STATISTICS_LONG}</dd>
</dl>
</div>
<!-- EVENT acp_help_phpbb_stats_after -->
<fieldset>
<p class="submit-buttons">
<input type="hidden" name="systemdata" value="{RAW_DATA}" />
<input type="hidden" name="help_send_statistics_time" value="{COLLECT_STATS_TIME}" />
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
</p>
{S_FORM_TOKEN}
</fieldset>
</div>
</form>
<form action="{U_COLLECT_STATS}" method="post" target="questionaire_result" id="questionnaire-form">
<fieldset>
<p class="submit-buttons">
<input type="hidden" name="systemdata" value="{RAW_DATA}" />
<input class="button1" type="submit" id="submit_stats" name="submit" value="{L_SEND_STATISTICS}" />
</p>
</fieldset>
</form>
<!-- INCLUDE overall_footer.html -->

View file

@ -89,6 +89,9 @@
<!-- ENDIF --> <!-- ENDIF -->
<td>{L_WIDTH}</td> <td>{L_WIDTH}</td>
<td>{L_HEIGHT}</td> <td>{L_HEIGHT}</td>
<!-- IF not S_SMILIES -->
<td>{L_ALT_TEXT}</td>
<!-- ENDIF -->
<td>{L_DISPLAY_ON_POSTING}</td> <td>{L_DISPLAY_ON_POSTING}</td>
<!-- IF ID or S_ADD --> <!-- IF ID or S_ADD -->
<td>{L_ORDER}</td> <td>{L_ORDER}</td>
@ -102,7 +105,7 @@
<!-- BEGIN items --> <!-- BEGIN items -->
<tr> <tr>
<td style="text-align: center;"><img src="{items.IMG_SRC}" alt="" title="" /><input type="hidden" name="image[{items.IMG}]" value="1" /></td> <td style="text-align: center;"><img src="{items.IMG_SRC}" alt="{items.TEXT_ALT}" title="{items.TEXT_ALT}" /><input type="hidden" name="image[{items.IMG}]" value="1" /></td>
<td style="vertical-align: top;">[{items.IMG}]</td> <td style="vertical-align: top;">[{items.IMG}]</td>
<!-- IF S_SMILIES --> <!-- IF S_SMILIES -->
<td><input class="text post" type="text" name="code[{items.IMG}]" value="{items.CODE}" size="10" maxlength="50" /></td> <td><input class="text post" type="text" name="code[{items.IMG}]" value="{items.CODE}" size="10" maxlength="50" /></td>
@ -110,6 +113,9 @@
<!-- ENDIF --> <!-- ENDIF -->
<td><input class="text post" type="number" min="0" max="999" name="width[{items.IMG}]" value="{items.WIDTH}" /></td> <td><input class="text post" type="number" min="0" max="999" name="width[{items.IMG}]" value="{items.WIDTH}" /></td>
<td><input class="text post" type="number" min="0" max="999" name="height[{items.IMG}]" value="{items.HEIGHT}" /></td> <td><input class="text post" type="number" min="0" max="999" name="height[{items.IMG}]" value="{items.HEIGHT}" /></td>
<!-- IF not S_SMILIES -->
<td><input class="text post" type="text" name="alt[{items.IMG}]" value="{items.ALT}" size="10" maxlength="50" /></td>
<!-- ENDIF -->
<td> <td>
<input type="checkbox" class="radio" name="display_on_posting[{items.IMG}]"{items.POSTING_CHECKED} onclick="toggle_select('{items.A_IMG}', this.checked, '{items.S_ROW_COUNT}');"/> <input type="checkbox" class="radio" name="display_on_posting[{items.IMG}]"{items.POSTING_CHECKED} onclick="toggle_select('{items.A_IMG}', this.checked, '{items.S_ROW_COUNT}');"/>
<!-- IF items.S_ID --> <!-- IF items.S_ID -->

View file

@ -130,8 +130,6 @@
<td>{L_FILES_PER_DAY}{L_COLON} </td> <td>{L_FILES_PER_DAY}{L_COLON} </td>
<td><strong>{FILES_PER_DAY}</strong></td> <td><strong>{FILES_PER_DAY}</strong></td>
</tr> </tr>
<tr> <tr>
<td>{L_BOARD_STARTED}{L_COLON} </td> <td>{L_BOARD_STARTED}{L_COLON} </td>
<td><strong>{START_DATE}</strong></td> <td><strong>{START_DATE}</strong></td>
@ -150,22 +148,25 @@
<td>{L_GZIP_COMPRESSION}{L_COLON} </td> <td>{L_GZIP_COMPRESSION}{L_COLON} </td>
<td><strong>{GZIP_COMPRESSION}</strong></td> <td><strong>{GZIP_COMPRESSION}</strong></td>
</tr> </tr>
<!-- IF S_TOTAL_ORPHAN or S_VERSIONCHECK -->
<tr> <tr>
<td>{L_PHP_VERSION}{L_COLON} </td>
<td><strong>{PHP_VERSION_INFO}</strong></td>
<!-- IF S_TOTAL_ORPHAN -->
<td>{L_NUMBER_ORPHAN}{L_COLON} </td>
<td><strong>{TOTAL_ORPHAN}</strong></td>
<!-- ELSE -->
<td>&nbsp;</td>
<td>&nbsp;</td>
<!-- ENDIF -->
</tr>
<!-- IF S_VERSIONCHECK --> <!-- IF S_VERSIONCHECK -->
<tr>
<td>{L_BOARD_VERSION}{L_COLON} </td> <td>{L_BOARD_VERSION}{L_COLON} </td>
<td> <td>
<strong><a href="{U_VERSIONCHECK}" <!-- IF S_VERSION_UP_TO_DATE -->style="color: #228822;" <!-- ELSEIF not S_VERSIONCHECK_FAIL -->style="color: #BC2A4D;" <!-- ENDIF -->title="{L_MORE_INFORMATION}">{BOARD_VERSION}</a></strong> [&nbsp;<a href="{U_VERSIONCHECK_FORCE}">{L_VERSIONCHECK_FORCE_UPDATE}</a>&nbsp;] <strong><a href="{U_VERSIONCHECK}" <!-- IF S_VERSION_UP_TO_DATE -->style="color: #228822;" <!-- ELSEIF not S_VERSIONCHECK_FAIL -->style="color: #BC2A4D;" <!-- ENDIF -->title="{L_MORE_INFORMATION}">{BOARD_VERSION}</a></strong> [&nbsp;<a href="{U_VERSIONCHECK_FORCE}">{L_VERSIONCHECK_FORCE_UPDATE}</a>&nbsp;]
</td> </td>
<!-- ENDIF -->
<!-- IF S_TOTAL_ORPHAN -->
<td>{L_NUMBER_ORPHAN}{L_COLON} </td>
<td><strong>{TOTAL_ORPHAN}</strong></td>
<!-- ENDIF -->
<!-- IF not S_TOTAL_ORPHAN or not S_VERSIONCHECK -->
<td>&nbsp;</td> <td>&nbsp;</td>
<td>&nbsp;</td> <td>&nbsp;</td>
<!-- ENDIF -->
</tr> </tr>
<!-- ENDIF --> <!-- ENDIF -->
</tbody> </tbody>

View file

@ -329,14 +329,9 @@
<br class="responsive-hide" /><br class="responsive-hide" /> <br class="responsive-hide" /><br class="responsive-hide" />
<!-- include tooltip file --> <!-- include tooltip file -->
<script type="text/javascript" src="style/tooltip.js"></script> <!-- INCLUDEJS tooltip.js -->
<script type="text/javascript">
// <![CDATA[
window.onload = function(){enable_tooltips_select('set-permissions', '{LA_ROLE_DESCRIPTION}', 'role')};
// ]]>
</script>
<form id="set-permissions" method="post" action="{U_ACTION}"> <form id="set-permissions" method="post" action="{U_ACTION}" data-role-description="{L_ROLE_DESCRIPTION}">
{S_HIDDEN_FIELDS} {S_HIDDEN_FIELDS}

View file

@ -1,64 +0,0 @@
<!-- INCLUDE overall_header.html -->
<a id="maincontent"></a>
<h1>{L_SEND_STATISTICS}</h1>
<p>{L_EXPLAIN_SEND_STATISTICS}</p>
<script type="text/javascript">
//<![CDATA[
var iframect = 0;
function iframe_updated()
{
if (iframect++ == 0)
{
return;
}
phpbb.toggleDisplay('questionnaire-form', -1);
phpbb.toggleDisplay('questionnaire-thanks', 1);
}
//]]>
</script>
<iframe onload="iframe_updated();" name="questionaire_result" style="display: none;"></iframe>
<form action="{U_COLLECT_STATS}" method="post" target="questionaire_result" id="questionnaire-form">
<p><a href="{U_ACP_MAIN}">{L_DONT_SEND_STATISTICS}</a></p>
<p>{L_EXPLAIN_SHOW_STATISTICS}</p>
<p id="show-button"><input type="button" class="button2" onclick="phpbb.toggleDisplay('configlist', 1); phpbb.toggleDisplay('show-button', -1);" value="{L_SHOW_STATISTICS}" /></p>
<div id="configlist">
<input type="button" class="button2" onclick="phpbb.toggleDisplay('show-button', 1); phpbb.toggleDisplay('configlist', -1);" value="{L_HIDE_STATISTICS}" />
<p class="submit-buttons">
<input class="button1" type="submit" id="submit" name="submit" value="{L_SEND_STATISTICS}" />
</p>
<!-- BEGIN providers -->
<fieldset>
<legend>{providers.NAME}</legend>
<!-- BEGIN values -->
<dl>
<dt>{providers.values.KEY}</dt>
<dd>{providers.values.VALUE}</dd>
</dl>
<!-- END values -->
</fieldset>
<!-- END providers -->
</div>
<p class="submit-buttons">
<input type="hidden" name="systemdata" value="{RAW_DATA}" />
<input class="button1" type="submit" id="submit" name="submit" value="{L_SEND_STATISTICS}" />
</p>
</form>
<div id="questionnaire-thanks" class="successbox">
<p><strong>{L_THANKS_SEND_STATISTICS}</strong><br /><br /><a href="{U_ACP_MAIN}">&laquo; {L_GO_ACP_MAIN}</a></p>
</div>
<!-- INCLUDE overall_footer.html -->

View file

@ -231,6 +231,10 @@
<!-- INCLUDE permission_mask.html --> <!-- INCLUDE permission_mask.html -->
<!-- ELSE -->
<!-- EVENT acp_users_mode_add -->
<!-- ENDIF --> <!-- ENDIF -->
<!-- INCLUDE overall_footer.html --> <!-- INCLUDE overall_footer.html -->

View file

@ -1,4 +1,4 @@
/* phpBB 3.1 Admin Style Sheet /* phpBB 3.2 Admin Style Sheet
------------------------------------------------------------------------ ------------------------------------------------------------------------
Original author: subBlue ( http://www.subblue.com/ ) Original author: subBlue ( http://www.subblue.com/ )
Copyright (c) phpBB Limited <https://www.phpbb.com> Copyright (c) phpBB Limited <https://www.phpbb.com>
@ -1782,7 +1782,7 @@ li.pagination ul {
/* Action Highlighting /* Action Highlighting
---------------------------------------- */ ---------------------------------------- */
.successbox, .errorbox { .successbox, .errorbox, .warningbox {
padding: 8px; padding: 8px;
margin: 10px 0; margin: 10px 0;
color: #FFFFFF; color: #FFFFFF;
@ -1806,6 +1806,10 @@ li.pagination ul {
background-color: #BC2A4D; background-color: #BC2A4D;
} }
.warningbox {
background-color: #fca600;
}
.successbox h3, .errorbox h3 { .successbox h3, .errorbox h3 {
color: #FFFFFF; color: #FFFFFF;
margin: 0 0 0.5em; margin: 0 0 0.5em;
@ -1832,10 +1836,33 @@ li.pagination ul {
font-weight: bold; font-weight: bold;
} }
#log-container {
display: none;
max-height: 300px;
padding: 8px;
margin: 10px 0;
clear: both;
overflow-y: auto;
background-color: #FFFFFF;
}
#log-container.show_log_container {
display: block;
border: 1px solid #DBD7D1;
}
.log {
font-size: 0.8em;
}
.notice { .notice {
background-color: #62A5CC; background-color: #62A5CC;
} }
.download-box {
margin: 10px 0 10px 0;
}
/* Special cases for the error page */ /* Special cases for the error page */
#errorpage #page-header a { #errorpage #page-header a {
font-weight: bold; font-weight: bold;
@ -1864,6 +1891,7 @@ li.pagination ul {
color: #000; color: #000;
text-align: center; text-align: center;
border: 1px solid #AAA; border: 1px solid #AAA;
opacity: .95;
} }
.tooltip span.top { .tooltip span.top {
@ -2441,6 +2469,39 @@ fieldset.permissions .padding {
display: none !important; display: none !important;
} }
.roles-options > .dropdown {
left: auto;
top: 3.2em;
width: 250px;
}
.roles-options {
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
-o-user-select: none;
user-select: none;
width: 250px;
}
.roles-options > span {
border: 1px solid #DEDEDE;
border-radius: 3px;
padding: 4px;
width: 250px;
display: none;
background: url('../images/arrow_down.gif') no-repeat 245px .7em;
}
.roles-options li {
list-style: none;
}
.roles-highlight {
background-color: #1e90ff;
color: #fff;
}
/* Classes for additional tasks /* Classes for additional tasks
---------------------------------------- */ ---------------------------------------- */
@ -2489,3 +2550,153 @@ fieldset.permissions .padding {
clear: both; clear: both;
display: block; display: block;
} }
#progress-bar {
position: relative;
width: 90%;
text-align: center;
height: 25px;
margin: 20px auto;
border: 1px solid #cecece;
}
#progress-bar #progress-bar-text {
position: absolute;
top: 0;
width: 100%;
color: #000;
}
#progress-bar #progress-bar-filler {
display: block;
position: relative;
top: 0;
left: 0;
background-color: #3c84ad;
width: 0;
height: 25px;
overflow: hidden;
color: #fff;
}
#progress-bar p {
line-height: 25px;
font-weight: bold;
}
.send-stats-row {
margin: 15px 0;
}
.send-stats-row:before {
display: table;
content: " ";
}
.send-stats-tile {
position: relative;
padding: 14px;
margin-bottom: 20px;
background-color: #eff0f2;
border-radius: 6px;
box-shadow: rgba(0,0,0,0.3) 1px 1px 5px;
}
.send-stats-tile h2 {
margin-top: 0;
text-align: center;
padding-bottom: 1em;
}
.send-stats-tile i {
padding-right: 0.3em;
}
.icon {
font-family: FontAwesome;
font-style: normal;
}
.send-stats-data-row {
background: #f9f9f9;
border-radius: 6px;
border: #DEDEDE 1px solid;
padding: 10px;
border-top-width: 0;
border-top-right-radius: 0;
border-top-left-radius: 0;
}
.send-stats-data-hidden .configlist {
display: none;
}
.send-stats-data-only-row {
border-radius: 6px !important;
border-bottom-width: 1px !important;
}
.send-stats-data-hidden {
padding: 0;
border: none;
}
.send-stats-row > .send-stats-data-row:first-child {
background-color: #d9edf7;
border-bottom-width: 0;
border-top-right-radius: 6px;
border-top-left-radius: 6px;
border-top-width: 1px;
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
}
.send-stats-settings dt, .send-stats-settings dd {
min-width: 25px;
}
.send-stats-settings dd {
line-height: 1.5em;
}
.send-stats-settings input {
display: none;
}
.send-stats-settings input[type=checkbox] + label:before {
content: "\f096";
font-family: FontAwesome;
font-size: 1.5em;
}
.send-stats-settings input[type=checkbox]:checked + label:before {
content: "\f14a";
color: #3c763d;
}
.send-stats-data-row a:hover span {
text-decoration: underline;
}
.send-stats-data-row a {
text-decoration: none;
cursor: default;
}
.send-stats-data-row i {
padding-left: 6px;
}
.configlist {
word-wrap: break-word;
word-break: break-all;
}
/* stylelint-disable declaration-property-unit-whitelist */
.emoji {
min-height: 18px;
min-width: 18px;
height: 1em;
width: 1em;
}
/* stylelint-enable declaration-property-unit-whitelist */

View file

@ -243,8 +243,16 @@ function parse_document(container)
parse_document($('body')); parse_document($('body'));
// Hide configlist and success message in send statistics page $('#questionnaire-form').css('display', 'none');
phpbb.toggleDisplay('configlist', -1); var $triggerConfiglist = $('#trigger-configlist');
phpbb.toggleDisplay('questionnaire-thanks', -1);
$triggerConfiglist.on('click', function () {
var $configlist = $('#configlist');
$configlist.closest('.send-stats-data-row').toggleClass('send-stats-data-hidden');
$configlist.closest('.send-stats-row').find('.send-stats-data-row:first-child').toggleClass('send-stats-data-only-row');
$(this).find('i').toggleClass('fa-angle-down fa-angle-up');
});
$('#configlist').closest('.send-stats-data-row').addClass('send-stats-data-hidden');
}); });
})(jQuery); })(jQuery);

View file

@ -4,6 +4,101 @@
'use strict'; 'use strict';
phpbb.prepareSendStats = function () {
var $form = $('#acp_help_phpbb');
var $dark = $('#darkenwrapper');
var $loadingIndicator;
$form.on('submit', function (event) {
var $this = $(this),
currentTime = Math.floor(new Date().getTime() / 1000),
statsTime = parseInt($this.find('input[name=help_send_statistics_time]').val(), 10);
event.preventDefault();
$this.unbind('submit');
// Skip ajax request if form is submitted too early or send stats
// checkbox is not checked
if (!$this.find('input[name=help_send_statistics]').is(':checked') ||
statsTime > currentTime) {
$form.find('input[type=submit]').click();
setTimeout(function () {
$form.find('input[type=submit]').click();
}, 300);
return;
}
/**
* Handler for AJAX errors
*/
function errorHandler(jqXHR, textStatus, errorThrown) {
if (typeof console !== 'undefined' && console.log) {
console.log('AJAX error. status: ' + textStatus + ', message: ' + errorThrown);
}
phpbb.clearLoadingTimeout();
var errorText = '';
if (typeof errorThrown === 'string' && errorThrown.length > 0) {
errorText = errorThrown;
} else {
errorText = $dark.attr('data-ajax-error-text-' + textStatus);
if (typeof errorText !== 'string' || !errorText.length) {
errorText = $dark.attr('data-ajax-error-text');
}
}
phpbb.alert($dark.attr('data-ajax-error-title'), errorText);
}
/**
* This is a private function used to handle the callbacks, refreshes
* and alert. It calls the callback, refreshes the page if necessary, and
* displays an alert to the user and removes it after an amount of time.
*
* It cannot be called from outside this function, and is purely here to
* avoid repetition of code.
*
* @param {object} res The object sent back by the server.
*/
function returnHandler(res) {
phpbb.clearLoadingTimeout();
// If a confirmation is not required, display an alert and call the
// callbacks.
$dark.fadeOut(phpbb.alertTime);
if ($loadingIndicator) {
$loadingIndicator.fadeOut(phpbb.alertTime);
}
var $sendStatisticsSuccess = $('<input />', {
type: 'hidden',
name: 'send_statistics_response',
value: res
});
$sendStatisticsSuccess.appendTo('p.submit-buttons');
// Finish actual form submission
$form.find('input[type=submit]').click();
}
$loadingIndicator = phpbb.loadingIndicator();
$.ajax({
url: $this.attr('data-ajax-action').replace('&amp;', '&'),
type: 'POST',
data: 'systemdata=' + encodeURIComponent($this.find('input[name=systemdata]').val()),
success: returnHandler,
error: errorHandler,
cache: false
}).always(function() {
if ($loadingIndicator && $loadingIndicator.is(':visible')) {
$loadingIndicator.fadeOut(phpbb.alertTime);
}
});
});
};
/** /**
* The following callbacks are for reording items. row_down * The following callbacks are for reording items. row_down
* is triggered when an item is moved down, and row_up is triggered when * is triggered when an item is moved down, and row_up is triggered when
@ -70,6 +165,7 @@ function submitPermissions() {
var $form = $('form#set-permissions'), var $form = $('form#set-permissions'),
fieldsetList = $form.find('fieldset[id^=perm]'), fieldsetList = $form.find('fieldset[id^=perm]'),
formDataSets = [], formDataSets = [],
dataSetIndex = 0,
$submitAllButton = $form.find('input[type=submit][name^=action]')[0], $submitAllButton = $form.find('input[type=submit][name^=action]')[0],
$submitButton = $form.find('input[type=submit][data-clicked=true]')[0]; $submitButton = $form.find('input[type=submit][data-clicked=true]')[0];
@ -84,10 +180,21 @@ function submitPermissions() {
} }
$.each(fieldsetList, function (key, value) { $.each(fieldsetList, function (key, value) {
dataSetIndex = Math.floor(key / 5);
var $fieldset = $('fieldset#' + value.id);
if (key % 5 === 0) { if (key % 5 === 0) {
formDataSets[Math.floor(key / 5)] = $form.find('fieldset#' + value.id).serialize(); formDataSets[dataSetIndex] = $fieldset.find('select:visible, input:not([data-name])').serialize();
} else { } else {
formDataSets[Math.floor(key / 5)] += '&' + $form.find('fieldset#' + value.id).serialize(); formDataSets[dataSetIndex] += '&' + $fieldset.find('select:visible, input:not([data-name])').serialize();
}
// Find proper role value
var roleInput = $fieldset.find('input[name^=role][data-name]');
if (roleInput.val()) {
formDataSets[dataSetIndex] += '&' + roleInput.attr('name') + '=' + roleInput.val();
} else {
formDataSets[dataSetIndex] += '&' + roleInput.attr('name') + '=' +
$fieldset.find('select[name="' + roleInput.attr('name') + '"]').val();
} }
}); });
@ -215,6 +322,10 @@ $(function() {
$(this).attr('data-clicked', true); $(this).attr('data-clicked', true);
}); });
} }
if ($('#acp_help_phpbb')) {
phpbb.prepareSendStats();
}
}); });

View file

@ -1,32 +1,12 @@
<!-- IF S_RECAPTCHA_AVAILABLE --> <!-- IF S_RECAPTCHA_AVAILABLE -->
<dl> <dl>
<dd> <dd>
<script type="text/javascript">
// <![CDATA[
var RecaptchaOptions = {
lang : '{LA_RECAPTCHA_LANG}',
theme : 'clean'
};
// ]]>
</script>
<script type="text/javascript" src="{RECAPTCHA_SERVER}/challenge?k={RECAPTCHA_PUBKEY}{RECAPTCHA_ERRORGET}"></script>
<script type="text/javascript">
// <![CDATA[
<!-- IF S_CONTENT_DIRECTION eq 'rtl' -->
document.getElementById('recaptcha_table').style.direction = 'ltr';
<!-- ENDIF -->
// ]]>
</script>
<noscript> <noscript>
<div> <div>{L_RECAPTCHA_NOSCRIPT}</div>
<object data="{RECAPTCHA_SERVER}/noscript?k={RECAPTCHA_PUBKEY}{RECAPTCHA_ERRORGET}" type="text/html" height="300" width="500"></object><br />
<textarea name="recaptcha_challenge_field" rows="3" cols="40"></textarea>
<input type="hidden" name="recaptcha_response_field" value="manual_challenge" />
</div>
</noscript> </noscript>
<script src="{RECAPTCHA_SERVER}.js?hl={LA_RECAPTCHA_LANG}" async defer></script>
<div class="g-recaptcha" data-sitekey="{RECAPTCHA_PUBKEY}"></div>
</dd> </dd>
</dl> </dl>
<!-- ELSE --> <!-- ELSE -->

View file

@ -1,134 +0,0 @@
<!-- INCLUDE install_header.html -->
<!-- IF S_NOT_INSTALLED -->
<h1>{TITLE}</h1>
<p>{BODY}</p>
<!-- ELSE -->
<form id="install_convert" method="post" action="{U_ACTION}">
<h1>{TITLE}</h1>
<p>{BODY}</p>
<!-- IF S_ERROR_BOX -->
<div class="errorbox">
<h3>{ERROR_TITLE}</h3>
<p>{ERROR_MSG}</p>
</div>
<!-- ENDIF -->
<!-- IF S_LIST -->
<table class="table1">
<caption>{L_AVAILABLE_CONVERTORS}</caption>
<col class="col1" /><col class="col2" /><col class="col1" /><col class="col2" />
<thead>
<tr>
<th>{L_SOFTWARE}</th>
<th>{L_VERSION}</th>
<th>{L_AUTHOR}</th>
<th>{L_OPTIONS}</th>
</tr>
</thead>
<tbody>
<!-- IF .convertors -->
<!-- BEGIN convertors -->
<tr>
<td>{convertors.SOFTWARE}</td>
<td>{convertors.VERSION}</td>
<td>{convertors.AUTHOR}</td>
<td><a href="{convertors.U_CONVERT}">{L_CONVERT}</a></td>
</tr>
<!-- END convertors -->
<!-- ELSE -->
<tr>
<td>{L_NO_CONVERTORS}</td>
<td>-</td>
<td>-</td>
<td>-</td>
</tr>
<!-- ENDIF -->
</tbody>
</table>
<!-- ENDIF -->
<!-- IF S_CONTINUE -->
</form>
<fieldset class="submit-buttons">
<form method="post" action="{U_NEW_ACTION}">
<input class="button1" type="submit" name="submit_new" value="{L_NEW}" />
</form>
<br />
<form method="post" action="{U_CONTINUE_ACTION}">
<input class="button1" type="submit" name="submit_cont" value="{L_CONTINUE}" />
</form>
</fieldset>
<form method="post" action="{U_ACTION}">
<!-- ENDIF -->
<!-- IF .checks -->
<fieldset>
<!-- BEGIN checks -->
<!-- IF checks.S_LEGEND -->
<!-- IF not checks.S_FIRST_ROW -->
</fieldset>
<fieldset>
<!-- ENDIF -->
<legend>{checks.LEGEND}</legend>
<!-- IF checks.LEGEND_EXPLAIN --><p>{checks.LEGEND_EXPLAIN}</p><!-- ENDIF -->
<!-- ELSE -->
<dl>
<dt><label>{checks.TITLE}{L_COLON}</label><!-- IF checks.S_EXPLAIN --><br /><span class="explain">{checks.TITLE_EXPLAIN}</span><!-- ENDIF --></dt>
<dd>{checks.RESULT}</dd>
</dl>
<!-- ENDIF -->
<!-- END checks -->
</fieldset>
<!-- ENDIF -->
<!-- IF .options -->
<fieldset>
<!-- BEGIN options -->
<!-- IF options.S_LEGEND -->
<!-- IF not options.S_FIRST_ROW -->
</fieldset>
<fieldset>
<!-- ENDIF -->
<legend>{options.LEGEND}</legend>
<!-- ELSE -->
<dl>
<dt><label for="{options.KEY}">{options.TITLE}{L_COLON}</label><!-- IF options.S_EXPLAIN --><br /><span class="explain">{options.TITLE_EXPLAIN}</span><!-- ENDIF --></dt>
<dd>{options.CONTENT}</dd>
</dl>
<!-- ENDIF -->
<!-- END options -->
</fieldset>
<!-- ENDIF -->
<!-- IF L_SUBMIT -->
<!-- IF L_MESSAGE --><p>{L_MESSAGE}</p><!-- ENDIF -->
<fieldset class="submit-buttons">
{S_HIDDEN}
<!-- IF L_SUBMIT --><input class="button1<!-- IF S_REFRESH --> disabled<!-- ENDIF -->" type="submit" id="submit" <!-- IF S_REFRESH -->disabled="disabled" <!-- ELSE --> onclick="this.className = 'button1 disabled';" onsubmit="this.disabled = 'disabled';" <!-- ENDIF -->name="submit" value="{L_SUBMIT}" /><!-- ENDIF -->
</fieldset>
<!-- ENDIF -->
</form>
<!-- ENDIF -->
<!-- INCLUDE install_footer.html -->

View file

@ -1,8 +0,0 @@
<!-- INCLUDE install_header.html -->
<div class="errorbox">
<h3>{MESSAGE_TITLE}</h3>
<p>{MESSAGE_TEXT}</p>
</div>
<!-- INCLUDE install_footer.html -->

View file

@ -1,54 +0,0 @@
<!DOCTYPE html>
<html dir="{S_CONTENT_DIRECTION}" lang="{S_USER_LANG}">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1" />
<!-- IF META -->{META}<!-- ENDIF -->
<title>{PAGE_TITLE}</title>
<link href="{T_TEMPLATE_PATH}/admin.css" rel="stylesheet" type="text/css" media="screen" />
</head>
<body class="{S_CONTENT_DIRECTION} nojs">
<div id="wrap">
<div id="page-header">
<h1>{L_INSTALL_PANEL}</h1>
<p id="skip"><a href="#acp">{L_SKIP}</a></p>
<!-- IF S_LANG_SELECT -->
<form method="post" action="#">
<fieldset class="nobg">
<label for="language">{L_SELECT_LANG}{L_COLON}</label>
{S_LANG_SELECT}
<input class="button1" type="submit" id="change_lang" name="change_lang" value="{L_CHANGE}" />
</fieldset>
</form>
<!-- ENDIF -->
</div>
<div id="page-body">
<div id="tabs">
<ul>
<!-- BEGIN t_block1 -->
<li class="tab<!-- IF t_block1.S_SELECTED --> activetab<!-- ENDIF -->"><a href="{t_block1.U_TITLE}">{t_block1.L_TITLE}</a></li>
<!-- END t_block1 -->
</ul>
</div>
<div id="acp">
<div id="content">
<div id="menu">
<div class="menu-block no-header">
<ul>
<!-- BEGIN l_block1 -->
<li<!-- IF l_block1.S_SELECTED --> id="activemenu"<!-- ENDIF -->><a href="{l_block1.U_TITLE}"><span>{l_block1.L_TITLE}</span></a></li>
<!-- END l_block1 -->
<!-- BEGIN l_block2 -->
<li<!-- IF l_block2.S_SELECTED --> id="activemenu"<!-- ENDIF -->><span<!-- IF l_block2.S_COMPLETE --> class="completed"<!-- ENDIF -->>{l_block2.L_TITLE}</span></li>
<!-- END l_block2 -->
</ul>
</div>
</div>
<div id="main" class="install-body">
<div class="main">

View file

@ -1,77 +0,0 @@
<!-- INCLUDE install_header.html -->
<form id="install_install" method="post" action="{U_ACTION}" onsubmit="submit.disabled = 'disabled';">
<!-- IF TITLE --><h1>{TITLE}</h1><!-- ENDIF -->
<!-- IF BODY --><p>{BODY}</p><!-- ENDIF -->
<!-- IF .checks -->
<fieldset>
<!-- BEGIN checks -->
<!-- IF checks.S_LEGEND -->
<!-- IF not checks.S_FIRST_ROW -->
</fieldset>
<fieldset>
<!-- ENDIF -->
<legend>{checks.LEGEND}</legend>
<!-- IF checks.LEGEND_EXPLAIN --><p>{checks.LEGEND_EXPLAIN}</p><!-- ENDIF -->
<!-- ELSE -->
<dl>
<dt>{checks.TITLE}{L_COLON}<!-- IF checks.S_EXPLAIN --><br /><span class="explain">{checks.TITLE_EXPLAIN}</span><!-- ENDIF --></dt>
<dd>{checks.RESULT}</dd>
</dl>
<!-- ENDIF -->
<!-- END checks -->
</fieldset>
<!-- ENDIF -->
<!-- IF .options -->
<fieldset>
<!-- BEGIN options -->
<!-- IF options.S_LEGEND -->
<!-- IF not options.S_FIRST_ROW -->
</fieldset>
<fieldset>
<!-- ENDIF -->
<legend>{options.LEGEND}</legend>
<!-- ELSE -->
<dl>
<dt><label for="{options.KEY}">{options.TITLE}{L_COLON}</label><!-- IF options.S_EXPLAIN --><br /><span class="explain">{options.TITLE_EXPLAIN}</span><!-- ENDIF --></dt>
<dd>{options.CONTENT}</dd>
</dl>
<!-- ENDIF -->
<!-- END options -->
</fieldset>
<!-- ENDIF -->
<!-- IF S_SHOW_DOWNLOAD -->
<h1>{L_DL_CONFIG}</h1>
<p>{L_DL_CONFIG_EXPLAIN}</p>
<fieldset class="submit-buttons">
<legend>{L_DL_CONFIG}</legend>
{S_HIDDEN}
<input class="button1" type="submit" id="dlconfig" name="dlconfig" value="{L_DL_DOWNLOAD}" />&nbsp;<input class="button1" type="submit" id="dldone" name="dldone" value="{L_DL_DONE}" />
</fieldset>
<!-- ENDIF -->
<!-- IF L_SUBMIT -->
<fieldset class="submit-buttons">
<legend>{L_SUBMIT}</legend>
{S_HIDDEN}
<!-- IF L_SUBMIT --><input class="button1" type="submit" id="submit" onclick="this.className = 'button1 disabled';" name="submit" value="{L_SUBMIT}" /><!-- ENDIF -->
</fieldset>
<!-- ENDIF -->
</form>
<!-- INCLUDE install_footer.html -->

View file

@ -1,6 +0,0 @@
<!-- INCLUDE install_header.html -->
<h1>{TITLE}</h1>
<p>{BODY}</p>
<!-- INCLUDE install_footer.html -->

View file

@ -1,491 +0,0 @@
<!-- INCLUDE install_header.html -->
<script type="text/javascript">
// <![CDATA[
function popup(url, width, height, name)
{
if (!name)
{
name = '_popup';
}
window.open(url.replace(/&amp;/g, '&'), name, 'height=' + height + ',resizable=yes,scrollbars=yes, width=' + width);
return false;
}
function diff_popup(url)
{
popup(url, 950, 600, '_diff');
return false;
}
// ]]>
</script>
<!-- IF S_ERROR -->
<div class="errorbox" style="margin-top: 0;">
<h3>{L_NOTICE}</h3>
<p>{ERROR_MSG}</p>
</div>
<!-- ENDIF -->
<!-- IF S_IN_PROGRESS -->
<div class="successbox" style="margin-top: 0;">
<h3>{L_IN_PROGRESS}</h3>
<p>{L_IN_PROGRESS_EXPLAIN}</p>
</div>
<!-- ELSEIF S_INTRO -->
<!-- IF S_WARNING -->
<div class="successbox" style="margin-top: 0;">
<h3>{L_NOTICE}</h3>
<p>{WARNING_MSG}</p>
</div>
<!-- ENDIF -->
<div class="errorbox" style="margin-top: 0;">
<h3>{L_NOTICE}</h3>
<p>{L_BACKUP_NOTICE}</p>
</div>
<form id="install_update" method="post" action="{U_ACTION}">
<h1>{L_UPDATE_INSTALLATION}</h1>
<p>{L_UPDATE_INSTALLATION_EXPLAIN}</p>
<fieldset class="submit-buttons">
<input class="button1" type="submit" name="submit" value="{L_NEXT_STEP}" />
</fieldset>
</form>
<!-- ELSEIF S_UPLOAD_SUCCESS -->
<form id="install_update" method="post" action="{U_ACTION}">
<h1>{L_UPDATE_SUCCESS}</h1>
<p>{L_UPDATE_SUCCESS_EXPLAIN}</p>
<fieldset class="submit-buttons">
<input class="button1" type="submit" name="check_again" value="{L_CONTINUE_UPDATE}" />
</fieldset>
</form>
<!-- ENDIF -->
<!-- IF S_VERSION_CHECK -->
<h1>{L_VERSION_CHECK}</h1>
<p>{L_VERSION_CHECK_EXPLAIN}</p>
<!-- IF S_UP_TO_DATE -->
<div class="successbox">
<p>{L_VERSION_UP_TO_DATE}</p>
</div>
<!-- ELSE -->
<div class="errorbox">
<p>{L_VERSION_NOT_UP_TO_DATE}</p>
</div>
<!-- ENDIF -->
<fieldset>
<legend></legend>
<dl>
<dt><label>{L_CURRENT_VERSION}</label></dt>
<dd><strong>{CURRENT_VERSION}</strong></dd>
</dl>
<dl>
<dt><label>{L_LATEST_VERSION}</label></dt>
<dd><strong>{LATEST_VERSION}</strong></dd>
</dl>
<!-- IF PACKAGE_VERSION and not S_UP_TO_DATE -->
<dl>
<dt><label>{L_PACKAGE_UPDATES_TO}</label></dt>
<dd><strong>{PACKAGE_VERSION}</strong></dd>
</dl>
<!-- ENDIF -->
</fieldset>
<form id="install_update" method="post" action="{U_ACTION}">
<fieldset class="submit-buttons">
<p>{L_CHECK_FILES_EXPLAIN}</p>
<input class="button1" type="submit" name="submit" value="{L_CHECK_FILES}" />
</fieldset>
</form>
<!-- ELSEIF S_DB_UPDATE -->
<!-- IF not S_DB_UPDATE_FINISHED -->
<h1>{L_PERFORM_DATABASE_UPDATE}</h1>
<p>
{L_PERFORM_DATABASE_UPDATE_EXPLAIN}<br />
</p>
<br /><br />
<form id="install_dbupdate" method="post" action="{U_DB_UPDATE_ACTION}">
<fieldset class="submit-buttons">
<a href="{U_DB_UPDATE}" class="button1">{L_RUN_DATABASE_SCRIPT}</a>
<!-- input class="button1" type="submit" name="db_update" value="{L_CHECK_UPDATE_DATABASE}" / -->
</fieldset>
</form>
<!-- ELSE -->
<div class="successbox">
<h3>{L_UPDATE_SUCCESS}</h3>
<p>{L_EVERYTHING_UP_TO_DATE}</p>
</div>
<!-- ENDIF -->
<!-- ELSEIF S_FILE_CHECK -->
<!-- IF S_ALL_UP_TO_DATE -->
<h1>{L_UPDATE_FILE_SUCCESS}</h1>
<p>{L_ALL_FILES_UP_TO_DATE}</p>
<p>{L_UPDATE_DATABASE_EXPLAIN}</p>
<form id="install_dbupdate" method="post" action="{U_DB_UPDATE_ACTION}">
<fieldset class="submit-buttons">
<input class="button1" type="submit" name="db_update" value="{L_UPDATE_DATABASE}" />
</fieldset>
</form>
<!-- ELSE -->
<h1>{L_COLLECTED_INFORMATION}</h1>
<p>{L_COLLECTED_INFORMATION_EXPLAIN}</p>
<!-- IF S_NO_UPDATE_FILES -->
<div class="errorbox">
<h3>{L_NO_UPDATE_FILES}</h3>
<p>{L_NO_UPDATE_FILES_EXPLAIN}</p><br />
<strong>{NO_UPDATE_FILES}</strong>
</div>
<!-- ENDIF -->
<form id="install_update" method="post" action="{U_UPDATE_ACTION}">
<!-- IF .deleted -->
<h2>{L_FILES_DELETED}</h2>
<div style="float: {S_CONTENT_FLOW_END};">&raquo; <a href="#" onclick="phpbb.toggleDisplay('deleted', 0); return false;">{L_TOGGLE_DISPLAY}</a></div>
<p>{L_FILES_DELETED_EXPLAIN}</p>
<fieldset id="deleted">
<legend><img src="{T_IMAGE_PATH}icon_delete.gif" alt="{L_STATUS_DELETED}" /></legend>
<!-- BEGIN deleted -->
<dl>
<dt style="width: 60%;"><strong><!-- IF deleted.DIR_PART -->{deleted.DIR_PART}<br /><!-- ENDIF -->{deleted.FILE_PART}</strong></dt>
<dd style="margin-{S_CONTENT_FLOW_BEGIN}: 60%;">
<!-- IF not deleted.S_BINARY -->[<a href="{deleted.U_SHOW_DIFF}" onclick="diff_popup(this.href); return false;">{deleted.L_SHOW_DIFF}</a>]<!-- ELSE -->{L_BINARY_FILE}<!-- ENDIF -->
</dd>
</dl>
<!-- END deleted -->
</fieldset>
<!-- ENDIF -->
<!-- IF .conflict -->
<h2>{L_FILES_CONFLICT}</h2>
<div style="float: {S_CONTENT_FLOW_END};">&raquo; <a href="#" onclick="phpbb.toggleDisplay('conflict', 0); return false;">{L_TOGGLE_DISPLAY}</a></div>
<p>{L_FILES_CONFLICT_EXPLAIN}</p>
<!-- BEGIN conflict -->
<fieldset id="conflict">
<legend><img src="{T_IMAGE_PATH}file_conflict.gif" alt="{L_STATUS_CONFLICT}" /></legend>
<dl>
<dt style="width: 60%;"><strong><!-- IF conflict.DIR_PART -->{conflict.DIR_PART}<br /><!-- ENDIF -->{conflict.FILE_PART}</strong>
<!-- IF conflict.S_CUSTOM --><br /><span><em>{L_FILE_USED}{L_COLON} </em>{conflict.CUSTOM_ORIGINAL}</span><!-- ENDIF -->
<!-- IF conflict.NUM_CONFLICTS --><br /><span>{L_NUM_CONFLICTS}{L_COLON} {conflict.NUM_CONFLICTS}</span><!-- ENDIF -->
</dt>
<dd style="margin-{S_CONTENT_FLOW_BEGIN}{L_COLON} 60%;">
<!-- IF not conflict.S_BINARY -->[<a href="{conflict.U_SHOW_DIFF}">{L_DOWNLOAD_CONFLICTS}</a>]<br />{L_DOWNLOAD_CONFLICTS_EXPLAIN}
<!-- ELSE -->{L_BINARY_FILE}<!-- ENDIF -->
</dd>
<!-- IF conflict.S_CUSTOM -->
<dd style="margin-{S_CONTENT_FLOW_BEGIN}{L_COLON} 60%;"><label><input type="checkbox" name="no_update[]" value="{conflict.FILENAME}" class="radio" /> {L_DO_NOT_UPDATE}</label></dd>
<!-- ENDIF -->
</dl>
<!-- IF conflict.S_BINARY -->
<dl>
<dt style="width: 60%"><label><input type="radio" class="radio" name="conflict[{conflict.FILENAME}]" value="1" checked="checked" /> {L_MERGE_NO_MERGE_NEW_OPTION}</label></dt>
<dd style="margin-{S_CONTENT_FLOW_BEGIN}{L_COLON} 60%;">&nbsp;</dd>
</dl>
<!-- ELSE -->
<dl>
<dt style="width: 60%"><label><input type="radio" class="radio" name="conflict[{conflict.FILENAME}]" value="3" checked="checked" /> {L_MERGE_NEW_FILE_OPTION}</label></dt>
<dd style="margin-{S_CONTENT_FLOW_BEGIN}{L_COLON} 60%;">[<a href="{conflict.U_VIEW_NEW_FILE}" onclick="diff_popup(this.href); return false;">{L_SHOW_DIFF_MODIFIED}</a>]</dd>
</dl>
<dl>
<dt style="width: 60%"><label><input type="radio" class="radio" name="conflict[{conflict.FILENAME}]" value="4" /> {L_MERGE_MOD_FILE_OPTION}</label></dt>
<dd style="margin-{S_CONTENT_FLOW_BEGIN}{L_COLON} 60%;">[<a href="{conflict.U_VIEW_MOD_FILE}" onclick="diff_popup(this.href); return false;">{L_SHOW_DIFF_MODIFIED}</a>]</dd>
</dl>
<dl>
<dt style="width: 60%"><label><input type="radio" class="radio" name="conflict[{conflict.FILENAME}]" value="1" /> {L_MERGE_NO_MERGE_NEW_OPTION}</label></dt>
<dd style="margin-{S_CONTENT_FLOW_BEGIN}{L_COLON} 60%;">[<a href="{conflict.U_VIEW_NO_MERGE_NEW}" onclick="diff_popup(this.href); return false;">{L_SHOW_DIFF_FINAL}</a>]</dd>
</dl>
<dl>
<dt style="width: 60%"><label><input type="radio" class="radio" name="conflict[{conflict.FILENAME}]" value="2" /> {L_MERGE_NO_MERGE_MOD_OPTION}</label></dt>
<dd style="margin-{S_CONTENT_FLOW_BEGIN}{L_COLON} 60%;">[<a href="{conflict.U_VIEW_NO_MERGE_MOD}" onclick="diff_popup(this.href); return false;">{L_SHOW_DIFF_FINAL}</a>]</dd>
</dl>
<!-- ENDIF -->
</fieldset>
<!-- END conflict -->
<!-- ENDIF -->
<!-- IF .new_conflict -->
<h2>{L_FILES_NEW_CONFLICT}</h2>
<div style="float: {S_CONTENT_FLOW_END};">&raquo; <a href="#" onclick="phpbb.toggleDisplay('new_conflict', 0); return false;">{L_TOGGLE_DISPLAY}</a></div>
<p>{L_FILES_NEW_CONFLICT_EXPLAIN}</p>
<fieldset id="new_conflict">
<legend><img src="{T_IMAGE_PATH}file_new_conflict.gif" alt="{L_STATUS_NEW_CONFLICT}" /></legend>
<!-- BEGIN new_conflict -->
<dl>
<dt style="width: 60%;"><strong><!-- IF new_conflict.DIR_PART -->{new_conflict.DIR_PART}<br /><!-- ENDIF -->{new_conflict.FILE_PART}</strong>
<!-- IF new_conflict.S_CUSTOM --><br /><span><em>{L_FILE_USED}{L_COLON} </em>{new_conflict.CUSTOM_ORIGINAL}</span><!-- ENDIF -->
</dt>
<dd style="margin-{S_CONTENT_FLOW_BEGIN}{L_COLON} 60%;">
<!-- IF not new_conflict.S_BINARY -->[<a href="{new_conflict.U_SHOW_DIFF}" onclick="diff_popup(this.href); return false;">{new_conflict.L_SHOW_DIFF}</a>]<!-- ELSE -->{L_BINARY_FILE}<!-- ENDIF -->
</dd>
<!-- IF new_conflict.S_CUSTOM -->
<dd style="margin-{S_CONTENT_FLOW_BEGIN}{L_COLON} 60%;"><label><input type="checkbox" name="no_update[]" value="{new_conflict.FILENAME}" class="radio" /> {L_DO_NOT_UPDATE}</label></dd>
<!-- ENDIF -->
</dl>
<!-- END new_conflict -->
</fieldset>
<!-- ENDIF -->
<!-- IF .modified -->
<h2>{L_FILES_MODIFIED}</h2>
<div style="float: {S_CONTENT_FLOW_END};">&raquo; <a href="#" onclick="phpbb.toggleDisplay('modified', 0); return false;">{L_TOGGLE_DISPLAY}</a></div>
<p>{L_FILES_MODIFIED_EXPLAIN}</p>
<!-- BEGIN modified -->
<fieldset id="modified">
<legend><img src="{T_IMAGE_PATH}file_modified.gif" alt="{L_STATUS_MODIFIED}" /></legend>
<dl>
<dt style="width: 60%;"><strong><!-- IF modified.DIR_PART -->{modified.DIR_PART}<br /><!-- ENDIF -->{modified.FILE_PART}</strong>
<!-- IF modified.S_CUSTOM --><br /><span><em>{L_FILE_USED}{L_COLON} </em>{modified.CUSTOM_ORIGINAL}</span><!-- ENDIF -->
</dt>
<dd style="margin-{S_CONTENT_FLOW_BEGIN}{L_COLON} 60%;">&nbsp;</dd>
<!-- IF modified.S_CUSTOM -->
<dd style="margin-{S_CONTENT_FLOW_BEGIN}{L_COLON} 60%;"><label><input type="checkbox" name="no_update[]" value="{modified.FILENAME}" class="radio" /> {L_DO_NOT_UPDATE}</label></dd>
<!-- ENDIF -->
</dl>
<dl>
<dt style="width: 60%"><label><input type="radio" class="radio" name="modified[{modified.FILENAME}]" value="0" checked="checked" /> {L_MERGE_MODIFICATIONS_OPTION}</label></dt>
<dd style="margin-{S_CONTENT_FLOW_BEGIN}{L_COLON} 60%;"><!-- IF not modified.S_BINARY -->[<a href="{modified.U_SHOW_DIFF}" onclick="diff_popup(this.href); return false;">{modified.L_SHOW_DIFF}</a>]<!-- ELSE -->{L_BINARY_FILE}<!-- ENDIF --></dd>
</dl>
<dl>
<dt style="width: 60%"><label><input type="radio" class="radio" name="modified[{modified.FILENAME}]" value="1" /> {L_MERGE_NO_MERGE_NEW_OPTION}</label></dt>
<dd style="margin-{S_CONTENT_FLOW_BEGIN}{L_COLON} 60%;"><!-- IF not modified.S_BINARY -->[<a href="{modified.U_VIEW_NO_MERGE_NEW}" onclick="diff_popup(this.href); return false;">{L_SHOW_DIFF_FINAL}</a>]<!-- ELSE -->&nbsp;<!-- ENDIF --></dd>
</dl>
<dl>
<dt style="width: 60%"><label><input type="radio" class="radio" name="modified[{modified.FILENAME}]" value="2" /> {L_MERGE_NO_MERGE_MOD_OPTION}</label></dt>
<dd style="margin-{S_CONTENT_FLOW_BEGIN}{L_COLON} 60%;"><!-- IF not modified.S_BINARY -->[<a href="{modified.U_VIEW_NO_MERGE_MOD}" onclick="diff_popup(this.href); return false;">{L_SHOW_DIFF_FINAL}</a>]<!-- ELSE -->&nbsp;<!-- ENDIF --></dd>
</dl>
</fieldset>
<!-- END modified -->
<!-- ENDIF -->
<!-- IF .new -->
<h2>{L_FILES_NEW}</h2>
<div style="float: {S_CONTENT_FLOW_END};">&raquo; <a href="#" onclick="phpbb.toggleDisplay('new_files', 0); return false;">{L_TOGGLE_DISPLAY}</a></div>
<p>{L_FILES_NEW_EXPLAIN}</p>
<fieldset id="new_files" style="display: none;">
<legend><img src="{T_IMAGE_PATH}file_new.gif" alt="{L_STATUS_NEW}" /></legend>
<!-- BEGIN new -->
<dl>
<dt style="width: 60%;"><strong><!-- IF new.DIR_PART -->{new.DIR_PART}<br /><!-- ENDIF -->{new.FILE_PART}</strong>
<!-- IF new.S_CUSTOM --><br /><span><em>{L_FILE_USED}{L_COLON} </em>{new.CUSTOM_ORIGINAL}</span><!-- ENDIF -->
</dt>
<dd style="margin-{S_CONTENT_FLOW_BEGIN}{L_COLON} 60%;">
<!-- IF not new.S_BINARY -->[<a href="{new.U_SHOW_DIFF}" onclick="diff_popup(this.href); return false;">{new.L_SHOW_DIFF}</a>]<!-- ELSE -->{L_BINARY_FILE}<!-- ENDIF -->
</dd>
<!-- IF new.S_CUSTOM -->
<dd style="margin-{S_CONTENT_FLOW_BEGIN}{L_COLON} 60%;"><label><input type="checkbox" name="no_update[]" value="{new.FILENAME}" class="radio" /> {L_DO_NOT_UPDATE}</label></dd>
<!-- ENDIF -->
</dl>
<!-- END new -->
</fieldset>
<!-- ENDIF -->
<!-- IF .not_modified -->
<h2>{L_FILES_NOT_MODIFIED}</h2>
<div style="float: {S_CONTENT_FLOW_END};">&raquo; <a href="#" onclick="phpbb.toggleDisplay('not_modified', 0); return false;">{L_TOGGLE_DISPLAY}</a></div>
<p>{L_FILES_NOT_MODIFIED_EXPLAIN}</p>
<fieldset id="not_modified" style="display: none;">
<legend><img src="{T_IMAGE_PATH}file_not_modified.gif" alt="{L_STATUS_NOT_MODIFIED}" /></legend>
<!-- BEGIN not_modified -->
<dl>
<dt style="width: 60%;"><strong><!-- IF not_modified.DIR_PART -->{not_modified.DIR_PART}<br /><!-- ENDIF -->{not_modified.FILE_PART}</strong>
<!-- IF not_modified.S_CUSTOM --><br /><span><em>{L_FILE_USED}{L_COLON} </em>{not_modified.CUSTOM_ORIGINAL}</span><!-- ENDIF -->
</dt>
<dd style="margin-{S_CONTENT_FLOW_BEGIN}{L_COLON} 60%;"><!-- IF not not_modified.S_BINARY -->[<a href="{not_modified.U_SHOW_DIFF}" onclick="diff_popup(this.href); return false;">{not_modified.L_SHOW_DIFF}</a>]<!-- ELSE -->{L_BINARY_FILE}<!-- ENDIF --></dd>
<!-- IF not_modified.S_CUSTOM -->
<dd style="margin-{S_CONTENT_FLOW_BEGIN}{L_COLON} 60%;"><label><input type="checkbox" name="no_update[]" value="{not_modified.FILENAME}" class="radio" /> {L_DO_NOT_UPDATE}</label></dd>
<!-- ENDIF -->
</dl>
<!-- END not_modified -->
</fieldset>
<!-- ENDIF -->
<!-- IF .up_to_date -->
<h2>{L_FILES_UP_TO_DATE}</h2>
<div style="float: {S_CONTENT_FLOW_END};">&raquo; <a href="#" onclick="phpbb.toggleDisplay('up_to_date', 0); return false;">{L_TOGGLE_DISPLAY}</a></div>
<p>{L_FILES_UP_TO_DATE_EXPLAIN}</p>
<fieldset id="up_to_date" style="display: none;">
<legend><img src="{T_IMAGE_PATH}file_up_to_date.gif" alt="{L_STATUS_UP_TO_DATE}" /></legend>
<!-- BEGIN up_to_date -->
<dl>
<dd class="full" style="text-align: {S_CONTENT_FLOW_BEGIN};"><strong>{up_to_date.FILENAME}</strong></dd>
</dl>
<!-- END up_to_date -->
</fieldset>
<!-- ENDIF -->
<br />
<fieldset class="quick">
<input class="button1" type="submit" name="check_again" value="{L_CHECK_FILES_AGAIN}" />
</fieldset>
<br />
<h1>{L_UPDATE_METHOD}</h1>
<p>{L_UPDATE_METHOD_EXPLAIN}</p>
<fieldset class="submit-buttons">
<input class="button1" type="submit" name="ftp_upload" value="{L_FTP_UPDATE_METHOD}" />&nbsp; &nbsp;<input class="button1" type="submit" name="download" value="{L_DOWNLOAD_UPDATE_METHOD_BUTTON}" />
</fieldset>
</form>
<!-- ENDIF -->
<!-- ELSEIF S_DOWNLOAD_FILES -->
<h1>{L_DOWNLOAD_UPDATE_METHOD}</h1>
<p>{L_DOWNLOAD_UPDATE_METHOD_EXPLAIN}</p>
<form id="install_update" method="post" action="{U_ACTION}">
<fieldset>
<legend>{L_SELECT_DOWNLOAD_FORMAT}</legend>
<dl>
<dt><label for="use_method">{L_DOWNLOAD_AS}{L_COLON}</label></dt>
<dd>{RADIO_BUTTONS}</dd>
</dl>
</fieldset>
<fieldset class="submit-buttons">
{S_HIDDEN_FIELDS}
<input type="submit" class="button2" value="{L_CONTINUE_UPDATE}" name="check_again" />&nbsp; &nbsp;<input type="submit" class="button1" value="{L_DOWNLOAD}" name="download" />
</fieldset>
</form>
<br /><br />
<p>{L_MAPPING_FILE_STRUCTURE}</p>
<table class="table1">
<col class="row1" /><col class="row2" /><col class="row1" />
<thead>
<tr>
<th style="width: 49%">{L_ARCHIVE_FILE}</th>
<th style="width: 2%">&nbsp;</th>
<th style="width: 49%">{L_DESTINATION}</th>
</tr>
</thead>
<tbody>
<!-- BEGIN location -->
<tr>
<td>{location.SOURCE}</td>
<td><strong>&raquo;</strong></td>
<td>{location.DESTINATION}</td>
</tr>
<!-- END location -->
</tbody>
</table>
<!-- ELSEIF S_FTP_UPLOAD -->
<h1>{L_SELECT_FTP_SETTINGS}</h1>
<form id="install_update" method="post" action="{U_ACTION}">
<!-- IF S_CONNECTION_SUCCESS -->
<div class="successbox">
<p>{L_CONNECTION_SUCCESS}</p>
</div>
<!-- ELSEIF S_CONNECTION_FAILED -->
<div class="successbox">
<p>{L_TRY_DOWNLOAD_METHOD}</p>
<fieldset class="quick">
<input class="button1" type="submit" name="download" value="{L_TRY_DOWNLOAD_METHOD_BUTTON}" />
</fieldset>
</div>
<div class="errorbox">
<p>{L_CONNECTION_FAILED}<br />{ERROR_MSG}</p>
</div>
<!-- ENDIF -->
<fieldset>
<legend>{L_FTP_SETTINGS}</legend>
<dl>
<dt><label>{L_UPLOAD_METHOD}{L_COLON}</label></dt>
<dd><strong>{UPLOAD_METHOD}</strong></dd>
</dl>
<!-- BEGIN data -->
<dl>
<dt><label for="{data.DATA}">{data.NAME}{L_COLON}</label><br /><span>{data.EXPLAIN}</span></dt>
<dd><input type="<!-- IF data.DATA == 'password' -->password<!-- ELSE -->text<!-- ENDIF -->" id="{data.DATA}" name="{data.DATA}" value="{data.DEFAULT}" /></dd>
</dl>
<!-- END data -->
</fieldset>
<fieldset class="submit-buttons">
{S_HIDDEN_FIELDS}
<input class="button2" type="submit" name="check_again" value="{L_BACK}" />
<input class="button1" type="submit" name="test_connection" value="{L_TEST_CONNECTION}" />
<input class="button1" type="submit" name="submit" value="{L_UPDATE_FILES}" />
</fieldset>
</form>
<!-- ENDIF -->
<!-- INCLUDE install_footer.html -->

View file

@ -1,255 +0,0 @@
<!DOCTYPE html>
<html dir="{S_CONTENT_DIRECTION}" lang="{S_USER_LANG}">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1" />
<!-- IF META -->{META}<!-- ENDIF -->
<title>{PAGE_TITLE}</title>
<link href="{T_TEMPLATE_PATH}/admin.css" rel="stylesheet" type="text/css" media="screen" />
<script type="text/javascript">
// <![CDATA[
function resize_panel()
{
var block = document.getElementById('diff_content');
var height;
if (window.innerHeight)
{
height = window.innerHeight - 200;
block.style.height = height + 'px';
}
else
{
//whatever IE needs to do this
}
}
window.onresize = resize_panel;
// ]]>
</script>
<style type="text/css">
/* <![CDATA[ */
#main, .rtl #main {
font-size: 1em;
line-height: 0.7em;
margin: 0;
padding: 0;
width: 99%;
}
#diff_content {
padding: 30px 10px 10px;
overflow: hidden;
}
<!-- IF DIFF_MODE neq 'side_by_side' and DIFF_MODE neq 'raw' -->
div#codepanel {
width: 100%;
}
<!-- ELSE -->
div#codepanel {
background-color: #eee;
}
<!-- ENDIF -->
<!-- IF DIFF_MODE neq 'unified' and DIFF_MODE neq 'side_by_side' -->
div#diff_content pre {
overflow: auto;
height: 414px;
width: 100% !important;
}
<!-- ENDIF -->
<!-- IF not S_DIFF_NEW_FILE -->
/**
* Unified Diff
*/
.file {
line-height: .7em;
overflow: auto;
height: 414px;
}
.diff {
margin: 0;
}
.added {
background-color: #dfd;
}
.removed {
background-color: #fdd;
}
.info {
color: #888;
}
.context {
background-color: #eee;
}
/**
* Inline Diff
*/
.ins {
background-color: #dfd;
text-decoration: underline;
}
.del {
background-color: #fdd;
text-decoration: line-through;
}
/**
* Column Diff
*/
table.hrdiff {
margin: 0 0 8px 5px;
width: 100%;
overflow: hidden;
border-bottom: 1px solid #999;
table-layout: fixed;
background: transparent;
}
table.hrdiff th {
text-align: left;
width: 50%;
color: #333;
font-family: Verdana,Helvetica,sans-serif;
font-size: 11px;
border-bottom: 1px solid #999;
border-right: 1px solid #999;
background: #D9D9D9;
}
table.hrdiff thead th {
font-weight: bold;
font-size: 110%;
padding: 2px;
}
table.hrdiff tr:first-child th {
border-top: none;
}
table.hrdiff tbody th {
font-size: 80%;
border-top: 1px solid #999;
}
table.hrdiff tbody td {
border-right: 1px solid #999;
}
table.hrdiff td pre {
font-family: "Consolas", monospace;
font-size: 1.1em;
white-space: pre-wrap; /* css-3 */
word-wrap: break-word; /* Internet Explorer 5.5+ */
}
table.hrdiff .unmodified {
background: transparent;
}
table.hrdiff .added {
background: #9f9;
}
table.hrdiff .added_empty {
background: #cfc;
}
table.hrdiff .modified {
background: #fd9;
}
table.hrdiff .removed {
background: #f99;
}
table.hrdiff .removed_empty {
background: #fcc;
}
table.hrdiff caption {
caption-side: top;
text-align: left;
margin: 0 0 8px 5px;
font-size: 90%;
font-weight: bold;
padding: 5px;
}
table.hrdiff caption span {
height: 10px;
width: 10px;
line-height: 10px;
letter-spacing: 10px;
border: 1px solid #000;
margin-left: 0.5em;
vertical-align: baseline;
}
<!-- ENDIF -->
/* ]]> */
</style>
</head>
<!-- IF DIFF_MODE neq 'side_by_side' and DIFF_MODE neq 'raw' -->
<body onload="resize_panel();">
<!-- ELSE -->
<body>
<!-- ENDIF -->
<div id="wrap">
<div id="page-header">
<!-- IF S_DIFF_NEW_FILE -->
<h1>{L_VIEWING_FILE_CONTENTS}</h1>
<!-- ELSE -->
<h1>{L_VIEWING_FILE_DIFF}</h1>
<!-- ENDIF -->
<!-- IF not S_DIFF_NEW_FILE -->
<p id="skip"><a href="#acp">{L_SKIP}</a></p>
<form method="post" action="#">
<fieldset class="quick">
<label for="diff_mode">{L_SELECT_DIFF_MODE}{L_COLON}</label>
<select name="diff_mode" id="diff_mode">{S_DIFF_MODE_OPTIONS}</select>
<input class="button1" type="submit" id="submit" name="submit" value="{L_CHANGE}" />
</fieldset>
</form>
<!-- ENDIF -->
<!-- IF S_DIFF_CONFLICT_FILE -->
<div style="float: {S_CONTENT_FLOW_BEGIN};"><strong>{L_NUM_CONFLICTS}{L_COLON} {NUM_CONFLICTS}</strong></div>
<br style="clear: both;" />
<!-- ENDIF -->
</div>
<div id="page-body">
<div id="acp">
<div id="codepanel">
<div id="diff_content">
<div id="main">
{DIFF_CONTENT}
</div>
</div>
</div>
</div>
</div>
<!-- INCLUDE simple_footer.html -->

View file

@ -0,0 +1,87 @@
<!-- INCLUDE installer_header.html -->
<!-- IF TITLE --><h1>{TITLE}</h1><!-- ENDIF -->
<!-- IF S_ERROR_BOX -->
<div class="errorbox">
<h3>{ERROR_TITLE}</h3>
<p>{ERROR_MSG}</p>
</div>
<!-- ENDIF -->
<!-- IF .errors -->
<div id="error-container">
<!-- BEGIN errors -->
<strong>{errors.TITLE}</strong>
<!-- IF errors.DESCRIPTION --><p>{errors.DESCRIPTION}</p><!-- ENDIF -->
<!-- END errors -->
</div>
<!-- ENDIF -->
<!-- IF BODY --><p>{BODY}</p><!-- ENDIF -->
<!-- IF CONTENT -->{CONTENT}<!-- ENDIF -->
<!-- IF S_CONV_IN_PROGRESS -->
<p class="centered-text"><a href="{U_ACTION}" class="button1<!-- IF S_REFRESH --> disabled<!-- ENDIF -->"<!-- IF S_REFRESH --> onclick="return false;"<!-- ENDIF -->>{L_SUBMIT}</a></p>
<!-- ENDIF -->
<!-- IF S_CONTINUE -->
<div id="download-wrapper" class="download-box">
<p class="centered-text">
<a href="{U_NEW_ACTION}" class="button1">{L_CONVERT_NEW_CONVERSION}</a>
<a href="{U_CONTINUE_ACTION}" class="button1">{L_CONTINUE_OLD_CONVERSION}</a>
</p>
</div>
<!-- ENDIF -->
<!-- IF S_LIST -->
<table class="table1">
<caption>{L_AVAILABLE_CONVERTORS}</caption>
<col class="col1" /><col class="col2" /><col class="col1" /><col class="col2" />
<thead>
<tr>
<th>{L_SOFTWARE}</th>
<th>{L_VERSION}</th>
<th>{L_AUTHOR}</th>
<th>{L_CONVERT_OPTIONS}</th>
</tr>
</thead>
<tbody>
<!-- IF .convertors -->
<!-- BEGIN convertors -->
<tr>
<td>{convertors.SOFTWARE}</td>
<td>{convertors.VERSION}</td>
<td>{convertors.AUTHOR}</td>
<td><a href="{convertors.U_CONVERT}">{L_CONVERT}</a></td>
</tr>
<!-- END convertors -->
<!-- ELSE -->
<tr>
<td>{L_NO_CONVERTORS}</td>
<td>-</td>
<td>-</td>
<td>-</td>
</tr>
<!-- ENDIF -->
</tbody>
</table>
<!-- ENDIF -->
<!-- IF .checks -->
<fieldset>
<!-- BEGIN checks -->
<!-- IF checks.S_LEGEND -->
<!-- IF not checks.S_FIRST_ROW -->
</fieldset>
<fieldset>
<!-- ENDIF -->
<legend>{checks.LEGEND}</legend>
<!-- IF checks.LEGEND_EXPLAIN --><p>{checks.LEGEND_EXPLAIN}</p><!-- ENDIF -->
<!-- ELSE -->
<dl>
<dt><label>{checks.TITLE}{L_COLON}</label><!-- IF checks.S_EXPLAIN --><br /><span class="explain">{checks.TITLE_EXPLAIN}</span><!-- ENDIF --></dt>
<dd>{checks.RESULT}</dd>
</dl>
<!-- ENDIF -->
<!-- END checks -->
</fieldset>
<!-- ENDIF -->
<!-- INCLUDEJS {T_ASSETS_PATH}/javascript/installer.js -->
<!-- INCLUDE installer_footer.html -->

View file

@ -11,6 +11,15 @@
</div> </div>
</div> </div>
<script type="text/javascript">
<!--
installLang = {
title: '{LA_TIMEOUT_DETECTED_TITLE}',
msg: '{LA_TIMEOUT_DETECTED_MESSAGE}'
};
//-->
</script>
<script type="text/javascript" src="{T_JQUERY_LINK}"></script> <script type="text/javascript" src="{T_JQUERY_LINK}"></script>
<!-- IF S_ALLOW_CDN --><script type="text/javascript">window.jQuery || document.write('\x3Cscript src="{T_ASSETS_PATH}/javascript/jquery.min.js">\x3C/script>');</script><!-- ENDIF --> <!-- IF S_ALLOW_CDN --><script type="text/javascript">window.jQuery || document.write('\x3Cscript src="{T_ASSETS_PATH}/javascript/jquery.min.js">\x3C/script>');</script><!-- ENDIF -->
<script type="text/javascript" src="{T_ASSETS_PATH}/javascript/core.js?assets_version={T_ASSETS_VERSION}"></script> <script type="text/javascript" src="{T_ASSETS_PATH}/javascript/core.js?assets_version={T_ASSETS_VERSION}"></script>

View file

@ -0,0 +1,56 @@
<form id="<!-- IF FORM_ID -->{FORM_ID}<!-- ELSE -->install_install<!-- ENDIF -->" method="POST" action="{U_ACTION}">
<!-- IF .options -->
<!-- IF S_NOT_ONLY_BUTTON_FORM -->
<fieldset>
<!-- ENDIF -->
<!-- BEGIN options -->
<!-- IF options.S_LEGEND -->
<!-- IF not options.S_FIRST_ROW -->
</fieldset>
<fieldset>
<!-- ENDIF -->
<legend>{options.LEGEND}</legend>
<!-- ELSE -->
<dl>
<dt><label for="{options.KEY}">{options.TITLE}{L_COLON}</label><!-- IF options.S_EXPLAIN --><br /><span class="explain">{options.TITLE_EXPLAIN}</span><!-- ENDIF --></dt>
<dd>
<!-- IF options.TYPE == 'text' -->
<input type="text" name="{options.KEY}" value="{options.DEFAULT}" />
<!-- ENDIF -->
<!-- IF options.TYPE == 'email' -->
<input type="email" name="{options.KEY}" value="{options.DEFAULT}" />
<!-- ENDIF -->
<!-- IF options.TYPE == 'password' -->
<input type="password" name="{options.KEY}" />
<!-- ENDIF -->
<!-- IF options.TYPE == 'select' -->
<select name="{options.KEY}">
<!-- BEGIN options.OPTIONS -->
<option value="{options.OPTIONS.value}"<!-- IF options.OPTIONS.selected --> selected<!-- ENDIF -->>{options.OPTIONS.label}</option>
<!-- END options.OPTIONS -->
</select>
<!-- ENDIF -->
<!-- IF options.TYPE == 'radio' -->
<!-- BEGIN options.OPTIONS -->
<input type="radio" name="{options.KEY}" value="{options.OPTIONS.value}" <!-- IF options.OPTIONS.selected -->checked<!-- ENDIF --> /> {options.OPTIONS.label}
<!-- END options.OPTIONS -->
<!-- ENDIF -->
</dd>
</dl>
<!-- ENDIF-->
<!-- END options -->
<!-- IF S_NOT_ONLY_BUTTON_FORM -->
</fieldset>
<!-- ENDIF -->
<!-- ENDIF -->
<!-- IF .submit_buttons -->
<fieldset class="submit-buttons">
<legend>{L_SUBMIT}</legend>
<!-- BEGIN submit_buttons -->
<input class="button1<!-- IF submit_buttons.DISABLED --> disabled<!-- ENDIF -->" type="submit" name="{submit_buttons.KEY}" value="{submit_buttons.TITLE}"<!-- IF submit_buttons.DISABLED --> disabled="disabled"<!-- ENDIF --> />
<!-- END submit_buttons -->
</fieldset>
<!-- ENDIF -->
</form>

View file

@ -0,0 +1,58 @@
<!DOCTYPE html>
<html dir="{S_CONTENT_DIRECTION}" lang="{S_USER_LANG}">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1" />
<!-- IF META -->{META}<!-- ENDIF -->
<title>{PAGE_TITLE}</title>
<link href="{T_TEMPLATE_PATH}/admin.css" rel="stylesheet" type="text/css" media="screen" />
</head>
<body class="{S_CONTENT_DIRECTION} nojs">
<div id="wrap">
<div id="page-header">
<h1>{L_INSTALL_PANEL}</h1>
<p id="skip"><a href="#acp">{L_SKIP}</a></p>
<!-- IF S_LANG_SELECT -->
<form method="post" action="#" id="language_selector">
<fieldset class="nobg">
<label for="language">{L_SELECT_LANG}{L_COLON}</label>
<select id="language" name="language">
<!-- BEGIN language_select_item -->
<option value="{language_select_item.VALUE}"<!-- IF language_select_item.SELECTED --> selected="selected"<!-- ENDIF -->>{language_select_item.NAME}</option>
<!-- END language_select_item -->
</select>
<input class="button1" type="submit" id="change_lang" name="change_lang" value="{L_CHANGE}" />
</fieldset>
</form>
<!-- ENDIF -->
</div>
<div id="page-body">
<div id="tabs">
<ul>
<!-- BEGIN t_block1 -->
<li class="tab<!-- IF t_block1.S_SELECTED --> activetab<!-- ENDIF -->"><a href="{t_block1.U_TITLE}">{t_block1.L_TITLE}</a></li>
<!-- END t_block1 -->
</ul>
</div>
<div id="acp">
<div id="content">
<div id="menu">
<div class="menu-block no-header">
<ul>
<!-- BEGIN l_block1 -->
<li<!-- IF l_block1.S_SELECTED --> id="activemenu"<!-- ENDIF -->><a href="{l_block1.U_TITLE}"><span>{l_block1.L_TITLE}</span></a></li>
<!-- END l_block1 -->
<!-- BEGIN l_block2 -->
<li<!-- IF l_block2.S_SELECTED --> id="activemenu"<!-- ENDIF -->><span<!-- IF l_block2.S_COMPLETE --> class="completed"<!-- ENDIF --> id="installer-stage-{l_block2.STAGE_NAME}">{l_block2.L_TITLE}</span></li>
<!-- END l_block2 -->
</ul>
</div>
</div>
<div id="main" class="install-body">
<div class="main">

View file

@ -0,0 +1,13 @@
<!-- INCLUDE installer_header.html -->
<h1>{TITLE}</h1>
<p>{CONTENT}</p>
<!-- IF SHOW_INSTALL_START_FORM -->
<form id="install_install" method="post" action="{U_ACTION}">
<fieldset class="submit-buttons">
<legend>{L_SUBMIT}</legend>
<input class="button1" name="install" type="submit" value="{L_INSTALL}" />
</fieldset>
</form>
<!-- ENDIF -->
<!-- INCLUDEJS {T_ASSETS_PATH}/javascript/installer.js -->
<!-- INCLUDE installer_footer.html -->

View file

@ -0,0 +1,6 @@
<!-- INCLUDE installer_header.html -->
<h1>{TITLE}</h1>
<p>{BODY}</p>
<!-- INCLUDE installer_footer.html -->

View file

@ -0,0 +1,13 @@
<!-- INCLUDE installer_header.html -->
<h1>{TITLE}</h1>
<p>{CONTENT}</p>
<!-- IF SHOW_INSTALL_START_FORM -->
<form id="install_install" method="post" action="{U_ACTION}">
<fieldset class="submit-buttons">
<legend>{L_SUBMIT}</legend>
<input class="button1" name="update" type="submit" value="{L_UPDATE}" />
</fieldset>
</form>
<!-- ENDIF -->
<!-- INCLUDEJS {T_ASSETS_PATH}/javascript/installer.js -->
<!-- INCLUDE installer_footer.html -->

View file

@ -0,0 +1,80 @@
<!-- IF .deleted -->
<h2>{L_FILES_DELETED}</h2>
<div style="float: {S_CONTENT_FLOW_END};">&raquo; <a href="#" onclick="phpbb.toggleDisplay('deleted', 0); return false;">{L_TOGGLE_DISPLAY}</a></div>
<p>{L_FILES_DELETED_EXPLAIN}</p>
<fieldset id="deleted">
<legend><img src="{T_IMAGE_PATH}/icon_delete.gif" alt="{L_STATUS_DELETED}" /></legend>
<!-- BEGIN deleted -->
<dl>
<dt style="width: 100%;"><!-- IF deleted.DIR_PART -->{deleted.DIR_PART}<!-- ENDIF --><strong>{deleted.FILE_PART}</strong></dt>
</dl>
<!-- END deleted -->
</fieldset>
<!-- ENDIF -->
<!-- IF .conflict -->
<h2>{L_FILES_CONFLICT}</h2>
<div style="float: {S_CONTENT_FLOW_END};">&raquo; <a href="#" onclick="phpbb.toggleDisplay('conflict', 0); return false;">{L_TOGGLE_DISPLAY}</a></div>
<p>{L_FILES_CONFLICT_EXPLAIN}</p>
<fieldset id="conflict">
<legend><img src="{T_IMAGE_PATH}/file_conflict.gif" alt="{L_STATUS_CONFLICT}" /></legend>
<!-- BEGIN conflict -->
<dl>
<dt style="width: 100%;"><!-- IF conflict.DIR_PART -->{conflict.DIR_PART}<!-- ENDIF --><strong>{conflict.FILE_PART}</strong></dt>
</dl>
<!-- END conflict -->
</fieldset>
<!-- ENDIF -->
<!-- IF .modified -->
<h2>{L_FILES_MODIFIED}</h2>
<div style="float: {S_CONTENT_FLOW_END};">&raquo; <a href="#" onclick="phpbb.toggleDisplay('modified', 0); return false;">{L_TOGGLE_DISPLAY}</a></div>
<p>{L_FILES_MODIFIED_EXPLAIN}</p>
<fieldset id="modified">
<legend><img src="{T_IMAGE_PATH}/file_modified.gif" alt="{L_STATUS_MODIFIED}" /></legend>
<!-- BEGIN modified -->
<dl>
<dt style="width: 100%;"><!-- IF modified.DIR_PART -->{modified.DIR_PART}<!-- ENDIF --><strong>{modified.FILE_PART}</strong></dt>
</dl>
<!-- END modified -->
</fieldset>
<!-- ENDIF -->
<!-- IF .new -->
<h2>{L_FILES_NEW}</h2>
<div style="float: {S_CONTENT_FLOW_END};">&raquo; <a href="#" onclick="phpbb.toggleDisplay('new_files', 0); return false;">{L_TOGGLE_DISPLAY}</a></div>
<p>{L_FILES_NEW_EXPLAIN}</p>
<fieldset id="new_files" style="display: none;">
<legend><img src="{T_IMAGE_PATH}/file_new.gif" alt="{L_STATUS_NEW}" /></legend>
<!-- BEGIN new -->
<dl>
<dt style="width: 100%;"><!-- IF new.DIR_PART -->{new.DIR_PART}<!-- ENDIF --><strong>{new.FILE_PART}</strong>
</dt>
</dl>
<!-- END new -->
</fieldset>
<!-- ENDIF -->
<!-- IF .not_modified -->
<h2>{L_FILES_NOT_MODIFIED}</h2>
<div style="float: {S_CONTENT_FLOW_END};">&raquo; <a href="#" onclick="phpbb.toggleDisplay('not_modified', 0); return false;">{L_TOGGLE_DISPLAY}</a></div>
<p>{L_FILES_NOT_MODIFIED_EXPLAIN}</p>
<fieldset id="not_modified" style="display: none;">
<legend><img src="{T_IMAGE_PATH}/file_not_modified.gif" alt="{L_STATUS_NOT_MODIFIED}" /></legend>
<!-- BEGIN not_modified -->
<dl>
<dt style="width: 100%;"><!-- IF not_modified.DIR_PART -->{not_modified.DIR_PART}<!-- ENDIF --><strong>{not_modified.FILE_PART}</strong></dt>
</dl>
<!-- END not_modified -->
</fieldset>
<!-- ENDIF -->

View file

@ -7,6 +7,7 @@
<!-- IF META -->{META}<!-- ENDIF --> <!-- IF META -->{META}<!-- ENDIF -->
<title>{PAGE_TITLE}</title> <title>{PAGE_TITLE}</title>
<link href="{T_FONT_AWESOME_LINK}" rel="stylesheet">
<link href="style/admin.css?assets_version={T_ASSETS_VERSION}" rel="stylesheet" type="text/css" media="screen" /> <link href="style/admin.css?assets_version={T_ASSETS_VERSION}" rel="stylesheet" type="text/css" media="screen" />
<script type="text/javascript"> <script type="text/javascript">
@ -147,3 +148,10 @@ function popup(url, width, height, name)
<div id="main"> <div id="main">
<div class="main"> <div class="main">
{% if CONTAINER_EXCEPTION !== false %}
<div class="errorbox">
<p>{{ lang('CONTAINER_EXCEPTION') }}</p><br />
<p>{{ lang('EXCEPTION') }}{{ lang('COLON') }} {{ CONTAINER_EXCEPTION.getMessage() }}</p>
<pre>{{ CONTAINER_EXCEPTION.getTraceAsString() }}</pre>
</div>
{% endif %}

View file

@ -39,11 +39,24 @@
</div> </div>
<dl class="permissions-simple"> <dl class="permissions-simple">
<dt style="width: 20%"><label for="role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}">{L_ROLE}{L_COLON}</label></dt> <dt style="width: 20%"><label for="role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}">{L_ROLE}{L_COLON}</label></dt>
<!-- IF p_mask.f_mask.S_ROLE_OPTIONS --> {% if p_mask.f_mask.role_options %}
<dd style="margin-{S_CONTENT_FLOW_BEGIN}{L_COLON} 20%"><select id="role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}" name="role[{p_mask.f_mask.UG_ID}][{p_mask.f_mask.FORUM_ID}]" onchange="set_role_settings(this.options[selectedIndex].value, 'advanced{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}'); init_colours('{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}')">{p_mask.f_mask.S_ROLE_OPTIONS}</select></dd> <dd style="margin-{S_CONTENT_FLOW_BEGIN}{L_COLON} 20%">
<!-- ELSE --> <div class="dropdown-container dropdown-button-control roles-options" data-alt-text="{LA_ROLE_DESCRIPTION}">
<select id="role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}" name="role[{p_mask.f_mask.UG_ID}][{p_mask.f_mask.FORUM_ID}]">{p_mask.f_mask.S_ROLE_OPTIONS}</select>
<span title="Roles" class="button icon-button tools-icon dropdown-trigger dropdown-select">{L_NO_ROLE_ASSIGNED}</span>
<div class="dropdown hidden">
<ul class="dropdown-contents" id="role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}" >
{% for role in p_mask.f_mask.role_options %}
<li data-id="{{ role.ID }}" data-target-id="advanced{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}" data-title="{{ role.TITLE }}"{% if role.SELECTED == true %} data-selected="{{ role.SELECTED }}"{% endif %}>{{ role.ROLE_NAME }}</li>
{% endfor %}
</ul>
</div>
<input type="hidden" data-name="role[{p_mask.f_mask.UG_ID}][{p_mask.f_mask.FORUM_ID}]"{% if p_mask.f_mask.S_ROLE_ID %}value="{{ p_mask.f_mask.S_ROLE_ID }}"{% endif %} />
</div>
</dd>
{% else %}
<dd>{L_NO_ROLE_AVAILABLE}</dd> <dd>{L_NO_ROLE_AVAILABLE}</dd>
<!-- ENDIF --> {% endif %}
</dl> </dl>
<!-- ENDIF --> <!-- ENDIF -->

View file

@ -10,206 +10,224 @@ phpBB Development Team:
- further adjustements - further adjustements
*/ */
var head_text, tooltip_mode; (function($) { // Avoid conflicts with other libraries
'use strict';
var tooltips = [];
/** /**
* Enable tooltip replacements for links * Enable tooltip replacements for selects
* @param {string} id ID tag of select
* @param {string} headline Text that should appear on top of tooltip
* @param {string} [subId] Sub ID that should only be using tooltips (optional)
*/ */
function enable_tooltips_link(id, headline, sub_id) { phpbb.enableTooltipsSelect = function (id, headline, subId) {
var links, i, hold; var $links, hold;
head_text = headline; hold = $('<span />', {
id: '_tooltip_container',
if (!document.getElementById || !document.getElementsByTagName) { css: {
return; position: 'absolute'
} }
});
hold = document.createElement('span'); $('body').append(hold);
hold.id = '_tooltip_container';
hold.setAttribute('id', '_tooltip_container');
hold.style.position = 'absolute';
document.getElementsByTagName('body')[0].appendChild(hold); if (!id) {
$links = $('.roles-options li');
if (id === null) {
links = document.getElementsByTagName('a');
} else { } else {
links = document.getElementById(id).getElementsByTagName('a'); $links = $('.roles-options li', '#' + id);
} }
for (i = 0; i < links.length; i++) { $links.each(function () {
if (sub_id) { var $this = $(this);
if (links[i].id.substr(0, sub_id.length) === sub_id) {
prepare(links[i]); if (subId) {
if ($this.parent().attr('id').substr(0, subId.length) === subId) {
phpbb.prepareTooltips($this, headline);
} }
} else { } else {
prepare(links[i]); phpbb.prepareTooltips($this, headline);
} }
} });
};
tooltip_mode = 'link';
}
/** /**
* Enable tooltip replacements for selects * Prepare elements to replace
*
* @param {jQuery} $element Element to prepare for tooltips
* @param {string} headText Text heading to display
*/ */
function enable_tooltips_select(id, headline, sub_id) { phpbb.prepareTooltips = function ($element, headText) {
var links, i, hold; var $tooltip, text, $desc, $title;
head_text = headline; text = $element.attr('data-title');
if (!document.getElementById || !document.getElementsByTagName) {
return;
}
hold = document.createElement('span');
hold.id = '_tooltip_container';
hold.setAttribute('id', '_tooltip_container');
hold.style.position = 'absolute';
document.getElementsByTagName('body')[0].appendChild(hold);
if (id === null) {
links = document.getElementsByTagName('option');
} else {
links = document.getElementById(id).getElementsByTagName('option');
}
for (i = 0; i < links.length; i++) {
if (sub_id) {
if (links[i].parentNode.id.substr(0, sub_id.length) === sub_id) {
prepare(links[i]);
}
} else {
prepare(links[i]);
}
}
tooltip_mode = 'select';
}
/**
* Prepare elements to replace
*/
function prepare(element) {
var tooltip, text, desc, title;
text = element.getAttribute('title');
if (text === null || text.length === 0) { if (text === null || text.length === 0) {
return; return;
} }
element.removeAttribute('title'); $title = $('<span />', {
tooltip = create_element('span', 'tooltip'); class: 'top',
css: {
title = create_element('span', 'top'); display: 'block'
title.appendChild(document.createTextNode(head_text));
tooltip.appendChild(title);
desc = create_element('span', 'bottom');
desc.innerHTML = text;
tooltip.appendChild(desc);
set_opacity(tooltip);
element.tooltip = tooltip;
element.onmouseover = show_tooltip;
element.onmouseout = hide_tooltip;
if (tooltip_mode === 'link') {
element.onmousemove = locate;
} }
} })
.append(document.createTextNode(headText));
$desc = $('<span />', {
class: 'bottom',
html: text,
css: {
display: 'block'
}
});
$tooltip = $('<span />', {
class: 'tooltip',
css: {
display: 'block'
}
})
.append($title)
.append($desc);
tooltips[$element.attr('data-id')] = $tooltip;
$element.on('mouseover', phpbb.showTooltip);
$element.on('mouseout', phpbb.hideTooltip);
};
/** /**
* Show tooltip * Show tooltip
*
* @param {object} $element Element passed by .on()
*/ */
function show_tooltip(e) { phpbb.showTooltip = function ($element) {
document.getElementById('_tooltip_container').appendChild(this.tooltip); var $this = $($element.target);
locate(this); $('#_tooltip_container').append(tooltips[$this.attr('data-id')]);
} phpbb.positionTooltip($this);
};
/** /**
* Hide tooltip * Hide tooltip
*/ */
function hide_tooltip(e) { phpbb.hideTooltip = function () {
var d = document.getElementById('_tooltip_container'); var d = document.getElementById('_tooltip_container');
if (d.childNodes.length > 0) { if (d.childNodes.length > 0) {
d.removeChild(d.firstChild); d.removeChild(d.firstChild);
} }
} };
/** /**
* Set opacity on tooltip element * Correct positioning of tooltip container
*
* @param {jQuery} $element Tooltip element that should be positioned
*/ */
function set_opacity(element) { phpbb.positionTooltip = function ($element) {
element.style.filter = 'alpha(opacity:95)'; var offset;
element.style.KHTMLOpacity = '0.95';
element.style.MozOpacity = '0.95'; $element = $element.parent();
element.style.opacity = '0.95'; offset = $element.offset();
}
$('#_tooltip_container').css({
top: offset.top + 30,
left: offset.left - 205
});
};
/** /**
* Create new element * Prepare roles drop down select
*/ */
function create_element(tag, c) { phpbb.prepareRolesDropdown = function () {
var x = document.createElement(tag); var $options = $('.roles-options li');
x.className = c;
x.style.display = 'block';
return x;
}
/** // Display span and hide select
* Correct positioning of tooltip container $('.roles-options > span').css('display', 'block');
*/ $('.roles-options > select').hide();
function locate(e) { $('.roles-options > input[type=hidden]').each(function () {
var posx = 0; var $this = $(this);
var posy = 0;
e = e.parentNode; if ($this.attr('data-name') && !$this.attr('name')) {
$this.attr('name', $this.attr('data-name'));
if (e.offsetParent) {
for (posx = 0, posy = 0; e.offsetParent; e = e.offsetParent) {
posx += e.offsetLeft;
posy += e.offsetTop;
} }
} else { });
posx = e.offsetLeft;
posy = e.offsetTop; // Prepare highlighting of select options and settings update
$options.each(function () {
var $this = $(this);
var $rolesOptions = $this.closest('.roles-options');
var $span = $rolesOptions.children('span');
// Correctly show selected option
if (typeof $this.attr('data-selected') !== 'undefined') {
$rolesOptions
.children('span')
.text($this.text())
.attr('data-default', $this.text())
.attr('data-default-val', $this.attr('data-id'));
// Save default text of drop down if there is no default set yet
if (typeof $span.attr('data-default') === 'undefined') {
$span.attr('data-default', $span.text());
} }
if (tooltip_mode === 'link') { // Prepare resetting drop down on form reset
document.getElementById('_tooltip_container').style.top=(posy+20) + 'px'; $this.closest('form').on('reset', function () {
document.getElementById('_tooltip_container').style.left=(posx-20) + 'px'; $span.text($span.attr('data-default'));
} else { $rolesOptions.children('input[type=hidden]')
document.getElementById('_tooltip_container').style.top=(posy+30) + 'px'; .val($span.attr('data-default-val'));
document.getElementById('_tooltip_container').style.left=(posx-205) + 'px'; });
} }
/* $this.on('mouseover', function () {
if (e == null) var $this = $(this);
{ $options.removeClass('roles-highlight');
e = window.event; $this.addClass('roles-highlight');
} }).on('click', function () {
var $this = $(this);
var $rolesOptions = $this.closest('.roles-options');
if (e.pageX || e.pageY) // Update settings
{ set_role_settings($this.attr('data-id'), $this.attr('data-target-id'));
posx = e.pageX; init_colours($this.attr('data-target-id').replace('advanced', ''));
posy = e.pageY;
} // Set selected setting
else if (e.clientX || e.clientY) $rolesOptions.children('span')
{ .text($this.text());
if (document.documentElement.scrollTop) $rolesOptions.children('input[type=hidden]')
{ .val($this.attr('data-id'));
posx = e.clientX+document.documentElement.scrollLeft;
posy = e.clientY+document.documentElement.scrollTop; // Trigger hiding of selection options
} $('body').trigger('click');
else });
{ });
posx = e.clientX+document.body.scrollLeft; };
posy = e.clientY+document.body.scrollTop;
} // Run onload functions for RolesDropdown and tooltips
} $(function() {
*/ // Enable tooltips
} phpbb.enableTooltipsSelect('set-permissions', $('#set-permissions').attr('data-role-description'), 'role');
// Prepare dropdown
phpbb.prepareRolesDropdown();
// Reset role drop-down on modifying permissions in advanced tab
$('div.permissions-switch > a').on('click', function () {
$.each($('input[type=radio][name^="setting["]'), function () {
var $this = $(this);
$this.on('click', function () {
var $rolesOptions = $this.closest('fieldset.permissions').find('.roles-options'),
rolesSelect = $rolesOptions.find('select > option')[0];
// Set selected setting
$rolesOptions.children('span')
.text(rolesSelect.text);
$rolesOptions.children('input[type=hidden]')
.val(rolesSelect.value);
});
});
});
});
})(jQuery); // Avoid conflicts with other libraries

View file

@ -21,14 +21,16 @@ define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './'; $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1); $phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx); include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_url_matcher.' . $phpEx);
// Start session management // Start session management
$user->session_begin(); $user->session_begin();
$auth->acl($user->data); $auth->acl($user->data);
$user->setup('app'); $user->setup('app');
/* @var $http_kernel \Symfony\Component\HttpKernel\HttpKernel */
$http_kernel = $phpbb_container->get('http_kernel'); $http_kernel = $phpbb_container->get('http_kernel');
/* @var $symfony_request \phpbb\symfony_request */
$symfony_request = $phpbb_container->get('symfony_request'); $symfony_request = $phpbb_container->get('symfony_request');
$response = $http_kernel->handle($symfony_request); $response = $http_kernel->handle($symfony_request);
$response->send(); $response->send();

View file

@ -0,0 +1,6 @@
.cc-window{opacity:1;transition:opacity 1s ease}.cc-window.cc-invisible{opacity:0}.cc-animate.cc-revoke{transition:transform 1s ease}.cc-animate.cc-revoke.cc-top{transform:translateY(-2em)}.cc-animate.cc-revoke.cc-bottom{transform:translateY(2em)}.cc-animate.cc-revoke.cc-active.cc-bottom,.cc-animate.cc-revoke.cc-active.cc-top,.cc-revoke:hover{transform:translateY(0)}.cc-grower{max-height:0;overflow:hidden;transition:max-height 1s}
.cc-link,.cc-revoke:hover{text-decoration:underline}.cc-revoke,.cc-window{position:fixed;overflow:hidden;box-sizing:border-box;font-family:Helvetica,Calibri,Arial,sans-serif;font-size:16px;line-height:1.5em;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;z-index:9999}.cc-window.cc-static{position:static}.cc-window.cc-floating{padding:2em;max-width:24em;-ms-flex-direction:column;flex-direction:column}.cc-window.cc-banner{padding:1em 1.8em;width:100%;-ms-flex-direction:row;flex-direction:row}.cc-revoke{padding:.5em}.cc-header{font-size:18px;font-weight:700}.cc-btn,.cc-close,.cc-link,.cc-revoke{cursor:pointer}.cc-link{opacity:.8;display:inline-block;padding:.2em}.cc-link:hover{opacity:1}.cc-link:active,.cc-link:visited{color:initial}.cc-btn{display:block;padding:.4em .8em;font-size:.9em;font-weight:700;border-width:2px;border-style:solid;text-align:center;white-space:nowrap}.cc-banner .cc-btn:last-child{min-width:140px}.cc-highlight .cc-btn:first-child{background-color:transparent;border-color:transparent}.cc-highlight .cc-btn:first-child:focus,.cc-highlight .cc-btn:first-child:hover{background-color:transparent;text-decoration:underline}.cc-close{display:block;position:absolute;top:.5em;right:.5em;font-size:1.6em;opacity:.9;line-height:.75}.cc-close:focus,.cc-close:hover{opacity:1}
.cc-revoke.cc-top{top:0;left:3em;border-bottom-left-radius:.5em;border-bottom-right-radius:.5em}.cc-revoke.cc-bottom{bottom:0;left:3em;border-top-left-radius:.5em;border-top-right-radius:.5em}.cc-revoke.cc-left{left:3em;right:unset}.cc-revoke.cc-right{right:3em;left:unset}.cc-top{top:1em}.cc-left{left:1em}.cc-right{right:1em}.cc-bottom{bottom:1em}.cc-floating>.cc-link{margin-bottom:1em}.cc-floating .cc-message{display:block;margin-bottom:1em}.cc-window.cc-floating .cc-compliance{-ms-flex:1;flex:1}.cc-window.cc-banner{-ms-flex-align:center;align-items:center}.cc-banner.cc-top{left:0;right:0;top:0}.cc-banner.cc-bottom{left:0;right:0;bottom:0}.cc-banner .cc-message{-ms-flex:1;flex:1}.cc-compliance{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-line-pack:justify;align-content:space-between}.cc-compliance>.cc-btn{-ms-flex:1;flex:1}.cc-btn+.cc-btn{margin-left:.5em}
@media print{.cc-revoke,.cc-window{display:none}}@media screen and (max-width:900px){.cc-btn{white-space:normal}}@media screen and (max-width:414px) and (orientation:portrait),screen and (max-width:736px) and (orientation:landscape){.cc-window.cc-top{top:0}.cc-window.cc-bottom{bottom:0}.cc-window.cc-banner,.cc-window.cc-left,.cc-window.cc-right{left:0;right:0}.cc-window.cc-banner{-ms-flex-direction:column;flex-direction:column}.cc-window.cc-banner .cc-compliance{-ms-flex:1;flex:1}.cc-window.cc-floating{max-width:none}.cc-window .cc-message{margin-bottom:1em}.cc-window.cc-banner{-ms-flex-align:unset;align-items:unset}}
.cc-floating.cc-theme-classic{padding:1.2em;border-radius:5px}.cc-floating.cc-type-info.cc-theme-classic .cc-compliance{text-align:center;display:inline;-ms-flex:none;flex:none}.cc-theme-classic .cc-btn{border-radius:5px}.cc-theme-classic .cc-btn:last-child{min-width:140px}.cc-floating.cc-type-info.cc-theme-classic .cc-btn{display:inline-block}
.cc-theme-edgeless.cc-window{padding:0}.cc-floating.cc-theme-edgeless .cc-message{margin:2em 2em 1.5em}.cc-banner.cc-theme-edgeless .cc-btn{margin:0;padding:.8em 1.8em;height:100%}.cc-banner.cc-theme-edgeless .cc-message{margin-left:1em}.cc-floating.cc-theme-edgeless .cc-btn+.cc-btn{margin-left:0}

File diff suppressed because one or more lines are too long

4
phpBB/assets/css/font-awesome.min.css vendored Normal file

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 434 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -27,7 +27,10 @@ phpbb.isTouch = (window && typeof window.ontouchstart !== 'undefined');
*/ */
phpbb.loadingIndicator = function() { phpbb.loadingIndicator = function() {
if (!$loadingIndicator) { if (!$loadingIndicator) {
$loadingIndicator = $('<div />', { id: 'loading_indicator' }); $loadingIndicator = $('<div />', {
id: 'loading_indicator',
class: 'loading_indicator',
});
$loadingIndicator.appendTo('#page-footer'); $loadingIndicator.appendTo('#page-footer');
} }
@ -176,7 +179,7 @@ phpbb.alert.close = function($alert, fadedark) {
phpbb.confirm = function(msg, callback, fadedark) { phpbb.confirm = function(msg, callback, fadedark) {
var $confirmDiv = $('#phpbb_confirm'); var $confirmDiv = $('#phpbb_confirm');
$confirmDiv.find('.alert_text').html(msg); $confirmDiv.find('.alert_text').html(msg);
fadedark = fadedark || true; fadedark = fadedark !== 'undefined' ? fadedark : true;
$(document).on('keydown.phpbb.alert', function(e) { $(document).on('keydown.phpbb.alert', function(e) {
if (e.keyCode === keymap.ENTER || e.keyCode === keymap.ESC) { if (e.keyCode === keymap.ENTER || e.keyCode === keymap.ESC) {
@ -191,9 +194,7 @@ phpbb.confirm = function(msg, callback, fadedark) {
$confirmDiv.find('input[type="button"]').one('click.phpbb.confirmbox', function(e) { $confirmDiv.find('input[type="button"]').one('click.phpbb.confirmbox', function(e) {
var confirmed = this.name === 'confirm'; var confirmed = this.name === 'confirm';
if (confirmed) { callback(confirmed);
callback(true);
}
$confirmDiv.find('input[type="button"]').off('click.phpbb.confirmbox'); $confirmDiv.find('input[type="button"]').off('click.phpbb.confirmbox');
phpbb.alert.close($confirmDiv, fadedark || !confirmed); phpbb.alert.close($confirmDiv, fadedark || !confirmed);
@ -965,12 +966,6 @@ phpbb.addAjaxCallback('toggle_link', function() {
$anchor.each(function() { $anchor.each(function() {
var $this = $(this); var $this = $(this);
// Toggle link text
toggleText = $this.attr('data-toggle-text');
$this.attr('data-toggle-text', $this.text());
$this.attr('title', $.trim(toggleText));
$this.text(toggleText);
// Toggle link url // Toggle link url
toggleUrl = $this.attr('data-toggle-url'); toggleUrl = $this.attr('data-toggle-url');
$this.attr('data-toggle-url', $this.attr('href')); $this.attr('data-toggle-url', $this.attr('href'));
@ -978,8 +973,14 @@ phpbb.addAjaxCallback('toggle_link', function() {
// Toggle class of link parent // Toggle class of link parent
toggleClass = $this.attr('data-toggle-class'); toggleClass = $this.attr('data-toggle-class');
$this.attr('data-toggle-class', $this.parent().attr('class')); $this.attr('data-toggle-class', $this.children().attr('class'));
$this.parent().attr('class', toggleClass); $this.children('.icon').attr('class', toggleClass);
// Toggle link text
toggleText = $this.attr('data-toggle-text');
$this.attr('data-toggle-text', $this.children('span').text());
$this.attr('title', $.trim(toggleText));
$this.children('span').text(toggleText);
}); });
}); });

View file

@ -111,7 +111,6 @@ function bbfontstyle(bbopen, bbclose) {
} }
textarea.focus(); textarea.focus();
return;
} }
/** /**
@ -167,7 +166,7 @@ function attachInline(index, filename) {
/** /**
* Add quote text to message * Add quote text to message
*/ */
function addquote(post_id, username, l_wrote) { function addquote(post_id, username, l_wrote, attributes) {
var message_name = 'message_' + post_id; var message_name = 'message_' + post_id;
var theSelection = ''; var theSelection = '';
var divarea = false; var divarea = false;
@ -177,6 +176,9 @@ function addquote(post_id, username, l_wrote) {
// Backwards compatibility // Backwards compatibility
l_wrote = 'wrote'; l_wrote = 'wrote';
} }
if (typeof attributes !== 'object') {
attributes = {};
}
if (document.all) { if (document.all) {
divarea = document.all[message_name]; divarea = document.all[message_name];
@ -213,7 +215,8 @@ function addquote(post_id, username, l_wrote) {
if (theSelection) { if (theSelection) {
if (bbcodeEnabled) { if (bbcodeEnabled) {
insert_text('[quote="' + username + '"]' + theSelection + '[/quote]'); attributes.author = username;
insert_text(generateQuote(theSelection, attributes));
} else { } else {
insert_text(username + ' ' + l_wrote + ':' + '\n'); insert_text(username + ' ' + l_wrote + ':' + '\n');
var lines = split_lines(theSelection); var lines = split_lines(theSelection);
@ -222,8 +225,61 @@ function addquote(post_id, username, l_wrote) {
} }
} }
} }
}
return; /**
* Create a quote block for given text
*
* Possible attributes:
* - author: author's name (usually a username)
* - post_id: post_id of the post being quoted
* - user_id: user_id of the user being quoted
* - time: timestamp of the original message
*
* @param {!string} text Quote's text
* @param {!Object} attributes Quote's attributes
* @return {!string} Quote block to be used in a new post/text
*/
function generateQuote(text, attributes) {
text = text.replace(/^\s+/, '').replace(/\s+$/, '');
var quote = '[quote';
if (attributes.author) {
// Add the author as the BBCode's default attribute
quote += '=' + formatAttributeValue(attributes.author);
delete attributes.author;
}
for (var name in attributes) {
if (attributes.hasOwnProperty(name)) {
var value = attributes[name];
quote += ' ' + name + '=' + formatAttributeValue(value.toString());
}
}
quote += ']';
var newline = ((quote + text + '[/quote]').length > 80 || text.indexOf('\n') > -1) ? '\n' : '';
quote += newline + text + newline + '[/quote]';
return quote;
}
/**
* Format given string to be used as an attribute value
*
* Will return the string as-is if it can be used in a BBCode without quotes. Otherwise,
* it will use either single- or double- quotes depending on whichever requires less escaping.
* Quotes and backslashes are escaped with backslashes where necessary
*
* @param {!string} str Original string
* @return {!string} Same string if possible, escaped string within quotes otherwise
*/
function formatAttributeValue(str) {
if (!/[ "'\\\]]/.test(str)) {
// Return as-is if it contains none of: space, ' " \ or ]
return str;
}
var singleQuoted = "'" + str.replace(/[\\']/g, '\\$&') + "'",
doubleQuoted = '"' + str.replace(/[\\"]/g, '\\$&') + '"';
return (singleQuoted.length < doubleQuoted.length) ? singleQuoted : doubleQuoted;
} }
function split_lines(text) { function split_lines(text) {
@ -361,7 +417,7 @@ function getCaretPosition(txtarea) {
$('textarea').on('keydown', function (e) { $('textarea').on('keydown', function (e) {
if (e.which === 13 && (e.metaKey || e.ctrlKey)) { if (e.which === 13 && (e.metaKey || e.ctrlKey)) {
$(this).closest('form').submit(); $(this).closest('form').find(':submit').click();
} }
}); });
}); });

View file

@ -0,0 +1,615 @@
/**
* Installer's AJAX frontend handler
*/
(function($) { // Avoid conflicts with other libraries
'use strict';
// Installer variables
var pollTimer = null;
var nextReadPosition = 0;
var progressBarTriggered = false;
var progressTimer = null;
var currentProgress = 0;
var refreshRequested = false;
var transmissionOver = false;
var statusCount = 0;
// Template related variables
var $contentWrapper = $('.install-body').find('.main');
// Intercept form submits
interceptFormSubmit($('#install_install'));
/**
* Creates an XHR object
*
* jQuery cannot be used as the response is streamed, and
* as of now, jQuery does not provide access to the response until
* the connection is not closed.
*
* @return XMLHttpRequest
*/
function createXhrObject() {
return new XMLHttpRequest();
}
/**
* Displays error, warning and log messages
*
* @param type
* @param messages
*/
function addMessage(type, messages) {
// Get message containers
var $errorContainer = $('#error-container');
var $warningContainer = $('#warning-container');
var $logContainer = $('#log-container');
var $title, $description, $msgElement, arraySize = messages.length;
for (var i = 0; i < arraySize; i++) {
$msgElement = $('<div />');
$title = $('<strong />');
$title.text(messages[i].title);
$msgElement.append($title);
if (messages[i].hasOwnProperty('description')) {
$description = $('<p />');
$description.html(messages[i].description);
$msgElement.append($description);
}
switch (type) {
case 'error':
$msgElement.addClass('errorbox');
$errorContainer.append($msgElement);
break;
case 'warning':
$msgElement.addClass('warningbox');
$warningContainer.append($msgElement);
break;
case 'log':
$msgElement.addClass('log');
$logContainer.prepend($msgElement);
$logContainer.addClass('show_log_container');
break;
case 'success':
$msgElement.addClass('successbox');
$errorContainer.prepend($msgElement);
break;
}
}
}
/**
* Render a download box
*/
function addDownloadBox(downloadArray)
{
var $downloadContainer = $('#download-wrapper');
var $downloadBox, $title, $content, $link;
for (var i = 0; i < downloadArray.length; i++) {
$downloadBox = $('<div />');
$downloadBox.addClass('download-box');
$title = $('<strong />');
$title.text(downloadArray[i].title);
$downloadBox.append($title);
if (downloadArray[i].hasOwnProperty('msg')) {
$content = $('<p />');
$content.text(downloadArray[i].msg);
$downloadBox.append($content);
}
$link = $('<a />');
$link.addClass('button1');
$link.attr('href', downloadArray[i].href);
$link.text(downloadArray[i].download);
$downloadBox.append($link);
$downloadContainer.append($downloadBox);
}
}
/**
* Render update files' status
*/
function addUpdateFileStatus(fileStatus)
{
var $statusContainer = $('#file-status-wrapper');
$statusContainer.html(fileStatus);
}
/**
* Displays a form from the response
*
* @param formHtml
*/
function addForm(formHtml) {
var $formContainer = $('#form-wrapper');
$formContainer.html(formHtml);
var $form = $('#install_install');
interceptFormSubmit($form);
}
/**
* Handles navigation status updates
*
* @param navObj
*/
function updateNavbarStatus(navObj) {
var navID, $stage, $stageListItem, $active;
$active = $('#activemenu');
if (navObj.hasOwnProperty('finished')) {
// This should be an Array
var navItems = navObj.finished;
for (var i = 0; i < navItems.length; i++) {
navID = 'installer-stage-' + navItems[i];
$stage = $('#' + navID);
$stageListItem = $stage.parent();
if ($active.length && $active.is($stageListItem)) {
$active.removeAttr('id');
}
$stage.addClass('completed');
}
}
if (navObj.hasOwnProperty('active')) {
navID = 'installer-stage-' + navObj.active;
$stage = $('#' + navID);
$stageListItem = $stage.parent();
if ($active.length && !$active.is($stageListItem)) {
$active.removeAttr('id');
}
$stageListItem.attr('id', 'activemenu');
}
}
/**
* Renders progress bar
*
* @param progressObject
*/
function setProgress(progressObject) {
var $statusText, $progressBar, $progressText, $progressFiller, $progressFillerText;
if (progressObject.task_name.length) {
if (!progressBarTriggered) {
// Create progress bar
var $progressBarWrapper = $('#progress-bar-container');
// Create progress bar elements
$progressBar = $('<div />');
$progressBar.attr('id', 'progress-bar');
$progressText = $('<p />');
$progressText.attr('id', 'progress-bar-text');
$progressFiller = $('<div />');
$progressFiller.attr('id', 'progress-bar-filler');
$progressFillerText = $('<p />');
$progressFillerText.attr('id', 'progress-bar-filler-text');
$statusText = $('<p />');
$statusText.attr('id', 'progress-status-text');
$progressFiller.append($progressFillerText);
$progressBar.append($progressText);
$progressBar.append($progressFiller);
$progressBarWrapper.append($statusText);
$progressBarWrapper.append($progressBar);
$progressFillerText.css('width', $progressBar.width());
progressBarTriggered = true;
} else if (progressObject.hasOwnProperty('restart')) {
clearInterval(progressTimer);
$progressFiller = $('#progress-bar-filler');
$progressFillerText = $('#progress-bar-filler-text');
$progressText = $('#progress-bar-text');
$statusText = $('#progress-status-text');
$progressText.text('0%');
$progressFillerText.text('0%');
$progressFiller.css('width', '0%');
currentProgress = 0;
} else {
$statusText = $('#progress-status-text');
}
// Update progress bar
$statusText.text(progressObject.task_name + '…');
incrementProgressBar(Math.round(progressObject.task_num / progressObject.task_count * 100));
}
}
// Set cookies
function setCookies(cookies) {
var cookie;
for (var i = 0; i < cookies.length; i++) {
// Set cookie name and value
cookie = encodeURIComponent(cookies[i].name) + '=' + encodeURIComponent(cookies[i].value);
// Set path
cookie += '; path=/';
document.cookie = cookie;
}
}
// Redirects user
function redirect(url, use_ajax) {
if (use_ajax) {
resetPolling();
var xhReq = createXhrObject();
xhReq.open('GET', url, true);
xhReq.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
xhReq.send();
startPolling(xhReq);
} else {
window.location.href = url;
}
}
/**
* Parse messages from the response object
*
* @param messageJSON
*/
function parseMessage(messageJSON) {
$('#loading_indicator').css('display', 'none');
var responseObject;
try {
responseObject = JSON.parse(messageJSON);
} catch (err) {
if (window.console) {
console.log('Failed to parse JSON object\n\nMessage: ' + err.message + '\n\nServer Response: ' + messageJSON);
} else {
alert('Failed to parse JSON object\n\nMessage: ' + err.message + '\n\nServer Response: ' + messageJSON);
}
resetPolling();
return;
}
// Parse object
if (responseObject.hasOwnProperty('errors')) {
addMessage('error', responseObject.errors);
}
if (responseObject.hasOwnProperty('warnings')) {
addMessage('warning', responseObject.warnings);
}
if (responseObject.hasOwnProperty('logs')) {
addMessage('log', responseObject.logs);
}
if (responseObject.hasOwnProperty('success')) {
addMessage('success', responseObject.success);
}
if (responseObject.hasOwnProperty('form')) {
addForm(responseObject.form);
}
if (responseObject.hasOwnProperty('progress')) {
setProgress(responseObject.progress);
}
if (responseObject.hasOwnProperty('download')) {
addDownloadBox(responseObject.download);
}
if (responseObject.hasOwnProperty('file_status')) {
addUpdateFileStatus(responseObject.file_status);
}
if (responseObject.hasOwnProperty('nav')) {
updateNavbarStatus(responseObject.nav);
}
if (responseObject.hasOwnProperty('cookies')) {
setCookies(responseObject.cookies);
}
if (responseObject.hasOwnProperty('refresh')) {
refreshRequested = true;
}
if (responseObject.hasOwnProperty('redirect')) {
redirect(responseObject.redirect.url, responseObject.redirect.use_ajax);
}
if (responseObject.hasOwnProperty('over')) {
if (responseObject.over) {
transmissionOver = true;
}
}
}
/**
* Processes status data
*
* @param status
*/
function processTimeoutResponse(status) {
if (statusCount === 12) { // 1 minute hard cap
status = 'fail';
}
if (status === 'continue') {
refreshRequested = false;
doRefresh();
} else if (status === 'running') {
statusCount++;
$('#loading_indicator').css('display', 'block');
setTimeout(queryInstallerStatus, 5000);
} else {
$('#loading_indicator').css('display', 'none');
addMessage('error',
[{
title: installLang.title,
description: installLang.msg
}]
);
}
}
/**
* Queries the installer's status
*/
function queryInstallerStatus() {
var url = $(location).attr('pathname');
var lookUp = 'install/app.php';
var position = url.indexOf(lookUp);
if (position === -1) {
lookUp = 'install';
position = url.indexOf(lookUp);
if (position === -1) {
return false;
}
}
url = url.substring(0, position) + lookUp + '/installer/status';
$.getJSON(url, function(data) {
processTimeoutResponse(data.status);
});
}
/**
* Process updates in streamed response
*
* @param xhReq XHR object
*/
function pollContent(xhReq) {
var messages = xhReq.responseText;
var msgSeparator = '}\n\n';
var unprocessed, messageEndIndex, endOfMessageIndex, message;
do {
unprocessed = messages.substring(nextReadPosition);
messageEndIndex = unprocessed.indexOf(msgSeparator);
if (messageEndIndex !== -1) {
endOfMessageIndex = messageEndIndex + msgSeparator.length;
message = unprocessed.substring(0, endOfMessageIndex);
parseMessage($.trim(message));
nextReadPosition += endOfMessageIndex;
}
} while (messageEndIndex !== -1);
if (xhReq.readyState === 4) {
$('#loading_indicator').css('display', 'none');
resetPolling();
var timeoutDetected = !transmissionOver;
if (refreshRequested) {
refreshRequested = false;
doRefresh();
}
if (timeoutDetected) {
statusCount = 0;
queryInstallerStatus();
}
}
}
/**
* Animates the progress bar
*
* @param $progressText
* @param $progressFiller
* @param $progressFillerText
* @param progressLimit
*/
function incrementFiller($progressText, $progressFiller, $progressFillerText, progressLimit) {
if (currentProgress >= progressLimit || currentProgress >= 100) {
clearInterval(progressTimer);
return;
}
var $progressBar = $('#progress-bar');
currentProgress++;
$progressFillerText.css('width', $progressBar.width());
$progressFillerText.text(currentProgress + '%');
$progressText.text(currentProgress + '%');
$progressFiller.css('width', currentProgress + '%');
}
/**
* Wrapper function for progress bar rendering and animating
*
* @param progressLimit
*/
function incrementProgressBar(progressLimit) {
var $progressFiller = $('#progress-bar-filler');
var $progressFillerText = $('#progress-bar-filler-text');
var $progressText = $('#progress-bar-text');
var progressStart = $progressFiller.width() / $progressFiller.offsetParent().width() * 100;
currentProgress = Math.floor(progressStart);
clearInterval(progressTimer);
progressTimer = setInterval(function() {
incrementFiller($progressText, $progressFiller, $progressFillerText, progressLimit);
}, 10);
}
/**
* Resets the polling timer
*/
function resetPolling() {
clearInterval(pollTimer);
nextReadPosition = 0;
}
/**
* Sets up timer for processing the streamed HTTP response
*
* @param xhReq
*/
function startPolling(xhReq) {
resetPolling();
transmissionOver = false;
pollTimer = setInterval(function () {
pollContent(xhReq);
}, 250);
}
/**
* Refresh page
*/
function doRefresh() {
resetPolling();
var xhReq = createXhrObject();
xhReq.open('GET', $(location).attr('pathname'), true);
xhReq.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
xhReq.send();
startPolling(xhReq);
}
/**
* Renders the AJAX UI layout
*/
function setupAjaxLayout() {
progressBarTriggered = false;
// Clear content
$contentWrapper.html('');
var $header = $('<div />');
$header.attr('id', 'header-container');
$contentWrapper.append($header);
var $description = $('<div />');
$description.attr('id', 'description-container');
$contentWrapper.append($description);
var $errorContainer = $('<div />');
$errorContainer.attr('id', 'error-container');
$contentWrapper.append($errorContainer);
var $warningContainer = $('<div />');
$warningContainer.attr('id', 'warning-container');
$contentWrapper.append($warningContainer);
var $progressContainer = $('<div />');
$progressContainer.attr('id', 'progress-bar-container');
$contentWrapper.append($progressContainer);
var $logContainer = $('<div />');
$logContainer.attr('id', 'log-container');
$contentWrapper.append($logContainer);
var $installerContentWrapper = $('<div />');
$installerContentWrapper.attr('id', 'content-container');
$contentWrapper.append($installerContentWrapper);
var $installerDownloadWrapper = $('<div />');
$installerDownloadWrapper.attr('id', 'download-wrapper');
$installerContentWrapper.append($installerDownloadWrapper);
var $updaterFileStatusWrapper = $('<div />');
$updaterFileStatusWrapper.attr('id', 'file-status-wrapper');
$installerContentWrapper.append($updaterFileStatusWrapper);
var $formWrapper = $('<div />');
$formWrapper.attr('id', 'form-wrapper');
$installerContentWrapper.append($formWrapper);
var $spinner = $('<div />');
$spinner.attr('id', 'loading_indicator');
$spinner.html('&nbsp;');
$contentWrapper.append($spinner);
}
// Submits a form
function submitForm($form, $submitBtn) {
$form.css('display', 'none');
var xhReq = createXhrObject();
xhReq.open('POST', $form.attr('action'), true);
xhReq.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
xhReq.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xhReq.send(getFormFields($form, $submitBtn));
// Disable language selector
$('#language_selector :input, label').css('display', 'none');
// Clear content
setupAjaxLayout();
$('#loading_indicator').css('display', 'block');
startPolling(xhReq);
}
/**
* Add submit button to the POST information
*
* @param $form
* @param $submitBtn
*
* @returns {*}
*/
function getFormFields($form, $submitBtn) {
var formData = $form.serialize();
formData += ((formData.length) ? '&' : '') + encodeURIComponent($submitBtn.attr('name')) + '=';
formData += encodeURIComponent($submitBtn.attr('value'));
return formData;
}
/**
* Intercept form submit events and determine the submit button used
*
* @param $form
*/
function interceptFormSubmit($form) {
if (!$form.length) {
return;
}
$form.find(':submit').bind('click', function (event) {
event.preventDefault();
submitForm($form, $(this));
});
}
})(jQuery); // Avoid conflicts with other libraries

File diff suppressed because one or more lines are too long

View file

@ -21,6 +21,7 @@ if (php_sapi_name() != 'cli')
} }
define('IN_PHPBB', true); define('IN_PHPBB', true);
$phpbb_root_path = __DIR__ . '/../'; $phpbb_root_path = __DIR__ . '/../';
$phpEx = substr(strrchr(__FILE__, '.'), 1); $phpEx = substr(strrchr(__FILE__, '.'), 1);
require($phpbb_root_path . 'includes/startup.' . $phpEx); require($phpbb_root_path . 'includes/startup.' . $phpEx);
@ -32,38 +33,55 @@ $phpbb_class_loader->register();
$phpbb_config_php_file = new \phpbb\config_php_file($phpbb_root_path, $phpEx); $phpbb_config_php_file = new \phpbb\config_php_file($phpbb_root_path, $phpEx);
extract($phpbb_config_php_file->get_all()); extract($phpbb_config_php_file->get_all());
if (!defined('PHPBB_ENVIRONMENT'))
{
@define('PHPBB_ENVIRONMENT', 'production');
}
require($phpbb_root_path . 'includes/constants.' . $phpEx); require($phpbb_root_path . 'includes/constants.' . $phpEx);
require($phpbb_root_path . 'includes/functions.' . $phpEx); require($phpbb_root_path . 'includes/functions.' . $phpEx);
require($phpbb_root_path . 'includes/functions_admin.' . $phpEx); require($phpbb_root_path . 'includes/functions_admin.' . $phpEx);
require($phpbb_root_path . 'includes/utf/utf_tools.' . $phpEx); require($phpbb_root_path . 'includes/utf/utf_tools.' . $phpEx);
require($phpbb_root_path . 'includes/functions_compatibility.' . $phpEx);
$phpbb_container_builder = new \phpbb\di\container_builder($phpbb_config_php_file, $phpbb_root_path, $phpEx); $phpbb_container_builder = new \phpbb\di\container_builder($phpbb_root_path, $phpEx);
$phpbb_container_builder->set_dump_container(false); $phpbb_container = $phpbb_container_builder->with_config($phpbb_config_php_file);
$input = new ArgvInput(); $input = new ArgvInput();
if ($input->hasParameterOption(array('--env')))
{
$phpbb_container_builder->with_environment($input->getParameterOption('--env'));
}
if ($input->hasParameterOption(array('--safe-mode'))) if ($input->hasParameterOption(array('--safe-mode')))
{ {
$phpbb_container_builder->set_use_extensions(false); $phpbb_container_builder->without_extensions();
$phpbb_container_builder->set_dump_container(false); $phpbb_container_builder->without_cache();
} }
else else
{ {
$phpbb_class_loader_ext = new \phpbb\class_loader('\\', "{$phpbb_root_path}ext/", $phpEx); $phpbb_class_loader_ext = new \phpbb\class_loader('\\', "{$phpbb_root_path}ext/", $phpEx);
$phpbb_class_loader_ext->register(); $phpbb_class_loader_ext->register();
phpbb_load_extensions_autoloaders($phpbb_root_path);
} }
$phpbb_container = $phpbb_container_builder->get_container(); $phpbb_container = $phpbb_container_builder->get_container();
$phpbb_container->get('request')->enable_super_globals(); $phpbb_container->get('request')->enable_super_globals();
require($phpbb_root_path . 'includes/compatibility_globals.' . $phpEx); require($phpbb_root_path . 'includes/compatibility_globals.' . $phpEx);
register_compatibility_globals();
/** @var \phpbb\language\language $language */
$language = $phpbb_container->get('language');
$language->set_default_language($phpbb_container->get('config')['default_lang']);
$language->add_lang(array('common', 'acp/common', 'cli'));
/* @var $user \phpbb\user */
$user = $phpbb_container->get('user'); $user = $phpbb_container->get('user');
$user->data['user_id'] = ANONYMOUS; $user->data['user_id'] = ANONYMOUS;
$user->ip = '127.0.0.1'; $user->ip = '127.0.0.1';
$user->add_lang('acp/common');
$user->add_lang('cli');
$application = new \phpbb\console\application('phpBB Console', PHPBB_VERSION, $user); $application = new \phpbb\console\application('phpBB Console', PHPBB_VERSION, $language);
$application->setDispatcher($phpbb_container->get('dispatcher'));
$application->register_container_commands($phpbb_container->get('console.command_collection')); $application->register_container_commands($phpbb_container->get('console.command_collection'));
$application->run($input); $application->run($input);

View file

@ -12,7 +12,7 @@
*/ */
/** /**
* Minimum Requirement: PHP 5.3.3 * Minimum Requirement: PHP 5.4.0
*/ */
if (!defined('IN_PHPBB')) if (!defined('IN_PHPBB'))
@ -29,6 +29,11 @@ $phpbb_class_loader->register();
$phpbb_config_php_file = new \phpbb\config_php_file($phpbb_root_path, $phpEx); $phpbb_config_php_file = new \phpbb\config_php_file($phpbb_root_path, $phpEx);
extract($phpbb_config_php_file->get_all()); extract($phpbb_config_php_file->get_all());
if (!defined('PHPBB_ENVIRONMENT'))
{
@define('PHPBB_ENVIRONMENT', 'production');
}
if (!defined('PHPBB_INSTALLED')) if (!defined('PHPBB_INSTALLED'))
{ {
// Redirect the user to the installer // Redirect the user to the installer
@ -53,14 +58,14 @@ if (!defined('PHPBB_INSTALLED'))
} }
// $phpbb_root_path accounts for redirects from e.g. /adm // $phpbb_root_path accounts for redirects from e.g. /adm
$script_path = trim(dirname($script_name)) . '/' . $phpbb_root_path . 'install/index.' . $phpEx; $script_path = trim(dirname($script_name)) . '/' . $phpbb_root_path . 'install/app.' . $phpEx;
// Replace any number of consecutive backslashes and/or slashes with a single slash // Replace any number of consecutive backslashes and/or slashes with a single slash
// (could happen on some proxy setups and/or Windows servers) // (could happen on some proxy setups and/or Windows servers)
$script_path = preg_replace('#[\\\\/]{2,}#', '/', $script_path); $script_path = preg_replace('#[\\\\/]{2,}#', '/', $script_path);
// Eliminate . and .. from the path // Eliminate . and .. from the path
require($phpbb_root_path . 'phpbb/filesystem.' . $phpEx); require($phpbb_root_path . 'phpbb/filesystem.' . $phpEx);
$phpbb_filesystem = new phpbb\filesystem(); $phpbb_filesystem = new phpbb\filesystem\filesystem();
$script_path = $phpbb_filesystem->clean_path($script_path); $script_path = $phpbb_filesystem->clean_path($script_path);
$url = (($secure) ? 'https://' : 'http://') . $server_name; $url = (($secure) ? 'https://' : 'http://') . $server_name;
@ -91,26 +96,51 @@ include($phpbb_root_path . 'includes/functions_compatibility.' . $phpEx);
require($phpbb_root_path . 'includes/constants.' . $phpEx); require($phpbb_root_path . 'includes/constants.' . $phpEx);
require($phpbb_root_path . 'includes/utf/utf_tools.' . $phpEx); require($phpbb_root_path . 'includes/utf/utf_tools.' . $phpEx);
// Set PHP error handler to ours if (PHPBB_ENVIRONMENT === 'development')
set_error_handler(defined('PHPBB_MSG_HANDLER') ? PHPBB_MSG_HANDLER : 'msg_handler'); {
\phpbb\debug\debug::enable();
}
else
{
set_error_handler(defined('PHPBB_MSG_HANDLER') ? PHPBB_MSG_HANDLER : 'msg_handler');
}
$phpbb_class_loader_ext = new \phpbb\class_loader('\\', "{$phpbb_root_path}ext/", $phpEx); $phpbb_class_loader_ext = new \phpbb\class_loader('\\', "{$phpbb_root_path}ext/", $phpEx);
$phpbb_class_loader_ext->register(); $phpbb_class_loader_ext->register();
phpbb_load_extensions_autoloaders($phpbb_root_path);
// Set up container // Set up container
$phpbb_container_builder = new \phpbb\di\container_builder($phpbb_config_php_file, $phpbb_root_path, $phpEx); try
$phpbb_container = $phpbb_container_builder->get_container(); {
$phpbb_container_builder = new \phpbb\di\container_builder($phpbb_root_path, $phpEx);
$phpbb_container = $phpbb_container_builder->with_config($phpbb_config_php_file)->get_container();
}
catch (InvalidArgumentException $e)
{
if (PHPBB_ENVIRONMENT !== 'development')
{
trigger_error(
'The requested environment ' . PHPBB_ENVIRONMENT . ' is not available.',
E_USER_ERROR
);
}
else
{
throw $e;
}
}
$phpbb_class_loader->set_cache($phpbb_container->get('cache.driver')); $phpbb_class_loader->set_cache($phpbb_container->get('cache.driver'));
$phpbb_class_loader_ext->set_cache($phpbb_container->get('cache.driver')); $phpbb_class_loader_ext->set_cache($phpbb_container->get('cache.driver'));
require($phpbb_root_path . 'includes/compatibility_globals.' . $phpEx); require($phpbb_root_path . 'includes/compatibility_globals.' . $phpEx);
register_compatibility_globals();
// Add own hook handler // Add own hook handler
require($phpbb_root_path . 'includes/hooks/index.' . $phpEx); require($phpbb_root_path . 'includes/hooks/index.' . $phpEx);
$phpbb_hook = new phpbb_hook(array('exit_handler', 'phpbb_user_session_handler', 'append_sid', array('template', 'display'))); $phpbb_hook = new phpbb_hook(array('exit_handler', 'phpbb_user_session_handler', 'append_sid', array('template', 'display')));
/* @var $phpbb_hook_finder \phpbb\hook\finder */
$phpbb_hook_finder = $phpbb_container->get('hook_finder'); $phpbb_hook_finder = $phpbb_container->get('hook_finder');
foreach ($phpbb_hook_finder->find() as $hook) foreach ($phpbb_hook_finder->find() as $hook)

View file

@ -25,36 +25,51 @@
"phpbb/phpbb-core": "self.version" "phpbb/phpbb-core": "self.version"
}, },
"require": { "require": {
"php": ">=5.3.3,<7.0", "php": ">=5.4",
"lusitanian/oauth": "0.2.*", "bantu/ini-get-wrapper": "1.0.*",
"symfony/config": "2.3.*", "google/recaptcha": "~1.1",
"symfony/console": "2.3.*", "guzzlehttp/guzzle": "~5.3",
"symfony/dependency-injection": "2.3.*", "lusitanian/oauth": "^0.8.1",
"symfony/event-dispatcher": "2.3.*", "marc1706/fast-image-size": "^1.1",
"symfony/http-kernel": "2.3.*", "paragonie/random_compat": "^1.4",
"symfony/routing": "2.3.*", "patchwork/utf8": "^1.1",
"symfony/yaml": "2.3.*", "s9e/text-formatter": "~0.11.0",
"twig/twig": "^1.0,<1.25" "symfony/config": "^2.8",
"symfony/console": "^2.8",
"symfony/debug": "^2.8",
"symfony/dependency-injection": "^2.8",
"symfony/event-dispatcher": "^2.8",
"symfony/filesystem": "^2.8",
"symfony/finder": "^2.8",
"symfony/http-foundation": "^2.8",
"symfony/http-kernel": "^2.8",
"symfony/proxy-manager-bridge": "^2.8",
"symfony/routing": "^2.8",
"symfony/twig-bridge": "^2.8",
"symfony/yaml": "^2.8",
"twig/twig": "^1.0"
}, },
"require-dev": { "require-dev": {
"fabpot/goutte": "1.0.*", "fabpot/goutte": "~2.0",
"facebook/webdriver": "~1.1",
"laravel/homestead": "~2.2",
"phing/phing": "2.4.*", "phing/phing": "2.4.*",
"phpunit/dbunit": "1.3.*", "phpunit/dbunit": "1.3.*",
"phpunit/phpunit": "4.1.*", "phpunit/phpunit": "^4.1",
"sami/sami": "1.*", "sami/sami": "1.*",
"squizlabs/php_codesniffer": "2.*", "squizlabs/php_codesniffer": "2.*",
"symfony/browser-kit": "2.3.*", "symfony/browser-kit": "^2.8",
"symfony/css-selector": "2.3.*", "symfony/css-selector": "^2.8",
"symfony/debug": "2.3.*", "symfony/dom-crawler": "^2.8"
"symfony/dom-crawler": "2.3.*",
"symfony/filesystem": "2.3.*",
"symfony/finder": "2.3.*",
"symfony/http-foundation": "2.3.*",
"symfony/process": "2.3.*"
}, },
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "3.1.x-dev" "dev-master": "3.2.x-dev"
}
},
"config": {
"platform": {
"php": "5.4"
} }
} }
} }

2077
phpBB/composer.lock generated

File diff suppressed because it is too large Load diff

View file

@ -1,162 +0,0 @@
services:
console.command_collection:
class: phpbb\di\service_collection
arguments:
- @service_container
tags:
- { name: service_collection, tag: console.command }
console.command.cache.purge:
class: phpbb\console\command\cache\purge
arguments:
- @user
- @cache.driver
- @dbal.conn
- @auth
- @log
- @config
tags:
- { name: console.command }
console.command.config.delete:
class: phpbb\console\command\config\delete
arguments:
- @user
- @config
tags:
- { name: console.command }
console.command.config.increment:
class: phpbb\console\command\config\increment
arguments:
- @user
- @config
tags:
- { name: console.command }
console.command.config.get:
class: phpbb\console\command\config\get
arguments:
- @user
- @config
tags:
- { name: console.command }
console.command.config.set:
class: phpbb\console\command\config\set
arguments:
- @user
- @config
tags:
- { name: console.command }
console.command.config.set_atomic:
class: phpbb\console\command\config\set_atomic
arguments:
- @user
- @config
tags:
- { name: console.command }
console.command.cron.list:
class: phpbb\console\command\cron\cron_list
arguments:
- @user
- @cron.manager
tags:
- { name: console.command }
console.command.cron.run:
class: phpbb\console\command\cron\run
arguments:
- @user
- @cron.manager
- @cron.lock_db
tags:
- { name: console.command }
console.command.db.migrate:
class: phpbb\console\command\db\migrate
arguments:
- @user
- @migrator
- @ext.manager
- @config
- @cache
- @log
- %core.root_path%
tags:
- { name: console.command }
console.command.dev.migration_tips:
class: phpbb\console\command\dev\migration_tips
arguments:
- @user
- @ext.manager
tags:
- { name: console.command }
console.command.extension.disable:
class: phpbb\console\command\extension\disable
arguments:
- @user
- @ext.manager
- @log
tags:
- { name: console.command }
console.command.extension.enable:
class: phpbb\console\command\extension\enable
arguments:
- @user
- @ext.manager
- @log
tags:
- { name: console.command }
console.command.extension.purge:
class: phpbb\console\command\extension\purge
arguments:
- @user
- @ext.manager
- @log
tags:
- { name: console.command }
console.command.extension.show:
class: phpbb\console\command\extension\show
arguments:
- @user
- @ext.manager
- @log
tags:
- { name: console.command }
console.command.fixup.recalculate_email_hash:
class: phpbb\console\command\fixup\recalculate_email_hash
arguments:
- @user
- @dbal.conn
tags:
- { name: console.command }
console.command.fixup.update_hashes:
class: phpbb\console\command\fixup\update_hashes
arguments:
- @config
- @user
- @dbal.conn
- @passwords.manager
- @passwords.driver_collection
- %passwords.algorithms%
tags:
- { name: console.command }
console.command.fixup.fix_left_right_ids:
class: phpbb\console\command\fixup\fix_left_right_ids
arguments:
- @user
- @dbal.conn
- @cache.driver
tags:
- { name: console.command }

View file

@ -1,72 +0,0 @@
services:
content.visibility:
class: phpbb\content_visibility
arguments:
- @auth
- @config
- @dispatcher
- @dbal.conn
- @user
- %core.root_path%
- %core.php_ext%
- %tables.forums%
- %tables.posts%
- %tables.topics%
- %tables.users%
groupposition.legend:
class: phpbb\groupposition\legend
arguments:
- @dbal.conn
- @user
groupposition.teampage:
class: phpbb\groupposition\teampage
arguments:
- @dbal.conn
- @user
- @cache.driver
message.form.admin:
class: phpbb\message\admin_form
arguments:
- @auth
- @config
- @config_text
- @dbal.conn
- @user
- %core.root_path%
- %core.php_ext%
message.form.topic:
class: phpbb\message\topic_form
arguments:
- @auth
- @config
- @dbal.conn
- @user
- %core.root_path%
- %core.php_ext%
message.form.user:
class: phpbb\message\user_form
arguments:
- @auth
- @config
- @dbal.conn
- @user
- %core.root_path%
- %core.php_ext%
pagination:
class: phpbb\pagination
arguments:
- @template
- @user
- @controller.helper
- @dispatcher
viewonline_helper:
class: phpbb\viewonline_helper
arguments:
- @filesystem

View file

@ -1,162 +0,0 @@
services:
cron.manager:
class: phpbb\cron\manager
arguments:
- @cron.task_collection
- %core.root_path%
- %core.php_ext%
cron.lock_db:
class: phpbb\lock\db
arguments:
- cron_lock
- @config
- @dbal.conn
# ----- Cron tasks -----
cron.task_collection:
class: phpbb\di\service_collection
arguments:
- @service_container
tags:
- { name: service_collection, tag: cron.task }
cron.task.core.prune_all_forums:
class: phpbb\cron\task\core\prune_all_forums
arguments:
- %core.root_path%
- %core.php_ext%
- @config
- @dbal.conn
calls:
- [set_name, [cron.task.core.prune_all_forums]]
tags:
- { name: cron.task }
cron.task.core.prune_forum:
class: phpbb\cron\task\core\prune_forum
arguments:
- %core.root_path%
- %core.php_ext%
- @config
- @dbal.conn
calls:
- [set_name, [cron.task.core.prune_forum]]
tags:
- { name: cron.task }
cron.task.core.prune_shadow_topics:
class: phpbb\cron\task\core\prune_shadow_topics
arguments:
- %core.root_path%
- %core.php_ext%
- @config
- @dbal.conn
- @log
- @user
calls:
- [set_name, [cron.task.core.prune_shadow_topics]]
tags:
- { name: cron.task }
cron.task.core.prune_notifications:
class: phpbb\cron\task\core\prune_notifications
arguments:
- @config
- @notification_manager
calls:
- [set_name, [cron.task.core.prune_notifications]]
tags:
- { name: cron.task }
cron.task.core.queue:
class: phpbb\cron\task\core\queue
arguments:
- %core.root_path%
- %core.php_ext%
- @config
calls:
- [set_name, [cron.task.core.queue]]
tags:
- { name: cron.task }
cron.task.core.tidy_cache:
class: phpbb\cron\task\core\tidy_cache
arguments:
- @config
- @cache.driver
calls:
- [set_name, [cron.task.core.tidy_cache]]
tags:
- { name: cron.task }
cron.task.core.tidy_database:
class: phpbb\cron\task\core\tidy_database
arguments:
- %core.root_path%
- %core.php_ext%
- @config
calls:
- [set_name, [cron.task.core.tidy_database]]
tags:
- { name: cron.task }
cron.task.core.tidy_plupload:
class: phpbb\cron\task\core\tidy_plupload
arguments:
- %core.root_path%
- @config
calls:
- [set_name, [cron.task.core.tidy_plupload]]
tags:
- { name: cron.task }
cron.task.core.tidy_search:
class: phpbb\cron\task\core\tidy_search
arguments:
- %core.root_path%
- %core.php_ext%
- @auth
- @config
- @dbal.conn
- @user
- @dispatcher
calls:
- [set_name, [cron.task.core.tidy_search]]
tags:
- { name: cron.task }
cron.task.core.tidy_sessions:
class: phpbb\cron\task\core\tidy_sessions
arguments:
- @config
- @user
calls:
- [set_name, [cron.task.core.tidy_sessions]]
tags:
- { name: cron.task }
cron.task.core.tidy_warnings:
class: phpbb\cron\task\core\tidy_warnings
arguments:
- %core.root_path%
- %core.php_ext%
- @config
calls:
- [set_name, [cron.task.core.tidy_warnings]]
tags:
- { name: cron.task }
cron.task.core.update_hashes:
class: phpbb\cron\task\core\update_hashes
arguments:
- @config
- @dbal.conn
- @passwords.update.lock
- @passwords.manager
- @passwords.driver_collection
- %passwords.algorithms%
calls:
- [set_name, [cron.task.core.update_hashes]]
tags:
- { name: cron.task }

View file

@ -0,0 +1 @@
# phpBB's config file (This line is needed because of the packager)

View file

@ -0,0 +1,169 @@
imports:
- { resource: services_attachment.yml }
- { resource: services_auth.yml }
- { resource: services_avatar.yml }
- { resource: services_captcha.yml }
- { resource: services_console.yml }
- { resource: services_content.yml }
- { resource: services_cron.yml }
- { resource: services_db.yml }
- { resource: services_event.yml }
- { resource: services_feed.yml }
- { resource: services_files.yml }
- { resource: services_filesystem.yml }
- { resource: services_help.yml }
- { resource: services_hook.yml }
- { resource: services_http.yml }
- { resource: services_language.yml }
- { resource: services_migrator.yml }
- { resource: services_mimetype_guesser.yml }
- { resource: services_module.yml }
- { resource: services_notification.yml }
- { resource: services_password.yml }
- { resource: services_php.yml }
- { resource: services_profilefield.yml }
- { resource: services_report.yml }
- { resource: services_routing.yml }
- { resource: services_text_formatter.yml }
- { resource: services_text_reparser.yml }
- { resource: services_twig.yml }
- { resource: services_user.yml }
- { resource: tables.yml }
- { resource: parameters.yml }
services:
cache:
class: phpbb\cache\service
arguments:
- '@cache.driver'
- '@config'
- '@dbal.conn'
- '%core.root_path%'
- '%core.php_ext%'
cache.driver:
class: '%cache.driver.class%'
class_loader:
class: phpbb\class_loader
arguments:
- phpbb\
- '%core.root_path%includes/'
- '%core.php_ext%'
calls:
- [register, []]
- [set_cache, ['@cache.driver']]
class_loader.ext:
class: phpbb\class_loader
arguments:
- \
- '%core.root_path%ext/'
- '%core.php_ext%'
calls:
- [register, []]
- [set_cache, ['@cache.driver']]
config:
class: phpbb\config\db
arguments:
- '@dbal.conn'
- '@cache.driver'
- '%tables.config%'
config.php:
synthetic: true
config_text:
class: phpbb\config\db_text
arguments:
- '@dbal.conn'
- '%tables.config_text%'
controller.helper:
class: phpbb\controller\helper
arguments:
- '@template'
- '@user'
- '@config'
- '@symfony_request'
- '@request'
- '@routing.helper'
controller.resolver:
class: phpbb\controller\resolver
arguments:
- '@service_container'
- '%core.root_path%'
- '@template'
ext.manager:
class: phpbb\extension\manager
arguments:
- '@service_container'
- '@dbal.conn'
- '@config'
- '@filesystem'
- '%tables.ext%'
- '%core.root_path%'
- '%core.php_ext%'
- '@cache'
file_downloader:
class: phpbb\file_downloader
file_locator:
class: phpbb\routing\file_locator
arguments:
- '@filesystem'
- '%core.root_path%'
group_helper:
class: phpbb\group\helper
arguments:
- '@language'
log:
class: phpbb\log\log
arguments:
- '@dbal.conn'
- '@user'
- '@auth'
- '@dispatcher'
- '%core.root_path%'
- '%core.adm_relative_path%'
- '%core.php_ext%'
- '%tables.log%'
path_helper:
class: phpbb\path_helper
arguments:
- '@symfony_request'
- '@filesystem'
- '@request'
- '%core.root_path%'
- '%core.php_ext%'
- '%core.adm_relative_path%'
plupload:
class: phpbb\plupload\plupload
arguments:
- '%core.root_path%'
- '@config'
- '@request'
- '@user'
- '@php_ini'
- '@mimetype.guesser'
upload_imagesize:
class: FastImageSize\FastImageSize
version_helper:
class: phpbb\version_helper
shared: false
arguments:
- '@cache'
- '@config'
- '@file_downloader'
- '@user'

View file

@ -0,0 +1,40 @@
services:
attachment.delete:
class: phpbb\attachment\delete
shared: false
arguments:
- '@config'
- '@dbal.conn'
- '@dispatcher'
- '@filesystem'
- '@attachment.resync'
- '%core.root_path%'
attachment.manager:
class: phpbb\attachment\manager
shared: false
arguments:
- '@attachment.delete'
- '@attachment.resync'
- '@attachment.upload'
attachment.resync:
class: phpbb\attachment\resync
shared: false
arguments:
- '@dbal.conn'
attachment.upload:
class: phpbb\attachment\upload
shared: false
arguments:
- '@auth'
- '@cache'
- '@config'
- '@files.upload'
- '@language'
- '@mimetype.guesser'
- '@dispatcher'
- '@plupload'
- '@user'
- '%core.root_path%'

View file

@ -7,64 +7,65 @@ services:
auth.provider_collection: auth.provider_collection:
class: phpbb\auth\provider_collection class: phpbb\auth\provider_collection
arguments: arguments:
- @service_container - '@service_container'
- @config - '@config'
tags: tags:
- { name: service_collection, tag: auth.provider } - { name: service_collection, tag: auth.provider }
auth.provider.db: auth.provider.db:
class: phpbb\auth\provider\db class: phpbb\auth\provider\db
arguments: arguments:
- @dbal.conn - '@dbal.conn'
- @config - '@config'
- @passwords.manager - '@passwords.manager'
- @request - '@request'
- @user - '@user'
- @service_container - '@service_container'
- %core.root_path% - '%core.root_path%'
- %core.php_ext% - '%core.php_ext%'
tags: tags:
- { name: auth.provider } - { name: auth.provider }
auth.provider.apache: auth.provider.apache:
class: phpbb\auth\provider\apache class: phpbb\auth\provider\apache
arguments: arguments:
- @dbal.conn - '@dbal.conn'
- @config - '@config'
- @passwords.manager - '@passwords.manager'
- @request - '@request'
- @user - '@user'
- %core.root_path% - '%core.root_path%'
- %core.php_ext% - '%core.php_ext%'
tags: tags:
- { name: auth.provider } - { name: auth.provider }
auth.provider.ldap: auth.provider.ldap:
class: phpbb\auth\provider\ldap class: phpbb\auth\provider\ldap
arguments: arguments:
- @dbal.conn - '@dbal.conn'
- @config - '@config'
- @passwords.manager - '@passwords.manager'
- @user - '@user'
tags: tags:
- { name: auth.provider } - { name: auth.provider }
auth.provider.oauth: auth.provider.oauth:
class: phpbb\auth\provider\oauth\oauth class: phpbb\auth\provider\oauth\oauth
arguments: arguments:
- @dbal.conn - '@dbal.conn'
- @config - '@config'
- @passwords.manager - '@passwords.manager'
- @request - '@request'
- @user - '@user'
- %tables.auth_provider_oauth_token_storage% - '%tables.auth_provider_oauth_token_storage%'
- %tables.auth_provider_oauth_account_assoc% - '%tables.auth_provider_oauth_states%'
- @auth.provider.oauth.service_collection - '%tables.auth_provider_oauth_account_assoc%'
- %tables.users% - '@auth.provider.oauth.service_collection'
- @service_container - '%tables.users%'
- @dispatcher - '@service_container'
- %core.root_path% - '@dispatcher'
- %core.php_ext% - '%core.root_path%'
- '%core.php_ext%'
tags: tags:
- { name: auth.provider } - { name: auth.provider }
@ -72,30 +73,38 @@ services:
auth.provider.oauth.service_collection: auth.provider.oauth.service_collection:
class: phpbb\di\service_collection class: phpbb\di\service_collection
arguments: arguments:
- @service_container - '@service_container'
tags: tags:
- { name: service_collection, tag: auth.provider.oauth.service } - { name: service_collection, tag: auth.provider.oauth.service }
auth.provider.oauth.service.bitly: auth.provider.oauth.service.bitly:
class: phpbb\auth\provider\oauth\service\bitly class: phpbb\auth\provider\oauth\service\bitly
arguments: arguments:
- @config - '@config'
- @request - '@request'
tags: tags:
- { name: auth.provider.oauth.service } - { name: auth.provider.oauth.service }
auth.provider.oauth.service.facebook: auth.provider.oauth.service.facebook:
class: phpbb\auth\provider\oauth\service\facebook class: phpbb\auth\provider\oauth\service\facebook
arguments: arguments:
- @config - '@config'
- @request - '@request'
tags: tags:
- { name: auth.provider.oauth.service } - { name: auth.provider.oauth.service }
auth.provider.oauth.service.google: auth.provider.oauth.service.google:
class: phpbb\auth\provider\oauth\service\google class: phpbb\auth\provider\oauth\service\google
arguments: arguments:
- @config - '@config'
- @request - '@request'
tags:
- { name: auth.provider.oauth.service }
auth.provider.oauth.service.twitter:
class: phpbb\auth\provider\oauth\service\twitter
arguments:
- '@config'
- '@request'
tags: tags:
- { name: auth.provider.oauth.service } - { name: auth.provider.oauth.service }

View file

@ -2,25 +2,26 @@ services:
avatar.manager: avatar.manager:
class: phpbb\avatar\manager class: phpbb\avatar\manager
arguments: arguments:
- @config - '@config'
- @avatar.driver_collection - '@avatar.driver_collection'
# ----- Avatar drivers ----- # ----- Avatar drivers -----
avatar.driver_collection: avatar.driver_collection:
class: phpbb\di\service_collection class: phpbb\di\service_collection
arguments: arguments:
- @service_container - '@service_container'
tags: tags:
- { name: service_collection, tag: avatar.driver } - { name: service_collection, tag: avatar.driver }
avatar.driver.gravatar: avatar.driver.gravatar:
class: phpbb\avatar\driver\gravatar class: phpbb\avatar\driver\gravatar
arguments: arguments:
- @config - '@config'
- %core.root_path% - '@upload_imagesize'
- %core.php_ext% - '%core.root_path%'
- @path_helper - '%core.php_ext%'
- @cache.driver - '@path_helper'
- '@cache.driver'
calls: calls:
- [set_name, [avatar.driver.gravatar]] - [set_name, [avatar.driver.gravatar]]
tags: tags:
@ -29,11 +30,12 @@ services:
avatar.driver.local: avatar.driver.local:
class: phpbb\avatar\driver\local class: phpbb\avatar\driver\local
arguments: arguments:
- @config - '@config'
- %core.root_path% - '@upload_imagesize'
- %core.php_ext% - '%core.root_path%'
- @path_helper - '%core.php_ext%'
- @cache.driver - '@path_helper'
- '@cache.driver'
calls: calls:
- [set_name, [avatar.driver.local]] - [set_name, [avatar.driver.local]]
tags: tags:
@ -42,11 +44,12 @@ services:
avatar.driver.remote: avatar.driver.remote:
class: phpbb\avatar\driver\remote class: phpbb\avatar\driver\remote
arguments: arguments:
- @config - '@config'
- %core.root_path% - '@upload_imagesize'
- %core.php_ext% - '%core.root_path%'
- @path_helper - '%core.php_ext%'
- @cache.driver - '@path_helper'
- '@cache.driver'
calls: calls:
- [set_name, [avatar.driver.remote]] - [set_name, [avatar.driver.remote]]
tags: tags:
@ -55,13 +58,14 @@ services:
avatar.driver.upload: avatar.driver.upload:
class: phpbb\avatar\driver\upload class: phpbb\avatar\driver\upload
arguments: arguments:
- @config - '@config'
- %core.root_path% - '%core.root_path%'
- %core.php_ext% - '%core.php_ext%'
- @path_helper - '@filesystem'
- @mimetype.guesser - '@path_helper'
- @dispatcher - '@dispatcher'
- @cache.driver - '@files.factory'
- '@cache.driver'
calls: calls:
- [set_name, [avatar.driver.upload]] - [set_name, [avatar.driver.upload]]
tags: tags:

View file

@ -2,21 +2,21 @@ services:
captcha.factory: captcha.factory:
class: phpbb\captcha\factory class: phpbb\captcha\factory
arguments: arguments:
- @service_container - '@service_container'
- @captcha.plugins.service_collection - '@captcha.plugins.service_collection'
# ----- Captcha plugins ----- # ----- Captcha plugins -----
# Scope MUST be prototype for all the plugins to work. # Service MUST NOT be shared for all the plugins to work.
captcha.plugins.service_collection: captcha.plugins.service_collection:
class: phpbb\di\service_collection class: phpbb\di\service_collection
arguments: arguments:
- @service_container - '@service_container'
tags: tags:
- { name: service_collection, tag: captcha.plugins } - { name: service_collection, tag: captcha.plugins }
core.captcha.plugins.gd: core.captcha.plugins.gd:
class: phpbb\captcha\plugins\gd class: phpbb\captcha\plugins\gd
scope: prototype shared: false
calls: calls:
- [set_name, [core.captcha.plugins.gd]] - [set_name, [core.captcha.plugins.gd]]
tags: tags:
@ -24,7 +24,7 @@ services:
core.captcha.plugins.gd_wave: core.captcha.plugins.gd_wave:
class: phpbb\captcha\plugins\gd_wave class: phpbb\captcha\plugins\gd_wave
scope: prototype shared: false
calls: calls:
- [set_name, [core.captcha.plugins.gd_wave]] - [set_name, [core.captcha.plugins.gd_wave]]
tags: tags:
@ -32,7 +32,7 @@ services:
core.captcha.plugins.nogd: core.captcha.plugins.nogd:
class: phpbb\captcha\plugins\nogd class: phpbb\captcha\plugins\nogd
scope: prototype shared: false
calls: calls:
- [set_name, [core.captcha.plugins.nogd]] - [set_name, [core.captcha.plugins.nogd]]
tags: tags:
@ -40,11 +40,11 @@ services:
core.captcha.plugins.qa: core.captcha.plugins.qa:
class: phpbb\captcha\plugins\qa class: phpbb\captcha\plugins\qa
scope: prototype shared: false
arguments: arguments:
- %tables.captcha_qa_questions% - '%tables.captcha_qa_questions%'
- %tables.captcha_qa_answers% - '%tables.captcha_qa_answers%'
- %tables.captcha_qa_confirm% - '%tables.captcha_qa_confirm%'
calls: calls:
- [set_name, [core.captcha.plugins.qa]] - [set_name, [core.captcha.plugins.qa]]
tags: tags:
@ -52,7 +52,7 @@ services:
core.captcha.plugins.recaptcha: core.captcha.plugins.recaptcha:
class: phpbb\captcha\plugins\recaptcha class: phpbb\captcha\plugins\recaptcha
scope: prototype shared: false
calls: calls:
- [set_name, [core.captcha.plugins.recaptcha]] - [set_name, [core.captcha.plugins.recaptcha]]
tags: tags:

View file

@ -0,0 +1,294 @@
services:
console.exception_subscriber:
class: phpbb\console\exception_subscriber
arguments:
- '@language'
- '%debug.exceptions%'
tags:
- { name: kernel.event_subscriber }
console.command_collection:
class: phpbb\di\service_collection
arguments:
- '@service_container'
tags:
- { name: service_collection, tag: console.command }
console.command.cache.purge:
class: phpbb\console\command\cache\purge
arguments:
- '@user'
- '@cache.driver'
- '@dbal.conn'
- '@auth'
- '@log'
- '@config'
tags:
- { name: console.command }
console.command.config.delete:
class: phpbb\console\command\config\delete
arguments:
- '@user'
- '@config'
tags:
- { name: console.command }
console.command.config.increment:
class: phpbb\console\command\config\increment
arguments:
- '@user'
- '@config'
tags:
- { name: console.command }
console.command.config.get:
class: phpbb\console\command\config\get
arguments:
- '@user'
- '@config'
tags:
- { name: console.command }
console.command.config.set:
class: phpbb\console\command\config\set
arguments:
- '@user'
- '@config'
tags:
- { name: console.command }
console.command.config.set_atomic:
class: phpbb\console\command\config\set_atomic
arguments:
- '@user'
- '@config'
tags:
- { name: console.command }
console.command.cron.list:
class: phpbb\console\command\cron\cron_list
arguments:
- '@user'
- '@cron.manager'
tags:
- { name: console.command }
console.command.cron.run:
class: phpbb\console\command\cron\run
arguments:
- '@user'
- '@cron.manager'
- '@cron.lock_db'
tags:
- { name: console.command }
console.command.db.list:
class: phpbb\console\command\db\list_command
arguments:
- '@user'
- '@migrator'
- '@ext.manager'
- '@config'
- '@cache'
tags:
- { name: console.command }
console.command.db.migrate:
class: phpbb\console\command\db\migrate
arguments:
- '@user'
- '@language'
- '@migrator'
- '@ext.manager'
- '@config'
- '@cache'
- '@log'
- '@filesystem'
- '%core.root_path%'
tags:
- { name: console.command }
console.command.db.revert:
class: phpbb\console\command\db\revert
parent: console.command.db.migrate
tags:
- { name: console.command }
console.command.dev.migration_tips:
class: phpbb\console\command\dev\migration_tips
arguments:
- '@user'
- '@ext.manager'
tags:
- { name: console.command }
console.command.extension.disable:
class: phpbb\console\command\extension\disable
arguments:
- '@user'
- '@ext.manager'
- '@log'
tags:
- { name: console.command }
console.command.extension.enable:
class: phpbb\console\command\extension\enable
arguments:
- '@user'
- '@ext.manager'
- '@log'
tags:
- { name: console.command }
console.command.extension.purge:
class: phpbb\console\command\extension\purge
arguments:
- '@user'
- '@ext.manager'
- '@log'
tags:
- { name: console.command }
console.command.extension.show:
class: phpbb\console\command\extension\show
arguments:
- '@user'
- '@ext.manager'
- '@log'
tags:
- { name: console.command }
console.command.fixup.recalculate_email_hash:
class: phpbb\console\command\fixup\recalculate_email_hash
arguments:
- '@user'
- '@dbal.conn'
tags:
- { name: console.command }
console.command.fixup.update_hashes:
class: phpbb\console\command\fixup\update_hashes
arguments:
- '@config'
- '@user'
- '@dbal.conn'
- '@passwords.manager'
- '@passwords.driver_collection'
- '%passwords.algorithms%'
tags:
- { name: console.command }
console.command.fixup.fix_left_right_ids:
class: phpbb\console\command\fixup\fix_left_right_ids
arguments:
- '@user'
- '@dbal.conn'
- '@cache.driver'
tags:
- { name: console.command }
console.command.reparser.list:
class: phpbb\console\command\reparser\list_all
arguments:
- '@user'
- '@text_reparser_collection'
tags:
- { name: console.command }
console.command.reparser.reparse:
class: phpbb\console\command\reparser\reparse
arguments:
- '@user'
- '@text_reparser.lock'
- '@text_reparser.manager'
- '@text_reparser_collection'
tags:
- { name: console.command }
console.command.thumbnail.delete:
class: phpbb\console\command\thumbnail\delete
arguments:
- '@user'
- '@dbal.conn'
- '%core.root_path%'
tags:
- { name: console.command }
console.command.thumbnail.generate:
class: phpbb\console\command\thumbnail\generate
arguments:
- '@user'
- '@dbal.conn'
- '@cache'
- '%core.root_path%'
- '%core.php_ext%'
tags:
- { name: console.command }
console.command.thumbnail.recreate:
class: phpbb\console\command\thumbnail\recreate
arguments:
- '@user'
tags:
- { name: console.command }
console.command.update.check:
class: phpbb\console\command\update\check
arguments:
- '@user'
- '@config'
- '@service_container'
- '@language'
tags:
- { name: console.command }
console.command.user.activate:
class: phpbb\console\command\user\activate
arguments:
- '@user'
- '@dbal.conn'
- '@config'
- '@language'
- '@log'
- '@notification_manager'
- '@user_loader'
- '%core.root_path%'
- '%core.php_ext%'
tags:
- { name: console.command }
console.command.user.add:
class: phpbb\console\command\user\add
arguments:
- '@user'
- '@dbal.conn'
- '@config'
- '@language'
- '@passwords.manager'
- '%core.root_path%'
- '%core.php_ext%'
tags:
- { name: console.command }
console.command.user.delete:
class: phpbb\console\command\user\delete
arguments:
- '@user'
- '@dbal.conn'
- '@language'
- '@log'
- '@user_loader'
- '%core.root_path%'
- '%core.php_ext%'
tags:
- { name: console.command }
console.command.user.reclean:
class: phpbb\console\command\user\reclean
arguments:
- '@user'
- '@dbal.conn'
- '@language'
tags:
- { name: console.command }

View file

@ -0,0 +1,72 @@
services:
content.visibility:
class: phpbb\content_visibility
arguments:
- '@auth'
- '@config'
- '@dispatcher'
- '@dbal.conn'
- '@user'
- '%core.root_path%'
- '%core.php_ext%'
- '%tables.forums%'
- '%tables.posts%'
- '%tables.topics%'
- '%tables.users%'
groupposition.legend:
class: phpbb\groupposition\legend
arguments:
- '@dbal.conn'
- '@user'
groupposition.teampage:
class: phpbb\groupposition\teampage
arguments:
- '@dbal.conn'
- '@user'
- '@cache.driver'
message.form.admin:
class: phpbb\message\admin_form
arguments:
- '@auth'
- '@config'
- '@config_text'
- '@dbal.conn'
- '@user'
- '%core.root_path%'
- '%core.php_ext%'
message.form.topic:
class: phpbb\message\topic_form
arguments:
- '@auth'
- '@config'
- '@dbal.conn'
- '@user'
- '%core.root_path%'
- '%core.php_ext%'
message.form.user:
class: phpbb\message\user_form
arguments:
- '@auth'
- '@config'
- '@dbal.conn'
- '@user'
- '%core.root_path%'
- '%core.php_ext%'
pagination:
class: phpbb\pagination
arguments:
- '@template'
- '@user'
- '@controller.helper'
- '@dispatcher'
viewonline_helper:
class: phpbb\viewonline_helper
arguments:
- '@filesystem'

View file

@ -0,0 +1,235 @@
services:
cron.manager:
class: phpbb\cron\manager
arguments:
- '@cron.task_collection'
- '%core.root_path%'
- '%core.php_ext%'
cron.lock_db:
class: phpbb\lock\db
arguments:
- cron_lock
- '@config'
- '@dbal.conn'
# ----- Cron tasks -----
cron.task_collection:
class: phpbb\di\service_collection
arguments:
- '@service_container'
tags:
- { name: service_collection, tag: cron.task }
cron.task.core.prune_all_forums:
class: phpbb\cron\task\core\prune_all_forums
arguments:
- '%core.root_path%'
- '%core.php_ext%'
- '@config'
- '@dbal.conn'
calls:
- [set_name, [cron.task.core.prune_all_forums]]
tags:
- { name: cron.task }
cron.task.core.prune_forum:
class: phpbb\cron\task\core\prune_forum
arguments:
- '%core.root_path%'
- '%core.php_ext%'
- '@config'
- '@dbal.conn'
calls:
- [set_name, [cron.task.core.prune_forum]]
tags:
- { name: cron.task }
cron.task.core.prune_shadow_topics:
class: phpbb\cron\task\core\prune_shadow_topics
arguments:
- '%core.root_path%'
- '%core.php_ext%'
- '@config'
- '@dbal.conn'
- '@log'
- '@user'
calls:
- [set_name, [cron.task.core.prune_shadow_topics]]
tags:
- { name: cron.task }
cron.task.core.prune_notifications:
class: phpbb\cron\task\core\prune_notifications
arguments:
- '@config'
- '@notification_manager'
calls:
- [set_name, [cron.task.core.prune_notifications]]
tags:
- { name: cron.task }
cron.task.core.queue:
class: phpbb\cron\task\core\queue
arguments:
- '%core.root_path%'
- '%core.php_ext%'
- '@config'
- '%core.cache_dir%'
calls:
- [set_name, [cron.task.core.queue]]
tags:
- { name: cron.task }
cron.task.core.tidy_cache:
class: phpbb\cron\task\core\tidy_cache
arguments:
- '@config'
- '@cache.driver'
calls:
- [set_name, [cron.task.core.tidy_cache]]
tags:
- { name: cron.task }
cron.task.core.tidy_database:
class: phpbb\cron\task\core\tidy_database
arguments:
- '%core.root_path%'
- '%core.php_ext%'
- '@config'
calls:
- [set_name, [cron.task.core.tidy_database]]
tags:
- { name: cron.task }
cron.task.core.tidy_plupload:
class: phpbb\cron\task\core\tidy_plupload
arguments:
- '%core.root_path%'
- '@config'
- '@log'
- '@user'
calls:
- [set_name, [cron.task.core.tidy_plupload]]
tags:
- { name: cron.task }
cron.task.core.tidy_search:
class: phpbb\cron\task\core\tidy_search
arguments:
- '%core.root_path%'
- '%core.php_ext%'
- '@auth'
- '@config'
- '@dbal.conn'
- '@user'
- '@dispatcher'
calls:
- [set_name, [cron.task.core.tidy_search]]
tags:
- { name: cron.task }
cron.task.core.tidy_sessions:
class: phpbb\cron\task\core\tidy_sessions
arguments:
- '@config'
- '@user'
calls:
- [set_name, [cron.task.core.tidy_sessions]]
tags:
- { name: cron.task }
cron.task.core.tidy_warnings:
class: phpbb\cron\task\core\tidy_warnings
arguments:
- '%core.root_path%'
- '%core.php_ext%'
- '@config'
calls:
- [set_name, [cron.task.core.tidy_warnings]]
tags:
- { name: cron.task }
cron.task.text_reparser.pm_text:
class: phpbb\cron\task\text_reparser\reparser
arguments:
- '@config'
- '@config_text'
- '@text_reparser.lock'
- '@text_reparser.manager'
- '@text_reparser_collection'
calls:
- [set_name, [cron.task.text_reparser.pm_text]]
- [set_reparser, [text_reparser.pm_text]]
tags:
- { name: cron.task }
cron.task.text_reparser.poll_option:
class: phpbb\cron\task\text_reparser\reparser
arguments:
- '@config'
- '@config_text'
- '@text_reparser.lock'
- '@text_reparser.manager'
- '@text_reparser_collection'
calls:
- [set_name, [cron.task.text_reparser.poll_option]]
- [set_reparser, [text_reparser.poll_option]]
tags:
- { name: cron.task }
cron.task.text_reparser.poll_title:
class: phpbb\cron\task\text_reparser\reparser
arguments:
- '@config'
- '@config_text'
- '@text_reparser.lock'
- '@text_reparser.manager'
- '@text_reparser_collection'
calls:
- [set_name, [cron.task.text_reparser.poll_title]]
- [set_reparser, [text_reparser.poll_title]]
tags:
- { name: cron.task }
cron.task.text_reparser.post_text:
class: phpbb\cron\task\text_reparser\reparser
arguments:
- '@config'
- '@config_text'
- '@text_reparser.lock'
- '@text_reparser.manager'
- '@text_reparser_collection'
calls:
- [set_name, [cron.task.text_reparser.post_text]]
- [set_reparser, [text_reparser.post_text]]
tags:
- { name: cron.task }
cron.task.text_reparser.user_signature:
class: phpbb\cron\task\text_reparser\reparser
arguments:
- '@config'
- '@config_text'
- '@text_reparser.lock'
- '@text_reparser.manager'
- '@text_reparser_collection'
calls:
- [set_name, [cron.task.text_reparser.user_signature]]
- [set_reparser, [text_reparser.user_signature]]
tags:
- { name: cron.task }
cron.task.core.update_hashes:
class: phpbb\cron\task\core\update_hashes
arguments:
- '@config'
- '@dbal.conn'
- '@passwords.update.lock'
- '@passwords.manager'
- '@passwords.driver_collection'
- '%passwords.algorithms%'
calls:
- [set_name, [cron.task.core.update_hashes]]
tags:
- { name: cron.task }

View file

@ -0,0 +1,71 @@
services:
dbal.conn:
class: phpbb\db\driver\factory
arguments:
- '@service_container'
dbal.conn.driver:
synthetic: true
# ----- DB Tools -----
dbal.tools.factory:
class: phpbb\db\tools\factory
dbal.tools:
class: phpbb\db\tools\tools_interface
factory: ['@dbal.tools.factory', get]
arguments:
- '@dbal.conn.driver'
# ----- DB Extractor -----
dbal.extractor.factory:
class: phpbb\db\extractor\factory
arguments:
- '@dbal.conn.driver'
- '@service_container'
dbal.extractor:
class: phpbb\db\extractor\extractor_interface
factory: ['@dbal.extractor.factory', get]
# ----- DB Extractors for different drivers -----
# Service MUST NOT be shared for all the handlers to work correctly.
dbal.extractor.extractors.mssql_extractor:
class: phpbb\db\extractor\mssql_extractor
shared: false
arguments:
- '%core.root_path%'
- '@request'
- '@dbal.conn.driver'
dbal.extractor.extractors.mysql_extractor:
class: phpbb\db\extractor\mysql_extractor
shared: false
arguments:
- '%core.root_path%'
- '@request'
- '@dbal.conn.driver'
dbal.extractor.extractors.oracle_extractor:
class: phpbb\db\extractor\oracle_extractor
shared: false
arguments:
- '%core.root_path%'
- '@request'
- '@dbal.conn.driver'
dbal.extractor.extractors.postgres_extractor:
class: phpbb\db\extractor\postgres_extractor
shared: false
arguments:
- '%core.root_path%'
- '@request'
- '@dbal.conn.driver'
dbal.extractor.extractors.sqlite3_extractor:
class: phpbb\db\extractor\sqlite3_extractor
shared: false
arguments:
- '%core.root_path%'
- '@request'
- '@dbal.conn.driver'

View file

@ -2,29 +2,14 @@ services:
dispatcher: dispatcher:
class: phpbb\event\dispatcher class: phpbb\event\dispatcher
arguments: arguments:
- @service_container - '@service_container'
hook_finder:
class: phpbb\hook\finder
arguments:
- %core.root_path%
- %core.php_ext%
- @cache.driver
kernel_request_subscriber:
class: phpbb\event\kernel_request_subscriber
arguments:
- @ext.manager
- %core.root_path%
- %core.php_ext%
tags:
- { name: kernel.event_subscriber }
kernel_exception_subscriber: kernel_exception_subscriber:
class: phpbb\event\kernel_exception_subscriber class: phpbb\event\kernel_exception_subscriber
arguments: arguments:
- @template - '@template'
- @user - '@language'
- '%debug.exceptions%'
tags: tags:
- { name: kernel.event_subscriber } - { name: kernel.event_subscriber }

View file

@ -0,0 +1,121 @@
services:
phpbb.feed.controller:
class: phpbb\feed\controller\feed
arguments:
- '@template.twig.environment'
- '@symfony_request'
- '@controller.helper'
- '@config'
- '@dbal.conn'
- '@service_container'
- '@feed.helper'
- '@user'
- '@auth'
- '@dispatcher'
- '%core.php_ext%'
feed.helper:
class: phpbb\feed\helper
arguments:
- '@config'
- '@user'
- '%core.root_path%'
- '%core.php_ext%'
feed.forum:
class: phpbb\feed\forum
shared: false
arguments:
- '@feed.helper'
- '@config'
- '@dbal.conn'
- '@cache.driver'
- '@user'
- '@auth'
- '@content.visibility'
- '@dispatcher'
- '%core.php_ext%'
feed.forums:
class: phpbb\feed\forums
shared: false
arguments:
- '@feed.helper'
- '@config'
- '@dbal.conn'
- '@cache.driver'
- '@user'
- '@auth'
- '@content.visibility'
- '@dispatcher'
- '%core.php_ext%'
feed.news:
class: phpbb\feed\news
shared: false
arguments:
- '@feed.helper'
- '@config'
- '@dbal.conn'
- '@cache.driver'
- '@user'
- '@auth'
- '@content.visibility'
- '@dispatcher'
- '%core.php_ext%'
feed.overall:
class: phpbb\feed\overall
shared: false
arguments:
- '@feed.helper'
- '@config'
- '@dbal.conn'
- '@cache.driver'
- '@user'
- '@auth'
- '@content.visibility'
- '@dispatcher'
- '%core.php_ext%'
feed.topic:
class: phpbb\feed\topic
shared: false
arguments:
- '@feed.helper'
- '@config'
- '@dbal.conn'
- '@cache.driver'
- '@user'
- '@auth'
- '@content.visibility'
- '@dispatcher'
- '%core.php_ext%'
feed.topics:
class: phpbb\feed\topics
shared: false
arguments:
- '@feed.helper'
- '@config'
- '@dbal.conn'
- '@cache.driver'
- '@user'
- '@auth'
- '@content.visibility'
- '@dispatcher'
- '%core.php_ext%'
feed.topics_active:
class: phpbb\feed\topics_active
shared: false
arguments:
- '@feed.helper'
- '@config'
- '@dbal.conn'
- '@cache.driver'
- '@user'
- '@auth'
- '@content.visibility'
- '@dispatcher'
- '%core.php_ext%'

View file

@ -0,0 +1,57 @@
services:
files.factory:
class: phpbb\files\factory
arguments:
- '@service_container'
files.filespec:
class: phpbb\files\filespec
shared: false
arguments:
- '@filesystem'
- '@language'
- '@php_ini'
- '@upload_imagesize'
- '%core.root_path%'
- '@mimetype.guesser'
- '@plupload'
files.upload:
class: phpbb\files\upload
shared: false
arguments:
- '@filesystem'
- '@files.factory'
- '@language'
- '@php_ini'
- '@request'
files.types.form:
class: phpbb\files\types\form
shared: false
arguments:
- '@files.factory'
- '@language'
- '@php_ini'
- '@plupload'
- '@request'
files.types.local:
class: phpbb\files\types\local
shared: false
arguments:
- '@files.factory'
- '@language'
- '@php_ini'
- '@request'
files.types.remote:
class: phpbb\files\types\remote
shared: false
arguments:
- '@config'
- '@files.factory'
- '@language'
- '@php_ini'
- '@request'
- '%core.root_path%'

View file

@ -0,0 +1,3 @@
services:
filesystem:
class: phpbb\filesystem\filesystem

View file

@ -0,0 +1,27 @@
services:
phpbb.help.manager:
class: phpbb\help\manager
arguments:
- '@dispatcher'
- '@language'
- '@template'
phpbb.help.controller.bbcode:
class: phpbb\help\controller\bbcode
arguments:
- '@controller.helper'
- '@phpbb.help.manager'
- '@template'
- '@language'
- '%core.root_path%'
- '%core.php_ext%'
phpbb.help.controller.faq:
class: phpbb\help\controller\faq
arguments:
- '@controller.helper'
- '@phpbb.help.manager'
- '@template'
- '@language'
- '%core.root_path%'
- '%core.php_ext%'

View file

@ -0,0 +1,7 @@
services:
hook_finder:
class: phpbb\hook\finder
arguments:
- '%core.root_path%'
- '%core.php_ext%'
- '@cache.driver'

View file

@ -0,0 +1,23 @@
services:
http_kernel:
class: Symfony\Component\HttpKernel\HttpKernel
arguments:
- '@dispatcher'
- '@controller.resolver'
- '@request_stack'
# WARNING: The Symfony request does not escape the input and should be used very carefully
# prefer the phpbb request (service @request) as possible
symfony_request:
class: phpbb\symfony_request
arguments:
- '@request'
request_stack:
class: Symfony\Component\HttpFoundation\RequestStack
request:
class: phpbb\request\request
arguments:
- null
- '%core.disable_super_globals%'

View file

@ -0,0 +1,22 @@
services:
language.helper.language_file:
class: phpbb\language\language_file_helper
arguments:
- '%core.root_path%'
language:
class: phpbb\language\language
arguments:
- '@language.loader'
language.loader_abstract:
abstract: true
class: phpbb\language\language_file_loader
arguments:
- '%core.root_path%'
- '%core.php_ext%'
language.loader:
parent: language.loader_abstract
calls:
- [set_extension_manager, ['@ext.manager']]

View file

@ -1,31 +1,18 @@
services: services:
dbal.conn:
class: phpbb\db\driver\factory
arguments:
- @service_container
dbal.conn.driver:
synthetic: true
dbal.tools:
class: phpbb\db\tools
arguments:
- @dbal.conn
# ----- Migrator ----- # ----- Migrator -----
migrator: migrator:
class: phpbb\db\migrator class: phpbb\db\migrator
arguments: arguments:
- @service_container - '@service_container'
- @config - '@config'
- @dbal.conn - '@dbal.conn'
- @dbal.tools - '@dbal.tools'
- %tables.migrations% - '%tables.migrations%'
- %core.root_path% - '%core.root_path%'
- %core.php_ext% - '%core.php_ext%'
- %core.table_prefix% - '%core.table_prefix%'
- @migrator.tool_collection - '@migrator.tool_collection'
- @migrator.helper - '@migrator.helper'
migrator.helper: migrator.helper:
class: phpbb\db\migration\helper class: phpbb\db\migration\helper
@ -34,43 +21,44 @@ services:
migrator.tool_collection: migrator.tool_collection:
class: phpbb\di\service_collection class: phpbb\di\service_collection
arguments: arguments:
- @service_container - '@service_container'
tags: tags:
- { name: service_collection, tag: migrator.tool } - { name: service_collection, tag: migrator.tool }
migrator.tool.config: migrator.tool.config:
class: phpbb\db\migration\tool\config class: phpbb\db\migration\tool\config
arguments: arguments:
- @config - '@config'
tags: tags:
- { name: migrator.tool } - { name: migrator.tool }
migrator.tool.config_text: migrator.tool.config_text:
class: phpbb\db\migration\tool\config_text class: phpbb\db\migration\tool\config_text
arguments: arguments:
- @config_text - '@config_text'
tags: tags:
- { name: migrator.tool } - { name: migrator.tool }
migrator.tool.module: migrator.tool.module:
class: phpbb\db\migration\tool\module class: phpbb\db\migration\tool\module
arguments: arguments:
- @dbal.conn - '@dbal.conn'
- @cache - '@cache'
- @user - '@user'
- %core.root_path% - '@module.manager'
- %core.php_ext% - '%core.root_path%'
- %tables.modules% - '%core.php_ext%'
- '%tables.modules%'
tags: tags:
- { name: migrator.tool } - { name: migrator.tool }
migrator.tool.permission: migrator.tool.permission:
class: phpbb\db\migration\tool\permission class: phpbb\db\migration\tool\permission
arguments: arguments:
- @dbal.conn - '@dbal.conn'
- @cache - '@cache'
- @auth - '@auth'
- %core.root_path% - '%core.root_path%'
- %core.php_ext% - '%core.php_ext%'
tags: tags:
- { name: migrator.tool } - { name: migrator.tool }

View file

@ -2,7 +2,7 @@ services:
mimetype.guesser_collection: mimetype.guesser_collection:
class: phpbb\di\service_collection class: phpbb\di\service_collection
arguments: arguments:
- @service_container - '@service_container'
tags: tags:
- { name: service_collection, tag: mimetype.guessers } - { name: service_collection, tag: mimetype.guessers }
@ -19,18 +19,18 @@ services:
mimetype.content_guesser: mimetype.content_guesser:
class: phpbb\mimetype\content_guesser class: phpbb\mimetype\content_guesser
calls: calls:
- [set_priority, [%mimetype.guesser.priority.low%]] - [set_priority, ['%mimetype.guesser.priority.low%']]
tags: tags:
- { name: mimetype.guessers } - { name: mimetype.guessers }
mimetype.extension_guesser: mimetype.extension_guesser:
class: phpbb\mimetype\extension_guesser class: phpbb\mimetype\extension_guesser
calls: calls:
- [set_priority, [%mimetype.guesser.priority.lowest%]] - [set_priority, ['%mimetype.guesser.priority.lowest%']]
tags: tags:
- { name: mimetype.guessers } - { name: mimetype.guessers }
mimetype.guesser: mimetype.guesser:
class: phpbb\mimetype\guesser class: phpbb\mimetype\guesser
arguments: arguments:
- @mimetype.guesser_collection - '@mimetype.guesser_collection'

View file

@ -0,0 +1,10 @@
services:
module.manager:
class: phpbb\module\module_manager
arguments:
- '@cache.driver'
- '@dbal.conn'
- '@ext.manager'
- '%tables.modules%'
- '%core.root_path%'
- '%core.php_ext%'

View file

@ -0,0 +1,224 @@
services:
notification_manager:
class: phpbb\notification\manager
arguments:
- '@notification.type_collection'
- '@notification.method_collection'
- '@service_container'
- '@user_loader'
- '@dispatcher'
- '@dbal.conn'
- '@cache'
- '@language'
- '@user'
- '%tables.notification_types%'
- '%tables.user_notifications%'
# ----- Notification's types -----
# Service MUST NOT be shared for all the plugins to work.
notification.type_collection:
class: phpbb\di\service_collection
arguments:
- '@service_container'
tags:
- { name: service_collection, tag: notification.type }
notification.type.base:
abstract: true
arguments:
- '@dbal.conn'
- '@language'
- '@user'
- '@auth'
- '%core.root_path%'
- '%core.php_ext%'
- '%tables.user_notifications%'
notification.type.admin_activate_user:
class: phpbb\notification\type\admin_activate_user
shared: false
parent: notification.type.base
calls:
- [set_user_loader, ['@user_loader']]
- [set_config, ['@config']]
tags:
- { name: notification.type }
notification.type.approve_post:
class: phpbb\notification\type\approve_post
shared: false
parent: notification.type.post
tags:
- { name: notification.type }
notification.type.approve_topic:
class: phpbb\notification\type\approve_topic
shared: false
parent: notification.type.topic
tags:
- { name: notification.type }
notification.type.bookmark:
class: phpbb\notification\type\bookmark
shared: false
parent: notification.type.post
tags:
- { name: notification.type }
notification.type.disapprove_post:
class: phpbb\notification\type\disapprove_post
shared: false
parent: notification.type.post
tags:
- { name: notification.type }
notification.type.disapprove_topic:
class: phpbb\notification\type\disapprove_topic
shared: false
parent: notification.type.topic
tags:
- { name: notification.type }
notification.type.group_request:
class: phpbb\notification\type\group_request
shared: false
parent: notification.type.base
calls:
- [set_user_loader, ['@user_loader']]
tags:
- { name: notification.type }
notification.type.group_request_approved:
class: phpbb\notification\type\group_request_approved
shared: false
parent: notification.type.base
tags:
- { name: notification.type }
notification.type.pm:
class: phpbb\notification\type\pm
shared: false
parent: notification.type.base
calls:
- [set_user_loader, ['@user_loader']]
- [set_config, ['@config']]
tags:
- { name: notification.type }
notification.type.post:
class: phpbb\notification\type\post
shared: false
parent: notification.type.base
calls:
- [set_user_loader, ['@user_loader']]
- [set_config, ['@config']]
tags:
- { name: notification.type }
notification.type.post_in_queue:
class: phpbb\notification\type\post_in_queue
shared: false
parent: notification.type.post
tags:
- { name: notification.type }
notification.type.quote:
class: phpbb\notification\type\quote
shared: false
parent: notification.type.post
calls:
- [set_utils, ['@text_formatter.utils']]
tags:
- { name: notification.type }
notification.type.report_pm:
class: phpbb\notification\type\report_pm
shared: false
parent: notification.type.pm
tags:
- { name: notification.type }
notification.type.report_pm_closed:
class: phpbb\notification\type\report_pm_closed
shared: false
parent: notification.type.pm
tags:
- { name: notification.type }
notification.type.report_post:
class: phpbb\notification\type\report_post
shared: false
parent: notification.type.post
tags:
- { name: notification.type }
notification.type.report_post_closed:
class: phpbb\notification\type\report_post_closed
shared: false
parent: notification.type.post
tags:
- { name: notification.type }
notification.type.topic:
class: phpbb\notification\type\topic
shared: false
parent: notification.type.base
calls:
- [set_user_loader, ['@user_loader']]
- [set_config, ['@config']]
tags:
- { name: notification.type }
notification.type.topic_in_queue:
class: phpbb\notification\type\topic_in_queue
shared: false
parent: notification.type.topic
tags:
- { name: notification.type }
# ----- Notification's methods -----
# Service MUST NOT be shared for all the plugins to work.
notification.method_collection:
class: phpbb\di\service_collection
arguments:
- '@service_container'
tags:
- { name: service_collection, tag: notification.method }
notification.method.board:
class: phpbb\notification\method\board
shared: false
arguments:
- '@user_loader'
- '@dbal.conn'
- '@cache.driver'
- '@user'
- '@config'
- '%tables.notification_types%'
- '%tables.notifications%'
tags:
- { name: notification.method }
notification.method.email:
class: phpbb\notification\method\email
shared: false
arguments:
- '@user_loader'
- '@user'
- '@config'
- '%core.root_path%'
- '%core.php_ext%'
tags:
- { name: notification.method }
notification.method.jabber:
class: phpbb\notification\method\jabber
shared: false
arguments:
- '@user_loader'
- '@user'
- '@config'
- '%core.root_path%'
- '%core.php_ext%'
tags:
- { name: notification.method }

View file

@ -1,12 +1,15 @@
parameters:
passwords.driver.bcrypt_cost: 10
services: services:
# ----- Password management ----- # ----- Password management -----
passwords.manager: passwords.manager:
class: phpbb\passwords\manager class: phpbb\passwords\manager
arguments: arguments:
- @config - '@config'
- @passwords.driver_collection - '@passwords.driver_collection'
- @passwords.helper - '@passwords.helper'
- %passwords.algorithms% - '%passwords.algorithms%'
passwords.helper: passwords.helper:
class: phpbb\passwords\helper class: phpbb\passwords\helper
@ -14,112 +17,114 @@ services:
passwords.driver_helper: passwords.driver_helper:
class: phpbb\passwords\driver\helper class: phpbb\passwords\driver\helper
arguments: arguments:
- @config - '@config'
# ----- Password's drivers ----- # ----- Password's drivers -----
passwords.driver_collection: passwords.driver_collection:
class: phpbb\di\service_collection class: phpbb\di\service_collection
arguments: arguments:
- @service_container - '@service_container'
tags: tags:
- { name: service_collection, tag: passwords.driver } - { name: service_collection, tag: passwords.driver }
passwords.driver.bcrypt: passwords.driver.bcrypt:
class: phpbb\passwords\driver\bcrypt class: phpbb\passwords\driver\bcrypt
arguments: arguments:
- @config - '@config'
- @passwords.driver_helper - '@passwords.driver_helper'
- '%passwords.driver.bcrypt_cost%'
tags: tags:
- { name: passwords.driver } - { name: passwords.driver }
passwords.driver.bcrypt_2y: passwords.driver.bcrypt_2y:
class: phpbb\passwords\driver\bcrypt_2y class: phpbb\passwords\driver\bcrypt_2y
arguments: arguments:
- @config - '@config'
- @passwords.driver_helper - '@passwords.driver_helper'
- '%passwords.driver.bcrypt_cost%'
tags: tags:
- { name: passwords.driver } - { name: passwords.driver }
passwords.driver.bcrypt_wcf2: passwords.driver.bcrypt_wcf2:
class: phpbb\passwords\driver\bcrypt_wcf2 class: phpbb\passwords\driver\bcrypt_wcf2
arguments: arguments:
- @passwords.driver.bcrypt - '@passwords.driver.bcrypt'
- @passwords.driver_helper - '@passwords.driver_helper'
tags: tags:
- { name: passwords.driver } - { name: passwords.driver }
passwords.driver.salted_md5: passwords.driver.salted_md5:
class: phpbb\passwords\driver\salted_md5 class: phpbb\passwords\driver\salted_md5
arguments: arguments:
- @config - '@config'
- @passwords.driver_helper - '@passwords.driver_helper'
tags: tags:
- { name: passwords.driver } - { name: passwords.driver }
passwords.driver.phpass: passwords.driver.phpass:
class: phpbb\passwords\driver\phpass class: phpbb\passwords\driver\phpass
arguments: arguments:
- @config - '@config'
- @passwords.driver_helper - '@passwords.driver_helper'
tags: tags:
- { name: passwords.driver } - { name: passwords.driver }
passwords.driver.convert_password: passwords.driver.convert_password:
class: phpbb\passwords\driver\convert_password class: phpbb\passwords\driver\convert_password
arguments: arguments:
- @config - '@config'
- @passwords.driver_helper - '@passwords.driver_helper'
tags: tags:
- { name: passwords.driver } - { name: passwords.driver }
passwords.driver.sha1_smf: passwords.driver.sha1_smf:
class: phpbb\passwords\driver\sha1_smf class: phpbb\passwords\driver\sha1_smf
arguments: arguments:
- @config - '@config'
- @passwords.driver_helper - '@passwords.driver_helper'
tags: tags:
- { name: passwords.driver } - { name: passwords.driver }
passwords.driver.sha1_wcf1: passwords.driver.sha1_wcf1:
class: phpbb\passwords\driver\sha1_wcf1 class: phpbb\passwords\driver\sha1_wcf1
arguments: arguments:
- @config - '@config'
- @passwords.driver_helper - '@passwords.driver_helper'
tags: tags:
- { name: passwords.driver } - { name: passwords.driver }
passwords.driver.sha1: passwords.driver.sha1:
class: phpbb\passwords\driver\sha1 class: phpbb\passwords\driver\sha1
arguments: arguments:
- @config - '@config'
- @passwords.driver_helper - '@passwords.driver_helper'
tags: tags:
- { name: passwords.driver } - { name: passwords.driver }
passwords.driver.md5_phpbb2: passwords.driver.md5_phpbb2:
class: phpbb\passwords\driver\md5_phpbb2 class: phpbb\passwords\driver\md5_phpbb2
arguments: arguments:
- @request - '@request'
- @passwords.driver.salted_md5 - '@passwords.driver.salted_md5'
- @passwords.driver_helper - '@passwords.driver_helper'
- %core.root_path% - '%core.root_path%'
- %core.php_ext% - '%core.php_ext%'
tags: tags:
- { name: passwords.driver } - { name: passwords.driver }
passwords.driver.md5_mybb: passwords.driver.md5_mybb:
class: phpbb\passwords\driver\md5_mybb class: phpbb\passwords\driver\md5_mybb
arguments: arguments:
- @config - '@config'
- @passwords.driver_helper - '@passwords.driver_helper'
tags: tags:
- { name: passwords.driver } - { name: passwords.driver }
passwords.driver.md5_vb: passwords.driver.md5_vb:
class: phpbb\passwords\driver\md5_vb class: phpbb\passwords\driver\md5_vb
arguments: arguments:
- @config - '@config'
- @passwords.driver_helper - '@passwords.driver_helper'
tags: tags:
- { name: passwords.driver } - { name: passwords.driver }

View file

@ -0,0 +1,3 @@
services:
php_ini:
class: bantu\IniGetWrapper\IniGetWrapper

View file

@ -2,101 +2,101 @@ services:
profilefields.manager: profilefields.manager:
class: phpbb\profilefields\manager class: phpbb\profilefields\manager
arguments: arguments:
- @auth - '@auth'
- @dbal.conn - '@dbal.conn'
- @dispatcher - '@dispatcher'
- @request - '@request'
- @template - '@template'
- @profilefields.type_collection - '@profilefields.type_collection'
- @user - '@user'
- %tables.profile_fields% - '%tables.profile_fields%'
- %tables.profile_fields_language% - '%tables.profile_fields_language%'
- %tables.profile_fields_data% - '%tables.profile_fields_data%'
profilefields.lang_helper: profilefields.lang_helper:
class: phpbb\profilefields\lang_helper class: phpbb\profilefields\lang_helper
arguments: arguments:
- @dbal.conn - '@dbal.conn'
- %tables.profile_fields_options_language% - '%tables.profile_fields_options_language%'
# ----- Profile fields types ----- # ----- Profile fields types -----
profilefields.type_collection: profilefields.type_collection:
class: phpbb\di\service_collection class: phpbb\di\service_collection
arguments: arguments:
- @service_container - '@service_container'
tags: tags:
- { name: service_collection, tag: profilefield.type } - { name: service_collection, tag: profilefield.type }
profilefields.type.bool: profilefields.type.bool:
class: phpbb\profilefields\type\type_bool class: phpbb\profilefields\type\type_bool
arguments: arguments:
- @profilefields.lang_helper - '@profilefields.lang_helper'
- @request - '@request'
- @template - '@template'
- @user - '@user'
tags: tags:
- { name: profilefield.type } - { name: profilefield.type }
profilefields.type.date: profilefields.type.date:
class: phpbb\profilefields\type\type_date class: phpbb\profilefields\type\type_date
arguments: arguments:
- @request - '@request'
- @template - '@template'
- @user - '@user'
tags: tags:
- { name: profilefield.type } - { name: profilefield.type }
profilefields.type.dropdown: profilefields.type.dropdown:
class: phpbb\profilefields\type\type_dropdown class: phpbb\profilefields\type\type_dropdown
arguments: arguments:
- @profilefields.lang_helper - '@profilefields.lang_helper'
- @request - '@request'
- @template - '@template'
- @user - '@user'
tags: tags:
- { name: profilefield.type } - { name: profilefield.type }
profilefields.type.googleplus: profilefields.type.googleplus:
class: phpbb\profilefields\type\type_googleplus class: phpbb\profilefields\type\type_googleplus
arguments: arguments:
- @request - '@request'
- @template - '@template'
- @user - '@user'
tags: tags:
- { name: profilefield.type } - { name: profilefield.type }
profilefields.type.int: profilefields.type.int:
class: phpbb\profilefields\type\type_int class: phpbb\profilefields\type\type_int
arguments: arguments:
- @request - '@request'
- @template - '@template'
- @user - '@user'
tags: tags:
- { name: profilefield.type } - { name: profilefield.type }
profilefields.type.string: profilefields.type.string:
class: phpbb\profilefields\type\type_string class: phpbb\profilefields\type\type_string
arguments: arguments:
- @request - '@request'
- @template - '@template'
- @user - '@user'
tags: tags:
- { name: profilefield.type } - { name: profilefield.type }
profilefields.type.text: profilefields.type.text:
class: phpbb\profilefields\type\type_text class: phpbb\profilefields\type\type_text
arguments: arguments:
- @request - '@request'
- @template - '@template'
- @user - '@user'
tags: tags:
- { name: profilefield.type } - { name: profilefield.type }
profilefields.type.url: profilefields.type.url:
class: phpbb\profilefields\type\type_url class: phpbb\profilefields\type\type_url
arguments: arguments:
- @request - '@request'
- @template - '@template'
- @user - '@user'
tags: tags:
- { name: profilefield.type } - { name: profilefield.type }

View file

@ -0,0 +1,53 @@
services:
# ----- Report controller -----
phpbb.report.controller:
class: phpbb\report\controller\report
arguments:
- '@config'
- '@user'
- '@template'
- '@controller.helper'
- '@request'
- '@captcha.factory'
- '@phpbb.report.handler_factory'
- '@phpbb.report.report_reason_list_provider'
- '%core.root_path%'
- '%core.php_ext%'
# ----- Report handler factory -----
phpbb.report.handler_factory:
class: phpbb\report\handler_factory
arguments:
- '@service_container'
# ----- Report UI provider -----
phpbb.report.report_reason_list_provider:
class: phpbb\report\report_reason_list_provider
arguments:
- '@dbal.conn.driver'
- '@template'
- '@user'
# ----- Report handlers -----
# Service MUST NOT be shared for all the handlers to work correctly.
phpbb.report.handlers.report_handler_pm:
class: phpbb\report\report_handler_pm
shared: false
arguments:
- '@dbal.conn.driver'
- '@dispatcher'
- '@config'
- '@auth'
- '@user'
- '@notification_manager'
phpbb.report.handlers.report_handler_post:
class: phpbb\report\report_handler_post
shared: false
arguments:
- '@dbal.conn.driver'
- '@dispatcher'
- '@config'
- '@auth'
- '@user'
- '@notification_manager'

View file

@ -0,0 +1,79 @@
services:
router:
class: phpbb\routing\router
arguments:
- '@service_container'
- '@routing.chained_resources_locator'
- '@routing.delegated_loader'
- '%core.php_ext%'
- '%core.cache_dir%'
router.listener:
class: Symfony\Component\HttpKernel\EventListener\RouterListener
arguments:
- '@router'
- null
- null
- '@request_stack'
tags:
- { name: kernel.event_subscriber }
routing.helper:
class: phpbb\routing\helper
arguments:
- '@config'
- '@router'
- '@symfony_request'
- '@request'
- '@filesystem'
- '%core.root_path%'
- '%core.php_ext%'
# ---- Route loaders ----
routing.delegated_loader:
class: Symfony\Component\Config\Loader\DelegatingLoader
arguments:
- '@routing.resolver'
routing.resolver:
class: phpbb\routing\loader_resolver
arguments:
- '@routing.loader.collection'
routing.loader.collection:
class: phpbb\di\service_collection
arguments:
- '@service_container'
tags:
- { name: service_collection, tag: routing.loader }
routing.loader.yaml:
class: Symfony\Component\Routing\Loader\YamlFileLoader
arguments:
- '@file_locator'
tags:
- { name: routing.loader }
# ---- Resources Locators ----
routing.chained_resources_locator:
class: phpbb\routing\resources_locator\chained_resources_locator
arguments:
- '@routing.resources_locator.collection'
routing.resources_locator.collection:
class: phpbb\di\service_collection
arguments:
- '@service_container'
tags:
- { name: service_collection, tag: routing.resources_locator }
routing.resources_locator.default:
class: phpbb\routing\resources_locator\default_resources_locator
arguments:
- '%core.root_path%'
- '%core.environment%'
- '@ext.manager'
tags:
- { name: routing.resources_locator }

View file

@ -0,0 +1,73 @@
parameters:
text_formatter.cache.dir: '%core.cache_dir%'
text_formatter.cache.parser.key: _text_formatter_parser
text_formatter.cache.renderer.key: _text_formatter_renderer
services:
text_formatter.cache:
alias: text_formatter.s9e.factory
text_formatter.data_access:
class: phpbb\textformatter\data_access
arguments:
- '@dbal.conn'
- '%tables.bbcodes%'
- '%tables.smilies%'
- '%tables.styles%'
- '%tables.words%'
- '%core.root_path%styles/'
text_formatter.parser:
alias: text_formatter.s9e.parser
text_formatter.renderer:
alias: text_formatter.s9e.renderer
text_formatter.utils:
alias: text_formatter.s9e.utils
text_formatter.s9e.factory:
class: phpbb\textformatter\s9e\factory
arguments:
- '@text_formatter.data_access'
- '@cache.driver'
- '@dispatcher'
- '@config'
- '@text_formatter.s9e.link_helper'
- '%text_formatter.cache.dir%'
- '%text_formatter.cache.parser.key%'
- '%text_formatter.cache.renderer.key%'
text_formatter.s9e.link_helper:
class: phpbb\textformatter\s9e\link_helper
text_formatter.s9e.parser:
class: phpbb\textformatter\s9e\parser
arguments:
- '@cache.driver'
- '%text_formatter.cache.parser.key%'
- '@text_formatter.s9e.factory'
- '@dispatcher'
text_formatter.s9e.quote_helper:
class: phpbb\textformatter\s9e\quote_helper
arguments:
- '@user'
- '%core.root_path%'
- '%core.php_ext%'
text_formatter.s9e.renderer:
class: phpbb\textformatter\s9e\renderer
arguments:
- '@cache.driver'
- '%text_formatter.cache.dir%'
- '%text_formatter.cache.renderer.key%'
- '@text_formatter.s9e.factory'
- '@dispatcher'
calls:
- [configure_quote_helper, ['@text_formatter.s9e.quote_helper']]
- [configure_smilies_path, ['@config', '@path_helper']]
- [configure_user, ['@user', '@config', '@auth']]
text_formatter.s9e.utils:
class: phpbb\textformatter\s9e\utils

View file

@ -0,0 +1,109 @@
services:
text_reparser.manager:
class: phpbb\textreparser\manager
arguments:
- '@config'
- '@config_text'
- '@text_reparser_collection'
text_reparser.lock:
class: phpbb\lock\db
arguments:
- reparse_lock
- '@config'
- '@dbal.conn'
text_reparser_collection:
class: phpbb\di\service_collection
arguments:
- '@service_container'
tags:
- { name: service_collection, tag: text_reparser.plugin }
text_reparser.contact_admin_info:
class: phpbb\textreparser\plugins\contact_admin_info
arguments:
- '@config_text'
calls:
- [set_name, [contact_admin_info]]
tags:
- { name: text_reparser.plugin }
text_reparser.forum_description:
class: phpbb\textreparser\plugins\forum_description
arguments:
- '@dbal.conn'
- '%tables.forums%'
calls:
- [set_name, [forum_description]]
tags:
- { name: text_reparser.plugin }
text_reparser.forum_rules:
class: phpbb\textreparser\plugins\forum_rules
arguments:
- '@dbal.conn'
- '%tables.forums%'
calls:
- [set_name, [forum_rules]]
tags:
- { name: text_reparser.plugin }
text_reparser.group_description:
class: phpbb\textreparser\plugins\group_description
arguments:
- '@dbal.conn'
- '%tables.groups%'
calls:
- [set_name, [group_description]]
tags:
- { name: text_reparser.plugin }
text_reparser.pm_text:
class: phpbb\textreparser\plugins\pm_text
arguments:
- '@dbal.conn'
- '%tables.privmsgs%'
calls:
- [set_name, [pm_text]]
tags:
- { name: text_reparser.plugin }
text_reparser.poll_option:
class: phpbb\textreparser\plugins\poll_option
arguments:
- '@dbal.conn'
calls:
- [set_name, [poll_option]]
tags:
- { name: text_reparser.plugin }
text_reparser.poll_title:
class: phpbb\textreparser\plugins\poll_title
arguments:
- '@dbal.conn'
- '%tables.topics%'
calls:
- [set_name, [poll_title]]
tags:
- { name: text_reparser.plugin }
text_reparser.post_text:
class: phpbb\textreparser\plugins\post_text
arguments:
- '@dbal.conn'
- '%tables.posts%'
calls:
- [set_name, [post_text]]
tags:
- { name: text_reparser.plugin }
text_reparser.user_signature:
class: phpbb\textreparser\plugins\user_signature
arguments:
- '@dbal.conn'
- '%tables.users%'
calls:
- [set_name, [user_signature]]
tags:
- { name: text_reparser.plugin }

View file

@ -0,0 +1,68 @@
parameters:
core.template.cache_path: '%core.cache_dir%twig/'
services:
template.twig.environment:
class: phpbb\template\twig\environment
arguments:
- '@config'
- '@filesystem'
- '@path_helper'
- '%core.template.cache_path%'
- '@ext.manager'
- '@template.twig.loader'
- '@dispatcher'
- []
calls:
- [setLexer, ['@template.twig.lexer']]
template.twig.lexer:
class: phpbb\template\twig\lexer
lazy: true
arguments:
- '@template.twig.environment'
template.twig.loader:
class: phpbb\template\twig\loader
arguments:
- '@filesystem'
template.twig.extensions.collection:
class: phpbb\di\service_collection
arguments:
- '@service_container'
tags:
- { name: service_collection, tag: twig.extension }
template.twig.extensions.phpbb:
class: phpbb\template\twig\extension
arguments:
- '@template_context'
- '@language'
tags:
- { name: twig.extension }
template.twig.extensions.routing:
class: phpbb\template\twig\extension\routing
arguments:
- '@routing.helper'
tags:
- { name: twig.extension }
template.twig.extensions.debug:
class: Twig_Extension_Debug
template:
class: phpbb\template\twig\twig
arguments:
- '@path_helper'
- '@config'
- '@template_context'
- '@template.twig.environment'
- '%core.template.cache_path%'
- '@user'
- '@template.twig.extensions.collection'
- '@ext.manager'
template_context:
class: phpbb\template\context

View file

@ -0,0 +1,20 @@
services:
acl.permissions:
class: phpbb\permissions
arguments:
- '@dispatcher'
- '@user'
user:
class: phpbb\user
arguments:
- '@language'
- '%datetime.class%'
user_loader:
class: phpbb\user_loader
arguments:
- '@dbal.conn'
- '%core.root_path%'
- '%core.php_ext%'
- '%tables.users%'

View file

@ -0,0 +1,78 @@
parameters:
tables.acl_groups: '%core.table_prefix%acl_groups'
tables.acl_options: '%core.table_prefix%acl_options'
tables.acl_roles: '%core.table_prefix%acl_roles'
tables.acl_roles_data: '%core.table_prefix%acl_roles_data'
tables.acl_users: '%core.table_prefix%acl_users'
tables.attachments: '%core.table_prefix%attachments'
tables.auth_provider_oauth_token_storage: '%core.table_prefix%oauth_tokens'
tables.auth_provider_oauth_states: '%core.table_prefix%oauth_states'
tables.auth_provider_oauth_account_assoc: '%core.table_prefix%oauth_accounts'
tables.banlist: '%core.table_prefix%banlist'
tables.bbcodes: '%core.table_prefix%bbcodes'
tables.bookmarks: '%core.table_prefix%bookmarks'
tables.bots: '%core.table_prefix%bots'
tables.captcha_qa_questions: '%core.table_prefix%captcha_questions'
tables.captcha_qa_answers: '%core.table_prefix%captcha_answers'
tables.captcha_qa_confirm: '%core.table_prefix%qa_confirm'
tables.config: '%core.table_prefix%config'
tables.config_text: '%core.table_prefix%config_text'
tables.confirm: '%core.table_prefix%confirm'
tables.disallow: '%core.table_prefix%disallow'
tables.drafts: '%core.table_prefix%drafts'
tables.ext: '%core.table_prefix%ext'
tables.extensions: '%core.table_prefix%extensions'
tables.extension_groups: '%core.table_prefix%extension_groups'
tables.forums: '%core.table_prefix%forums'
tables.forums_access: '%core.table_prefix%forums_access'
tables.forums_track: '%core.table_prefix%forums_track'
tables.forums_watch: '%core.table_prefix%forums_watch'
tables.groups: '%core.table_prefix%groups'
tables.icons: '%core.table_prefix%icons'
tables.lang: '%core.table_prefix%lang'
tables.log: '%core.table_prefix%log'
tables.login_attempts: '%core.table_prefix%login_attempts'
tables.migrations: '%core.table_prefix%migrations'
tables.moderator_cache: '%core.table_prefix%moderator_cache'
tables.modules: '%core.table_prefix%modules'
tables.notification_types: '%core.table_prefix%notification_types'
tables.notifications: '%core.table_prefix%notifications'
tables.poll_options: '%core.table_prefix%poll_options'
tables.poll_votes: '%core.table_prefix%poll_votes'
tables.posts: '%core.table_prefix%posts'
tables.privmsgs: '%core.table_prefix%privmsgs'
tables.privmsgs_folder: '%core.table_prefix%privmsgs_folder'
tables.privmsgs_rules: '%core.table_prefix%privmsgs_rules'
tables.privmsgs_to: '%core.table_prefix%privmsgs_to'
tables.profile_fields: '%core.table_prefix%profile_fields'
tables.profile_fields_data: '%core.table_prefix%profile_fields_data'
tables.profile_fields_options_language: '%core.table_prefix%profile_fields_lang'
tables.profile_fields_language: '%core.table_prefix%profile_lang'
tables.ranks: '%core.table_prefix%ranks'
tables.reports: '%core.table_prefix%reports'
tables.reports_reasons: '%core.table_prefix%reports_reasons'
tables.search_results: '%core.table_prefix%search_results'
tables.search_wordlist: '%core.table_prefix%search_wordlist'
tables.search_wordmatch: '%core.table_prefix%search_wordmatch'
tables.sessions: '%core.table_prefix%sessions'
tables.sessions_keys: '%core.table_prefix%sessions_keys'
tables.sitelist: '%core.table_prefix%sitelist'
tables.smilies: '%core.table_prefix%smilies'
tables.sphinx: '%core.table_prefix%sphinx'
tables.styles: '%core.table_prefix%styles'
tables.styles_template: '%core.table_prefix%styles_template'
tables.styles_template_data: '%core.table_prefix%styles_template_data'
tables.styles_theme: '%core.table_prefix%styles_theme'
tables.styles_imageset: '%core.table_prefix%styles_imageset'
tables.styles_imageset_data: '%core.table_prefix%styles_imageset_data'
tables.teampage: '%core.table_prefix%teampage'
tables.topics: '%core.table_prefix%topics'
tables.topics_posted: '%core.table_prefix%topics_posted'
tables.topics_track: '%core.table_prefix%topics_track'
tables.topics_watch: '%core.table_prefix%topics_watch'
tables.user_group: '%core.table_prefix%user_group'
tables.user_notifications: '%core.table_prefix%user_notifications'
tables.users: '%core.table_prefix%users'
tables.warnings: '%core.table_prefix%warnings'
tables.words: '%core.table_prefix%words'
tables.zebra: '%core.table_prefix%zebra'

View file

@ -0,0 +1,35 @@
phpbb_feed_forums:
path: /forums
defaults: { _controller: phpbb.feed.controller:forums }
phpbb_feed_news:
path: /news
defaults: { _controller: phpbb.feed.controller:news }
phpbb_feed_topics:
path: /topics
defaults: { _controller: phpbb.feed.controller:topics }
phpbb_feed_topics_active:
path: /topics_active
defaults: { _controller: phpbb.feed.controller:topics_active }
phpbb_feed_topics_new:
path: /topics_new
defaults: { _controller: phpbb.feed.controller:topics_new }
phpbb_feed_forum:
path: /forum/{forum_id}
defaults: { _controller: phpbb.feed.controller:forum }
requirements:
forum_id: \d+
phpbb_feed_topic:
path: /topic/{topic_id}
defaults: { _controller: phpbb.feed.controller:topic }
requirements:
topic_id: \d+
phpbb_feed_overall:
path: /{mode}
defaults: { _controller: phpbb.feed.controller:overall }

View file

@ -0,0 +1,7 @@
phpbb_help_bbcode_controller:
path: /bbcode
defaults: { _controller: phpbb.help.controller.bbcode:handle }
phpbb_help_faq_controller:
path: /faq
defaults: { _controller: phpbb.help.controller.faq:handle }

View file

@ -0,0 +1,17 @@
phpbb_report_pm_controller:
path: /pm/{id}/report
methods: [GET, POST]
defaults:
_controller: phpbb.report.controller:handle
mode: 'pm'
requirements:
id: \d+
phpbb_report_post_controller:
path: /post/{id}/report
methods: [GET, POST]
defaults:
_controller: phpbb.report.controller:handle
mode: 'post'
requirements:
id: \d+

View file

@ -0,0 +1,24 @@
# Structure:
#
# foo_controller:
# path: /foo
# defaults: { _controller: foo_sevice:method }
#
# The above will be accessed via app.php?controller=foo and it will
# instantiate the 'foo_service' service and call the 'method' method.
#
phpbb_feed_routing:
resource: feed.yml
prefix: /feed
phpbb_feed_index:
path: /feed
defaults: { _controller: phpbb.feed.controller:overall }
phpbb_help_routing:
resource: help.yml
prefix: /help
phpbb_report_routing:
resource: report.yml

View file

@ -0,0 +1,13 @@
imports:
- { resource: ../default/config.yml }
core:
require_dev_dependencies: true
debug:
exceptions: true
twig:
debug: true
auto_reload: true
enable_debug_extension: true

View file

@ -0,0 +1,3 @@
imports:
- { resource: services.yml }
- { resource: parameters.yml }

View file

@ -0,0 +1,2 @@
imports:
- { resource: ../../default/container/parameters.yml }

Some files were not shown because too many files have changed in this diff Show more