mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-12 22:38:52 +00:00
Merge branch 'develop' of github.com:phpbb/phpbb3 into ticket/8323
# By Joas Schilling (613) and others # Via Andreas Fischer (214) and others * 'develop' of github.com:phpbb/phpbb3: (2494 commits) [ticket/11825] Move schema_data.php into includes/ instead of phpbb/ [ticket/11215] Remove unnecessary comment [ticket/11755] MySQL upgrader out of date [prep-release-3.0.12] Update Changelog for 3.0.12-RC3 release. [prep-release-3.0.12] Bumping version number for 3.0.12-RC3. [ticket/11823] Set up nginx server to match PHP files with characters after .php [ticket/11812] Fix empty define [ticket/11818] Update Symfony dependencies to 2.3.* [ticket/11791] Load adm/ events from styles/adm/event/ [ticket/11215] Fix helper_url_test.php tests [ticket/11215] Add newline back to .htaccess, fix wording [ticket/11215] Update comment in .htaccess [ticket/11215] Uncomment rewrite rules in .htaccess [ticket/11215] Make controller helper url() method use correct format [ticket/11215] Add commented-out URL rewrite capability to .htaccess [ticket/11821] Fix comma usage next to "You are receiving this notification". [ticket/11769] Allow using 0 as poster name [ticket/11769] Allow '0' as username [ticket/11215] Use new URL structure for controllers [ticket/11215] Everything appears to be working... ... Conflicts: phpBB/includes/functions_privmsgs.php
This commit is contained in:
commit
e8ab8fe0bc
936 changed files with 58402 additions and 22154 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -1,8 +1,9 @@
|
||||||
*~
|
*~
|
||||||
/phpunit.xml
|
/phpunit.xml
|
||||||
|
/phpBB/cache/twig/*
|
||||||
/phpBB/cache/*.html
|
/phpBB/cache/*.html
|
||||||
/phpBB/cache/*.php
|
/phpBB/cache/*.php
|
||||||
/phpBB/cache/queue.php.lock
|
/phpBB/cache/*.lock
|
||||||
/phpBB/composer.phar
|
/phpBB/composer.phar
|
||||||
/phpBB/config.php
|
/phpBB/config.php
|
||||||
/phpBB/config_dev.php
|
/phpBB/config_dev.php
|
||||||
|
|
14
.travis.yml
14
.travis.yml
|
@ -3,6 +3,7 @@ php:
|
||||||
- 5.3.3
|
- 5.3.3
|
||||||
- 5.3
|
- 5.3
|
||||||
- 5.4
|
- 5.4
|
||||||
|
- 5.5
|
||||||
|
|
||||||
env:
|
env:
|
||||||
- DB=mysql
|
- DB=mysql
|
||||||
|
@ -12,16 +13,15 @@ before_script:
|
||||||
- sh -c "if [ '$DB' = 'postgres' ]; then psql -c 'DROP DATABASE IF EXISTS phpbb_tests;' -U postgres; fi"
|
- sh -c "if [ '$DB' = 'postgres' ]; then psql -c 'DROP DATABASE IF EXISTS phpbb_tests;' -U postgres; fi"
|
||||||
- sh -c "if [ '$DB' = 'postgres' ]; then psql -c 'create database phpbb_tests;' -U postgres; fi"
|
- sh -c "if [ '$DB' = 'postgres' ]; then psql -c 'create database phpbb_tests;' -U postgres; fi"
|
||||||
- sh -c "if [ '$DB' = 'mysql' ]; then mysql -e 'create database IF NOT EXISTS phpbb_tests;'; fi"
|
- sh -c "if [ '$DB' = 'mysql' ]; then mysql -e 'create database IF NOT EXISTS phpbb_tests;'; fi"
|
||||||
- pyrus set auto_discover 1
|
- travis/install-php-extensions.sh
|
||||||
- pyrus install --force phpunit/DbUnit
|
|
||||||
- phpenv rehash
|
|
||||||
- cd phpBB
|
- cd phpBB
|
||||||
- php ../composer.phar install --dev
|
- php ../composer.phar install --dev --no-interaction --prefer-source
|
||||||
- cd ../
|
- cd ..
|
||||||
|
- sh -c "if [ `php -r "echo (int) version_compare(PHP_VERSION, '5.3.19', '>=');"` = "1" ]; then travis/setup-webserver.sh; fi"
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- phpunit --configuration travis/phpunit-$DB-travis.xml
|
- phpBB/vendor/bin/phpunit --configuration travis/phpunit-$DB-travis.xml
|
||||||
|
|
||||||
notifications:
|
notifications:
|
||||||
email:
|
email:
|
||||||
recipients:
|
recipients:
|
||||||
|
|
|
@ -2,17 +2,16 @@
|
||||||
|
|
||||||
<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.0.11" />
|
<property name="newversion" value="3.1.0-dev" />
|
||||||
<property name="prevversion" value="3.0.10" />
|
<property name="prevversion" value="3.0.11" />
|
||||||
<property name="olderversions" value="3.0.2, 3.0.3, 3.0.4, 3.0.5, 3.0.6, 3.0.7, 3.0.7-PL1, 3.0.8, 3.0.9, 3.0.11-RC1, 3.0.11-RC2" />
|
<property name="olderversions" value="3.0.2, 3.0.3, 3.0.4, 3.0.5, 3.0.6, 3.0.7, 3.0.7-PL1, 3.0.8, 3.0.9, 3.0.10" />
|
||||||
<!-- 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}" />
|
||||||
<property name="versions" value="${oldversions}, ${newversion}" />
|
<property name="versions" value="${oldversions}, ${newversion}" />
|
||||||
|
|
||||||
<!-- These are the main targets which you will probably want to use -->
|
<!-- These are the main targets which you will probably want to use -->
|
||||||
<target name="package" depends="clean,prepare,composer,create-package" />
|
<target name="all" depends="clean,prepare,composer,test,docs,package" />
|
||||||
<target name="all" depends="clean,prepare,composer,test,docs,create-package" />
|
|
||||||
<target name="build" depends="clean,prepare,composer,test,docs" />
|
<target name="build" depends="clean,prepare,composer,test,docs" />
|
||||||
|
|
||||||
<target name="prepare">
|
<target name="prepare">
|
||||||
|
@ -43,15 +42,22 @@
|
||||||
<delete dir="build/save" />
|
<delete dir="build/save" />
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
<target name="composer" depends="clean,prepare">
|
<!--
|
||||||
<exec dir="./phpBB/"
|
This target basically just runs composer in the phpBB tree to ensure
|
||||||
command="php ../composer.phar install"
|
all dependencies are loaded. Additional development dependencies are
|
||||||
|
loaded because testing framework may depend on them.
|
||||||
|
-->
|
||||||
|
<target name="composer">
|
||||||
|
<exec dir="phpBB"
|
||||||
|
command="php ../composer.phar install --dev"
|
||||||
|
checkreturn="true"
|
||||||
passthru="true" />
|
passthru="true" />
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
<target name="test" depends="clean,prepare,composer">
|
<target name="test" depends="clean,prepare,composer">
|
||||||
<exec dir="."
|
<exec dir="."
|
||||||
command="phpunit --log-junit build/logs/phpunit.xml
|
command="phpBB/vendor/bin/phpunit
|
||||||
|
--log-junit build/logs/phpunit.xml
|
||||||
--coverage-clover build/logs/clover.xml
|
--coverage-clover build/logs/clover.xml
|
||||||
--coverage-html build/coverage"
|
--coverage-html build/coverage"
|
||||||
passthru="true" />
|
passthru="true" />
|
||||||
|
@ -59,7 +65,8 @@
|
||||||
|
|
||||||
<target name="test-slow" depends="clean,prepare,composer">
|
<target name="test-slow" depends="clean,prepare,composer">
|
||||||
<exec dir="."
|
<exec dir="."
|
||||||
command="phpunit --log-junit build/logs/phpunit.xml
|
command="phpBB/vendor/bin/phpunit
|
||||||
|
--log-junit build/logs/phpunit.xml
|
||||||
--configuration phpunit.xml.all
|
--configuration phpunit.xml.all
|
||||||
--group slow
|
--group slow
|
||||||
--coverage-clover build/logs/clover-slow.xml
|
--coverage-clover build/logs/clover-slow.xml
|
||||||
|
@ -122,7 +129,7 @@
|
||||||
|
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
<target name="create-package" depends="prepare-new-version,old-version-diffs">
|
<target name="package" depends="clean,prepare,prepare-new-version,old-version-diffs">
|
||||||
<exec dir="build" command="php -f package.php '${versions}' > logs/package.log" escape="false" />
|
<exec dir="build" command="php -f package.php '${versions}' > logs/package.log" escape="false" />
|
||||||
<exec dir="build" command="php -f build_diff.php '${prevversion}' '${newversion}' > logs/build_diff.log" escape="false" />
|
<exec dir="build" command="php -f build_diff.php '${prevversion}' '${newversion}' > logs/build_diff.log" escape="false" />
|
||||||
|
|
||||||
|
@ -162,9 +169,43 @@
|
||||||
command="git archive ${revision} | tar -xf - -C ../${dir}"
|
command="git archive ${revision} | tar -xf - -C ../${dir}"
|
||||||
checkreturn="true" />
|
checkreturn="true" />
|
||||||
|
|
||||||
|
<!-- Install composer dependencies, if there are any. -->
|
||||||
<exec dir="${dir}"
|
<exec dir="${dir}"
|
||||||
command="php ../composer.phar install"
|
command='php -r "\$j = json_decode(file_get_contents(\"composer.json\")); echo isset(\$j->require);"'
|
||||||
passthru="true" />
|
checkreturn="true"
|
||||||
|
outputProperty='composer-has-dependencies' />
|
||||||
|
<if>
|
||||||
|
<equals arg1="${composer-has-dependencies}" arg2="1" trim="true" />
|
||||||
|
<then>
|
||||||
|
<!-- We have non-dev composer dependencies -->
|
||||||
|
<exec dir="."
|
||||||
|
command="git ls-tree ${revision} composer.phar"
|
||||||
|
checkreturn="true"
|
||||||
|
outputProperty='composer-ls-tree-output' />
|
||||||
|
<if>
|
||||||
|
<equals arg1="${composer-ls-tree-output}" arg2="" trim="true" />
|
||||||
|
<then>
|
||||||
|
<fail message="There are composer dependencies, but composer.phar is missing." />
|
||||||
|
</then>
|
||||||
|
<else>
|
||||||
|
<!-- Export the phar, install dependencies, delete phar. -->
|
||||||
|
<exec dir="."
|
||||||
|
command="git archive ${revision} composer.phar | tar -xf - -C ${dir}"
|
||||||
|
checkreturn="true" />
|
||||||
|
<exec dir="${dir}"
|
||||||
|
command="php composer.phar install"
|
||||||
|
checkreturn="true"
|
||||||
|
passthru="true" />
|
||||||
|
<delete file="${dir}/composer.phar" />
|
||||||
|
</else>
|
||||||
|
</if>
|
||||||
|
</then>
|
||||||
|
<else>
|
||||||
|
<!-- We do not have composer dependencies, do not ship composer files -->
|
||||||
|
<delete file="${dir}/composer.json" />
|
||||||
|
<delete file="${dir}/composer.lock" />
|
||||||
|
</else>
|
||||||
|
</if>
|
||||||
|
|
||||||
<delete file="${dir}/config.php" />
|
<delete file="${dir}/config.php" />
|
||||||
<delete dir="${dir}/develop" />
|
<delete dir="${dir}/develop" />
|
||||||
|
@ -187,6 +228,7 @@
|
||||||
<delete dir="${dir}/files" />
|
<delete dir="${dir}/files" />
|
||||||
<delete dir="${dir}/install" />
|
<delete dir="${dir}/install" />
|
||||||
<delete dir="${dir}/store" />
|
<delete dir="${dir}/store" />
|
||||||
|
<delete dir="${dir}/vendor" />
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|
|
@ -121,6 +121,7 @@ if (sizeof($package->old_packages))
|
||||||
|
|
||||||
$package->run_command('cp -Rp ' . $package->get('dest_dir') . '/docs ' . $dest_filename_dir);
|
$package->run_command('cp -Rp ' . $package->get('dest_dir') . '/docs ' . $dest_filename_dir);
|
||||||
$package->run_command('cp -Rp ' . $package->get('dest_dir') . '/install ' . $dest_filename_dir);
|
$package->run_command('cp -Rp ' . $package->get('dest_dir') . '/install ' . $dest_filename_dir);
|
||||||
|
$package->run_command('cp -Rp ' . $package->get('dest_dir') . '/vendor ' . $dest_filename_dir);
|
||||||
|
|
||||||
$package->run_command('mkdir ' . $dest_filename_dir . '/install/update');
|
$package->run_command('mkdir ' . $dest_filename_dir . '/install/update');
|
||||||
$package->run_command('mkdir ' . $dest_filename_dir . '/install/update/old');
|
$package->run_command('mkdir ' . $dest_filename_dir . '/install/update/old');
|
||||||
|
@ -256,6 +257,7 @@ $update_info = array(
|
||||||
// Copy the install files to their respective locations
|
// Copy the install files to their respective locations
|
||||||
$package->run_command('cp -Rp ' . $package->get('dest_dir') . '/docs ' . $package->get('patch_directory'));
|
$package->run_command('cp -Rp ' . $package->get('dest_dir') . '/docs ' . $package->get('patch_directory'));
|
||||||
$package->run_command('cp -Rp ' . $package->get('dest_dir') . '/install ' . $package->get('patch_directory'));
|
$package->run_command('cp -Rp ' . $package->get('dest_dir') . '/install ' . $package->get('patch_directory'));
|
||||||
|
$package->run_command('cp -Rp ' . $package->get('dest_dir') . '/vendor ' . $package->get('patch_directory'));
|
||||||
|
|
||||||
// Remove some files
|
// Remove some files
|
||||||
chdir($package->get('patch_directory') . '/install');
|
chdir($package->get('patch_directory') . '/install');
|
||||||
|
|
BIN
composer.phar
BIN
composer.phar
Binary file not shown.
|
@ -33,9 +33,7 @@ else
|
||||||
against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
|
against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
|
||||||
fi
|
fi
|
||||||
|
|
||||||
error=0
|
|
||||||
errors=""
|
errors=""
|
||||||
|
|
||||||
if ! which "$PHP_BIN" >/dev/null 2>&1
|
if ! which "$PHP_BIN" >/dev/null 2>&1
|
||||||
then
|
then
|
||||||
echo "PHP Syntax check failed:"
|
echo "PHP Syntax check failed:"
|
||||||
|
@ -73,63 +71,18 @@ do
|
||||||
|
|
||||||
# check the staged file content for syntax errors
|
# check the staged file content for syntax errors
|
||||||
# using php -l (lint)
|
# using php -l (lint)
|
||||||
# note: if display_errors=stderr in php.ini,
|
result=$(git cat-file -p $sha | "$PHP_BIN" -n -l -ddisplay_errors\=1 -derror_reporting\=E_ALL -dlog_errrors\=0 2>&1)
|
||||||
# parse errors are printed on stderr; otherwise
|
|
||||||
# they are printed on stdout.
|
|
||||||
# we filter everything other than parse errors
|
|
||||||
# with a grep below, therefore it should be safe
|
|
||||||
# to combine stdout and stderr in all circumstances
|
|
||||||
result=$(git cat-file -p $sha | "$PHP_BIN" -l 2>&1)
|
|
||||||
if [ $? -ne 0 ]
|
if [ $? -ne 0 ]
|
||||||
then
|
then
|
||||||
error=1
|
|
||||||
# Swap back in correct filenames
|
# Swap back in correct filenames
|
||||||
errors=$(echo "$errors"; echo "$result" |sed -e "s@in - on@in $filename on@g")
|
errors=$(echo "$errors"; echo "$result" | grep ':' | sed -e "s@in - on@in $filename on@g")
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
unset IFS
|
unset IFS
|
||||||
|
|
||||||
if [ $error -eq 1 ]
|
if [ -n "$errors" ]
|
||||||
then
|
then
|
||||||
echo "PHP Syntax check failed:"
|
echo "PHP Syntax check failed: "
|
||||||
# php "display errors" (display_errors php.ini value)
|
$echo_e "$errors"
|
||||||
# and "log errors" (log_errors php.ini value).
|
|
||||||
# these are independent settings - see main/main.c in php source.
|
|
||||||
# the "log errors" setting produces output which
|
|
||||||
# starts with "PHP Parse error:"; the "display errors"
|
|
||||||
# setting produces output starting with "Parse error:".
|
|
||||||
# if both are turned on php dumps the parse error twice.
|
|
||||||
# therefore here we try to grep for one version and
|
|
||||||
# if that yields no results grep for the other version.
|
|
||||||
#
|
|
||||||
# other fun php facts:
|
|
||||||
#
|
|
||||||
# 1. in cli, display_errors and log_errors have different
|
|
||||||
# destinations by default. display_errors prints to
|
|
||||||
# standard output and log_errors prints to standard error.
|
|
||||||
# whether these destinations make sense is left
|
|
||||||
# as an exercise for the reader.
|
|
||||||
# 2. as mentioned above, with all output turned on
|
|
||||||
# php will print parse errors twice, one time on stdout
|
|
||||||
# and one time on stderr.
|
|
||||||
# 3. it is possible to set both display_errors and log_errors
|
|
||||||
# to off. if this is done php will print the text
|
|
||||||
# "Errors parsing <file>" but will not say what
|
|
||||||
# the errors are. useful behavior, this.
|
|
||||||
# 4. on my system display_errors defaults to on and
|
|
||||||
# log_errors defaults to off, therefore providing
|
|
||||||
# by default one copy of messages. your mileage may vary.
|
|
||||||
# 5. by setting display_errors=stderr and log_errors=on,
|
|
||||||
# both sets of messages will be printed on stderr.
|
|
||||||
# 6. php-cgi binary, given display_errors=stderr and
|
|
||||||
# log_errors=on, still prints both sets of messages
|
|
||||||
# on stderr, but formats one set as an html fragment.
|
|
||||||
# 7. your entry here? ;)
|
|
||||||
$echo_e "$errors" | grep "^Parse error:"
|
|
||||||
if [ $? -ne 0 ]
|
|
||||||
then
|
|
||||||
# match failed
|
|
||||||
$echo_e "$errors" | grep "^PHP Parse error:"
|
|
||||||
fi
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -78,12 +78,12 @@ function work($pull_id, $remote)
|
||||||
add_remote($pull_user, 'phpbb3');
|
add_remote($pull_user, 'phpbb3');
|
||||||
run("git fetch $pull_user");
|
run("git fetch $pull_user");
|
||||||
run("git merge --no-ff $pull_user/$pull_branch");
|
run("git merge --no-ff $pull_user/$pull_branch");
|
||||||
run("phpunit");
|
run("phpBB/vendor/bin/phpunit");
|
||||||
|
|
||||||
run("git checkout develop");
|
run("git checkout develop");
|
||||||
run("git pull $remote develop");
|
run("git pull $remote develop");
|
||||||
run("git merge --no-ff develop-olympus");
|
run("git merge --no-ff develop-olympus");
|
||||||
run("phpunit");
|
run("phpBB/vendor/bin/phpunit");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'develop':
|
case 'develop':
|
||||||
|
@ -93,7 +93,7 @@ function work($pull_id, $remote)
|
||||||
add_remote($pull_user, 'phpbb3');
|
add_remote($pull_user, 'phpbb3');
|
||||||
run("git fetch $pull_user");
|
run("git fetch $pull_user");
|
||||||
run("git merge --no-ff $pull_user/$pull_branch");
|
run("git merge --no-ff $pull_user/$pull_branch");
|
||||||
run("phpunit");
|
run("phpBB/vendor/bin/phpunit");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -124,19 +124,34 @@ function get_repository_url($username, $repository, $ssh = false)
|
||||||
|
|
||||||
function api_request($query)
|
function api_request($query)
|
||||||
{
|
{
|
||||||
$contents = file_get_contents("http://github.com/api/v2/json/$query");
|
return api_url_request("https://api.github.com/$query?per_page=100");
|
||||||
|
}
|
||||||
|
|
||||||
|
function api_url_request($url)
|
||||||
|
{
|
||||||
|
$contents = file_get_contents($url, false, stream_context_create(array(
|
||||||
|
'http' => array(
|
||||||
|
'header' => "User-Agent: phpBB/1.0\r\n",
|
||||||
|
),
|
||||||
|
)));
|
||||||
|
|
||||||
if ($contents === false)
|
if ($contents === false)
|
||||||
{
|
{
|
||||||
throw new RuntimeException("Error: failed to retrieve pull request data\n", 4);
|
throw new RuntimeException("Error: failed to retrieve pull request data\n", 4);
|
||||||
}
|
}
|
||||||
|
$contents = json_decode($contents);
|
||||||
|
|
||||||
return json_decode($contents);
|
if (isset($contents->message) && strpos($contents->message, 'API Rate Limit') === 0)
|
||||||
|
{
|
||||||
|
throw new RuntimeException('Reached github API Rate Limit. Please try again later' . "\n", 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $contents;
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_pull($username, $repository, $pull_id)
|
function get_pull($username, $repository, $pull_id)
|
||||||
{
|
{
|
||||||
$request = api_request("pulls/$username/$repository/$pull_id");
|
$request = api_request("repos/$username/$repository/pulls/$pull_id");
|
||||||
|
|
||||||
$pull = $request->pull;
|
$pull = $request->pull;
|
||||||
|
|
||||||
|
|
|
@ -15,14 +15,14 @@ function show_usage()
|
||||||
echo "$filename adds repositories of a github network as remotes to a local git repository.\n";
|
echo "$filename adds repositories of a github network as remotes to a local git repository.\n";
|
||||||
echo "\n";
|
echo "\n";
|
||||||
|
|
||||||
echo "Usage: [php] $filename -s collaborators|organisation|contributors|network [OPTIONS]\n";
|
echo "Usage: [php] $filename -s collaborators|organisation|contributors|forks [OPTIONS]\n";
|
||||||
echo "\n";
|
echo "\n";
|
||||||
|
|
||||||
echo "Scopes:\n";
|
echo "Scopes:\n";
|
||||||
echo " collaborators Repositories of people who have push access to the specified repository\n";
|
echo " collaborators Repositories of people who have push access to the specified repository\n";
|
||||||
echo " contributors Repositories of people who have contributed to the specified repository\n";
|
echo " contributors Repositories of people who have contributed to the specified repository\n";
|
||||||
echo " organisation Repositories of members of the organisation at github\n";
|
echo " organisation Repositories of members of the organisation at github\n";
|
||||||
echo " network All repositories of the whole github network\n";
|
echo " forks All repositories of the whole github network\n";
|
||||||
echo "\n";
|
echo "\n";
|
||||||
|
|
||||||
echo "Options:\n";
|
echo "Options:\n";
|
||||||
|
@ -55,31 +55,31 @@ exit(work($scope, $username, $repository, $developer));
|
||||||
function work($scope, $username, $repository, $developer)
|
function work($scope, $username, $repository, $developer)
|
||||||
{
|
{
|
||||||
// Get some basic data
|
// Get some basic data
|
||||||
$network = get_network($username, $repository);
|
$forks = get_forks($username, $repository);
|
||||||
$collaborators = get_collaborators($username, $repository);
|
$collaborators = get_collaborators($username, $repository);
|
||||||
|
|
||||||
if ($network === false || $collaborators === false)
|
if ($forks === false || $collaborators === false)
|
||||||
{
|
{
|
||||||
echo "Error: failed to retrieve network or collaborators\n";
|
echo "Error: failed to retrieve forks or collaborators\n";
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch ($scope)
|
switch ($scope)
|
||||||
{
|
{
|
||||||
case 'collaborators':
|
case 'collaborators':
|
||||||
$remotes = array_intersect_key($network, $collaborators);
|
$remotes = array_intersect_key($forks, $collaborators);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'organisation':
|
case 'organisation':
|
||||||
$remotes = array_intersect_key($network, get_organisation_members($username));
|
$remotes = array_intersect_key($forks, get_organisation_members($username));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'contributors':
|
case 'contributors':
|
||||||
$remotes = array_intersect_key($network, get_contributors($username, $repository));
|
$remotes = array_intersect_key($forks, get_contributors($username, $repository));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'network':
|
case 'forks':
|
||||||
$remotes = $network;
|
$remotes = $forks;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -145,26 +145,66 @@ function get_repository_url($username, $repository, $ssh = false)
|
||||||
|
|
||||||
function api_request($query)
|
function api_request($query)
|
||||||
{
|
{
|
||||||
$contents = file_get_contents("http://github.com/api/v2/json/$query");
|
return api_url_request("https://api.github.com/$query?per_page=100");
|
||||||
|
}
|
||||||
|
|
||||||
|
function api_url_request($url)
|
||||||
|
{
|
||||||
|
$contents = file_get_contents($url, false, stream_context_create(array(
|
||||||
|
'http' => array(
|
||||||
|
'header' => "User-Agent: phpBB/1.0\r\n",
|
||||||
|
),
|
||||||
|
)));
|
||||||
|
|
||||||
|
$sub_request_result = array();
|
||||||
|
// Check headers for pagination links
|
||||||
|
if (!empty($http_response_header))
|
||||||
|
{
|
||||||
|
foreach ($http_response_header as $header_element)
|
||||||
|
{
|
||||||
|
// Find Link Header which gives us a link to the next page
|
||||||
|
if (strpos($header_element, 'Link: ') === 0)
|
||||||
|
{
|
||||||
|
list($head, $header_content) = explode(': ', $header_element);
|
||||||
|
foreach (explode(', ', $header_content) as $links)
|
||||||
|
{
|
||||||
|
list($url, $rel) = explode('; ', $links);
|
||||||
|
if ($rel == 'rel="next"')
|
||||||
|
{
|
||||||
|
// Found a next link, follow it and merge the results
|
||||||
|
$sub_request_result = api_url_request(substr($url, 1, -1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($contents === false)
|
if ($contents === false)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return json_decode($contents);
|
$contents = json_decode($contents);
|
||||||
|
|
||||||
|
if (isset($contents->message) && strpos($contents->message, 'API Rate Limit') === 0)
|
||||||
|
{
|
||||||
|
throw new RuntimeException('Reached github API Rate Limit. Please try again later' . "\n", 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ($sub_request_result) ? array_merge($sub_request_result, $contents) : $contents;
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_contributors($username, $repository)
|
function get_contributors($username, $repository)
|
||||||
{
|
{
|
||||||
$request = api_request("repos/show/$username/$repository/contributors");
|
$request = api_request("repos/$username/$repository/stats/contributors");
|
||||||
if ($request === false)
|
if ($request === false)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$usernames = array();
|
$usernames = array();
|
||||||
foreach ($request->contributors as $contributor)
|
foreach ($request as $contribution)
|
||||||
{
|
{
|
||||||
$usernames[$contributor->login] = $contributor->login;
|
$usernames[$contribution->author->login] = $contribution->author->login;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $usernames;
|
return $usernames;
|
||||||
|
@ -172,14 +212,14 @@ function get_contributors($username, $repository)
|
||||||
|
|
||||||
function get_organisation_members($username)
|
function get_organisation_members($username)
|
||||||
{
|
{
|
||||||
$request = api_request("organizations/$username/public_members");
|
$request = api_request("orgs/$username/public_members");
|
||||||
if ($request === false)
|
if ($request === false)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$usernames = array();
|
$usernames = array();
|
||||||
foreach ($request->users as $member)
|
foreach ($request as $member)
|
||||||
{
|
{
|
||||||
$usernames[$member->login] = $member->login;
|
$usernames[$member->login] = $member->login;
|
||||||
}
|
}
|
||||||
|
@ -189,35 +229,35 @@ function get_organisation_members($username)
|
||||||
|
|
||||||
function get_collaborators($username, $repository)
|
function get_collaborators($username, $repository)
|
||||||
{
|
{
|
||||||
$request = api_request("repos/show/$username/$repository/collaborators");
|
$request = api_request("repos/$username/$repository/collaborators");
|
||||||
if ($request === false)
|
if ($request === false)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$usernames = array();
|
$usernames = array();
|
||||||
foreach ($request->collaborators as $collaborator)
|
foreach ($request as $collaborator)
|
||||||
{
|
{
|
||||||
$usernames[$collaborator] = $collaborator;
|
$usernames[$collaborator->login] = $collaborator->login;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $usernames;
|
return $usernames;
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_network($username, $repository)
|
function get_forks($username, $repository)
|
||||||
{
|
{
|
||||||
$request = api_request("repos/show/$username/$repository/network");
|
$request = api_request("repos/$username/$repository/forks");
|
||||||
if ($request === false)
|
if ($request === false)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$usernames = array();
|
$usernames = array();
|
||||||
foreach ($request->network as $network)
|
foreach ($request as $fork)
|
||||||
{
|
{
|
||||||
$usernames[$network->owner] = array(
|
$usernames[$fork->owner->login] = array(
|
||||||
'username' => $network->owner,
|
'username' => $fork->owner->login,
|
||||||
'repository' => $network->name,
|
'repository' => $fork->name,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,30 @@
|
||||||
|
<IfModule mod_rewrite.c>
|
||||||
|
RewriteEngine on
|
||||||
|
|
||||||
#
|
#
|
||||||
# Uncomment the statement below if you want to make use of
|
# Uncomment the statement below if you want to make use of
|
||||||
# HTTP authentication and it does not already work.
|
# HTTP authentication and it does not already work.
|
||||||
# This could be required if you are for example using PHP via Apache CGI.
|
# This could be required if you are for example using PHP via Apache CGI.
|
||||||
#
|
#
|
||||||
#<IfModule mod_rewrite.c>
|
|
||||||
#RewriteEngine on
|
|
||||||
#RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
|
#RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
|
||||||
#</IfModule>
|
|
||||||
|
#
|
||||||
|
# The following 3 lines will rewrite URLs passed through the front controller
|
||||||
|
# to not require app.php in the actual URL. In other words, a controller is
|
||||||
|
# by default accessed at /app.php/my/controller, but can also be accessed at
|
||||||
|
# /my/controller
|
||||||
|
#
|
||||||
|
RewriteCond %{REQUEST_FILENAME} !-f
|
||||||
|
RewriteCond %{REQUEST_FILENAME} !-d
|
||||||
|
RewriteRule ^(.*)$ app.php [QSA,L]
|
||||||
|
|
||||||
|
#
|
||||||
|
# If symbolic links are not already being followed,
|
||||||
|
# uncomment the line below.
|
||||||
|
# http://anothersysadmin.wordpress.com/2008/06/10/mod_rewrite-forbidden-403-with-apache-228/
|
||||||
|
#
|
||||||
|
#Options +FollowSymLinks
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
<Files "config.php">
|
<Files "config.php">
|
||||||
Order Allow,Deny
|
Order Allow,Deny
|
||||||
|
|
|
@ -42,7 +42,6 @@ if (!$auth->acl_get('a_'))
|
||||||
|
|
||||||
// We define the admin variables now, because the user is now able to use the admin related features...
|
// We define the admin variables now, because the user is now able to use the admin related features...
|
||||||
define('IN_ADMIN', true);
|
define('IN_ADMIN', true);
|
||||||
$phpbb_admin_path = (defined('PHPBB_ADMIN_PATH')) ? PHPBB_ADMIN_PATH : './';
|
|
||||||
|
|
||||||
// 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;
|
||||||
|
@ -51,8 +50,7 @@ $module_id = request_var('i', '');
|
||||||
$mode = request_var('mode', '');
|
$mode = request_var('mode', '');
|
||||||
|
|
||||||
// Set custom style for admin area
|
// Set custom style for admin area
|
||||||
$phpbb_style->set_ext_dir_prefix('adm/');
|
$template->set_custom_style('adm', $phpbb_admin_path . 'style');
|
||||||
$phpbb_style->set_custom_style('admin', $phpbb_admin_path . 'style', '');
|
|
||||||
$template->assign_var('T_ASSETS_PATH', $phpbb_root_path . 'assets');
|
$template->assign_var('T_ASSETS_PATH', $phpbb_root_path . 'assets');
|
||||||
$template->assign_var('T_TEMPLATE_PATH', $phpbb_admin_path . 'style');
|
$template->assign_var('T_TEMPLATE_PATH', $phpbb_admin_path . 'style');
|
||||||
|
|
||||||
|
|
|
@ -196,7 +196,7 @@
|
||||||
</dl>
|
</dl>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="extgroup_filesize">{L_MAX_EXTGROUP_FILESIZE}{L_COLON}</label></dt>
|
<dt><label for="extgroup_filesize">{L_MAX_EXTGROUP_FILESIZE}{L_COLON}</label></dt>
|
||||||
<dd><input type="text" id="extgroup_filesize" size="3" maxlength="15" name="max_filesize" value="{EXTGROUP_FILESIZE}" /> <select name="size_select">{S_EXT_GROUP_SIZE_OPTIONS}</select></dd>
|
<dd><input type="number" id="extgroup_filesize" size="3" maxlength="15" name="max_filesize" value="{EXTGROUP_FILESIZE}" /> <select name="size_select">{S_EXT_GROUP_SIZE_OPTIONS}</select></dd>
|
||||||
</dl>
|
</dl>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="assigned_extensions">{L_ASSIGNED_EXTENSIONS}{L_COLON}</label></dt>
|
<dt><label for="assigned_extensions">{L_ASSIGNED_EXTENSIONS}{L_COLON}</label></dt>
|
||||||
|
@ -348,7 +348,7 @@
|
||||||
<td><a href="{orphan.U_FILE}">{orphan.REAL_FILENAME}</a></td>
|
<td><a href="{orphan.U_FILE}">{orphan.REAL_FILENAME}</a></td>
|
||||||
<td>{orphan.FILETIME}</td>
|
<td>{orphan.FILETIME}</td>
|
||||||
<td>{orphan.FILESIZE}</td>
|
<td>{orphan.FILESIZE}</td>
|
||||||
<td><strong>{L_ATTACH_ID}{L_COLON} </strong><input type="text" name="post_id[{orphan.ATTACH_ID}]" size="7" maxlength="10" value="{orphan.POST_ID}" /></td>
|
<td><strong>{L_ATTACH_ID}{L_COLON} </strong><input type="number" name="post_id[{orphan.ATTACH_ID}]" size="7" maxlength="10" value="{orphan.POST_ID}" /></td>
|
||||||
<td><input type="checkbox" class="radio" name="add[{orphan.ATTACH_ID}]" /></td>
|
<td><input type="checkbox" class="radio" name="add[{orphan.ATTACH_ID}]" /></td>
|
||||||
<td><input type="checkbox" class="radio" name="delete[{orphan.ATTACH_ID}]" /></td>
|
<td><input type="checkbox" class="radio" name="delete[{orphan.ATTACH_ID}]" /></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
11
phpBB/adm/style/acp_avatar_options_gravatar.html
Normal file
11
phpBB/adm/style/acp_avatar_options_gravatar.html
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
<dl>
|
||||||
|
<dt><label for="avatar_gravatar_email">{L_GRAVATAR_AVATAR_EMAIL}{L_COLON}</label><br /><span>{L_GRAVATAR_AVATAR_EMAIL_EXPLAIN}</span></dt>
|
||||||
|
<dd><input type="email" name="avatar_gravatar_email" id="avatar_gravatar_email" value="{AVATAR_GRAVATAR_EMAIL}" class="inputbox" /></dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="avatar_gravatar_width">{L_GRAVATAR_AVATAR_SIZE}{L_COLON}</label><br /><span>{L_GRAVATAR_AVATAR_SIZE_EXPLAIN}</span></dt>
|
||||||
|
<dd>
|
||||||
|
<input type="number" name="avatar_gravatar_width" id="avatar_gravatar_width" size="3" value="{AVATAR_GRAVATAR_WIDTH}" class="inputbox autowidth" /> {L_PIXEL} ×
|
||||||
|
<input type="number" name="avatar_gravatar_height" id="avatar_gravatar_height" size="3" value="{AVATAR_GRAVATAR_HEIGHT}" class="inputbox autowidth" /> {L_PIXEL}
|
||||||
|
</dd>
|
||||||
|
</dl>
|
25
phpBB/adm/style/acp_avatar_options_local.html
Normal file
25
phpBB/adm/style/acp_avatar_options_local.html
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
<dl>
|
||||||
|
<dt><label for="category">{L_AVATAR_CATEGORY}{L_COLON}</label></dt>
|
||||||
|
<dd><select name="avatar_local_cat" id="category">
|
||||||
|
<option value="">{L_NO_AVATAR_CATEGORY}</option>
|
||||||
|
<!-- BEGIN avatar_local_cats -->
|
||||||
|
<option value="{avatar_local_cats.NAME}"<!-- IF avatar_local_cats.SELECTED --> selected="selected"<!-- ENDIF -->>{avatar_local_cats.NAME}</option>
|
||||||
|
<!-- END avatar_local_cats -->
|
||||||
|
</select> <input type="submit" value="{L_GO}" name="avatar_local_go" class="button2" /></dd>
|
||||||
|
</dl>
|
||||||
|
<!-- IF AVATAR_LOCAL_SHOW -->
|
||||||
|
<table>
|
||||||
|
<!-- BEGIN avatar_local_row -->
|
||||||
|
<tr>
|
||||||
|
<!-- BEGIN avatar_local_col -->
|
||||||
|
<td class="row1" style="text-align: center;"><img src="{avatar_local_row.avatar_local_col.AVATAR_IMAGE}" alt="{avatar_local_row.avatar_local_col.AVATAR_NAME}" title="{avatar_local_row.avatar_local_col.AVATAR_NAME}"/></td>
|
||||||
|
<!-- END avatar_local_col -->
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<!-- BEGIN avatar_local_option -->
|
||||||
|
<td class="row2" style="text-align: center;"><input type="radio" name="avatar_local_file" id="av-{avatar_local_row.S_ROW_COUNT}-{avatar_local_row.avatar_local_option.S_ROW_COUNT}" value="{avatar_local_row.avatar_local_option.AVATAR_FILE}" /></td>
|
||||||
|
<!-- END avatar_local_option -->
|
||||||
|
</tr>
|
||||||
|
<!-- END avatar_local_row -->
|
||||||
|
</table>
|
||||||
|
<!-- ENDIF -->
|
11
phpBB/adm/style/acp_avatar_options_remote.html
Normal file
11
phpBB/adm/style/acp_avatar_options_remote.html
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
<dl>
|
||||||
|
<dt><label for="avatar_remote_url">{L_LINK_REMOTE_AVATAR}{L_COLON}</label><br /><span>{L_LINK_REMOTE_AVATAR_EXPLAIN}</span></dt>
|
||||||
|
<dd><input type="url" name="avatar_remote_url" id="avatar_remote_url" value="{AVATAR_REMOTE_URL}" class="inputbox" /></dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="avatar_remote_width">{L_LINK_REMOTE_SIZE}{L_COLON}</label><br /><span>{L_LINK_REMOTE_SIZE_EXPLAIN}</span></dt>
|
||||||
|
<dd>
|
||||||
|
<input type="number" name="avatar_remote_width" id="avatar_remote_width" size="3" value="{AVATAR_REMOTE_WIDTH}" class="inputbox autowidth" /> {L_PIXEL} ×
|
||||||
|
<input type="number" name="avatar_remote_height" id="avatar_remote_height" size="3" value="{AVATAR_REMOTE_HEIGHT}" class="inputbox autowidth" /> {L_PIXEL}
|
||||||
|
</dd>
|
||||||
|
</dl>
|
11
phpBB/adm/style/acp_avatar_options_upload.html
Normal file
11
phpBB/adm/style/acp_avatar_options_upload.html
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
<dl>
|
||||||
|
<dt><label for="avatar_upload_file">{L_UPLOAD_AVATAR_FILE}{L_COLON}</label></dt>
|
||||||
|
<dd><input type="hidden" name="MAX_FILE_SIZE" value="{AVATAR_UPLOAD_SIZE}" /><input type="file" name="avatar_upload_file" id="avatar_upload_file" class="inputbox autowidth" /></dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
<!-- IF S_UPLOAD_AVATAR_URL -->
|
||||||
|
<dl>
|
||||||
|
<dt><label for="avatar_upload_url">{L_UPLOAD_AVATAR_URL}{L_COLON}</label><br /><span>{L_UPLOAD_AVATAR_URL_EXPLAIN}</span></dt>
|
||||||
|
<dd><input type="url" name="avatar_upload_url" id="avatar_upload_url" value="" class="inputbox" /></dd>
|
||||||
|
</dl>
|
||||||
|
<!-- ENDIF -->
|
|
@ -34,7 +34,7 @@
|
||||||
|
|
||||||
<!-- IF S_AUTH -->
|
<!-- IF S_AUTH -->
|
||||||
<!-- BEGIN auth_tpl -->
|
<!-- BEGIN auth_tpl -->
|
||||||
{auth_tpl.TPL}
|
<!-- INCLUDE {auth_tpl.TEMPLATE_FILE} -->
|
||||||
<!-- END auth_tpl -->
|
<!-- END auth_tpl -->
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
|
|
||||||
|
|
|
@ -19,11 +19,11 @@
|
||||||
</dl>
|
</dl>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="max_reg_attempts">{L_REG_LIMIT}{L_COLON}</label><br /><span>{L_REG_LIMIT_EXPLAIN}</span></dt>
|
<dt><label for="max_reg_attempts">{L_REG_LIMIT}{L_COLON}</label><br /><span>{L_REG_LIMIT_EXPLAIN}</span></dt>
|
||||||
<dd><input id="max_reg_attempts" type="text" size="4" maxlength="4" name="max_reg_attempts" value="{REG_LIMIT}" /></dd>
|
<dd><input id="max_reg_attempts" type="number" size="4" maxlength="4" min="0" max="9999" name="max_reg_attempts" value="{REG_LIMIT}" /></dd>
|
||||||
</dl>
|
</dl>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="max_login_attempts">{L_MAX_LOGIN_ATTEMPTS}{L_COLON}</label><br /><span>{L_MAX_LOGIN_ATTEMPTS_EXPLAIN}</span></dt>
|
<dt><label for="max_login_attempts">{L_MAX_LOGIN_ATTEMPTS}{L_COLON}</label><br /><span>{L_MAX_LOGIN_ATTEMPTS_EXPLAIN}</span></dt>
|
||||||
<dd><input id="max_login_attempts" type="text" size="4" maxlength="4" name="max_login_attempts" value="{MAX_LOGIN_ATTEMPTS}" /></dd>
|
<dd><input id="max_login_attempts" type="number" size="4" maxlength="4" min="0" max="9999" name="max_login_attempts" value="{MAX_LOGIN_ATTEMPTS}" /></dd>
|
||||||
</dl>
|
</dl>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="enable_post_confirm">{L_VISUAL_CONFIRM_POST}{L_COLON}</label><br /><span>{L_VISUAL_CONFIRM_POST_EXPLAIN}</span></dt>
|
<dt><label for="enable_post_confirm">{L_VISUAL_CONFIRM_POST}{L_COLON}</label><br /><span>{L_VISUAL_CONFIRM_POST_EXPLAIN}</span></dt>
|
||||||
|
|
|
@ -7,7 +7,13 @@
|
||||||
<p>{L_EXTENSIONS_EXPLAIN}</p>
|
<p>{L_EXTENSIONS_EXPLAIN}</p>
|
||||||
<p>{L_ENABLE_EXPLAIN}</p>
|
<p>{L_ENABLE_EXPLAIN}</p>
|
||||||
|
|
||||||
<!-- IF PRE -->
|
<!-- IF MIGRATOR_ERROR -->
|
||||||
|
<div class="errorbox">
|
||||||
|
<p><strong>{L_MIGRATION_EXCEPTION_ERROR}</strong></p>
|
||||||
|
<p>{MIGRATOR_ERROR}</p>
|
||||||
|
<p><a href="{U_RETURN}">{L_RETURN}</a></p>
|
||||||
|
</div>
|
||||||
|
<!-- ELSEIF PRE -->
|
||||||
<div class="errorbox">
|
<div class="errorbox">
|
||||||
<p>{L_ENABLE_CONFIRM}</p>
|
<p>{L_ENABLE_CONFIRM}</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -7,7 +7,13 @@
|
||||||
<p>{L_EXTENSIONS_EXPLAIN}</p>
|
<p>{L_EXTENSIONS_EXPLAIN}</p>
|
||||||
<p>{L_PURGE_EXPLAIN}</p>
|
<p>{L_PURGE_EXPLAIN}</p>
|
||||||
|
|
||||||
<!-- IF PRE -->
|
<!-- IF MIGRATOR_ERROR -->
|
||||||
|
<div class="errorbox">
|
||||||
|
<p><strong>{L_MIGRATION_EXCEPTION_ERROR}</strong></p>
|
||||||
|
<p>{MIGRATOR_ERROR}</p>
|
||||||
|
<p><a href="{U_RETURN}">{L_RETURN}</a></p>
|
||||||
|
</div>
|
||||||
|
<!-- ELSEIF PRE -->
|
||||||
<div class="errorbox">
|
<div class="errorbox">
|
||||||
<p>{L_PURGE_CONFIRM}</p>
|
<p>{L_PURGE_CONFIRM}</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -152,7 +152,7 @@
|
||||||
</dl>
|
</dl>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="forum_desc">{L_FORUM_DESC}{L_COLON}</label><br /><span>{L_FORUM_DESC_EXPLAIN}</span></dt>
|
<dt><label for="forum_desc">{L_FORUM_DESC}{L_COLON}</label><br /><span>{L_FORUM_DESC_EXPLAIN}</span></dt>
|
||||||
<dd><textarea id="forum_desc" name="forum_desc" rows="5" cols="45">{FORUM_DESC}</textarea></dd>
|
<dd><textarea id="forum_desc" name="forum_desc" rows="5" cols="45" data-bbcode="true">{FORUM_DESC}</textarea></dd>
|
||||||
<dd><label><input type="checkbox" class="radio" name="desc_parse_bbcode"<!-- IF S_DESC_BBCODE_CHECKED --> checked="checked"<!-- ENDIF --> /> {L_PARSE_BBCODE}</label>
|
<dd><label><input type="checkbox" class="radio" name="desc_parse_bbcode"<!-- IF S_DESC_BBCODE_CHECKED --> checked="checked"<!-- ENDIF --> /> {L_PARSE_BBCODE}</label>
|
||||||
<label><input type="checkbox" class="radio" name="desc_parse_smilies"<!-- IF S_DESC_SMILIES_CHECKED --> checked="checked"<!-- ENDIF --> /> {L_PARSE_SMILIES}</label>
|
<label><input type="checkbox" class="radio" name="desc_parse_smilies"<!-- IF S_DESC_SMILIES_CHECKED --> checked="checked"<!-- ENDIF --> /> {L_PARSE_SMILIES}</label>
|
||||||
<label><input type="checkbox" class="radio" name="desc_parse_urls"<!-- IF S_DESC_URLS_CHECKED --> checked="checked"<!-- ENDIF --> /> {L_PARSE_URLS}</label></dd>
|
<label><input type="checkbox" class="radio" name="desc_parse_urls"<!-- IF S_DESC_URLS_CHECKED --> checked="checked"<!-- ENDIF --> /> {L_PARSE_URLS}</label></dd>
|
||||||
|
@ -239,8 +239,9 @@
|
||||||
</dl>
|
</dl>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="topics_per_page">{L_FORUM_TOPICS_PAGE}{L_COLON}</label><br /><span>{L_FORUM_TOPICS_PAGE_EXPLAIN}</span></dt>
|
<dt><label for="topics_per_page">{L_FORUM_TOPICS_PAGE}{L_COLON}</label><br /><span>{L_FORUM_TOPICS_PAGE_EXPLAIN}</span></dt>
|
||||||
<dd><input type="text" id="topics_per_page" name="topics_per_page" value="{TOPICS_PER_PAGE}" size="4" maxlength="4" /></dd>
|
<dd><input type="number" id="topics_per_page" name="topics_per_page" value="{TOPICS_PER_PAGE}" size="4" maxlength="4" min="0" max="9999" /></dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
<!-- EVENT acp_forums_normal_settings_append -->
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
|
@ -252,15 +253,15 @@
|
||||||
</dl>
|
</dl>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="prune_freq">{L_AUTO_PRUNE_FREQ}{L_COLON}</label><br /><span>{L_AUTO_PRUNE_FREQ_EXPLAIN}</span></dt>
|
<dt><label for="prune_freq">{L_AUTO_PRUNE_FREQ}{L_COLON}</label><br /><span>{L_AUTO_PRUNE_FREQ_EXPLAIN}</span></dt>
|
||||||
<dd><input type="text" id="prune_freq" name="prune_freq" value="{PRUNE_FREQ}" maxlength="4" size="4" /> {L_DAYS}</dd>
|
<dd><input type="number" id="prune_freq" name="prune_freq" value="{PRUNE_FREQ}" maxlength="4" size="4" min="0" max="9999" /> {L_DAYS}</dd>
|
||||||
</dl>
|
</dl>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="prune_days">{L_AUTO_PRUNE_DAYS}{L_COLON}</label><br /><span>{L_AUTO_PRUNE_DAYS_EXPLAIN}</span></dt>
|
<dt><label for="prune_days">{L_AUTO_PRUNE_DAYS}{L_COLON}</label><br /><span>{L_AUTO_PRUNE_DAYS_EXPLAIN}</span></dt>
|
||||||
<dd><input type="text" id="prune_days" name="prune_days" value="{PRUNE_DAYS}" maxlength="4" size="4" /> {L_DAYS}</dd>
|
<dd><input type="number" id="prune_days" name="prune_days" value="{PRUNE_DAYS}" maxlength="4" size="4" min="0" max="9999" /> {L_DAYS}</dd>
|
||||||
</dl>
|
</dl>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="prune_viewed">{L_AUTO_PRUNE_VIEWED}{L_COLON}</label><br /><span>{L_AUTO_PRUNE_VIEWED_EXPLAIN}</span></dt>
|
<dt><label for="prune_viewed">{L_AUTO_PRUNE_VIEWED}{L_COLON}</label><br /><span>{L_AUTO_PRUNE_VIEWED_EXPLAIN}</span></dt>
|
||||||
<dd><input type="text" id="prune_viewed" name="prune_viewed" value="{PRUNE_VIEWED}" maxlength="4" size="4" /> {L_DAYS}</dd>
|
<dd><input type="number" id="prune_viewed" name="prune_viewed" value="{PRUNE_VIEWED}" maxlength="4" size="4" min="0" max="9999" /> {L_DAYS}</dd>
|
||||||
</dl>
|
</dl>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="prune_old_polls">{L_PRUNE_OLD_POLLS}{L_COLON}</label><br /><span>{L_PRUNE_OLD_POLLS_EXPLAIN}</span></dt>
|
<dt><label for="prune_old_polls">{L_PRUNE_OLD_POLLS}{L_COLON}</label><br /><span>{L_PRUNE_OLD_POLLS_EXPLAIN}</span></dt>
|
||||||
|
@ -315,7 +316,7 @@
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="forum_rules">{L_FORUM_RULES}{L_COLON}</label><br /><span>{L_FORUM_RULES_EXPLAIN}</span></dt>
|
<dt><label for="forum_rules">{L_FORUM_RULES}{L_COLON}</label><br /><span>{L_FORUM_RULES_EXPLAIN}</span></dt>
|
||||||
<dd><textarea id="forum_rules" name="forum_rules" rows="4" cols="70">{FORUM_RULES_PLAIN}</textarea></dd>
|
<dd><textarea id="forum_rules" name="forum_rules" rows="4" cols="70" data-bbcode="true">{FORUM_RULES_PLAIN}</textarea></dd>
|
||||||
<dd><label><input type="checkbox" class="radio" name="rules_parse_bbcode"<!-- IF S_BBCODE_CHECKED --> checked="checked"<!-- ENDIF --> /> {L_PARSE_BBCODE}</label>
|
<dd><label><input type="checkbox" class="radio" name="rules_parse_bbcode"<!-- IF S_BBCODE_CHECKED --> checked="checked"<!-- ENDIF --> /> {L_PARSE_BBCODE}</label>
|
||||||
<label><input type="checkbox" class="radio" name="rules_parse_smilies"<!-- IF S_SMILIES_CHECKED --> checked="checked"<!-- ENDIF --> /> {L_PARSE_SMILIES}</label>
|
<label><input type="checkbox" class="radio" name="rules_parse_smilies"<!-- IF S_SMILIES_CHECKED --> checked="checked"<!-- ENDIF --> /> {L_PARSE_SMILIES}</label>
|
||||||
<label><input type="checkbox" class="radio" name="rules_parse_urls"<!-- IF S_URLS_CHECKED --> checked="checked"<!-- ENDIF --> /> {L_PARSE_URLS}</label></dd>
|
<label><input type="checkbox" class="radio" name="rules_parse_urls"<!-- IF S_URLS_CHECKED --> checked="checked"<!-- ENDIF --> /> {L_PARSE_URLS}</label></dd>
|
||||||
|
@ -436,7 +437,7 @@
|
||||||
</div>
|
</div>
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
|
|
||||||
<p><strong>{NAVIGATION}<!-- IF S_NO_FORUMS --> [<a href="{U_EDIT}">{L_EDIT}</a> | <a href="{U_DELETE}">{L_DELETE}</a><!-- IF not S_LINK --> | <a href="{U_SYNC}">{L_RESYNC}</a><!-- ENDIF --->]<!-- ENDIF --></strong></p>
|
<p><strong>{NAVIGATION}<!-- IF S_NO_FORUMS --> [<a href="{U_EDIT}">{L_EDIT}</a> | <a href="{U_DELETE}">{L_DELETE}</a><!-- IF not S_LINK --> | <a href="{U_SYNC}">{L_RESYNC}</a><!-- ENDIF -->]<!-- ENDIF --></strong></p>
|
||||||
|
|
||||||
<!-- IF .forums -->
|
<!-- IF .forums -->
|
||||||
<table cellspacing="1">
|
<table cellspacing="1">
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
</div>
|
</div>
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
|
|
||||||
<form id="settings" method="post" action="{U_ACTION}"<!-- IF S_CAN_UPLOAD --> enctype="multipart/form-data"<!-- ENDIF -->>
|
<form id="settings" method="post" action="{U_ACTION}" enctype="multipart/form-data">
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{L_GROUP_DETAILS}</legend>
|
<legend>{L_GROUP_DETAILS}</legend>
|
||||||
|
@ -84,11 +84,11 @@
|
||||||
<legend>{L_GROUP_SETTINGS_SAVE}</legend>
|
<legend>{L_GROUP_SETTINGS_SAVE}</legend>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="group_message_limit">{L_GROUP_MESSAGE_LIMIT}{L_COLON}</label><br /><span>{L_GROUP_MESSAGE_LIMIT_EXPLAIN}</span></dt>
|
<dt><label for="group_message_limit">{L_GROUP_MESSAGE_LIMIT}{L_COLON}</label><br /><span>{L_GROUP_MESSAGE_LIMIT_EXPLAIN}</span></dt>
|
||||||
<dd><input name="group_message_limit" type="text" id="group_message_limit" maxlength="4" size="4" value="{GROUP_MESSAGE_LIMIT}" /></dd>
|
<dd><input name="group_message_limit" type="number" id="group_message_limit" maxlength="4" size="4" min="0" max="9999" value="{GROUP_MESSAGE_LIMIT}" /></dd>
|
||||||
</dl>
|
</dl>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="group_max_recipients">{L_GROUP_MAX_RECIPIENTS}{L_COLON}</label><br /><span>{L_GROUP_MAX_RECIPIENTS_EXPLAIN}</span></dt>
|
<dt><label for="group_max_recipients">{L_GROUP_MAX_RECIPIENTS}{L_COLON}</label><br /><span>{L_GROUP_MAX_RECIPIENTS_EXPLAIN}</span></dt>
|
||||||
<dd><input name="group_max_recipients" type="text" id="group_max_recipients" maxlength="10" size="4" value="{GROUP_MAX_RECIPIENTS}" /></dd>
|
<dd><input name="group_max_recipients" type="number" id="group_max_recipients" maxlength="10" size="4" value="{GROUP_MAX_RECIPIENTS}" /></dd>
|
||||||
</dl>
|
</dl>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="group_colour">{L_GROUP_COLOR}{L_COLON}</label><br /><span>{L_GROUP_COLOR_EXPLAIN}</span></dt>
|
<dt><label for="group_colour">{L_GROUP_COLOR}{L_COLON}</label><br /><span>{L_GROUP_COLOR_EXPLAIN}</span></dt>
|
||||||
|
@ -104,66 +104,26 @@
|
||||||
<legend>{L_GROUP_AVATAR}</legend>
|
<legend>{L_GROUP_AVATAR}</legend>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label>{L_CURRENT_IMAGE}{L_COLON}</label><br /><span>{L_AVATAR_EXPLAIN}</span></dt>
|
<dt><label>{L_CURRENT_IMAGE}{L_COLON}</label><br /><span>{L_AVATAR_EXPLAIN}</span></dt>
|
||||||
<dd>{AVATAR_IMAGE}</dd>
|
<dd>{AVATAR}</dd>
|
||||||
<dd><label><input type="checkbox" class="radio" name="delete" /> {L_DELETE_AVATAR}</label></dd>
|
<dd><label for="avatar_delete"><input type="checkbox" name="avatar_delete" id="avatar_delete" /> {L_DELETE_AVATAR}</label></dd>
|
||||||
</dl>
|
</dl>
|
||||||
<!-- IF not S_IN_AVATAR_GALLERY -->
|
<dl>
|
||||||
<!-- IF S_CAN_UPLOAD -->
|
<dt><label>{L_AVATAR_TYPE}{L_COLON}</label></dt>
|
||||||
<dl>
|
<dd><select name="avatar_driver" id="avatar_driver">
|
||||||
<dt><label for="uploadfile">{L_UPLOAD_AVATAR_FILE}{L_COLON}</label></dt>
|
<option value="">{L_NO_AVATAR_CATEGORY}</option>
|
||||||
<dd><input type="file" id="uploadfile" name="uploadfile" /></dd>
|
<!-- BEGIN avatar_drivers -->
|
||||||
</dl>
|
<option value="{avatar_drivers.DRIVER}"<!-- IF avatar_drivers.SELECTED --> selected="selected"<!-- ENDIF -->>{avatar_drivers.L_TITLE}</option>
|
||||||
<dl>
|
<!-- END avatar_drivers -->
|
||||||
<dt><label for="uploadurl">{L_UPLOAD_AVATAR_URL}{L_COLON}</label><br /><span>{L_UPLOAD_AVATAR_URL_EXPLAIN}</span></dt>
|
</select></dd>
|
||||||
<dd><input name="uploadurl" type="text" id="uploadurl" value="" /></dd>
|
</dl>
|
||||||
</dl>
|
<div id="avatar_options">
|
||||||
<!-- ENDIF -->
|
<!-- BEGIN avatar_drivers -->
|
||||||
<dl>
|
<div id="avatar_option_{avatar_drivers.DRIVER}">
|
||||||
<dt><label for="remotelink">{L_LINK_REMOTE_AVATAR}{L_COLON}</label><br /><span>{L_LINK_REMOTE_AVATAR_EXPLAIN}</span></dt>
|
<p>{avatar_drivers.L_EXPLAIN}</p>
|
||||||
<dd><input name="remotelink" type="text" id="remotelink" value="" /></dd>
|
{avatar_drivers.OUTPUT}
|
||||||
</dl>
|
</div>
|
||||||
<dl>
|
<!-- END avatar_drivers -->
|
||||||
<dt><label for="width">{L_LINK_REMOTE_SIZE}{L_COLON}</label><br /><span>{L_LINK_REMOTE_SIZE_EXPLAIN}</span></dt>
|
</div>
|
||||||
<dd><input name="width" type="text" id="width" size="3" value="{AVATAR_WIDTH}" /> <span>{L_PIXEL} × </span> <input type="text" name="height" size="3" value="{AVATAR_HEIGHT}" /> <span>{L_PIXEL}</span></dd>
|
|
||||||
</dl>
|
|
||||||
<!-- IF S_DISPLAY_GALLERY -->
|
|
||||||
<dl>
|
|
||||||
<dt><label>{L_AVATAR_GALLERY}{L_COLON}</label></dt>
|
|
||||||
<dd><input class="button2" type="submit" name="display_gallery" value="{L_DISPLAY_GALLERY}" /></dd>
|
|
||||||
</dl>
|
|
||||||
<!-- ENDIF -->
|
|
||||||
<!-- ELSE -->
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<fieldset>
|
|
||||||
<legend>{L_AVATAR_GALLERY}</legend>
|
|
||||||
<dl>
|
|
||||||
<dt><label for="category">{L_AVATAR_CATEGORY}{L_COLON}</label></dt>
|
|
||||||
<dd><select name="category" id="category">{S_CAT_OPTIONS}</select> <input class="button2" type="submit" value="{L_GO}" name="display_gallery" /></dd>
|
|
||||||
</dl>
|
|
||||||
<dl>
|
|
||||||
<table cellspacing="1">
|
|
||||||
<!-- BEGIN avatar_row -->
|
|
||||||
<tr>
|
|
||||||
<!-- BEGIN avatar_column -->
|
|
||||||
<td class="row1" style="text-align: center;"><img src="{avatar_row.avatar_column.AVATAR_IMAGE}" alt="{avatar_row.avatar_column.AVATAR_NAME}" title="{avatar_row.avatar_column.AVATAR_NAME}" /></td>
|
|
||||||
<!-- END avatar_column -->
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<!-- BEGIN avatar_option_column -->
|
|
||||||
<td class="row2" style="text-align: center;"><input type="radio" class="radio" name="avatar_select" value="{avatar_row.avatar_option_column.S_OPTIONS_AVATAR}" /></td>
|
|
||||||
<!-- END avatar_option_column -->
|
|
||||||
</tr>
|
|
||||||
<!-- END avatar_row -->
|
|
||||||
</table>
|
|
||||||
</dl>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<fieldset class="quick" style="margin-top: -15px;">
|
|
||||||
<input class="button2" type="submit" name="cancel" value="{L_CANCEL}" />
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<!-- ENDIF -->
|
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<fieldset class="submit-buttons">
|
<fieldset class="submit-buttons">
|
||||||
|
@ -174,6 +134,8 @@
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
<!-- INCLUDEJS avatars.js -->
|
||||||
|
|
||||||
<!-- ELSEIF S_LIST -->
|
<!-- ELSEIF S_LIST -->
|
||||||
|
|
||||||
<a href="{U_BACK}" style="float: {S_CONTENT_FLOW_END};">« {L_BACK}</a>
|
<a href="{U_BACK}" style="float: {S_CONTENT_FLOW_END};">« {L_BACK}</a>
|
||||||
|
|
|
@ -17,8 +17,8 @@
|
||||||
</dl>
|
</dl>
|
||||||
|
|
||||||
<p class="submit-buttons">
|
<p class="submit-buttons">
|
||||||
<input class="button1" type="submit" id="submit" name="update" value="{L_SUBMIT}" />
|
<input class="button1" type="submit" name="update" value="{L_SUBMIT}" />
|
||||||
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
<input class="button2" type="reset" name="reset" value="{L_RESET}" />
|
||||||
<input type="hidden" name="action" value="set_config_legend" />
|
<input type="hidden" name="action" value="set_config_legend" />
|
||||||
{S_FORM_TOKEN}
|
{S_FORM_TOKEN}
|
||||||
</p>
|
</p>
|
||||||
|
@ -38,22 +38,22 @@
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<!-- BEGIN legend -->
|
<!-- BEGIN legend -->
|
||||||
<tr>
|
<tr data-down="{legend.U_MOVE_DOWN}" data-up="{legend.U_MOVE_UP}">
|
||||||
<td><strong{legend.GROUP_COLOUR}>{legend.GROUP_NAME}</strong></td>
|
<td><strong<!-- IF legend.GROUP_COLOUR --> style="color: {legend.GROUP_COLOUR}"<!-- ENDIF -->>{legend.GROUP_NAME}</strong></td>
|
||||||
<td style="text-align: center;">{legend.GROUP_TYPE}</td>
|
<td style="text-align: center;">{legend.GROUP_TYPE}</td>
|
||||||
<td style="vertical-align: top; width: 100px; text-align: right; white-space: nowrap;">
|
<td style="vertical-align: top; width: 100px; text-align: right; white-space: nowrap;">
|
||||||
<!-- IF legend.S_FIRST_ROW && not legend.S_LAST_ROW -->
|
<!-- IF legend.S_FIRST_ROW && not legend.S_LAST_ROW -->
|
||||||
{ICON_MOVE_UP_DISABLED}
|
<span class="up">{ICON_MOVE_UP_DISABLED}</span>
|
||||||
<a href="{legend.U_MOVE_DOWN}">{ICON_MOVE_DOWN}</a>
|
<span class="down"><a href="{legend.U_MOVE_DOWN}" data-ajax="row_down" data-overlay="false">{ICON_MOVE_DOWN}</a></span>
|
||||||
<!-- ELSEIF not legend.S_FIRST_ROW && not legend.S_LAST_ROW -->
|
<!-- ELSEIF not legend.S_FIRST_ROW && not legend.S_LAST_ROW -->
|
||||||
<a href="{legend.U_MOVE_UP}">{ICON_MOVE_UP}</a>
|
<span class="up"><a href="{legend.U_MOVE_UP}" data-ajax="row_up" data-overlay="false">{ICON_MOVE_UP}</a></span>
|
||||||
<a href="{legend.U_MOVE_DOWN}">{ICON_MOVE_DOWN}</a>
|
<span class="down"><a href="{legend.U_MOVE_DOWN}" data-ajax="row_down" data-overlay="false">{ICON_MOVE_DOWN}</a></span>
|
||||||
<!-- ELSEIF legend.S_LAST_ROW && not legend.S_FIRST_ROW -->
|
<!-- ELSEIF legend.S_LAST_ROW && not legend.S_FIRST_ROW -->
|
||||||
<a href="{legend.U_MOVE_UP}">{ICON_MOVE_UP}</a>
|
<span class="up"><a href="{legend.U_MOVE_UP}" data-ajax="row_up" data-overlay="false">{ICON_MOVE_UP}</a></span>
|
||||||
{ICON_MOVE_DOWN_DISABLED}
|
<span class="down">{ICON_MOVE_DOWN_DISABLED}</span>
|
||||||
<!-- ELSE -->
|
<!-- ELSE -->
|
||||||
{ICON_MOVE_UP_DISABLED}
|
<span class="up">{ICON_MOVE_UP_DISABLED}</span>
|
||||||
{ICON_MOVE_DOWN_DISABLED}
|
<span class="down">{ICON_MOVE_DOWN_DISABLED}</span>
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
<a href="{legend.U_DELETE}">{ICON_DELETE}</a>
|
<a href="{legend.U_DELETE}">{ICON_DELETE}</a>
|
||||||
</td>
|
</td>
|
||||||
|
@ -66,9 +66,14 @@
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<form id="acp_groups" method="post" action="{U_ACTION_LEGEND}">
|
<form id="legend_add_group" method="post" action="{U_ACTION_LEGEND}">
|
||||||
<fieldset class="quick">
|
<fieldset class="quick">
|
||||||
<select name="g"><option value="0">{L_SELECT_GROUP}</option>{S_GROUP_SELECT_LEGEND}</select>
|
<select name="g">
|
||||||
|
<option value="0">{L_SELECT_GROUP}</option>
|
||||||
|
<!-- BEGIN add_legend -->
|
||||||
|
<option<!-- IF add_legend.GROUP_SPECIAL --> class="sep"<!-- ENDIF --> value="{add_legend.GROUP_ID}">{add_legend.GROUP_NAME}</option>
|
||||||
|
<!-- END add_legend -->
|
||||||
|
</select>
|
||||||
<input class="button2" type="submit" name="submit" value="{L_ADD}" />
|
<input class="button2" type="submit" name="submit" value="{L_ADD}" />
|
||||||
<input type="hidden" name="action" value="add" />
|
<input type="hidden" name="action" value="add" />
|
||||||
{S_FORM_TOKEN}
|
{S_FORM_TOKEN}
|
||||||
|
@ -82,7 +87,7 @@
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{L_TEAMPAGE_SETTINGS}</legend>
|
<legend>{L_TEAMPAGE_SETTINGS}</legend>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="teampage_multiple">{L_TEAMPAGE_MEMBERSHIPS}{L_COLON}</label></dt>
|
<dt><label for="teampage_memberships">{L_TEAMPAGE_MEMBERSHIPS}{L_COLON}</label></dt>
|
||||||
<dd>
|
<dd>
|
||||||
<label><input type="radio" name="teampage_memberships" class="radio" value="0"<!-- IF DISPLAY_MEMBERSHIPS == 0 --> checked="checked"<!-- ENDIF --> /> {L_TEAMPAGE_DISP_FIRST}</label><br />
|
<label><input type="radio" name="teampage_memberships" class="radio" value="0"<!-- IF DISPLAY_MEMBERSHIPS == 0 --> checked="checked"<!-- ENDIF --> /> {L_TEAMPAGE_DISP_FIRST}</label><br />
|
||||||
<label><input type="radio" name="teampage_memberships" class="radio" value="1"<!-- IF DISPLAY_MEMBERSHIPS == 1 --> checked="checked"<!-- ENDIF --> /> {L_TEAMPAGE_DISP_DEFAULT}</label><br />
|
<label><input type="radio" name="teampage_memberships" class="radio" value="1"<!-- IF DISPLAY_MEMBERSHIPS == 1 --> checked="checked"<!-- ENDIF --> /> {L_TEAMPAGE_DISP_DEFAULT}</label><br />
|
||||||
|
@ -98,8 +103,8 @@
|
||||||
</dl>
|
</dl>
|
||||||
|
|
||||||
<p class="submit-buttons">
|
<p class="submit-buttons">
|
||||||
<input class="button1" type="submit" id="submit" name="update" value="{L_SUBMIT}" />
|
<input class="button1" type="submit" name="update" value="{L_SUBMIT}" />
|
||||||
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
<input class="button2" type="reset" name="reset" value="{L_RESET}" />
|
||||||
<input type="hidden" name="action" value="set_config_teampage" />
|
<input type="hidden" name="action" value="set_config_teampage" />
|
||||||
{S_FORM_TOKEN}
|
{S_FORM_TOKEN}
|
||||||
</p>
|
</p>
|
||||||
|
@ -108,6 +113,8 @@
|
||||||
|
|
||||||
<p>{L_TEAMPAGE_EXPLAIN}</p>
|
<p>{L_TEAMPAGE_EXPLAIN}</p>
|
||||||
|
|
||||||
|
<!-- IF S_TEAMPAGE_CATEGORY and CURRENT_CATEGORY_NAME --><p><strong><a href="{U_ACTION}">{L_TEAMPAGE}</a> » {CURRENT_CATEGORY_NAME}</strong></p><!-- ENDIF -->
|
||||||
|
|
||||||
<table cellspacing="1">
|
<table cellspacing="1">
|
||||||
<col class="col1" /><col class="col2" /><col class="col2" />
|
<col class="col1" /><col class="col2" /><col class="col2" />
|
||||||
<thead>
|
<thead>
|
||||||
|
@ -119,22 +126,29 @@
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<!-- BEGIN teampage -->
|
<!-- BEGIN teampage -->
|
||||||
<tr>
|
<tr data-down="{teampage.U_MOVE_DOWN}" data-up="{teampage.U_MOVE_UP}">
|
||||||
<td><strong{teampage.GROUP_COLOUR}>{teampage.GROUP_NAME}</strong></td>
|
<td>
|
||||||
<td style="text-align: center;">{teampage.GROUP_TYPE}</td>
|
<!-- IF teampage.U_CATEGORY -->
|
||||||
|
<a href="{teampage.U_CATEGORY}">{teampage.GROUP_NAME}</a>
|
||||||
|
<!-- ELSE -->
|
||||||
|
<strong<!-- IF teampage.GROUP_COLOUR --> style="color: {teampage.GROUP_COLOUR}"<!-- ENDIF -->>{teampage.GROUP_NAME}</strong>
|
||||||
|
<!-- ENDIF -->
|
||||||
|
</td>
|
||||||
|
<td style="text-align: center;"><!-- IF teampage.GROUP_TYPE -->{teampage.GROUP_TYPE}<!-- ELSE -->-<!-- ENDIF -->
|
||||||
|
</td></td>
|
||||||
<td style="vertical-align: top; width: 100px; text-align: right; white-space: nowrap;">
|
<td style="vertical-align: top; width: 100px; text-align: right; white-space: nowrap;">
|
||||||
<!-- IF teampage.S_FIRST_ROW && not teampage.S_LAST_ROW -->
|
<!-- IF teampage.S_FIRST_ROW && not teampage.S_LAST_ROW -->
|
||||||
{ICON_MOVE_UP_DISABLED}
|
<span class="up">{ICON_MOVE_UP_DISABLED}</span>
|
||||||
<a href="{teampage.U_MOVE_DOWN}">{ICON_MOVE_DOWN}</a>
|
<span class="down"><a href="{teampage.U_MOVE_DOWN}" data-ajax="row_down" data-overlay="false">{ICON_MOVE_DOWN}</a></span>
|
||||||
<!-- ELSEIF not teampage.S_FIRST_ROW && not teampage.S_LAST_ROW -->
|
<!-- ELSEIF not teampage.S_FIRST_ROW && not teampage.S_LAST_ROW -->
|
||||||
<a href="{teampage.U_MOVE_UP}">{ICON_MOVE_UP}</a>
|
<span class="up"><a href="{teampage.U_MOVE_UP}" data-ajax="row_up" data-overlay="false">{ICON_MOVE_UP}</a></span>
|
||||||
<a href="{teampage.U_MOVE_DOWN}">{ICON_MOVE_DOWN}</a>
|
<span class="down"><a href="{teampage.U_MOVE_DOWN}" data-ajax="row_down" data-overlay="false">{ICON_MOVE_DOWN}</a></span>
|
||||||
<!-- ELSEIF teampage.S_LAST_ROW && not teampage.S_FIRST_ROW -->
|
<!-- ELSEIF teampage.S_LAST_ROW && not teampage.S_FIRST_ROW -->
|
||||||
<a href="{teampage.U_MOVE_UP}">{ICON_MOVE_UP}</a>
|
<span class="up"><a href="{teampage.U_MOVE_UP}" data-ajax="row_up" data-overlay="false">{ICON_MOVE_UP}</a></span>
|
||||||
{ICON_MOVE_DOWN_DISABLED}
|
<span class="down">{ICON_MOVE_DOWN_DISABLED}</span>
|
||||||
<!-- ELSE -->
|
<!-- ELSE -->
|
||||||
{ICON_MOVE_UP_DISABLED}
|
<span class="up">{ICON_MOVE_UP_DISABLED}</span>
|
||||||
{ICON_MOVE_DOWN_DISABLED}
|
<span class="down">{ICON_MOVE_DOWN_DISABLED}</span>
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
<a href="{teampage.U_DELETE}">{ICON_DELETE}</a>
|
<a href="{teampage.U_DELETE}">{ICON_DELETE}</a>
|
||||||
</td>
|
</td>
|
||||||
|
@ -147,13 +161,37 @@
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<form id="acp_groups" method="post" action="{U_ACTION_TEAMPAGE}">
|
<!-- IF not S_TEAMPAGE_CATEGORY -->
|
||||||
|
<form id="teampage_add_category" method="post" action="{U_ACTION_TEAMPAGE}">
|
||||||
<fieldset class="quick">
|
<fieldset class="quick">
|
||||||
<select name="g"><option value="0">{L_SELECT_GROUP}</option>{S_GROUP_SELECT_TEAMPAGE}</select>
|
<input class="inputbox autowidth" type="text" maxlength="255" name="category_name" placeholder="{L_GROUP_CATEGORY_NAME}" />
|
||||||
|
<input class="button2" type="submit" name="submit" value="{L_ADD_GROUP_CATEGORY}" />
|
||||||
|
<input type="hidden" name="action" value="add_category" />
|
||||||
|
{S_FORM_TOKEN}
|
||||||
|
</fieldset>
|
||||||
|
</form>
|
||||||
|
<!-- ENDIF -->
|
||||||
|
|
||||||
|
<form id="teampage_add_group" method="post" action="{U_ACTION_TEAMPAGE}">
|
||||||
|
<fieldset class="quick">
|
||||||
|
<select name="g">
|
||||||
|
<option value="0">{L_SELECT_GROUP}</option>
|
||||||
|
<!-- BEGIN add_teampage -->
|
||||||
|
<option<!-- IF add_teampage.GROUP_SPECIAL --> class="sep"<!-- ENDIF --> value="{add_teampage.GROUP_ID}">{add_teampage.GROUP_NAME}</option>
|
||||||
|
<!-- END add_teampage -->
|
||||||
|
</select>
|
||||||
<input class="button2" type="submit" name="submit" value="{L_ADD}" />
|
<input class="button2" type="submit" name="submit" value="{L_ADD}" />
|
||||||
<input type="hidden" name="action" value="add" />
|
<input type="hidden" name="action" value="add" />
|
||||||
{S_FORM_TOKEN}
|
{S_FORM_TOKEN}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
<div class="hidden">
|
||||||
|
<a class="template-up-img" href="#">{ICON_MOVE_UP}</a>
|
||||||
|
<span class="template-up-img-disabled">{ICON_MOVE_UP_DISABLED}</span>
|
||||||
|
|
||||||
|
<a class="template-down-img" href="#">{ICON_MOVE_DOWN}</a>
|
||||||
|
<span class="template-down-img-disabled">{ICON_MOVE_DOWN_DISABLED}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- INCLUDE overall_footer.html -->
|
<!-- INCLUDE overall_footer.html -->
|
||||||
|
|
|
@ -108,8 +108,8 @@
|
||||||
<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>
|
||||||
<td><input class="text post" type="text" name="emotion[{items.IMG}]" value="{items.EMOTION}" size="10" maxlength="50" /></td>
|
<td><input class="text post" type="text" name="emotion[{items.IMG}]" value="{items.EMOTION}" size="10" maxlength="50" /></td>
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
<td><input class="text post" type="text" size="3" name="width[{items.IMG}]" value="{items.WIDTH}" /></td>
|
<td><input class="text post" type="number" size="3" name="width[{items.IMG}]" value="{items.WIDTH}" /></td>
|
||||||
<td><input class="text post" type="text" size="3" name="height[{items.IMG}]" value="{items.HEIGHT}" /></td>
|
<td><input class="text post" type="number" size="3" name="height[{items.IMG}]" value="{items.HEIGHT}" /></td>
|
||||||
<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 -->
|
||||||
|
@ -136,8 +136,8 @@
|
||||||
<td style="vertical-align: top;"><img src="{IMG_SRC}" id="add_image_src" alt="" title="" /></td>
|
<td style="vertical-align: top;"><img src="{IMG_SRC}" id="add_image_src" alt="" title="" /></td>
|
||||||
<td><input class="text post" type="text" name="add_code" id="add_code" value="{CODE}" size="10" maxlength="50" /></td>
|
<td><input class="text post" type="text" name="add_code" id="add_code" value="{CODE}" size="10" maxlength="50" /></td>
|
||||||
<td><input class="text post" type="text" name="add_emotion" id="add_emotion" value="{EMOTION}" size="10" maxlength="50" /></td>
|
<td><input class="text post" type="text" name="add_emotion" id="add_emotion" value="{EMOTION}" size="10" maxlength="50" /></td>
|
||||||
<td><input class="text post" type="text" size="3" name="add_width" id="add_width" value="{WIDTH}" /></td>
|
<td><input class="text post" type="number" size="3" name="add_width" id="add_width" value="{WIDTH}" /></td>
|
||||||
<td><input class="text post" type="text" size="3" name="add_height" id="add_height" value="{HEIGHT}" /></td>
|
<td><input class="text post" type="number" size="3" name="add_height" id="add_height" value="{HEIGHT}" /></td>
|
||||||
<td><input type="checkbox" class="radio" name="add_display_on_posting" checked="checked" onclick="toggle_select('add', this.checked, 'add_order');"/></td>
|
<td><input type="checkbox" class="radio" name="add_display_on_posting" checked="checked" onclick="toggle_select('add', this.checked, 'add_order');"/></td>
|
||||||
<td><select id="order_add_order" name="add_order">
|
<td><select id="order_add_order" name="add_order">
|
||||||
<optgroup id="order_disp_add_order" label="{L_DISPLAY_POSTING}">{S_ADD_ORDER_LIST_DISPLAY}</optgroup>
|
<optgroup id="order_disp_add_order" label="{L_DISPLAY_POSTING}">{S_ADD_ORDER_LIST_DISPLAY}</optgroup>
|
||||||
|
@ -243,8 +243,8 @@
|
||||||
<td style="text-align: center;">{items.EMOTION}</td>
|
<td style="text-align: center;">{items.EMOTION}</td>
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
<td style="text-align: right; white-space: nowrap;">
|
<td style="text-align: right; white-space: nowrap;">
|
||||||
<!-- IF items.S_FIRST_ROW and not PREVIOUS_PAGE -->{ICON_MOVE_UP_DISABLED}<!-- ELSE --><a href="{items.U_MOVE_UP}">{ICON_MOVE_UP}</a><!-- ENDIF -->
|
<!-- IF items.S_FIRST_ROW and not U_PREVIOUS_PAGE -->{ICON_MOVE_UP_DISABLED}<!-- ELSE --><a href="{items.U_MOVE_UP}">{ICON_MOVE_UP}</a><!-- ENDIF -->
|
||||||
<!-- IF items.S_LAST_ROW and not NEXT_PAGE -->{ICON_MOVE_DOWN_DISABLED}<!-- ELSE --><a href="{items.U_MOVE_DOWN}">{ICON_MOVE_DOWN}</a><!-- ENDIF -->
|
<!-- IF items.S_LAST_ROW and not U_NEXT_PAGE -->{ICON_MOVE_DOWN_DISABLED}<!-- ELSE --><a href="{items.U_MOVE_DOWN}">{ICON_MOVE_DOWN}</a><!-- ENDIF -->
|
||||||
<a href="{items.U_EDIT}">{ICON_EDIT}</a> <a href="{items.U_DELETE}" data-ajax="row_delete">{ICON_DELETE}</a>
|
<a href="{items.U_EDIT}">{ICON_EDIT}</a> <a href="{items.U_DELETE}" data-ajax="row_delete">{ICON_DELETE}</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
|
@ -53,7 +53,7 @@
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<fieldset class="display-options">
|
<fieldset class="display-options">
|
||||||
{L_DISPLAY_LOG}{L_COLON} {S_LIMIT_DAYS} {L_SORT_BY}{L_COLON} {S_SORT_KEY} {S_SORT_DIR}<!-- IF .pagination --> Users per page{L_COLON} <input class="inputbox autowidth" type="text" name="users_per_page" id="users_per_page" size="3" value="{USERS_PER_PAGE}" /><!-- ENDIF -->
|
{L_DISPLAY_LOG}{L_COLON} {S_LIMIT_DAYS} {L_SORT_BY}{L_COLON} {S_SORT_KEY} {S_SORT_DIR}<!-- IF .pagination --> Users per page{L_COLON} <input class="inputbox autowidth" type="number" name="users_per_page" id="users_per_page" size="3" value="{USERS_PER_PAGE}" /><!-- ENDIF -->
|
||||||
<input class="button2" type="submit" value="{L_GO}" name="sort" />
|
<input class="button2" type="submit" value="{L_GO}" name="sort" />
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
</dl>
|
</dl>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="jab_port">{L_JAB_PORT}{L_COLON}</label><br /><span>{L_JAB_PORT_EXPLAIN}</span></dt>
|
<dt><label for="jab_port">{L_JAB_PORT}{L_COLON}</label><br /><span>{L_JAB_PORT_EXPLAIN}</span></dt>
|
||||||
<dd><input type="text" id="jab_port" name="jab_port" value="{JAB_PORT}" maxlength="5" size="5" /></dd>
|
<dd><input type="number" id="jab_port" name="jab_port" value="{JAB_PORT}" maxlength="5" size="5" /></dd>
|
||||||
</dl>
|
</dl>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="jab_username">{L_JAB_USERNAME}{L_COLON}</label><br /><span>{L_JAB_USERNAME_EXPLAIN}</span></dt>
|
<dt><label for="jab_username">{L_JAB_USERNAME}{L_COLON}</label><br /><span>{L_JAB_USERNAME_EXPLAIN}</span></dt>
|
||||||
|
@ -50,7 +50,7 @@
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="jab_package_size">{L_JAB_PACKAGE_SIZE}{L_COLON}</label><br /><span>{L_JAB_PACKAGE_SIZE_EXPLAIN}</span></dt>
|
<dt><label for="jab_package_size">{L_JAB_PACKAGE_SIZE}{L_COLON}</label><br /><span>{L_JAB_PACKAGE_SIZE_EXPLAIN}</span></dt>
|
||||||
<dd><input type="text" id="jab_package_size" name="jab_package_size" value="{JAB_PACKAGE_SIZE}" maxlength="5" size="5" /></dd>
|
<dd><input type="number" id="jab_package_size" name="jab_package_size" value="{JAB_PACKAGE_SIZE}" maxlength="5" size="5" min="0" max="99999" /></dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
|
@ -76,6 +76,8 @@
|
||||||
</div>
|
</div>
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
|
|
||||||
|
<!-- EVENT acp_main_notice_after -->
|
||||||
|
|
||||||
<table cellspacing="1">
|
<table cellspacing="1">
|
||||||
<caption>{L_FORUM_STATS}</caption>
|
<caption>{L_FORUM_STATS}</caption>
|
||||||
<col class="col1" /><col class="col2" /><col class="col1" /><col class="col2" />
|
<col class="col1" /><col class="col2" /><col class="col1" /><col class="col2" />
|
||||||
|
@ -202,6 +204,8 @@
|
||||||
<dd><input type="hidden" name="action" value="purge_cache" /><input class="button2" type="submit" id="action_purge_cache" name="action_purge_cache" value="{L_RUN}" /></dd>
|
<dd><input type="hidden" name="action" value="purge_cache" /><input class="button2" type="submit" id="action_purge_cache" name="action_purge_cache" value="{L_RUN}" /></dd>
|
||||||
</dl>
|
</dl>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
<!-- EVENT acp_main_actions_append -->
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
|
|
||||||
|
|
|
@ -73,11 +73,11 @@
|
||||||
<legend>{L_FORUM_PRUNE}</legend>
|
<legend>{L_FORUM_PRUNE}</legend>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="prune_days">{L_PRUNE_NOT_POSTED}{L_COLON}</label></dt>
|
<dt><label for="prune_days">{L_PRUNE_NOT_POSTED}{L_COLON}</label></dt>
|
||||||
<dd><input type="text" id="prune_days" name="prune_days" /></dd>
|
<dd><input type="number" id="prune_days" name="prune_days" /></dd>
|
||||||
</dl>
|
</dl>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="prune_vieweddays">{L_PRUNE_NOT_VIEWED}{L_COLON}</label></dt>
|
<dt><label for="prune_vieweddays">{L_PRUNE_NOT_VIEWED}{L_COLON}</label></dt>
|
||||||
<dd><input type="text" id="prune_vieweddays" name="prune_vieweddays" /></dd>
|
<dd><input type="number" id="prune_vieweddays" name="prune_vieweddays" /></dd>
|
||||||
</dl>
|
</dl>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="polls">{L_PRUNE_OLD_POLLS}{L_COLON}</label><br /><span>{L_PRUNE_OLD_POLLS_EXPLAIN}</span></dt>
|
<dt><label for="polls">{L_PRUNE_OLD_POLLS}{L_COLON}</label><br /><span>{L_PRUNE_OLD_POLLS_EXPLAIN}</span></dt>
|
||||||
|
|
|
@ -35,11 +35,11 @@
|
||||||
</dl>
|
</dl>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="count">{L_POSTS}{L_COLON}</label></dt>
|
<dt><label for="count">{L_POSTS}{L_COLON}</label></dt>
|
||||||
<dd><select name="count_select">{S_COUNT_OPTIONS}</select> <input type="text" id="count" name="count" /></dd>
|
<dd><select name="count_select">{S_COUNT_OPTIONS}</select> <input type="number" id="count" name="count" /></dd>
|
||||||
</dl>
|
</dl>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="posts_on_queue">{L_POSTS_ON_QUEUE}{L_COLON}</label></dt>
|
<dt><label for="posts_on_queue">{L_POSTS_ON_QUEUE}{L_COLON}</label></dt>
|
||||||
<dd><select name="queue_select">{S_COUNT_OPTIONS}</select> <input type="text" id="posts_on_queue" name="posts_on_queue" /></select>
|
<dd><select name="queue_select">{S_COUNT_OPTIONS}</select> <input type="number" id="posts_on_queue" name="posts_on_queue" /></select>
|
||||||
</dl>
|
</dl>
|
||||||
<!-- IF S_GROUP_LIST -->
|
<!-- IF S_GROUP_LIST -->
|
||||||
<dl>
|
<dl>
|
||||||
|
|
|
@ -41,7 +41,7 @@
|
||||||
<!-- IF S_SPECIAL_RANK --><div id="posts" style="display: none;"><!-- ELSE --><div id="posts"><!-- ENDIF -->
|
<!-- IF S_SPECIAL_RANK --><div id="posts" style="display: none;"><!-- ELSE --><div id="posts"><!-- ENDIF -->
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="min_posts">{L_RANK_MINIMUM}{L_COLON}</label></dt>
|
<dt><label for="min_posts">{L_RANK_MINIMUM}{L_COLON}</label></dt>
|
||||||
<dd><input name="min_posts" type="text" id="min_posts" maxlength="10" value="{MIN_POSTS}" /></dd>
|
<dd><input name="min_posts" type="number" id="min_posts" maxlength="10" value="{MIN_POSTS}" /></dd>
|
||||||
</dl>
|
</dl>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -18,11 +18,11 @@
|
||||||
</dl>
|
</dl>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="search_interval">{L_SEARCH_INTERVAL}{L_COLON}</label><br /><span>{L_SEARCH_INTERVAL_EXPLAIN}</span></dt>
|
<dt><label for="search_interval">{L_SEARCH_INTERVAL}{L_COLON}</label><br /><span>{L_SEARCH_INTERVAL_EXPLAIN}</span></dt>
|
||||||
<dd><input id="search_interval" type="text" size="4" maxlength="4" name="config[search_interval]" value="{SEARCH_INTERVAL}" /> {L_SECONDS}</dd>
|
<dd><input id="search_interval" type="number" size="4" maxlength="4" min="0" max="9999" name="config[search_interval]" value="{SEARCH_INTERVAL}" /> {L_SECONDS}</dd>
|
||||||
</dl>
|
</dl>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="search_anonymous_interval">{L_SEARCH_GUEST_INTERVAL}{L_COLON}</label><br /><span>{L_SEARCH_GUEST_INTERVAL_EXPLAIN}</span></dt>
|
<dt><label for="search_anonymous_interval">{L_SEARCH_GUEST_INTERVAL}{L_COLON}</label><br /><span>{L_SEARCH_GUEST_INTERVAL_EXPLAIN}</span></dt>
|
||||||
<dd><input id="search_anonymous_interval" type="text" size="4" maxlength="4" name="config[search_anonymous_interval]" value="{SEARCH_GUEST_INTERVAL}" /> {L_SECONDS}</dd>
|
<dd><input id="search_anonymous_interval" type="number" size="4" maxlength="4" min="0" max="9999" name="config[search_anonymous_interval]" value="{SEARCH_GUEST_INTERVAL}" /> {L_SECONDS}</dd>
|
||||||
</dl>
|
</dl>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="limit_search_load">{L_LIMIT_SEARCH_LOAD}{L_COLON}</label><br /><span>{L_LIMIT_SEARCH_LOAD_EXPLAIN}</span></dt>
|
<dt><label for="limit_search_load">{L_LIMIT_SEARCH_LOAD}{L_COLON}</label><br /><span>{L_LIMIT_SEARCH_LOAD_EXPLAIN}</span></dt>
|
||||||
|
@ -30,15 +30,15 @@
|
||||||
</dl>
|
</dl>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="min_search_author_chars">{L_MIN_SEARCH_AUTHOR_CHARS}{L_COLON}</label><br /><span>{L_MIN_SEARCH_AUTHOR_CHARS_EXPLAIN}</span></dt>
|
<dt><label for="min_search_author_chars">{L_MIN_SEARCH_AUTHOR_CHARS}{L_COLON}</label><br /><span>{L_MIN_SEARCH_AUTHOR_CHARS_EXPLAIN}</span></dt>
|
||||||
<dd><input id="min_search_author_chars" type="text" size="4" maxlength="4" name="config[min_search_author_chars]" value="{MIN_SEARCH_AUTHOR_CHARS}" /></dd>
|
<dd><input id="min_search_author_chars" type="number" size="4" maxlength="4" min="0" max="9999" name="config[min_search_author_chars]" value="{MIN_SEARCH_AUTHOR_CHARS}" /></dd>
|
||||||
</dl>
|
</dl>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="max_num_search_keywords">{L_MAX_NUM_SEARCH_KEYWORDS}{L_COLON}</label><br /><span>{L_MAX_NUM_SEARCH_KEYWORDS_EXPLAIN}</span></dt>
|
<dt><label for="max_num_search_keywords">{L_MAX_NUM_SEARCH_KEYWORDS}{L_COLON}</label><br /><span>{L_MAX_NUM_SEARCH_KEYWORDS_EXPLAIN}</span></dt>
|
||||||
<dd><input id="max_num_search_keywords" type="text" size="4" maxlength="4" name="config[max_num_search_keywords]" value="{MAX_NUM_SEARCH_KEYWORDS}" /></dd>
|
<dd><input id="max_num_search_keywords" type="number" size="4" maxlength="4" min="0" max="9999" name="config[max_num_search_keywords]" value="{MAX_NUM_SEARCH_KEYWORDS}" /></dd>
|
||||||
</dl>
|
</dl>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="search_store_results">{L_SEARCH_STORE_RESULTS}{L_COLON}</label><br /><span>{L_SEARCH_STORE_RESULTS_EXPLAIN}</span></dt>
|
<dt><label for="search_store_results">{L_SEARCH_STORE_RESULTS}{L_COLON}</label><br /><span>{L_SEARCH_STORE_RESULTS_EXPLAIN}</span></dt>
|
||||||
<dd><input id="search_store_results" type="text" size="4" maxlength="6" name="config[search_store_results]" value="{SEARCH_STORE_RESULTS}" /> {L_SECONDS}</dd>
|
<dd><input id="search_store_results" type="number" size="4" maxlength="6" min="0" max="999999" name="config[search_store_results]" value="{SEARCH_STORE_RESULTS}" /> {L_SECONDS}</dd>
|
||||||
</dl>
|
</dl>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
|
|
|
@ -1,78 +1,39 @@
|
||||||
<form id="avatar_settings" method="post" action="{U_ACTION}"<!-- IF S_CAN_UPLOAD --> enctype="multipart/form-data"<!-- ENDIF -->>
|
<form id="avatar_settings" method="post" action="{U_ACTION}" enctype="multipart/form-data">
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{L_ACP_USER_AVATAR}</legend>
|
<legend>{L_ACP_USER_AVATAR}</legend>
|
||||||
<dl>
|
<!-- IF ERROR --><p class="error">{ERROR}</p><!-- ENDIF -->
|
||||||
<dt><label>{L_CURRENT_IMAGE}{L_COLON}</label><br /><span>{L_AVATAR_EXPLAIN}</span></dt>
|
|
||||||
<dd>{AVATAR_IMAGE}</dd>
|
|
||||||
<dd><label><input type="checkbox" class="radio" name="delete" /> {L_DELETE_AVATAR}</label></dd>
|
|
||||||
</dl>
|
|
||||||
<!-- IF not S_IN_AVATAR_GALLERY -->
|
|
||||||
<!-- IF S_UPLOAD_FILE -->
|
|
||||||
<dl>
|
|
||||||
<dt><label for="uploadfile">{L_UPLOAD_AVATAR_FILE}{L_COLON}</label></dt>
|
|
||||||
<dd><input type="hidden" name="MAX_FILE_SIZE" value="{AVATAR_MAX_FILESIZE}" /><input type="file" id="uploadfile" name="uploadfile" /></dd>
|
|
||||||
</dl>
|
|
||||||
<!-- ENDIF -->
|
|
||||||
<!-- IF S_REMOTE_UPLOAD -->
|
|
||||||
<dl>
|
|
||||||
<dt><label for="uploadurl">{L_UPLOAD_AVATAR_URL}{L_COLON}</label><br /><span>{L_UPLOAD_AVATAR_URL_EXPLAIN}</span></dt>
|
|
||||||
<dd><input name="uploadurl" type="text" id="uploadurl" value="" /></dd>
|
|
||||||
</dl>
|
|
||||||
<!-- ENDIF -->
|
|
||||||
<!-- IF S_ALLOW_REMOTE -->
|
|
||||||
<dl>
|
|
||||||
<dt><label for="remotelink">{L_LINK_REMOTE_AVATAR}{L_COLON}</label><br /><span>{L_LINK_REMOTE_AVATAR_EXPLAIN}</span></dt>
|
|
||||||
<dd><input name="remotelink" type="text" id="remotelink" value="" /></dd>
|
|
||||||
</dl>
|
|
||||||
<dl>
|
|
||||||
<dt><label for="width">{L_LINK_REMOTE_SIZE}{L_COLON}</label><br /><span>{L_LINK_REMOTE_SIZE_EXPLAIN}</span></dt>
|
|
||||||
<dd><input name="width" type="text" id="width" size="3" value="{USER_AVATAR_WIDTH}" /> <span>{L_PIXEL} × </span> <input type="text" name="height" size="3" value="{USER_AVATAR_HEIGHT}" /> <span>{L_PIXEL}</span></dd>
|
|
||||||
</dl>
|
|
||||||
<!-- ENDIF -->
|
|
||||||
<!-- IF S_DISPLAY_GALLERY -->
|
|
||||||
<dl>
|
|
||||||
<dt><label>{L_AVATAR_GALLERY}{L_COLON}</label></dt>
|
|
||||||
<dd><input class="button2" type="submit" name="display_gallery" value="{L_DISPLAY_GALLERY}" /></dd>
|
|
||||||
</dl>
|
|
||||||
<!-- ENDIF -->
|
|
||||||
<!-- ELSE -->
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<fieldset>
|
|
||||||
<legend>{L_AVATAR_GALLERY}</legend>
|
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="category">{L_AVATAR_CATEGORY}{L_COLON}</label></dt>
|
<dt><label>{L_CURRENT_IMAGE}{L_COLON}</label><br /><span>{L_AVATAR_EXPLAIN}</span></dt>
|
||||||
<dd><select name="category" id="category">{S_CAT_OPTIONS}</select> <input class="button2" type="submit" value="{L_GO}" name="display_gallery" /></dd>
|
<dd>{AVATAR}</dd>
|
||||||
|
<dd><label for="avatar_delete"><input type="checkbox" name="avatar_delete" id="avatar_delete" /> {L_DELETE_AVATAR}</label></dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
</fieldset>
|
||||||
|
<fieldset>
|
||||||
|
<legend>{L_AVATAR_SELECT}</legend>
|
||||||
<dl>
|
<dl>
|
||||||
<table cellspacing="1">
|
<dt><label>{L_AVATAR_TYPE}</label></dt>
|
||||||
<!-- BEGIN avatar_row -->
|
<dd><select name="avatar_driver" id="avatar_driver">
|
||||||
<tr>
|
<option value="">{L_NO_AVATAR_CATEGORY}</option>
|
||||||
<!-- BEGIN avatar_column -->
|
<!-- BEGIN avatar_drivers -->
|
||||||
<td class="row1" style="text-align: center;"><img src="{avatar_row.avatar_column.AVATAR_IMAGE}" alt="{avatar_row.avatar_column.AVATAR_NAME}" title="{avatar_row.avatar_column.AVATAR_NAME}" /></td>
|
<option value="{avatar_drivers.DRIVER}"<!-- IF avatar_drivers.SELECTED --> selected="selected"<!-- ENDIF -->>{avatar_drivers.L_TITLE}</option>
|
||||||
<!-- END avatar_column -->
|
<!-- END avatar_drivers -->
|
||||||
</tr>
|
</select></dd>
|
||||||
<tr>
|
|
||||||
<!-- BEGIN avatar_option_column -->
|
|
||||||
<td class="row2" style="text-align: center;"><input type="radio" class="radio" name="avatar_select" value="{avatar_row.avatar_option_column.S_OPTIONS_AVATAR}" /></td>
|
|
||||||
<!-- END avatar_option_column -->
|
|
||||||
</tr>
|
|
||||||
<!-- END avatar_row -->
|
|
||||||
</table>
|
|
||||||
</dl>
|
</dl>
|
||||||
</fieldset>
|
<div id="avatar_options">
|
||||||
|
<!-- BEGIN avatar_drivers -->
|
||||||
<fieldset class="quick" style="margin-top: -15px;">
|
<div id="avatar_option_{avatar_drivers.DRIVER}">
|
||||||
<input class="button2" type="submit" name="cancel" value="{L_CANCEL}" />
|
<p>{avatar_drivers.L_EXPLAIN}</p>
|
||||||
</fieldset>
|
{avatar_drivers.OUTPUT}
|
||||||
|
</div>
|
||||||
<!-- ENDIF -->
|
<!-- END avatar_drivers -->
|
||||||
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<fieldset class="quick">
|
<fieldset class="quick">
|
||||||
<input class="button1" type="submit" name="update" value="{L_SUBMIT}" />
|
<input type="submit" name="update" value="{L_SUBMIT}" class="button1" />
|
||||||
{S_FORM_TOKEN}
|
{S_FORM_TOKEN}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
<!-- INCLUDEJS avatars.js -->
|
||||||
|
|
|
@ -43,7 +43,7 @@
|
||||||
</dl>
|
</dl>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="user_email">{L_EMAIL}{L_COLON}</label></dt>
|
<dt><label for="user_email">{L_EMAIL}{L_COLON}</label></dt>
|
||||||
<dd><input class="text medium" type="text" id="user_email" name="user_email" value="{USER_EMAIL}" autocomplete="off" /></dd>
|
<dd><input class="text medium" type="email" id="user_email" name="user_email" value="{USER_EMAIL}" autocomplete="off" /></dd>
|
||||||
</dl>
|
</dl>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="new_password">{L_NEW_PASSWORD}{L_COLON}</label><br /><span>{L_CHANGE_PASSWORD_EXPLAIN}</span></dt>
|
<dt><label for="new_password">{L_NEW_PASSWORD}{L_COLON}</label><br /><span>{L_CHANGE_PASSWORD_EXPLAIN}</span></dt>
|
||||||
|
@ -53,6 +53,7 @@
|
||||||
<dt><label for="password_confirm">{L_CONFIRM_PASSWORD}{L_COLON}</label><br /><span>{L_CONFIRM_PASSWORD_EXPLAIN}</span></dt>
|
<dt><label for="password_confirm">{L_CONFIRM_PASSWORD}{L_COLON}</label><br /><span>{L_CONFIRM_PASSWORD_EXPLAIN}</span></dt>
|
||||||
<dd><input type="password" id="password_confirm" name="password_confirm" value="" autocomplete="off" /></dd>
|
<dd><input type="password" id="password_confirm" name="password_confirm" value="" autocomplete="off" /></dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
<!-- EVENT acp_users_overview_options_append -->
|
||||||
|
|
||||||
<p class="quick">
|
<p class="quick">
|
||||||
<input class="button1" type="submit" name="update" value="{L_SUBMIT}" />
|
<input class="button1" type="submit" name="update" value="{L_SUBMIT}" />
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
</dl>
|
</dl>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="msn">{L_UCP_MSNM}{L_COLON}</label></dt>
|
<dt><label for="msn">{L_UCP_MSNM}{L_COLON}</label></dt>
|
||||||
<dd><input type="text" id="msn" name="msn" value="{MSN}" /></dd>
|
<dd><input type="email" id="msn" name="msn" value="{MSN}" /></dd>
|
||||||
</dl>
|
</dl>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="yim">{L_UCP_YIM}{L_COLON}</label></dt>
|
<dt><label for="yim">{L_UCP_YIM}{L_COLON}</label></dt>
|
||||||
|
@ -20,11 +20,11 @@
|
||||||
</dl>
|
</dl>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="jabber">{L_UCP_JABBER}{L_COLON}</label></dt>
|
<dt><label for="jabber">{L_UCP_JABBER}{L_COLON}</label></dt>
|
||||||
<dd><input type="text" id="jabber" name="jabber" value="{JABBER}" /></dd>
|
<dd><input type="email" id="jabber" name="jabber" value="{JABBER}" /></dd>
|
||||||
</dl>
|
</dl>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="website">{L_WEBSITE}{L_COLON}</label></dt>
|
<dt><label for="website">{L_WEBSITE}{L_COLON}</label></dt>
|
||||||
<dd><input type="text" id="website" name="website" value="{WEBSITE}" /></dd>
|
<dd><input type="url" id="website" name="website" value="{WEBSITE}" /></dd>
|
||||||
</dl>
|
</dl>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="location">{L_LOCATION}{L_COLON}</label></dt>
|
<dt><label for="location">{L_LOCATION}{L_COLON}</label></dt>
|
||||||
|
@ -38,7 +38,7 @@
|
||||||
<dt><label for="interests">{L_INTERESTS}{L_COLON}</label></dt>
|
<dt><label for="interests">{L_INTERESTS}{L_COLON}</label></dt>
|
||||||
<dd><textarea id="interests" name="interests" rows="3" cols="30">{INTERESTS}</textarea></dd>
|
<dd><textarea id="interests" name="interests" rows="3" cols="30">{INTERESTS}</textarea></dd>
|
||||||
</dl>
|
</dl>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="birthday">{L_BIRTHDAY}{L_COLON}</label><br /><span>{L_BIRTHDAY_EXPLAIN}</span></dt>
|
<dt><label for="birthday">{L_BIRTHDAY}{L_COLON}</label><br /><span>{L_BIRTHDAY_EXPLAIN}</span></dt>
|
||||||
<dd>{L_DAY}{L_COLON} <select id="birthday" name="bday_day">{S_BIRTHDAY_DAY_OPTIONS}</select> {L_MONTH}{L_COLON} <select name="bday_month">{S_BIRTHDAY_MONTH_OPTIONS}</select> {L_YEAR}{L_COLON} <select name="bday_year">{S_BIRTHDAY_YEAR_OPTIONS}</select></dd>
|
<dd>{L_DAY}{L_COLON} <select id="birthday" name="bday_day">{S_BIRTHDAY_DAY_OPTIONS}</select> {L_MONTH}{L_COLON} <select name="bday_month">{S_BIRTHDAY_MONTH_OPTIONS}</select> {L_YEAR}{L_COLON} <select name="bday_year">{S_BIRTHDAY_YEAR_OPTIONS}</select></dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
@ -48,7 +48,7 @@
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{L_USER_CUSTOM_PROFILE_FIELDS}</legend>
|
<legend>{L_USER_CUSTOM_PROFILE_FIELDS}</legend>
|
||||||
<!-- BEGIN profile_fields -->
|
<!-- BEGIN profile_fields -->
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label<!-- IF profile_fields.FIELD_ID --> for="{profile_fields.FIELD_ID}"<!-- ENDIF -->>{profile_fields.LANG_NAME}{L_COLON}</label><!-- IF profile_fields.LANG_EXPLAIN --><br /><span>{profile_fields.LANG_EXPLAIN}</span><!-- ENDIF --></dt>
|
<dt><label<!-- IF profile_fields.FIELD_ID --> for="{profile_fields.FIELD_ID}"<!-- ENDIF -->>{profile_fields.LANG_NAME}{L_COLON}</label><!-- IF profile_fields.LANG_EXPLAIN --><br /><span>{profile_fields.LANG_EXPLAIN}</span><!-- ENDIF --></dt>
|
||||||
<dd>{profile_fields.FIELD}</dd>
|
<dd>{profile_fields.FIELD}</dd>
|
||||||
<!-- IF profile_fields.ERROR -->
|
<!-- IF profile_fields.ERROR -->
|
||||||
|
|
|
@ -92,7 +92,7 @@
|
||||||
// ]]>
|
// ]]>
|
||||||
</script>
|
</script>
|
||||||
</dt>
|
</dt>
|
||||||
<dd style="margin-{S_CONTENT_FLOW_BEGIN}{L_COLON} 90px;"><textarea name="signature" rows="10" cols="60" style="width: 95%;" onselect="storeCaret(this);" onclick="storeCaret(this);" onkeyup="storeCaret(this);" onfocus="initInsertions();">{SIGNATURE}</textarea></dd>
|
<dd style="margin-{S_CONTENT_FLOW_BEGIN}{L_COLON} 90px;"><textarea name="signature" rows="10" cols="60" style="width: 95%;" onselect="storeCaret(this);" onclick="storeCaret(this);" onkeyup="storeCaret(this);" onfocus="initInsertions();" data-bbcode="true">{SIGNATURE}</textarea></dd>
|
||||||
<dd style="margin-{S_CONTENT_FLOW_BEGIN}{L_COLON} 90px; margin-top: 5px;">
|
<dd style="margin-{S_CONTENT_FLOW_BEGIN}{L_COLON} 90px; margin-top: 5px;">
|
||||||
<!-- IF S_BBCODE_ALLOWED -->
|
<!-- IF S_BBCODE_ALLOWED -->
|
||||||
<label><input type="checkbox" class="radio" name="disable_bbcode"{S_BBCODE_CHECKED} /> {L_DISABLE_BBCODE}</label>
|
<label><input type="checkbox" class="radio" name="disable_bbcode"{S_BBCODE_CHECKED} /> {L_DISABLE_BBCODE}</label>
|
||||||
|
|
|
@ -1098,12 +1098,13 @@ input.disabled {
|
||||||
border: 1px solid #999999;
|
border: 1px solid #999999;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
display: none;
|
display: none;
|
||||||
top: 100px;
|
top: 150px;
|
||||||
left: 35%;
|
left: 25%;
|
||||||
width: 30%;
|
width: 50%;
|
||||||
z-index: 50;
|
z-index: 50;
|
||||||
padding: 25px;
|
padding: 25px;
|
||||||
padding: 0 25px 20px 25px;
|
padding: 0 25px 20px 25px;
|
||||||
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
.phpbb_alert .alert_close {
|
.phpbb_alert .alert_close {
|
||||||
|
@ -1127,6 +1128,20 @@ input.disabled {
|
||||||
padding-bottom: 8px;
|
padding-bottom: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.phpbb_alert label {
|
||||||
|
display: block;
|
||||||
|
margin: 8px 0;
|
||||||
|
padding-bottom: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.phpbb_alert div.alert_text > p,
|
||||||
|
.phpbb_alert div.alert_text > label,
|
||||||
|
.phpbb_alert div.alert_text > select,
|
||||||
|
.phpbb_alert div.alert_text > textarea,
|
||||||
|
.phpbb_alert div.alert_text > input {
|
||||||
|
font-size: 0.9em;
|
||||||
|
}
|
||||||
|
|
||||||
#darkenwrapper {
|
#darkenwrapper {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,11 +2,11 @@
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var img_templates = {
|
var imgTemplates = {
|
||||||
up: $('.template-up-img'),
|
up: $('.template-up-img'),
|
||||||
up_disabled: $('.template-up-img-disabled'),
|
upDisabled: $('.template-up-img-disabled'),
|
||||||
down: $('.template-down-img'),
|
down: $('.template-down-img'),
|
||||||
down_disabled: $('.template-down-img-disabled')
|
downDisabled: $('.template-down-img-disabled')
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -15,20 +15,19 @@ var img_templates = {
|
||||||
* an item is moved up. It moves the row up or down, and deactivates /
|
* an item is moved up. It moves the row up or down, and deactivates /
|
||||||
* activates any up / down icons that require it (the ones at the top or bottom).
|
* activates any up / down icons that require it (the ones at the top or bottom).
|
||||||
*/
|
*/
|
||||||
phpbb.add_ajax_callback('row_down', function() {
|
phpbb.addAjaxCallback('row_down', function() {
|
||||||
var el = $(this),
|
var el = $(this),
|
||||||
tr = el.parents('tr'),
|
tr = el.parents('tr'),
|
||||||
tr_swap = tr.next();
|
trSwap = tr.next();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If the element was the first one, we have to:
|
* If the element was the first one, we have to:
|
||||||
* - Add the up-link to the row we moved
|
* - Add the up-link to the row we moved
|
||||||
* - Remove the up-link on the next row
|
* - Remove the up-link on the next row
|
||||||
*/
|
*/
|
||||||
if (tr.is(':first-child'))
|
if (tr.is(':first-child')) {
|
||||||
{
|
var upImg = imgTemplates.up.clone().attr('href', tr.attr('data-up'));
|
||||||
var up_img = img_templates.up.clone().attr('href', tr.attr('data-up'));
|
tr.find('.up').html(upImg);
|
||||||
tr.find('.up').html(up_img);
|
|
||||||
|
|
||||||
phpbb.ajaxify({
|
phpbb.ajaxify({
|
||||||
selector: tr.find('.up').children('a'),
|
selector: tr.find('.up').children('a'),
|
||||||
|
@ -36,45 +35,43 @@ phpbb.add_ajax_callback('row_down', function() {
|
||||||
overlay: false
|
overlay: false
|
||||||
});
|
});
|
||||||
|
|
||||||
tr_swap.find('.up').html(img_templates.up_disabled.clone());
|
trSwap.find('.up').html(imgTemplates.upDisabled.clone());
|
||||||
}
|
}
|
||||||
|
|
||||||
tr.insertAfter(tr_swap);
|
tr.insertAfter(trSwap);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* As well as:
|
* As well as:
|
||||||
* - Remove the down-link on the moved row, if it is now the last row
|
* - Remove the down-link on the moved row, if it is now the last row
|
||||||
* - Add the down-link to the next row, if it was the last row
|
* - Add the down-link to the next row, if it was the last row
|
||||||
*/
|
*/
|
||||||
if (tr.is(':last-child'))
|
if (tr.is(':last-child')) {
|
||||||
{
|
tr.find('.down').html(imgTemplates.downDisabled.clone());
|
||||||
tr.find('.down').html(img_templates.down_disabled.clone());
|
|
||||||
|
|
||||||
var down_img = img_templates.down.clone().attr('href', tr_swap.attr('data-down'));
|
var downImg = imgTemplates.down.clone().attr('href', trSwap.attr('data-down'));
|
||||||
tr_swap.find('.down').html(down_img);
|
trSwap.find('.down').html(downImg);
|
||||||
|
|
||||||
phpbb.ajaxify({
|
phpbb.ajaxify({
|
||||||
selector: tr_swap.find('.down').children('a'),
|
selector: trSwap.find('.down').children('a'),
|
||||||
callback: 'row_down',
|
callback: 'row_down',
|
||||||
overlay: false
|
overlay: false
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
phpbb.add_ajax_callback('row_up', function() {
|
phpbb.addAjaxCallback('row_up', function() {
|
||||||
var el = $(this),
|
var el = $(this),
|
||||||
tr = el.parents('tr'),
|
tr = el.parents('tr'),
|
||||||
tr_swap = tr.prev();
|
trSwap = tr.prev();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If the element was the last one, we have to:
|
* If the element was the last one, we have to:
|
||||||
* - Add the down-link to the row we moved
|
* - Add the down-link to the row we moved
|
||||||
* - Remove the down-link on the next row
|
* - Remove the down-link on the next row
|
||||||
*/
|
*/
|
||||||
if (tr.is(':last-child'))
|
if (tr.is(':last-child')) {
|
||||||
{
|
var downImg = imgTemplates.down.clone().attr('href', tr.attr('data-down'));
|
||||||
var down_img = img_templates.down.clone().attr('href', tr.attr('data-down'));
|
tr.find('.down').html(downImg);
|
||||||
tr.find('.down').html(down_img);
|
|
||||||
|
|
||||||
phpbb.ajaxify({
|
phpbb.ajaxify({
|
||||||
selector: tr.find('.down').children('a'),
|
selector: tr.find('.down').children('a'),
|
||||||
|
@ -82,25 +79,24 @@ phpbb.add_ajax_callback('row_up', function() {
|
||||||
overlay: false
|
overlay: false
|
||||||
});
|
});
|
||||||
|
|
||||||
tr_swap.find('.down').html(img_templates.down_disabled.clone());
|
trSwap.find('.down').html(imgTemplates.downDisabled.clone());
|
||||||
}
|
}
|
||||||
|
|
||||||
tr.insertBefore(tr_swap);
|
tr.insertBefore(trSwap);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* As well as:
|
* As well as:
|
||||||
* - Remove the up-link on the moved row, if it is now the first row
|
* - Remove the up-link on the moved row, if it is now the first row
|
||||||
* - Add the up-link to the previous row, if it was the first row
|
* - Add the up-link to the previous row, if it was the first row
|
||||||
*/
|
*/
|
||||||
if (tr.is(':first-child'))
|
if (tr.is(':first-child')) {
|
||||||
{
|
tr.find('.up').html(imgTemplates.upDisabled.clone());
|
||||||
tr.find('.up').html(img_templates.up_disabled.clone());
|
|
||||||
|
|
||||||
var up_img = img_templates.up.clone().attr('href', tr_swap.attr('data-up'));
|
var upImg = imgTemplates.up.clone().attr('href', trSwap.attr('data-up'));
|
||||||
tr_swap.find('.up').html(up_img);
|
trSwap.find('.up').html(upImg);
|
||||||
|
|
||||||
phpbb.ajaxify({
|
phpbb.ajaxify({
|
||||||
selector: tr_swap.find('.up').children('a'),
|
selector: trSwap.find('.up').children('a'),
|
||||||
callback: 'row_up',
|
callback: 'row_up',
|
||||||
overlay: false
|
overlay: false
|
||||||
});
|
});
|
||||||
|
@ -112,30 +108,29 @@ phpbb.add_ajax_callback('row_up', function() {
|
||||||
* It does this by replacing the text, and replacing all instances of "activate"
|
* It does this by replacing the text, and replacing all instances of "activate"
|
||||||
* in the href with "deactivate", and vice versa.
|
* in the href with "deactivate", and vice versa.
|
||||||
*/
|
*/
|
||||||
phpbb.add_ajax_callback('activate_deactivate', function(res) {
|
phpbb.addAjaxCallback('activate_deactivate', function(res) {
|
||||||
var el = $(this),
|
var el = $(this),
|
||||||
new_href = el.attr('href');
|
newHref = el.attr('href');
|
||||||
|
|
||||||
el.text(res.text);
|
el.text(res.text);
|
||||||
|
|
||||||
if (new_href.indexOf('deactivate') !== -1)
|
if (newHref.indexOf('deactivate') !== -1) {
|
||||||
{
|
newHref = newHref.replace('deactivate', 'activate');
|
||||||
new_href = new_href.replace('deactivate', 'activate')
|
} else {
|
||||||
}
|
newHref = newHref.replace('activate', 'deactivate');
|
||||||
else
|
|
||||||
{
|
|
||||||
new_href = new_href.replace('activate', 'deactivate')
|
|
||||||
}
|
}
|
||||||
|
|
||||||
el.attr('href', new_href);
|
el.attr('href', newHref);
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The removes the parent row of the link or form that triggered the callback,
|
* The removes the parent row of the link or form that triggered the callback,
|
||||||
* and is good for stuff like the removal of forums.
|
* and is good for stuff like the removal of forums.
|
||||||
*/
|
*/
|
||||||
phpbb.add_ajax_callback('row_delete', function() {
|
phpbb.addAjaxCallback('row_delete', function(res) {
|
||||||
$(this).parents('tr').remove();
|
if (res.SUCCESS !== false) {
|
||||||
|
$(this).parents('tr').remove();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
@ -145,8 +140,7 @@ $('[data-ajax]').each(function() {
|
||||||
ajax = $this.attr('data-ajax'),
|
ajax = $this.attr('data-ajax'),
|
||||||
fn;
|
fn;
|
||||||
|
|
||||||
if (ajax !== 'false')
|
if (ajax !== 'false') {
|
||||||
{
|
|
||||||
fn = (ajax !== 'true') ? ajax : null;
|
fn = (ajax !== 'true') ? ajax : null;
|
||||||
phpbb.ajaxify({
|
phpbb.ajaxify({
|
||||||
selector: this,
|
selector: this,
|
||||||
|
@ -156,6 +150,12 @@ $('[data-ajax]').each(function() {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Automatically resize textarea
|
||||||
|
*/
|
||||||
|
$(document).ready(function() {
|
||||||
|
phpbb.resizeTextArea($('textarea:not(.no-auto-resize)'), {minHeight: 75});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
})(jQuery); // Avoid conflicts with other libraries
|
})(jQuery); // Avoid conflicts with other libraries
|
||||||
|
|
32
phpBB/adm/style/auth_provider_ldap.html
Normal file
32
phpBB/adm/style/auth_provider_ldap.html
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
<dl>
|
||||||
|
<dt><label for="ldap_server">{L_LDAP_SERVER}{L_COLON}</label><br /><span>{L_LDAP_SERVER_EXPLAIN}</span></dt>
|
||||||
|
<dd><input type="text" id="ldap_server" size="40" name="config[ldap_server]" value="{AUTH_LDAP_SERVER}" /></dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="ldap_port">{L_LDAP_PORT}{L_COLON}</label><br /><span>{L_LDAP_PORT_EXPLAIN}</span></dt>
|
||||||
|
<dd><input type="text" id="ldap_port" size="40" name="config[ldap_port]" value="{AUTH_LDAP_PORT}" /></dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="ldap_dn">{L_LDAP_DN}{L_COLON}</label><br /><span>{L_LDAP_DN_EXPLAIN}</span></dt>
|
||||||
|
<dd><input type="text" id="ldap_dn" size="40" name="config[ldap_base_dn]" value="{AUTH_LDAP_BASE_DN}" /></dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="ldap_uid">{L_LDAP_UID}{L_COLON}</label><br /><span>{L_LDAP_UID_EXPLAIN}</span></dt>
|
||||||
|
<dd><input type="text" id="ldap_uid" size="40" name="config[ldap_uid]" value="{AUTH_LDAP_UID}" /></dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="ldap_user_filter">{L_LDAP_USER_FILTER}{L_COLON}</label><br /><span>{L_LDAP_USER_FILTER_EXPLAIN}</span></dt>
|
||||||
|
<dd><input type="text" id="ldap_user_filter" size="40" name="config[ldap_user_filter]" value="{AUTH_LDAP_USER_FILTER}" /></dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="ldap_email">{L_LDAP_EMAIL}{L_COLON}</label><br /><span>{L_LDAP_EMAIL_EXPLAIN}</span></dt>
|
||||||
|
<dd><input type="email" id="ldap_email" size="40" name="config[ldap_email]" value="{AUTH_LDAP_EMAIL}" /></dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="ldap_user">{L_LDAP_USER}{L_COLON}</label><br /><span>{L_LDAP_USER_EXPLAIN}</span></dt>
|
||||||
|
<dd><input type="text" id="ldap_user" size="40" name="config[ldap_user]" value="{AUTH_LDAP_USER}" /></dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="ldap_password">{L_LDAP_PASSWORD}{L_COLON}</label><br /><span>{L_LDAP_PASSWORD_EXPLAIN}</span></dt>
|
||||||
|
<dd><input type="password" id="ldap_password" size="40" name="config[ldap_password]" value="{AUTH_LDAP_PASSWORD}" autocomplete="off" /></dd>
|
||||||
|
</dl>
|
15
phpBB/adm/style/avatars.js
Normal file
15
phpBB/adm/style/avatars.js
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
(function($) { // Avoid conflicts with other libraries
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
function avatarHide() {
|
||||||
|
$('#avatar_options > div').hide();
|
||||||
|
|
||||||
|
var selected = $('#avatar_driver').val();
|
||||||
|
$('#avatar_option_' + selected).show();
|
||||||
|
}
|
||||||
|
|
||||||
|
avatarHide();
|
||||||
|
$('#avatar_driver').bind('change', avatarHide);
|
||||||
|
|
||||||
|
})(jQuery); // Avoid conflicts with other libraries
|
|
@ -20,11 +20,11 @@
|
||||||
</dl>
|
</dl>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="captcha_gd_x_grid">{L_CAPTCHA_GD_X_GRID}{L_COLON}</label><br /><span>{L_CAPTCHA_GD_X_GRID_EXPLAIN}</span></dt>
|
<dt><label for="captcha_gd_x_grid">{L_CAPTCHA_GD_X_GRID}{L_COLON}</label><br /><span>{L_CAPTCHA_GD_X_GRID_EXPLAIN}</span></dt>
|
||||||
<dd><input id="captcha_gd_x_grid" name="captcha_gd_x_grid" value="{CAPTCHA_GD_X_GRID}" type="text" /></dd>
|
<dd><input id="captcha_gd_x_grid" name="captcha_gd_x_grid" value="{CAPTCHA_GD_X_GRID}" type="number" /></dd>
|
||||||
</dl>
|
</dl>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="captcha_gd_y_grid">{L_CAPTCHA_GD_Y_GRID}{L_COLON}</label><br /><span>{L_CAPTCHA_GD_Y_GRID_EXPLAIN}</span></dt>
|
<dt><label for="captcha_gd_y_grid">{L_CAPTCHA_GD_Y_GRID}{L_COLON}</label><br /><span>{L_CAPTCHA_GD_Y_GRID_EXPLAIN}</span></dt>
|
||||||
<dd><input id="captcha_gd_y_grid" name="captcha_gd_y_grid" value="{CAPTCHA_GD_Y_GRID}" type="text" /></dd>
|
<dd><input id="captcha_gd_y_grid" name="captcha_gd_y_grid" value="{CAPTCHA_GD_Y_GRID}" type="number" /></dd>
|
||||||
</dl>
|
</dl>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="captcha_gd_wave">{L_CAPTCHA_GD_WAVE}{L_COLON}</label><br /><span>{L_CAPTCHA_GD_WAVE_EXPLAIN}</span></dt>
|
<dt><label for="captcha_gd_wave">{L_CAPTCHA_GD_WAVE}{L_COLON}</label><br /><span>{L_CAPTCHA_GD_WAVE_EXPLAIN}</span></dt>
|
||||||
|
|
|
@ -1,3 +1,15 @@
|
||||||
|
<!-- IF S_AJAX_REQUEST -->
|
||||||
|
|
||||||
|
<h3>{MESSAGE_TITLE}</h3>
|
||||||
|
<p>{MESSAGE_TEXT}</p>
|
||||||
|
|
||||||
|
<fieldset class="submit-buttons">
|
||||||
|
<input type="button" name="confirm" value="{L_YES}" class="button2" />
|
||||||
|
<input type="button" name="cancel" value="{L_NO}" class="button2" />
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
<!-- ELSE -->
|
||||||
|
|
||||||
<!-- INCLUDE overall_header.html -->
|
<!-- INCLUDE overall_header.html -->
|
||||||
|
|
||||||
<form id="confirm" method="post" action="{S_CONFIRM_ACTION}">
|
<form id="confirm" method="post" action="{S_CONFIRM_ACTION}">
|
||||||
|
@ -14,7 +26,7 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<!-- INCLUDE overall_footer.html -->
|
<!-- INCLUDE overall_footer.html -->
|
||||||
|
<!-- ENDIF -->
|
||||||
|
|
|
@ -10,18 +10,16 @@ var theSelection = false;
|
||||||
// Check for Browser & Platform for PC & IE specific bits
|
// Check for Browser & Platform for PC & IE specific bits
|
||||||
// More details from: http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html
|
// More details from: http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html
|
||||||
var clientPC = navigator.userAgent.toLowerCase(); // Get client info
|
var clientPC = navigator.userAgent.toLowerCase(); // Get client info
|
||||||
var clientVer = parseInt(navigator.appVersion); // Get browser version
|
var clientVer = parseInt(navigator.appVersion, 10); // Get browser version
|
||||||
|
|
||||||
var is_ie = ((clientPC.indexOf('msie') != -1) && (clientPC.indexOf('opera') == -1));
|
|
||||||
var is_win = ((clientPC.indexOf('win') != -1) || (clientPC.indexOf('16bit') != -1));
|
|
||||||
|
|
||||||
|
var is_ie = ((clientPC.indexOf('msie') !== -1) && (clientPC.indexOf('opera') === -1));
|
||||||
|
var is_win = ((clientPC.indexOf('win') !== -1) || (clientPC.indexOf('16bit') !== -1));
|
||||||
var baseHeight;
|
var baseHeight;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Shows the help messages in the helpline window
|
* Shows the help messages in the helpline window
|
||||||
*/
|
*/
|
||||||
function helpline(help)
|
function helpline(help) {
|
||||||
{
|
|
||||||
document.forms[form_name].helpbox.value = help_line[help];
|
document.forms[form_name].helpbox.value = help_line[help];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,26 +27,22 @@ function helpline(help)
|
||||||
* Fix a bug involving the TextRange object. From
|
* Fix a bug involving the TextRange object. From
|
||||||
* http://www.frostjedi.com/terra/scripts/demo/caretBug.html
|
* http://www.frostjedi.com/terra/scripts/demo/caretBug.html
|
||||||
*/
|
*/
|
||||||
function initInsertions()
|
function initInsertions() {
|
||||||
{
|
|
||||||
var doc;
|
var doc;
|
||||||
if(document.forms[form_name])
|
|
||||||
{
|
if (document.forms[form_name]) {
|
||||||
doc = document;
|
doc = document;
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
doc = opener.document;
|
doc = opener.document;
|
||||||
}
|
}
|
||||||
|
|
||||||
var textarea = doc.forms[form_name].elements[text_name];
|
var textarea = doc.forms[form_name].elements[text_name];
|
||||||
if (is_ie && typeof(baseHeight) != 'number')
|
|
||||||
{
|
if (is_ie && typeof(baseHeight) !== 'number') {
|
||||||
textarea.focus();
|
textarea.focus();
|
||||||
baseHeight = doc.selection.createRange().duplicate().boundingHeight;
|
baseHeight = doc.selection.createRange().duplicate().boundingHeight;
|
||||||
|
|
||||||
if (!document.forms[form_name])
|
if (!document.forms[form_name]) {
|
||||||
{
|
|
||||||
document.body.focus();
|
document.body.focus();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -57,69 +51,59 @@ function initInsertions()
|
||||||
/**
|
/**
|
||||||
* bbstyle
|
* bbstyle
|
||||||
*/
|
*/
|
||||||
function bbstyle(bbnumber)
|
function bbstyle(bbnumber) {
|
||||||
{
|
if (bbnumber !== -1) {
|
||||||
if (bbnumber != -1)
|
|
||||||
{
|
|
||||||
bbfontstyle(bbtags[bbnumber], bbtags[bbnumber+1]);
|
bbfontstyle(bbtags[bbnumber], bbtags[bbnumber+1]);
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
insert_text('[*]');
|
insert_text('[*]');
|
||||||
document.forms[form_name].elements[text_name].focus();
|
document.forms[form_name].elements[text_name].focus();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Apply bbcodes
|
* Apply bbcodes
|
||||||
*/
|
*/
|
||||||
function bbfontstyle(bbopen, bbclose)
|
function bbfontstyle(bbopen, bbclose) {
|
||||||
{
|
|
||||||
theSelection = false;
|
theSelection = false;
|
||||||
|
|
||||||
var textarea = document.forms[form_name].elements[text_name];
|
var textarea = document.forms[form_name].elements[text_name];
|
||||||
|
|
||||||
textarea.focus();
|
textarea.focus();
|
||||||
|
|
||||||
if ((clientVer >= 4) && is_ie && is_win)
|
if ((clientVer >= 4) && is_ie && is_win) {
|
||||||
{
|
|
||||||
// Get text selection
|
// Get text selection
|
||||||
theSelection = document.selection.createRange().text;
|
theSelection = document.selection.createRange().text;
|
||||||
|
|
||||||
if (theSelection)
|
if (theSelection) {
|
||||||
{
|
|
||||||
// Add tags around selection
|
// Add tags around selection
|
||||||
document.selection.createRange().text = bbopen + theSelection + bbclose;
|
document.selection.createRange().text = bbopen + theSelection + bbclose;
|
||||||
document.forms[form_name].elements[text_name].focus();
|
document.forms[form_name].elements[text_name].focus();
|
||||||
theSelection = '';
|
theSelection = '';
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
} else if (document.forms[form_name].elements[text_name].selectionEnd
|
||||||
else if (document.forms[form_name].elements[text_name].selectionEnd && (document.forms[form_name].elements[text_name].selectionEnd - document.forms[form_name].elements[text_name].selectionStart > 0))
|
&& (document.forms[form_name].elements[text_name].selectionEnd - document.forms[form_name].elements[text_name].selectionStart > 0)) {
|
||||||
{
|
|
||||||
mozWrap(document.forms[form_name].elements[text_name], bbopen, bbclose);
|
mozWrap(document.forms[form_name].elements[text_name], bbopen, bbclose);
|
||||||
document.forms[form_name].elements[text_name].focus();
|
document.forms[form_name].elements[text_name].focus();
|
||||||
theSelection = '';
|
theSelection = '';
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//The new position for the cursor after adding the bbcode
|
//The new position for the cursor after adding the bbcode
|
||||||
var caret_pos = getCaretPosition(textarea).start;
|
var caret_pos = getCaretPosition(textarea).start;
|
||||||
var new_pos = caret_pos + bbopen.length;
|
var new_pos = caret_pos + bbopen.length;
|
||||||
|
|
||||||
// Open tag
|
// Open tag
|
||||||
insert_text(bbopen + bbclose);
|
insert_text(bbopen + bbclose);
|
||||||
|
|
||||||
// Center the cursor when we don't have a selection
|
// Center the cursor when we don't have a selection
|
||||||
// Gecko and proper browsers
|
// Gecko and proper browsers
|
||||||
if (!isNaN(textarea.selectionStart))
|
if (!isNaN(textarea.selectionStart)) {
|
||||||
{
|
|
||||||
textarea.selectionStart = new_pos;
|
textarea.selectionStart = new_pos;
|
||||||
textarea.selectionEnd = new_pos;
|
textarea.selectionEnd = new_pos;
|
||||||
}
|
}
|
||||||
// IE
|
// IE
|
||||||
else if (document.selection)
|
else if (document.selection) {
|
||||||
{
|
|
||||||
var range = textarea.createTextRange();
|
var range = textarea.createTextRange();
|
||||||
range.move("character", new_pos);
|
range.move("character", new_pos);
|
||||||
range.select();
|
range.select();
|
||||||
|
@ -133,62 +117,47 @@ function bbfontstyle(bbopen, bbclose)
|
||||||
/**
|
/**
|
||||||
* Insert text at position
|
* Insert text at position
|
||||||
*/
|
*/
|
||||||
function insert_text(text, spaces, popup)
|
function insert_text(text, spaces, popup) {
|
||||||
{
|
|
||||||
var textarea;
|
var textarea;
|
||||||
|
|
||||||
if (!popup)
|
if (!popup) {
|
||||||
{
|
|
||||||
textarea = document.forms[form_name].elements[text_name];
|
textarea = document.forms[form_name].elements[text_name];
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
textarea = opener.document.forms[form_name].elements[text_name];
|
textarea = opener.document.forms[form_name].elements[text_name];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (spaces)
|
if (spaces) {
|
||||||
{
|
|
||||||
text = ' ' + text + ' ';
|
text = ' ' + text + ' ';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isNaN(textarea.selectionStart))
|
if (!isNaN(textarea.selectionStart)) {
|
||||||
{
|
|
||||||
var sel_start = textarea.selectionStart;
|
var sel_start = textarea.selectionStart;
|
||||||
var sel_end = textarea.selectionEnd;
|
var sel_end = textarea.selectionEnd;
|
||||||
|
|
||||||
mozWrap(textarea, text, '');
|
mozWrap(textarea, text, '');
|
||||||
textarea.selectionStart = sel_start + text.length;
|
textarea.selectionStart = sel_start + text.length;
|
||||||
textarea.selectionEnd = sel_end + text.length;
|
textarea.selectionEnd = sel_end + text.length;
|
||||||
}
|
} else if (textarea.createTextRange && textarea.caretPos) {
|
||||||
|
if (baseHeight !== textarea.caretPos.boundingHeight) {
|
||||||
else if (textarea.createTextRange && textarea.caretPos)
|
|
||||||
{
|
|
||||||
if (baseHeight != textarea.caretPos.boundingHeight)
|
|
||||||
{
|
|
||||||
textarea.focus();
|
textarea.focus();
|
||||||
storeCaret(textarea);
|
storeCaret(textarea);
|
||||||
}
|
}
|
||||||
|
|
||||||
var caret_pos = textarea.caretPos;
|
var caret_pos = textarea.caretPos;
|
||||||
caret_pos.text = caret_pos.text.charAt(caret_pos.text.length - 1) == ' ' ? caret_pos.text + text + ' ' : caret_pos.text + text;
|
caret_pos.text = caret_pos.text.charAt(caret_pos.text.length - 1) === ' ' ? caret_pos.text + text + ' ' : caret_pos.text + text;
|
||||||
|
} else {
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
textarea.value = textarea.value + text;
|
textarea.value = textarea.value + text;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!popup)
|
if (!popup) {
|
||||||
{
|
|
||||||
textarea.focus();
|
textarea.focus();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add inline attachment at position
|
* Add inline attachment at position
|
||||||
*/
|
*/
|
||||||
function attach_inline(index, filename)
|
function attach_inline(index, filename) {
|
||||||
{
|
|
||||||
insert_text('[attachment=' + index + ']' + filename + '[/attachment]');
|
insert_text('[attachment=' + index + ']' + filename + '[/attachment]');
|
||||||
document.forms[form_name].elements[text_name].focus();
|
document.forms[form_name].elements[text_name].focus();
|
||||||
}
|
}
|
||||||
|
@ -202,56 +171,39 @@ function addquote(post_id, username)
|
||||||
var theSelection = '';
|
var theSelection = '';
|
||||||
var divarea = false;
|
var divarea = false;
|
||||||
|
|
||||||
if (document.all)
|
if (document.all) {
|
||||||
{
|
|
||||||
divarea = document.all[message_name];
|
divarea = document.all[message_name];
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
divarea = document.getElementById(message_name);
|
divarea = document.getElementById(message_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get text selection - not only the post content :(
|
// Get text selection - not only the post content :(
|
||||||
if (window.getSelection)
|
if (window.getSelection) {
|
||||||
{
|
|
||||||
theSelection = window.getSelection().toString();
|
theSelection = window.getSelection().toString();
|
||||||
}
|
} else if (document.getSelection) {
|
||||||
else if (document.getSelection)
|
|
||||||
{
|
|
||||||
theSelection = document.getSelection();
|
theSelection = document.getSelection();
|
||||||
}
|
} else if (document.selection) {
|
||||||
else if (document.selection)
|
|
||||||
{
|
|
||||||
theSelection = document.selection.createRange().text;
|
theSelection = document.selection.createRange().text;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (theSelection == '' || typeof theSelection == 'undefined' || theSelection == null)
|
if (theSelection === '' || typeof theSelection === 'undefined' || theSelection === null) {
|
||||||
{
|
if (divarea.innerHTML) {
|
||||||
if (divarea.innerHTML)
|
|
||||||
{
|
|
||||||
theSelection = divarea.innerHTML.replace(/<br>/ig, '\n');
|
theSelection = divarea.innerHTML.replace(/<br>/ig, '\n');
|
||||||
theSelection = theSelection.replace(/<br\/>/ig, '\n');
|
theSelection = theSelection.replace(/<br\/>/ig, '\n');
|
||||||
theSelection = theSelection.replace(/<\;/ig, '<');
|
theSelection = theSelection.replace(/<\;/ig, '<');
|
||||||
theSelection = theSelection.replace(/>\;/ig, '>');
|
theSelection = theSelection.replace(/>\;/ig, '>');
|
||||||
theSelection = theSelection.replace(/&\;/ig, '&');
|
theSelection = theSelection.replace(/&\;/ig, '&');
|
||||||
theSelection = theSelection.replace(/ \;/ig, ' ');
|
theSelection = theSelection.replace(/ \;/ig, ' ');
|
||||||
}
|
} else if (document.all) {
|
||||||
else if (document.all)
|
|
||||||
{
|
|
||||||
theSelection = divarea.innerText;
|
theSelection = divarea.innerText;
|
||||||
}
|
} else if (divarea.textContent) {
|
||||||
else if (divarea.textContent)
|
|
||||||
{
|
|
||||||
theSelection = divarea.textContent;
|
theSelection = divarea.textContent;
|
||||||
}
|
} else if (divarea.firstChild.nodeValue) {
|
||||||
else if (divarea.firstChild.nodeValue)
|
|
||||||
{
|
|
||||||
theSelection = divarea.firstChild.nodeValue;
|
theSelection = divarea.firstChild.nodeValue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (theSelection)
|
if (theSelection) {
|
||||||
{
|
|
||||||
insert_text('[quote="' + username + '"]' + theSelection + '[/quote]');
|
insert_text('[quote="' + username + '"]' + theSelection + '[/quote]');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -261,15 +213,13 @@ function addquote(post_id, username)
|
||||||
/**
|
/**
|
||||||
* From http://www.massless.org/mozedit/
|
* From http://www.massless.org/mozedit/
|
||||||
*/
|
*/
|
||||||
function mozWrap(txtarea, open, close)
|
function mozWrap(txtarea, open, close) {
|
||||||
{
|
var selLength = (typeof(txtarea.textLength) === 'undefined') ? txtarea.value.length : txtarea.textLength;
|
||||||
var selLength = (typeof(txtarea.textLength) == 'undefined') ? txtarea.value.length : txtarea.textLength;
|
|
||||||
var selStart = txtarea.selectionStart;
|
var selStart = txtarea.selectionStart;
|
||||||
var selEnd = txtarea.selectionEnd;
|
var selEnd = txtarea.selectionEnd;
|
||||||
var scrollTop = txtarea.scrollTop;
|
var scrollTop = txtarea.scrollTop;
|
||||||
|
|
||||||
if (selEnd == 1 || selEnd == 2)
|
if (selEnd === 1 || selEnd === 2) {
|
||||||
{
|
|
||||||
selEnd = selLength;
|
selEnd = selLength;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -290,10 +240,8 @@ function mozWrap(txtarea, open, close)
|
||||||
* Insert at Caret position. Code from
|
* Insert at Caret position. Code from
|
||||||
* http://www.faqts.com/knowledge_base/view.phtml/aid/1052/fid/130
|
* http://www.faqts.com/knowledge_base/view.phtml/aid/1052/fid/130
|
||||||
*/
|
*/
|
||||||
function storeCaret(textEl)
|
function storeCaret(textEl) {
|
||||||
{
|
if (textEl.createTextRange) {
|
||||||
if (textEl.createTextRange)
|
|
||||||
{
|
|
||||||
textEl.caretPos = document.selection.createRange().duplicate();
|
textEl.caretPos = document.selection.createRange().duplicate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -301,8 +249,7 @@ function storeCaret(textEl)
|
||||||
/**
|
/**
|
||||||
* Color pallette
|
* Color pallette
|
||||||
*/
|
*/
|
||||||
function colorPalette(dir, width, height)
|
function colorPalette(dir, width, height) {
|
||||||
{
|
|
||||||
var r = 0, g = 0, b = 0;
|
var r = 0, g = 0, b = 0;
|
||||||
var numberList = new Array(6);
|
var numberList = new Array(6);
|
||||||
var color = '';
|
var color = '';
|
||||||
|
@ -315,88 +262,74 @@ function colorPalette(dir, width, height)
|
||||||
|
|
||||||
document.writeln('<table class="type2">');
|
document.writeln('<table class="type2">');
|
||||||
|
|
||||||
for (r = 0; r < 5; r++)
|
for (r = 0; r < 5; r++) {
|
||||||
{
|
if (dir === 'h') {
|
||||||
if (dir == 'h')
|
|
||||||
{
|
|
||||||
document.writeln('<tr>');
|
document.writeln('<tr>');
|
||||||
}
|
}
|
||||||
|
|
||||||
for (g = 0; g < 5; g++)
|
for (g = 0; g < 5; g++) {
|
||||||
{
|
if (dir === 'v') {
|
||||||
if (dir == 'v')
|
|
||||||
{
|
|
||||||
document.writeln('<tr>');
|
document.writeln('<tr>');
|
||||||
}
|
}
|
||||||
|
|
||||||
for (b = 0; b < 5; b++)
|
for (b = 0; b < 5; b++) {
|
||||||
{
|
|
||||||
color = String(numberList[r]) + String(numberList[g]) + String(numberList[b]);
|
color = String(numberList[r]) + String(numberList[g]) + String(numberList[b]);
|
||||||
document.write('<td bgcolor="#' + color + '" style="width: ' + width + 'px; height: ' + height + 'px;">');
|
document.write('<td bgcolor="#' + color + '" style="width: ' + width + 'px; height: ' + height + 'px;">');
|
||||||
document.write('<a href="#" onclick="bbfontstyle(\'[color=#' + color + ']\', \'[/color]\'); return false;"><img src="images/spacer.gif" width="' + width + '" height="' + height + '" alt="#' + color + '" title="#' + color + '" /></a>');
|
document.write('<a href="#" onclick="bbfontstyle(\'[color=#' + color + ']\', \'[/color]\'); return false;"><img src="images/spacer.gif" width="' + width + '" height="' + height + '" alt="#' + color + '" title="#' + color + '" /></a>');
|
||||||
document.writeln('</td>');
|
document.writeln('</td>');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dir == 'v')
|
if (dir === 'v') {
|
||||||
{
|
|
||||||
document.writeln('</tr>');
|
document.writeln('</tr>');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dir == 'h')
|
if (dir === 'h') {
|
||||||
{
|
|
||||||
document.writeln('</tr>');
|
document.writeln('</tr>');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
document.writeln('</table>');
|
document.writeln('</table>');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Caret Position object
|
* Caret Position object
|
||||||
*/
|
*/
|
||||||
function caretPosition()
|
function caretPosition() {
|
||||||
{
|
|
||||||
var start = null;
|
var start = null;
|
||||||
var end = null;
|
var end = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the caret position in an textarea
|
* Get the caret position in an textarea
|
||||||
*/
|
*/
|
||||||
function getCaretPosition(txtarea)
|
function getCaretPosition(txtarea) {
|
||||||
{
|
|
||||||
var caretPos = new caretPosition();
|
var caretPos = new caretPosition();
|
||||||
|
|
||||||
// simple Gecko/Opera way
|
// simple Gecko/Opera way
|
||||||
if (txtarea.selectionStart || txtarea.selectionStart == 0)
|
if (txtarea.selectionStart || txtarea.selectionStart === 0) {
|
||||||
{
|
|
||||||
caretPos.start = txtarea.selectionStart;
|
caretPos.start = txtarea.selectionStart;
|
||||||
caretPos.end = txtarea.selectionEnd;
|
caretPos.end = txtarea.selectionEnd;
|
||||||
}
|
}
|
||||||
// dirty and slow IE way
|
// dirty and slow IE way
|
||||||
else if (document.selection)
|
else if (document.selection) {
|
||||||
{
|
|
||||||
// get current selection
|
// get current selection
|
||||||
var range = document.selection.createRange();
|
var range = document.selection.createRange();
|
||||||
|
|
||||||
// a new selection of the whole textarea
|
// a new selection of the whole textarea
|
||||||
var range_all = document.body.createTextRange();
|
var range_all = document.body.createTextRange();
|
||||||
range_all.moveToElementText(txtarea);
|
range_all.moveToElementText(txtarea);
|
||||||
|
|
||||||
// calculate selection start point by moving beginning of range_all to beginning of range
|
// calculate selection start point by moving beginning of range_all to beginning of range
|
||||||
var sel_start;
|
var sel_start;
|
||||||
for (sel_start = 0; range_all.compareEndPoints('StartToStart', range) < 0; sel_start++)
|
for (sel_start = 0; range_all.compareEndPoints('StartToStart', range) < 0; sel_start++) {
|
||||||
{
|
|
||||||
range_all.moveStart('character', 1);
|
range_all.moveStart('character', 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
txtarea.sel_start = sel_start;
|
txtarea.sel_start = sel_start;
|
||||||
|
|
||||||
// we ignore the end value for IE, this is already dirty enough and we don't need it
|
// we ignore the end value for IE, this is already dirty enough and we don't need it
|
||||||
caretPos.start = txtarea.sel_start;
|
caretPos.start = txtarea.sel_start;
|
||||||
caretPos.end = txtarea.sel_start;
|
caretPos.end = txtarea.sel_start;
|
||||||
}
|
}
|
||||||
|
|
||||||
return caretPos;
|
return caretPos;
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<!-- IF META -->{META}<!-- ENDIF -->
|
<!-- IF META -->{META}<!-- ENDIF -->
|
||||||
<title>{PAGE_TITLE}</title>
|
<title>{PAGE_TITLE}</title>
|
||||||
|
|
||||||
<link href="../adm/style/admin.css" rel="stylesheet" type="text/css" media="screen" />
|
<link href="{T_TEMPLATE_PATH}/admin.css" rel="stylesheet" type="text/css" media="screen" />
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
// <![CDATA[
|
// <![CDATA[
|
||||||
|
@ -49,7 +49,7 @@ function dE(n, s, type)
|
||||||
</form>
|
</form>
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="page-body">
|
<div id="page-body">
|
||||||
<div id="tabs">
|
<div id="tabs">
|
||||||
<ul>
|
<ul>
|
||||||
|
@ -73,5 +73,5 @@ function dE(n, s, type)
|
||||||
<!-- END l_block2 -->
|
<!-- END l_block2 -->
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="main" class="install-body">
|
<div id="main" class="install-body">
|
||||||
|
|
|
@ -109,27 +109,14 @@
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<!-- IF not S_UP_TO_DATE -->
|
<form id="install_update" method="post" action="{U_ACTION}">
|
||||||
|
|
||||||
<form id="install_dbupdate" method="post" action="{U_DB_UPDATE_ACTION}">
|
<fieldset class="submit-buttons">
|
||||||
|
<p>{L_CHECK_FILES_EXPLAIN}</p>
|
||||||
|
<input class="button1" type="submit" name="submit" value="{L_CHECK_FILES}" />
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
<fieldset class="submit-buttons">
|
</form>
|
||||||
<p>{L_UPDATE_DATABASE_EXPLAIN}</p>
|
|
||||||
<input class="button1" type="submit" name="db_update" value="{L_UPDATE_DATABASE}" />
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
</form>
|
|
||||||
|
|
||||||
<!-- ELSE -->
|
|
||||||
<form id="install_update" method="post" action="{U_ACTION}">
|
|
||||||
|
|
||||||
<fieldset class="submit-buttons">
|
|
||||||
<p>{L_CHECK_FILES_UP_TO_DATE}</p>
|
|
||||||
<input class="button1" type="submit" name="submit" value="{L_CHECK_FILES}" />
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
</form>
|
|
||||||
<!-- ENDIF -->
|
|
||||||
|
|
||||||
<!-- ELSEIF S_DB_UPDATE -->
|
<!-- ELSEIF S_DB_UPDATE -->
|
||||||
|
|
||||||
|
@ -155,18 +142,10 @@
|
||||||
|
|
||||||
<!-- ELSE -->
|
<!-- ELSE -->
|
||||||
|
|
||||||
<h1>{L_UPDATE_DB_SUCCESS}</h1>
|
<div class="successbox">
|
||||||
|
<h3>{L_UPDATE_SUCCESS}</h3>
|
||||||
<br /><br />
|
<p>{L_EVERYTHING_UP_TO_DATE}</p>
|
||||||
|
</div>
|
||||||
<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>
|
|
||||||
|
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
|
|
||||||
|
@ -174,10 +153,18 @@
|
||||||
|
|
||||||
<!-- IF S_ALL_UP_TO_DATE -->
|
<!-- IF S_ALL_UP_TO_DATE -->
|
||||||
|
|
||||||
<div class="successbox">
|
<h1>{L_UPDATE_FILE_SUCCESS}</h1>
|
||||||
<h3>{L_UPDATE_SUCCESS}</h3>
|
<p>{L_ALL_FILES_UP_TO_DATE}</p>
|
||||||
<p>{L_ALL_FILES_UP_TO_DATE}</p>
|
|
||||||
</div>
|
<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 -->
|
<!-- ELSE -->
|
||||||
<h1>{L_COLLECTED_INFORMATION}</h1>
|
<h1>{L_COLLECTED_INFORMATION}</h1>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<!-- IF META -->{META}<!-- ENDIF -->
|
<!-- IF META -->{META}<!-- ENDIF -->
|
||||||
<title>{PAGE_TITLE}</title>
|
<title>{PAGE_TITLE}</title>
|
||||||
|
|
||||||
<link href="../adm/style/admin.css" rel="stylesheet" type="text/css" media="screen" />
|
<link href="{T_TEMPLATE_PATH}/admin.css" rel="stylesheet" type="text/css" media="screen" />
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
// <![CDATA[
|
// <![CDATA[
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
{DEBUG_OUTPUT}
|
{DEBUG_OUTPUT}
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
|
|
||||||
<div id="darkenwrapper" data-ajax-error-title="{L_AJAX_ERROR_TITLE}" data-ajax-error-text="{L_AJAX_ERROR_TEXT}">
|
<div id="darkenwrapper" data-ajax-error-title="{L_AJAX_ERROR_TITLE}" data-ajax-error-text="{L_AJAX_ERROR_TEXT}" data-ajax-error-text-abort="{L_AJAX_ERROR_TEXT_ABORT}" data-ajax-error-text-timeout="{L_AJAX_ERROR_TEXT_TIMEOUT}" data-ajax-error-text-parsererror="{L_AJAX_ERROR_TEXT_PARSERERROR}">
|
||||||
<div id="darken"> </div>
|
<div id="darken"> </div>
|
||||||
<div class="jalert" id="loadingalert"><h3>{L_LOADING}</h3><p>{L_PLEASE_WAIT}</p></div>
|
<div class="jalert" id="loadingalert"><h3>{L_LOADING}</h3><p>{L_PLEASE_WAIT}</p></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -29,9 +29,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div id="phpbb_confirm" class="phpbb_alert">
|
<div id="phpbb_confirm" class="phpbb_alert">
|
||||||
<a href="#" class="alert_close"></a>
|
<a href="#" class="alert_close"></a>
|
||||||
<p class="alert_text"></p>
|
<div class="alert_text"></div>
|
||||||
<input type="button" class="button1" value="{L_YES}" />
|
|
||||||
<input type="button" class="button2" value="{L_NO}" />
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -40,7 +38,9 @@
|
||||||
<!-- IF S_JQUERY_FALLBACK --><script type="text/javascript">window.jQuery || document.write(unescape('%3Cscript src="{T_ASSETS_PATH}/javascript/jquery.js?assets_version={T_ASSETS_VERSION}" type="text/javascript"%3E%3C/script%3E'));</script><!-- ENDIF -->
|
<!-- IF S_JQUERY_FALLBACK --><script type="text/javascript">window.jQuery || document.write(unescape('%3Cscript src="{T_ASSETS_PATH}/javascript/jquery.js?assets_version={T_ASSETS_VERSION}" type="text/javascript"%3E%3C/script%3E'));</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>
|
||||||
<!-- INCLUDEJS ajax.js -->
|
<!-- INCLUDEJS ajax.js -->
|
||||||
{SCRIPTS}
|
{$SCRIPTS}
|
||||||
|
|
||||||
|
<!-- EVENT acp_overall_footer_after -->
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -155,6 +155,7 @@ function switch_menu()
|
||||||
|
|
||||||
// ]]>
|
// ]]>
|
||||||
</script>
|
</script>
|
||||||
|
<!-- EVENT acp_overall_header_head_append -->
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="{S_CONTENT_DIRECTION}">
|
<body class="{S_CONTENT_DIRECTION}">
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
<a href="{role_mask.groups.U_PROFILE}">{role_mask.groups.GROUP_NAME}</a><!-- IF not role_mask.groups.S_LAST_ROW --> :: <!-- ENDIF -->
|
<a href="{role_mask.groups.U_PROFILE}">{role_mask.groups.GROUP_NAME}</a><!-- IF not role_mask.groups.S_LAST_ROW --> :: <!-- ENDIF -->
|
||||||
<!-- BEGINELSE -->
|
<!-- BEGINELSE -->
|
||||||
{L_GROUPS_NOT_ASSIGNED}
|
{L_GROUPS_NOT_ASSIGNED}
|
||||||
<!-- END users -->
|
<!-- END groups -->
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
|
@ -2,35 +2,27 @@
|
||||||
* Hide and show all checkboxes
|
* Hide and show all checkboxes
|
||||||
* status = true (show boxes), false (hide boxes)
|
* status = true (show boxes), false (hide boxes)
|
||||||
*/
|
*/
|
||||||
function display_checkboxes(status)
|
function display_checkboxes(status) {
|
||||||
{
|
|
||||||
var form = document.getElementById('set-permissions');
|
var form = document.getElementById('set-permissions');
|
||||||
var cb = document.getElementsByTagName('input');
|
var cb = document.getElementsByTagName('input');
|
||||||
var display;
|
var display;
|
||||||
|
|
||||||
//show
|
//show
|
||||||
if (status)
|
if (status) {
|
||||||
{
|
|
||||||
display = 'inline';
|
display = 'inline';
|
||||||
}
|
}
|
||||||
//hide
|
//hide
|
||||||
else
|
else {
|
||||||
{
|
|
||||||
display = 'none';
|
display = 'none';
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var i = 0; i < cb.length; i++ )
|
for (var i = 0; i < cb.length; i++ ) {
|
||||||
{
|
if (cb[i].className === 'permissions-checkbox') {
|
||||||
if (cb[i].className == 'permissions-checkbox')
|
|
||||||
{
|
|
||||||
cb[i].style.display = display;
|
cb[i].style.display = display;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Change opacity of element
|
* Change opacity of element
|
||||||
* e = element
|
* e = element
|
||||||
|
@ -38,7 +30,7 @@ function display_checkboxes(status)
|
||||||
*/
|
*/
|
||||||
function set_opacity(e, value) {
|
function set_opacity(e, value) {
|
||||||
e.style.opacity = value/10;
|
e.style.opacity = value/10;
|
||||||
|
|
||||||
//IE opacity currently turned off, because of its astronomical stupidity
|
//IE opacity currently turned off, because of its astronomical stupidity
|
||||||
//e.style.filter = 'alpha(opacity=' + value*10 + ')';
|
//e.style.filter = 'alpha(opacity=' + value*10 + ')';
|
||||||
}
|
}
|
||||||
|
@ -50,13 +42,10 @@ function set_opacity(e, value) {
|
||||||
function toggle_opacity(block_id) {
|
function toggle_opacity(block_id) {
|
||||||
var cb = document.getElementById('checkbox' + block_id);
|
var cb = document.getElementById('checkbox' + block_id);
|
||||||
var fs = document.getElementById('perm' + block_id);
|
var fs = document.getElementById('perm' + block_id);
|
||||||
|
|
||||||
if (cb.checked)
|
if (cb.checked) {
|
||||||
{
|
|
||||||
set_opacity(fs, 5);
|
set_opacity(fs, 5);
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
set_opacity(fs, 10);
|
set_opacity(fs, 10);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -71,21 +60,17 @@ function reset_opacity(status, except_id) {
|
||||||
var fs = perm.getElementsByTagName('fieldset');
|
var fs = perm.getElementsByTagName('fieldset');
|
||||||
var opacity = 5;
|
var opacity = 5;
|
||||||
|
|
||||||
if (status)
|
if (status) {
|
||||||
{
|
opacity = 10;
|
||||||
opacity = 10;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var i = 0; i < fs.length; i++ )
|
for (var i = 0; i < fs.length; i++ ) {
|
||||||
{
|
if (fs[i].className !== 'quick') {
|
||||||
if (fs[i].className != 'quick')
|
|
||||||
{
|
|
||||||
set_opacity(fs[i], opacity);
|
set_opacity(fs[i], opacity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (typeof(except_id) != 'undefined')
|
if (typeof(except_id) !== 'undefined') {
|
||||||
{
|
|
||||||
set_opacity(document.getElementById('perm' + except_id), 10);
|
set_opacity(document.getElementById('perm' + except_id), 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -93,20 +78,15 @@ function reset_opacity(status, except_id) {
|
||||||
marklist('set-permissions', 'inherit', !status);
|
marklist('set-permissions', 'inherit', !status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check whether we have a full radiobutton row of true
|
* Check whether we have a full radiobutton row of true
|
||||||
* index = offset for the row of inputs (0 == first row, 1 == second, 2 == third),
|
* index = offset for the row of inputs (0 == first row, 1 == second, 2 == third),
|
||||||
* rb = array of radiobuttons
|
* rb = array of radiobuttons
|
||||||
*/
|
*/
|
||||||
function get_radio_status(index, rb)
|
function get_radio_status(index, rb) {
|
||||||
{
|
for (var i = index; i < rb.length; i = i + 3 ) {
|
||||||
for (var i = index; i < rb.length; i = i + 3 )
|
if (rb[i].checked !== true) {
|
||||||
{
|
if (i > index) {
|
||||||
if (rb[i].checked != true)
|
|
||||||
{
|
|
||||||
if (i > index)
|
|
||||||
{
|
|
||||||
//at least one is true, but not all (custom)
|
//at least one is true, but not all (custom)
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
@ -121,17 +101,15 @@ function get_radio_status(index, rb)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set tab colours
|
* Set tab colours
|
||||||
* id = panel the tab needs to be set for,
|
* id = panel the tab needs to be set for,
|
||||||
* init = initialising on open,
|
* init = initialising on open,
|
||||||
* quick = If no calculation needed, this contains the colour
|
* quick = If no calculation needed, this contains the colour
|
||||||
*/
|
*/
|
||||||
function set_colours(id, init, quick)
|
function set_colours(id, init, quick) {
|
||||||
{
|
|
||||||
var table = document.getElementById('table' + id);
|
var table = document.getElementById('table' + id);
|
||||||
var tab = document.getElementById('tab' + id);
|
var tab = document.getElementById('tab' + id);
|
||||||
|
|
||||||
if (typeof(quick) != 'undefined')
|
if (typeof(quick) !== 'undefined') {
|
||||||
{
|
|
||||||
tab.className = 'permissions-preset-' + quick + ' activetab';
|
tab.className = 'permissions-preset-' + quick + ' activetab';
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -141,37 +119,27 @@ function set_colours(id, init, quick)
|
||||||
|
|
||||||
var status = get_radio_status(0, rb);
|
var status = get_radio_status(0, rb);
|
||||||
|
|
||||||
if (status == 1)
|
if (status === 1) {
|
||||||
{
|
|
||||||
colour = 'yes';
|
colour = 'yes';
|
||||||
}
|
} else if (status === 0) {
|
||||||
else if (status == 0)
|
|
||||||
{
|
|
||||||
// We move on to No
|
// We move on to No
|
||||||
status = get_radio_status(1, rb);
|
status = get_radio_status(1, rb);
|
||||||
|
|
||||||
if (status == 1)
|
if (status === 1) {
|
||||||
{
|
|
||||||
colour = 'no';
|
colour = 'no';
|
||||||
}
|
} else if (status === 0) {
|
||||||
else if (status == 0)
|
|
||||||
{
|
|
||||||
// We move on to Never
|
// We move on to Never
|
||||||
status = get_radio_status(2, rb);
|
status = get_radio_status(2, rb);
|
||||||
|
|
||||||
if (status == 1)
|
if (status === 1) {
|
||||||
{
|
|
||||||
colour = 'never';
|
colour = 'never';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (init)
|
if (init) {
|
||||||
{
|
|
||||||
tab.className = 'permissions-preset-' + colour;
|
tab.className = 'permissions-preset-' + colour;
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
tab.className = 'permissions-preset-' + colour + ' activetab';
|
tab.className = 'permissions-preset-' + colour + ' activetab';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -180,16 +148,13 @@ function set_colours(id, init, quick)
|
||||||
* Initialise advanced tab colours on first load
|
* Initialise advanced tab colours on first load
|
||||||
* block_id = block that is opened
|
* block_id = block that is opened
|
||||||
*/
|
*/
|
||||||
function init_colours(block_id)
|
function init_colours(block_id) {
|
||||||
{
|
|
||||||
var block = document.getElementById('advanced' + block_id);
|
var block = document.getElementById('advanced' + block_id);
|
||||||
var panels = block.getElementsByTagName('div');
|
var panels = block.getElementsByTagName('div');
|
||||||
var tab = document.getElementById('tab' + id);
|
var tab = document.getElementById('tab' + id);
|
||||||
|
|
||||||
for (var i = 0; i < panels.length; i++)
|
for (var i = 0; i < panels.length; i++) {
|
||||||
{
|
if (panels[i].className === 'permissions-panel') {
|
||||||
if(panels[i].className == 'permissions-panel')
|
|
||||||
{
|
|
||||||
set_colours(panels[i].id.replace(/options/, ''), true);
|
set_colours(panels[i].id.replace(/options/, ''), true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -203,17 +168,15 @@ function init_colours(block_id)
|
||||||
* adv = we are opening advanced permissions
|
* adv = we are opening advanced permissions
|
||||||
* view = called from view permissions
|
* view = called from view permissions
|
||||||
*/
|
*/
|
||||||
function swap_options(pmask, fmask, cat, adv, view)
|
function swap_options(pmask, fmask, cat, adv, view) {
|
||||||
{
|
|
||||||
id = pmask + fmask + cat;
|
id = pmask + fmask + cat;
|
||||||
active_option = active_pmask + active_fmask + active_cat;
|
active_option = active_pmask + active_fmask + active_cat;
|
||||||
|
|
||||||
var old_tab = document.getElementById('tab' + active_option);
|
var old_tab = document.getElementById('tab' + active_option);
|
||||||
var new_tab = document.getElementById('tab' + id);
|
var new_tab = document.getElementById('tab' + id);
|
||||||
var adv_block = document.getElementById('advanced' + pmask + fmask);
|
var adv_block = document.getElementById('advanced' + pmask + fmask);
|
||||||
|
|
||||||
if (adv_block.style.display == 'block' && adv == true)
|
if (adv_block.style.display === 'block' && adv === true) {
|
||||||
{
|
|
||||||
dE('advanced' + pmask + fmask, -1);
|
dE('advanced' + pmask + fmask, -1);
|
||||||
reset_opacity(1);
|
reset_opacity(1);
|
||||||
display_checkboxes(false);
|
display_checkboxes(false);
|
||||||
|
@ -221,20 +184,16 @@ function swap_options(pmask, fmask, cat, adv, view)
|
||||||
}
|
}
|
||||||
|
|
||||||
// no need to set anything if we are clicking on the same tab again
|
// no need to set anything if we are clicking on the same tab again
|
||||||
if (new_tab == old_tab && !adv)
|
if (new_tab === old_tab && !adv) {
|
||||||
{
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// init colours
|
// init colours
|
||||||
if (adv && (pmask + fmask) != (active_pmask + active_fmask))
|
if (adv && (pmask + fmask) !== (active_pmask + active_fmask)) {
|
||||||
{
|
|
||||||
init_colours(pmask + fmask);
|
init_colours(pmask + fmask);
|
||||||
display_checkboxes(true);
|
display_checkboxes(true);
|
||||||
reset_opacity(1);
|
reset_opacity(1);
|
||||||
}
|
} else if (adv) {
|
||||||
else if (adv)
|
|
||||||
{
|
|
||||||
//Checkbox might have been clicked, but we need full visibility
|
//Checkbox might have been clicked, but we need full visibility
|
||||||
display_checkboxes(true);
|
display_checkboxes(true);
|
||||||
reset_opacity(1);
|
reset_opacity(1);
|
||||||
|
@ -244,31 +203,26 @@ function swap_options(pmask, fmask, cat, adv, view)
|
||||||
old_tab.className = old_tab.className.replace(/\ activetab/g, '');
|
old_tab.className = old_tab.className.replace(/\ activetab/g, '');
|
||||||
new_tab.className = new_tab.className + ' activetab';
|
new_tab.className = new_tab.className + ' activetab';
|
||||||
|
|
||||||
if (id == active_option && adv != true)
|
if (id === active_option && adv !== true) {
|
||||||
{
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
dE('options' + active_option, -1);
|
dE('options' + active_option, -1);
|
||||||
|
|
||||||
//hiding and showing the checkbox
|
//hiding and showing the checkbox
|
||||||
if (document.getElementById('checkbox' + active_pmask + active_fmask))
|
if (document.getElementById('checkbox' + active_pmask + active_fmask)) {
|
||||||
{
|
dE('checkbox' + pmask + fmask, -1);
|
||||||
dE('checkbox' + pmask + fmask, -1);
|
|
||||||
|
if ((pmask + fmask) !== (active_pmask + active_fmask)) {
|
||||||
if ((pmask + fmask) != (active_pmask + active_fmask))
|
|
||||||
{
|
|
||||||
document.getElementById('checkbox' + active_pmask + active_fmask).style.display = 'inline';
|
document.getElementById('checkbox' + active_pmask + active_fmask).style.display = 'inline';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!view)
|
if (!view) {
|
||||||
{
|
|
||||||
dE('advanced' + active_pmask + active_fmask, -1);
|
dE('advanced' + active_pmask + active_fmask, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!view)
|
if (!view) {
|
||||||
{
|
|
||||||
dE('advanced' + pmask + fmask, 1);
|
dE('advanced' + pmask + fmask, 1);
|
||||||
}
|
}
|
||||||
dE('options' + id, 1);
|
dE('options' + id, 1);
|
||||||
|
@ -282,41 +236,33 @@ function swap_options(pmask, fmask, cat, adv, view)
|
||||||
* Mark all radio buttons in one panel
|
* Mark all radio buttons in one panel
|
||||||
* id = table ID container, s = status ['y'/'u'/'n']
|
* id = table ID container, s = status ['y'/'u'/'n']
|
||||||
*/
|
*/
|
||||||
function mark_options(id, s)
|
function mark_options(id, s) {
|
||||||
{
|
|
||||||
var t = document.getElementById(id);
|
var t = document.getElementById(id);
|
||||||
|
|
||||||
if (!t)
|
if (!t) {
|
||||||
{
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var rb = t.getElementsByTagName('input');
|
var rb = t.getElementsByTagName('input');
|
||||||
|
|
||||||
for (var r = 0; r < rb.length; r++)
|
for (var r = 0; r < rb.length; r++) {
|
||||||
{
|
if (rb[r].id.substr(rb[r].id.length-1) === s) {
|
||||||
if (rb[r].id.substr(rb[r].id.length-1) == s)
|
|
||||||
{
|
|
||||||
rb[r].checked = true;
|
rb[r].checked = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function mark_one_option(id, field_name, s)
|
function mark_one_option(id, field_name, s) {
|
||||||
{
|
|
||||||
var t = document.getElementById(id);
|
var t = document.getElementById(id);
|
||||||
|
|
||||||
if (!t)
|
if (!t) {
|
||||||
{
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var rb = t.getElementsByTagName('input');
|
var rb = t.getElementsByTagName('input');
|
||||||
|
|
||||||
for (var r = 0; r < rb.length; r++)
|
for (var r = 0; r < rb.length; r++) {
|
||||||
{
|
if (rb[r].id.substr(rb[r].id.length-field_name.length-3, field_name.length) === field_name && rb[r].id.substr(rb[r].id.length-1) === s) {
|
||||||
if (rb[r].id.substr(rb[r].id.length-field_name.length-3, field_name.length) == field_name && rb[r].id.substr(rb[r].id.length-1) == s)
|
|
||||||
{
|
|
||||||
rb[r].checked = true;
|
rb[r].checked = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -325,12 +271,10 @@ function mark_one_option(id, field_name, s)
|
||||||
/**
|
/**
|
||||||
* Reset role dropdown field to Select role... if an option gets changed
|
* Reset role dropdown field to Select role... if an option gets changed
|
||||||
*/
|
*/
|
||||||
function reset_role(id)
|
function reset_role(id) {
|
||||||
{
|
|
||||||
var t = document.getElementById(id);
|
var t = document.getElementById(id);
|
||||||
|
|
||||||
if (!t)
|
if (!t) {
|
||||||
{
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -340,20 +284,17 @@ function reset_role(id)
|
||||||
/**
|
/**
|
||||||
* Load role and set options accordingly
|
* Load role and set options accordingly
|
||||||
*/
|
*/
|
||||||
function set_role_settings(role_id, target_id)
|
function set_role_settings(role_id, target_id) {
|
||||||
{
|
|
||||||
settings = role_options[role_id];
|
settings = role_options[role_id];
|
||||||
|
|
||||||
if (!settings)
|
if (!settings) {
|
||||||
{
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mark all options to no (unset) first...
|
// Mark all options to no (unset) first...
|
||||||
mark_options(target_id, 'u');
|
mark_options(target_id, 'u');
|
||||||
|
|
||||||
for (var r in settings)
|
for (var r in settings) {
|
||||||
{
|
mark_one_option(target_id, r, (settings[r] === 1) ? 'y' : 'n');
|
||||||
mark_one_option(target_id, r, (settings[r] == 1) ? 'y' : 'n');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
|
|
||||||
<script type="text/javascript" src="{T_JQUERY_LINK}"></script>
|
<script type="text/javascript" src="{T_JQUERY_LINK}"></script>
|
||||||
<!-- IF S_JQUERY_FALLBACK --><script type="text/javascript">window.jQuery || document.write(unescape('%3Cscript src="{T_ASSETS_PATH}/javascript/jquery.js?assets_version={T_ASSETS_VERSION}" type="text/javascript"%3E%3C/script%3E'));</script><!-- ENDIF -->
|
<!-- IF S_JQUERY_FALLBACK --><script type="text/javascript">window.jQuery || document.write(unescape('%3Cscript src="{T_ASSETS_PATH}/javascript/jquery.js?assets_version={T_ASSETS_VERSION}" type="text/javascript"%3E%3C/script%3E'));</script><!-- ENDIF -->
|
||||||
|
<!-- EVENT acp_simple_footer_after -->
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -101,6 +101,7 @@ function find_username(url)
|
||||||
|
|
||||||
// ]]>
|
// ]]>
|
||||||
</script>
|
</script>
|
||||||
|
<!-- EVENT acp_simple_header_head_append -->
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="{S_CONTENT_DIRECTION}">
|
<body class="{S_CONTENT_DIRECTION}">
|
||||||
|
|
|
@ -1,11 +1,13 @@
|
||||||
(function($) { // Avoid conflicts with other libraries
|
(function($) { // Avoid conflicts with other libraries
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
$('#tz_date').change(function() {
|
$('#tz_date').change(function() {
|
||||||
phpbb.timezone_switch_date(false);
|
phpbb.timezoneSwitchDate(false);
|
||||||
});
|
});
|
||||||
|
|
||||||
$(document).ready(
|
$(document).ready(
|
||||||
phpbb.timezone_enable_date_selection
|
phpbb.timezoneEnableDateSelection
|
||||||
);
|
);
|
||||||
|
|
||||||
})(jQuery); // Avoid conflicts with other libraries
|
})(jQuery); // Avoid conflicts with other libraries
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/*
|
/*
|
||||||
javascript for Bubble Tooltips by Alessandro Fulciniti
|
javascript for Bubble Tooltips by Alessandro Fulciniti
|
||||||
- http://pro.html.it - http://web-graphics.com
|
- http://pro.html.it - http://web-graphics.com
|
||||||
obtained from: http://web-graphics.com/mtarchive/001717.php
|
obtained from: http://web-graphics.com/mtarchive/001717.php
|
||||||
|
|
||||||
phpBB Development Team:
|
phpBB Development Team:
|
||||||
|
@ -15,14 +15,12 @@ var head_text, tooltip_mode;
|
||||||
/**
|
/**
|
||||||
* Enable tooltip replacements for links
|
* Enable tooltip replacements for links
|
||||||
*/
|
*/
|
||||||
function enable_tooltips_link(id, headline, sub_id)
|
function enable_tooltips_link(id, headline, sub_id) {
|
||||||
{
|
|
||||||
var links, i, hold;
|
var links, i, hold;
|
||||||
|
|
||||||
head_text = headline;
|
head_text = headline;
|
||||||
|
|
||||||
if (!document.getElementById || !document.getElementsByTagName)
|
if (!document.getElementById || !document.getElementsByTagName) {
|
||||||
{
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,26 +31,18 @@ function enable_tooltips_link(id, headline, sub_id)
|
||||||
|
|
||||||
document.getElementsByTagName('body')[0].appendChild(hold);
|
document.getElementsByTagName('body')[0].appendChild(hold);
|
||||||
|
|
||||||
if (id == null)
|
if (id === null) {
|
||||||
{
|
|
||||||
links = document.getElementsByTagName('a');
|
links = document.getElementsByTagName('a');
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
links = document.getElementById(id).getElementsByTagName('a');
|
links = document.getElementById(id).getElementsByTagName('a');
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < links.length; i++)
|
for (i = 0; i < links.length; i++) {
|
||||||
{
|
if (sub_id) {
|
||||||
if (sub_id)
|
if (links[i].id.substr(0, sub_id.length) === sub_id) {
|
||||||
{
|
|
||||||
if (links[i].id.substr(0, sub_id.length) == sub_id)
|
|
||||||
{
|
|
||||||
prepare(links[i]);
|
prepare(links[i]);
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
prepare(links[i]);
|
prepare(links[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -63,14 +53,12 @@ function enable_tooltips_link(id, headline, sub_id)
|
||||||
/**
|
/**
|
||||||
* Enable tooltip replacements for selects
|
* Enable tooltip replacements for selects
|
||||||
*/
|
*/
|
||||||
function enable_tooltips_select(id, headline, sub_id)
|
function enable_tooltips_select(id, headline, sub_id) {
|
||||||
{
|
|
||||||
var links, i, hold;
|
var links, i, hold;
|
||||||
|
|
||||||
head_text = headline;
|
head_text = headline;
|
||||||
|
|
||||||
if (!document.getElementById || !document.getElementsByTagName)
|
if (!document.getElementById || !document.getElementsByTagName) {
|
||||||
{
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,26 +69,18 @@ function enable_tooltips_select(id, headline, sub_id)
|
||||||
|
|
||||||
document.getElementsByTagName('body')[0].appendChild(hold);
|
document.getElementsByTagName('body')[0].appendChild(hold);
|
||||||
|
|
||||||
if (id == null)
|
if (id === null) {
|
||||||
{
|
|
||||||
links = document.getElementsByTagName('option');
|
links = document.getElementsByTagName('option');
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
links = document.getElementById(id).getElementsByTagName('option');
|
links = document.getElementById(id).getElementsByTagName('option');
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < links.length; i++)
|
for (i = 0; i < links.length; i++) {
|
||||||
{
|
if (sub_id) {
|
||||||
if (sub_id)
|
if (links[i].parentNode.id.substr(0, sub_id.length) === sub_id) {
|
||||||
{
|
|
||||||
if (links[i].parentNode.id.substr(0, sub_id.length) == sub_id)
|
|
||||||
{
|
|
||||||
prepare(links[i]);
|
prepare(links[i]);
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
prepare(links[i]);
|
prepare(links[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -111,14 +91,12 @@ function enable_tooltips_select(id, headline, sub_id)
|
||||||
/**
|
/**
|
||||||
* Prepare elements to replace
|
* Prepare elements to replace
|
||||||
*/
|
*/
|
||||||
function prepare(element)
|
function prepare(element) {
|
||||||
{
|
|
||||||
var tooltip, text, desc, title;
|
var tooltip, text, desc, title;
|
||||||
|
|
||||||
text = element.getAttribute('title');
|
text = element.getAttribute('title');
|
||||||
|
|
||||||
if (text == null || text.length == 0)
|
if (text === null || text.length === 0) {
|
||||||
{
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -139,8 +117,7 @@ function prepare(element)
|
||||||
element.onmouseover = show_tooltip;
|
element.onmouseover = show_tooltip;
|
||||||
element.onmouseout = hide_tooltip;
|
element.onmouseout = hide_tooltip;
|
||||||
|
|
||||||
if (tooltip_mode == 'link')
|
if (tooltip_mode === 'link') {
|
||||||
{
|
|
||||||
element.onmousemove = locate;
|
element.onmousemove = locate;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -148,8 +125,7 @@ function prepare(element)
|
||||||
/**
|
/**
|
||||||
* Show tooltip
|
* Show tooltip
|
||||||
*/
|
*/
|
||||||
function show_tooltip(e)
|
function show_tooltip(e) {
|
||||||
{
|
|
||||||
document.getElementById('_tooltip_container').appendChild(this.tooltip);
|
document.getElementById('_tooltip_container').appendChild(this.tooltip);
|
||||||
locate(this);
|
locate(this);
|
||||||
}
|
}
|
||||||
|
@ -157,11 +133,9 @@ function show_tooltip(e)
|
||||||
/**
|
/**
|
||||||
* Hide tooltip
|
* Hide tooltip
|
||||||
*/
|
*/
|
||||||
function hide_tooltip(e)
|
function hide_tooltip(e) {
|
||||||
{
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -169,8 +143,7 @@ function hide_tooltip(e)
|
||||||
/**
|
/**
|
||||||
* Set opacity on tooltip element
|
* Set opacity on tooltip element
|
||||||
*/
|
*/
|
||||||
function set_opacity(element)
|
function set_opacity(element) {
|
||||||
{
|
|
||||||
element.style.filter = 'alpha(opacity:95)';
|
element.style.filter = 'alpha(opacity:95)';
|
||||||
element.style.KHTMLOpacity = '0.95';
|
element.style.KHTMLOpacity = '0.95';
|
||||||
element.style.MozOpacity = '0.95';
|
element.style.MozOpacity = '0.95';
|
||||||
|
@ -180,8 +153,7 @@ function set_opacity(element)
|
||||||
/**
|
/**
|
||||||
* Create new element
|
* Create new element
|
||||||
*/
|
*/
|
||||||
function create_element(tag, c)
|
function create_element(tag, c) {
|
||||||
{
|
|
||||||
var x = document.createElement(tag);
|
var x = document.createElement(tag);
|
||||||
x.className = c;
|
x.className = c;
|
||||||
x.style.display = 'block';
|
x.style.display = 'block';
|
||||||
|
@ -191,34 +163,26 @@ function create_element(tag, c)
|
||||||
/**
|
/**
|
||||||
* Correct positioning of tooltip container
|
* Correct positioning of tooltip container
|
||||||
*/
|
*/
|
||||||
function locate(e)
|
function locate(e) {
|
||||||
{
|
|
||||||
var posx = 0;
|
var posx = 0;
|
||||||
var posy = 0;
|
var posy = 0;
|
||||||
|
|
||||||
e = e.parentNode;
|
e = e.parentNode;
|
||||||
|
|
||||||
if (e.offsetParent)
|
if (e.offsetParent) {
|
||||||
{
|
for (posx = 0, posy = 0; e.offsetParent; e = e.offsetParent) {
|
||||||
for (var posx = 0, posy = 0; e.offsetParent; e = e.offsetParent)
|
|
||||||
{
|
|
||||||
posx += e.offsetLeft;
|
posx += e.offsetLeft;
|
||||||
posy += e.offsetTop;
|
posy += e.offsetTop;
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
posx = e.offsetLeft;
|
posx = e.offsetLeft;
|
||||||
posy = e.offsetTop;
|
posy = e.offsetTop;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tooltip_mode == 'link')
|
if (tooltip_mode === 'link') {
|
||||||
{
|
|
||||||
document.getElementById('_tooltip_container').style.top=(posy+20) + 'px';
|
document.getElementById('_tooltip_container').style.top=(posy+20) + 'px';
|
||||||
document.getElementById('_tooltip_container').style.left=(posx-20) + 'px';
|
document.getElementById('_tooltip_container').style.left=(posx-20) + 'px';
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
document.getElementById('_tooltip_container').style.top=(posy+30) + 'px';
|
document.getElementById('_tooltip_container').style.top=(posy+30) + 'px';
|
||||||
document.getElementById('_tooltip_container').style.left=(posx-205) + 'px';
|
document.getElementById('_tooltip_container').style.left=(posx-205) + 'px';
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,10 +21,8 @@ $user->session_begin(false);
|
||||||
$auth->acl($user->data);
|
$auth->acl($user->data);
|
||||||
$user->setup();
|
$user->setup();
|
||||||
|
|
||||||
$phpbb_admin_path = (defined('PHPBB_ADMIN_PATH')) ? PHPBB_ADMIN_PATH : './';
|
|
||||||
|
|
||||||
// Set custom template for admin area
|
// Set custom template for admin area
|
||||||
$phpbb_style->set_custom_style('admin', $phpbb_admin_path . 'style', '');
|
$template->set_custom_style('adm', $phpbb_admin_path . 'style');
|
||||||
|
|
||||||
$template->set_filenames(array(
|
$template->set_filenames(array(
|
||||||
'body' => 'colour_swatch.html')
|
'body' => 'colour_swatch.html')
|
||||||
|
|
|
@ -24,7 +24,6 @@ $user->session_begin();
|
||||||
$auth->acl($user->data);
|
$auth->acl($user->data);
|
||||||
$user->setup('app');
|
$user->setup('app');
|
||||||
|
|
||||||
$symfony_request = phpbb_create_symfony_request($request);
|
|
||||||
$http_kernel = $phpbb_container->get('http_kernel');
|
$http_kernel = $phpbb_container->get('http_kernel');
|
||||||
$response = $http_kernel->handle($symfony_request);
|
$response = $http_kernel->handle($symfony_request);
|
||||||
$response->send();
|
$response->send();
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
var phpbb = {};
|
var phpbb = {};
|
||||||
phpbb.alert_time = 100;
|
phpbb.alertTime = 100;
|
||||||
|
|
||||||
(function($) { // Avoid conflicts with other libraries
|
(function($) { // Avoid conflicts with other libraries
|
||||||
|
|
||||||
|
@ -12,35 +12,42 @@ var keymap = {
|
||||||
};
|
};
|
||||||
|
|
||||||
var dark = $('#darkenwrapper');
|
var dark = $('#darkenwrapper');
|
||||||
var loading_alert = $('#loadingalert');
|
var loadingAlert = $('#loadingalert');
|
||||||
|
var phpbbAlertTimer = null;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Display a loading screen.
|
* Display a loading screen
|
||||||
*
|
*
|
||||||
* @returns object Returns loading_alert.
|
* @returns object Returns loadingAlert.
|
||||||
*/
|
*/
|
||||||
phpbb.loading_alert = function() {
|
phpbb.loadingAlert = function() {
|
||||||
if (dark.is(':visible'))
|
if (dark.is(':visible')) {
|
||||||
{
|
loadingAlert.fadeIn(phpbb.alertTime);
|
||||||
loading_alert.fadeIn(phpbb.alert_time);
|
} else {
|
||||||
}
|
loadingAlert.show();
|
||||||
else
|
dark.fadeIn(phpbb.alertTime, function() {
|
||||||
{
|
|
||||||
loading_alert.show();
|
|
||||||
dark.fadeIn(phpbb.alert_time, function() {
|
|
||||||
// Wait five seconds and display an error if nothing has been returned by then.
|
// Wait five seconds and display an error if nothing has been returned by then.
|
||||||
setTimeout(function() {
|
phpbbAlertTimer = setTimeout(function() {
|
||||||
if (loading_alert.is(':visible'))
|
if (loadingAlert.is(':visible')) {
|
||||||
{
|
|
||||||
phpbb.alert($('#phpbb_alert').attr('data-l-err'), $('#phpbb_alert').attr('data-l-timeout-processing-req'));
|
phpbb.alert($('#phpbb_alert').attr('data-l-err'), $('#phpbb_alert').attr('data-l-timeout-processing-req'));
|
||||||
}
|
}
|
||||||
}, 5000);
|
}, 5000);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
return loading_alert;
|
return loadingAlert;
|
||||||
}
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clear loading alert timeout
|
||||||
|
*/
|
||||||
|
phpbb.clearLoadingTimeout = function() {
|
||||||
|
if (phpbbAlertTimer !== null) {
|
||||||
|
clearTimeout(phpbbAlertTimer);
|
||||||
|
phpbbAlertTimer = null;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Display a simple alert similar to JSs native alert().
|
* Display a simple alert similar to JSs native alert().
|
||||||
|
@ -50,7 +57,7 @@ phpbb.loading_alert = function() {
|
||||||
* @param string title Title of the message, eg "Information" (HTML).
|
* @param string title Title of the message, eg "Information" (HTML).
|
||||||
* @param string msg Message to display (HTML).
|
* @param string msg Message to display (HTML).
|
||||||
* @param bool fadedark Remove the dark background when done? Defaults
|
* @param bool fadedark Remove the dark background when done? Defaults
|
||||||
* to yes.
|
* to yes.
|
||||||
*
|
*
|
||||||
* @returns object Returns the div created.
|
* @returns object Returns the div created.
|
||||||
*/
|
*/
|
||||||
|
@ -67,7 +74,7 @@ phpbb.alert = function(title, msg, fadedark) {
|
||||||
|
|
||||||
div.find('.alert_close').unbind('click');
|
div.find('.alert_close').unbind('click');
|
||||||
fade = (typeof fadedark !== 'undefined' && !fadedark) ? div : dark;
|
fade = (typeof fadedark !== 'undefined' && !fadedark) ? div : dark;
|
||||||
fade.fadeOut(phpbb.alert_time, function() {
|
fade.fadeOut(phpbb.alertTime, function() {
|
||||||
div.hide();
|
div.hide();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -90,27 +97,22 @@ phpbb.alert = function(title, msg, fadedark) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
});
|
});
|
||||||
|
|
||||||
if (loading_alert.is(':visible'))
|
if (loadingAlert.is(':visible')) {
|
||||||
{
|
loadingAlert.fadeOut(phpbb.alertTime, function() {
|
||||||
loading_alert.fadeOut(phpbb.alert_time, function() {
|
|
||||||
dark.append(div);
|
dark.append(div);
|
||||||
div.fadeIn(phpbb.alert_time);
|
div.fadeIn(phpbb.alertTime);
|
||||||
});
|
});
|
||||||
}
|
} else if (dark.is(':visible')) {
|
||||||
else if (dark.is(':visible'))
|
|
||||||
{
|
|
||||||
dark.append(div);
|
dark.append(div);
|
||||||
div.fadeIn(phpbb.alert_time);
|
div.fadeIn(phpbb.alertTime);
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
dark.append(div);
|
dark.append(div);
|
||||||
div.show();
|
div.show();
|
||||||
dark.fadeIn(phpbb.alert_time);
|
dark.fadeIn(phpbb.alertTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
return div;
|
return div;
|
||||||
}
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Display a simple yes / no box to the user.
|
* Display a simple yes / no box to the user.
|
||||||
|
@ -119,9 +121,9 @@ phpbb.alert = function(title, msg, fadedark) {
|
||||||
*
|
*
|
||||||
* @param string msg Message to display (HTML).
|
* @param string msg Message to display (HTML).
|
||||||
* @param function callback Callback. Bool param, whether the user pressed
|
* @param function callback Callback. Bool param, whether the user pressed
|
||||||
* yes or no (or whatever their language is).
|
* yes or no (or whatever their language is).
|
||||||
* @param bool fadedark Remove the dark background when done? Defaults
|
* @param bool fadedark Remove the dark background when done? Defaults
|
||||||
* to yes.
|
* to yes.
|
||||||
*
|
*
|
||||||
* @returns object Returns the div created.
|
* @returns object Returns the div created.
|
||||||
*/
|
*/
|
||||||
|
@ -133,13 +135,13 @@ phpbb.confirm = function(msg, callback, fadedark) {
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
});
|
});
|
||||||
|
|
||||||
var click_handler = function(e) {
|
var clickHandler = function(e) {
|
||||||
var res = this.className === 'button1';
|
var res = this.name === 'confirm';
|
||||||
var fade = (typeof fadedark !== 'undefined' && !fadedark && res) ? div : dark;
|
var fade = (typeof fadedark !== 'undefined' && !fadedark && res) ? div : dark;
|
||||||
fade.fadeOut(phpbb.alert_time, function() {
|
fade.fadeOut(phpbb.alertTime, function() {
|
||||||
div.hide();
|
div.hide();
|
||||||
});
|
});
|
||||||
div.find('input[type="button"]').unbind('click', click_handler);
|
div.find('input[type="button"]').unbind('click', clickHandler);
|
||||||
callback(res);
|
callback(res);
|
||||||
|
|
||||||
if (e) {
|
if (e) {
|
||||||
|
@ -147,11 +149,11 @@ phpbb.confirm = function(msg, callback, fadedark) {
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
div.find('input[type="button"]').one('click', click_handler);
|
div.find('input[type="button"]').one('click', clickHandler);
|
||||||
|
|
||||||
dark.one('click', function(e) {
|
dark.one('click', function(e) {
|
||||||
div.find('.alert_close').unbind('click');
|
div.find('.alert_close').unbind('click');
|
||||||
dark.fadeOut(phpbb.alert_time, function() {
|
dark.fadeOut(phpbb.alertTime, function() {
|
||||||
div.hide();
|
div.hide();
|
||||||
});
|
});
|
||||||
callback(false);
|
callback(false);
|
||||||
|
@ -162,11 +164,11 @@ phpbb.confirm = function(msg, callback, fadedark) {
|
||||||
|
|
||||||
$(document).bind('keydown', function(e) {
|
$(document).bind('keydown', function(e) {
|
||||||
if (e.keyCode === keymap.ENTER) {
|
if (e.keyCode === keymap.ENTER) {
|
||||||
$('input[type="button"].button1').trigger('click');
|
$('input[name="confirm"]').trigger('click');
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
} else if (e.keyCode === keymap.ESC) {
|
} else if (e.keyCode === keymap.ESC) {
|
||||||
$('input[type="button"].button2').trigger('click');
|
$('input[name="cancel"]').trigger('click');
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
}
|
}
|
||||||
|
@ -174,7 +176,7 @@ phpbb.confirm = function(msg, callback, fadedark) {
|
||||||
|
|
||||||
div.find('.alert_close').one('click', function(e) {
|
div.find('.alert_close').one('click', function(e) {
|
||||||
var fade = (typeof fadedark !== 'undefined' && fadedark) ? div : dark;
|
var fade = (typeof fadedark !== 'undefined' && fadedark) ? div : dark;
|
||||||
fade.fadeOut(phpbb.alert_time, function() {
|
fade.fadeOut(phpbb.alertTime, function() {
|
||||||
div.hide();
|
div.hide();
|
||||||
});
|
});
|
||||||
callback(false);
|
callback(false);
|
||||||
|
@ -182,27 +184,22 @@ phpbb.confirm = function(msg, callback, fadedark) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
});
|
});
|
||||||
|
|
||||||
if (loading_alert.is(':visible'))
|
if (loadingAlert.is(':visible')) {
|
||||||
{
|
loadingAlert.fadeOut(phpbb.alertTime, function() {
|
||||||
loading_alert.fadeOut(phpbb.alert_time, function() {
|
|
||||||
dark.append(div);
|
dark.append(div);
|
||||||
div.fadeIn(phpbb.alert_time);
|
div.fadeIn(phpbb.alertTime);
|
||||||
});
|
});
|
||||||
}
|
} else if (dark.is(':visible')) {
|
||||||
else if (dark.is(':visible'))
|
|
||||||
{
|
|
||||||
dark.append(div);
|
dark.append(div);
|
||||||
div.fadeIn(phpbb.alert_time);
|
div.fadeIn(phpbb.alertTime);
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
dark.append(div);
|
dark.append(div);
|
||||||
div.show();
|
div.show();
|
||||||
dark.fadeIn(phpbb.alert_time);
|
dark.fadeIn(phpbb.alertTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
return div;
|
return div;
|
||||||
}
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Turn a querystring into an array.
|
* Turn a querystring into an array.
|
||||||
|
@ -210,17 +207,16 @@ phpbb.confirm = function(msg, callback, fadedark) {
|
||||||
* @argument string string The querystring to parse.
|
* @argument string string The querystring to parse.
|
||||||
* @returns object The object created.
|
* @returns object The object created.
|
||||||
*/
|
*/
|
||||||
phpbb.parse_querystring = function(string) {
|
phpbb.parseQuerystring = function(string) {
|
||||||
var params = {}, i, split;
|
var params = {}, i, split;
|
||||||
|
|
||||||
string = string.split('&');
|
string = string.split('&');
|
||||||
for (i = 0; i < string.length; i++)
|
for (i = 0; i < string.length; i++) {
|
||||||
{
|
|
||||||
split = string[i].split('=');
|
split = string[i].split('=');
|
||||||
params[split[0]] = decodeURIComponent(split[1]);
|
params[split[0]] = decodeURIComponent(split[1]);
|
||||||
}
|
}
|
||||||
return params;
|
return params;
|
||||||
}
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -236,27 +232,46 @@ phpbb.parse_querystring = function(string) {
|
||||||
*
|
*
|
||||||
* @param object options Options.
|
* @param object options Options.
|
||||||
* @param bool/function refresh If we are sent back a refresh, should it be
|
* @param bool/function refresh If we are sent back a refresh, should it be
|
||||||
* acted upon? This can either be true / false / a function.
|
* acted upon? This can either be true / false / a function.
|
||||||
* @param function callback Callback to call on completion of event. Has
|
* @param function callback Callback to call on completion of event. Has
|
||||||
* three parameters: the element that the event was evoked from, the JSON
|
* three parameters: the element that the event was evoked from, the JSON
|
||||||
* that was returned and (if it is a form) the form action.
|
* that was returned and (if it is a form) the form action.
|
||||||
*/
|
*/
|
||||||
phpbb.ajaxify = function(options) {
|
phpbb.ajaxify = function(options) {
|
||||||
var elements = $(options.selector),
|
var elements = $(options.selector),
|
||||||
refresh = options.refresh,
|
refresh = options.refresh,
|
||||||
callback = options.callback,
|
callback = options.callback,
|
||||||
overlay = (typeof options.overlay !== 'undefined') ? options.overlay : true,
|
overlay = (typeof options.overlay !== 'undefined') ? options.overlay : true,
|
||||||
is_form = elements.is('form'),
|
isForm = elements.is('form'),
|
||||||
event_name = is_form ? 'submit' : 'click';
|
eventName = isForm ? 'submit' : 'click';
|
||||||
|
|
||||||
elements.bind(event_name, function(event) {
|
elements.bind(eventName, function(event) {
|
||||||
var action, method, data, submit, that = this, $this = $(this);
|
var action, method, data, submit, that = this, $this = $(this);
|
||||||
|
|
||||||
if ($this.find('input[type="submit"][data-clicked]').attr('data-ajax') === 'false')
|
if ($this.find('input[type="submit"][data-clicked]').attr('data-ajax') === 'false') {
|
||||||
{
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handler for AJAX errors
|
||||||
|
*/
|
||||||
|
function errorHandler(jqXHR, textStatus, errorThrown) {
|
||||||
|
if (console && console.log) {
|
||||||
|
console.log('AJAX error. status: ' + textStatus + ', message: ' + errorThrown);
|
||||||
|
}
|
||||||
|
phpbb.clearLoadingTimeout();
|
||||||
|
var errorText = false;
|
||||||
|
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
|
* This is a private function used to handle the callbacks, refreshes
|
||||||
* and alert. It calls the callback, refreshes the page if necessary, and
|
* and alert. It calls the callback, refreshes the page if necessary, and
|
||||||
|
@ -267,110 +282,81 @@ phpbb.ajaxify = function(options) {
|
||||||
*
|
*
|
||||||
* @param object res The object sent back by the server.
|
* @param object res The object sent back by the server.
|
||||||
*/
|
*/
|
||||||
function return_handler(res)
|
function returnHandler(res) {
|
||||||
{
|
|
||||||
var alert;
|
var alert;
|
||||||
|
|
||||||
|
phpbb.clearLoadingTimeout();
|
||||||
|
|
||||||
// Is a confirmation required?
|
// Is a confirmation required?
|
||||||
if (typeof res.S_CONFIRM_ACTION === 'undefined')
|
if (typeof res.S_CONFIRM_ACTION === 'undefined') {
|
||||||
{
|
|
||||||
// If a confirmation is not required, display an alert and call the
|
// If a confirmation is not required, display an alert and call the
|
||||||
// callbacks.
|
// callbacks.
|
||||||
if (typeof res.MESSAGE_TITLE !== 'undefined')
|
if (typeof res.MESSAGE_TITLE !== 'undefined') {
|
||||||
{
|
|
||||||
alert = phpbb.alert(res.MESSAGE_TITLE, res.MESSAGE_TEXT);
|
alert = phpbb.alert(res.MESSAGE_TITLE, res.MESSAGE_TEXT);
|
||||||
}
|
} else {
|
||||||
else
|
dark.fadeOut(phpbb.alertTime);
|
||||||
{
|
|
||||||
dark.fadeOut(phpbb.alert_time);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (typeof phpbb.ajax_callbacks[callback] === 'function')
|
if (typeof phpbb.ajaxCallbacks[callback] === 'function') {
|
||||||
{
|
phpbb.ajaxCallbacks[callback].call(that, res);
|
||||||
phpbb.ajax_callbacks[callback].call(that, res);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the server says to refresh the page, check whether the page should
|
// If the server says to refresh the page, check whether the page should
|
||||||
// be refreshed and refresh page after specified time if required.
|
// be refreshed and refresh page after specified time if required.
|
||||||
if (res.REFRESH_DATA)
|
if (res.REFRESH_DATA) {
|
||||||
{
|
if (typeof refresh === 'function') {
|
||||||
if (typeof refresh === 'function')
|
|
||||||
{
|
|
||||||
refresh = refresh(res.REFRESH_DATA.url);
|
refresh = refresh(res.REFRESH_DATA.url);
|
||||||
}
|
} else if (typeof refresh !== 'boolean') {
|
||||||
else if (typeof refresh !== 'boolean')
|
|
||||||
{
|
|
||||||
refresh = false;
|
refresh = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
if (refresh)
|
if (refresh) {
|
||||||
{
|
|
||||||
window.location = res.REFRESH_DATA.url;
|
window.location = res.REFRESH_DATA.url;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Hide the alert even if we refresh the page, in case the user
|
// Hide the alert even if we refresh the page, in case the user
|
||||||
// presses the back button.
|
// presses the back button.
|
||||||
dark.fadeOut(phpbb.alert_time, function() {
|
dark.fadeOut(phpbb.alertTime, function() {
|
||||||
alert.hide();
|
alert.hide();
|
||||||
});
|
});
|
||||||
}, res.REFRESH_DATA.time * 1000); // Server specifies time in seconds
|
}, res.REFRESH_DATA.time * 1000); // Server specifies time in seconds
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else
|
// If confirmation is required, display a dialog to the user.
|
||||||
{
|
phpbb.confirm(res.MESSAGE_BODY, function(del) {
|
||||||
// If confirmation is required, display a diologue to the user.
|
if (del) {
|
||||||
phpbb.confirm(res.MESSAGE_TEXT, function(del) {
|
phpbb.loadingAlert();
|
||||||
if (del)
|
|
||||||
{
|
|
||||||
phpbb.loading_alert();
|
|
||||||
data = $('<form>' + res.S_HIDDEN_FIELDS + '</form>').serialize();
|
data = $('<form>' + res.S_HIDDEN_FIELDS + '</form>').serialize();
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: res.S_CONFIRM_ACTION,
|
url: res.S_CONFIRM_ACTION,
|
||||||
type: 'POST',
|
type: 'POST',
|
||||||
data: data + '&confirm=' + res.YES_VALUE,
|
data: data + '&confirm=' + res.YES_VALUE,
|
||||||
success: return_handler,
|
success: returnHandler,
|
||||||
error: error_handler
|
error: errorHandler
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}, false);
|
}, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function error_handler()
|
|
||||||
{
|
|
||||||
var alert;
|
|
||||||
|
|
||||||
alert = phpbb.alert(dark.attr('data-ajax-error-title'), dark.attr('data-ajax-error-text'));
|
|
||||||
|
|
||||||
setTimeout(function () {
|
|
||||||
dark.fadeOut(phpbb.alert_time, function() {
|
|
||||||
alert.hide();
|
|
||||||
});
|
|
||||||
}, 5000);
|
|
||||||
}
|
|
||||||
|
|
||||||
// If the element is a form, POST must be used and some extra data must
|
// If the element is a form, POST must be used and some extra data must
|
||||||
// be taken from the form.
|
// be taken from the form.
|
||||||
var run_filter = (typeof options.filter === 'function');
|
var runFilter = (typeof options.filter === 'function');
|
||||||
|
|
||||||
if (is_form)
|
if (isForm) {
|
||||||
{
|
|
||||||
action = $this.attr('action').replace('&', '&');
|
action = $this.attr('action').replace('&', '&');
|
||||||
data = $this.serializeArray();
|
data = $this.serializeArray();
|
||||||
method = $this.attr('method') || 'GET';
|
method = $this.attr('method') || 'GET';
|
||||||
|
|
||||||
if ($this.find('input[type="submit"][data-clicked]'))
|
if ($this.find('input[type="submit"][data-clicked]')) {
|
||||||
{
|
|
||||||
submit = $this.find('input[type="submit"][data-clicked]');
|
submit = $this.find('input[type="submit"][data-clicked]');
|
||||||
data.push({
|
data.push({
|
||||||
name: submit.attr('name'),
|
name: submit.attr('name'),
|
||||||
value: submit.val()
|
value: submit.val()
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
action = this.href;
|
action = this.href;
|
||||||
data = null;
|
data = null;
|
||||||
method = 'GET';
|
method = 'GET';
|
||||||
|
@ -378,28 +364,26 @@ phpbb.ajaxify = function(options) {
|
||||||
|
|
||||||
// If filter function returns false, cancel the AJAX functionality,
|
// If filter function returns false, cancel the AJAX functionality,
|
||||||
// and return true (meaning that the HTTP request will be sent normally).
|
// and return true (meaning that the HTTP request will be sent normally).
|
||||||
if (run_filter && !options.filter.call(this, data))
|
if (runFilter && !options.filter.call(this, data)) {
|
||||||
{
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (overlay && (typeof $this.attr('data-overlay') === 'undefined' || $this.attr('data-overlay') == 'true'))
|
if (overlay && (typeof $this.attr('data-overlay') === 'undefined' || $this.attr('data-overlay') === 'true')) {
|
||||||
{
|
phpbb.loadingAlert();
|
||||||
phpbb.loading_alert();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: action,
|
url: action,
|
||||||
type: method,
|
type: method,
|
||||||
data: data,
|
data: data,
|
||||||
success: return_handler,
|
success: returnHandler,
|
||||||
error: error_handler
|
error: errorHandler
|
||||||
});
|
});
|
||||||
|
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
});
|
});
|
||||||
|
|
||||||
if (is_form) {
|
if (isForm) {
|
||||||
elements.find('input:submit').click(function () {
|
elements.find('input:submit').click(function () {
|
||||||
var $this = $(this);
|
var $this = $(this);
|
||||||
|
|
||||||
|
@ -409,15 +393,15 @@ phpbb.ajaxify = function(options) {
|
||||||
}
|
}
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
}
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Hide the optgroups that are not the selected timezone
|
* Hide the optgroups that are not the selected timezone
|
||||||
*
|
*
|
||||||
* @param bool keep_selection Shall we keep the value selected, or shall the user be forced to repick one.
|
* @param bool keepSelection Shall we keep the value selected, or shall the user be forced to repick one.
|
||||||
*/
|
*/
|
||||||
phpbb.timezone_switch_date = function(keep_selection) {
|
phpbb.timezoneSwitchDate = function(keepSelection) {
|
||||||
if ($('#timezone_copy').length == 0) {
|
if ($('#timezone_copy').length === 0) {
|
||||||
// We make a backup of the original dropdown, so we can remove optgroups
|
// We make a backup of the original dropdown, so we can remove optgroups
|
||||||
// instead of setting display to none, because IE and chrome will not
|
// instead of setting display to none, because IE and chrome will not
|
||||||
// hide options inside of optgroups and selects via css
|
// hide options inside of optgroups and selects via css
|
||||||
|
@ -427,50 +411,52 @@ phpbb.timezone_switch_date = function(keep_selection) {
|
||||||
$('#timezone').replaceWith($('#timezone_copy').clone().attr('id', 'timezone').css('display', 'block').attr('name', 'tz'));
|
$('#timezone').replaceWith($('#timezone_copy').clone().attr('id', 'timezone').css('display', 'block').attr('name', 'tz'));
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($('#tz_date').val() != '') {
|
if ($('#tz_date').val() !== '') {
|
||||||
$('#timezone > optgroup').remove(":not([label='" + $('#tz_date').val() + "'])");
|
$('#timezone > optgroup').remove(":not([label='" + $('#tz_date').val() + "'])");
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($('#tz_date').val() == $('#tz_select_date_suggest').attr('data-suggested-tz')) {
|
if ($('#tz_date').val() === $('#tz_select_date_suggest').attr('data-suggested-tz')) {
|
||||||
$('#tz_select_date_suggest').css('display', 'none');
|
$('#tz_select_date_suggest').css('display', 'none');
|
||||||
} else {
|
} else {
|
||||||
$('#tz_select_date_suggest').css('display', 'inline');
|
$('#tz_select_date_suggest').css('display', 'inline');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($("#timezone > optgroup[label='" + $('#tz_date').val() + "'] > option").size() == 1) {
|
if ($("#timezone > optgroup[label='" + $('#tz_date').val() + "'] > option").size() === 1) {
|
||||||
// If there is only one timezone for the selected date, we just select that automatically.
|
// If there is only one timezone for the selected date, we just select that automatically.
|
||||||
$("#timezone > optgroup[label='" + $('#tz_date').val() + "'] > option:first").attr('selected', true);
|
$("#timezone > optgroup[label='" + $('#tz_date').val() + "'] > option:first").attr('selected', true);
|
||||||
keep_selection = true;
|
keepSelection = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (typeof keep_selection !== 'undefined' && !keep_selection) {
|
if (typeof keepSelection !== 'undefined' && !keepSelection) {
|
||||||
$('#timezone > option:first').attr('selected', true);
|
var timezoneOptions = $('#timezone > optgroup option');
|
||||||
|
if (timezoneOptions.filter(':selected').length <= 0) {
|
||||||
|
timezoneOptions.filter(':first').attr('selected', true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Display the date/time select
|
* Display the date/time select
|
||||||
*/
|
*/
|
||||||
phpbb.timezone_enable_date_selection = function() {
|
phpbb.timezoneEnableDateSelection = function() {
|
||||||
$('#tz_select_date').css('display', 'block');
|
$('#tz_select_date').css('display', 'block');
|
||||||
}
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Preselect a date/time or suggest one, if it is not picked.
|
* Preselect a date/time or suggest one, if it is not picked.
|
||||||
*
|
*
|
||||||
* @param bool force_selector Shall we select the suggestion?
|
* @param bool forceSelector Shall we select the suggestion?
|
||||||
*/
|
*/
|
||||||
phpbb.timezone_preselect_select = function(force_selector) {
|
phpbb.timezonePreselectSelect = function(forceSelector) {
|
||||||
|
|
||||||
// The offset returned here is in minutes and negated.
|
// The offset returned here is in minutes and negated.
|
||||||
// http://www.w3schools.com/jsref/jsref_getTimezoneOffset.asp
|
// http://www.w3schools.com/jsref/jsref_getTimezoneOffset.asp
|
||||||
var offset = (new Date()).getTimezoneOffset();
|
var offset = (new Date()).getTimezoneOffset();
|
||||||
|
var sign = '-';
|
||||||
|
|
||||||
if (offset < 0) {
|
if (offset < 0) {
|
||||||
var sign = '+';
|
sign = '+';
|
||||||
offset = -offset;
|
offset = -offset;
|
||||||
} else {
|
|
||||||
var sign = '-';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var minutes = offset % 60;
|
var minutes = offset % 60;
|
||||||
|
@ -489,21 +475,22 @@ phpbb.timezone_preselect_select = function(force_selector) {
|
||||||
}
|
}
|
||||||
|
|
||||||
var prefix = 'GMT' + sign + hours + ':' + minutes;
|
var prefix = 'GMT' + sign + hours + ':' + minutes;
|
||||||
var prefix_length = prefix.length;
|
var prefixLength = prefix.length;
|
||||||
var selector_options = $('#tz_date > option');
|
var selectorOptions = $('#tz_date > option');
|
||||||
|
var i;
|
||||||
|
|
||||||
for (var i = 0; i < selector_options.length; ++i) {
|
for (i = 0; i < selectorOptions.length; ++i) {
|
||||||
var option = selector_options[i];
|
var option = selectorOptions[i];
|
||||||
|
|
||||||
if (option.value.substring(0, prefix_length) == prefix) {
|
if (option.value.substring(0, prefixLength) === prefix) {
|
||||||
if ($('#tz_date').val() != option.value && !force_selector) {
|
if ($('#tz_date').val() !== option.value && !forceSelector) {
|
||||||
// We do not select the option for the user, but notify him,
|
// We do not select the option for the user, but notify him,
|
||||||
// that we would suggest a different setting.
|
// that we would suggest a different setting.
|
||||||
phpbb.timezone_switch_date(true);
|
phpbb.timezoneSwitchDate(true);
|
||||||
$('#tz_select_date_suggest').css('display', 'inline');
|
$('#tz_select_date_suggest').css('display', 'inline');
|
||||||
} else {
|
} else {
|
||||||
option.selected = true;
|
option.selected = true;
|
||||||
phpbb.timezone_switch_date(!force_selector);
|
phpbb.timezoneSwitchDate(!forceSelector);
|
||||||
$('#tz_select_date_suggest').css('display', 'none');
|
$('#tz_select_date_suggest').css('display', 'none');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -515,9 +502,22 @@ phpbb.timezone_preselect_select = function(force_selector) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
phpbb.ajax_callbacks = {};
|
// Toggle notification list
|
||||||
|
$('#notification_list_button').click(function(e) {
|
||||||
|
$('#notification_list').toggle();
|
||||||
|
e.preventDefault();
|
||||||
|
});
|
||||||
|
$('#phpbb').click(function(e) {
|
||||||
|
var target = $(e.target);
|
||||||
|
|
||||||
|
if (!target.is('#notification_list') && !target.is('#notification_list_button') && !target.parents().is('#notification_list')) {
|
||||||
|
$('#notification_list').hide();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
phpbb.ajaxCallbacks = {};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds an AJAX callback to be used by phpbb.ajaxify.
|
* Adds an AJAX callback to be used by phpbb.ajaxify.
|
||||||
|
@ -527,14 +527,12 @@ phpbb.ajax_callbacks = {};
|
||||||
* @param string id The name of the callback.
|
* @param string id The name of the callback.
|
||||||
* @param function callback The callback to be called.
|
* @param function callback The callback to be called.
|
||||||
*/
|
*/
|
||||||
phpbb.add_ajax_callback = function(id, callback)
|
phpbb.addAjaxCallback = function(id, callback) {
|
||||||
{
|
if (typeof callback === 'function') {
|
||||||
if (typeof callback === 'function')
|
phpbb.ajaxCallbacks[id] = callback;
|
||||||
{
|
|
||||||
phpbb.ajax_callbacks[id] = callback;
|
|
||||||
}
|
}
|
||||||
return this;
|
return this;
|
||||||
}
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -542,14 +540,14 @@ phpbb.add_ajax_callback = function(id, callback)
|
||||||
* the alt-text data attribute, and replaces the text in the attribute with the
|
* the alt-text data attribute, and replaces the text in the attribute with the
|
||||||
* current text so that the process can be repeated.
|
* current text so that the process can be repeated.
|
||||||
*/
|
*/
|
||||||
phpbb.add_ajax_callback('alt_text', function() {
|
phpbb.addAjaxCallback('alt_text', function() {
|
||||||
var el = $(this),
|
var el = $(this),
|
||||||
alt_text;
|
altText;
|
||||||
|
|
||||||
alt_text = el.attr('data-alt-text');
|
altText = el.attr('data-alt-text');
|
||||||
el.attr('data-alt-text', el.text());
|
el.attr('data-alt-text', el.text());
|
||||||
el.attr('title', alt_text);
|
el.attr('title', altText);
|
||||||
el.text(alt_text);
|
el.text(altText);
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -561,28 +559,283 @@ phpbb.add_ajax_callback('alt_text', function() {
|
||||||
* Additionally it replaces the class of the link's parent
|
* Additionally it replaces the class of the link's parent
|
||||||
* and changes the link itself.
|
* and changes the link itself.
|
||||||
*/
|
*/
|
||||||
phpbb.add_ajax_callback('toggle_link', function() {
|
phpbb.addAjaxCallback('toggle_link', function() {
|
||||||
var el = $(this),
|
var el = $(this),
|
||||||
toggle_text,
|
toggleText,
|
||||||
toggle_url,
|
toggleUrl,
|
||||||
toggle_class;
|
toggleClass;
|
||||||
|
|
||||||
// Toggle link text
|
// Toggle link text
|
||||||
|
|
||||||
toggle_text = el.attr('data-toggle-text');
|
toggleText = el.attr('data-toggle-text');
|
||||||
el.attr('data-toggle-text', el.text());
|
el.attr('data-toggle-text', el.text());
|
||||||
el.attr('title', toggle_text);
|
el.attr('title', toggleText);
|
||||||
el.text(toggle_text);
|
el.text(toggleText);
|
||||||
|
|
||||||
// Toggle link url
|
// Toggle link url
|
||||||
toggle_url = el.attr('data-toggle-url');
|
toggleUrl = el.attr('data-toggle-url');
|
||||||
el.attr('data-toggle-url', el.attr('href'));
|
el.attr('data-toggle-url', el.attr('href'));
|
||||||
el.attr('href', toggle_url);
|
el.attr('href', toggleUrl);
|
||||||
|
|
||||||
// Toggle class of link parent
|
// Toggle class of link parent
|
||||||
toggle_class = el.attr('data-toggle-class');
|
toggleClass = el.attr('data-toggle-class');
|
||||||
el.attr('data-toggle-class', el.parent().attr('class'));
|
el.attr('data-toggle-class', el.parent().attr('class'));
|
||||||
el.parent().attr('class', toggle_class);
|
el.parent().attr('class', toggleClass);
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Automatically resize textarea
|
||||||
|
*
|
||||||
|
* This function automatically resizes textarea elements when user
|
||||||
|
* types text.
|
||||||
|
*
|
||||||
|
* @param {jQuery} items jQuery object(s) to resize
|
||||||
|
* @param {object} options Optional parameter that adjusts default
|
||||||
|
* configuration. See configuration variable
|
||||||
|
*
|
||||||
|
* Optional parameters:
|
||||||
|
* minWindowHeight {number} Minimum browser window height when textareas are resized. Default = 500
|
||||||
|
* minHeight {number} Minimum height of textarea. Default = 200
|
||||||
|
* maxHeight {number} Maximum height of textarea. Default = 500
|
||||||
|
* heightDiff {number} Minimum difference between window and textarea height. Default = 200
|
||||||
|
* resizeCallback {function} Function to call after resizing textarea
|
||||||
|
* resetCallback {function} Function to call when resize has been canceled
|
||||||
|
|
||||||
|
* Callback function format: function(item) {}
|
||||||
|
* this points to DOM object
|
||||||
|
* item is a jQuery object, same as this
|
||||||
|
*/
|
||||||
|
phpbb.resizeTextArea = function(items, options) {
|
||||||
|
// Configuration
|
||||||
|
var configuration = {
|
||||||
|
minWindowHeight: 500,
|
||||||
|
minHeight: 200,
|
||||||
|
maxHeight: 500,
|
||||||
|
heightDiff: 200,
|
||||||
|
resizeCallback: function(item) { },
|
||||||
|
resetCallback: function(item) { }
|
||||||
|
};
|
||||||
|
|
||||||
|
if (arguments.length > 1)
|
||||||
|
{
|
||||||
|
configuration = $.extend(configuration, options);
|
||||||
|
}
|
||||||
|
|
||||||
|
function resetAutoResize(item)
|
||||||
|
{
|
||||||
|
var $item = $(item);
|
||||||
|
if ($item.hasClass('auto-resized'))
|
||||||
|
{
|
||||||
|
$(item).css({height: '', resize: ''}).removeClass('auto-resized');
|
||||||
|
configuration.resetCallback.call(item, $item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function autoResize(item)
|
||||||
|
{
|
||||||
|
function setHeight(height)
|
||||||
|
{
|
||||||
|
$item.css({height: height + 'px', resize: 'none'}).addClass('auto-resized');
|
||||||
|
configuration.resizeCallback.call(item, $item);
|
||||||
|
}
|
||||||
|
|
||||||
|
var windowHeight = $(window).height();
|
||||||
|
|
||||||
|
if (windowHeight < configuration.minWindowHeight)
|
||||||
|
{
|
||||||
|
resetAutoResize(item);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var maxHeight = Math.min(Math.max(windowHeight - configuration.heightDiff, configuration.minHeight), configuration.maxHeight),
|
||||||
|
$item = $(item),
|
||||||
|
height = parseInt($item.height()),
|
||||||
|
scrollHeight = (item.scrollHeight) ? item.scrollHeight : 0;
|
||||||
|
|
||||||
|
if (height > maxHeight)
|
||||||
|
{
|
||||||
|
setHeight(maxHeight);
|
||||||
|
}
|
||||||
|
else if (scrollHeight > (height + 5))
|
||||||
|
{
|
||||||
|
setHeight(Math.min(maxHeight, scrollHeight));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
items.bind('focus change keyup', function() {
|
||||||
|
$(this).each(function() {
|
||||||
|
autoResize(this);
|
||||||
|
});
|
||||||
|
}).change();
|
||||||
|
|
||||||
|
$(window).resize(function() {
|
||||||
|
items.each(function() {
|
||||||
|
if ($(this).hasClass('auto-resized'))
|
||||||
|
{
|
||||||
|
autoResize(this);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if cursor in textarea is currently inside a bbcode tag
|
||||||
|
*
|
||||||
|
* @param {object} textarea Textarea DOM object
|
||||||
|
* @param {Array} startTags List of start tags to look for
|
||||||
|
* For example, Array('[code]', '[code=')
|
||||||
|
* @param {Array} endTags List of end tags to look for
|
||||||
|
* For example, Array('[/code]')
|
||||||
|
*
|
||||||
|
* @return {boolean} True if cursor is in bbcode tag
|
||||||
|
*/
|
||||||
|
phpbb.inBBCodeTag = function(textarea, startTags, endTags) {
|
||||||
|
var start = textarea.selectionStart,
|
||||||
|
lastEnd = -1,
|
||||||
|
lastStart = -1,
|
||||||
|
i, index, value;
|
||||||
|
|
||||||
|
if (typeof start !== 'number') {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
value = textarea.value.toLowerCase();
|
||||||
|
|
||||||
|
for (i = 0; i < startTags.length; i++) {
|
||||||
|
var tagLength = startTags[i].length;
|
||||||
|
if (start >= tagLength) {
|
||||||
|
index = value.lastIndexOf(startTags[i], start - tagLength);
|
||||||
|
lastStart = Math.max(lastStart, index);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (lastStart == -1) return false;
|
||||||
|
|
||||||
|
if (start > 0) {
|
||||||
|
for (i = 0; i < endTags.length; i++) {
|
||||||
|
index = value.lastIndexOf(endTags[i], start - 1);
|
||||||
|
lastEnd = Math.max(lastEnd, index);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return (lastEnd < lastStart);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adjust textarea to manage code bbcode
|
||||||
|
*
|
||||||
|
* This function allows to use tab characters when typing code
|
||||||
|
* and keeps indentation of previous line of code when adding new
|
||||||
|
* line while typing code.
|
||||||
|
*
|
||||||
|
* Editor's functionality is changed only when cursor is between
|
||||||
|
* [code] and [/code] bbcode tags.
|
||||||
|
*
|
||||||
|
* @param {object} textarea Textarea DOM object to apply editor to
|
||||||
|
*/
|
||||||
|
phpbb.applyCodeEditor = function(textarea) {
|
||||||
|
// list of allowed start and end bbcode code tags, in lower case
|
||||||
|
var startTags = ['[code]', '[code='],
|
||||||
|
startTagsEnd = ']',
|
||||||
|
endTags = ['[/code]'];
|
||||||
|
|
||||||
|
if (!textarea || typeof textarea.selectionStart !== 'number') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($(textarea).data('code-editor') === true) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
function inTag() {
|
||||||
|
return phpbb.inBBCodeTag(textarea, startTags, endTags);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get line of text before cursor
|
||||||
|
*
|
||||||
|
* @param {boolean} stripCodeStart If true, only part of line
|
||||||
|
* after [code] tag will be returned.
|
||||||
|
*
|
||||||
|
* @return {string} Line of text
|
||||||
|
*/
|
||||||
|
function getLastLine(stripCodeStart) {
|
||||||
|
var start = textarea.selectionStart,
|
||||||
|
value = textarea.value,
|
||||||
|
index = value.lastIndexOf("\n", start - 1);
|
||||||
|
|
||||||
|
value = value.substring(index + 1, start);
|
||||||
|
|
||||||
|
if (stripCodeStart) {
|
||||||
|
for (var i = 0; i < startTags.length; i++) {
|
||||||
|
index = value.lastIndexOf(startTags[i]);
|
||||||
|
if (index >= 0) {
|
||||||
|
var tagLength = startTags[i].length;
|
||||||
|
|
||||||
|
value = value.substring(index + tagLength);
|
||||||
|
if (startTags[i].lastIndexOf(startTagsEnd) != tagLength) {
|
||||||
|
index = value.indexOf(startTagsEnd);
|
||||||
|
|
||||||
|
if (index >= 0) {
|
||||||
|
value = value.substr(index + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Append text at cursor position
|
||||||
|
*
|
||||||
|
* @param {string} Text Text to append
|
||||||
|
*/
|
||||||
|
function appendText(text) {
|
||||||
|
var start = textarea.selectionStart,
|
||||||
|
end = textarea.selectionEnd,
|
||||||
|
value = textarea.value;
|
||||||
|
|
||||||
|
textarea.value = value.substr(0, start) + text + value.substr(end);
|
||||||
|
textarea.selectionStart = textarea.selectionEnd = start + text.length;
|
||||||
|
}
|
||||||
|
|
||||||
|
$(textarea).data('code-editor', true).on('keydown', function(event) {
|
||||||
|
var key = event.keyCode || event.which;
|
||||||
|
|
||||||
|
// intercept tabs
|
||||||
|
if (key == 9) {
|
||||||
|
if (inTag()) {
|
||||||
|
appendText("\t");
|
||||||
|
event.preventDefault();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// intercept new line characters
|
||||||
|
if (key == 13) {
|
||||||
|
if (inTag()) {
|
||||||
|
var lastLine = getLastLine(true),
|
||||||
|
code = '' + /^\s*/g.exec(lastLine);
|
||||||
|
|
||||||
|
if (code.length > 0) {
|
||||||
|
appendText("\n" + code);
|
||||||
|
event.preventDefault();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Apply code editor to all textarea elements with data-bbcode attribute
|
||||||
|
*/
|
||||||
|
$(document).ready(function() {
|
||||||
|
$('textarea[data-bbcode]').each(function() {
|
||||||
|
phpbb.applyCodeEditor(this);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
})(jQuery); // Avoid conflicts with other libraries
|
})(jQuery); // Avoid conflicts with other libraries
|
||||||
|
|
20
phpBB/assets/javascript/jquery.js
vendored
20
phpBB/assets/javascript/jquery.js
vendored
File diff suppressed because one or more lines are too long
|
@ -44,8 +44,11 @@ if (!defined('PHPBB_INSTALLED'))
|
||||||
// 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
|
||||||
$script_path = phpbb_clean_path($script_path);
|
require($phpbb_root_path . 'phpbb/filesystem.' . $phpEx);
|
||||||
|
$phpbb_filesystem = new phpbb_filesystem();
|
||||||
|
$script_path = $phpbb_filesystem->clean_path($script_path);
|
||||||
|
|
||||||
$url = (($secure) ? 'https://' : 'http://') . $server_name;
|
$url = (($secure) ? 'https://' : 'http://') . $server_name;
|
||||||
|
|
||||||
|
@ -63,39 +66,32 @@ if (!defined('PHPBB_INSTALLED'))
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// In case $phpbb_adm_relative_path is not set (in case of an update), use the default.
|
||||||
|
$phpbb_adm_relative_path = (isset($phpbb_adm_relative_path)) ? $phpbb_adm_relative_path : 'adm/';
|
||||||
|
$phpbb_admin_path = (defined('PHPBB_ADMIN_PATH')) ? PHPBB_ADMIN_PATH : $phpbb_root_path . $phpbb_adm_relative_path;
|
||||||
|
|
||||||
// Include files
|
// Include files
|
||||||
require($phpbb_root_path . 'includes/class_loader.' . $phpEx);
|
require($phpbb_root_path . 'phpbb/class_loader.' . $phpEx);
|
||||||
|
|
||||||
require($phpbb_root_path . 'includes/functions.' . $phpEx);
|
require($phpbb_root_path . 'includes/functions.' . $phpEx);
|
||||||
require($phpbb_root_path . 'includes/functions_content.' . $phpEx);
|
require($phpbb_root_path . 'includes/functions_content.' . $phpEx);
|
||||||
require($phpbb_root_path . 'includes/functions_container.' . $phpEx);
|
require($phpbb_root_path . 'includes/functions_container.' . $phpEx);
|
||||||
|
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/db/' . ltrim($dbms, 'dbal_') . '.' . $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
|
// Set PHP error handler to ours
|
||||||
set_error_handler(defined('PHPBB_MSG_HANDLER') ? PHPBB_MSG_HANDLER : 'msg_handler');
|
set_error_handler(defined('PHPBB_MSG_HANDLER') ? PHPBB_MSG_HANDLER : 'msg_handler');
|
||||||
|
|
||||||
// Setup class loader first
|
// Setup class loader first
|
||||||
$phpbb_class_loader = new phpbb_class_loader('phpbb_', "{$phpbb_root_path}includes/", ".$phpEx");
|
$phpbb_class_loader = new phpbb_class_loader('phpbb_', "{$phpbb_root_path}phpbb/", $phpEx);
|
||||||
$phpbb_class_loader->register();
|
$phpbb_class_loader->register();
|
||||||
$phpbb_class_loader_ext = new phpbb_class_loader('phpbb_ext_', "{$phpbb_root_path}ext/", ".$phpEx");
|
$phpbb_class_loader_ext = new phpbb_class_loader('phpbb_ext_', "{$phpbb_root_path}ext/", $phpEx);
|
||||||
$phpbb_class_loader_ext->register();
|
$phpbb_class_loader_ext->register();
|
||||||
|
|
||||||
// Set up container
|
// Set up container
|
||||||
$phpbb_container = phpbb_create_dumped_container_unless_debug(
|
$phpbb_container = phpbb_create_default_container($phpbb_root_path, $phpEx);
|
||||||
array(
|
|
||||||
new phpbb_di_extension_config($phpbb_root_path . 'config.' . $phpEx),
|
|
||||||
new phpbb_di_extension_core($phpbb_root_path),
|
|
||||||
),
|
|
||||||
array(
|
|
||||||
new phpbb_di_pass_collection_pass(),
|
|
||||||
new phpbb_di_pass_kernel_pass(),
|
|
||||||
),
|
|
||||||
$phpbb_root_path,
|
|
||||||
$phpEx
|
|
||||||
);
|
|
||||||
|
|
||||||
$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'));
|
||||||
|
@ -113,23 +109,28 @@ $db = $phpbb_container->get('dbal.conn');
|
||||||
// make sure request_var uses this request instance
|
// make sure request_var uses this request instance
|
||||||
request_var('', 0, false, false, $request); // "dependency injection" for a function
|
request_var('', 0, false, false, $request); // "dependency injection" for a function
|
||||||
|
|
||||||
|
// Create a Symfony Request object from our phpbb_request object
|
||||||
|
$symfony_request = phpbb_create_symfony_request($request);
|
||||||
|
|
||||||
// Grab global variables, re-cache if necessary
|
// Grab global variables, re-cache if necessary
|
||||||
$config = $phpbb_container->get('config');
|
$config = $phpbb_container->get('config');
|
||||||
set_config(null, null, null, $config);
|
set_config(null, null, null, $config);
|
||||||
set_config_count(null, null, null, $config);
|
set_config_count(null, null, null, $config);
|
||||||
|
|
||||||
|
$phpbb_log = $phpbb_container->get('log');
|
||||||
|
|
||||||
// load extensions
|
// load extensions
|
||||||
$phpbb_extension_manager = $phpbb_container->get('ext.manager');
|
$phpbb_extension_manager = $phpbb_container->get('ext.manager');
|
||||||
$phpbb_subscriber_loader = $phpbb_container->get('event.subscriber_loader');
|
$phpbb_subscriber_loader = $phpbb_container->get('event.subscriber_loader');
|
||||||
|
|
||||||
$template = $phpbb_container->get('template');
|
$template = $phpbb_container->get('template');
|
||||||
$phpbb_style = $phpbb_container->get('style');
|
|
||||||
|
|
||||||
// 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('phpbb_template', 'display')));
|
$phpbb_hook = new phpbb_hook(array('exit_handler', 'phpbb_user_session_handler', 'append_sid', array('phpbb_template', 'display')));
|
||||||
|
$phpbb_hook_finder = $phpbb_container->get('hook_finder');
|
||||||
|
|
||||||
foreach ($cache->obtain_hooks() as $hook)
|
foreach ($phpbb_hook_finder->find() as $hook)
|
||||||
{
|
{
|
||||||
@include($phpbb_root_path . 'includes/hooks/' . $hook . '.' . $phpEx);
|
@include($phpbb_root_path . 'includes/hooks/' . $hook . '.' . $phpEx);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,18 @@
|
||||||
{
|
{
|
||||||
"minimum-stability": "beta",
|
"minimum-stability": "beta",
|
||||||
"require": {
|
"require": {
|
||||||
"symfony/config": "2.1.*",
|
"symfony/config": "2.3.*",
|
||||||
"symfony/dependency-injection": "2.1.*",
|
"symfony/dependency-injection": "2.3.*",
|
||||||
"symfony/event-dispatcher": "2.1.*",
|
"symfony/event-dispatcher": "2.3.*",
|
||||||
"symfony/http-kernel": "2.1.*",
|
"symfony/http-kernel": "2.3.*",
|
||||||
"symfony/routing": "2.1.*",
|
"symfony/routing": "2.3.*",
|
||||||
"symfony/yaml": "2.1.*"
|
"symfony/yaml": "2.3.*",
|
||||||
|
"twig/twig": "1.13.*"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"fabpot/goutte": "v0.1.0"
|
"fabpot/goutte": "v0.1.0",
|
||||||
|
"phpunit/dbunit": "1.2.*",
|
||||||
|
"phpunit/phpunit": "3.7.*",
|
||||||
|
"phing/phing": "2.4.*"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
1081
phpBB/composer.lock
generated
1081
phpBB/composer.lock
generated
File diff suppressed because it is too large
Load diff
37
phpBB/config/auth_providers.yml
Normal file
37
phpBB/config/auth_providers.yml
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
services:
|
||||||
|
auth.provider_collection:
|
||||||
|
class: phpbb_di_service_collection
|
||||||
|
arguments:
|
||||||
|
- @service_container
|
||||||
|
tags:
|
||||||
|
- { name: service_collection, tag: auth.provider }
|
||||||
|
auth.provider.db:
|
||||||
|
class: phpbb_auth_provider_db
|
||||||
|
arguments:
|
||||||
|
- @dbal.conn
|
||||||
|
- @config
|
||||||
|
- @request
|
||||||
|
- @user
|
||||||
|
- %core.root_path%
|
||||||
|
- %core.php_ext%
|
||||||
|
tags:
|
||||||
|
- { name: auth.provider }
|
||||||
|
auth.provider.apache:
|
||||||
|
class: phpbb_auth_provider_apache
|
||||||
|
arguments:
|
||||||
|
- @dbal.conn
|
||||||
|
- @config
|
||||||
|
- @request
|
||||||
|
- @user
|
||||||
|
- %core.root_path%
|
||||||
|
- %core.php_ext%
|
||||||
|
tags:
|
||||||
|
- { name: auth.provider }
|
||||||
|
auth.provider.ldap:
|
||||||
|
class: phpbb_auth_provider_ldap
|
||||||
|
arguments:
|
||||||
|
- @dbal.conn
|
||||||
|
- @config
|
||||||
|
- @user
|
||||||
|
tags:
|
||||||
|
- { name: auth.provider }
|
55
phpBB/config/avatars.yml
Normal file
55
phpBB/config/avatars.yml
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
services:
|
||||||
|
avatar.driver.gravatar:
|
||||||
|
class: phpbb_avatar_driver_gravatar
|
||||||
|
arguments:
|
||||||
|
- @config
|
||||||
|
- %core.root_path%
|
||||||
|
- %core.php_ext%
|
||||||
|
- @cache.driver
|
||||||
|
calls:
|
||||||
|
- [set_name, [avatar.driver.gravatar]]
|
||||||
|
tags:
|
||||||
|
- { name: avatar.driver }
|
||||||
|
|
||||||
|
avatar.driver.local:
|
||||||
|
class: phpbb_avatar_driver_local
|
||||||
|
arguments:
|
||||||
|
- @config
|
||||||
|
- %core.root_path%
|
||||||
|
- %core.php_ext%
|
||||||
|
- @cache.driver
|
||||||
|
calls:
|
||||||
|
- [set_name, [avatar.driver.local]]
|
||||||
|
tags:
|
||||||
|
- { name: avatar.driver }
|
||||||
|
|
||||||
|
avatar.driver.remote:
|
||||||
|
class: phpbb_avatar_driver_remote
|
||||||
|
arguments:
|
||||||
|
- @config
|
||||||
|
- %core.root_path%
|
||||||
|
- %core.php_ext%
|
||||||
|
- @cache.driver
|
||||||
|
calls:
|
||||||
|
- [set_name, [avatar.driver.remote]]
|
||||||
|
tags:
|
||||||
|
- { name: avatar.driver }
|
||||||
|
|
||||||
|
avatar.driver.upload:
|
||||||
|
class: phpbb_avatar_driver_upload
|
||||||
|
arguments:
|
||||||
|
- @config
|
||||||
|
- %core.root_path%
|
||||||
|
- %core.php_ext%
|
||||||
|
- @cache.driver
|
||||||
|
calls:
|
||||||
|
- [set_name, [avatar.driver.upload]]
|
||||||
|
tags:
|
||||||
|
- { name: avatar.driver }
|
||||||
|
|
||||||
|
avatar.driver_collection:
|
||||||
|
class: phpbb_di_service_collection
|
||||||
|
arguments:
|
||||||
|
- @service_container
|
||||||
|
tags:
|
||||||
|
- { name: service_collection, tag: avatar.driver }
|
|
@ -6,6 +6,8 @@ services:
|
||||||
- %core.php_ext%
|
- %core.php_ext%
|
||||||
- @config
|
- @config
|
||||||
- @dbal.conn
|
- @dbal.conn
|
||||||
|
calls:
|
||||||
|
- [set_name, [cron.task.core.prune_all_forums]]
|
||||||
tags:
|
tags:
|
||||||
- { name: cron.task }
|
- { name: cron.task }
|
||||||
|
|
||||||
|
@ -16,6 +18,8 @@ services:
|
||||||
- %core.php_ext%
|
- %core.php_ext%
|
||||||
- @config
|
- @config
|
||||||
- @dbal.conn
|
- @dbal.conn
|
||||||
|
calls:
|
||||||
|
- [set_name, [cron.task.core.prune_forum]]
|
||||||
tags:
|
tags:
|
||||||
- { name: cron.task }
|
- { name: cron.task }
|
||||||
|
|
||||||
|
@ -25,6 +29,8 @@ services:
|
||||||
- %core.root_path%
|
- %core.root_path%
|
||||||
- %core.php_ext%
|
- %core.php_ext%
|
||||||
- @config
|
- @config
|
||||||
|
calls:
|
||||||
|
- [set_name, [cron.task.core.queue]]
|
||||||
tags:
|
tags:
|
||||||
- { name: cron.task }
|
- { name: cron.task }
|
||||||
|
|
||||||
|
@ -33,6 +39,8 @@ services:
|
||||||
arguments:
|
arguments:
|
||||||
- @config
|
- @config
|
||||||
- @cache.driver
|
- @cache.driver
|
||||||
|
calls:
|
||||||
|
- [set_name, [cron.task.core.tidy_cache]]
|
||||||
tags:
|
tags:
|
||||||
- { name: cron.task }
|
- { name: cron.task }
|
||||||
|
|
||||||
|
@ -42,6 +50,8 @@ services:
|
||||||
- %core.root_path%
|
- %core.root_path%
|
||||||
- %core.php_ext%
|
- %core.php_ext%
|
||||||
- @config
|
- @config
|
||||||
|
calls:
|
||||||
|
- [set_name, [cron.task.core.tidy_database]]
|
||||||
tags:
|
tags:
|
||||||
- { name: cron.task }
|
- { name: cron.task }
|
||||||
|
|
||||||
|
@ -54,6 +64,8 @@ services:
|
||||||
- @config
|
- @config
|
||||||
- @dbal.conn
|
- @dbal.conn
|
||||||
- @user
|
- @user
|
||||||
|
calls:
|
||||||
|
- [set_name, [cron.task.core.tidy_search]]
|
||||||
tags:
|
tags:
|
||||||
- { name: cron.task }
|
- { name: cron.task }
|
||||||
|
|
||||||
|
@ -62,6 +74,8 @@ services:
|
||||||
arguments:
|
arguments:
|
||||||
- @config
|
- @config
|
||||||
- @user
|
- @user
|
||||||
|
calls:
|
||||||
|
- [set_name, [cron.task.core.tidy_sessions]]
|
||||||
tags:
|
tags:
|
||||||
- { name: cron.task }
|
- { name: cron.task }
|
||||||
|
|
||||||
|
@ -71,5 +85,7 @@ services:
|
||||||
- %core.root_path%
|
- %core.root_path%
|
||||||
- %core.php_ext%
|
- %core.php_ext%
|
||||||
- @config
|
- @config
|
||||||
|
calls:
|
||||||
|
- [set_name, [cron.task.core.tidy_warnings]]
|
||||||
tags:
|
tags:
|
||||||
- { name: cron.task }
|
- { name: cron.task }
|
||||||
|
|
105
phpBB/config/feed.yml
Normal file
105
phpBB/config/feed.yml
Normal file
|
@ -0,0 +1,105 @@
|
||||||
|
services:
|
||||||
|
feed.helper:
|
||||||
|
class: phpbb_feed_helper
|
||||||
|
arguments:
|
||||||
|
- @config
|
||||||
|
- @user
|
||||||
|
- %core.root_path%
|
||||||
|
|
||||||
|
feed.factory:
|
||||||
|
class: phpbb_feed_factory
|
||||||
|
arguments:
|
||||||
|
- @service_container
|
||||||
|
- @config
|
||||||
|
- @dbal.conn
|
||||||
|
|
||||||
|
feed.forum:
|
||||||
|
class: phpbb_feed_forum
|
||||||
|
scope: prototype
|
||||||
|
arguments:
|
||||||
|
- @feed.helper
|
||||||
|
- @config
|
||||||
|
- @dbal.conn
|
||||||
|
- @cache.driver
|
||||||
|
- @user
|
||||||
|
- @auth
|
||||||
|
- @content.visibility
|
||||||
|
- %core.php_ext%
|
||||||
|
|
||||||
|
feed.forums:
|
||||||
|
class: phpbb_feed_forums
|
||||||
|
scope: prototype
|
||||||
|
arguments:
|
||||||
|
- @feed.helper
|
||||||
|
- @config
|
||||||
|
- @dbal.conn
|
||||||
|
- @cache.driver
|
||||||
|
- @user
|
||||||
|
- @auth
|
||||||
|
- @content.visibility
|
||||||
|
- %core.php_ext%
|
||||||
|
|
||||||
|
feed.news:
|
||||||
|
class: phpbb_feed_news
|
||||||
|
scope: prototype
|
||||||
|
arguments:
|
||||||
|
- @feed.helper
|
||||||
|
- @config
|
||||||
|
- @dbal.conn
|
||||||
|
- @cache.driver
|
||||||
|
- @user
|
||||||
|
- @auth
|
||||||
|
- @content.visibility
|
||||||
|
- %core.php_ext%
|
||||||
|
|
||||||
|
feed.overall:
|
||||||
|
class: phpbb_feed_overall
|
||||||
|
scope: prototype
|
||||||
|
arguments:
|
||||||
|
- @feed.helper
|
||||||
|
- @config
|
||||||
|
- @dbal.conn
|
||||||
|
- @cache.driver
|
||||||
|
- @user
|
||||||
|
- @auth
|
||||||
|
- @content.visibility
|
||||||
|
- %core.php_ext%
|
||||||
|
|
||||||
|
feed.topic:
|
||||||
|
class: phpbb_feed_topic
|
||||||
|
scope: prototype
|
||||||
|
arguments:
|
||||||
|
- @feed.helper
|
||||||
|
- @config
|
||||||
|
- @dbal.conn
|
||||||
|
- @cache.driver
|
||||||
|
- @user
|
||||||
|
- @auth
|
||||||
|
- @content.visibility
|
||||||
|
- %core.php_ext%
|
||||||
|
|
||||||
|
feed.topics:
|
||||||
|
class: phpbb_feed_topics
|
||||||
|
scope: prototype
|
||||||
|
arguments:
|
||||||
|
- @feed.helper
|
||||||
|
- @config
|
||||||
|
- @dbal.conn
|
||||||
|
- @cache.driver
|
||||||
|
- @user
|
||||||
|
- @auth
|
||||||
|
- @content.visibility
|
||||||
|
- %core.php_ext%
|
||||||
|
|
||||||
|
feed.topics_active:
|
||||||
|
class: phpbb_feed_topics_active
|
||||||
|
scope: prototype
|
||||||
|
arguments:
|
||||||
|
- @feed.helper
|
||||||
|
- @config
|
||||||
|
- @dbal.conn
|
||||||
|
- @cache.driver
|
||||||
|
- @user
|
||||||
|
- @auth
|
||||||
|
- @content.visibility
|
||||||
|
- %core.php_ext%
|
49
phpBB/config/migrator.yml
Normal file
49
phpBB/config/migrator.yml
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
services:
|
||||||
|
migrator:
|
||||||
|
class: phpbb_db_migrator
|
||||||
|
arguments:
|
||||||
|
- @config
|
||||||
|
- @dbal.conn
|
||||||
|
- @dbal.tools
|
||||||
|
- %tables.migrations%
|
||||||
|
- %core.root_path%
|
||||||
|
- %core.php_ext%
|
||||||
|
- %core.table_prefix%
|
||||||
|
- @migrator.tool_collection
|
||||||
|
|
||||||
|
migrator.tool_collection:
|
||||||
|
class: phpbb_di_service_collection
|
||||||
|
arguments:
|
||||||
|
- @service_container
|
||||||
|
tags:
|
||||||
|
- { name: service_collection, tag: migrator.tool }
|
||||||
|
|
||||||
|
migrator.tool.config:
|
||||||
|
class: phpbb_db_migration_tool_config
|
||||||
|
arguments:
|
||||||
|
- @config
|
||||||
|
tags:
|
||||||
|
- { name: migrator.tool }
|
||||||
|
|
||||||
|
migrator.tool.module:
|
||||||
|
class: phpbb_db_migration_tool_module
|
||||||
|
arguments:
|
||||||
|
- @dbal.conn
|
||||||
|
- @cache
|
||||||
|
- @user
|
||||||
|
- %core.root_path%
|
||||||
|
- %core.php_ext%
|
||||||
|
- %tables.modules%
|
||||||
|
tags:
|
||||||
|
- { name: migrator.tool }
|
||||||
|
|
||||||
|
migrator.tool.permission:
|
||||||
|
class: phpbb_db_migration_tool_permission
|
||||||
|
arguments:
|
||||||
|
- @dbal.conn
|
||||||
|
- @cache
|
||||||
|
- @auth
|
||||||
|
- %core.root_path%
|
||||||
|
- %core.php_ext%
|
||||||
|
tags:
|
||||||
|
- { name: migrator.tool }
|
314
phpBB/config/notifications.yml
Normal file
314
phpBB/config/notifications.yml
Normal file
|
@ -0,0 +1,314 @@
|
||||||
|
services:
|
||||||
|
notification.type_collection:
|
||||||
|
class: phpbb_di_service_collection
|
||||||
|
arguments:
|
||||||
|
- @service_container
|
||||||
|
tags:
|
||||||
|
- { name: service_collection, tag: notification.type }
|
||||||
|
|
||||||
|
notification.method_collection:
|
||||||
|
class: phpbb_di_service_collection
|
||||||
|
arguments:
|
||||||
|
- @service_container
|
||||||
|
tags:
|
||||||
|
- { name: service_collection, tag: notification.method }
|
||||||
|
|
||||||
|
notification.type.approve_post:
|
||||||
|
class: phpbb_notification_type_approve_post
|
||||||
|
scope: prototype # scope MUST be prototype for this to work! # scope MUST be prototype for this to work!
|
||||||
|
arguments:
|
||||||
|
- @user_loader
|
||||||
|
- @dbal.conn
|
||||||
|
- @cache.driver
|
||||||
|
- @user
|
||||||
|
- @auth
|
||||||
|
- @config
|
||||||
|
- %core.root_path%
|
||||||
|
- %core.php_ext%
|
||||||
|
- %tables.notification_types%
|
||||||
|
- %tables.notifications%
|
||||||
|
- %tables.user_notifications%
|
||||||
|
tags:
|
||||||
|
- { name: notification.type }
|
||||||
|
|
||||||
|
notification.type.approve_topic:
|
||||||
|
class: phpbb_notification_type_approve_topic
|
||||||
|
scope: prototype # scope MUST be prototype for this to work!
|
||||||
|
arguments:
|
||||||
|
- @user_loader
|
||||||
|
- @dbal.conn
|
||||||
|
- @cache.driver
|
||||||
|
- @user
|
||||||
|
- @auth
|
||||||
|
- @config
|
||||||
|
- %core.root_path%
|
||||||
|
- %core.php_ext%
|
||||||
|
- %tables.notification_types%
|
||||||
|
- %tables.notifications%
|
||||||
|
- %tables.user_notifications%
|
||||||
|
tags:
|
||||||
|
- { name: notification.type }
|
||||||
|
|
||||||
|
notification.type.bookmark:
|
||||||
|
class: phpbb_notification_type_bookmark
|
||||||
|
scope: prototype # scope MUST be prototype for this to work!
|
||||||
|
arguments:
|
||||||
|
- @user_loader
|
||||||
|
- @dbal.conn
|
||||||
|
- @cache.driver
|
||||||
|
- @user
|
||||||
|
- @auth
|
||||||
|
- @config
|
||||||
|
- %core.root_path%
|
||||||
|
- %core.php_ext%
|
||||||
|
- %tables.notification_types%
|
||||||
|
- %tables.notifications%
|
||||||
|
- %tables.user_notifications%
|
||||||
|
tags:
|
||||||
|
- { name: notification.type }
|
||||||
|
|
||||||
|
notification.type.disapprove_post:
|
||||||
|
class: phpbb_notification_type_disapprove_post
|
||||||
|
scope: prototype # scope MUST be prototype for this to work!
|
||||||
|
arguments:
|
||||||
|
- @user_loader
|
||||||
|
- @dbal.conn
|
||||||
|
- @cache.driver
|
||||||
|
- @user
|
||||||
|
- @auth
|
||||||
|
- @config
|
||||||
|
- %core.root_path%
|
||||||
|
- %core.php_ext%
|
||||||
|
- %tables.notification_types%
|
||||||
|
- %tables.notifications%
|
||||||
|
- %tables.user_notifications%
|
||||||
|
tags:
|
||||||
|
- { name: notification.type }
|
||||||
|
|
||||||
|
notification.type.disapprove_topic:
|
||||||
|
class: phpbb_notification_type_disapprove_topic
|
||||||
|
scope: prototype # scope MUST be prototype for this to work!
|
||||||
|
arguments:
|
||||||
|
- @user_loader
|
||||||
|
- @dbal.conn
|
||||||
|
- @cache.driver
|
||||||
|
- @user
|
||||||
|
- @auth
|
||||||
|
- @config
|
||||||
|
- %core.root_path%
|
||||||
|
- %core.php_ext%
|
||||||
|
- %tables.notification_types%
|
||||||
|
- %tables.notifications%
|
||||||
|
- %tables.user_notifications%
|
||||||
|
tags:
|
||||||
|
- { name: notification.type }
|
||||||
|
|
||||||
|
notification.type.pm:
|
||||||
|
class: phpbb_notification_type_pm
|
||||||
|
scope: prototype # scope MUST be prototype for this to work!
|
||||||
|
arguments:
|
||||||
|
- @user_loader
|
||||||
|
- @dbal.conn
|
||||||
|
- @cache.driver
|
||||||
|
- @user
|
||||||
|
- @auth
|
||||||
|
- @config
|
||||||
|
- %core.root_path%
|
||||||
|
- %core.php_ext%
|
||||||
|
- %tables.notification_types%
|
||||||
|
- %tables.notifications%
|
||||||
|
- %tables.user_notifications%
|
||||||
|
tags:
|
||||||
|
- { name: notification.type }
|
||||||
|
|
||||||
|
notification.type.post:
|
||||||
|
class: phpbb_notification_type_post
|
||||||
|
scope: prototype # scope MUST be prototype for this to work!
|
||||||
|
arguments:
|
||||||
|
- @user_loader
|
||||||
|
- @dbal.conn
|
||||||
|
- @cache.driver
|
||||||
|
- @user
|
||||||
|
- @auth
|
||||||
|
- @config
|
||||||
|
- %core.root_path%
|
||||||
|
- %core.php_ext%
|
||||||
|
- %tables.notification_types%
|
||||||
|
- %tables.notifications%
|
||||||
|
- %tables.user_notifications%
|
||||||
|
tags:
|
||||||
|
- { name: notification.type }
|
||||||
|
|
||||||
|
notification.type.post_in_queue:
|
||||||
|
class: phpbb_notification_type_post_in_queue
|
||||||
|
scope: prototype # scope MUST be prototype for this to work!
|
||||||
|
arguments:
|
||||||
|
- @user_loader
|
||||||
|
- @dbal.conn
|
||||||
|
- @cache.driver
|
||||||
|
- @user
|
||||||
|
- @auth
|
||||||
|
- @config
|
||||||
|
- %core.root_path%
|
||||||
|
- %core.php_ext%
|
||||||
|
- %tables.notification_types%
|
||||||
|
- %tables.notifications%
|
||||||
|
- %tables.user_notifications%
|
||||||
|
tags:
|
||||||
|
- { name: notification.type }
|
||||||
|
|
||||||
|
notification.type.quote:
|
||||||
|
class: phpbb_notification_type_quote
|
||||||
|
scope: prototype # scope MUST be prototype for this to work!
|
||||||
|
arguments:
|
||||||
|
- @user_loader
|
||||||
|
- @dbal.conn
|
||||||
|
- @cache.driver
|
||||||
|
- @user
|
||||||
|
- @auth
|
||||||
|
- @config
|
||||||
|
- %core.root_path%
|
||||||
|
- %core.php_ext%
|
||||||
|
- %tables.notification_types%
|
||||||
|
- %tables.notifications%
|
||||||
|
- %tables.user_notifications%
|
||||||
|
tags:
|
||||||
|
- { name: notification.type }
|
||||||
|
|
||||||
|
notification.type.report_pm:
|
||||||
|
class: phpbb_notification_type_report_pm
|
||||||
|
scope: prototype # scope MUST be prototype for this to work!
|
||||||
|
arguments:
|
||||||
|
- @user_loader
|
||||||
|
- @dbal.conn
|
||||||
|
- @cache.driver
|
||||||
|
- @user
|
||||||
|
- @auth
|
||||||
|
- @config
|
||||||
|
- %core.root_path%
|
||||||
|
- %core.php_ext%
|
||||||
|
- %tables.notification_types%
|
||||||
|
- %tables.notifications%
|
||||||
|
- %tables.user_notifications%
|
||||||
|
tags:
|
||||||
|
- { name: notification.type }
|
||||||
|
|
||||||
|
notification.type.report_pm_closed:
|
||||||
|
class: phpbb_notification_type_report_pm_closed
|
||||||
|
scope: prototype # scope MUST be prototype for this to work!
|
||||||
|
arguments:
|
||||||
|
- @user_loader
|
||||||
|
- @dbal.conn
|
||||||
|
- @cache.driver
|
||||||
|
- @user
|
||||||
|
- @auth
|
||||||
|
- @config
|
||||||
|
- %core.root_path%
|
||||||
|
- %core.php_ext%
|
||||||
|
- %tables.notification_types%
|
||||||
|
- %tables.notifications%
|
||||||
|
- %tables.user_notifications%
|
||||||
|
tags:
|
||||||
|
- { name: notification.type }
|
||||||
|
|
||||||
|
notification.type.report_post:
|
||||||
|
class: phpbb_notification_type_report_post
|
||||||
|
scope: prototype # scope MUST be prototype for this to work!
|
||||||
|
arguments:
|
||||||
|
- @user_loader
|
||||||
|
- @dbal.conn
|
||||||
|
- @cache.driver
|
||||||
|
- @user
|
||||||
|
- @auth
|
||||||
|
- @config
|
||||||
|
- %core.root_path%
|
||||||
|
- %core.php_ext%
|
||||||
|
- %tables.notification_types%
|
||||||
|
- %tables.notifications%
|
||||||
|
- %tables.user_notifications%
|
||||||
|
tags:
|
||||||
|
- { name: notification.type }
|
||||||
|
|
||||||
|
notification.type.report_post_closed:
|
||||||
|
class: phpbb_notification_type_report_post
|
||||||
|
scope: prototype # scope MUST be prototype for this to work!
|
||||||
|
arguments:
|
||||||
|
- @user_loader
|
||||||
|
- @dbal.conn
|
||||||
|
- @cache.driver
|
||||||
|
- @user
|
||||||
|
- @auth
|
||||||
|
- @config
|
||||||
|
- %core.root_path%
|
||||||
|
- %core.php_ext%
|
||||||
|
- %tables.notification_types%
|
||||||
|
- %tables.notifications%
|
||||||
|
- %tables.user_notifications%
|
||||||
|
tags:
|
||||||
|
- { name: notification.type }
|
||||||
|
|
||||||
|
notification.type.topic:
|
||||||
|
class: phpbb_notification_type_topic
|
||||||
|
scope: prototype # scope MUST be prototype for this to work!
|
||||||
|
arguments:
|
||||||
|
- @user_loader
|
||||||
|
- @dbal.conn
|
||||||
|
- @cache.driver
|
||||||
|
- @user
|
||||||
|
- @auth
|
||||||
|
- @config
|
||||||
|
- %core.root_path%
|
||||||
|
- %core.php_ext%
|
||||||
|
- %tables.notification_types%
|
||||||
|
- %tables.notifications%
|
||||||
|
- %tables.user_notifications%
|
||||||
|
tags:
|
||||||
|
- { name: notification.type }
|
||||||
|
|
||||||
|
notification.type.topic_in_queue:
|
||||||
|
class: phpbb_notification_type_topic_in_queue
|
||||||
|
scope: prototype # scope MUST be prototype for this to work!
|
||||||
|
arguments:
|
||||||
|
- @user_loader
|
||||||
|
- @dbal.conn
|
||||||
|
- @cache.driver
|
||||||
|
- @user
|
||||||
|
- @auth
|
||||||
|
- @config
|
||||||
|
- %core.root_path%
|
||||||
|
- %core.php_ext%
|
||||||
|
- %tables.notification_types%
|
||||||
|
- %tables.notifications%
|
||||||
|
- %tables.user_notifications%
|
||||||
|
tags:
|
||||||
|
- { name: notification.type }
|
||||||
|
|
||||||
|
notification.method.email:
|
||||||
|
class: phpbb_notification_method_email
|
||||||
|
scope: prototype # scope MUST be prototype for this to work!
|
||||||
|
arguments:
|
||||||
|
- @user_loader
|
||||||
|
- @dbal.conn
|
||||||
|
- @cache.driver
|
||||||
|
- @user
|
||||||
|
- @auth
|
||||||
|
- @config
|
||||||
|
- %core.root_path%
|
||||||
|
- %core.php_ext%
|
||||||
|
tags:
|
||||||
|
- { name: notification.method }
|
||||||
|
|
||||||
|
notification.method.jabber:
|
||||||
|
class: phpbb_notification_method_jabber
|
||||||
|
scope: prototype # scope MUST be prototype for this to work!
|
||||||
|
arguments:
|
||||||
|
- @user_loader
|
||||||
|
- @dbal.conn
|
||||||
|
- @cache.driver
|
||||||
|
- @user
|
||||||
|
- @auth
|
||||||
|
- @config
|
||||||
|
- %core.root_path%
|
||||||
|
- %core.php_ext%
|
||||||
|
tags:
|
||||||
|
- { name: notification.method }
|
|
@ -1,15 +1,37 @@
|
||||||
imports:
|
imports:
|
||||||
- { resource: tables.yml }
|
- { resource: tables.yml }
|
||||||
- { resource: cron_tasks.yml }
|
- { resource: cron_tasks.yml }
|
||||||
|
- { resource: notifications.yml }
|
||||||
|
- { resource: migrator.yml }
|
||||||
|
- { resource: avatars.yml }
|
||||||
|
- { resource: feed.yml }
|
||||||
|
- { resource: auth_providers.yml }
|
||||||
|
|
||||||
services:
|
services:
|
||||||
|
acl.permissions:
|
||||||
|
class: phpbb_permissions
|
||||||
|
arguments:
|
||||||
|
- @dispatcher
|
||||||
|
- @user
|
||||||
|
|
||||||
auth:
|
auth:
|
||||||
class: phpbb_auth
|
class: phpbb_auth
|
||||||
|
|
||||||
|
avatar.manager:
|
||||||
|
class: phpbb_avatar_manager
|
||||||
|
arguments:
|
||||||
|
- @config
|
||||||
|
- @avatar.driver_collection
|
||||||
|
- @service_container
|
||||||
|
|
||||||
cache:
|
cache:
|
||||||
class: phpbb_cache_service
|
class: phpbb_cache_service
|
||||||
arguments:
|
arguments:
|
||||||
- @cache.driver
|
- @cache.driver
|
||||||
|
- @config
|
||||||
|
- @dbal.conn
|
||||||
|
- %core.root_path%
|
||||||
|
- %core.php_ext%
|
||||||
|
|
||||||
cache.driver:
|
cache.driver:
|
||||||
class: %cache.driver.class%
|
class: %cache.driver.class%
|
||||||
|
@ -22,7 +44,7 @@ services:
|
||||||
arguments:
|
arguments:
|
||||||
- phpbb_
|
- phpbb_
|
||||||
- %core.root_path%includes/
|
- %core.root_path%includes/
|
||||||
- .%core.php_ext%
|
- %core.php_ext%
|
||||||
calls:
|
calls:
|
||||||
- [register, []]
|
- [register, []]
|
||||||
- [set_cache, [@cache.driver]]
|
- [set_cache, [@cache.driver]]
|
||||||
|
@ -32,7 +54,7 @@ services:
|
||||||
arguments:
|
arguments:
|
||||||
- phpbb_ext_
|
- phpbb_ext_
|
||||||
- %core.root_path%ext/
|
- %core.root_path%ext/
|
||||||
- .%core.php_ext%
|
- %core.php_ext%
|
||||||
calls:
|
calls:
|
||||||
- [register, []]
|
- [register, []]
|
||||||
- [set_cache, [@cache.driver]]
|
- [set_cache, [@cache.driver]]
|
||||||
|
@ -44,29 +66,40 @@ services:
|
||||||
- @cache.driver
|
- @cache.driver
|
||||||
- %tables.config%
|
- %tables.config%
|
||||||
|
|
||||||
|
config_text:
|
||||||
|
class: phpbb_config_db_text
|
||||||
|
arguments:
|
||||||
|
- @dbal.conn
|
||||||
|
- %tables.config_text%
|
||||||
|
|
||||||
|
content.visibility:
|
||||||
|
class: phpbb_content_visibility
|
||||||
|
arguments:
|
||||||
|
- @auth
|
||||||
|
- @dbal.conn
|
||||||
|
- @user
|
||||||
|
- %core.root_path%
|
||||||
|
- %core.php_ext%
|
||||||
|
- %tables.forums%
|
||||||
|
- %tables.posts%
|
||||||
|
- %tables.topics%
|
||||||
|
- %tables.users%
|
||||||
|
|
||||||
controller.helper:
|
controller.helper:
|
||||||
class: phpbb_controller_helper
|
class: phpbb_controller_helper
|
||||||
arguments:
|
arguments:
|
||||||
- @template
|
- @template
|
||||||
- @user
|
- @user
|
||||||
|
- @request
|
||||||
- %core.root_path%
|
- %core.root_path%
|
||||||
- .%core.php_ext%
|
- %core.php_ext%
|
||||||
|
|
||||||
controller.resolver:
|
controller.resolver:
|
||||||
class: phpbb_controller_resolver
|
class: phpbb_controller_resolver
|
||||||
arguments:
|
arguments:
|
||||||
- @user
|
- @user
|
||||||
- @service_container
|
- @service_container
|
||||||
- @ext.finder
|
- @template
|
||||||
|
|
||||||
controller.route_collection:
|
|
||||||
class: phpbb_controller_route_collection
|
|
||||||
arguments:
|
|
||||||
- @ext.finder
|
|
||||||
- @controller.provider
|
|
||||||
|
|
||||||
controller.provider:
|
|
||||||
class: phpbb_controller_provider
|
|
||||||
|
|
||||||
cron.task_collection:
|
cron.task_collection:
|
||||||
class: phpbb_di_service_collection
|
class: phpbb_di_service_collection
|
||||||
|
@ -99,6 +132,11 @@ services:
|
||||||
calls:
|
calls:
|
||||||
- [sql_connect, [%dbal.dbhost%, %dbal.dbuser%, %dbal.dbpasswd%, %dbal.dbname%, %dbal.dbport%, false, %dbal.new_link%]]
|
- [sql_connect, [%dbal.dbhost%, %dbal.dbuser%, %dbal.dbpasswd%, %dbal.dbname%, %dbal.dbport%, false, %dbal.new_link%]]
|
||||||
|
|
||||||
|
dbal.tools:
|
||||||
|
class: phpbb_db_tools
|
||||||
|
arguments:
|
||||||
|
- @dbal.conn
|
||||||
|
|
||||||
event.subscriber_loader:
|
event.subscriber_loader:
|
||||||
class: phpbb_event_extension_subscriber_loader
|
class: phpbb_event_extension_subscriber_loader
|
||||||
arguments:
|
arguments:
|
||||||
|
@ -110,34 +148,60 @@ services:
|
||||||
ext.manager:
|
ext.manager:
|
||||||
class: phpbb_extension_manager
|
class: phpbb_extension_manager
|
||||||
arguments:
|
arguments:
|
||||||
|
- @service_container
|
||||||
- @dbal.conn
|
- @dbal.conn
|
||||||
- @config
|
- @config
|
||||||
|
- @filesystem
|
||||||
- %tables.ext%
|
- %tables.ext%
|
||||||
- %core.root_path%
|
- %core.root_path%
|
||||||
- .%core.php_ext%
|
- %core.php_ext%
|
||||||
- @cache.driver
|
- @cache.driver
|
||||||
|
|
||||||
ext.finder:
|
ext.finder:
|
||||||
class: phpbb_extension_finder
|
class: phpbb_extension_finder
|
||||||
arguments:
|
arguments:
|
||||||
- @ext.manager
|
- @ext.manager
|
||||||
|
- @filesystem
|
||||||
- %core.root_path%
|
- %core.root_path%
|
||||||
- @cache.driver
|
- @cache.driver
|
||||||
- .%core.php_ext%
|
- %core.php_ext%
|
||||||
- _ext_finder
|
- _ext_finder
|
||||||
|
|
||||||
|
filesystem:
|
||||||
|
class: phpbb_filesystem
|
||||||
|
|
||||||
|
groupposition.legend:
|
||||||
|
class: phpbb_groupposition_legend
|
||||||
|
arguments:
|
||||||
|
- @dbal.conn
|
||||||
|
- @user
|
||||||
|
|
||||||
|
groupposition.teampage:
|
||||||
|
class: phpbb_groupposition_teampage
|
||||||
|
arguments:
|
||||||
|
- @dbal.conn
|
||||||
|
- @user
|
||||||
|
- @cache.driver
|
||||||
|
|
||||||
http_kernel:
|
http_kernel:
|
||||||
class: Symfony\Component\HttpKernel\HttpKernel
|
class: Symfony\Component\HttpKernel\HttpKernel
|
||||||
arguments:
|
arguments:
|
||||||
- @dispatcher
|
- @dispatcher
|
||||||
- @controller.resolver
|
- @controller.resolver
|
||||||
|
|
||||||
|
hook_finder:
|
||||||
|
class: phpbb_hook_finder
|
||||||
|
arguments:
|
||||||
|
- %core.root_path%
|
||||||
|
- %core.php_ext%
|
||||||
|
- @cache.driver
|
||||||
|
|
||||||
kernel_request_subscriber:
|
kernel_request_subscriber:
|
||||||
class: phpbb_event_kernel_request_subscriber
|
class: phpbb_event_kernel_request_subscriber
|
||||||
arguments:
|
arguments:
|
||||||
- @ext.finder
|
- @ext.finder
|
||||||
- %core.root_path%
|
- %core.root_path%
|
||||||
- .%core.php_ext%
|
- %core.php_ext%
|
||||||
tags:
|
tags:
|
||||||
- { name: kernel.event_subscriber }
|
- { name: kernel.event_subscriber }
|
||||||
|
|
||||||
|
@ -154,44 +218,61 @@ services:
|
||||||
tags:
|
tags:
|
||||||
- { name: kernel.event_subscriber }
|
- { name: kernel.event_subscriber }
|
||||||
|
|
||||||
|
log:
|
||||||
|
class: phpbb_log
|
||||||
|
arguments:
|
||||||
|
- @dbal.conn
|
||||||
|
- @user
|
||||||
|
- @auth
|
||||||
|
- @dispatcher
|
||||||
|
- %core.root_path%
|
||||||
|
- %core.adm_relative_path%
|
||||||
|
- %core.php_ext%
|
||||||
|
- %tables.log%
|
||||||
|
|
||||||
|
notification_manager:
|
||||||
|
class: phpbb_notification_manager
|
||||||
|
arguments:
|
||||||
|
- @notification.type_collection
|
||||||
|
- @notification.method_collection
|
||||||
|
- @service_container
|
||||||
|
- @user_loader
|
||||||
|
- @dbal.conn
|
||||||
|
- @cache
|
||||||
|
- @user
|
||||||
|
- %core.root_path%
|
||||||
|
- %core.php_ext%
|
||||||
|
- %tables.notification_types%
|
||||||
|
- %tables.notifications%
|
||||||
|
- %tables.user_notifications%
|
||||||
|
|
||||||
|
php_ini:
|
||||||
|
class: phpbb_php_ini
|
||||||
|
|
||||||
request:
|
request:
|
||||||
class: phpbb_request
|
class: phpbb_request
|
||||||
|
|
||||||
style:
|
|
||||||
class: phpbb_style
|
|
||||||
arguments:
|
|
||||||
- %core.root_path%
|
|
||||||
- %core.php_ext%
|
|
||||||
- @config
|
|
||||||
- @user
|
|
||||||
- @style.resource_locator
|
|
||||||
- @style.path_provider_ext
|
|
||||||
- @template
|
|
||||||
|
|
||||||
style.resource_locator:
|
|
||||||
class: phpbb_style_resource_locator
|
|
||||||
|
|
||||||
style.path_provider_ext:
|
|
||||||
class: phpbb_style_extension_path_provider
|
|
||||||
arguments:
|
|
||||||
- @ext.manager
|
|
||||||
- @style.path_provider
|
|
||||||
|
|
||||||
style.path_provider:
|
|
||||||
class: phpbb_style_path_provider
|
|
||||||
|
|
||||||
template:
|
template:
|
||||||
class: phpbb_template
|
class: phpbb_template_twig
|
||||||
arguments:
|
arguments:
|
||||||
- %core.root_path%
|
- %core.root_path%
|
||||||
- %core.php_ext%
|
- %core.php_ext%
|
||||||
- @config
|
- @config
|
||||||
- @user
|
- @user
|
||||||
- @style.resource_locator
|
|
||||||
- @template_context
|
- @template_context
|
||||||
|
- @ext.manager
|
||||||
|
- %core.adm_relative_path%
|
||||||
|
|
||||||
template_context:
|
template_context:
|
||||||
class: phpbb_template_context
|
class: phpbb_template_context
|
||||||
|
|
||||||
user:
|
user:
|
||||||
class: phpbb_user
|
class: phpbb_user
|
||||||
|
|
||||||
|
user_loader:
|
||||||
|
class: phpbb_user_loader
|
||||||
|
arguments:
|
||||||
|
- @dbal.conn
|
||||||
|
- %core.root_path%
|
||||||
|
- %core.php_ext%
|
||||||
|
- %tables.users%
|
||||||
|
|
|
@ -1,3 +1,14 @@
|
||||||
parameters:
|
parameters:
|
||||||
tables.config: %core.table_prefix%config
|
tables.config: %core.table_prefix%config
|
||||||
|
tables.config_text: %core.table_prefix%config_text
|
||||||
tables.ext: %core.table_prefix%ext
|
tables.ext: %core.table_prefix%ext
|
||||||
|
tables.forums: %core.table_prefix%forums
|
||||||
|
tables.log: %core.table_prefix%log
|
||||||
|
tables.migrations: %core.table_prefix%migrations
|
||||||
|
tables.modules: %core.table_prefix%modules
|
||||||
|
tables.notification_types: %core.table_prefix%notification_types
|
||||||
|
tables.notifications: %core.table_prefix%notifications
|
||||||
|
tables.posts: %core.table_prefix%posts
|
||||||
|
tables.topics: %core.table_prefix%topics
|
||||||
|
tables.user_notifications: %core.table_prefix%user_notifications
|
||||||
|
tables.users: %core.table_prefix%users
|
||||||
|
|
|
@ -192,13 +192,13 @@ function get_topic_count($forum_id)
|
||||||
{
|
{
|
||||||
global $db;
|
global $db;
|
||||||
|
|
||||||
$sql = "SELECT forum_topics
|
$sql = "SELECT forum_topics_approved
|
||||||
FROM " . FORUMS_TABLE . "
|
FROM " . FORUMS_TABLE . "
|
||||||
WHERE (forum_id = $forum_id)";
|
WHERE (forum_id = $forum_id)";
|
||||||
if($result = $db->sql_query($sql))
|
if($result = $db->sql_query($sql))
|
||||||
{
|
{
|
||||||
$row = $db->sql_fetchrow($result);
|
$row = $db->sql_fetchrow($result);
|
||||||
$topic_count = $row['forum_topics'];
|
$topic_count = $row['forum_topics_approved'];
|
||||||
|
|
||||||
unset($result);
|
unset($result);
|
||||||
unset($row);
|
unset($row);
|
||||||
|
@ -263,7 +263,7 @@ function make_post($new_topic_id, $forum_id, $user_id, $post_username, $text, $m
|
||||||
|
|
||||||
$post_message = prepare_message($text, $html_on, $bbcode_on, $smilies_on, $bbcode_uid);
|
$post_message = prepare_message($text, $html_on, $bbcode_on, $smilies_on, $bbcode_uid);
|
||||||
|
|
||||||
$sql = "INSERT INTO " . POSTS_TABLE . " (topic_id, forum_id, poster_id, attach_id, icon_id, post_username, post_time, poster_ip, post_approved, bbcode_uid, enable_bbcode, enable_html, enable_smilies, enable_sig, post_subject, post_text)
|
$sql = "INSERT INTO " . POSTS_TABLE . " (topic_id, forum_id, poster_id, attach_id, icon_id, post_username, post_time, poster_ip, post_visibility, bbcode_uid, enable_bbcode, enable_html, enable_smilies, enable_sig, post_subject, post_text)
|
||||||
VALUES ($new_topic_id, $forum_id, $user_id, 0, 0, '$post_username', $current_time, '$user_ip', 1, '$bbcode_uid', $bbcode_on, $html_on, $smilies_on, $attach_sig, '$post_subject', '$post_message')";
|
VALUES ($new_topic_id, $forum_id, $user_id, 0, 0, '$post_username', $current_time, '$user_ip', 1, '$bbcode_uid', $bbcode_on, $html_on, $smilies_on, $attach_sig, '$post_subject', '$post_message')";
|
||||||
$result = $db->sql_query($sql);
|
$result = $db->sql_query($sql);
|
||||||
|
|
||||||
|
@ -282,10 +282,10 @@ function make_post($new_topic_id, $forum_id, $user_id, $post_username, $text, $m
|
||||||
if($db->sql_query($sql))
|
if($db->sql_query($sql))
|
||||||
{
|
{
|
||||||
$sql = "UPDATE " . FORUMS_TABLE . "
|
$sql = "UPDATE " . FORUMS_TABLE . "
|
||||||
SET forum_last_post_id = $new_post_id, forum_posts = forum_posts + 1";
|
SET forum_last_post_id = $new_post_id, forum_posts_approved = forum_posts_approved + 1";
|
||||||
if($mode == "newtopic")
|
if($mode == "newtopic")
|
||||||
{
|
{
|
||||||
$sql .= ", forum_topics = forum_topics + 1";
|
$sql .= ", forum_topics_approved = forum_topics_approved + 1";
|
||||||
}
|
}
|
||||||
$sql .= " WHERE forum_id = $forum_id";
|
$sql .= " WHERE forum_id = $forum_id";
|
||||||
|
|
||||||
|
|
0
phpBB/develop/blank.gif
Normal file
0
phpBB/develop/blank.gif
Normal file
0
phpBB/develop/blank.jpg
Normal file
0
phpBB/develop/blank.jpg
Normal file
File diff suppressed because it is too large
Load diff
|
@ -86,7 +86,7 @@ switch ($mode)
|
||||||
|
|
||||||
$topic_rows[] = "($topic_id, $forum_id, '$forum_id-$topic_id', " . (($topic_id % 34) ? '0' : '1') . ')';
|
$topic_rows[] = "($topic_id, $forum_id, '$forum_id-$topic_id', " . (($topic_id % 34) ? '0' : '1') . ')';
|
||||||
|
|
||||||
$sql = 'INSERT IGNORE INTO ' . POSTS_TABLE . ' (topic_id, forum_id, poster_id, post_subject, post_text, post_username, post_approved, post_time, post_reported)
|
$sql = 'INSERT IGNORE INTO ' . POSTS_TABLE . ' (topic_id, forum_id, poster_id, post_subject, post_text, post_username, post_visibility, post_time, post_reported)
|
||||||
VALUES ';
|
VALUES ';
|
||||||
|
|
||||||
$rows = array();
|
$rows = array();
|
||||||
|
|
|
@ -50,7 +50,7 @@ switch ($db->sql_layer)
|
||||||
ADD PRIMARY KEY (post_id),
|
ADD PRIMARY KEY (post_id),
|
||||||
ADD INDEX topic_id (topic_id),
|
ADD INDEX topic_id (topic_id),
|
||||||
ADD INDEX poster_ip (poster_ip),
|
ADD INDEX poster_ip (poster_ip),
|
||||||
ADD INDEX post_approved (post_approved),
|
ADD INDEX post_visibility (post_visibility),
|
||||||
MODIFY COLUMN post_id mediumint(8) UNSIGNED NOT NULL auto_increment,
|
MODIFY COLUMN post_id mediumint(8) UNSIGNED NOT NULL auto_increment,
|
||||||
ADD COLUMN post_encoding varchar(11) DEFAULT \'iso-8859-15\' NOT NULL';
|
ADD COLUMN post_encoding varchar(11) DEFAULT \'iso-8859-15\' NOT NULL';
|
||||||
break;
|
break;
|
||||||
|
@ -162,7 +162,7 @@ while ($row = $db->sql_fetchrow($result))
|
||||||
$forum_id = $row['forum_id'];
|
$forum_id = $row['forum_id'];
|
||||||
|
|
||||||
$sql_ary[] = "UPDATE " . $table_prefix . "forums
|
$sql_ary[] = "UPDATE " . $table_prefix . "forums
|
||||||
SET forum_last_poster_id = " . ((!empty($row['user_id']) && $row['user_id'] != ANONYMOUS) ? $row['user_id'] : ANONYMOUS) . ", forum_last_poster_name = '" . ((!empty($row['user_id']) && $row['user_id'] != ANONYMOUS) ? addslashes($row['username']) : addslashes($row['post_username'])) . "', forum_last_post_time = " . $row['post_time'] . ", forum_posts = " . (($post_count[$forum_id]) ? $post_count[$forum_id] : 0) . ", forum_topics = " . (($topic_count[$forum_id]) ? $topic_count[$forum_id] : 0) . "
|
SET forum_last_poster_id = " . ((!empty($row['user_id']) && $row['user_id'] != ANONYMOUS) ? $row['user_id'] : ANONYMOUS) . ", forum_last_poster_name = '" . ((!empty($row['user_id']) && $row['user_id'] != ANONYMOUS) ? addslashes($row['username']) : addslashes($row['post_username'])) . "', forum_last_post_time = " . $row['post_time'] . ", forum_posts_approved = " . (($post_count[$forum_id]) ? $post_count[$forum_id] : 0) . ", forum_topics_approved = " . (($topic_count[$forum_id]) ? $topic_count[$forum_id] : 0) . "
|
||||||
WHERE forum_id = $forum_id";
|
WHERE forum_id = $forum_id";
|
||||||
|
|
||||||
$sql = "SELECT t.topic_id, u.username, u.user_id, u2.username as user2, u2.user_id as id2, p.post_username, p2.post_username AS post_username2, p2.post_time
|
$sql = "SELECT t.topic_id, u.username, u.user_id, u2.username as user2, u2.user_id as id2, p.post_username, p2.post_username AS post_username2, p2.post_time
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -23,11 +23,10 @@ involved in phpBB.
|
||||||
phpBB Lead Developer: naderman (Nils Adermann)
|
phpBB Lead Developer: naderman (Nils Adermann)
|
||||||
|
|
||||||
phpBB Developers: bantu (Andreas Fischer)
|
phpBB Developers: bantu (Andreas Fischer)
|
||||||
igorw (Igor Wiedler)
|
EXreaction (Nathan Guse)
|
||||||
|
dhruv.goel92 (Dhruv Goel)
|
||||||
imkingdavid (David King)
|
imkingdavid (David King)
|
||||||
nickvergessen (Joas Schilling)
|
nickvergessen (Joas Schilling)
|
||||||
Oleg (Oleg Pudeyev)
|
|
||||||
rxu (Ruslan Uzdenov)
|
|
||||||
|
|
||||||
Contributions by: leviatan21 (Gabriel Vazquez)
|
Contributions by: leviatan21 (Gabriel Vazquez)
|
||||||
Raimon (Raimon Meuldijk)
|
Raimon (Raimon Meuldijk)
|
||||||
|
@ -53,6 +52,9 @@ phpBB Developers: A_Jelly_Doughnut (Josh Woody) [01/2010 - 11/2010]
|
||||||
dhn (Dominik Dröscher) [05/2007 - 01/2011]
|
dhn (Dominik Dröscher) [05/2007 - 01/2011]
|
||||||
GrahamJE (Graham Eames) [09/2005 - 11/2006]
|
GrahamJE (Graham Eames) [09/2005 - 11/2006]
|
||||||
kellanved (Henry Sudhof) [04/2007 - 03/2011]
|
kellanved (Henry Sudhof) [04/2007 - 03/2011]
|
||||||
|
igorw (Igor Wiedler) [08/2010 - 02/2013]
|
||||||
|
Oleg (Oleg Pudeyev) [01/2011 - 05/2013]
|
||||||
|
rxu (Ruslan Uzdenov) [04/2010 - 12/2012]
|
||||||
TerraFrost (Jim Wigginton) [04/2009 - 01/2011]
|
TerraFrost (Jim Wigginton) [04/2009 - 01/2011]
|
||||||
ToonArmy (Chris Smith) [06/2008 - 11/2011]
|
ToonArmy (Chris Smith) [06/2008 - 11/2011]
|
||||||
Vic D'Elfant (Vic D'Elfant) [04/2007 - 04/2009]
|
Vic D'Elfant (Vic D'Elfant) [04/2007 - 04/2009]
|
||||||
|
|
|
@ -46,6 +46,7 @@
|
||||||
<ol>
|
<ol>
|
||||||
<li><a href="#changelog">Changelog</a>
|
<li><a href="#changelog">Changelog</a>
|
||||||
<ol style="list-style-type: lower-roman;">
|
<ol style="list-style-type: lower-roman;">
|
||||||
|
<li><a href="#v3011">Changes since 3.0.11</a></li>
|
||||||
<li><a href="#v3010">Changes since 3.0.10</a></li>
|
<li><a href="#v3010">Changes since 3.0.10</a></li>
|
||||||
<li><a href="#v309">Changes since 3.0.9</a></li>
|
<li><a href="#v309">Changes since 3.0.9</a></li>
|
||||||
<li><a href="#v308">Changes since 3.0.8</a></li>
|
<li><a href="#v308">Changes since 3.0.8</a></li>
|
||||||
|
@ -85,7 +86,162 @@
|
||||||
|
|
||||||
<div class="content">
|
<div class="content">
|
||||||
|
|
||||||
<a name="v3010"></a><h3>1.i. Changes since 3.0.10</h3>
|
<a name="v3011"></a><h3>1.i. Changes since 3.0.11</h3>
|
||||||
|
|
||||||
|
<h4>Bug</h4>
|
||||||
|
<ul>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-6723">PHPBB3-6723</a>] - Empty message in deleted messages in PM history</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-7262">PHPBB3-7262</a>] - Clarify docs about is_dynamic not being updated by set_config()</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-8319">PHPBB3-8319</a>] - LOCAL_URL not enforced in bbcodes</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9551">PHPBB3-9551</a>] - Mysql fulltext index creation fails due to partial collation change</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9975">PHPBB3-9975</a>] - Hard coded language in sessions.php</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10184">PHPBB3-10184</a>] - Bots can be sent private messages</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10491">PHPBB3-10491</a>] - Fatal error in functional tests when server returns 404</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10568">PHPBB3-10568</a>] - Modify the trigger language when you edit a PM</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10602">PHPBB3-10602</a>] - A bug in mail queue processing</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10661">PHPBB3-10661</a>] - UCP > PM > Compose > enumerated recipients > BCC group misses a &nbsp; (prosilver)</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10678">PHPBB3-10678</a>] - Provide Firebird, Oracle, and increased MSSQL support in unit tests</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10772">PHPBB3-10772</a>] - trigger_error is using the default style</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10789">PHPBB3-10789</a>] - PM print template (prosilver) with unnecessary variables</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10820">PHPBB3-10820</a>] - Display images directly in IE9 and 10 instead of download</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10828">PHPBB3-10828</a>] - PostgreSQL dbal tests try to connect to the database named as user specified in configuration</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10838">PHPBB3-10838</a>] - Functional tests are not mentioned in RUNNING_TESTS.txt</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10840">PHPBB3-10840</a>] - If you add a member to a group, the form_token can be set to 0 if the creation_time is 0 too. Maybe even if creation_time is unchanged.</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10848">PHPBB3-10848</a>] - Wrong redirect to installer from acp</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10850">PHPBB3-10850</a>] - create_schema_files.php is not creating the oracle or postgres' schema file properly</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10879">PHPBB3-10879</a>] - prosilver: attachment-link will be displayed wrong, when filename is too long </li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10880">PHPBB3-10880</a>] - m_approve should not imply f_noapprove</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10896">PHPBB3-10896</a>] - board_email & board_contact are not validated as email addresses in ACP</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10897">PHPBB3-10897</a>] - Bot Definitions are outdated</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10918">PHPBB3-10918</a>] - docs/INSTALL.html claims there are tar.gz packages</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10943">PHPBB3-10943</a>] - Search Box should display keywords entered by the user</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10967">PHPBB3-10967</a>] - PHPBB_USE_BOARD_URL_PATH not implemented in posting_gen_topic_icons</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10986">PHPBB3-10986</a>] - Invalid email message ids because config variable server_name is used even when force server URL settings is disabled</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10995">PHPBB3-10995</a>] - Return value of $db->sql_fetchrow() on empty tables is not consistent on mssqlnative</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10996">PHPBB3-10996</a>] - Travis tests fail on Postgres because database does not exist</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11034">PHPBB3-11034</a>] - The functional test case framework does not install a full board each time</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11066">PHPBB3-11066</a>] - MSSQLnative driver contains debug code error_reporting(E_ALL)</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11069">PHPBB3-11069</a>] - missing closing span in subsilver2 simple_footer.html</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11081">PHPBB3-11081</a>] - Duplicated /TD in styles/subsilver2/template/catpcha_qa.html</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11093">PHPBB3-11093</a>] - acp_users_overview.html has a wrongly placed </dd></li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11094">PHPBB3-11094</a>] - prosilver: searching for users: no textbox for Jabber</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11105">PHPBB3-11105</a>] - Missing mandatory space in meta http-equiv=refresh</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11112">PHPBB3-11112</a>] - phpBB Footer Link should be SSL</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11122">PHPBB3-11122</a>] - Update docs/AUTHORS for 3.0.12-RC1</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11144">PHPBB3-11144</a>] - {FORUM_NAME} is not filled in login mask when logging into a password protected forum</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11145">PHPBB3-11145</a>] - ATTACHED_IMAGE_NOT_IMAGE thrown because of file limit in php.ini</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11158">PHPBB3-11158</a>] - modules table lacks acl_u_sig for signature module</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11159">PHPBB3-11159</a>] - Coding guidelines: static public</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11164">PHPBB3-11164</a>] - Composer not finding symfony/config in PHP 5.3.3</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11178">PHPBB3-11178</a>] - database_update.php should not set error_reporting to E_ALL</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11186">PHPBB3-11186</a>] - Database unit tests fail on windows using sqlite2</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11190">PHPBB3-11190</a>] - Functional tests do not clear the cache between each test</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11196">PHPBB3-11196</a>] - /includes/session.php sends 401 HTTP status with "Not authorized" instead of "Unauthorized"</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11219">PHPBB3-11219</a>] - Database sequences are not updated for tests using fixtures with auto_incremented columns</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11227">PHPBB3-11227</a>] - @return void -> @return null</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11233">PHPBB3-11233</a>] - Anonymous can be selected as a PM recipient</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11248">PHPBB3-11248</a>] - CRLF line endings</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11262">PHPBB3-11262</a>] - .lock files are not in .gitignore</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11265">PHPBB3-11265</a>] - Functional tests do not assert that board installation succeeded</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11269">PHPBB3-11269</a>] - Travis functional test case errors</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11278">PHPBB3-11278</a>] - Firebird tables are not removed correctly on 3.0.9-rc1 update</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11288">PHPBB3-11288</a>] - Search fooled by hyphens</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11291">PHPBB3-11291</a>] - "Could not open input file: ../composer.phar" error during phing's create-package</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11292">PHPBB3-11292</a>] - Newlines removed in display of PM reports, no clickable links in PM reports</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11301">PHPBB3-11301</a>] - "String offset cast occured" error on PHP 5.4</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11304">PHPBB3-11304</a>] - check_form_key breaks in tests when form is submitted in the same second it is retrieved</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11343">PHPBB3-11343</a>] - Loose string comparison during new password activation</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11355">PHPBB3-11355</a>] - Incorrect error message when no user selected for action on group membership management page</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11358">PHPBB3-11358</a>] - Success message even withot selecting a user and performing a group operation</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11361">PHPBB3-11361</a>] - "Array to string conversion" error in $user->format_date()</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11493">PHPBB3-11493</a>] - Functional tests should fail if any debug output is made</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11517">PHPBB3-11517</a>] - Numbering is wrong in coding guidelines</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11536">PHPBB3-11536</a>] - Installer incorrectly removes /install from script_path</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11537">PHPBB3-11537</a>] - UCP group manage page's error box differs heavily from the rest of the UCP</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11538">PHPBB3-11538</a>] - SQL error on UCP groups manage page caused by setting color to 7 characters long string</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11544">PHPBB3-11544</a>] - Add admin_login() to 3.0 functional test case</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11545">PHPBB3-11545</a>] - is_absolute() should not depend on DIRECTORY_SEPARATOR</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11546">PHPBB3-11546</a>] - is_absolute() throws E_NOTICE for empty string</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11547">PHPBB3-11547</a>] - Test fixtures do not support utf8 characters</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11548">PHPBB3-11548</a>] - Untranslated TOO_SHORT in UCP "Manage Groups"</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11566">PHPBB3-11566</a>] - Reporting a post should require a captcha to be solved by guests</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11568">PHPBB3-11568</a>] - Functional tests fail with retrieving install pages using file_get_contents</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11575">PHPBB3-11575</a>] - phpbb_dbal_order_lower_test::test_cross_join should be called test_order_lower</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11578">PHPBB3-11578</a>] - Missing underscore after function prefix in validate_data()</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11579">PHPBB3-11579</a>] - Add unit tests for validate_data()</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11580">PHPBB3-11580</a>] - Avoid API Limit from composer downloads on github</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11588">PHPBB3-11588</a>] - install/install_update.php should use version.phpbb.com instead of www</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11590">PHPBB3-11590</a>] - Close database connections from tests whenever possible</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11601">PHPBB3-11601</a>] - Allow manual resync of database columns in unit tests not only on fixture load</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11603">PHPBB3-11603</a>] - git-tools use invalid api urls</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11604">PHPBB3-11604</a>] - Functional tests fail when phpBB can not create the config file</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11617">PHPBB3-11617</a>] - Missing U_ACTION in acp_captcha.php</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11618">PHPBB3-11618</a>] - Template tests fail on some systems due to a PHP error in glob()</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11619">PHPBB3-11619</a>] - get_remote_file() should use HTTP 1.0</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11630">PHPBB3-11630</a>] - Improvements to the PHP lint pre-commit hook</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11644">PHPBB3-11644</a>] - Skip phpbb_dbal_order_lower_test on MySQL 5.6</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11662">PHPBB3-11662</a>] - "occured" should be "occurred"</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11670">PHPBB3-11670</a>] - Replace trademark ™ with ® on "Welcome to phpBB" install page</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11674">PHPBB3-11674</a>] - Do not include vendor folder if there are no dependencies.</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11524">PHPBB3-11524</a>] - MySQL Upgrader throws warnings on PHP 5.4</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11720">PHPBB3-11720</a>] - Reporting posts leads to white page error</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11769">PHPBB3-11769</a>] - Wrong poster in subscription email when poster is using the Quote button</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11775">PHPBB3-11775</a>] - Error while moving posts to a new topic</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11802">PHPBB3-11802</a>] - Undefined variable $browser in /download/file.php</li>
|
||||||
|
</ul>
|
||||||
|
<h4>Improvement</h4>
|
||||||
|
<ul>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-8743">PHPBB3-8743</a>] - New topic / reply notifications do not contain author's name.</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10050">PHPBB3-10050</a>] - subsilver2: Do not show "Mark topics as read" when there are no topics</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10205">PHPBB3-10205</a>] - More informative reporting of errors when database connection fails (MySQL and others)</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10716">PHPBB3-10716</a>] - PHP-parse all php files as part of the test suite</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10841">PHPBB3-10841</a>] - Disable style and language selectors if there's only one installed.</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10854">PHPBB3-10854</a>] - sql server drop default constraint when dropping column </li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10865">PHPBB3-10865</a>] - Updated and Added to docs/INSTALL.html</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10873">PHPBB3-10873</a>] - Change language entry for deleted PMs</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10981">PHPBB3-10981</a>] - Upgrade Goutte and use Composer for Installation</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11131">PHPBB3-11131</a>] - Phrasing & semantics of Board settings</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11162">PHPBB3-11162</a>] - Get rid of $db->sql_return_on_error(true) trickery when splitting/merging topics</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11192">PHPBB3-11192</a>] - Add Tebibyte to get_formatted_filesize()</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11202">PHPBB3-11202</a>] - Add response status checks to functional tests</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11220">PHPBB3-11220</a>] - Improve tooltip explaining the [list=] - BBcode</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11238">PHPBB3-11238</a>] - Specify goutte version</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11285">PHPBB3-11285</a>] - Use more granularity in dependency checks in compress test</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11293">PHPBB3-11293</a>] - Prefer mysqli over mysql due to php 5.5 alpha 2 deprecating mysql</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11294">PHPBB3-11294</a>] - Update extension list in running tests doc</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11368">PHPBB3-11368</a>] - Latest pm reports row count</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11583">PHPBB3-11583</a>] - InnoDB supports FULLTEXT index since MySQL 5.6.4.</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11740">PHPBB3-11740</a>] - Update link in FAQ to Ideas Centre</li>
|
||||||
|
</ul>
|
||||||
|
<h4>Sub-task</h4>
|
||||||
|
<ul>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10974">PHPBB3-10974</a>] - Move tests/mock_user.php to tests/mock/user.php</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11009">PHPBB3-11009</a>] - Backport phing build.xml from develop to develop-olympus so it uses composer.</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11540">PHPBB3-11540</a>] - Add unit tests for (phpbb_)is_absolute()</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11541">PHPBB3-11541</a>] - Add unit tests for style_select() in functions.php</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11542">PHPBB3-11542</a>] - Add unit tests for language_select() in functions.php</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11543">PHPBB3-11543</a>] - Add unit tests for obtain online functions in functions.php</li>
|
||||||
|
</ul>
|
||||||
|
<h4>Task</h4>
|
||||||
|
<ul>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10877">PHPBB3-10877</a>] - Have bamboo generate and publish a phpBB package for every build.</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11045">PHPBB3-11045</a>] - Add unit tests for the compress class</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11059">PHPBB3-11059</a>] - Fix README logo</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11060">PHPBB3-11060</a>] - Fix travis.yml pyrus config</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11240">PHPBB3-11240</a>] - Turn on PHPUnit's verbose mode on Travis</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11324">PHPBB3-11324</a>] - Add PHP 5.5 environment on Travis-CI</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11337">PHPBB3-11337</a>] - Run functional tests on Travis CI</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11513">PHPBB3-11513</a>] - Install PHPUnit via Composer's require-dev to simplify test running (no need for pear)</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11526">PHPBB3-11526</a>] - Increase composer minimum-stability from beta to stable</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11527">PHPBB3-11527</a>] - Upgrade composer.phar to 1.0.0-alpha7</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11529">PHPBB3-11529</a>] - Rename RUNNING_TESTS file to .md file to render it on GitHub</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11576">PHPBB3-11576</a>] - Make phpBB Test Suite MySQL behave at least as strict as phpBB MySQL driver</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11671">PHPBB3-11671</a>] - Add phing/phing to composer.json</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11752">PHPBB3-11752</a>] - Update phpBB.com URLs to https in email templates</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11753">PHPBB3-11753</a>] - Upgrade mysql_upgrader.php schema data.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<a name="v3010"></a><h3>1.ii. Changes since 3.0.10</h3>
|
||||||
|
|
||||||
<h4>Bug</h4>
|
<h4>Bug</h4>
|
||||||
<ul>
|
<ul>
|
||||||
|
@ -210,7 +366,7 @@
|
||||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10909">PHPBB3-10909</a>] - Update Travis Test Configuration: Travis no longer supports PHP 5.3.2</li>
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10909">PHPBB3-10909</a>] - Update Travis Test Configuration: Travis no longer supports PHP 5.3.2</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<a name="v309"></a><h3>1.ii. Changes since 3.0.9</h3>
|
<a name="v309"></a><h3>1.iii. Changes since 3.0.9</h3>
|
||||||
|
|
||||||
<h4>Bug</h4>
|
<h4>Bug</h4>
|
||||||
<ul>
|
<ul>
|
||||||
|
@ -346,7 +502,7 @@
|
||||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10480">PHPBB3-10480</a>] - Automate changelog building</li>
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10480">PHPBB3-10480</a>] - Automate changelog building</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<a name="v308"></a><h3>1.iii. Changes since 3.0.8</h3>
|
<a name="v308"></a><h3>1.iv. Changes since 3.0.8</h3>
|
||||||
|
|
||||||
<h4> Bug
|
<h4> Bug
|
||||||
</h4>
|
</h4>
|
||||||
|
@ -714,7 +870,7 @@
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
<a name="v307-PL1"></a><h3>1.iv. Changes since 3.0.7-PL1</h3>
|
<a name="v307-PL1"></a><h3>1.v. Changes since 3.0.7-PL1</h3>
|
||||||
<h4> Security
|
<h4> Security
|
||||||
</h4>
|
</h4>
|
||||||
<ul>
|
<ul>
|
||||||
|
@ -1172,13 +1328,13 @@
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
<a name="v307"></a><h3>1.iv. Changes since 3.0.7</h3>
|
<a name="v307"></a><h3>1.vi. Changes since 3.0.7</h3>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>[Sec] Do not expose forum content of forums with ACL entries but no actual permission in ATOM Feeds. (Bug #58595)</li>
|
<li>[Sec] Do not expose forum content of forums with ACL entries but no actual permission in ATOM Feeds. (Bug #58595)</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<a name="v306"></a><h3>1.vi. Changes since 3.0.6</h3>
|
<a name="v306"></a><h3>1.vii. Changes since 3.0.6</h3>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>[Fix] Allow ban reason and length to be selected and copied in ACP and subsilver2 MCP. (Bug #51095)</li>
|
<li>[Fix] Allow ban reason and length to be selected and copied in ACP and subsilver2 MCP. (Bug #51095)</li>
|
||||||
|
@ -1282,7 +1438,7 @@
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<a name="v305"></a><h3>1.vii. Changes since 3.0.5</h3>
|
<a name="v305"></a><h3>1.viii. Changes since 3.0.5</h3>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>[Fix] Allow whitespaces in avatar gallery names. (Bug #44955)</li>
|
<li>[Fix] Allow whitespaces in avatar gallery names. (Bug #44955)</li>
|
||||||
|
@ -1504,7 +1660,7 @@
|
||||||
<li>[Feature] Send anonymous statistical information to phpBB on installation and update (optional).</li>
|
<li>[Feature] Send anonymous statistical information to phpBB on installation and update (optional).</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<a name="v304"></a><h3>1.viii. Changes since 3.0.4</h3>
|
<a name="v304"></a><h3>1.ix. Changes since 3.0.4</h3>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>[Fix] Delete user entry from ban list table upon user deletion (Bug #40015 - Patch by TerraFrost)</li>
|
<li>[Fix] Delete user entry from ban list table upon user deletion (Bug #40015 - Patch by TerraFrost)</li>
|
||||||
|
@ -1593,7 +1749,7 @@
|
||||||
<li>[Sec] Only use forum id supplied for posting if global announcement detected. (Reported by nickvergessen)</li>
|
<li>[Sec] Only use forum id supplied for posting if global announcement detected. (Reported by nickvergessen)</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<a name="v303"></a><h3>1.ix. Changes since 3.0.3</h3>
|
<a name="v303"></a><h3>1.x. Changes since 3.0.3</h3>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>[Fix] Allow mixed-case template directories to be inherited (Bug #36725)</li>
|
<li>[Fix] Allow mixed-case template directories to be inherited (Bug #36725)</li>
|
||||||
|
@ -1625,7 +1781,7 @@
|
||||||
<li>[Sec] Ask for forum password if post within passworded forum quoted in private message. (Reported by nickvergessen)</li>
|
<li>[Sec] Ask for forum password if post within passworded forum quoted in private message. (Reported by nickvergessen)</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<a name="v302"></a><h3>1.x. Changes since 3.0.2</h3>
|
<a name="v302"></a><h3>1.xi. Changes since 3.0.2</h3>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>[Fix] Correctly set topic starter if first post in topic removed (Bug #30575 - Patch by blueray2048)</li>
|
<li>[Fix] Correctly set topic starter if first post in topic removed (Bug #30575 - Patch by blueray2048)</li>
|
||||||
|
@ -1724,7 +1880,7 @@
|
||||||
<li>[Sec Precaution] Stricter validation of the HTTP_HOST header (Thanks to Techie-Micheal et al for pointing out possible issues in derived code)</li>
|
<li>[Sec Precaution] Stricter validation of the HTTP_HOST header (Thanks to Techie-Micheal et al for pointing out possible issues in derived code)</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<a name="v301"></a><h3>1.xi. Changes since 3.0.1</h3>
|
<a name="v301"></a><h3>1.xii. Changes since 3.0.1</h3>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>[Fix] Ability to set permissions on non-mysql dbms (Bug #24955)</li>
|
<li>[Fix] Ability to set permissions on non-mysql dbms (Bug #24955)</li>
|
||||||
|
@ -1772,7 +1928,7 @@
|
||||||
<li>[Sec] Only allow urls gone through redirect() being used within login_box(). (thanks nookieman)</li>
|
<li>[Sec] Only allow urls gone through redirect() being used within login_box(). (thanks nookieman)</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<a name="v300"></a><h3>1.xii Changes since 3.0.0</h3>
|
<a name="v300"></a><h3>1.xiii Changes since 3.0.0</h3>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>[Change] Validate birthdays (Bug #15004)</li>
|
<li>[Change] Validate birthdays (Bug #15004)</li>
|
||||||
|
@ -1843,7 +1999,7 @@
|
||||||
<li>[Fix] Find and display colliding usernames correctly when converting from one database to another (Bug #23925)</li>
|
<li>[Fix] Find and display colliding usernames correctly when converting from one database to another (Bug #23925)</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<a name="v30rc8"></a><h3>1.xiii. Changes since 3.0.RC8</h3>
|
<a name="v30rc8"></a><h3>1.xiv. Changes since 3.0.RC8</h3>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>[Fix] Cleaned usernames contain only single spaces, so "a_name" and "a__name" are treated as the same name (Bug #15634)</li>
|
<li>[Fix] Cleaned usernames contain only single spaces, so "a_name" and "a__name" are treated as the same name (Bug #15634)</li>
|
||||||
|
@ -1852,7 +2008,7 @@
|
||||||
<li>[Fix] Call garbage_collection() within database updater to correctly close connections (affects Oracle for example)</li>
|
<li>[Fix] Call garbage_collection() within database updater to correctly close connections (affects Oracle for example)</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<a name="v30rc7"></a><h3>1.xiv. Changes since 3.0.RC7</h3>
|
<a name="v30rc7"></a><h3>1.xv. Changes since 3.0.RC7</h3>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>[Fix] Fixed MSSQL related bug in the update system</li>
|
<li>[Fix] Fixed MSSQL related bug in the update system</li>
|
||||||
|
@ -1887,7 +2043,7 @@
|
||||||
<li>[Fix] No duplication of active topics (Bug #15474)</li>
|
<li>[Fix] No duplication of active topics (Bug #15474)</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<a name="v30rc6"></a><h3>1.xv. Changes since 3.0.RC6</h3>
|
<a name="v30rc6"></a><h3>1.xvi. Changes since 3.0.RC6</h3>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>[Fix] Submitting language changes using acp_language (Bug #14736)</li>
|
<li>[Fix] Submitting language changes using acp_language (Bug #14736)</li>
|
||||||
|
@ -1897,7 +2053,7 @@
|
||||||
<li>[Fix] Able to request new password (Bug #14743)</li>
|
<li>[Fix] Able to request new password (Bug #14743)</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<a name="v30rc5"></a><h3>1.xvi. Changes since 3.0.RC5</h3>
|
<a name="v30rc5"></a><h3>1.xvii. Changes since 3.0.RC5</h3>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>[Feature] Removing constant PHPBB_EMBEDDED in favor of using an exit_handler(); the constant was meant to achive this more or less.</li>
|
<li>[Feature] Removing constant PHPBB_EMBEDDED in favor of using an exit_handler(); the constant was meant to achive this more or less.</li>
|
||||||
|
@ -1960,7 +2116,7 @@
|
||||||
<li>[Sec] New password hashing mechanism for storing passwords (#i42)</li>
|
<li>[Sec] New password hashing mechanism for storing passwords (#i42)</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<a name="v30rc4"></a><h3>1.xvii. Changes since 3.0.RC4</h3>
|
<a name="v30rc4"></a><h3>1.xviii. Changes since 3.0.RC4</h3>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>[Fix] MySQL, PostgreSQL and SQLite related database fixes (Bug #13862)</li>
|
<li>[Fix] MySQL, PostgreSQL and SQLite related database fixes (Bug #13862)</li>
|
||||||
|
@ -2011,7 +2167,7 @@
|
||||||
<li>[Fix] odbc_autocommit causing existing result sets to be dropped (Bug #14182)</li>
|
<li>[Fix] odbc_autocommit causing existing result sets to be dropped (Bug #14182)</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<a name="v30rc3"></a><h3>1.xviii. Changes since 3.0.RC3</h3>
|
<a name="v30rc3"></a><h3>1.xix. Changes since 3.0.RC3</h3>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>[Fix] Fixing some subsilver2 and prosilver style issues</li>
|
<li>[Fix] Fixing some subsilver2 and prosilver style issues</li>
|
||||||
|
@ -2120,7 +2276,7 @@
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<a name="v30rc2"></a><h3>1.xviv. Changes since 3.0.RC2</h3>
|
<a name="v30rc2"></a><h3>1.xx. Changes since 3.0.RC2</h3>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>[Fix] Re-allow searching within the memberlist</li>
|
<li>[Fix] Re-allow searching within the memberlist</li>
|
||||||
|
@ -2166,7 +2322,7 @@
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<a name="v30rc1"></a><h3>1.xx. Changes since 3.0.RC1</h3>
|
<a name="v30rc1"></a><h3>1.xxi. Changes since 3.0.RC1</h3>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>[Fix] (X)HTML issues within the templates (Bug #11255, #11255)</li>
|
<li>[Fix] (X)HTML issues within the templates (Bug #11255, #11255)</li>
|
||||||
|
@ -2301,7 +2457,7 @@
|
||||||
|
|
||||||
<div class="content">
|
<div class="content">
|
||||||
|
|
||||||
<p>This application is opensource software released under the <a href="http://opensource.org/licenses/gpl-2.0.php">GNU General Public License v2</a>. Please see source code and the docs directory for more details. This package and its contents are Copyright (c) <a href="http://www.phpbb.com/">phpBB Group</a>, All Rights Reserved.</p>
|
<p>This application is opensource software released under the <a href="http://opensource.org/licenses/gpl-2.0.php">GNU General Public License v2</a>. Please see source code and the docs directory for more details. This package and its contents are Copyright (c) <a href="https://www.phpbb.com/">phpBB Group</a>, All Rights Reserved.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -82,7 +82,7 @@
|
||||||
|
|
||||||
<p>There are people, companies (unrelated to your hosting provider), etc. that will install your forum, either for free or for a payment. We do not recommend you make use of these offers. Unless the service is provided by your hosting company you will have to divulge passwords and other sensitive details. If you did not know how to use an ATM would you give a passer-by your bank card and PIN and ask them to show you what to do? No, probably not! The same applies to your hosting account details!</p>
|
<p>There are people, companies (unrelated to your hosting provider), etc. that will install your forum, either for free or for a payment. We do not recommend you make use of these offers. Unless the service is provided by your hosting company you will have to divulge passwords and other sensitive details. If you did not know how to use an ATM would you give a passer-by your bank card and PIN and ask them to show you what to do? No, probably not! The same applies to your hosting account details!</p>
|
||||||
|
|
||||||
<p>We think a better solution is for you to carefully read the enclosed documentation, read through our knowledge base at <a href="http://www.phpbb.com/">www.phpbb.com</a> and if necessary ask for help on any thing you get stuck on. However, the decision is yours but please note we may not offer support if we believe you have had the board installed by a third party. In such cases you should direct your questions to that company or person/s.</p>
|
<p>We think a better solution is for you to carefully read the enclosed documentation, read through our knowledge base at <a href="https://www.phpbb.com/">www.phpbb.com</a> and if necessary ask for help on any thing you get stuck on. However, the decision is yours but please note we may not offer support if we believe you have had the board installed by a third party. In such cases you should direct your questions to that company or person/s.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -143,7 +143,7 @@ I want to sue you because i think you host an illegal board!</h2>
|
||||||
|
|
||||||
<div class="content">
|
<div class="content">
|
||||||
|
|
||||||
<p>This error will occur if phpBB cannot send mail. phpBB can send email two ways; using the PHP <code>mail()</code> function or directly via SMTP. Some hosting providers limit the <code>mail()</code> function to prevent its use in spamming, others may rename it or limit its functionality. If the <code>mail()</code> function got renamed, you are able to enter the correct name within the administration control panel. In either case you may need to make use of SMTP. This requires that you have access to such a facility, e.g. your hosting provider may provide one (perhaps requiring specific written authorisation), etc. Please see <a href="http://www.phpbb.com/">www.phpbb.com</a> for additional help on this matter.</p>
|
<p>This error will occur if phpBB cannot send mail. phpBB can send email two ways; using the PHP <code>mail()</code> function or directly via SMTP. Some hosting providers limit the <code>mail()</code> function to prevent its use in spamming, others may rename it or limit its functionality. If the <code>mail()</code> function got renamed, you are able to enter the correct name within the administration control panel. In either case you may need to make use of SMTP. This requires that you have access to such a facility, e.g. your hosting provider may provide one (perhaps requiring specific written authorisation), etc. Please see <a href="https://www.phpbb.com/">www.phpbb.com</a> for additional help on this matter.</p>
|
||||||
|
|
||||||
<p>If you do require SMTP services please do not ask (on our forums or elsewhere) for someone to provide you with one. Open relays are now things of the past thanks to the unthinking spammers out there. Therefore you are unlikely to find someone willing to offer you (free) services.</p>
|
<p>If you do require SMTP services please do not ask (on our forums or elsewhere) for someone to provide you with one. Open relays are now things of the past thanks to the unthinking spammers out there. Therefore you are unlikely to find someone willing to offer you (free) services.</p>
|
||||||
|
|
||||||
|
@ -243,7 +243,7 @@ I want to sue you because i think you host an illegal board!</h2>
|
||||||
|
|
||||||
<div class="content">
|
<div class="content">
|
||||||
|
|
||||||
<p>Please read the paragraph about permissions in our extensive <a href="http://www.phpbb.com/support/documentation/3.0/">online documentation</a>.</p>
|
<p>Please read the paragraph about permissions in our extensive <a href="https://www.phpbb.com/support/documentation/3.0/">online documentation</a>.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -299,11 +299,11 @@ I want to sue you because i think you host an illegal board!</h2>
|
||||||
|
|
||||||
<div class="content">
|
<div class="content">
|
||||||
|
|
||||||
<p>Please read our <a href="http://www.phpbb.com/support/documentation/3.0/">extensive user documentation</a> first, it may just explain what you want to know.</p>
|
<p>Please read our <a href="https://www.phpbb.com/support/documentation/3.0/">extensive user documentation</a> first, it may just explain what you want to know.</p>
|
||||||
|
|
||||||
<p>Feel free to search our community forum for the information you require. <strong>PLEASE DO NOT</strong> post your question without having first used search, chances are someone has already asked and answered your question. You can find our board here:</p>
|
<p>Feel free to search our community forum for the information you require. <strong>PLEASE DO NOT</strong> post your question without having first used search, chances are someone has already asked and answered your question. You can find our board here:</p>
|
||||||
|
|
||||||
<p><a href="http://www.phpbb.com">www.phpbb.com</a></p>
|
<p><a href="https://www.phpbb.com">www.phpbb.com</a></p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -321,7 +321,7 @@ I want to sue you because i think you host an illegal board!</h2>
|
||||||
|
|
||||||
<div class="content">
|
<div class="content">
|
||||||
|
|
||||||
<p>This application is opensource software released under the <a href="http://opensource.org/licenses/gpl-2.0.php">GNU General Public License v2</a>. Please see source code and the docs directory for more details. This package and its contents are Copyright (c) <a href="http://www.phpbb.com/">phpBB Group</a>, All Rights Reserved.</p>
|
<p>This application is opensource software released under the <a href="http://opensource.org/licenses/gpl-2.0.php">GNU General Public License v2</a>. Please see source code and the docs directory for more details. This package and its contents are Copyright (c) <a href="https://www.phpbb.com/">phpBB Group</a>, All Rights Reserved.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
|
|
||||||
<p>This document will walk you through the basics on installing, updating and converting the forum software.</p>
|
<p>This document will walk you through the basics on installing, updating and converting the forum software.</p>
|
||||||
|
|
||||||
<p>A basic overview of running phpBB3 can be found in the accompanying <a href="README.html">README</a> file. Please ensure you read that document in addition to this! For more detailed information on using, installing, updating and converting phpBB3 you should read <a href="http://www.phpbb.com/support/documentation/3.0/">the documentation</a> available online.</p>
|
<p>A basic overview of running phpBB3 can be found in the accompanying <a href="README.html">README</a> file. Please ensure you read that document in addition to this! For more detailed information on using, installing, updating and converting phpBB3 you should read <a href="https://www.phpbb.com/support/documentation/3.0/">the documentation</a> available online.</p>
|
||||||
|
|
||||||
<h1>Install</h1>
|
<h1>Install</h1>
|
||||||
|
|
||||||
|
@ -220,7 +220,7 @@
|
||||||
|
|
||||||
<h4>Administrator details</h4>
|
<h4>Administrator details</h4>
|
||||||
|
|
||||||
<p>Now you have to create your administration user. This user will have full administration access and he/she will be the first user on your forum. All fields on this page are required. You can also set the default language of your forum on this page. In a vanilla phpBB3 installation, we only include British English. You can download further languages from <a href="http://www.phpbb.com/">www.phpbb.com</a>, and add them before installing or later.</p>
|
<p>Now you have to create your administration user. This user will have full administration access and he/she will be the first user on your forum. All fields on this page are required. You can also set the default language of your forum on this page. In a vanilla phpBB3 installation, we only include British English. You can download further languages from <a href="https://www.phpbb.com/">www.phpbb.com</a>, and add them before installing or later.</p>
|
||||||
|
|
||||||
<h4>Configuration file</h4>
|
<h4>Configuration file</h4>
|
||||||
|
|
||||||
|
@ -299,7 +299,7 @@
|
||||||
<p>To perform the update, either follow the instructions from the <strong>Administration Control Panel->System</strong> Tab - this should point out that you are running an outdated version and will guide you through the update - or follow the instructions listed below.</p>
|
<p>To perform the update, either follow the instructions from the <strong>Administration Control Panel->System</strong> Tab - this should point out that you are running an outdated version and will guide you through the update - or follow the instructions listed below.</p>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>Go to the <a href="http://www.phpbb.com/downloads/">downloads page</a> and download the latest update package listed there, matching your current version.</li>
|
<li>Go to the <a href="https://www.phpbb.com/downloads/">downloads page</a> and download the latest update package listed there, matching your current version.</li>
|
||||||
<li>Upload the uncompressed archive contents to your phpBB installation - only the install folder is required. Upload the whole install folder, retaining the file structure.</li>
|
<li>Upload the uncompressed archive contents to your phpBB installation - only the install folder is required. Upload the whole install folder, retaining the file structure.</li>
|
||||||
<li>After the install folder is present, phpBB3 will go offline automatically.</li>
|
<li>After the install folder is present, phpBB3 will go offline automatically.</li>
|
||||||
<li>Point your browser to the install directory, for example <code>http://www.example.com/phpBB3/install/</code></li>
|
<li>Point your browser to the install directory, for example <code>http://www.example.com/phpBB3/install/</code></li>
|
||||||
|
@ -346,7 +346,7 @@
|
||||||
|
|
||||||
<p>As with install, the conversion is automated. Your previous 2.0.x database tables will not be changed and the original 2.0.x files will remain unaltered. The conversion is actually only filling your phpBB3 database tables and copying additional data over to your phpBB3 installation. This has the benefit that if something goes wrong, you are able to either re-run the conversion or continue a conversion, while your old board is still accessible. We really recommend that you disable your old installation while converting, else you may have inconsistent data after the conversion.</p>
|
<p>As with install, the conversion is automated. Your previous 2.0.x database tables will not be changed and the original 2.0.x files will remain unaltered. The conversion is actually only filling your phpBB3 database tables and copying additional data over to your phpBB3 installation. This has the benefit that if something goes wrong, you are able to either re-run the conversion or continue a conversion, while your old board is still accessible. We really recommend that you disable your old installation while converting, else you may have inconsistent data after the conversion.</p>
|
||||||
|
|
||||||
<p>Please note that this conversion process may take quite some time and depending on your hosting provider this may result in it failing (due to web server resource limits or other timeout issues). If this is the case, you should ask your provider if they are willing to allow the convert script to temporarily exceed their limits (be nice and they will probably be quite helpful). If your host is unwilling to increase the limits to run the convertor, please see this article for performing the conversion on your local machine: <a href="http://www.phpbb.com/kb/article/offline-conversions/">Knowledge Base - Offline Conversions</a></p>
|
<p>Please note that this conversion process may take quite some time and depending on your hosting provider this may result in it failing (due to web server resource limits or other timeout issues). If this is the case, you should ask your provider if they are willing to allow the convert script to temporarily exceed their limits (be nice and they will probably be quite helpful). If your host is unwilling to increase the limits to run the convertor, please see this article for performing the conversion on your local machine: <a href="https://www.phpbb.com/kb/article/offline-conversions/">Knowledge Base - Offline Conversions</a></p>
|
||||||
|
|
||||||
<p>Once completed, your board should be immediately available. If you encountered errors, you should report the problems to our bug tracker or seek help via our forums (see <a href="README.html">README</a> for details).</p>
|
<p>Once completed, your board should be immediately available. If you encountered errors, you should report the problems to our bug tracker or seek help via our forums (see <a href="README.html">README</a> for details).</p>
|
||||||
|
|
||||||
|
@ -430,7 +430,7 @@
|
||||||
<div class="inner"><span class="corners-top"><span></span></span>
|
<div class="inner"><span class="corners-top"><span></span></span>
|
||||||
|
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<p>Like any online site that allows user input, your board could be subject to unwanted posts; often referred to as <a href="http://en.wikipedia.org/wiki/Forum_spam">forum spam</a>. The vast majority of these attacks will be from automated computer programs known as <a href="http://en.wikipedia.org/wiki/Spambot">spambots</a>. The attacks, generally, are not personal as the spammers are just trying to find accessible targets. phpBB has a number of anti-spam measures built in, including a range of CAPTCHAs. However, administrators are strongly urged to read and follow the advice for <a href="http://www.phpbb.com/support/spam/">Preventing Spam in phpBB</a> as soon as possible after completing the installation of your board.</p>
|
<p>Like any online site that allows user input, your board could be subject to unwanted posts; often referred to as <a href="http://en.wikipedia.org/wiki/Forum_spam">forum spam</a>. The vast majority of these attacks will be from automated computer programs known as <a href="http://en.wikipedia.org/wiki/Spambot">spambots</a>. The attacks, generally, are not personal as the spammers are just trying to find accessible targets. phpBB has a number of anti-spam measures built in, including a range of CAPTCHAs. However, administrators are strongly urged to read and follow the advice for <a href="https://www.phpbb.com/support/spam/">Preventing Spam in phpBB</a> as soon as possible after completing the installation of your board.</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="back2top"><a href="#wrap" class="top">Back to Top</a></div>
|
<div class="back2top"><a href="#wrap" class="top">Back to Top</a></div>
|
||||||
|
@ -447,7 +447,7 @@
|
||||||
|
|
||||||
<div class="content">
|
<div class="content">
|
||||||
|
|
||||||
<p>This application is opensource software released under the <a href="http://opensource.org/licenses/gpl-2.0.php">GNU General Public License v2</a>. Please see the source code and <code>docs/</code> directory for more details. This package and its contents are Copyright © <a href="http://www.phpbb.com/">phpBB Group</a>, All Rights Reserved.</p>
|
<p>This application is opensource software released under the <a href="http://opensource.org/licenses/gpl-2.0.php">GNU General Public License v2</a>. Please see the source code and <code>docs/</code> directory for more details. This package and its contents are Copyright © <a href="https://www.phpbb.com/">phpBB Group</a>, All Rights Reserved.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
|
|
||||||
<!-- BEGIN DOCUMENT -->
|
<!-- BEGIN DOCUMENT -->
|
||||||
|
|
||||||
<p>Thank you for downloading phpBB3. This README will guide through the basics of installation and operation of phpBB3. Please ensure you read this and the accompanying documentation fully <strong>before</strong> proceeding with the installation.</p>
|
<p>Thank you for downloading phpBB3. This README will guide you through the basics of installation and operation of phpBB3. Please ensure you read this and the accompanying documentation fully <strong>before</strong> proceeding with the installation.</p>
|
||||||
|
|
||||||
<h1>Readme</h1>
|
<h1>Readme</h1>
|
||||||
|
|
||||||
|
@ -61,7 +61,7 @@
|
||||||
</ol>
|
</ol>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#status">Status of this version</a></li>
|
<li><a href="#status">Status of this version</a></li>
|
||||||
<li><a href="#bugs">Reporting Bugs</a>
|
<li><a href="#bugs">Reporting bugs</a>
|
||||||
<ol style="list-style-type: lower-roman;">
|
<ol style="list-style-type: lower-roman;">
|
||||||
<li><a href="#securitybugs">Security related bugs</a></li>
|
<li><a href="#securitybugs">Security related bugs</a></li>
|
||||||
</ol>
|
</ol>
|
||||||
|
@ -84,12 +84,11 @@
|
||||||
<div class="inner"><span class="corners-top"><span></span></span>
|
<div class="inner"><span class="corners-top"><span></span></span>
|
||||||
|
|
||||||
<div class="content">
|
<div class="content">
|
||||||
|
<p>Installation, update and conversion instructions can be found in the <a href="INSTALL.html">INSTALL</a> document in this directory. If you are intending on converting from a phpBB 2.0.x or 3.0.x installation we highly recommend that you backup any existing data before proceeding!</p>
|
||||||
<p>Installation, update and conversion instructions can be found in the <a href="INSTALL.html">INSTALL</a> document contained in this distribution. If you are intending to convert from a previous phpBB 2.0.x or 3.0.x installation we highly recommend you backup any existing data before proceeding!</p>
|
|
||||||
|
|
||||||
<p>Users of phpBB 3.0 and 3.1 Beta versions cannot directly update.</p>
|
<p>Users of phpBB 3.0 and 3.1 Beta versions cannot directly update.</p>
|
||||||
|
|
||||||
<p>Please note that we won't support the following installation types:</p>
|
<p>Please note that we don't support the following installation types:</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Updates from phpBB 3.0 Beta versions to phpBB 3.0 RC1 and higher</li>
|
<li>Updates from phpBB 3.0 Beta versions to phpBB 3.0 RC1 and higher</li>
|
||||||
<li>Updates from phpBB 3.1 Beta versions to phpBB 3.1 RC1 and higher</li>
|
<li>Updates from phpBB 3.1 Beta versions to phpBB 3.1 RC1 and higher</li>
|
||||||
|
@ -103,8 +102,8 @@
|
||||||
<li>Updates from phpBB 3.0 RC1 and 3.1 RC1 to the latest version</li>
|
<li>Updates from phpBB 3.0 RC1 and 3.1 RC1 to the latest version</li>
|
||||||
<li>Note: if using the <em>Automatic Update Package</em>, updates are supported from phpBB 3.0.2 onward. To update a pre-3.0.2 installation, first update to 3.0.2 and then update to the current version.</li>
|
<li>Note: if using the <em>Automatic Update Package</em>, updates are supported from phpBB 3.0.2 onward. To update a pre-3.0.2 installation, first update to 3.0.2 and then update to the current version.</li>
|
||||||
<li>Conversions from phpBB 2.0.x to the latest version</li>
|
<li>Conversions from phpBB 2.0.x to the latest version</li>
|
||||||
<li>New installations of phpBB 3.0.x - always only the latest released version</li>
|
<li>New installations of phpBB 3.0.x - only the latest released version</li>
|
||||||
<li>New installations of phpBB 3.1.x - always only the latest released version</li>
|
<li>New installations of phpBB 3.1.x - only the latest released version</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
@ -127,21 +126,21 @@
|
||||||
|
|
||||||
<a name="i18n"></a><h3>2.i. Languages (Internationalisation - i18n)</h3>
|
<a name="i18n"></a><h3>2.i. Languages (Internationalisation - i18n)</h3>
|
||||||
|
|
||||||
<p>A number of language packs with included style localisations are available. You can find them listed in the <a href="http://www.phpbb.com/languages/">Language Packs</a> pages of our downloads section or from the <a href="http://www.phpbb.com/customise/db/language_packs-25/">Language Packs</a> section of the <a href="http://www.phpbb.com/customise/db/">Customisation Database</a>.</p>
|
<p>A number of language packs with included style localisations are available. You can find them listed in the <a href="https://www.phpbb.com/languages/">Language Packs</a> pages of our downloads section or from the <a href="https://www.phpbb.com/customise/db/language_packs-25/">Language Packs</a> section of the <a href="https://www.phpbb.com/customise/db/">Customisation Database</a>.</p>
|
||||||
|
|
||||||
<p>For more information about language packs, please see: <a href="http://www.phpbb.com/languages/">http://www.phpbb.com/languages/</a></p>
|
<p>For more information about language packs, please see: <a href="https://www.phpbb.com/languages/">https://www.phpbb.com/languages/</a></p>
|
||||||
|
|
||||||
<p>This is the <em>official</em> location for all supported language sets. If you download a package from a 3rd party site you do so with the understanding that we cannot offer support. So please, do not ask for help in these cases!</p>
|
<p>This is the <em>official</em> location for all supported language sets. If you download a package from a 3rd party site you do so with the understanding that we cannot offer support. Please do not ask for support if you download a language pack from a 3rd party site.</p>
|
||||||
|
|
||||||
<p>Installation of these packages is straightforward: simply download the required language pack, uncompress (unzip) it and via FTP transfer the included <code>language</code> and <code>styles</code> folders to the root of your board installation. The language can then be installed via the Administration Control Panel of your board: <code>System tab -> General Tasks -> Language packs</code>. A more detailed description of the process is in the Knowledge Base article, <a href="http://www.phpbb.com/kb/article/how-to-install-a-language-pack/">How to Install a Language Pack</a>.</p>
|
<p>Installation of these packages is straightforward: simply download the required language pack, uncompress (unzip) it and via FTP transfer the included <code>language</code> and <code>styles</code> folders to the root of your board installation. The language can then be installed via the Administration Control Panel of your board: <code>System tab -> General Tasks -> Language packs</code>. A more detailed description of the process is in the Knowledge Base article, <a href="https://www.phpbb.com/kb/article/how-to-install-a-language-pack/">How to Install a Language Pack</a>.</p>
|
||||||
|
|
||||||
<p>If your language is not available, please visit our <a href="http://www.phpbb.com/community/viewforum.php?f=66">[3.0.x] Translations</a> forum where you will find topics on translations in progress. Should you wish to volunteer to translate a language not currently available or assist in maintaining an existing language pack, you can <a href="http://www.phpbb.com/languages/apply.php">Apply to become a translator</a>.</p>
|
<p>If your language is not available, please visit our <a href="https://www.phpbb.com/community/viewforum.php?f=66">[3.0.x] Translations</a> forum where you will find topics on translations in progress. Should you wish to volunteer to translate a language not currently available or assist in maintaining an existing language pack, you can <a href="https://www.phpbb.com/languages/apply.php">Apply to become a translator</a>.</p>
|
||||||
|
|
||||||
<a name="styles"></a><h3>2.ii. Styles</h3>
|
<a name="styles"></a><h3>2.ii. Styles</h3>
|
||||||
|
|
||||||
<p>Although the phpBB Group is rather proud of the included styles, we realise that they may not be to everyone's taste. Therefore, phpBB3 allows styles to be switched with relative ease. First, you need to locate and download a style you like. You can find them listed in the <a href="http://www.phpbb.com/customise/db/styles-2/">Styles</a> section of our <a href="http://www.phpbb.com/customise/db/">Customisation Database</a>.</p>
|
<p>Although the phpBB Group is rather proud of the included styles, we realise that they may not be to everyone's taste. Therefore, phpBB3 allows styles to be switched with relative ease. First, you need to locate and download a style you like. You can find them listed in the <a href="https://www.phpbb.com/customise/db/styles-2/">Styles</a> section of our <a href="https://www.phpbb.com/customise/db/">Customisation Database</a>.</p>
|
||||||
|
|
||||||
<p>For more information about styles, please see: <a href="http://www.phpbb.com/styles/">http://www.phpbb.com/styles/</a></p>
|
<p>For more information about styles, please see: <a href="https://www.phpbb.com/styles/">https://www.phpbb.com/styles/</a></p>
|
||||||
|
|
||||||
<p><strong>Please note</strong> that 3rd party styles downloaded for versions of phpBB2 will <strong>not</strong> work in phpBB3. It is also important to ensure that the style is updated to match the current version of the phpBB software you are using.</p>
|
<p><strong>Please note</strong> that 3rd party styles downloaded for versions of phpBB2 will <strong>not</strong> work in phpBB3. It is also important to ensure that the style is updated to match the current version of the phpBB software you are using.</p>
|
||||||
|
|
||||||
|
@ -151,9 +150,9 @@
|
||||||
|
|
||||||
<a name="mods"></a><h3>2.iii. Modifications</h3>
|
<a name="mods"></a><h3>2.iii. Modifications</h3>
|
||||||
|
|
||||||
<p>Although not officially supported by the phpBB Group, phpBB has a thriving modification scene. These third party modifications to the standard phpBB software, known as <strong>MODs</strong>, extend its capabilities still further. You can browse through many of the MODs in the <a href="http://www.phpbb.com/customise/db/modifications-1/">Modifications</a> section of our <a href="http://www.phpbb.com/customise/db/">Customisation Database</a>.</p>
|
<p>Although not officially supported by the phpBB Group, phpBB has a thriving modification scene. These third party modifications to the standard phpBB software, known as <strong>MODs</strong>, extend its capabilities still further. You can browse through many of the MODs in the <a href="https://www.phpbb.com/customise/db/modifications-1/">Modifications</a> section of our <a href="https://www.phpbb.com/customise/db/">Customisation Database</a>.</p>
|
||||||
|
|
||||||
<p>For more information about MODs, please see: <a href="http://www.phpbb.com/mods/">http://www.phpbb.com/mods/</a></p>
|
<p>For more information about MODs, please see: <a href="https://www.phpbb.com/mods/">https://www.phpbb.com/mods/</a></p>
|
||||||
|
|
||||||
<p><strong>Please remember</strong> that any bugs or other issues that occur after you have added any modification should <strong>NOT</strong> be reported to the bug tracker (see below). First remove the MOD and see if the problem is resolved. Any support for a MOD should only be sought in the "Discussion/Support" forum for that MOD.</p>
|
<p><strong>Please remember</strong> that any bugs or other issues that occur after you have added any modification should <strong>NOT</strong> be reported to the bug tracker (see below). First remove the MOD and see if the problem is resolved. Any support for a MOD should only be sought in the "Discussion/Support" forum for that MOD.</p>
|
||||||
|
|
||||||
|
@ -175,35 +174,35 @@
|
||||||
|
|
||||||
<div class="content">
|
<div class="content">
|
||||||
|
|
||||||
<p>phpBB3 can seem a little daunting to new users in places, particularly with regard the permission system. The first thing you should do is check the <a href="FAQ.html">FAQ</a> which covers a few basic getting started questions. If you need additional help there are several places you should look.</p>
|
<p>phpBB3 can sometimes seem a little daunting to new users, particularly with regards to the permission system. The first thing you should do is check the <a href="FAQ.html">FAQ</a>, which covers a few basic getting started questions. If you need additional help there are several places you can find it.</p>
|
||||||
|
|
||||||
<a name="docs"></a><h3>3.i. phpBB3 Documentation</h3>
|
<a name="docs"></a><h3>3.i. phpBB3 Documentation</h3>
|
||||||
|
|
||||||
<p>A comprehensive documentation is now available online and can be accessed from the following location:</p>
|
<p>Comprehensive documentation is now available on the phpBB website:</p>
|
||||||
|
|
||||||
<p><a href="http://www.phpbb.com/support/documentation/3.0/">http://www.phpbb.com/support/documentation/3.0/</a></p>
|
<p><a href="https://www.phpbb.com/support/documentation/3.0/">https://www.phpbb.com/support/documentation/3.0/</a></p>
|
||||||
|
|
||||||
<p>This covers everything from installation through setting permissions and managing users.</p>
|
<p>This covers everything from installation to setting permissions and managing users.</p>
|
||||||
|
|
||||||
<a name="kb"></a><h3>3.ii. Knowledge Base</h3>
|
<a name="kb"></a><h3>3.ii. Knowledge Base</h3>
|
||||||
|
|
||||||
<p>The Knowledge Base consists of a number of detailed articles on some common issues phpBB users may encounter while using the product. The Knowledge Base can be found at:</p>
|
<p>The Knowledge Base consists of a number of detailed articles on some common issues phpBB users may encounter while using the product. The Knowledge Base can be found at:</p>
|
||||||
|
|
||||||
<p><a href="http://www.phpbb.com/kb/">http://www.phpbb.com/kb/</a></p>
|
<p><a href="https://www.phpbb.com/kb/">https://www.phpbb.com/kb/</a></p>
|
||||||
|
|
||||||
<a name="website"></a><h3>3.iii. Community Forums</h3>
|
<a name="website"></a><h3>3.iii. Community Forums</h3>
|
||||||
|
|
||||||
<p>The phpBB Group maintains a thriving community where a number of people have generously decided to donate their time to help support users. This site can be found at:</p>
|
<p>The phpBB Group maintains a thriving community where a number of people have generously decided to donate their time to help support users. This site can be found at:</p>
|
||||||
|
|
||||||
<p><a href="http://www.phpbb.com/community/">http://www.phpbb.com/community/</a></p>
|
<p><a href="https://www.phpbb.com/community/">https://www.phpbb.com/community/</a></p>
|
||||||
|
|
||||||
<p>If you do seek help via our forums please be sure to do a Search before posting. This may well save both you and us time and allow the developer, moderator and support groups to spend more time responding to people with unknown issues and problems. Please also remember that phpBB is an entirely volunteer effort, no one receives any compensation for the time they give, this includes moderators as well as developers. So please be respectful and mindful when awaiting responses.</p>
|
<p>If you do seek help via our forums please be sure to do a search before posting; if someone has experienced the issue before, then you may find that your question has already been answered. Please remember that phpBB is entirely staffed by volunteers, no one receives any compensation for the time they give, including moderators as well as developers; please be respectful and mindful when awaiting responses and receiving support.</p>
|
||||||
|
|
||||||
<a name="irc"></a><h3>3.iv Internet Relay Chat</h3>
|
<a name="irc"></a><h3>3.iv Internet Relay Chat</h3>
|
||||||
|
|
||||||
<p>Another place you may find help is our IRC channel. This operates on the Freenode IRC network, <a href="irc://irc.freenode.net">irc.freenode.net</a> and the channel is <em>#phpbb</em> and can be accessed by any decent IRC client such as mIRC, XChat, etc. Again, please do not abuse this service and be respectful of other users.</p>
|
<p>Another place you may find help is our IRC channel. This operates on the Freenode IRC network, <a href="irc://irc.freenode.net">irc.freenode.net</a> and the channel is <em>#phpbb</em> and can be accessed by any decent IRC client such as mIRC, XChat, etc. Again, please do not abuse this service and be respectful of other users.</p>
|
||||||
|
|
||||||
<p>There are other IRC channels available, please see <a href="http://www.phpbb.com/support/irc/">http://www.phpbb.com/support/irc/</a> for the complete list.</p>
|
<p>There are other IRC channels available, please see <a href="https://www.phpbb.com/support/irc/">https://www.phpbb.com/support/irc/</a> for the complete list.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -268,7 +267,7 @@
|
||||||
|
|
||||||
<p>The relevant database type/version is listed within the administration control panel.</p>
|
<p>The relevant database type/version is listed within the administration control panel.</p>
|
||||||
|
|
||||||
<p>Please also be as detailed as you can in your report, if possible list the steps required to duplicate the problem. If you have a patch that fixes the issue, please attach it to the ticket or submit a pull request <a href="https://github.com/phpbb/phpbb3">on GitHub</a>.</p>
|
<p>Please be as detailed as you can in your report, and if possible, list the steps required to duplicate the problem. If you have a patch that fixes the issue, please attach it to the ticket or submit a pull request to our repository <a href="https://github.com/phpbb/phpbb3">on GitHub</a>.</p>
|
||||||
|
|
||||||
<p>If you create a patch, it is very much appreciated (but not required) if you follow the phpBB coding guidelines. Please note that the coding guidelines are somewhat different between different versions of phpBB. For phpBB 3.1.x the coding guidelines may be found here: <a href="http://area51.phpbb.com/docs/31x/coding-guidelines.html">http://area51.phpbb.com/docs/31x/coding-guidelines.html</a></p>
|
<p>If you create a patch, it is very much appreciated (but not required) if you follow the phpBB coding guidelines. Please note that the coding guidelines are somewhat different between different versions of phpBB. For phpBB 3.1.x the coding guidelines may be found here: <a href="http://area51.phpbb.com/docs/31x/coding-guidelines.html">http://area51.phpbb.com/docs/31x/coding-guidelines.html</a></p>
|
||||||
|
|
||||||
|
@ -278,7 +277,7 @@
|
||||||
|
|
||||||
<p>If you find a potential security related vulnerability in phpBB please <strong>DO NOT</strong> post it to the bug tracker, public forums, etc.! Doing so may allow unscrupulous users to take advantage of it before we have time to put a fix in place. All security related bugs should be sent to our security tracker:</p>
|
<p>If you find a potential security related vulnerability in phpBB please <strong>DO NOT</strong> post it to the bug tracker, public forums, etc.! Doing so may allow unscrupulous users to take advantage of it before we have time to put a fix in place. All security related bugs should be sent to our security tracker:</p>
|
||||||
|
|
||||||
<p><a href="http://www.phpbb.com/security/">http://www.phpbb.com/security/</a></p>
|
<p><a href="https://www.phpbb.com/security/">https://www.phpbb.com/security/</a></p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -299,8 +298,8 @@
|
||||||
<p>This list is not complete but does represent those bugs which may affect users on a wider scale. Other bugs listed in the tracker have typically been shown to be limited to certain setups or methods of installation, updating and/or conversions.</p>
|
<p>This list is not complete but does represent those bugs which may affect users on a wider scale. Other bugs listed in the tracker have typically been shown to be limited to certain setups or methods of installation, updating and/or conversions.</p>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>Conversions may fail to complete on large boards under some hosts</li>
|
<li>Conversions may fail to complete on large boards under some hosts.</li>
|
||||||
<li>Updates may fail to complete on large update sets under some hosts</li>
|
<li>Updates may fail to complete on large update sets under some hosts.</li>
|
||||||
<li>Smilies placed directly after bbcode tags will not get parsed. Smilies always need to be separated by spaces.</li>
|
<li>Smilies placed directly after bbcode tags will not get parsed. Smilies always need to be separated by spaces.</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
@ -322,7 +321,7 @@
|
||||||
|
|
||||||
<p>phpBB 3.1.x takes advantage of new features added in PHP 5.3. We recommend that you upgrade to the latest stable release of PHP5 to run phpBB. The minimum version required is PHP 5.3.3.</p>
|
<p>phpBB 3.1.x takes advantage of new features added in PHP 5.3. We recommend that you upgrade to the latest stable release of PHP5 to run phpBB. The minimum version required is PHP 5.3.3.</p>
|
||||||
|
|
||||||
<p>Please remember that running any application on a developmental version of PHP can lead to strange/unexpected results which may appear to be bugs in the application (which may not be true). Therefore we recommend you upgrade to the newest stable version of PHP before running phpBB3. If you are running a developmental version of PHP please check any bugs you find on a system running a stable release before submitting.</p>
|
<p>Please remember that running any application on a development (unstable, e.g. a beta release) version of PHP can lead to strange/unexpected results which may appear to be bugs in the application. Therefore, we recommend you upgrade to the newest stable version of PHP before running phpBB3. If you are running a development version of PHP please check any bugs you find on a system running a stable release before submitting.</p>
|
||||||
|
|
||||||
<p>This board has been developed and tested under Linux and Windows (amongst others) running Apache using MySQL 3.23, 4.x, 5.x, MSSQL Server 2000, PostgreSQL 8.x, Oracle 8, SQLite 2 and Firebird. Versions of PHP used range from 5.3.x to 5.4.x without problem.</p>
|
<p>This board has been developed and tested under Linux and Windows (amongst others) running Apache using MySQL 3.23, 4.x, 5.x, MSSQL Server 2000, PostgreSQL 8.x, Oracle 8, SQLite 2 and Firebird. Versions of PHP used range from 5.3.x to 5.4.x without problem.</p>
|
||||||
|
|
||||||
|
@ -346,7 +345,7 @@
|
||||||
|
|
||||||
<div class="content">
|
<div class="content">
|
||||||
|
|
||||||
<p>This application is opensource software released under the <a href="http://opensource.org/licenses/gpl-2.0.php">GNU General Public License v2</a>. Please see source code and the docs directory for more details. This package and its contents are Copyright © <a href="http://www.phpbb.com/">phpBB Group</a>, All Rights Reserved.</p>
|
<p>This application is opensource software released under the <a href="http://opensource.org/licenses/gpl-2.0.php">GNU General Public License v2</a>. Please see source code and the docs directory for more details. This package and its contents are Copyright © <a href="https://www.phpbb.com/">phpBB Group</a>, All Rights Reserved.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -268,7 +268,7 @@ $auth_admin = new auth_admin();
|
||||||
|
|
||||||
<div class="content">
|
<div class="content">
|
||||||
|
|
||||||
<p>This application is opensource software released under the <a href="http://opensource.org/licenses/gpl-2.0.php">GNU General Public License v2</a>. Please see source code and the docs directory for more details. This package and its contents are Copyright (c) <a href="http://www.phpbb.com/">phpBB Group</a>, All Rights Reserved.</p>
|
<p>This application is opensource software released under the <a href="http://opensource.org/licenses/gpl-2.0.php">GNU General Public License v2</a>. Please see source code and the docs directory for more details. This package and its contents are Copyright (c) <a href="https://www.phpbb.com/">phpBB Group</a>, All Rights Reserved.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -72,6 +72,7 @@
|
||||||
<ol style="list-style-type: lower-roman;">
|
<ol style="list-style-type: lower-roman;">
|
||||||
<li><a href="#templates">General Templating</a></li>
|
<li><a href="#templates">General Templating</a></li>
|
||||||
<li><a href="#stylestree">Styles Tree</a></li>
|
<li><a href="#stylestree">Styles Tree</a></li>
|
||||||
|
<li><a href="#template-events">Template Events</a></li>
|
||||||
</ol></li>
|
</ol></li>
|
||||||
<li><a href="#charsets">Character Sets and Encodings</a></li>
|
<li><a href="#charsets">Character Sets and Encodings</a></li>
|
||||||
<li><a href="#translation">Translation (<abbr title="Internationalisation">i18n</abbr>/<abbr title="Localisation">L10n</abbr>) Guidelines</a>
|
<li><a href="#translation">Translation (<abbr title="Internationalisation">i18n</abbr>/<abbr title="Localisation">L10n</abbr>) Guidelines</a>
|
||||||
|
@ -831,7 +832,7 @@ $sql = 'SELECT *
|
||||||
$sql_ary = array(
|
$sql_ary = array(
|
||||||
'somedata' => $my_string,
|
'somedata' => $my_string,
|
||||||
'otherdata' => $an_int,
|
'otherdata' => $an_int,
|
||||||
'moredata' => $another_int
|
'moredata' => $another_int,
|
||||||
);
|
);
|
||||||
|
|
||||||
$db->sql_query('INSERT INTO ' . SOME_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary));
|
$db->sql_query('INSERT INTO ' . SOME_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary));
|
||||||
|
@ -843,7 +844,7 @@ $db->sql_query('INSERT INTO ' . SOME_TABLE . ' ' . $db->sql_build_array('I
|
||||||
$sql_ary = array(
|
$sql_ary = array(
|
||||||
'somedata' => $my_string,
|
'somedata' => $my_string,
|
||||||
'otherdata' => $an_int,
|
'otherdata' => $an_int,
|
||||||
'moredata' => $another_int
|
'moredata' => $another_int,
|
||||||
);
|
);
|
||||||
|
|
||||||
$sql = 'UPDATE ' . SOME_TABLE . '
|
$sql = 'UPDATE ' . SOME_TABLE . '
|
||||||
|
@ -936,20 +937,20 @@ $sql_array = array(
|
||||||
|
|
||||||
'FROM' => array(
|
'FROM' => array(
|
||||||
FORUMS_WATCH_TABLE => 'fw',
|
FORUMS_WATCH_TABLE => 'fw',
|
||||||
FORUMS_TABLE => 'f'
|
FORUMS_TABLE => 'f',
|
||||||
),
|
),
|
||||||
|
|
||||||
'LEFT_JOIN' => array(
|
'LEFT_JOIN' => array(
|
||||||
array(
|
array(
|
||||||
'FROM' => array(FORUMS_TRACK_TABLE => 'ft'),
|
'FROM' => array(FORUMS_TRACK_TABLE => 'ft'),
|
||||||
'ON' => 'ft.user_id = ' . $user->data['user_id'] . ' AND ft.forum_id = f.forum_id'
|
'ON' => 'ft.user_id = ' . $user->data['user_id'] . ' AND ft.forum_id = f.forum_id',
|
||||||
)
|
),
|
||||||
),
|
),
|
||||||
|
|
||||||
'WHERE' => 'fw.user_id = ' . $user->data['user_id'] . '
|
'WHERE' => 'fw.user_id = ' . $user->data['user_id'] . '
|
||||||
AND f.forum_id = fw.forum_id',
|
AND f.forum_id = fw.forum_id',
|
||||||
|
|
||||||
'ORDER_BY' => 'left_id'
|
'ORDER_BY' => 'left_id',
|
||||||
);
|
);
|
||||||
|
|
||||||
$sql = $db->sql_build_query('SELECT', $sql_array);
|
$sql = $db->sql_build_query('SELECT', $sql_array);
|
||||||
|
@ -963,13 +964,13 @@ $sql_array = array(
|
||||||
|
|
||||||
'FROM' => array(
|
'FROM' => array(
|
||||||
FORUMS_WATCH_TABLE => 'fw',
|
FORUMS_WATCH_TABLE => 'fw',
|
||||||
FORUMS_TABLE => 'f'
|
FORUMS_TABLE => 'f',
|
||||||
),
|
),
|
||||||
|
|
||||||
'WHERE' => 'fw.user_id = ' . $user->data['user_id'] . '
|
'WHERE' => 'fw.user_id = ' . $user->data['user_id'] . '
|
||||||
AND f.forum_id = fw.forum_id',
|
AND f.forum_id = fw.forum_id',
|
||||||
|
|
||||||
'ORDER_BY' => 'left_id'
|
'ORDER_BY' => 'left_id',
|
||||||
);
|
);
|
||||||
|
|
||||||
if ($config['load_db_lastread'])
|
if ($config['load_db_lastread'])
|
||||||
|
@ -977,8 +978,8 @@ if ($config['load_db_lastread'])
|
||||||
$sql_array['LEFT_JOIN'] = array(
|
$sql_array['LEFT_JOIN'] = array(
|
||||||
array(
|
array(
|
||||||
'FROM' => array(FORUMS_TRACK_TABLE => 'ft'),
|
'FROM' => array(FORUMS_TRACK_TABLE => 'ft'),
|
||||||
'ON' => 'ft.user_id = ' . $user->data['user_id'] . ' AND ft.forum_id = f.forum_id'
|
'ON' => 'ft.user_id = ' . $user->data['user_id'] . ' AND ft.forum_id = f.forum_id',
|
||||||
)
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
$sql_array['SELECT'] .= ', ft.mark_time ';
|
$sql_array['SELECT'] .= ', ft.mark_time ';
|
||||||
|
@ -1059,6 +1060,8 @@ $action_ary = request_var('action', array('' => 0));
|
||||||
<h4>Login checks/redirection: </h4>
|
<h4>Login checks/redirection: </h4>
|
||||||
<p>To show a forum login box use <code>login_forum_box($forum_data)</code>, else use the <code>login_box()</code> function.</p>
|
<p>To show a forum login box use <code>login_forum_box($forum_data)</code>, else use the <code>login_box()</code> function.</p>
|
||||||
|
|
||||||
|
<p><code>$forum_data</code> should contain at least the <code>forum_id</code> and <code>forum_password</code> fields. If the field <code>forum_name</code> is available, then it is displayed on the forum login page.</p>
|
||||||
|
|
||||||
<p>The <code>login_box()</code> function can have a redirect as the first parameter. As a thumb of rule, specify an empty string if you want to redirect to the users current location, else do not add the <code>$SID</code> to the redirect string (for example within the ucp/login we redirect to the board index because else the user would be redirected to the login screen).</p>
|
<p>The <code>login_box()</code> function can have a redirect as the first parameter. As a thumb of rule, specify an empty string if you want to redirect to the users current location, else do not add the <code>$SID</code> to the redirect string (for example within the ucp/login we redirect to the board index because else the user would be redirected to the login screen).</p>
|
||||||
|
|
||||||
<h4>Sensitive Operations: </h4>
|
<h4>Sensitive Operations: </h4>
|
||||||
|
@ -1312,7 +1315,7 @@ parent = prosilver
|
||||||
<span class="comment"><!-- INCLUDEPHP somefile.php --></span>
|
<span class="comment"><!-- INCLUDEPHP somefile.php --></span>
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
|
||||||
<p>it will be included and executed inline.<br /><br />A note, it is very much encouraged that template designers do not include PHP. The ability to include raw PHP was introduced primarily to allow end users to include banner code, etc. without modifying multiple files (as with 2.0.x). It was not intended for general use ... hence <!-- w --><a href="http://www.phpbb.com">www.phpbb.com</a><!-- w --> will <strong>not</strong> make available template sets which include PHP. And by default templates will have PHP disabled (the admin will need to specifically activate PHP for a template).</p>
|
<p>it will be included and executed inline.<br /><br />A note, it is very much encouraged that template designers do not include PHP. The ability to include raw PHP was introduced primarily to allow end users to include banner code, etc. without modifying multiple files (as with 2.0.x). It was not intended for general use ... hence <!-- w --><a href="https://www.phpbb.com">www.phpbb.com</a><!-- w --> will <strong>not</strong> make available template sets which include PHP. And by default templates will have PHP disabled (the admin will need to specifically activate PHP for a template).</p>
|
||||||
|
|
||||||
<h4>Conditionals/Control structures</h4>
|
<h4>Conditionals/Control structures</h4>
|
||||||
<p>The most significant addition to 3.x are conditions or control structures, "if something then do this else do that". The system deployed is very similar to Smarty. This may confuse some people at first but it offers great potential and great flexibility with a little imagination. In their most simple form these constructs take the form:</p>
|
<p>The most significant addition to 3.x are conditions or control structures, "if something then do this else do that". The system deployed is very similar to Smarty. This may confuse some people at first but it offers great potential and great flexibility with a little imagination. In their most simple form these constructs take the form:</p>
|
||||||
|
@ -1678,6 +1681,57 @@ version = 3.1.0
|
||||||
parent = prosilver
|
parent = prosilver
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
|
||||||
|
<a name="template-events"></a><h3>4.iii. Template Events</h3>
|
||||||
|
<p>Template events must follow this format: <code><!-- EVENT event_name --></code></p>
|
||||||
|
<p>Using the above example, files named <code>event_name.html</code> located within extensions will be injected into the location of the event.</p>
|
||||||
|
|
||||||
|
<h4>Template event naming guidelines:</h4>
|
||||||
|
<ul>
|
||||||
|
<li>An event name must be all lowercase, with each word separated by an underscore.</li>
|
||||||
|
<li>An event name must briefly describe the location and purpose of the event.</li>
|
||||||
|
<li>An event name must end with one of the following suffixes:</li>
|
||||||
|
<ul>
|
||||||
|
<li><code>_prepend</code> - This event adds an item to the beginning of a block of related items, or adds to the beginning of individual items in a block.</li>
|
||||||
|
<li><code>_append</code> - This event adds an item to the end of a block of related items, or adds to the end of individual items in a block.</li>
|
||||||
|
<li><code>_before</code> - This event adds content directly before the specified block</li>
|
||||||
|
<li><code>_after</code> - This event adds content directly after the specified block</li>
|
||||||
|
</ul>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h4>Template event documentation</h4>
|
||||||
|
<p>Events must be documented in <code>phpBB/docs/events.md</code> in alphabetical order based on the event name. The format is as follows:</p>
|
||||||
|
|
||||||
|
<ul><li>An event found in only one template file:
|
||||||
|
<div class="codebox"><pre>event_name
|
||||||
|
===
|
||||||
|
* Location: styles/<style_name>/template/filename.html
|
||||||
|
* Purpose: A brief description of what this event should be used for.
|
||||||
|
This may span multiple lines.
|
||||||
|
</pre></div></li>
|
||||||
|
<li>An event found in multiple template files:
|
||||||
|
<div class="codebox"><pre>event_name
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ first/file/path.html
|
||||||
|
+ second/file/path.html
|
||||||
|
* Purpose: Same as above.
|
||||||
|
</pre></div>
|
||||||
|
<li>An event that is found multiple times in a file should have the number of instances in parenthesis next to the filename.
|
||||||
|
<div class="codebox"><pre>event_name
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ first/file/path.html (2)
|
||||||
|
+ second/file/path.html
|
||||||
|
* Purpose: Same as above.
|
||||||
|
</pre></div></li>
|
||||||
|
<li>An actual example event documentation:
|
||||||
|
<div class="codebox"><pre>forumlist_body_last_post_title_prepend
|
||||||
|
====
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/forumlist_body.html
|
||||||
|
+ styles/subsilver2/template/forumlist_body.html
|
||||||
|
* Purpose: Add content before the post title of the latest post in a forum on the forum list.</pre></div></ul><br />
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="back2top"><a href="#wrap" class="top">Back to Top</a></div>
|
<div class="back2top"><a href="#wrap" class="top">Back to Top</a></div>
|
||||||
|
@ -2438,14 +2492,14 @@ if (utf8_case_fold_nfc($string1) == utf8_case_fold_nfc($string2))
|
||||||
|
|
||||||
<hr />
|
<hr />
|
||||||
|
|
||||||
<a name="disclaimer"></a><h2>8. Copyright and disclaimer</h2>
|
<a name="disclaimer"></a><h2>7. Copyright and disclaimer</h2>
|
||||||
|
|
||||||
<div class="paragraph">
|
<div class="paragraph">
|
||||||
<div class="inner"><span class="corners-top"><span></span></span>
|
<div class="inner"><span class="corners-top"><span></span></span>
|
||||||
|
|
||||||
<div class="content">
|
<div class="content">
|
||||||
|
|
||||||
<p>This application is opensource software released under the <a href="http://opensource.org/licenses/gpl-2.0.php">GNU General Public License v2</a>. Please see source code and the docs directory for more details. This package and its contents are Copyright (c) <a href="http://www.phpbb.com/">phpBB Group</a>, All Rights Reserved.</p>
|
<p>This application is opensource software released under the <a href="http://opensource.org/licenses/gpl-2.0.php">GNU General Public License v2</a>. Please see source code and the docs directory for more details. This package and its contents are Copyright (c) <a href="https://www.phpbb.com/">phpBB Group</a>, All Rights Reserved.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
293
phpBB/docs/events.md
Normal file
293
phpBB/docs/events.md
Normal file
|
@ -0,0 +1,293 @@
|
||||||
|
acp_forums_normal_settings_append
|
||||||
|
===
|
||||||
|
* Location: adm/style/acp_forums.html
|
||||||
|
* Purpose: Add settings to forums
|
||||||
|
|
||||||
|
acp_main_actions_append
|
||||||
|
===
|
||||||
|
* Location: adm/style/acp_main.html
|
||||||
|
* Purpose: Add actions to the ACP main page below the cache purge action
|
||||||
|
|
||||||
|
acp_main_notice_after
|
||||||
|
===
|
||||||
|
* Location: adm/style/acp_main.html
|
||||||
|
* Purpose: Add notices or other blocks in the ACP below other configuration notices
|
||||||
|
|
||||||
|
acp_overall_footer_after
|
||||||
|
===
|
||||||
|
* Location: adm/style/overall_footer.html
|
||||||
|
* Purpose: Add content below the footer in the ACP
|
||||||
|
|
||||||
|
acp_overall_header_head_append
|
||||||
|
===
|
||||||
|
* Location: adm/style/overall_header.html
|
||||||
|
* Add assets within the `<head>` tags in the ACP
|
||||||
|
|
||||||
|
acp_simple_footer_after
|
||||||
|
===
|
||||||
|
* Location: adm/style/simple_footer.html
|
||||||
|
* Purpose: Add content below the simple footer in the ACP
|
||||||
|
|
||||||
|
acp_simple_header_head_append
|
||||||
|
===
|
||||||
|
* Location: adm/style/overall_header.html
|
||||||
|
* Add assets within the `<head>` tags in the simple header of the ACP
|
||||||
|
|
||||||
|
acp_users_overview_options_append
|
||||||
|
===
|
||||||
|
* Location: adm/style/acp_users.html
|
||||||
|
* Purpose: Add options and settings on user overview page
|
||||||
|
|
||||||
|
forumlist_body_last_post_title_prepend
|
||||||
|
====
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/forumlist_body.html
|
||||||
|
+ styles/subsilver2/template/forumlist_body.html
|
||||||
|
* Purpose: Add content before the post title of the latest post in a forum on the forum list.
|
||||||
|
|
||||||
|
index_body_stat_blocks_before
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/index_body.html
|
||||||
|
+ styles/subsilver2/template/index_body.html
|
||||||
|
* Purpose: Add new statistic blocks above the Who Is Online and Board Statistics blocks
|
||||||
|
|
||||||
|
memberlist_body_username_append
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/memberlist_body.html
|
||||||
|
+ styles/subsilver2/template/memberlist_body.html
|
||||||
|
* Purpose: Add information after every username in the memberlist. Works in
|
||||||
|
all display modes (leader, group and normal memberlist).
|
||||||
|
|
||||||
|
memberlist_body_username_prepend
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/memberlist_body.html
|
||||||
|
+ styles/subsilver2/template/memberlist_body.html
|
||||||
|
* Purpose: Add information before every username in the memberlist. Works in
|
||||||
|
all display modes (leader, group and normal memberlist).
|
||||||
|
|
||||||
|
memberlist_view_user_statistics_after
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/memberlist_view.html
|
||||||
|
+ styles/subsilver2/template/memberlist_view.html
|
||||||
|
* Purpose: Add entries after the user statistics part of any user profile
|
||||||
|
|
||||||
|
memberlist_view_user_statistics_before
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/memberlist_view.html
|
||||||
|
+ styles/subsilver2/template/memberlist_view.html
|
||||||
|
* Purpose: Add entries before the user statistics part of any user profile
|
||||||
|
|
||||||
|
overall_footer_after
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/overall_footer.html
|
||||||
|
+ styles/subsilver2/template/overall_footer.html
|
||||||
|
* Purpose: Add content at the end of the file, directly prior to the `</body>` tag
|
||||||
|
|
||||||
|
overall_footer_breadcrumb_append
|
||||||
|
===
|
||||||
|
* Location: styles/prosilver/template/overall_footer.html
|
||||||
|
* Purpose: Add links to the list of breadcrumbs in the footer
|
||||||
|
|
||||||
|
overall_footer_copyright_append
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/overall_footer.html
|
||||||
|
+ styles/subsilver2/template/overall_footer.html
|
||||||
|
* Purpose: Add content after the copyright line (no new line by default), before the ACP link
|
||||||
|
|
||||||
|
overall_footer_copyright_prepend
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/overall_footer.html
|
||||||
|
+ styles/subsilver2/template/overall_footer.html
|
||||||
|
* Purpose: Add content before the copyright line
|
||||||
|
|
||||||
|
overall_header_breadcrumb_append
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/overall_header.html
|
||||||
|
+ styles/subsilver2/template/breadcrumbs.html
|
||||||
|
* Purpose: Add links to the list of breadcrumbs in the header
|
||||||
|
|
||||||
|
overall_header_head_append
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/overall_header.html
|
||||||
|
+ styles/subsilver2/template/overall_header.html
|
||||||
|
* Purpose: Add asset calls directly before the `</head>` tag
|
||||||
|
|
||||||
|
overall_header_navigation_append
|
||||||
|
===
|
||||||
|
* Location: styles/prosilver/template/overall_header.html
|
||||||
|
* Purpose: Add links after the navigation links in the header
|
||||||
|
|
||||||
|
overall_header_navigation_prepend
|
||||||
|
===
|
||||||
|
* Location: styles/prosilver/template/overall_header.html
|
||||||
|
* Purpose: Add links before the navigation links in the header
|
||||||
|
|
||||||
|
posting_editor_options_prepend
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/posting_editor.html
|
||||||
|
+ styles/prosilver/template/posting_body.html
|
||||||
|
* Purpose: Add posting options on the posting screen
|
||||||
|
|
||||||
|
simple_footer_after
|
||||||
|
===
|
||||||
|
* Location: styles/prosilver/template/simple_footer.html
|
||||||
|
* Purpose: Add content directly prior to the `</body>` tag of the simple footer
|
||||||
|
|
||||||
|
topiclist_row_prepend
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/search_results.html
|
||||||
|
+ styles/prosilver/template/viewforum_body.html
|
||||||
|
+ styles/subsilver2/template/search_results.html
|
||||||
|
+ styles/subsilver2/template/viewforum_body.html
|
||||||
|
* Purpose: Add content into topic rows (inside the elements containing topic titles)
|
||||||
|
|
||||||
|
topiclist_row_append
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/search_results.html
|
||||||
|
+ styles/prosilver/template/viewforum_body.html
|
||||||
|
+ styles/subsilver2/template/search_results.html
|
||||||
|
+ styles/subsilver2/template/viewforum_body.html
|
||||||
|
* Purpose: Add content into topic rows (inside the elements containing topic titles)
|
||||||
|
|
||||||
|
ucp_pm_viewmessage_custom_fields_after
|
||||||
|
===
|
||||||
|
* Location: styles/prosilver/template/ucp_pm_viewmessage.html
|
||||||
|
* Purpose: Add data after the custom fields on the user profile when viewing
|
||||||
|
a private message
|
||||||
|
|
||||||
|
ucp_pm_viewmessage_custom_fields_before
|
||||||
|
===
|
||||||
|
* Location: styles/prosilver/template/ucp_pm_viewmessage.html
|
||||||
|
* Purpose: Add data before the custom fields on the user profile when viewing
|
||||||
|
a private message
|
||||||
|
|
||||||
|
ucp_pm_viewmessage_print_head_append
|
||||||
|
===
|
||||||
|
* Location: styles/prosilver/template/ucp_pm_viewmessage_print.html
|
||||||
|
* Purpose: Add asset calls directly before the `</head>` tag of the Print PM screen
|
||||||
|
|
||||||
|
ucp_prefs_personal_prepend
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/ucp_prefs_personal.html
|
||||||
|
+ styles/subsilver2/template/ucp_prefs_personal.html
|
||||||
|
* Purpose: Add user options to the top of the Edit Global Settings block
|
||||||
|
|
||||||
|
ucp_prefs_personal_append
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/ucp_prefs_personal.html
|
||||||
|
+ styles/subsilver2/template/ucp_prefs_personal.html
|
||||||
|
* Purpose: Add user options to the bottom of the Edit Global Settings block
|
||||||
|
|
||||||
|
ucp_prefs_post_prepend
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/ucp_prefs_post.html
|
||||||
|
+ styles/subsilver2/template/ucp_prefs_post.html
|
||||||
|
* Purpose: Add user options to the top of the Edit Posting Defaults block
|
||||||
|
|
||||||
|
ucp_prefs_post_append
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/ucp_prefs_post.html
|
||||||
|
+ styles/subsilver2/template/ucp_prefs_post.html
|
||||||
|
* Purpose: Add user options to the bottom of the Edit Posting Defaults block
|
||||||
|
|
||||||
|
ucp_prefs_view_radio_buttons_prepend
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/ucp_prefs_view.html
|
||||||
|
+ styles/subsilver2/template/ucp_prefs_view.html
|
||||||
|
* Purpose: Add options to the top of the radio buttons block of the Edit
|
||||||
|
Display Options screen
|
||||||
|
|
||||||
|
ucp_prefs_view_radio_buttons_append
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/ucp_prefs_view.html
|
||||||
|
+ styles/subsilver2/template/ucp_prefs_view.html
|
||||||
|
* Purpose: Add options to the bottom of the radio buttons block of the Edit
|
||||||
|
Display Options screen
|
||||||
|
|
||||||
|
ucp_prefs_view_select_menu_prepend
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/ucp_prefs_view.html
|
||||||
|
+ styles/subsilver2/template/ucp_prefs_view.html
|
||||||
|
* Purpose: Add options to the top of the drop-down lists block of the Edit
|
||||||
|
Display Options screen
|
||||||
|
|
||||||
|
ucp_prefs_view_select_menu_append
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/ucp_prefs_view.html
|
||||||
|
+ styles/subsilver2/template/ucp_prefs_view.html
|
||||||
|
* Purpose: Add options to the bottom of the drop-down lists block of the Edit
|
||||||
|
Display Options screen
|
||||||
|
|
||||||
|
viewtopic_print_head_append
|
||||||
|
===
|
||||||
|
* Location: styles/prosilver/template/viewtopic_print.html
|
||||||
|
* Purpose: Add asset calls directly before the `</head>` tag of the Print Topic screen
|
||||||
|
|
||||||
|
viewtopic_body_footer_before
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/viewtopic_body.html
|
||||||
|
+ styles/subsilver2/template/viewtopic_body.html
|
||||||
|
* Purpose: Add content to the bottom of the View topic screen below the posts
|
||||||
|
and quick reply, directly before the jumpbox in Prosilver, breadcrumbs in
|
||||||
|
Subsilver2.
|
||||||
|
|
||||||
|
viewtopic_body_post_buttons_after
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/viewtopic_body.html
|
||||||
|
+ styles/subsilver2/template/viewtopic_body.html
|
||||||
|
* Purpose: Add post button to posts (next to edit, quote etc), at the end of
|
||||||
|
the list.
|
||||||
|
|
||||||
|
viewtopic_body_post_buttons_before
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/viewtopic_body.html
|
||||||
|
+ styles/subsilver2/template/viewtopic_body.html
|
||||||
|
* Purpose: Add post button to posts (next to edit, quote etc), at the start of
|
||||||
|
the list.
|
||||||
|
|
||||||
|
viewtopic_body_postrow_custom_fields_after
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/viewtopic_body.html
|
||||||
|
+ styles/subsilver2/template/viewtopic_body.html
|
||||||
|
* Purpose: Add data after the custom fields on the user profile when viewing
|
||||||
|
a post
|
||||||
|
|
||||||
|
viewtopic_body_postrow_custom_fields_before
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/viewtopic_body.html
|
||||||
|
+ styles/subsilver2/template/viewtopic_body.html
|
||||||
|
* Purpose: Add data before the custom fields on the user profile when viewing
|
||||||
|
a post
|
||||||
|
|
||||||
|
viewtopic_topic_title_prepend
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/viewtopic_body.html
|
||||||
|
+ styles/subsilver2/template/viewtopic_body.html
|
||||||
|
* Purpose: Add content directly before the topic title link on the View topic screen
|
|
@ -861,7 +861,7 @@ function phpbb_hook_register(&$hook)
|
||||||
|
|
||||||
<div class="content">
|
<div class="content">
|
||||||
|
|
||||||
<p>This application is opensource software released under the <a href="http://opensource.org/licenses/gpl-2.0.php">GNU General Public License v2</a>. Please see source code and the docs directory for more details. This package and its contents are Copyright (c) <a href="http://www.phpbb.com/">phpBB Group</a>, All Rights Reserved.</p>
|
<p>This application is opensource software released under the <a href="http://opensource.org/licenses/gpl-2.0.php">GNU General Public License v2</a>. Please see source code and the docs directory for more details. This package and its contents are Copyright (c) <a href="https://www.phpbb.com/">phpBB Group</a>, All Rights Reserved.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -1,37 +1,39 @@
|
||||||
source source_phpbb_{SPHINX_ID}_main
|
source source_phpbb_{SPHINX_ID}_main
|
||||||
{
|
{
|
||||||
type = mysql #mysql or pgsql
|
type = mysql # mysql or pgsql
|
||||||
sql_host = localhost #SQL server host sphinx connects to
|
sql_host = localhost # SQL server host sphinx connects to
|
||||||
sql_user = username
|
sql_user = username
|
||||||
sql_pass = password
|
sql_pass = password
|
||||||
sql_db = db_name
|
sql_db = db_name
|
||||||
sql_port = 3306 #optional, default is 3306 for mysql and 5432 for pgsql
|
sql_port = 3306 # optional, default is 3306 for mysql and 5432 for pgsql
|
||||||
sql_query_pre = SET NAMES 'utf8'
|
sql_query_pre = SET NAMES 'utf8'
|
||||||
sql_query_pre = UPDATE phpbb_sphinx SET max_doc_id = MAX(post_id) WHERE counter_id = 1
|
sql_query_pre = UPDATE phpbb_sphinx SET max_doc_id = (SELECT MAX(post_id) FROM phpbb_posts) WHERE counter_id = 1
|
||||||
sql_query_range = SELECT MIN(post_id), MAX(post_id) FROM phpbb_posts
|
sql_query_range = SELECT MIN(post_id), MAX(post_id) FROM phpbb_posts
|
||||||
sql_range_step = 5000
|
sql_range_step = 5000
|
||||||
sql_query = SELECT
\
|
sql_query = SELECT \
|
||||||
p.post_id AS id,
\
|
p.post_id AS id, \
|
||||||
p.forum_id,
\
|
p.forum_id, \
|
||||||
p.topic_id,
\
|
p.topic_id, \
|
||||||
p.poster_id,
\
|
p.poster_id, \
|
||||||
CASE WHEN p.post_id = t.topic_first_post_id THEN 1 ELSE 0 END as topic_first_post,
\
|
p.post_visibility, \
|
||||||
p.post_time,
\
|
CASE WHEN p.post_id = t.topic_first_post_id THEN 1 ELSE 0 END as topic_first_post, \
|
||||||
p.post_subject,
\
|
p.post_time, \
|
||||||
p.post_subject as title,
\
|
p.post_subject, \
|
||||||
p.post_text as data,
\
|
p.post_subject as title, \
|
||||||
t.topic_last_post_time,
\
|
p.post_text as data, \
|
||||||
0 as deleted
\
|
t.topic_last_post_time, \
|
||||||
FROM phpbb_posts p, phpbb_topics t
\
|
0 as deleted\
|
||||||
WHERE
\
|
FROM phpbb_posts p, phpbb_topics t \
|
||||||
p.topic_id = t.topic_id
\
|
WHERE \
|
||||||
AND p.post_id >= $start AND p.post_id <= $end
|
p.topic_id = t.topic_id \
|
||||||
|
AND p.post_id >= $start AND p.post_id <= $end
|
||||||
sql_query_post =
|
sql_query_post =
|
||||||
sql_query_post_index = UPDATE phpbb_sphinx SET max_doc_id = $maxid WHERE counter_id = 1
|
sql_query_post_index = UPDATE phpbb_sphinx SET max_doc_id = $maxid WHERE counter_id = 1
|
||||||
sql_query_info = SELECT * FROM phpbb_posts WHERE post_id = $id
|
sql_query_info = SELECT * FROM phpbb_posts WHERE post_id = $id
|
||||||
sql_attr_uint = forum_id
|
sql_attr_uint = forum_id
|
||||||
sql_attr_uint = topic_id
|
sql_attr_uint = topic_id
|
||||||
sql_attr_uint = poster_id
|
sql_attr_uint = poster_id
|
||||||
|
sql_attr_uint = post_visibility
|
||||||
sql_attr_bool = topic_first_post
|
sql_attr_bool = topic_first_post
|
||||||
sql_attr_bool = deleted
|
sql_attr_bool = deleted
|
||||||
sql_attr_timestamp = post_time
|
sql_attr_timestamp = post_time
|
||||||
|
@ -40,24 +42,26 @@ source source_phpbb_{SPHINX_ID}_main
|
||||||
}
|
}
|
||||||
source source_phpbb_{SPHINX_ID}_delta : source_phpbb_{SPHINX_ID}_main
|
source source_phpbb_{SPHINX_ID}_delta : source_phpbb_{SPHINX_ID}_main
|
||||||
{
|
{
|
||||||
|
sql_query_pre =
|
||||||
sql_query_range =
|
sql_query_range =
|
||||||
sql_range_step =
|
sql_range_step =
|
||||||
sql_query = SELECT
\
|
sql_query = SELECT \
|
||||||
p.post_id AS id,
\
|
p.post_id AS id, \
|
||||||
p.forum_id,
\
|
p.forum_id, \
|
||||||
p.topic_id,
\
|
p.topic_id, \
|
||||||
p.poster_id,
\
|
p.poster_id, \
|
||||||
CASE WHEN p.post_id = t.topic_first_post_id THEN 1 ELSE 0 END as topic_first_post,
\
|
p.post_visibility, \
|
||||||
p.post_time,
\
|
CASE WHEN p.post_id = t.topic_first_post_id THEN 1 ELSE 0 END as topic_first_post, \
|
||||||
p.post_subject,
\
|
p.post_time, \
|
||||||
p.post_subject as title,
\
|
p.post_subject, \
|
||||||
p.post_text as data,
\
|
p.post_subject as title, \
|
||||||
t.topic_last_post_time,
\
|
p.post_text as data, \
|
||||||
0 as deleted
\
|
t.topic_last_post_time, \
|
||||||
FROM phpbb_posts p, phpbb_topics t
\
|
0 as deleted \
|
||||||
WHERE
\
|
FROM phpbb_posts p, phpbb_topics t \
|
||||||
p.topic_id = t.topic_id
\
|
WHERE \
|
||||||
AND p.post_id >= ( SELECT max_doc_id FROM phpbb_sphinx WHERE counter_id=1 )
|
p.topic_id = t.topic_id \
|
||||||
|
AND p.post_id >= ( SELECT max_doc_id FROM phpbb_sphinx WHERE counter_id=1 )
|
||||||
sql_query_pre =
|
sql_query_pre =
|
||||||
}
|
}
|
||||||
index index_phpbb_{SPHINX_ID}_main
|
index index_phpbb_{SPHINX_ID}_main
|
||||||
|
|
|
@ -41,9 +41,8 @@ if (isset($_GET['avatar']))
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
require($phpbb_root_path . 'includes/class_loader.' . $phpEx);
|
require($phpbb_root_path . 'phpbb/class_loader.' . $phpEx);
|
||||||
|
|
||||||
require($phpbb_root_path . 'includes/db/' . $dbms . '.' . $phpEx);
|
|
||||||
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_container.' . $phpEx);
|
require($phpbb_root_path . 'includes/functions_container.' . $phpEx);
|
||||||
|
@ -51,24 +50,13 @@ if (isset($_GET['avatar']))
|
||||||
require($phpbb_root_path . 'includes/utf/utf_tools.' . $phpEx);
|
require($phpbb_root_path . 'includes/utf/utf_tools.' . $phpEx);
|
||||||
|
|
||||||
// Setup class loader first
|
// Setup class loader first
|
||||||
$phpbb_class_loader = new phpbb_class_loader('phpbb_', "{$phpbb_root_path}includes/", ".$phpEx");
|
$phpbb_class_loader = new phpbb_class_loader('phpbb_', "{$phpbb_root_path}phpbb/", $phpEx);
|
||||||
$phpbb_class_loader->register();
|
$phpbb_class_loader->register();
|
||||||
$phpbb_class_loader_ext = new phpbb_class_loader('phpbb_ext_', "{$phpbb_root_path}ext/", ".$phpEx");
|
$phpbb_class_loader_ext = new phpbb_class_loader('phpbb_ext_', "{$phpbb_root_path}ext/", $phpEx);
|
||||||
$phpbb_class_loader_ext->register();
|
$phpbb_class_loader_ext->register();
|
||||||
|
|
||||||
// Set up container
|
// Set up container
|
||||||
$phpbb_container = phpbb_create_dumped_container_unless_debug(
|
$phpbb_container = phpbb_create_default_container($phpbb_root_path, $phpEx);
|
||||||
array(
|
|
||||||
new phpbb_di_extension_config($phpbb_root_path . 'config.' . $phpEx),
|
|
||||||
new phpbb_di_extension_core($phpbb_root_path),
|
|
||||||
),
|
|
||||||
array(
|
|
||||||
new phpbb_di_pass_collection_pass(),
|
|
||||||
new phpbb_di_pass_kernel_pass(),
|
|
||||||
),
|
|
||||||
$phpbb_root_path,
|
|
||||||
$phpEx
|
|
||||||
);
|
|
||||||
|
|
||||||
$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'));
|
||||||
|
@ -79,6 +67,7 @@ if (isset($_GET['avatar']))
|
||||||
$phpbb_dispatcher = $phpbb_container->get('dispatcher');
|
$phpbb_dispatcher = $phpbb_container->get('dispatcher');
|
||||||
$request = $phpbb_container->get('request');
|
$request = $phpbb_container->get('request');
|
||||||
$db = $phpbb_container->get('dbal.conn');
|
$db = $phpbb_container->get('dbal.conn');
|
||||||
|
$phpbb_log = $phpbb_container->get('log');
|
||||||
|
|
||||||
// Connect to DB
|
// Connect to DB
|
||||||
if (!@$db->sql_connect($dbhost, $dbuser, $dbpasswd, $dbname, $dbport, false, false))
|
if (!@$db->sql_connect($dbhost, $dbuser, $dbpasswd, $dbname, $dbport, false, false))
|
||||||
|
@ -100,6 +89,8 @@ if (isset($_GET['avatar']))
|
||||||
// worst-case default
|
// worst-case default
|
||||||
$browser = strtolower($request->header('User-Agent', 'msie 6.0'));
|
$browser = strtolower($request->header('User-Agent', 'msie 6.0'));
|
||||||
|
|
||||||
|
$phpbb_avatar_manager = $phpbb_container->get('avatar.manager');
|
||||||
|
|
||||||
$filename = request_var('avatar', '');
|
$filename = request_var('avatar', '');
|
||||||
$avatar_group = false;
|
$avatar_group = false;
|
||||||
$exit = false;
|
$exit = false;
|
||||||
|
@ -288,7 +279,7 @@ else if ($download_id)
|
||||||
phpbb_increment_downloads($db, $attachment['attach_id']);
|
phpbb_increment_downloads($db, $attachment['attach_id']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($display_cat == ATTACHMENT_CATEGORY_IMAGE && $mode === 'view' && (strpos($attachment['mimetype'], 'image') === 0) && ((strpos(strtolower($user->browser), 'msie') !== false) && (strpos(strtolower($user->browser), 'msie 8.0') === false)))
|
if ($display_cat == ATTACHMENT_CATEGORY_IMAGE && $mode === 'view' && (strpos($attachment['mimetype'], 'image') === 0) && (strpos(strtolower($user->browser), 'msie') !== false) && !phpbb_is_greater_ie_version($user->browser, 7))
|
||||||
{
|
{
|
||||||
wrap_img_in_html(append_sid($phpbb_root_path . 'download/file.' . $phpEx, 'id=' . $attachment['attach_id']), $attachment['real_filename']);
|
wrap_img_in_html(append_sid($phpbb_root_path . 'download/file.' . $phpEx, 'id=' . $attachment['attach_id']), $attachment['real_filename']);
|
||||||
file_gc();
|
file_gc();
|
||||||
|
|
1180
phpBB/feed.php
1180
phpBB/feed.php
File diff suppressed because it is too large
Load diff
|
@ -117,8 +117,8 @@ class acp_attachments
|
||||||
'attachment_quota' => array('lang' => 'ATTACH_QUOTA', 'validate' => 'string', 'type' => 'custom', 'method' => 'max_filesize', 'explain' => true),
|
'attachment_quota' => array('lang' => 'ATTACH_QUOTA', 'validate' => 'string', 'type' => 'custom', 'method' => 'max_filesize', 'explain' => true),
|
||||||
'max_filesize' => array('lang' => 'ATTACH_MAX_FILESIZE', 'validate' => 'string', 'type' => 'custom', 'method' => 'max_filesize', 'explain' => true),
|
'max_filesize' => array('lang' => 'ATTACH_MAX_FILESIZE', 'validate' => 'string', 'type' => 'custom', 'method' => 'max_filesize', 'explain' => true),
|
||||||
'max_filesize_pm' => array('lang' => 'ATTACH_MAX_PM_FILESIZE','validate' => 'string', 'type' => 'custom', 'method' => 'max_filesize', 'explain' => true),
|
'max_filesize_pm' => array('lang' => 'ATTACH_MAX_PM_FILESIZE','validate' => 'string', 'type' => 'custom', 'method' => 'max_filesize', 'explain' => true),
|
||||||
'max_attachments' => array('lang' => 'MAX_ATTACHMENTS', 'validate' => 'int', 'type' => 'text:3:3', 'explain' => false),
|
'max_attachments' => array('lang' => 'MAX_ATTACHMENTS', 'validate' => 'int:0:999', 'type' => 'number:0:999', 'explain' => false),
|
||||||
'max_attachments_pm' => array('lang' => 'MAX_ATTACHMENTS_PM', 'validate' => 'int', 'type' => 'text:3:3', 'explain' => false),
|
'max_attachments_pm' => array('lang' => 'MAX_ATTACHMENTS_PM', 'validate' => 'int:0:999', 'type' => 'number:0:999', 'explain' => false),
|
||||||
'secure_downloads' => array('lang' => 'SECURE_DOWNLOADS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
'secure_downloads' => array('lang' => 'SECURE_DOWNLOADS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
'secure_allow_deny' => array('lang' => 'SECURE_ALLOW_DENY', 'validate' => 'int', 'type' => 'custom', 'method' => 'select_allow_deny', 'explain' => true),
|
'secure_allow_deny' => array('lang' => 'SECURE_ALLOW_DENY', 'validate' => 'int', 'type' => 'custom', 'method' => 'select_allow_deny', 'explain' => true),
|
||||||
'secure_allow_empty_referer' => array('lang' => 'SECURE_EMPTY_REFERRER', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
'secure_allow_empty_referer' => array('lang' => 'SECURE_EMPTY_REFERRER', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
|
@ -128,11 +128,11 @@ class acp_attachments
|
||||||
'legend2' => $l_legend_cat_images,
|
'legend2' => $l_legend_cat_images,
|
||||||
'img_display_inlined' => array('lang' => 'DISPLAY_INLINED', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
'img_display_inlined' => array('lang' => 'DISPLAY_INLINED', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
'img_create_thumbnail' => array('lang' => 'CREATE_THUMBNAIL', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
'img_create_thumbnail' => array('lang' => 'CREATE_THUMBNAIL', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
'img_max_thumb_width' => array('lang' => 'MAX_THUMB_WIDTH', 'validate' => 'int', 'type' => 'text:7:15', 'explain' => true, 'append' => ' ' . $user->lang['PIXEL']),
|
'img_max_thumb_width' => array('lang' => 'MAX_THUMB_WIDTH', 'validate' => 'int:0:999999999999999', 'type' => 'number:0:999999999999999', 'explain' => true, 'append' => ' ' . $user->lang['PIXEL']),
|
||||||
'img_min_thumb_filesize' => array('lang' => 'MIN_THUMB_FILESIZE', 'validate' => 'int', 'type' => 'text:7:15', 'explain' => true, 'append' => ' ' . $user->lang['BYTES']),
|
'img_min_thumb_filesize' => array('lang' => 'MIN_THUMB_FILESIZE', 'validate' => 'int:0:999999999999999', 'type' => 'number:0:999999999999999', 'explain' => true, 'append' => ' ' . $user->lang['BYTES']),
|
||||||
'img_imagick' => array('lang' => 'IMAGICK_PATH', 'validate' => 'string', 'type' => 'text:20:200', 'explain' => true, 'append' => ' <span>[ <a href="' . $this->u_action . '&action=imgmagick">' . $user->lang['SEARCH_IMAGICK'] . '</a> ]</span>'),
|
'img_imagick' => array('lang' => 'IMAGICK_PATH', 'validate' => 'string', 'type' => 'text:20:200', 'explain' => true, 'append' => ' <span>[ <a href="' . $this->u_action . '&action=imgmagick">' . $user->lang['SEARCH_IMAGICK'] . '</a> ]</span>'),
|
||||||
'img_max' => array('lang' => 'MAX_IMAGE_SIZE', 'validate' => 'int', 'type' => 'dimension:3:4', 'explain' => true, 'append' => ' ' . $user->lang['PIXEL']),
|
'img_max' => array('lang' => 'MAX_IMAGE_SIZE', 'validate' => 'int:0:9999', 'type' => 'dimension:0:9999', 'explain' => true, 'append' => ' ' . $user->lang['PIXEL']),
|
||||||
'img_link' => array('lang' => 'IMAGE_LINK_SIZE', 'validate' => 'int', 'type' => 'dimension:3:4', 'explain' => true, 'append' => ' ' . $user->lang['PIXEL']),
|
'img_link' => array('lang' => 'IMAGE_LINK_SIZE', 'validate' => 'int:0:9999', 'type' => 'dimension:0:9999', 'explain' => true, 'append' => ' ' . $user->lang['PIXEL']),
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -1203,8 +1203,8 @@ class acp_attachments
|
||||||
|
|
||||||
// Just get the files
|
// Just get the files
|
||||||
$sql = 'SELECT a.*, u.username, u.user_colour, t.topic_title
|
$sql = 'SELECT a.*, u.username, u.user_colour, t.topic_title
|
||||||
FROM ' . ATTACHMENTS_TABLE . ' a
|
FROM ' . ATTACHMENTS_TABLE . ' a
|
||||||
LEFT JOIN ' . USERS_TABLE . ' u ON (u.user_id = a.poster_id)
|
LEFT JOIN ' . USERS_TABLE . ' u ON (u.user_id = a.poster_id)
|
||||||
LEFT JOIN ' . TOPICS_TABLE . " t ON (a.topic_id = t.topic_id)
|
LEFT JOIN ' . TOPICS_TABLE . " t ON (a.topic_id = t.topic_id)
|
||||||
WHERE a.is_orphan = 0
|
WHERE a.is_orphan = 0
|
||||||
$limit_filetime
|
$limit_filetime
|
||||||
|
@ -1670,7 +1670,8 @@ class acp_attachments
|
||||||
$size_var = $filesize['si_identifier'];
|
$size_var = $filesize['si_identifier'];
|
||||||
$value = $filesize['value'];
|
$value = $filesize['value'];
|
||||||
|
|
||||||
return '<input type="text" id="' . $key . '" size="8" maxlength="15" name="config[' . $key . ']" value="' . $value . '" /> <select name="' . $key . '">' . size_select_options($size_var) . '</select>';
|
// size="8" and maxlength="15" attributes as a fallback for browsers that do not support type="number" yet.
|
||||||
|
return '<input type="number" id="' . $key . '" size="8" maxlength="15" min="0" name="config[' . $key . ']" value="' . $value . '" /> <select name="' . $key . '">' . size_select_options($size_var) . '</select>';
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -112,8 +112,8 @@ class acp_bbcodes
|
||||||
{
|
{
|
||||||
$template->assign_block_vars('token', array(
|
$template->assign_block_vars('token', array(
|
||||||
'TOKEN' => '{' . $token . '}',
|
'TOKEN' => '{' . $token . '}',
|
||||||
'EXPLAIN' => $token_explain)
|
'EXPLAIN' => ($token === 'LOCAL_URL') ? sprintf($token_explain, generate_board_url() . '/') : $token_explain,
|
||||||
);
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
@ -347,6 +347,9 @@ class acp_bbcodes
|
||||||
'LOCAL_URL' => array(
|
'LOCAL_URL' => array(
|
||||||
'!(' . str_replace(array('!', '\#'), array('\!', '#'), get_preg_expression('relative_url')) . ')!e' => "\$this->bbcode_specialchars('$1')"
|
'!(' . str_replace(array('!', '\#'), array('\!', '#'), get_preg_expression('relative_url')) . ')!e' => "\$this->bbcode_specialchars('$1')"
|
||||||
),
|
),
|
||||||
|
'RELATIVE_URL' => array(
|
||||||
|
'!(' . str_replace(array('!', '\#'), array('\!', '#'), get_preg_expression('relative_url')) . ')!e' => "\$this->bbcode_specialchars('$1')"
|
||||||
|
),
|
||||||
'EMAIL' => array(
|
'EMAIL' => array(
|
||||||
'!(' . get_preg_expression('email') . ')!ie' => "\$this->bbcode_specialchars('$1')"
|
'!(' . get_preg_expression('email') . ')!ie' => "\$this->bbcode_specialchars('$1')"
|
||||||
),
|
),
|
||||||
|
@ -373,6 +376,7 @@ class acp_bbcodes
|
||||||
$sp_tokens = array(
|
$sp_tokens = array(
|
||||||
'URL' => '(?i)((?:' . str_replace(array('!', '\#'), array('\!', '#'), get_preg_expression('url')) . ')|(?:' . str_replace(array('!', '\#'), array('\!', '#'), get_preg_expression('www_url')) . '))(?-i)',
|
'URL' => '(?i)((?:' . str_replace(array('!', '\#'), array('\!', '#'), get_preg_expression('url')) . ')|(?:' . str_replace(array('!', '\#'), array('\!', '#'), get_preg_expression('www_url')) . '))(?-i)',
|
||||||
'LOCAL_URL' => '(?i)(' . str_replace(array('!', '\#'), array('\!', '#'), get_preg_expression('relative_url')) . ')(?-i)',
|
'LOCAL_URL' => '(?i)(' . str_replace(array('!', '\#'), array('\!', '#'), get_preg_expression('relative_url')) . ')(?-i)',
|
||||||
|
'RELATIVE_URL' => '(?i)(' . str_replace(array('!', '\#'), array('\!', '#'), get_preg_expression('relative_url')) . ')(?-i)',
|
||||||
'EMAIL' => '(' . get_preg_expression('email') . ')',
|
'EMAIL' => '(' . get_preg_expression('email') . ')',
|
||||||
'TEXT' => '(.*?)',
|
'TEXT' => '(.*?)',
|
||||||
'SIMPLETEXT' => '([a-zA-Z0-9-+.,_ ]+)',
|
'SIMPLETEXT' => '([a-zA-Z0-9-+.,_ ]+)',
|
||||||
|
@ -429,7 +433,11 @@ class acp_bbcodes
|
||||||
$fp_replace = str_replace($token, $replace, $fp_replace);
|
$fp_replace = str_replace($token, $replace, $fp_replace);
|
||||||
|
|
||||||
$sp_match = str_replace(preg_quote($token, '!'), $sp_tokens[$token_type], $sp_match);
|
$sp_match = str_replace(preg_quote($token, '!'), $sp_tokens[$token_type], $sp_match);
|
||||||
$sp_replace = str_replace($token, '${' . ($n + 1) . '}', $sp_replace);
|
|
||||||
|
// Prepend the board url to local relative links
|
||||||
|
$replace_prepend = ($token_type === 'LOCAL_URL') ? generate_board_url() . '/' : '';
|
||||||
|
|
||||||
|
$sp_replace = str_replace($token, $replace_prepend . '${' . ($n + 1) . '}', $sp_replace);
|
||||||
}
|
}
|
||||||
|
|
||||||
$fp_match = '!' . $fp_match . '!' . $modifiers;
|
$fp_match = '!' . $fp_match . '!' . $modifiers;
|
||||||
|
|
|
@ -28,7 +28,7 @@ class acp_board
|
||||||
{
|
{
|
||||||
global $db, $user, $auth, $template;
|
global $db, $user, $auth, $template;
|
||||||
global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;
|
global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;
|
||||||
global $cache;
|
global $cache, $phpbb_container;
|
||||||
|
|
||||||
$user->add_lang('acp/board');
|
$user->add_lang('acp/board');
|
||||||
|
|
||||||
|
@ -53,8 +53,9 @@ class acp_board
|
||||||
'legend1' => 'ACP_BOARD_SETTINGS',
|
'legend1' => 'ACP_BOARD_SETTINGS',
|
||||||
'sitename' => array('lang' => 'SITE_NAME', 'validate' => 'string', 'type' => 'text:40:255', 'explain' => false),
|
'sitename' => array('lang' => 'SITE_NAME', 'validate' => 'string', 'type' => 'text:40:255', 'explain' => false),
|
||||||
'site_desc' => array('lang' => 'SITE_DESC', 'validate' => 'string', 'type' => 'text:40:255', 'explain' => false),
|
'site_desc' => array('lang' => 'SITE_DESC', 'validate' => 'string', 'type' => 'text:40:255', 'explain' => false),
|
||||||
'site_home_url' => array('lang' => 'SITE_HOME_URL', 'validate' => 'string', 'type' => 'text:40:255', 'explain' => true),
|
'site_home_url' => array('lang' => 'SITE_HOME_URL', 'validate' => 'string', 'type' => 'url:40:255', 'explain' => true),
|
||||||
'site_home_text' => array('lang' => 'SITE_HOME_TEXT', 'validate' => 'string', 'type' => 'text:40:255', 'explain' => true),
|
'site_home_text' => array('lang' => 'SITE_HOME_TEXT', 'validate' => 'string', 'type' => 'text:40:255', 'explain' => true),
|
||||||
|
'board_index_text' => array('lang' => 'BOARD_INDEX_TEXT', 'validate' => 'string', 'type' => 'text:40:255', 'explain' => true),
|
||||||
'board_disable' => array('lang' => 'DISABLE_BOARD', 'validate' => 'bool', 'type' => 'custom', 'method' => 'board_disable', 'explain' => true),
|
'board_disable' => array('lang' => 'DISABLE_BOARD', 'validate' => 'bool', 'type' => 'custom', 'method' => 'board_disable', 'explain' => true),
|
||||||
'board_disable_msg' => false,
|
'board_disable_msg' => false,
|
||||||
'default_lang' => array('lang' => 'DEFAULT_LANGUAGE', 'validate' => 'lang', 'type' => 'select', 'function' => 'language_select', 'params' => array('{CONFIG_VALUE}'), 'explain' => false),
|
'default_lang' => array('lang' => 'DEFAULT_LANGUAGE', 'validate' => 'lang', 'type' => 'select', 'function' => 'language_select', 'params' => array('{CONFIG_VALUE}'), 'explain' => false),
|
||||||
|
@ -64,7 +65,7 @@ class acp_board
|
||||||
'override_user_style' => array('lang' => 'OVERRIDE_STYLE', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
'override_user_style' => array('lang' => 'OVERRIDE_STYLE', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
|
|
||||||
'legend2' => 'WARNINGS',
|
'legend2' => 'WARNINGS',
|
||||||
'warnings_expire_days' => array('lang' => 'WARNINGS_EXPIRE', 'validate' => 'int', 'type' => 'text:3:4', 'explain' => true, 'append' => ' ' . $user->lang['DAYS']),
|
'warnings_expire_days' => array('lang' => 'WARNINGS_EXPIRE', 'validate' => 'int:0:9999', 'type' => 'number:0:9999', 'explain' => true, 'append' => ' ' . $user->lang['DAYS']),
|
||||||
|
|
||||||
'legend3' => 'ACP_SUBMIT_CHANGES',
|
'legend3' => 'ACP_SUBMIT_CHANGES',
|
||||||
)
|
)
|
||||||
|
@ -107,6 +108,23 @@ class acp_board
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'avatar':
|
case 'avatar':
|
||||||
|
$phpbb_avatar_manager = $phpbb_container->get('avatar.manager');
|
||||||
|
$avatar_drivers = $phpbb_avatar_manager->get_all_drivers();
|
||||||
|
|
||||||
|
$avatar_vars = array();
|
||||||
|
foreach ($avatar_drivers as $current_driver)
|
||||||
|
{
|
||||||
|
$driver = $phpbb_avatar_manager->get_driver($current_driver, false);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* First grab the settings for enabling/disabling the avatar
|
||||||
|
* driver and afterwards grab additional settings the driver
|
||||||
|
* might have.
|
||||||
|
*/
|
||||||
|
$avatar_vars += $phpbb_avatar_manager->get_avatar_settings($driver);
|
||||||
|
$avatar_vars += $driver->prepare_form_acp($user);
|
||||||
|
}
|
||||||
|
|
||||||
$display_vars = array(
|
$display_vars = array(
|
||||||
'title' => 'ACP_AVATAR_SETTINGS',
|
'title' => 'ACP_AVATAR_SETTINGS',
|
||||||
'vars' => array(
|
'vars' => array(
|
||||||
|
@ -118,17 +136,15 @@ class acp_board
|
||||||
'avatar_max_height' => array('lang' => 'MAX_AVATAR_SIZE', 'validate' => 'int:0', 'type' => false, 'method' => false, 'explain' => false),
|
'avatar_max_height' => array('lang' => 'MAX_AVATAR_SIZE', 'validate' => 'int:0', 'type' => false, 'method' => false, 'explain' => false),
|
||||||
|
|
||||||
'allow_avatar' => array('lang' => 'ALLOW_AVATARS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
'allow_avatar' => array('lang' => 'ALLOW_AVATARS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
'allow_avatar_local' => array('lang' => 'ALLOW_LOCAL', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
|
'avatar_min' => array('lang' => 'MIN_AVATAR_SIZE', 'validate' => 'int:0', 'type' => 'dimension:0', 'explain' => true, 'append' => ' ' . $user->lang['PIXEL']),
|
||||||
'allow_avatar_remote' => array('lang' => 'ALLOW_REMOTE', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
'avatar_max' => array('lang' => 'MAX_AVATAR_SIZE', 'validate' => 'int:0', 'type' => 'dimension:0', 'explain' => true, 'append' => ' ' . $user->lang['PIXEL']),
|
||||||
'allow_avatar_upload' => array('lang' => 'ALLOW_UPLOAD', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
|
|
||||||
'allow_avatar_remote_upload'=> array('lang' => 'ALLOW_REMOTE_UPLOAD', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
|
||||||
'avatar_filesize' => array('lang' => 'MAX_FILESIZE', 'validate' => 'int:0', 'type' => 'text:4:10', 'explain' => true, 'append' => ' ' . $user->lang['BYTES']),
|
|
||||||
'avatar_min' => array('lang' => 'MIN_AVATAR_SIZE', 'validate' => 'int:0', 'type' => 'dimension:3:4', 'explain' => true, 'append' => ' ' . $user->lang['PIXEL']),
|
|
||||||
'avatar_max' => array('lang' => 'MAX_AVATAR_SIZE', 'validate' => 'int:0', 'type' => 'dimension:3:4', 'explain' => true, 'append' => ' ' . $user->lang['PIXEL']),
|
|
||||||
'avatar_path' => array('lang' => 'AVATAR_STORAGE_PATH', 'validate' => 'rwpath', 'type' => 'text:20:255', 'explain' => true),
|
|
||||||
'avatar_gallery_path' => array('lang' => 'AVATAR_GALLERY_PATH', 'validate' => 'rpath', 'type' => 'text:20:255', 'explain' => true),
|
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (!empty($avatar_vars))
|
||||||
|
{
|
||||||
|
$display_vars['vars'] += $avatar_vars;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'message':
|
case 'message':
|
||||||
|
@ -138,11 +154,11 @@ class acp_board
|
||||||
'vars' => array(
|
'vars' => array(
|
||||||
'legend1' => 'GENERAL_SETTINGS',
|
'legend1' => 'GENERAL_SETTINGS',
|
||||||
'allow_privmsg' => array('lang' => 'BOARD_PM', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
'allow_privmsg' => array('lang' => 'BOARD_PM', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
'pm_max_boxes' => array('lang' => 'BOXES_MAX', 'validate' => 'int:0', 'type' => 'text:4:4', 'explain' => true),
|
'pm_max_boxes' => array('lang' => 'BOXES_MAX', 'validate' => 'int:0:9999', 'type' => 'number:0:9999', 'explain' => true),
|
||||||
'pm_max_msgs' => array('lang' => 'BOXES_LIMIT', 'validate' => 'int:0', 'type' => 'text:4:4', 'explain' => true),
|
'pm_max_msgs' => array('lang' => 'BOXES_LIMIT', 'validate' => 'int:0:9999', 'type' => 'number:0:9999', 'explain' => true),
|
||||||
'full_folder_action' => array('lang' => 'FULL_FOLDER_ACTION', 'validate' => 'int', 'type' => 'select', 'method' => 'full_folder_select', 'explain' => true),
|
'full_folder_action' => array('lang' => 'FULL_FOLDER_ACTION', 'validate' => 'int', 'type' => 'select', 'method' => 'full_folder_select', 'explain' => true),
|
||||||
'pm_edit_time' => array('lang' => 'PM_EDIT_TIME', 'validate' => 'int:0', 'type' => 'text:5:5', 'explain' => true, 'append' => ' ' . $user->lang['MINUTES']),
|
'pm_edit_time' => array('lang' => 'PM_EDIT_TIME', 'validate' => 'int:0:99999', 'type' => 'number:0:99999', 'explain' => true, 'append' => ' ' . $user->lang['MINUTES']),
|
||||||
'pm_max_recipients' => array('lang' => 'PM_MAX_RECIPIENTS', 'validate' => 'int:0', 'type' => 'text:5:5', 'explain' => true),
|
'pm_max_recipients' => array('lang' => 'PM_MAX_RECIPIENTS', 'validate' => 'int:0:99999', 'type' => 'number:0:99999', 'explain' => true),
|
||||||
|
|
||||||
'legend2' => 'GENERAL_OPTIONS',
|
'legend2' => 'GENERAL_OPTIONS',
|
||||||
'allow_mass_pm' => array('lang' => 'ALLOW_MASS_PM', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
|
'allow_mass_pm' => array('lang' => 'ALLOW_MASS_PM', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
|
||||||
|
@ -179,24 +195,24 @@ class acp_board
|
||||||
|
|
||||||
'legend2' => 'POSTING',
|
'legend2' => 'POSTING',
|
||||||
'bump_type' => false,
|
'bump_type' => false,
|
||||||
'edit_time' => array('lang' => 'EDIT_TIME', 'validate' => 'int:0', 'type' => 'text:5:5', 'explain' => true, 'append' => ' ' . $user->lang['MINUTES']),
|
'edit_time' => array('lang' => 'EDIT_TIME', 'validate' => 'int:0:99999', 'type' => 'number:0:99999', 'explain' => true, 'append' => ' ' . $user->lang['MINUTES']),
|
||||||
'delete_time' => array('lang' => 'DELETE_TIME', 'validate' => 'int:0', 'type' => 'text:5:5', 'explain' => true, 'append' => ' ' . $user->lang['MINUTES']),
|
'delete_time' => array('lang' => 'DELETE_TIME', 'validate' => 'int:0:99999', 'type' => 'number:0:99999', 'explain' => true, 'append' => ' ' . $user->lang['MINUTES']),
|
||||||
'display_last_edited' => array('lang' => 'DISPLAY_LAST_EDITED', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
'display_last_edited' => array('lang' => 'DISPLAY_LAST_EDITED', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
'flood_interval' => array('lang' => 'FLOOD_INTERVAL', 'validate' => 'int:0', 'type' => 'text:3:10', 'explain' => true, 'append' => ' ' . $user->lang['SECONDS']),
|
'flood_interval' => array('lang' => 'FLOOD_INTERVAL', 'validate' => 'int:0:9999999999', 'type' => 'number:0:9999999999', 'explain' => true, 'append' => ' ' . $user->lang['SECONDS']),
|
||||||
'bump_interval' => array('lang' => 'BUMP_INTERVAL', 'validate' => 'int:0', 'type' => 'custom', 'method' => 'bump_interval', 'explain' => true),
|
'bump_interval' => array('lang' => 'BUMP_INTERVAL', 'validate' => 'int:0', 'type' => 'custom', 'method' => 'bump_interval', 'explain' => true),
|
||||||
'topics_per_page' => array('lang' => 'TOPICS_PER_PAGE', 'validate' => 'int:1', 'type' => 'text:3:4', 'explain' => false),
|
'topics_per_page' => array('lang' => 'TOPICS_PER_PAGE', 'validate' => 'int:1:9999', 'type' => 'number:1:9999', 'explain' => false),
|
||||||
'posts_per_page' => array('lang' => 'POSTS_PER_PAGE', 'validate' => 'int:1', 'type' => 'text:3:4', 'explain' => false),
|
'posts_per_page' => array('lang' => 'POSTS_PER_PAGE', 'validate' => 'int:1:9999', 'type' => 'number:1:9999', 'explain' => false),
|
||||||
'smilies_per_page' => array('lang' => 'SMILIES_PER_PAGE', 'validate' => 'int:1', 'type' => 'text:3:4', 'explain' => false),
|
'smilies_per_page' => array('lang' => 'SMILIES_PER_PAGE', 'validate' => 'int:1:9999', 'type' => 'number:1:9999', 'explain' => false),
|
||||||
'hot_threshold' => array('lang' => 'HOT_THRESHOLD', 'validate' => 'int:0', 'type' => 'text:3:4', 'explain' => true),
|
'hot_threshold' => array('lang' => 'HOT_THRESHOLD', 'validate' => 'int:0:9999', 'type' => 'number:0:9999', 'explain' => true),
|
||||||
'max_poll_options' => array('lang' => 'MAX_POLL_OPTIONS', 'validate' => 'int:2:127', 'type' => 'text:4:4', 'explain' => false),
|
'max_poll_options' => array('lang' => 'MAX_POLL_OPTIONS', 'validate' => 'int:2:127', 'type' => 'number:2:127', 'explain' => false),
|
||||||
'max_post_chars' => array('lang' => 'CHAR_LIMIT', 'validate' => 'int:0', 'type' => 'text:4:6', 'explain' => true),
|
'max_post_chars' => array('lang' => 'CHAR_LIMIT', 'validate' => 'int:0:999999', 'type' => 'number:0:999999', 'explain' => true),
|
||||||
'min_post_chars' => array('lang' => 'MIN_CHAR_LIMIT', 'validate' => 'int:1', 'type' => 'text:4:6', 'explain' => true),
|
'min_post_chars' => array('lang' => 'MIN_CHAR_LIMIT', 'validate' => 'int:1:999999', 'type' => 'number:1:999999', 'explain' => true),
|
||||||
'max_post_smilies' => array('lang' => 'SMILIES_LIMIT', 'validate' => 'int:0', 'type' => 'text:4:4', 'explain' => true),
|
'max_post_smilies' => array('lang' => 'SMILIES_LIMIT', 'validate' => 'int:0:9999', 'type' => 'number:0:9999', 'explain' => true),
|
||||||
'max_post_urls' => array('lang' => 'MAX_POST_URLS', 'validate' => 'int:0', 'type' => 'text:5:4', 'explain' => true),
|
'max_post_urls' => array('lang' => 'MAX_POST_URLS', 'validate' => 'int:0:9999', 'type' => 'number:0:9999', 'explain' => true),
|
||||||
'max_post_font_size' => array('lang' => 'MAX_POST_FONT_SIZE', 'validate' => 'int:0', 'type' => 'text:5:4', 'explain' => true, 'append' => ' %'),
|
'max_post_font_size' => array('lang' => 'MAX_POST_FONT_SIZE', 'validate' => 'int:0:9999', 'type' => 'number:0:9999', 'explain' => true, 'append' => ' %'),
|
||||||
'max_quote_depth' => array('lang' => 'QUOTE_DEPTH_LIMIT', 'validate' => 'int:0', 'type' => 'text:4:4', 'explain' => true),
|
'max_quote_depth' => array('lang' => 'QUOTE_DEPTH_LIMIT', 'validate' => 'int:0:9999', 'type' => 'number:0:9999', 'explain' => true),
|
||||||
'max_post_img_width' => array('lang' => 'MAX_POST_IMG_WIDTH', 'validate' => 'int:0', 'type' => 'text:5:4', 'explain' => true, 'append' => ' ' . $user->lang['PIXEL']),
|
'max_post_img_width' => array('lang' => 'MAX_POST_IMG_WIDTH', 'validate' => 'int:0:9999', 'type' => 'number:0:9999', 'explain' => true, 'append' => ' ' . $user->lang['PIXEL']),
|
||||||
'max_post_img_height' => array('lang' => 'MAX_POST_IMG_HEIGHT', 'validate' => 'int:0', 'type' => 'text:5:4', 'explain' => true, 'append' => ' ' . $user->lang['PIXEL']),
|
'max_post_img_height' => array('lang' => 'MAX_POST_IMG_HEIGHT', 'validate' => 'int:0:9999', 'type' => 'number:0:9999', 'explain' => true, 'append' => ' ' . $user->lang['PIXEL']),
|
||||||
|
|
||||||
'legend3' => 'ACP_SUBMIT_CHANGES',
|
'legend3' => 'ACP_SUBMIT_CHANGES',
|
||||||
)
|
)
|
||||||
|
@ -216,12 +232,12 @@ class acp_board
|
||||||
'allow_sig_links' => array('lang' => 'ALLOW_SIG_LINKS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
'allow_sig_links' => array('lang' => 'ALLOW_SIG_LINKS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
|
|
||||||
'legend2' => 'GENERAL_SETTINGS',
|
'legend2' => 'GENERAL_SETTINGS',
|
||||||
'max_sig_chars' => array('lang' => 'MAX_SIG_LENGTH', 'validate' => 'int:0', 'type' => 'text:5:4', 'explain' => true),
|
'max_sig_chars' => array('lang' => 'MAX_SIG_LENGTH', 'validate' => 'int:0:9999', 'type' => 'number:0:9999', 'explain' => true),
|
||||||
'max_sig_urls' => array('lang' => 'MAX_SIG_URLS', 'validate' => 'int:0', 'type' => 'text:5:4', 'explain' => true),
|
'max_sig_urls' => array('lang' => 'MAX_SIG_URLS', 'validate' => 'int:0:9999', 'type' => 'number:0:9999', 'explain' => true),
|
||||||
'max_sig_font_size' => array('lang' => 'MAX_SIG_FONT_SIZE', 'validate' => 'int:0', 'type' => 'text:5:4', 'explain' => true, 'append' => ' %'),
|
'max_sig_font_size' => array('lang' => 'MAX_SIG_FONT_SIZE', 'validate' => 'int:0:9999', 'type' => 'number:0:9999', 'explain' => true, 'append' => ' %'),
|
||||||
'max_sig_smilies' => array('lang' => 'MAX_SIG_SMILIES', 'validate' => 'int:0', 'type' => 'text:5:4', 'explain' => true),
|
'max_sig_smilies' => array('lang' => 'MAX_SIG_SMILIES', 'validate' => 'int:0:9999', 'type' => 'number:0:9999', 'explain' => true),
|
||||||
'max_sig_img_width' => array('lang' => 'MAX_SIG_IMG_WIDTH', 'validate' => 'int:0', 'type' => 'text:5:4', 'explain' => true, 'append' => ' ' . $user->lang['PIXEL']),
|
'max_sig_img_width' => array('lang' => 'MAX_SIG_IMG_WIDTH', 'validate' => 'int:0:9999', 'type' => 'number:0:9999', 'explain' => true, 'append' => ' ' . $user->lang['PIXEL']),
|
||||||
'max_sig_img_height' => array('lang' => 'MAX_SIG_IMG_HEIGHT', 'validate' => 'int:0', 'type' => 'text:5:4', 'explain' => true, 'append' => ' ' . $user->lang['PIXEL']),
|
'max_sig_img_height' => array('lang' => 'MAX_SIG_IMG_HEIGHT', 'validate' => 'int:0:9999', 'type' => 'number:0:9999', 'explain' => true, 'append' => ' ' . $user->lang['PIXEL']),
|
||||||
|
|
||||||
'legend3' => 'ACP_SUBMIT_CHANGES',
|
'legend3' => 'ACP_SUBMIT_CHANGES',
|
||||||
)
|
)
|
||||||
|
@ -237,20 +253,20 @@ class acp_board
|
||||||
'max_pass_chars' => array('lang' => 'PASSWORD_LENGTH', 'validate' => 'int:8:255', 'type' => false, 'method' => false, 'explain' => false,),
|
'max_pass_chars' => array('lang' => 'PASSWORD_LENGTH', 'validate' => 'int:8:255', 'type' => false, 'method' => false, 'explain' => false,),
|
||||||
|
|
||||||
'require_activation' => array('lang' => 'ACC_ACTIVATION', 'validate' => 'int', 'type' => 'select', 'method' => 'select_acc_activation', 'explain' => true),
|
'require_activation' => array('lang' => 'ACC_ACTIVATION', 'validate' => 'int', 'type' => 'select', 'method' => 'select_acc_activation', 'explain' => true),
|
||||||
'new_member_post_limit' => array('lang' => 'NEW_MEMBER_POST_LIMIT', 'validate' => 'int:0:255', 'type' => 'text:4:4', 'explain' => true, 'append' => ' ' . $user->lang['POSTS']),
|
'new_member_post_limit' => array('lang' => 'NEW_MEMBER_POST_LIMIT', 'validate' => 'int:0:255', 'type' => 'number:0:255', 'explain' => true, 'append' => ' ' . $user->lang['POSTS']),
|
||||||
'new_member_group_default'=> array('lang' => 'NEW_MEMBER_GROUP_DEFAULT', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
'new_member_group_default'=> array('lang' => 'NEW_MEMBER_GROUP_DEFAULT', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
'min_name_chars' => array('lang' => 'USERNAME_LENGTH', 'validate' => 'int:1', 'type' => 'custom:5:180', 'method' => 'username_length', 'explain' => true),
|
'min_name_chars' => array('lang' => 'USERNAME_LENGTH', 'validate' => 'int:1', 'type' => 'custom:5:180', 'method' => 'username_length', 'explain' => true),
|
||||||
'min_pass_chars' => array('lang' => 'PASSWORD_LENGTH', 'validate' => 'int:1', 'type' => 'custom', 'method' => 'password_length', 'explain' => true),
|
'min_pass_chars' => array('lang' => 'PASSWORD_LENGTH', 'validate' => 'int:1', 'type' => 'custom', 'method' => 'password_length', 'explain' => true),
|
||||||
'allow_name_chars' => array('lang' => 'USERNAME_CHARS', 'validate' => 'string', 'type' => 'select', 'method' => 'select_username_chars', 'explain' => true),
|
'allow_name_chars' => array('lang' => 'USERNAME_CHARS', 'validate' => 'string', 'type' => 'select', 'method' => 'select_username_chars', 'explain' => true),
|
||||||
'pass_complex' => array('lang' => 'PASSWORD_TYPE', 'validate' => 'string', 'type' => 'select', 'method' => 'select_password_chars', 'explain' => true),
|
'pass_complex' => array('lang' => 'PASSWORD_TYPE', 'validate' => 'string', 'type' => 'select', 'method' => 'select_password_chars', 'explain' => true),
|
||||||
'chg_passforce' => array('lang' => 'FORCE_PASS_CHANGE', 'validate' => 'int:0', 'type' => 'text:3:3', 'explain' => true, 'append' => ' ' . $user->lang['DAYS']),
|
'chg_passforce' => array('lang' => 'FORCE_PASS_CHANGE', 'validate' => 'int:0:999', 'type' => 'number:0:999', 'explain' => true, 'append' => ' ' . $user->lang['DAYS']),
|
||||||
|
|
||||||
'legend2' => 'GENERAL_OPTIONS',
|
'legend2' => 'GENERAL_OPTIONS',
|
||||||
'allow_namechange' => array('lang' => 'ALLOW_NAME_CHANGE', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
|
'allow_namechange' => array('lang' => 'ALLOW_NAME_CHANGE', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
|
||||||
'allow_emailreuse' => array('lang' => 'ALLOW_EMAIL_REUSE', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
'allow_emailreuse' => array('lang' => 'ALLOW_EMAIL_REUSE', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
'enable_confirm' => array('lang' => 'VISUAL_CONFIRM_REG', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
'enable_confirm' => array('lang' => 'VISUAL_CONFIRM_REG', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
'max_login_attempts' => array('lang' => 'MAX_LOGIN_ATTEMPTS', 'validate' => 'int:0', 'type' => 'text:3:3', 'explain' => true),
|
'max_login_attempts' => array('lang' => 'MAX_LOGIN_ATTEMPTS', 'validate' => 'int:0:999', 'type' => 'number:0:999', 'explain' => true),
|
||||||
'max_reg_attempts' => array('lang' => 'REG_LIMIT', 'validate' => 'int:0', 'type' => 'text:4:4', 'explain' => true),
|
'max_reg_attempts' => array('lang' => 'REG_LIMIT', 'validate' => 'int:0:9999', 'type' => 'number:0:9999', 'explain' => true),
|
||||||
|
|
||||||
'legend3' => 'COPPA',
|
'legend3' => 'COPPA',
|
||||||
'coppa_enable' => array('lang' => 'ENABLE_COPPA', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
'coppa_enable' => array('lang' => 'ENABLE_COPPA', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
|
@ -272,13 +288,13 @@ class acp_board
|
||||||
'feed_http_auth' => array('lang' => 'ACP_FEED_HTTP_AUTH', 'validate' => 'bool', 'type' => 'radio:enabled_disabled', 'explain' => true),
|
'feed_http_auth' => array('lang' => 'ACP_FEED_HTTP_AUTH', 'validate' => 'bool', 'type' => 'radio:enabled_disabled', 'explain' => true),
|
||||||
|
|
||||||
'legend2' => 'ACP_FEED_POST_BASED',
|
'legend2' => 'ACP_FEED_POST_BASED',
|
||||||
'feed_limit_post' => array('lang' => 'ACP_FEED_LIMIT', 'validate' => 'int:5', 'type' => 'text:3:4', 'explain' => true),
|
'feed_limit_post' => array('lang' => 'ACP_FEED_LIMIT', 'validate' => 'int:5:9999', 'type' => 'number:5:9999', 'explain' => true),
|
||||||
'feed_overall' => array('lang' => 'ACP_FEED_OVERALL', 'validate' => 'bool', 'type' => 'radio:enabled_disabled', 'explain' => true ),
|
'feed_overall' => array('lang' => 'ACP_FEED_OVERALL', 'validate' => 'bool', 'type' => 'radio:enabled_disabled', 'explain' => true ),
|
||||||
'feed_forum' => array('lang' => 'ACP_FEED_FORUM', 'validate' => 'bool', 'type' => 'radio:enabled_disabled', 'explain' => true ),
|
'feed_forum' => array('lang' => 'ACP_FEED_FORUM', 'validate' => 'bool', 'type' => 'radio:enabled_disabled', 'explain' => true ),
|
||||||
'feed_topic' => array('lang' => 'ACP_FEED_TOPIC', 'validate' => 'bool', 'type' => 'radio:enabled_disabled', 'explain' => true ),
|
'feed_topic' => array('lang' => 'ACP_FEED_TOPIC', 'validate' => 'bool', 'type' => 'radio:enabled_disabled', 'explain' => true ),
|
||||||
|
|
||||||
'legend3' => 'ACP_FEED_TOPIC_BASED',
|
'legend3' => 'ACP_FEED_TOPIC_BASED',
|
||||||
'feed_limit_topic' => array('lang' => 'ACP_FEED_LIMIT', 'validate' => 'int:5', 'type' => 'text:3:4', 'explain' => true),
|
'feed_limit_topic' => array('lang' => 'ACP_FEED_LIMIT', 'validate' => 'int:5:9999', 'type' => 'number:5:9999', 'explain' => true),
|
||||||
'feed_topics_new' => array('lang' => 'ACP_FEED_TOPICS_NEW', 'validate' => 'bool', 'type' => 'radio:enabled_disabled', 'explain' => true ),
|
'feed_topics_new' => array('lang' => 'ACP_FEED_TOPICS_NEW', 'validate' => 'bool', 'type' => 'radio:enabled_disabled', 'explain' => true ),
|
||||||
'feed_topics_active' => array('lang' => 'ACP_FEED_TOPICS_ACTIVE', 'validate' => 'bool', 'type' => 'radio:enabled_disabled', 'explain' => true ),
|
'feed_topics_active' => array('lang' => 'ACP_FEED_TOPICS_ACTIVE', 'validate' => 'bool', 'type' => 'radio:enabled_disabled', 'explain' => true ),
|
||||||
'feed_news_id' => array('lang' => 'ACP_FEED_NEWS', 'validate' => 'string', 'type' => 'custom', 'method' => 'select_news_forums', 'explain' => true),
|
'feed_news_id' => array('lang' => 'ACP_FEED_NEWS', 'validate' => 'string', 'type' => 'custom', 'method' => 'select_news_forums', 'explain' => true),
|
||||||
|
@ -308,12 +324,13 @@ class acp_board
|
||||||
'title' => 'ACP_LOAD_SETTINGS',
|
'title' => 'ACP_LOAD_SETTINGS',
|
||||||
'vars' => array(
|
'vars' => array(
|
||||||
'legend1' => 'GENERAL_SETTINGS',
|
'legend1' => 'GENERAL_SETTINGS',
|
||||||
'limit_load' => array('lang' => 'LIMIT_LOAD', 'validate' => 'string', 'type' => 'text:4:4', 'explain' => true),
|
'limit_load' => array('lang' => 'LIMIT_LOAD', 'validate' => 'int:0:9999', 'type' => 'number:0:9999', 'explain' => true),
|
||||||
'session_length' => array('lang' => 'SESSION_LENGTH', 'validate' => 'int:60', 'type' => 'text:5:10', 'explain' => true, 'append' => ' ' . $user->lang['SECONDS']),
|
'session_length' => array('lang' => 'SESSION_LENGTH', 'validate' => 'int:60:9999999999', 'type' => 'number:60:9999999999', 'explain' => true, 'append' => ' ' . $user->lang['SECONDS']),
|
||||||
'active_sessions' => array('lang' => 'LIMIT_SESSIONS', 'validate' => 'int:0', 'type' => 'text:4:4', 'explain' => true),
|
'active_sessions' => array('lang' => 'LIMIT_SESSIONS', 'validate' => 'int:0:9999', 'type' => 'number:0:9999', 'explain' => true),
|
||||||
'load_online_time' => array('lang' => 'ONLINE_LENGTH', 'validate' => 'int:0', 'type' => 'text:4:3', 'explain' => true, 'append' => ' ' . $user->lang['MINUTES']),
|
'load_online_time' => array('lang' => 'ONLINE_LENGTH', 'validate' => 'int:0:999', 'type' => 'number:0:999', 'explain' => true, 'append' => ' ' . $user->lang['MINUTES']),
|
||||||
|
|
||||||
'legend2' => 'GENERAL_OPTIONS',
|
'legend2' => 'GENERAL_OPTIONS',
|
||||||
|
'load_notifications' => array('lang' => 'LOAD_NOTIFICATIONS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
'load_db_track' => array('lang' => 'YES_POST_MARKING', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
'load_db_track' => array('lang' => 'YES_POST_MARKING', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
'load_db_lastread' => array('lang' => 'YES_READ_MARKING', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
'load_db_lastread' => array('lang' => 'YES_READ_MARKING', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
'load_anon_lastread' => array('lang' => 'YES_ANON_READ_MARKING', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
'load_anon_lastread' => array('lang' => 'YES_ANON_READ_MARKING', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
|
@ -367,7 +384,7 @@ class acp_board
|
||||||
'force_server_vars' => array('lang' => 'FORCE_SERVER_VARS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
'force_server_vars' => array('lang' => 'FORCE_SERVER_VARS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
'server_protocol' => array('lang' => 'SERVER_PROTOCOL', 'validate' => 'string', 'type' => 'text:10:10', 'explain' => true),
|
'server_protocol' => array('lang' => 'SERVER_PROTOCOL', 'validate' => 'string', 'type' => 'text:10:10', 'explain' => true),
|
||||||
'server_name' => array('lang' => 'SERVER_NAME', 'validate' => 'string', 'type' => 'text:40:255', 'explain' => true),
|
'server_name' => array('lang' => 'SERVER_NAME', 'validate' => 'string', 'type' => 'text:40:255', 'explain' => true),
|
||||||
'server_port' => array('lang' => 'SERVER_PORT', 'validate' => 'int:0', 'type' => 'text:5:5', 'explain' => true),
|
'server_port' => array('lang' => 'SERVER_PORT', 'validate' => 'int:0:99999', 'type' => 'number:0:99999', 'explain' => true),
|
||||||
'script_path' => array('lang' => 'SCRIPT_PATH', 'validate' => 'script_path', 'type' => 'text::255', 'explain' => true),
|
'script_path' => array('lang' => 'SCRIPT_PATH', 'validate' => 'script_path', 'type' => 'text::255', 'explain' => true),
|
||||||
|
|
||||||
'legend4' => 'ACP_SUBMIT_CHANGES',
|
'legend4' => 'ACP_SUBMIT_CHANGES',
|
||||||
|
@ -381,7 +398,8 @@ class acp_board
|
||||||
'vars' => array(
|
'vars' => array(
|
||||||
'legend1' => 'ACP_SECURITY_SETTINGS',
|
'legend1' => 'ACP_SECURITY_SETTINGS',
|
||||||
'allow_autologin' => array('lang' => 'ALLOW_AUTOLOGIN', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
'allow_autologin' => array('lang' => 'ALLOW_AUTOLOGIN', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
'max_autologin_time' => array('lang' => 'AUTOLOGIN_LENGTH', 'validate' => 'int:0', 'type' => 'text:5:5', 'explain' => true, 'append' => ' ' . $user->lang['DAYS']),
|
'allow_password_reset' => array('lang' => 'ALLOW_PASSWORD_RESET', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
|
'max_autologin_time' => array('lang' => 'AUTOLOGIN_LENGTH', 'validate' => 'int:0:99999', 'type' => 'number:0:99999', 'explain' => true, 'append' => ' ' . $user->lang['DAYS']),
|
||||||
'ip_check' => array('lang' => 'IP_VALID', 'validate' => 'int', 'type' => 'custom', 'method' => 'select_ip_check', 'explain' => true),
|
'ip_check' => array('lang' => 'IP_VALID', 'validate' => 'int', 'type' => 'custom', 'method' => 'select_ip_check', 'explain' => true),
|
||||||
'browser_check' => array('lang' => 'BROWSER_VALID', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
'browser_check' => array('lang' => 'BROWSER_VALID', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
'forwarded_for_check' => array('lang' => 'FORWARDED_FOR_VALID', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
'forwarded_for_check' => array('lang' => 'FORWARDED_FOR_VALID', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
|
@ -391,13 +409,13 @@ class acp_board
|
||||||
'max_pass_chars' => array('lang' => 'PASSWORD_LENGTH', 'validate' => 'int:8:255', 'type' => false, 'method' => false, 'explain' => false,),
|
'max_pass_chars' => array('lang' => 'PASSWORD_LENGTH', 'validate' => 'int:8:255', 'type' => false, 'method' => false, 'explain' => false,),
|
||||||
'min_pass_chars' => array('lang' => 'PASSWORD_LENGTH', 'validate' => 'int:1', 'type' => 'custom', 'method' => 'password_length', 'explain' => true),
|
'min_pass_chars' => array('lang' => 'PASSWORD_LENGTH', 'validate' => 'int:1', 'type' => 'custom', 'method' => 'password_length', 'explain' => true),
|
||||||
'pass_complex' => array('lang' => 'PASSWORD_TYPE', 'validate' => 'string', 'type' => 'select', 'method' => 'select_password_chars', 'explain' => true),
|
'pass_complex' => array('lang' => 'PASSWORD_TYPE', 'validate' => 'string', 'type' => 'select', 'method' => 'select_password_chars', 'explain' => true),
|
||||||
'chg_passforce' => array('lang' => 'FORCE_PASS_CHANGE', 'validate' => 'int:0', 'type' => 'text:3:3', 'explain' => true, 'append' => ' ' . $user->lang['DAYS']),
|
'chg_passforce' => array('lang' => 'FORCE_PASS_CHANGE', 'validate' => 'int:0:999', 'type' => 'number:0:999', 'explain' => true, 'append' => ' ' . $user->lang['DAYS']),
|
||||||
'max_login_attempts' => array('lang' => 'MAX_LOGIN_ATTEMPTS', 'validate' => 'int:0', 'type' => 'text:3:3', 'explain' => true),
|
'max_login_attempts' => array('lang' => 'MAX_LOGIN_ATTEMPTS', 'validate' => 'int:0:999', 'type' => 'number:0:999', 'explain' => true),
|
||||||
'ip_login_limit_max' => array('lang' => 'IP_LOGIN_LIMIT_MAX', 'validate' => 'int:0', 'type' => 'text:3:3', 'explain' => true),
|
'ip_login_limit_max' => array('lang' => 'IP_LOGIN_LIMIT_MAX', 'validate' => 'int:0:999', 'type' => 'number:0:999', 'explain' => true),
|
||||||
'ip_login_limit_time' => array('lang' => 'IP_LOGIN_LIMIT_TIME', 'validate' => 'int:0', 'type' => 'text:5:5', 'explain' => true, 'append' => ' ' . $user->lang['SECONDS']),
|
'ip_login_limit_time' => array('lang' => 'IP_LOGIN_LIMIT_TIME', 'validate' => 'int:0:99999', 'type' => 'number:0:99999', 'explain' => true, 'append' => ' ' . $user->lang['SECONDS']),
|
||||||
'ip_login_limit_use_forwarded' => array('lang' => 'IP_LOGIN_LIMIT_USE_FORWARDED', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
'ip_login_limit_use_forwarded' => array('lang' => 'IP_LOGIN_LIMIT_USE_FORWARDED', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
'tpl_allow_php' => array('lang' => 'TPL_ALLOW_PHP', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
'tpl_allow_php' => array('lang' => 'TPL_ALLOW_PHP', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
'form_token_lifetime' => array('lang' => 'FORM_TIME_MAX', 'validate' => 'int:-1', 'type' => 'text:5:5', 'explain' => true, 'append' => ' ' . $user->lang['SECONDS']),
|
'form_token_lifetime' => array('lang' => 'FORM_TIME_MAX', 'validate' => 'int:-1:99999', 'type' => 'number:-1:99999', 'explain' => true, 'append' => ' ' . $user->lang['SECONDS']),
|
||||||
'form_token_sid_guests' => array('lang' => 'FORM_SID_GUESTS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
'form_token_sid_guests' => array('lang' => 'FORM_SID_GUESTS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
|
|
||||||
)
|
)
|
||||||
|
@ -412,16 +430,16 @@ class acp_board
|
||||||
'email_enable' => array('lang' => 'ENABLE_EMAIL', 'validate' => 'bool', 'type' => 'radio:enabled_disabled', 'explain' => true),
|
'email_enable' => array('lang' => 'ENABLE_EMAIL', 'validate' => 'bool', 'type' => 'radio:enabled_disabled', 'explain' => true),
|
||||||
'board_email_form' => array('lang' => 'BOARD_EMAIL_FORM', 'validate' => 'bool', 'type' => 'radio:enabled_disabled', 'explain' => true),
|
'board_email_form' => array('lang' => 'BOARD_EMAIL_FORM', 'validate' => 'bool', 'type' => 'radio:enabled_disabled', 'explain' => true),
|
||||||
'email_function_name' => array('lang' => 'EMAIL_FUNCTION_NAME', 'validate' => 'string', 'type' => 'text:20:50', 'explain' => true),
|
'email_function_name' => array('lang' => 'EMAIL_FUNCTION_NAME', 'validate' => 'string', 'type' => 'text:20:50', 'explain' => true),
|
||||||
'email_package_size' => array('lang' => 'EMAIL_PACKAGE_SIZE', 'validate' => 'int:0', 'type' => 'text:5:5', 'explain' => true),
|
'email_package_size' => array('lang' => 'EMAIL_PACKAGE_SIZE', 'validate' => 'int:0', 'type' => 'number:0:99999', 'explain' => true),
|
||||||
'board_contact' => array('lang' => 'CONTACT_EMAIL', 'validate' => 'string', 'type' => 'text:25:100', 'explain' => true),
|
'board_contact' => array('lang' => 'CONTACT_EMAIL', 'validate' => 'email', 'type' => 'email:25:100', 'explain' => true),
|
||||||
'board_email' => array('lang' => 'ADMIN_EMAIL', 'validate' => 'string', 'type' => 'text:25:100', 'explain' => true),
|
'board_email' => array('lang' => 'ADMIN_EMAIL', 'validate' => 'email', 'type' => 'email:25:100', 'explain' => true),
|
||||||
'board_email_sig' => array('lang' => 'EMAIL_SIG', 'validate' => 'string', 'type' => 'textarea:5:30', 'explain' => true),
|
'board_email_sig' => array('lang' => 'EMAIL_SIG', 'validate' => 'string', 'type' => 'textarea:5:30', 'explain' => true),
|
||||||
'board_hide_emails' => array('lang' => 'BOARD_HIDE_EMAILS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
'board_hide_emails' => array('lang' => 'BOARD_HIDE_EMAILS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
|
|
||||||
'legend2' => 'SMTP_SETTINGS',
|
'legend2' => 'SMTP_SETTINGS',
|
||||||
'smtp_delivery' => array('lang' => 'USE_SMTP', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
'smtp_delivery' => array('lang' => 'USE_SMTP', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
'smtp_host' => array('lang' => 'SMTP_SERVER', 'validate' => 'string', 'type' => 'text:25:50', 'explain' => false),
|
'smtp_host' => array('lang' => 'SMTP_SERVER', 'validate' => 'string', 'type' => 'text:25:50', 'explain' => false),
|
||||||
'smtp_port' => array('lang' => 'SMTP_PORT', 'validate' => 'int:0', 'type' => 'text:4:5', 'explain' => true),
|
'smtp_port' => array('lang' => 'SMTP_PORT', 'validate' => 'int:0:99999', 'type' => 'number:0:99999', 'explain' => true),
|
||||||
'smtp_auth_method' => array('lang' => 'SMTP_AUTH_METHOD', 'validate' => 'string', 'type' => 'select', 'method' => 'mail_auth_select', 'explain' => true),
|
'smtp_auth_method' => array('lang' => 'SMTP_AUTH_METHOD', 'validate' => 'string', 'type' => 'select', 'method' => 'mail_auth_select', 'explain' => true),
|
||||||
'smtp_username' => array('lang' => 'SMTP_USERNAME', 'validate' => 'string', 'type' => 'text:25:255', 'explain' => true),
|
'smtp_username' => array('lang' => 'SMTP_USERNAME', 'validate' => 'string', 'type' => 'text:25:255', 'explain' => true),
|
||||||
'smtp_password' => array('lang' => 'SMTP_PASSWORD', 'validate' => 'string', 'type' => 'password:25:255', 'explain' => true),
|
'smtp_password' => array('lang' => 'SMTP_PASSWORD', 'validate' => 'string', 'type' => 'password:25:255', 'explain' => true),
|
||||||
|
@ -504,84 +522,54 @@ class acp_board
|
||||||
if ($mode == 'auth')
|
if ($mode == 'auth')
|
||||||
{
|
{
|
||||||
// Retrieve a list of auth plugins and check their config values
|
// Retrieve a list of auth plugins and check their config values
|
||||||
$auth_plugins = array();
|
$auth_providers = $phpbb_container->get('auth.provider_collection');
|
||||||
|
|
||||||
$dp = @opendir($phpbb_root_path . 'includes/auth');
|
|
||||||
|
|
||||||
if ($dp)
|
|
||||||
{
|
|
||||||
while (($file = readdir($dp)) !== false)
|
|
||||||
{
|
|
||||||
if (preg_match('#^auth_(.*?)\.' . $phpEx . '$#', $file))
|
|
||||||
{
|
|
||||||
$auth_plugins[] = basename(preg_replace('#^auth_(.*?)\.' . $phpEx . '$#', '\1', $file));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
closedir($dp);
|
|
||||||
|
|
||||||
sort($auth_plugins);
|
|
||||||
}
|
|
||||||
|
|
||||||
$updated_auth_settings = false;
|
$updated_auth_settings = false;
|
||||||
$old_auth_config = array();
|
$old_auth_config = array();
|
||||||
foreach ($auth_plugins as $method)
|
foreach ($auth_providers as $provider)
|
||||||
{
|
{
|
||||||
if ($method && file_exists($phpbb_root_path . 'includes/auth/auth_' . $method . '.' . $phpEx))
|
if ($fields = $provider->acp())
|
||||||
{
|
{
|
||||||
include_once($phpbb_root_path . 'includes/auth/auth_' . $method . '.' . $phpEx);
|
// Check if we need to create config fields for this plugin and save config when submit was pressed
|
||||||
|
foreach ($fields as $field)
|
||||||
$method = 'acp_' . $method;
|
|
||||||
if (function_exists($method))
|
|
||||||
{
|
{
|
||||||
if ($fields = $method($this->new_config))
|
if (!isset($config[$field]))
|
||||||
{
|
{
|
||||||
// Check if we need to create config fields for this plugin and save config when submit was pressed
|
set_config($field, '');
|
||||||
foreach ($fields['config'] as $field)
|
}
|
||||||
{
|
|
||||||
if (!isset($config[$field]))
|
if (!isset($cfg_array[$field]) || strpos($field, 'legend') !== false)
|
||||||
{
|
{
|
||||||
set_config($field, '');
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isset($cfg_array[$field]) || strpos($field, 'legend') !== false)
|
$old_auth_config[$field] = $this->new_config[$field];
|
||||||
{
|
$config_value = $cfg_array[$field];
|
||||||
continue;
|
$this->new_config[$field] = $config_value;
|
||||||
}
|
|
||||||
|
if ($submit)
|
||||||
$old_auth_config[$field] = $this->new_config[$field];
|
{
|
||||||
$config_value = $cfg_array[$field];
|
$updated_auth_settings = true;
|
||||||
$this->new_config[$field] = $config_value;
|
set_config($field, $config_value);
|
||||||
|
|
||||||
if ($submit)
|
|
||||||
{
|
|
||||||
$updated_auth_settings = true;
|
|
||||||
set_config($field, $config_value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
unset($fields);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
unset($fields);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($submit && (($cfg_array['auth_method'] != $this->new_config['auth_method']) || $updated_auth_settings))
|
if ($submit && (($cfg_array['auth_method'] != $this->new_config['auth_method']) || $updated_auth_settings))
|
||||||
{
|
{
|
||||||
$method = basename($cfg_array['auth_method']);
|
$method = basename($cfg_array['auth_method']);
|
||||||
if ($method && in_array($method, $auth_plugins))
|
if (array_key_exists('auth.provider.' . $method, $auth_providers))
|
||||||
{
|
{
|
||||||
include_once($phpbb_root_path . 'includes/auth/auth_' . $method . '.' . $phpEx);
|
$provider = $auth_providers['auth.provider.' . $method];
|
||||||
|
if ($error = $provider->init())
|
||||||
$method = 'init_' . $method;
|
|
||||||
if (function_exists($method))
|
|
||||||
{
|
{
|
||||||
if ($error = $method())
|
foreach ($old_auth_config as $config_name => $config_value)
|
||||||
{
|
{
|
||||||
foreach ($old_auth_config as $config_name => $config_value)
|
set_config($config_name, $config_value);
|
||||||
{
|
|
||||||
set_config($config_name, $config_value);
|
|
||||||
}
|
|
||||||
trigger_error($error . adm_back_link($this->u_action), E_USER_WARNING);
|
|
||||||
}
|
}
|
||||||
|
trigger_error($error . adm_back_link($this->u_action), E_USER_WARNING);
|
||||||
}
|
}
|
||||||
set_config('auth_method', basename($cfg_array['auth_method']));
|
set_config('auth_method', basename($cfg_array['auth_method']));
|
||||||
}
|
}
|
||||||
|
@ -665,23 +653,15 @@ class acp_board
|
||||||
{
|
{
|
||||||
$template->assign_var('S_AUTH', true);
|
$template->assign_var('S_AUTH', true);
|
||||||
|
|
||||||
foreach ($auth_plugins as $method)
|
foreach ($auth_providers as $provider)
|
||||||
{
|
{
|
||||||
if ($method && file_exists($phpbb_root_path . 'includes/auth/auth_' . $method . '.' . $phpEx))
|
$auth_tpl = $provider->get_acp_template($this->new_config);
|
||||||
|
if ($auth_tpl)
|
||||||
{
|
{
|
||||||
$method = 'acp_' . $method;
|
$template->assign_vars($auth_tpl['TEMPLATE_VARS']);
|
||||||
if (function_exists($method))
|
$template->assign_block_vars('auth_tpl', array(
|
||||||
{
|
'TEMPLATE_FILE' => $auth_tpl['TEMPLATE_FILE'],
|
||||||
$fields = $method($this->new_config);
|
));
|
||||||
|
|
||||||
if ($fields['tpl'])
|
|
||||||
{
|
|
||||||
$template->assign_block_vars('auth_tpl', array(
|
|
||||||
'TPL' => $fields['tpl'])
|
|
||||||
);
|
|
||||||
}
|
|
||||||
unset($fields);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -692,25 +672,19 @@ class acp_board
|
||||||
*/
|
*/
|
||||||
function select_auth_method($selected_method, $key = '')
|
function select_auth_method($selected_method, $key = '')
|
||||||
{
|
{
|
||||||
global $phpbb_root_path, $phpEx;
|
global $phpbb_root_path, $phpEx, $phpbb_container;
|
||||||
|
|
||||||
$auth_plugins = array();
|
$auth_plugins = array();
|
||||||
|
$auth_providers = $phpbb_container->get('auth.provider_collection');
|
||||||
|
|
||||||
$dp = @opendir($phpbb_root_path . 'includes/auth');
|
foreach ($auth_providers as $key => $value)
|
||||||
|
|
||||||
if (!$dp)
|
|
||||||
{
|
{
|
||||||
return '';
|
if (!($value instanceof phpbb_auth_provider_interface))
|
||||||
}
|
|
||||||
|
|
||||||
while (($file = readdir($dp)) !== false)
|
|
||||||
{
|
|
||||||
if (preg_match('#^auth_(.*?)\.' . $phpEx . '$#', $file))
|
|
||||||
{
|
{
|
||||||
$auth_plugins[] = preg_replace('#^auth_(.*?)\.' . $phpEx . '$#', '\1', $file);
|
continue;
|
||||||
}
|
}
|
||||||
|
$auth_plugins[] = str_replace('auth.provider.', '', $key);
|
||||||
}
|
}
|
||||||
closedir($dp);
|
|
||||||
|
|
||||||
sort($auth_plugins);
|
sort($auth_plugins);
|
||||||
|
|
||||||
|
@ -787,7 +761,7 @@ class acp_board
|
||||||
{
|
{
|
||||||
$act_ary['ACC_USER'] = USER_ACTIVATION_SELF;
|
$act_ary['ACC_USER'] = USER_ACTIVATION_SELF;
|
||||||
$act_ary['ACC_ADMIN'] = USER_ACTIVATION_ADMIN;
|
$act_ary['ACC_ADMIN'] = USER_ACTIVATION_ADMIN;
|
||||||
}
|
}
|
||||||
$act_options = '';
|
$act_options = '';
|
||||||
|
|
||||||
foreach ($act_ary as $key => $value)
|
foreach ($act_ary as $key => $value)
|
||||||
|
@ -806,7 +780,7 @@ class acp_board
|
||||||
{
|
{
|
||||||
global $user;
|
global $user;
|
||||||
|
|
||||||
return '<input id="' . $key . '" type="text" size="3" maxlength="3" name="config[min_name_chars]" value="' . $value . '" /> ' . $user->lang['MIN_CHARS'] . ' <input type="text" size="3" maxlength="3" name="config[max_name_chars]" value="' . $this->new_config['max_name_chars'] . '" /> ' . $user->lang['MAX_CHARS'];
|
return '<input id="' . $key . '" type="number" size="3" maxlength="3" min="1" max="999" name="config[min_name_chars]" value="' . $value . '" /> ' . $user->lang['MIN_CHARS'] . ' <input type="number" size="3" maxlength="3" min="8" max="180" name="config[max_name_chars]" value="' . $this->new_config['max_name_chars'] . '" /> ' . $user->lang['MAX_CHARS'];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -834,7 +808,7 @@ class acp_board
|
||||||
{
|
{
|
||||||
global $user;
|
global $user;
|
||||||
|
|
||||||
return '<input id="' . $key . '" type="text" size="3" maxlength="3" name="config[min_pass_chars]" value="' . $value . '" /> ' . $user->lang['MIN_CHARS'] . ' <input type="text" size="3" maxlength="3" name="config[max_pass_chars]" value="' . $this->new_config['max_pass_chars'] . '" /> ' . $user->lang['MAX_CHARS'];
|
return '<input id="' . $key . '" type="number" size="3" maxlength="3" min="1" max="999" name="config[min_pass_chars]" value="' . $value . '" /> ' . $user->lang['MIN_CHARS'] . ' <input type="number" size="3" maxlength="3" min="8" max="255" name="config[max_pass_chars]" value="' . $this->new_config['max_pass_chars'] . '" /> ' . $user->lang['MAX_CHARS'];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -124,6 +124,8 @@ class acp_captcha
|
||||||
'CAPTCHA_PREVIEW_TPL' => $demo_captcha->get_demo_template($id),
|
'CAPTCHA_PREVIEW_TPL' => $demo_captcha->get_demo_template($id),
|
||||||
'S_CAPTCHA_HAS_CONFIG' => $demo_captcha->has_config(),
|
'S_CAPTCHA_HAS_CONFIG' => $demo_captcha->has_config(),
|
||||||
'CAPTCHA_SELECT' => $captcha_select,
|
'CAPTCHA_SELECT' => $captcha_select,
|
||||||
|
|
||||||
|
'U_ACTION' => $this->u_action,
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,10 +28,6 @@ class acp_database
|
||||||
global $cache, $db, $user, $auth, $template, $table_prefix;
|
global $cache, $db, $user, $auth, $template, $table_prefix;
|
||||||
global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;
|
global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;
|
||||||
|
|
||||||
if (!class_exists('phpbb_db_tools'))
|
|
||||||
{
|
|
||||||
require($phpbb_root_path . 'includes/db/db_tools.' . $phpEx);
|
|
||||||
}
|
|
||||||
$this->db_tools = new phpbb_db_tools($db);
|
$this->db_tools = new phpbb_db_tools($db);
|
||||||
|
|
||||||
$user->add_lang('acp/database');
|
$user->add_lang('acp/database');
|
||||||
|
|
|
@ -37,13 +37,17 @@ class acp_extensions
|
||||||
$this->template = $template;
|
$this->template = $template;
|
||||||
$this->user = $user;
|
$this->user = $user;
|
||||||
|
|
||||||
$user->add_lang(array('install', 'acp/extensions'));
|
$user->add_lang(array('install', 'acp/extensions', 'migrator'));
|
||||||
|
|
||||||
$this->page_title = 'ACP_EXTENSIONS';
|
$this->page_title = 'ACP_EXTENSIONS';
|
||||||
|
|
||||||
$action = $request->variable('action', 'list');
|
$action = $request->variable('action', 'list');
|
||||||
$ext_name = $request->variable('ext_name', '');
|
$ext_name = $request->variable('ext_name', '');
|
||||||
|
|
||||||
|
// What is a safe limit of execution time? Half the max execution time should be safe.
|
||||||
|
$safe_time_limit = (ini_get('max_execution_time') / 2);
|
||||||
|
$start_time = time();
|
||||||
|
|
||||||
// Cancel action
|
// Cancel action
|
||||||
if ($request->is_set_post('cancel'))
|
if ($request->is_set_post('cancel'))
|
||||||
{
|
{
|
||||||
|
@ -54,7 +58,7 @@ class acp_extensions
|
||||||
// If they've specified an extension, let's load the metadata manager and validate it.
|
// If they've specified an extension, let's load the metadata manager and validate it.
|
||||||
if ($ext_name)
|
if ($ext_name)
|
||||||
{
|
{
|
||||||
$md_manager = new phpbb_extension_metadata_manager($ext_name, $db, $phpbb_extension_manager, $phpbb_root_path, ".$phpEx", $template, $config);
|
$md_manager = new phpbb_extension_metadata_manager($ext_name, $config, $phpbb_extension_manager, $template, $phpbb_root_path);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -81,7 +85,7 @@ class acp_extensions
|
||||||
case 'enable_pre':
|
case 'enable_pre':
|
||||||
if (!$md_manager->validate_enable())
|
if (!$md_manager->validate_enable())
|
||||||
{
|
{
|
||||||
trigger_error($user->lang['EXTENSION_NOT_AVAILABLE'] . adm_back_link($this->u_action));
|
trigger_error($user->lang['EXTENSION_NOT_AVAILABLE'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($phpbb_extension_manager->enabled($ext_name))
|
if ($phpbb_extension_manager->enabled($ext_name))
|
||||||
|
@ -100,14 +104,25 @@ class acp_extensions
|
||||||
case 'enable':
|
case 'enable':
|
||||||
if (!$md_manager->validate_enable())
|
if (!$md_manager->validate_enable())
|
||||||
{
|
{
|
||||||
trigger_error($user->lang['EXTENSION_NOT_AVAILABLE'] . adm_back_link($this->u_action));
|
trigger_error($user->lang['EXTENSION_NOT_AVAILABLE'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($phpbb_extension_manager->enable_step($ext_name))
|
try
|
||||||
{
|
{
|
||||||
$template->assign_var('S_NEXT_STEP', true);
|
while ($phpbb_extension_manager->enable_step($ext_name))
|
||||||
|
{
|
||||||
|
// Are we approaching the time limit? If so we want to pause the update and continue after refreshing
|
||||||
|
if ((time() - $start_time) >= $safe_time_limit)
|
||||||
|
{
|
||||||
|
$template->assign_var('S_NEXT_STEP', true);
|
||||||
|
|
||||||
meta_refresh(0, $this->u_action . '&action=enable&ext_name=' . urlencode($ext_name));
|
meta_refresh(0, $this->u_action . '&action=enable&ext_name=' . urlencode($ext_name));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (phpbb_db_migration_exception $e)
|
||||||
|
{
|
||||||
|
$template->assign_var('MIGRATOR_ERROR', $e->getLocalisedMessage($user));
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->tpl_name = 'acp_ext_enable';
|
$this->tpl_name = 'acp_ext_enable';
|
||||||
|
@ -132,11 +147,15 @@ class acp_extensions
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'disable':
|
case 'disable':
|
||||||
if ($phpbb_extension_manager->disable_step($ext_name))
|
while ($phpbb_extension_manager->disable_step($ext_name))
|
||||||
{
|
{
|
||||||
$template->assign_var('S_NEXT_STEP', true);
|
// Are we approaching the time limit? If so we want to pause the update and continue after refreshing
|
||||||
|
if ((time() - $start_time) >= $safe_time_limit)
|
||||||
|
{
|
||||||
|
$template->assign_var('S_NEXT_STEP', true);
|
||||||
|
|
||||||
meta_refresh(0, $this->u_action . '&action=disable&ext_name=' . urlencode($ext_name));
|
meta_refresh(0, $this->u_action . '&action=disable&ext_name=' . urlencode($ext_name));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->tpl_name = 'acp_ext_disable';
|
$this->tpl_name = 'acp_ext_disable';
|
||||||
|
@ -156,11 +175,22 @@ class acp_extensions
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'purge':
|
case 'purge':
|
||||||
if ($phpbb_extension_manager->purge_step($ext_name))
|
try
|
||||||
{
|
{
|
||||||
$template->assign_var('S_NEXT_STEP', true);
|
while ($phpbb_extension_manager->purge_step($ext_name))
|
||||||
|
{
|
||||||
|
// Are we approaching the time limit? If so we want to pause the update and continue after refreshing
|
||||||
|
if ((time() - $start_time) >= $safe_time_limit)
|
||||||
|
{
|
||||||
|
$template->assign_var('S_NEXT_STEP', true);
|
||||||
|
|
||||||
meta_refresh(0, $this->u_action . '&action=purge&ext_name=' . urlencode($ext_name));
|
meta_refresh(0, $this->u_action . '&action=purge&ext_name=' . urlencode($ext_name));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (phpbb_db_migration_exception $e)
|
||||||
|
{
|
||||||
|
$template->assign_var('MIGRATOR_ERROR', $e->getLocalisedMessage($user));
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->tpl_name = 'acp_ext_purge';
|
$this->tpl_name = 'acp_ext_purge';
|
||||||
|
|
|
@ -206,7 +206,7 @@ class acp_forums
|
||||||
($action != 'edit' || empty($forum_id) || ($auth->acl_get('a_fauth') && $auth->acl_get('a_authusers') && $auth->acl_get('a_authgroups') && $auth->acl_get('a_mauth'))))
|
($action != 'edit' || empty($forum_id) || ($auth->acl_get('a_fauth') && $auth->acl_get('a_authusers') && $auth->acl_get('a_authgroups') && $auth->acl_get('a_mauth'))))
|
||||||
{
|
{
|
||||||
copy_forum_permissions($forum_perm_from, $forum_data['forum_id'], ($action == 'edit') ? true : false);
|
copy_forum_permissions($forum_perm_from, $forum_data['forum_id'], ($action == 'edit') ? true : false);
|
||||||
cache_moderators();
|
phpbb_cache_moderators($db, $cache, $auth);
|
||||||
$copied_permissions = true;
|
$copied_permissions = true;
|
||||||
}
|
}
|
||||||
/* Commented out because of questionable UI workflow - re-visit for 3.0.7
|
/* Commented out because of questionable UI workflow - re-visit for 3.0.7
|
||||||
|
@ -266,7 +266,7 @@ class acp_forums
|
||||||
add_log('admin', 'LOG_FORUM_' . strtoupper($action), $row['forum_name'], $move_forum_name);
|
add_log('admin', 'LOG_FORUM_' . strtoupper($action), $row['forum_name'], $move_forum_name);
|
||||||
$cache->destroy('sql', FORUMS_TABLE);
|
$cache->destroy('sql', FORUMS_TABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($request->is_ajax())
|
if ($request->is_ajax())
|
||||||
{
|
{
|
||||||
$json_response = new phpbb_json_response;
|
$json_response = new phpbb_json_response;
|
||||||
|
@ -283,7 +283,7 @@ class acp_forums
|
||||||
|
|
||||||
@set_time_limit(0);
|
@set_time_limit(0);
|
||||||
|
|
||||||
$sql = 'SELECT forum_name, forum_topics_real
|
$sql = 'SELECT forum_name, (forum_topics_approved + forum_topics_unapproved + forum_topics_softdeleted) AS total_topics
|
||||||
FROM ' . FORUMS_TABLE . "
|
FROM ' . FORUMS_TABLE . "
|
||||||
WHERE forum_id = $forum_id";
|
WHERE forum_id = $forum_id";
|
||||||
$result = $db->sql_query($sql);
|
$result = $db->sql_query($sql);
|
||||||
|
@ -295,7 +295,7 @@ class acp_forums
|
||||||
trigger_error($user->lang['NO_FORUM'] . adm_back_link($this->u_action . '&parent_id=' . $this->parent_id), E_USER_WARNING);
|
trigger_error($user->lang['NO_FORUM'] . adm_back_link($this->u_action . '&parent_id=' . $this->parent_id), E_USER_WARNING);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($row['forum_topics_real'])
|
if ($row['total_topics'])
|
||||||
{
|
{
|
||||||
$sql = 'SELECT MIN(topic_id) as min_topic_id, MAX(topic_id) as max_topic_id
|
$sql = 'SELECT MIN(topic_id) as min_topic_id, MAX(topic_id) as max_topic_id
|
||||||
FROM ' . TOPICS_TABLE . '
|
FROM ' . TOPICS_TABLE . '
|
||||||
|
@ -314,7 +314,6 @@ class acp_forums
|
||||||
$end = $start + $batch_size;
|
$end = $start + $batch_size;
|
||||||
|
|
||||||
// Sync all topics in batch mode...
|
// Sync all topics in batch mode...
|
||||||
sync('topic_approved', 'range', 'topic_id BETWEEN ' . $start . ' AND ' . $end, true, false);
|
|
||||||
sync('topic', 'range', 'topic_id BETWEEN ' . $start . ' AND ' . $end, true, true);
|
sync('topic', 'range', 'topic_id BETWEEN ' . $start . ' AND ' . $end, true, true);
|
||||||
|
|
||||||
if ($end < $row2['max_topic_id'])
|
if ($end < $row2['max_topic_id'])
|
||||||
|
@ -330,15 +329,15 @@ class acp_forums
|
||||||
|
|
||||||
$start += $batch_size;
|
$start += $batch_size;
|
||||||
|
|
||||||
$url = $this->u_action . "&parent_id={$this->parent_id}&f=$forum_id&action=sync&start=$start&topics_done=$topics_done&total={$row['forum_topics_real']}";
|
$url = $this->u_action . "&parent_id={$this->parent_id}&f=$forum_id&action=sync&start=$start&topics_done=$topics_done&total={$row['total_topics']}";
|
||||||
|
|
||||||
meta_refresh(0, $url);
|
meta_refresh(0, $url);
|
||||||
|
|
||||||
$template->assign_vars(array(
|
$template->assign_vars(array(
|
||||||
'U_PROGRESS_BAR' => $this->u_action . "&action=progress_bar&start=$topics_done&total={$row['forum_topics_real']}",
|
'U_PROGRESS_BAR' => $this->u_action . "&action=progress_bar&start=$topics_done&total={$row['total_topics']}",
|
||||||
'UA_PROGRESS_BAR' => addslashes($this->u_action . "&action=progress_bar&start=$topics_done&total={$row['forum_topics_real']}"),
|
'UA_PROGRESS_BAR' => addslashes($this->u_action . "&action=progress_bar&start=$topics_done&total={$row['total_topics']}"),
|
||||||
'S_CONTINUE_SYNC' => true,
|
'S_CONTINUE_SYNC' => true,
|
||||||
'L_PROGRESS_EXPLAIN' => sprintf($user->lang['SYNC_IN_PROGRESS_EXPLAIN'], $topics_done, $row['forum_topics_real']))
|
'L_PROGRESS_EXPLAIN' => sprintf($user->lang['SYNC_IN_PROGRESS_EXPLAIN'], $topics_done, $row['total_topics']))
|
||||||
);
|
);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
@ -352,7 +351,7 @@ class acp_forums
|
||||||
'U_PROGRESS_BAR' => $this->u_action . '&action=progress_bar',
|
'U_PROGRESS_BAR' => $this->u_action . '&action=progress_bar',
|
||||||
'UA_PROGRESS_BAR' => addslashes($this->u_action . '&action=progress_bar'),
|
'UA_PROGRESS_BAR' => addslashes($this->u_action . '&action=progress_bar'),
|
||||||
'S_CONTINUE_SYNC' => true,
|
'S_CONTINUE_SYNC' => true,
|
||||||
'L_PROGRESS_EXPLAIN' => sprintf($user->lang['SYNC_IN_PROGRESS_EXPLAIN'], 0, $row['forum_topics_real']))
|
'L_PROGRESS_EXPLAIN' => sprintf($user->lang['SYNC_IN_PROGRESS_EXPLAIN'], 0, $row['total_topics']))
|
||||||
);
|
);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
@ -768,7 +767,7 @@ class acp_forums
|
||||||
if (!empty($forum_perm_from) && $forum_perm_from != $forum_id)
|
if (!empty($forum_perm_from) && $forum_perm_from != $forum_id)
|
||||||
{
|
{
|
||||||
copy_forum_permissions($forum_perm_from, $forum_id, true);
|
copy_forum_permissions($forum_perm_from, $forum_id, true);
|
||||||
cache_moderators();
|
phpbb_cache_moderators($db, $cache, $auth);
|
||||||
$auth->acl_clear_prefetch();
|
$auth->acl_clear_prefetch();
|
||||||
$cache->destroy('sql', FORUMS_TABLE);
|
$cache->destroy('sql', FORUMS_TABLE);
|
||||||
|
|
||||||
|
@ -857,8 +856,8 @@ class acp_forums
|
||||||
'FORUM_IMAGE_SRC' => ($row['forum_image']) ? $phpbb_root_path . $row['forum_image'] : '',
|
'FORUM_IMAGE_SRC' => ($row['forum_image']) ? $phpbb_root_path . $row['forum_image'] : '',
|
||||||
'FORUM_NAME' => $row['forum_name'],
|
'FORUM_NAME' => $row['forum_name'],
|
||||||
'FORUM_DESCRIPTION' => generate_text_for_display($row['forum_desc'], $row['forum_desc_uid'], $row['forum_desc_bitfield'], $row['forum_desc_options']),
|
'FORUM_DESCRIPTION' => generate_text_for_display($row['forum_desc'], $row['forum_desc_uid'], $row['forum_desc_bitfield'], $row['forum_desc_options']),
|
||||||
'FORUM_TOPICS' => $row['forum_topics'],
|
'FORUM_TOPICS' => $row['forum_topics_approved'],
|
||||||
'FORUM_POSTS' => $row['forum_posts'],
|
'FORUM_POSTS' => $row['forum_posts_approved'],
|
||||||
|
|
||||||
'S_FORUM_LINK' => ($forum_type == FORUM_LINK) ? true : false,
|
'S_FORUM_LINK' => ($forum_type == FORUM_LINK) ? true : false,
|
||||||
'S_FORUM_POST' => ($forum_type == FORUM_POST) ? true : false,
|
'S_FORUM_POST' => ($forum_type == FORUM_POST) ? true : false,
|
||||||
|
@ -1144,7 +1143,8 @@ class acp_forums
|
||||||
return array($user->lang['NO_FORUM_ACTION']);
|
return array($user->lang['NO_FORUM_ACTION']);
|
||||||
}
|
}
|
||||||
|
|
||||||
$forum_data_sql['forum_posts'] = $forum_data_sql['forum_topics'] = $forum_data_sql['forum_topics_real'] = $forum_data_sql['forum_last_post_id'] = $forum_data_sql['forum_last_poster_id'] = $forum_data_sql['forum_last_post_time'] = 0;
|
$forum_data_sql['forum_posts_approved'] = $forum_data_sql['forum_posts_unapproved'] = $forum_data_sql['forum_posts_softdeleted'] = $forum_data_sql['forum_topics_approved'] = $forum_data_sql['forum_topics_unapproved'] = $forum_data_sql['forum_topics_softdeleted'] = 0;
|
||||||
|
$forum_data_sql['forum_last_post_id'] = $forum_data_sql['forum_last_poster_id'] = $forum_data_sql['forum_last_post_time'] = 0;
|
||||||
$forum_data_sql['forum_last_poster_name'] = $forum_data_sql['forum_last_poster_colour'] = '';
|
$forum_data_sql['forum_last_poster_name'] = $forum_data_sql['forum_last_poster_colour'] = '';
|
||||||
}
|
}
|
||||||
else if ($row['forum_type'] == FORUM_CAT && $forum_data_sql['forum_type'] == FORUM_LINK)
|
else if ($row['forum_type'] == FORUM_CAT && $forum_data_sql['forum_type'] == FORUM_LINK)
|
||||||
|
@ -1264,9 +1264,12 @@ class acp_forums
|
||||||
else if ($row['forum_type'] == FORUM_CAT && $forum_data_sql['forum_type'] == FORUM_POST)
|
else if ($row['forum_type'] == FORUM_CAT && $forum_data_sql['forum_type'] == FORUM_POST)
|
||||||
{
|
{
|
||||||
// Changing a category to a forum? Reset the data (you can't post directly in a cat, you must use a forum)
|
// Changing a category to a forum? Reset the data (you can't post directly in a cat, you must use a forum)
|
||||||
$forum_data_sql['forum_posts'] = 0;
|
$forum_data_sql['forum_posts_approved'] = 0;
|
||||||
$forum_data_sql['forum_topics'] = 0;
|
$forum_data_sql['forum_posts_unapproved'] = 0;
|
||||||
$forum_data_sql['forum_topics_real'] = 0;
|
$forum_data_sql['forum_posts_softdeleted'] = 0;
|
||||||
|
$forum_data_sql['forum_topics_approved'] = 0;
|
||||||
|
$forum_data_sql['forum_topics_unapproved'] = 0;
|
||||||
|
$forum_data_sql['forum_topics_softdeleted'] = 0;
|
||||||
$forum_data_sql['forum_last_post_id'] = 0;
|
$forum_data_sql['forum_last_post_id'] = 0;
|
||||||
$forum_data_sql['forum_last_post_subject'] = '';
|
$forum_data_sql['forum_last_post_subject'] = '';
|
||||||
$forum_data_sql['forum_last_post_time'] = 0;
|
$forum_data_sql['forum_last_post_time'] = 0;
|
||||||
|
@ -1793,7 +1796,7 @@ class acp_forums
|
||||||
FROM ' . POSTS_TABLE . '
|
FROM ' . POSTS_TABLE . '
|
||||||
WHERE forum_id = ' . $forum_id . '
|
WHERE forum_id = ' . $forum_id . '
|
||||||
AND post_postcount = 1
|
AND post_postcount = 1
|
||||||
AND post_approved = 1';
|
AND post_visibility = ' . ITEM_APPROVED;
|
||||||
$result = $db->sql_query($sql);
|
$result = $db->sql_query($sql);
|
||||||
|
|
||||||
$post_counts = array();
|
$post_counts = array();
|
||||||
|
@ -1931,7 +1934,7 @@ class acp_forums
|
||||||
// Make sure the overall post/topic count is correct...
|
// Make sure the overall post/topic count is correct...
|
||||||
$sql = 'SELECT COUNT(post_id) AS stat
|
$sql = 'SELECT COUNT(post_id) AS stat
|
||||||
FROM ' . POSTS_TABLE . '
|
FROM ' . POSTS_TABLE . '
|
||||||
WHERE post_approved = 1';
|
WHERE post_visibility = ' . ITEM_APPROVED;
|
||||||
$result = $db->sql_query($sql);
|
$result = $db->sql_query($sql);
|
||||||
$row = $db->sql_fetchrow($result);
|
$row = $db->sql_fetchrow($result);
|
||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
|
@ -1940,7 +1943,7 @@ class acp_forums
|
||||||
|
|
||||||
$sql = 'SELECT COUNT(topic_id) AS stat
|
$sql = 'SELECT COUNT(topic_id) AS stat
|
||||||
FROM ' . TOPICS_TABLE . '
|
FROM ' . TOPICS_TABLE . '
|
||||||
WHERE topic_approved = 1';
|
WHERE topic_visibility = ' . ITEM_APPROVED;
|
||||||
$result = $db->sql_query($sql);
|
$result = $db->sql_query($sql);
|
||||||
$row = $db->sql_fetchrow($result);
|
$row = $db->sql_fetchrow($result);
|
||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
|
|
|
@ -26,7 +26,7 @@ class acp_groups
|
||||||
{
|
{
|
||||||
global $config, $db, $user, $auth, $template, $cache;
|
global $config, $db, $user, $auth, $template, $cache;
|
||||||
global $phpbb_root_path, $phpbb_admin_path, $phpEx, $table_prefix, $file_uploads;
|
global $phpbb_root_path, $phpbb_admin_path, $phpEx, $table_prefix, $file_uploads;
|
||||||
global $request;
|
global $request, $phpbb_container;
|
||||||
|
|
||||||
$user->add_lang('acp/groups');
|
$user->add_lang('acp/groups');
|
||||||
$this->tpl_name = 'acp_groups';
|
$this->tpl_name = 'acp_groups';
|
||||||
|
@ -55,15 +55,16 @@ class acp_groups
|
||||||
|
|
||||||
|
|
||||||
// Clear some vars
|
// Clear some vars
|
||||||
$can_upload = (file_exists($phpbb_root_path . $config['avatar_path']) && phpbb_is_writable($phpbb_root_path . $config['avatar_path']) && $file_uploads) ? true : false;
|
|
||||||
$group_row = array();
|
$group_row = array();
|
||||||
|
|
||||||
// Grab basic data for group, if group_id is set and exists
|
// Grab basic data for group, if group_id is set and exists
|
||||||
if ($group_id)
|
if ($group_id)
|
||||||
{
|
{
|
||||||
$sql = 'SELECT *
|
$sql = 'SELECT g.*, t.teampage_position AS group_teampage
|
||||||
FROM ' . GROUPS_TABLE . "
|
FROM ' . GROUPS_TABLE . ' g
|
||||||
WHERE group_id = $group_id";
|
LEFT JOIN ' . TEAMPAGE_TABLE . ' t
|
||||||
|
ON (t.group_id = g.group_id)
|
||||||
|
WHERE g.group_id = ' . $group_id;
|
||||||
$result = $db->sql_query($sql);
|
$result = $db->sql_query($sql);
|
||||||
$group_row = $db->sql_fetchrow($result);
|
$group_row = $db->sql_fetchrow($result);
|
||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
|
@ -86,6 +87,11 @@ class acp_groups
|
||||||
case 'approve':
|
case 'approve':
|
||||||
case 'demote':
|
case 'demote':
|
||||||
case 'promote':
|
case 'promote':
|
||||||
|
if (!check_form_key($form_key))
|
||||||
|
{
|
||||||
|
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||||
|
}
|
||||||
|
|
||||||
if (!$group_id)
|
if (!$group_id)
|
||||||
{
|
{
|
||||||
trigger_error($user->lang['NO_GROUP'] . adm_back_link($this->u_action), E_USER_WARNING);
|
trigger_error($user->lang['NO_GROUP'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||||
|
@ -126,48 +132,64 @@ class acp_groups
|
||||||
{
|
{
|
||||||
trigger_error($user->lang['NO_GROUP'] . adm_back_link($this->u_action), E_USER_WARNING);
|
trigger_error($user->lang['NO_GROUP'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||||
}
|
}
|
||||||
|
else if (empty($mark_ary))
|
||||||
|
{
|
||||||
|
trigger_error($user->lang['NO_USERS'] . adm_back_link($this->u_action . '&action=list&g=' . $group_id), E_USER_WARNING);
|
||||||
|
}
|
||||||
|
|
||||||
if (confirm_box(true))
|
if (confirm_box(true))
|
||||||
{
|
{
|
||||||
$group_name = ($group_row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $group_row['group_name']] : $group_row['group_name'];
|
$group_name = ($group_row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $group_row['group_name']] : $group_row['group_name'];
|
||||||
|
group_user_attributes('default', $group_id, $mark_ary, false, $group_name, $group_row);
|
||||||
|
trigger_error($user->lang['GROUP_DEFS_UPDATED'] . adm_back_link($this->u_action . '&action=list&g=' . $group_id));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
confirm_box(false, $user->lang['CONFIRM_OPERATION'], build_hidden_fields(array(
|
||||||
|
'mark' => $mark_ary,
|
||||||
|
'g' => $group_id,
|
||||||
|
'i' => $id,
|
||||||
|
'mode' => $mode,
|
||||||
|
'action' => $action))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
if (!sizeof($mark_ary))
|
case 'set_default_on_all':
|
||||||
|
if (confirm_box(true))
|
||||||
|
{
|
||||||
|
$group_name = ($group_row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $group_row['group_name']] : $group_row['group_name'];
|
||||||
|
|
||||||
|
$start = 0;
|
||||||
|
|
||||||
|
do
|
||||||
{
|
{
|
||||||
$start = 0;
|
$sql = 'SELECT user_id
|
||||||
|
FROM ' . USER_GROUP_TABLE . "
|
||||||
|
WHERE group_id = $group_id
|
||||||
|
ORDER BY user_id";
|
||||||
|
$result = $db->sql_query_limit($sql, 200, $start);
|
||||||
|
|
||||||
do
|
$mark_ary = array();
|
||||||
|
if ($row = $db->sql_fetchrow($result))
|
||||||
{
|
{
|
||||||
$sql = 'SELECT user_id
|
do
|
||||||
FROM ' . USER_GROUP_TABLE . "
|
|
||||||
WHERE group_id = $group_id
|
|
||||||
ORDER BY user_id";
|
|
||||||
$result = $db->sql_query_limit($sql, 200, $start);
|
|
||||||
|
|
||||||
$mark_ary = array();
|
|
||||||
if ($row = $db->sql_fetchrow($result))
|
|
||||||
{
|
{
|
||||||
do
|
$mark_ary[] = $row['user_id'];
|
||||||
{
|
|
||||||
$mark_ary[] = $row['user_id'];
|
|
||||||
}
|
|
||||||
while ($row = $db->sql_fetchrow($result));
|
|
||||||
|
|
||||||
group_user_attributes('default', $group_id, $mark_ary, false, $group_name, $group_row);
|
|
||||||
|
|
||||||
$start = (sizeof($mark_ary) < 200) ? 0 : $start + 200;
|
|
||||||
}
|
}
|
||||||
else
|
while ($row = $db->sql_fetchrow($result));
|
||||||
{
|
|
||||||
$start = 0;
|
group_user_attributes('default', $group_id, $mark_ary, false, $group_name, $group_row);
|
||||||
}
|
|
||||||
$db->sql_freeresult($result);
|
$start = (sizeof($mark_ary) < 200) ? 0 : $start + 200;
|
||||||
}
|
}
|
||||||
while ($start);
|
else
|
||||||
}
|
{
|
||||||
else
|
$start = 0;
|
||||||
{
|
}
|
||||||
group_user_attributes('default', $group_id, $mark_ary, false, $group_name, $group_row);
|
$db->sql_freeresult($result);
|
||||||
}
|
}
|
||||||
|
while ($start);
|
||||||
|
|
||||||
trigger_error($user->lang['GROUP_DEFS_UPDATED'] . adm_back_link($this->u_action . '&action=list&g=' . $group_id));
|
trigger_error($user->lang['GROUP_DEFS_UPDATED'] . adm_back_link($this->u_action . '&action=list&g=' . $group_id));
|
||||||
}
|
}
|
||||||
|
@ -181,10 +203,13 @@ class acp_groups
|
||||||
'action' => $action))
|
'action' => $action))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'deleteusers':
|
case 'deleteusers':
|
||||||
|
if (empty($mark_ary))
|
||||||
|
{
|
||||||
|
trigger_error($user->lang['NO_USERS'] . adm_back_link($this->u_action . '&action=list&g=' . $group_id), E_USER_WARNING);
|
||||||
|
}
|
||||||
case 'delete':
|
case 'delete':
|
||||||
if (!$group_id)
|
if (!$group_id)
|
||||||
{
|
{
|
||||||
|
@ -239,6 +264,11 @@ class acp_groups
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'addusers':
|
case 'addusers':
|
||||||
|
if (!check_form_key($form_key))
|
||||||
|
{
|
||||||
|
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||||
|
}
|
||||||
|
|
||||||
if (!$group_id)
|
if (!$group_id)
|
||||||
{
|
{
|
||||||
trigger_error($user->lang['NO_GROUP'] . adm_back_link($this->u_action), E_USER_WARNING);
|
trigger_error($user->lang['NO_GROUP'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||||
|
@ -282,8 +312,21 @@ class acp_groups
|
||||||
$error = array();
|
$error = array();
|
||||||
$user->add_lang('ucp');
|
$user->add_lang('ucp');
|
||||||
|
|
||||||
$avatar_select = basename(request_var('avatar_select', ''));
|
// Setup avatar data for later
|
||||||
$category = basename(request_var('category', ''));
|
$avatars_enabled = false;
|
||||||
|
$avatar_drivers = null;
|
||||||
|
$avatar_data = null;
|
||||||
|
$avatar_error = array();
|
||||||
|
|
||||||
|
if ($config['allow_avatar'])
|
||||||
|
{
|
||||||
|
$phpbb_avatar_manager = $phpbb_container->get('avatar.manager');
|
||||||
|
$avatar_drivers = $phpbb_avatar_manager->get_enabled_drivers();
|
||||||
|
|
||||||
|
// This is normalised data, without the group_ prefix
|
||||||
|
$avatar_data = phpbb_avatar_manager::clean_row($group_row);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Did we submit?
|
// Did we submit?
|
||||||
if ($update)
|
if ($update)
|
||||||
|
@ -301,12 +344,6 @@ class acp_groups
|
||||||
$allow_desc_urls = request_var('desc_parse_urls', false);
|
$allow_desc_urls = request_var('desc_parse_urls', false);
|
||||||
$allow_desc_smilies = request_var('desc_parse_smilies', false);
|
$allow_desc_smilies = request_var('desc_parse_smilies', false);
|
||||||
|
|
||||||
$data['uploadurl'] = request_var('uploadurl', '');
|
|
||||||
$data['remotelink'] = request_var('remotelink', '');
|
|
||||||
$data['width'] = request_var('width', '');
|
|
||||||
$data['height'] = request_var('height', '');
|
|
||||||
$delete = request_var('delete', '');
|
|
||||||
|
|
||||||
$submit_ary = array(
|
$submit_ary = array(
|
||||||
'colour' => request_var('group_colour', ''),
|
'colour' => request_var('group_colour', ''),
|
||||||
'rank' => request_var('group_rank', 0),
|
'rank' => request_var('group_rank', 0),
|
||||||
|
@ -324,91 +361,56 @@ class acp_groups
|
||||||
$submit_ary['founder_manage'] = isset($_REQUEST['group_founder_manage']) ? 1 : 0;
|
$submit_ary['founder_manage'] = isset($_REQUEST['group_founder_manage']) ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
$uploadfile = $request->file('uploadfile');
|
if ($config['allow_avatar'])
|
||||||
if (!empty($uploadfile['tmp_name']) || $data['uploadurl'] || $data['remotelink'])
|
|
||||||
{
|
{
|
||||||
// Avatar stuff
|
// Handle avatar
|
||||||
$var_ary = array(
|
$driver_name = $phpbb_avatar_manager->clean_driver_name($request->variable('avatar_driver', ''));
|
||||||
'uploadurl' => array('string', true, 5, 255),
|
|
||||||
'remotelink' => array('string', true, 5, 255),
|
|
||||||
'width' => array('string', true, 1, 3),
|
|
||||||
'height' => array('string', true, 1, 3),
|
|
||||||
);
|
|
||||||
|
|
||||||
if (!($error = validate_data($data, $var_ary)))
|
if (in_array($driver_name, $avatar_drivers) && !$request->is_set_post('avatar_delete'))
|
||||||
{
|
{
|
||||||
$data['user_id'] = "g$group_id";
|
$driver = $phpbb_avatar_manager->get_driver($driver_name);
|
||||||
|
$result = $driver->process_form($request, $template, $user, $avatar_data, $avatar_error);
|
||||||
|
|
||||||
if ((!empty($uploadfile['tmp_name']) || $data['uploadurl']) && $can_upload)
|
if ($result && empty($avatar_error))
|
||||||
{
|
{
|
||||||
list($submit_ary['avatar_type'], $submit_ary['avatar'], $submit_ary['avatar_width'], $submit_ary['avatar_height']) = avatar_upload($data, $error);
|
$result['avatar_type'] = $driver_name;
|
||||||
}
|
$submit_ary = array_merge($submit_ary, $result);
|
||||||
else if ($data['remotelink'])
|
|
||||||
{
|
|
||||||
list($submit_ary['avatar_type'], $submit_ary['avatar'], $submit_ary['avatar_width'], $submit_ary['avatar_height']) = avatar_remote($data, $error);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
else
|
||||||
else if ($avatar_select && $config['allow_avatar_local'])
|
|
||||||
{
|
|
||||||
// check avatar gallery
|
|
||||||
if (is_dir($phpbb_root_path . $config['avatar_gallery_path'] . '/' . $category))
|
|
||||||
{
|
{
|
||||||
$submit_ary['avatar_type'] = AVATAR_GALLERY;
|
$driver = $phpbb_avatar_manager->get_driver($user->data['user_avatar_type']);
|
||||||
|
if ($driver)
|
||||||
list($submit_ary['avatar_width'], $submit_ary['avatar_height']) = getimagesize($phpbb_root_path . $config['avatar_gallery_path'] . '/' . $category . '/' . $avatar_select);
|
|
||||||
$submit_ary['avatar'] = $category . '/' . $avatar_select;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if ($delete)
|
|
||||||
{
|
|
||||||
$submit_ary['avatar'] = '';
|
|
||||||
$submit_ary['avatar_type'] = $submit_ary['avatar_width'] = $submit_ary['avatar_height'] = 0;
|
|
||||||
}
|
|
||||||
else if ($data['width'] && $data['height'])
|
|
||||||
{
|
|
||||||
// Only update the dimensions?
|
|
||||||
if ($config['avatar_max_width'] || $config['avatar_max_height'])
|
|
||||||
{
|
|
||||||
if ($data['width'] > $config['avatar_max_width'] || $data['height'] > $config['avatar_max_height'])
|
|
||||||
{
|
{
|
||||||
$error[] = phpbb_avatar_error_wrong_size($data['width'], $data['height']);
|
$driver->delete($avatar_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Removing the avatar
|
||||||
|
$submit_ary['avatar_type'] = '';
|
||||||
|
$submit_ary['avatar'] = '';
|
||||||
|
$submit_ary['avatar_width'] = 0;
|
||||||
|
$submit_ary['avatar_height'] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!sizeof($error))
|
// Merge any avatar errors into the primary error array
|
||||||
{
|
$error = array_merge($error, $phpbb_avatar_manager->localize_errors($user, $avatar_error));
|
||||||
if ($config['avatar_min_width'] || $config['avatar_min_height'])
|
|
||||||
{
|
|
||||||
if ($data['width'] < $config['avatar_min_width'] || $data['height'] < $config['avatar_min_height'])
|
|
||||||
{
|
|
||||||
$error[] = phpbb_avatar_error_wrong_size($data['width'], $data['height']);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!sizeof($error))
|
|
||||||
{
|
|
||||||
$submit_ary['avatar_width'] = $data['width'];
|
|
||||||
$submit_ary['avatar_height'] = $data['height'];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((isset($submit_ary['avatar']) && $submit_ary['avatar'] && (!isset($group_row['group_avatar']))) || $delete)
|
/*
|
||||||
{
|
* Validate the length of "Maximum number of allowed recipients per
|
||||||
if (isset($group_row['group_avatar']) && $group_row['group_avatar'])
|
* private message" setting. We use 16777215 as a maximum because it matches
|
||||||
{
|
* MySQL unsigned mediumint maximum value which is the lowest amongst DBMSes
|
||||||
avatar_delete('group', $group_row, true);
|
* supported by phpBB3. Also validate the submitted colour value.
|
||||||
}
|
*/
|
||||||
}
|
$validation_checks = array(
|
||||||
|
'max_recipients' => array('num', false, 0, 16777215),
|
||||||
|
'colour' => array('hex_colour', true),
|
||||||
|
);
|
||||||
|
|
||||||
// Validate the length of "Maximum number of allowed recipients per private message" setting.
|
if ($validation_error = validate_data($submit_ary, $validation_checks))
|
||||||
// We use 16777215 as a maximum because it matches MySQL unsigned mediumint maximum value
|
|
||||||
// which is the lowest amongst DBMSes supported by phpBB3
|
|
||||||
if ($max_recipients_error = validate_data($submit_ary, array('max_recipients' => array('num', false, 0, 16777215))))
|
|
||||||
{
|
{
|
||||||
// Replace "error" string with its real, localised form
|
// Replace "error" string with its real, localised form
|
||||||
$error = array_merge($error, array_map(array(&$user, 'lang'), $max_recipients_error));
|
$error = array_merge($error, $validation_error);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!sizeof($error))
|
if (!sizeof($error))
|
||||||
|
@ -425,7 +427,7 @@ class acp_groups
|
||||||
'rank' => 'int',
|
'rank' => 'int',
|
||||||
'colour' => 'string',
|
'colour' => 'string',
|
||||||
'avatar' => 'string',
|
'avatar' => 'string',
|
||||||
'avatar_type' => 'int',
|
'avatar_type' => 'string',
|
||||||
'avatar_width' => 'int',
|
'avatar_width' => 'int',
|
||||||
'avatar_height' => 'int',
|
'avatar_height' => 'int',
|
||||||
'receive_pm' => 'int',
|
'receive_pm' => 'int',
|
||||||
|
@ -439,7 +441,7 @@ class acp_groups
|
||||||
|
|
||||||
foreach ($test_variables as $test => $type)
|
foreach ($test_variables as $test => $type)
|
||||||
{
|
{
|
||||||
if (isset($submit_ary[$test]) && ($action == 'add' || $group_row['group_' . $test] != $submit_ary[$test] || in_array($test, $set_attributes)))
|
if (isset($submit_ary[$test]) && ($action == 'add' || $group_row['group_' . $test] != $submit_ary[$test] || isset($group_attributes['group_avatar']) && strpos($test, 'avatar') === 0 || in_array($test, $set_attributes)))
|
||||||
{
|
{
|
||||||
settype($submit_ary[$test], $type);
|
settype($submit_ary[$test], $type);
|
||||||
$group_attributes['group_' . $test] = $group_row['group_' . $test] = $submit_ary[$test];
|
$group_attributes['group_' . $test] = $group_row['group_' . $test] = $submit_ary[$test];
|
||||||
|
@ -496,7 +498,7 @@ class acp_groups
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$cache->destroy('sql', GROUPS_TABLE);
|
$cache->destroy('sql', array(GROUPS_TABLE, TEAMPAGE_TABLE));
|
||||||
|
|
||||||
$message = ($action == 'edit') ? 'GROUP_UPDATED' : 'GROUP_CREATED';
|
$message = ($action == 'edit') ? 'GROUP_UPDATED' : 'GROUP_CREATED';
|
||||||
trigger_error($user->lang[$message] . adm_back_link($this->u_action));
|
trigger_error($user->lang[$message] . adm_back_link($this->u_action));
|
||||||
|
@ -505,6 +507,7 @@ class acp_groups
|
||||||
|
|
||||||
if (sizeof($error))
|
if (sizeof($error))
|
||||||
{
|
{
|
||||||
|
$error = array_map(array(&$user, 'lang'), $error);
|
||||||
$group_rank = $submit_ary['rank'];
|
$group_rank = $submit_ary['rank'];
|
||||||
|
|
||||||
$group_desc_data = array(
|
$group_desc_data = array(
|
||||||
|
@ -555,13 +558,44 @@ class acp_groups
|
||||||
$type_closed = ($group_type == GROUP_CLOSED) ? ' checked="checked"' : '';
|
$type_closed = ($group_type == GROUP_CLOSED) ? ' checked="checked"' : '';
|
||||||
$type_hidden = ($group_type == GROUP_HIDDEN) ? ' checked="checked"' : '';
|
$type_hidden = ($group_type == GROUP_HIDDEN) ? ' checked="checked"' : '';
|
||||||
|
|
||||||
$avatar_img = (!empty($group_row['group_avatar'])) ? get_user_avatar($group_row['group_avatar'], $group_row['group_avatar_type'], $group_row['group_avatar_width'], $group_row['group_avatar_height'], 'GROUP_AVATAR') : '<img src="' . $phpbb_admin_path . 'images/no_avatar.gif" alt="" />';
|
// Load up stuff for avatars
|
||||||
|
if ($config['allow_avatar'])
|
||||||
$display_gallery = (isset($_POST['display_gallery'])) ? true : false;
|
|
||||||
|
|
||||||
if ($config['allow_avatar_local'] && $display_gallery)
|
|
||||||
{
|
{
|
||||||
avatar_gallery($category, $avatar_select, 4);
|
$avatars_enabled = false;
|
||||||
|
$selected_driver = $phpbb_avatar_manager->clean_driver_name($request->variable('avatar_driver', $avatar_data['avatar_type']));
|
||||||
|
|
||||||
|
foreach ($avatar_drivers as $current_driver)
|
||||||
|
{
|
||||||
|
$driver = $phpbb_avatar_manager->get_driver($current_driver);
|
||||||
|
|
||||||
|
$avatars_enabled = true;
|
||||||
|
$config_name = $phpbb_avatar_manager->get_driver_config_name($driver);
|
||||||
|
$template->set_filenames(array(
|
||||||
|
'avatar' => "acp_avatar_options_{$config_name}.html",
|
||||||
|
));
|
||||||
|
|
||||||
|
if ($driver->prepare_form($request, $template, $user, $avatar_data, $avatar_error))
|
||||||
|
{
|
||||||
|
$driver_name = $phpbb_avatar_manager->prepare_driver_name($current_driver);
|
||||||
|
$driver_upper = strtoupper($driver_name);
|
||||||
|
$template->assign_block_vars('avatar_drivers', array(
|
||||||
|
'L_TITLE' => $user->lang($driver_upper . '_TITLE'),
|
||||||
|
'L_EXPLAIN' => $user->lang($driver_upper . '_EXPLAIN'),
|
||||||
|
|
||||||
|
'DRIVER' => $driver_name,
|
||||||
|
'SELECTED' => $current_driver == $selected_driver,
|
||||||
|
'OUTPUT' => $template->assign_display('avatar'),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$avatar = phpbb_get_group_avatar($group_row, 'GROUP_AVATAR', true);
|
||||||
|
|
||||||
|
if (isset($phpbb_avatar_manager) && !$update)
|
||||||
|
{
|
||||||
|
// Merge any avatar errors into the primary error array
|
||||||
|
$error = array_merge($error, $phpbb_avatar_manager->localize_errors($user, $avatar_error));
|
||||||
}
|
}
|
||||||
|
|
||||||
$back_link = request_var('back_link', '');
|
$back_link = request_var('back_link', '');
|
||||||
|
@ -582,12 +616,10 @@ class acp_groups
|
||||||
'S_ADD_GROUP' => ($action == 'add') ? true : false,
|
'S_ADD_GROUP' => ($action == 'add') ? true : false,
|
||||||
'S_GROUP_PERM' => ($action == 'add' && $auth->acl_get('a_authgroups') && $auth->acl_gets('a_aauth', 'a_fauth', 'a_mauth', 'a_uauth')) ? true : false,
|
'S_GROUP_PERM' => ($action == 'add' && $auth->acl_get('a_authgroups') && $auth->acl_gets('a_aauth', 'a_fauth', 'a_mauth', 'a_uauth')) ? true : false,
|
||||||
'S_INCLUDE_SWATCH' => true,
|
'S_INCLUDE_SWATCH' => true,
|
||||||
'S_CAN_UPLOAD' => $can_upload,
|
|
||||||
'S_ERROR' => (sizeof($error)) ? true : false,
|
'S_ERROR' => (sizeof($error)) ? true : false,
|
||||||
'S_SPECIAL_GROUP' => ($group_type == GROUP_SPECIAL) ? true : false,
|
'S_SPECIAL_GROUP' => ($group_type == GROUP_SPECIAL) ? true : false,
|
||||||
'S_DISPLAY_GALLERY' => ($config['allow_avatar_local'] && !$display_gallery) ? true : false,
|
|
||||||
'S_IN_GALLERY' => ($config['allow_avatar_local'] && $display_gallery) ? true : false,
|
|
||||||
'S_USER_FOUNDER' => ($user->data['user_type'] == USER_FOUNDER) ? true : false,
|
'S_USER_FOUNDER' => ($user->data['user_type'] == USER_FOUNDER) ? true : false,
|
||||||
|
'S_AVATARS_ENABLED' => ($config['allow_avatar'] && $avatars_enabled),
|
||||||
|
|
||||||
'ERROR_MSG' => (sizeof($error)) ? implode('<br />', $error) : '',
|
'ERROR_MSG' => (sizeof($error)) ? implode('<br />', $error) : '',
|
||||||
'GROUP_NAME' => ($group_type == GROUP_SPECIAL) ? $user->lang['G_' . $group_name] : $group_name,
|
'GROUP_NAME' => ($group_type == GROUP_SPECIAL) ? $user->lang['G_' . $group_name] : $group_name,
|
||||||
|
@ -608,8 +640,7 @@ class acp_groups
|
||||||
|
|
||||||
'S_RANK_OPTIONS' => $rank_options,
|
'S_RANK_OPTIONS' => $rank_options,
|
||||||
'S_GROUP_OPTIONS' => group_select_options(false, false, (($user->data['user_type'] == USER_FOUNDER) ? false : 0)),
|
'S_GROUP_OPTIONS' => group_select_options(false, false, (($user->data['user_type'] == USER_FOUNDER) ? false : 0)),
|
||||||
'AVATAR' => $avatar_img,
|
'AVATAR' => empty($avatar) ? '<img src="' . $phpbb_admin_path . 'images/no_avatar.gif" alt="" />' : $avatar,
|
||||||
'AVATAR_IMAGE' => $avatar_img,
|
|
||||||
'AVATAR_MAX_FILESIZE' => $config['avatar_filesize'],
|
'AVATAR_MAX_FILESIZE' => $config['avatar_filesize'],
|
||||||
'AVATAR_WIDTH' => (isset($group_row['group_avatar_width'])) ? $group_row['group_avatar_width'] : '',
|
'AVATAR_WIDTH' => (isset($group_row['group_avatar_width'])) ? $group_row['group_avatar_width'] : '',
|
||||||
'AVATAR_HEIGHT' => (isset($group_row['group_avatar_height'])) ? $group_row['group_avatar_height'] : '',
|
'AVATAR_HEIGHT' => (isset($group_row['group_avatar_height'])) ? $group_row['group_avatar_height'] : '',
|
||||||
|
@ -698,7 +729,7 @@ class acp_groups
|
||||||
'U_ACTION' => $this->u_action . "&g=$group_id",
|
'U_ACTION' => $this->u_action . "&g=$group_id",
|
||||||
'U_BACK' => $this->u_action,
|
'U_BACK' => $this->u_action,
|
||||||
'U_FIND_USERNAME' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&form=list&field=usernames'),
|
'U_FIND_USERNAME' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&form=list&field=usernames'),
|
||||||
'U_DEFAULT_ALL' => "{$this->u_action}&action=default&g=$group_id",
|
'U_DEFAULT_ALL' => "{$this->u_action}&action=set_default_on_all&g=$group_id",
|
||||||
));
|
));
|
||||||
|
|
||||||
// Grab the members
|
// Grab the members
|
||||||
|
@ -811,56 +842,114 @@ class acp_groups
|
||||||
|
|
||||||
public function manage_position()
|
public function manage_position()
|
||||||
{
|
{
|
||||||
global $config, $db, $template, $user;
|
global $config, $db, $template, $user, $request, $phpbb_container;
|
||||||
|
|
||||||
$this->tpl_name = 'acp_groups_position';
|
$this->tpl_name = 'acp_groups_position';
|
||||||
$this->page_title = 'ACP_GROUPS_POSITION';
|
$this->page_title = 'ACP_GROUPS_POSITION';
|
||||||
|
|
||||||
$field = request_var('field', '');
|
$field = $request->variable('field', '');
|
||||||
$action = request_var('action', '');
|
$action = $request->variable('action', '');
|
||||||
$group_id = request_var('g', 0);
|
$group_id = $request->variable('g', 0);
|
||||||
|
$teampage_id = $request->variable('t', 0);
|
||||||
|
$category_id = $request->variable('c', 0);
|
||||||
|
|
||||||
if ($field && !in_array($field, array('legend', 'teampage')))
|
if ($field && !in_array($field, array('legend', 'teampage')))
|
||||||
{
|
{
|
||||||
// Invalid mode
|
// Invalid mode
|
||||||
trigger_error($user->lang['NO_MODE'] . adm_back_link($this->u_action), E_USER_WARNING);
|
trigger_error($user->lang['NO_MODE'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||||
}
|
}
|
||||||
else if ($field)
|
else if ($field && in_array($field, array('legend', 'teampage')))
|
||||||
{
|
{
|
||||||
$group_position = new phpbb_group_positions($db, $field, $this->u_action);
|
|
||||||
|
$group_position = $phpbb_container->get('groupposition.' . $field);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch ($action)
|
if ($field == 'teampage')
|
||||||
{
|
{
|
||||||
case 'set_config_legend':
|
try
|
||||||
set_config('legend_sort_groupname', request_var('legend_sort_groupname', 0));
|
{
|
||||||
break;
|
switch ($action)
|
||||||
|
{
|
||||||
|
case 'add':
|
||||||
|
$group_position->add_group_teampage($group_id, $category_id);
|
||||||
|
break;
|
||||||
|
|
||||||
case 'set_config_teampage':
|
case 'add_category':
|
||||||
set_config('teampage_forums', request_var('teampage_forums', 0));
|
$group_position->add_category_teampage($request->variable('category_name', '', true));
|
||||||
set_config('teampage_memberships', request_var('teampage_memberships', 0));
|
break;
|
||||||
break;
|
|
||||||
|
|
||||||
case 'add':
|
case 'delete':
|
||||||
$group_position->add_group($group_id);
|
$group_position->delete_teampage($teampage_id);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'delete':
|
case 'move_up':
|
||||||
$group_position->delete_group($group_id);
|
$group_position->move_up_teampage($teampage_id);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'move_up':
|
case 'move_down':
|
||||||
$group_position->move_up($group_id);
|
$group_position->move_down_teampage($teampage_id);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (phpbb_groupposition_exception $exception)
|
||||||
|
{
|
||||||
|
trigger_error($user->lang($exception->getMessage()) . adm_back_link($this->u_action), E_USER_WARNING);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ($field == 'legend')
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
switch ($action)
|
||||||
|
{
|
||||||
|
case 'add':
|
||||||
|
$group_position->add_group($group_id);
|
||||||
|
break;
|
||||||
|
|
||||||
case 'move_down':
|
case 'delete':
|
||||||
$group_position->move_down($group_id);
|
$group_position->delete_group($group_id);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'move_up':
|
||||||
|
$group_position->move_up($group_id);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'move_down':
|
||||||
|
$group_position->move_down($group_id);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (phpbb_groupposition_exception $exception)
|
||||||
|
{
|
||||||
|
trigger_error($user->lang($exception->getMessage()) . adm_back_link($this->u_action), E_USER_WARNING);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
switch ($action)
|
||||||
|
{
|
||||||
|
case 'set_config_teampage':
|
||||||
|
$config->set('teampage_forums', $request->variable('teampage_forums', 0));
|
||||||
|
$config->set('teampage_memberships', $request->variable('teampage_memberships', 0));
|
||||||
|
trigger_error($user->lang['CONFIG_UPDATED'] . adm_back_link($this->u_action));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'set_config_legend':
|
||||||
|
$config->set('legend_sort_groupname', $request->variable('legend_sort_groupname', 0));
|
||||||
|
trigger_error($user->lang['CONFIG_UPDATED'] . adm_back_link($this->u_action));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (($action == 'move_up' || $action == 'move_down') && $request->is_ajax())
|
||||||
|
{
|
||||||
|
$json_response = new phpbb_json_response;
|
||||||
|
$json_response->send(array('success' => true));
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql = 'SELECT group_id, group_name, group_colour, group_type, group_legend
|
$sql = 'SELECT group_id, group_name, group_colour, group_type, group_legend
|
||||||
FROM ' . GROUPS_TABLE . '
|
FROM ' . GROUPS_TABLE . '
|
||||||
ORDER BY group_legend, group_name ASC';
|
ORDER BY group_legend ASC, group_type DESC, group_name ASC';
|
||||||
$result = $db->sql_query($sql);
|
$result = $db->sql_query($sql);
|
||||||
|
|
||||||
$s_group_select_legend = '';
|
$s_group_select_legend = '';
|
||||||
|
@ -870,57 +959,99 @@ class acp_groups
|
||||||
if ($row['group_legend'])
|
if ($row['group_legend'])
|
||||||
{
|
{
|
||||||
$template->assign_block_vars('legend', array(
|
$template->assign_block_vars('legend', array(
|
||||||
'GROUP_NAME' => $group_name,
|
'GROUP_NAME' => $group_name,
|
||||||
'GROUP_COLOUR' => ($row['group_colour']) ? ' style="color: #' . $row['group_colour'] . '"' : '',
|
'GROUP_COLOUR' => ($row['group_colour']) ? '#' . $row['group_colour'] : '',
|
||||||
'GROUP_TYPE' => $user->lang[phpbb_group_positions::group_type_language($row['group_type'])],
|
'GROUP_TYPE' => $user->lang[phpbb_groupposition_legend::group_type_language($row['group_type'])],
|
||||||
|
|
||||||
'U_MOVE_DOWN' => "{$this->u_action}&field=legend&action=move_down&g=" . $row['group_id'],
|
'U_MOVE_DOWN' => "{$this->u_action}&field=legend&action=move_down&g=" . $row['group_id'],
|
||||||
'U_MOVE_UP' => "{$this->u_action}&field=legend&action=move_up&g=" . $row['group_id'],
|
'U_MOVE_UP' => "{$this->u_action}&field=legend&action=move_up&g=" . $row['group_id'],
|
||||||
'U_DELETE' => "{$this->u_action}&field=legend&action=delete&g=" . $row['group_id'],
|
'U_DELETE' => "{$this->u_action}&field=legend&action=delete&g=" . $row['group_id'],
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$s_group_select_legend .= '<option value="' . (int) $row['group_id'] . '">' . $group_name . '</option>';
|
$template->assign_block_vars('add_legend', array(
|
||||||
|
'GROUP_ID' => (int) $row['group_id'],
|
||||||
|
'GROUP_NAME' => $group_name,
|
||||||
|
'GROUP_SPECIAL' => ($row['group_type'] == GROUP_SPECIAL),
|
||||||
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
|
|
||||||
$sql = 'SELECT group_id, group_name, group_colour, group_type, group_teampage
|
$category_url_param = (($category_id) ? '&c=' . $category_id : '');
|
||||||
FROM ' . GROUPS_TABLE . '
|
|
||||||
ORDER BY group_teampage, group_name ASC';
|
$sql = 'SELECT t.*, g.group_name, g.group_colour, g.group_type
|
||||||
|
FROM ' . TEAMPAGE_TABLE . ' t
|
||||||
|
LEFT JOIN ' . GROUPS_TABLE . ' g
|
||||||
|
ON (t.group_id = g.group_id)
|
||||||
|
WHERE t.teampage_parent = ' . $category_id . '
|
||||||
|
OR t.teampage_id = ' . $category_id . '
|
||||||
|
ORDER BY t.teampage_position ASC';
|
||||||
|
$result = $db->sql_query($sql);
|
||||||
|
|
||||||
|
$category_data = array();
|
||||||
|
while ($row = $db->sql_fetchrow($result))
|
||||||
|
{
|
||||||
|
if ($row['teampage_id'] == $category_id)
|
||||||
|
{
|
||||||
|
$template->assign_vars(array(
|
||||||
|
'CURRENT_CATEGORY_NAME' => $row['teampage_name'],
|
||||||
|
));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($row['group_id'])
|
||||||
|
{
|
||||||
|
$group_name = ($row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $row['group_name']] : $row['group_name'];
|
||||||
|
$group_type = $user->lang[phpbb_groupposition_teampage::group_type_language($row['group_type'])];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$group_name = $row['teampage_name'];
|
||||||
|
$group_type = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
$template->assign_block_vars('teampage', array(
|
||||||
|
'GROUP_NAME' => $group_name,
|
||||||
|
'GROUP_COLOUR' => ($row['group_colour']) ? '#' . $row['group_colour'] : '',
|
||||||
|
'GROUP_TYPE' => $group_type,
|
||||||
|
|
||||||
|
'U_CATEGORY' => (!$row['group_id']) ? "{$this->u_action}&c=" . $row['teampage_id'] : '',
|
||||||
|
'U_MOVE_DOWN' => "{$this->u_action}&field=teampage&action=move_down{$category_url_param}&t=" . $row['teampage_id'],
|
||||||
|
'U_MOVE_UP' => "{$this->u_action}&field=teampage&action=move_up{$category_url_param}&t=" . $row['teampage_id'],
|
||||||
|
'U_DELETE' => "{$this->u_action}&field=teampage&action=delete{$category_url_param}&t=" . $row['teampage_id'],
|
||||||
|
));
|
||||||
|
}
|
||||||
|
$db->sql_freeresult($result);
|
||||||
|
|
||||||
|
$sql = 'SELECT g.group_id, g.group_name, g.group_colour, g.group_type
|
||||||
|
FROM ' . GROUPS_TABLE . ' g
|
||||||
|
LEFT JOIN ' . TEAMPAGE_TABLE . ' t
|
||||||
|
ON (t.group_id = g.group_id)
|
||||||
|
WHERE t.teampage_id IS NULL
|
||||||
|
ORDER BY g.group_type DESC, g.group_name ASC';
|
||||||
$result = $db->sql_query($sql);
|
$result = $db->sql_query($sql);
|
||||||
|
|
||||||
$s_group_select_teampage = '';
|
$s_group_select_teampage = '';
|
||||||
while ($row = $db->sql_fetchrow($result))
|
while ($row = $db->sql_fetchrow($result))
|
||||||
{
|
{
|
||||||
$group_name = ($row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $row['group_name']] : $row['group_name'];
|
$group_name = ($row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $row['group_name']] : $row['group_name'];
|
||||||
if ($row['group_teampage'])
|
$template->assign_block_vars('add_teampage', array(
|
||||||
{
|
'GROUP_ID' => (int) $row['group_id'],
|
||||||
$template->assign_block_vars('teampage', array(
|
'GROUP_NAME' => $group_name,
|
||||||
'GROUP_NAME' => $group_name,
|
'GROUP_SPECIAL' => ($row['group_type'] == GROUP_SPECIAL),
|
||||||
'GROUP_COLOUR' => ($row['group_colour']) ? ' style="color: #' . $row['group_colour'] . '"' : '',
|
));
|
||||||
'GROUP_TYPE' => $user->lang[phpbb_group_positions::group_type_language($row['group_type'])],
|
|
||||||
|
|
||||||
'U_MOVE_DOWN' => "{$this->u_action}&field=teampage&action=move_down&g=" . $row['group_id'],
|
|
||||||
'U_MOVE_UP' => "{$this->u_action}&field=teampage&action=move_up&g=" . $row['group_id'],
|
|
||||||
'U_DELETE' => "{$this->u_action}&field=teampage&action=delete&g=" . $row['group_id'],
|
|
||||||
));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$s_group_select_teampage .= '<option value="' . (int) $row['group_id'] . '">' . $group_name . '</option>';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
|
|
||||||
$template->assign_vars(array(
|
$template->assign_vars(array(
|
||||||
'U_ACTION' => $this->u_action,
|
'U_ACTION' => $this->u_action,
|
||||||
'U_ACTION_LEGEND' => $this->u_action . '&field=legend',
|
'U_ACTION_LEGEND' => $this->u_action . '&field=legend',
|
||||||
'U_ACTION_TEAMPAGE' => $this->u_action . '&field=teampage',
|
'U_ACTION_TEAMPAGE' => $this->u_action . '&field=teampage' . $category_url_param,
|
||||||
|
'U_ACTION_TEAMPAGE_CAT' => $this->u_action . '&field=teampage_cat',
|
||||||
|
|
||||||
'S_GROUP_SELECT_LEGEND' => $s_group_select_legend,
|
'S_TEAMPAGE_CATEGORY' => $category_id,
|
||||||
'S_GROUP_SELECT_TEAMPAGE' => $s_group_select_teampage,
|
|
||||||
'DISPLAY_FORUMS' => ($config['teampage_forums']) ? true : false,
|
'DISPLAY_FORUMS' => ($config['teampage_forums']) ? true : false,
|
||||||
'DISPLAY_MEMBERSHIPS' => $config['teampage_memberships'],
|
'DISPLAY_MEMBERSHIPS' => $config['teampage_memberships'],
|
||||||
'LEGEND_SORT_GROUPNAME' => ($config['legend_sort_groupname']) ? true : false,
|
'LEGEND_SORT_GROUPNAME' => ($config['legend_sort_groupname']) ? true : false,
|
||||||
|
|
|
@ -115,7 +115,7 @@ class acp_inactive
|
||||||
{
|
{
|
||||||
$messenger->template('admin_welcome_activated', $row['user_lang']);
|
$messenger->template('admin_welcome_activated', $row['user_lang']);
|
||||||
|
|
||||||
$messenger->to($row['user_email'], $row['username']);
|
$messenger->set_addresses($row);
|
||||||
|
|
||||||
$messenger->anti_abuse_headers($config, $user);
|
$messenger->anti_abuse_headers($config, $user);
|
||||||
|
|
||||||
|
@ -203,8 +203,7 @@ class acp_inactive
|
||||||
{
|
{
|
||||||
$messenger->template('user_remind_inactive', $row['user_lang']);
|
$messenger->template('user_remind_inactive', $row['user_lang']);
|
||||||
|
|
||||||
$messenger->to($row['user_email'], $row['username']);
|
$messenger->set_addresses($row);
|
||||||
$messenger->im($row['user_jabber'], $row['username']);
|
|
||||||
|
|
||||||
$messenger->anti_abuse_headers($config, $user);
|
$messenger->anti_abuse_headers($config, $user);
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@ class acp_main
|
||||||
|
|
||||||
function main($id, $mode)
|
function main($id, $mode)
|
||||||
{
|
{
|
||||||
global $config, $db, $user, $auth, $template, $request;
|
global $config, $db, $cache, $user, $auth, $template, $request;
|
||||||
global $phpbb_root_path, $phpbb_admin_path, $phpEx;
|
global $phpbb_root_path, $phpbb_admin_path, $phpEx;
|
||||||
|
|
||||||
// Show restore permissions notice
|
// Show restore permissions notice
|
||||||
|
@ -63,9 +63,7 @@ class acp_main
|
||||||
if ($action === 'admlogout')
|
if ($action === 'admlogout')
|
||||||
{
|
{
|
||||||
$user->unset_admin();
|
$user->unset_admin();
|
||||||
$redirect_url = append_sid("{$phpbb_root_path}index.$phpEx");
|
redirect(append_sid("{$phpbb_root_path}index.$phpEx"));
|
||||||
meta_refresh(3, $redirect_url);
|
|
||||||
trigger_error($user->lang['ADM_LOGGED_OUT'] . '<br /><br />' . sprintf($user->lang['RETURN_INDEX'], '<a href="' . $redirect_url . '">', '</a>'));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!confirm_box(true))
|
if (!confirm_box(true))
|
||||||
|
@ -129,7 +127,7 @@ class acp_main
|
||||||
set_config('record_online_users', 1, true);
|
set_config('record_online_users', 1, true);
|
||||||
set_config('record_online_date', time(), true);
|
set_config('record_online_date', time(), true);
|
||||||
add_log('admin', 'LOG_RESET_ONLINE');
|
add_log('admin', 'LOG_RESET_ONLINE');
|
||||||
|
|
||||||
if ($request->is_ajax())
|
if ($request->is_ajax())
|
||||||
{
|
{
|
||||||
trigger_error('RESET_ONLINE_SUCCESS');
|
trigger_error('RESET_ONLINE_SUCCESS');
|
||||||
|
@ -144,14 +142,14 @@ class acp_main
|
||||||
|
|
||||||
$sql = 'SELECT COUNT(post_id) AS stat
|
$sql = 'SELECT COUNT(post_id) AS stat
|
||||||
FROM ' . POSTS_TABLE . '
|
FROM ' . POSTS_TABLE . '
|
||||||
WHERE post_approved = 1';
|
WHERE post_visibility = ' . ITEM_APPROVED;
|
||||||
$result = $db->sql_query($sql);
|
$result = $db->sql_query($sql);
|
||||||
set_config('num_posts', (int) $db->sql_fetchfield('stat'), true);
|
set_config('num_posts', (int) $db->sql_fetchfield('stat'), true);
|
||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
|
|
||||||
$sql = 'SELECT COUNT(topic_id) AS stat
|
$sql = 'SELECT COUNT(topic_id) AS stat
|
||||||
FROM ' . TOPICS_TABLE . '
|
FROM ' . TOPICS_TABLE . '
|
||||||
WHERE topic_approved = 1';
|
WHERE topic_visibility = ' . ITEM_APPROVED;
|
||||||
$result = $db->sql_query($sql);
|
$result = $db->sql_query($sql);
|
||||||
set_config('num_topics', (int) $db->sql_fetchfield('stat'), true);
|
set_config('num_topics', (int) $db->sql_fetchfield('stat'), true);
|
||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
|
@ -184,7 +182,7 @@ class acp_main
|
||||||
update_last_username();
|
update_last_username();
|
||||||
|
|
||||||
add_log('admin', 'LOG_RESYNC_STATS');
|
add_log('admin', 'LOG_RESYNC_STATS');
|
||||||
|
|
||||||
if ($request->is_ajax())
|
if ($request->is_ajax())
|
||||||
{
|
{
|
||||||
trigger_error('RESYNC_STATS_SUCCESS');
|
trigger_error('RESYNC_STATS_SUCCESS');
|
||||||
|
@ -232,7 +230,7 @@ class acp_main
|
||||||
$sql = 'SELECT COUNT(post_id) AS num_posts, poster_id
|
$sql = 'SELECT COUNT(post_id) AS num_posts, poster_id
|
||||||
FROM ' . POSTS_TABLE . '
|
FROM ' . POSTS_TABLE . '
|
||||||
WHERE post_id BETWEEN ' . ($start + 1) . ' AND ' . ($start + $step) . '
|
WHERE post_id BETWEEN ' . ($start + 1) . ' AND ' . ($start + $step) . '
|
||||||
AND post_postcount = 1 AND post_approved = 1
|
AND post_postcount = 1 AND post_visibility = ' . ITEM_APPROVED . '
|
||||||
GROUP BY poster_id';
|
GROUP BY poster_id';
|
||||||
$result = $db->sql_query($sql);
|
$result = $db->sql_query($sql);
|
||||||
|
|
||||||
|
@ -251,7 +249,7 @@ class acp_main
|
||||||
}
|
}
|
||||||
|
|
||||||
add_log('admin', 'LOG_RESYNC_POSTCOUNTS');
|
add_log('admin', 'LOG_RESYNC_POSTCOUNTS');
|
||||||
|
|
||||||
if ($request->is_ajax())
|
if ($request->is_ajax())
|
||||||
{
|
{
|
||||||
trigger_error('RESYNC_POSTCOUNTS_SUCCESS');
|
trigger_error('RESYNC_POSTCOUNTS_SUCCESS');
|
||||||
|
@ -266,7 +264,7 @@ class acp_main
|
||||||
|
|
||||||
set_config('board_startdate', time() - 1);
|
set_config('board_startdate', time() - 1);
|
||||||
add_log('admin', 'LOG_RESET_DATE');
|
add_log('admin', 'LOG_RESET_DATE');
|
||||||
|
|
||||||
if ($request->is_ajax())
|
if ($request->is_ajax())
|
||||||
{
|
{
|
||||||
trigger_error('RESET_DATE_SUCCESS');
|
trigger_error('RESET_DATE_SUCCESS');
|
||||||
|
@ -346,7 +344,7 @@ class acp_main
|
||||||
}
|
}
|
||||||
|
|
||||||
add_log('admin', 'LOG_RESYNC_POST_MARKING');
|
add_log('admin', 'LOG_RESYNC_POST_MARKING');
|
||||||
|
|
||||||
if ($request->is_ajax())
|
if ($request->is_ajax())
|
||||||
{
|
{
|
||||||
trigger_error('RESYNC_POST_MARKING_SUCCESS');
|
trigger_error('RESYNC_POST_MARKING_SUCCESS');
|
||||||
|
@ -359,10 +357,10 @@ class acp_main
|
||||||
|
|
||||||
// Clear permissions
|
// Clear permissions
|
||||||
$auth->acl_clear_prefetch();
|
$auth->acl_clear_prefetch();
|
||||||
cache_moderators();
|
phpbb_cache_moderators($db, $cache, $auth);
|
||||||
|
|
||||||
add_log('admin', 'LOG_PURGE_CACHE');
|
add_log('admin', 'LOG_PURGE_CACHE');
|
||||||
|
|
||||||
if ($request->is_ajax())
|
if ($request->is_ajax())
|
||||||
{
|
{
|
||||||
trigger_error('PURGE_CACHE_SUCCESS');
|
trigger_error('PURGE_CACHE_SUCCESS');
|
||||||
|
@ -413,7 +411,7 @@ class acp_main
|
||||||
$db->sql_query($sql);
|
$db->sql_query($sql);
|
||||||
|
|
||||||
add_log('admin', 'LOG_PURGE_SESSIONS');
|
add_log('admin', 'LOG_PURGE_SESSIONS');
|
||||||
|
|
||||||
if ($request->is_ajax())
|
if ($request->is_ajax())
|
||||||
{
|
{
|
||||||
trigger_error('PURGE_SESSIONS_SUCCESS');
|
trigger_error('PURGE_SESSIONS_SUCCESS');
|
||||||
|
@ -430,7 +428,7 @@ class acp_main
|
||||||
{
|
{
|
||||||
$template->assign_vars(array(
|
$template->assign_vars(array(
|
||||||
'S_PHP_VERSION_OLD' => true,
|
'S_PHP_VERSION_OLD' => true,
|
||||||
'L_PHP_VERSION_OLD' => sprintf($user->lang['PHP_VERSION_OLD'], '<a href="http://www.phpbb.com/community/viewtopic.php?f=14&t=2152375">', '</a>'),
|
'L_PHP_VERSION_OLD' => sprintf($user->lang['PHP_VERSION_OLD'], '<a href="https://www.phpbb.com/community/viewtopic.php?f=14&t=2152375">', '</a>'),
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -379,6 +379,7 @@ class acp_modules
|
||||||
$json_response->send(array(
|
$json_response->send(array(
|
||||||
'MESSAGE_TITLE' => $user->lang('ERROR'),
|
'MESSAGE_TITLE' => $user->lang('ERROR'),
|
||||||
'MESSAGE_TEXT' => implode('<br />', $errors),
|
'MESSAGE_TEXT' => implode('<br />', $errors),
|
||||||
|
'SUCCESS' => false,
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -535,84 +536,76 @@ class acp_modules
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get available module information from module files
|
* Get available module information from module files
|
||||||
|
*
|
||||||
|
* @param string $module
|
||||||
|
* @param bool|string $module_class
|
||||||
|
* @param bool $use_all_available Use all available instead of just all
|
||||||
|
* enabled extensions
|
||||||
|
* @return array
|
||||||
*/
|
*/
|
||||||
function get_module_infos($module = '', $module_class = false)
|
function get_module_infos($module = '', $module_class = false, $use_all_available = false)
|
||||||
{
|
{
|
||||||
global $phpbb_root_path, $phpEx;
|
global $phpbb_extension_manager, $phpbb_root_path, $phpEx;
|
||||||
|
|
||||||
$module_class = ($module_class === false) ? $this->module_class : $module_class;
|
$module_class = ($module_class === false) ? $this->module_class : $module_class;
|
||||||
|
|
||||||
$directory = $phpbb_root_path . 'includes/' . $module_class . '/info/';
|
$directory = $phpbb_root_path . 'includes/' . $module_class . '/info/';
|
||||||
$fileinfo = array();
|
$fileinfo = array();
|
||||||
|
|
||||||
if (!$module)
|
$finder = $phpbb_extension_manager->get_finder();
|
||||||
|
|
||||||
|
$modules = $finder
|
||||||
|
->extension_suffix('_module')
|
||||||
|
->extension_directory("/$module_class")
|
||||||
|
->core_path("includes/$module_class/info/")
|
||||||
|
->core_prefix($module_class . '_')
|
||||||
|
->get_classes(true, $use_all_available);
|
||||||
|
|
||||||
|
foreach ($modules as $cur_module)
|
||||||
{
|
{
|
||||||
global $phpbb_extension_manager;
|
// Skip entries we do not need if we know the module we are
|
||||||
|
// looking for
|
||||||
$finder = $phpbb_extension_manager->get_finder();
|
if ($module && strpos($cur_module, $module) === false)
|
||||||
|
|
||||||
$modules = $finder
|
|
||||||
->extension_suffix('_module')
|
|
||||||
->extension_directory("/$module_class")
|
|
||||||
->core_path("includes/$module_class/info/")
|
|
||||||
->core_prefix($module_class . '_')
|
|
||||||
->get_classes();
|
|
||||||
|
|
||||||
foreach ($modules as $module)
|
|
||||||
{
|
{
|
||||||
$info_class = preg_replace('/_module$/', '_info', $module);
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
// If the class does not exist it might be following the old
|
$info_class = preg_replace('/_module$/', '_info', $cur_module);
|
||||||
// format. phpbb_acp_info_acp_foo needs to be turned into
|
|
||||||
// acp_foo_info and the respective file has to be included
|
// If the class does not exist it might be following the old
|
||||||
// manually because it does not support auto loading
|
// format. phpbb_acp_info_acp_foo needs to be turned into
|
||||||
if (!class_exists($info_class))
|
// acp_foo_info and the respective file has to be included
|
||||||
|
// manually because it does not support auto loading
|
||||||
|
$old_info_class_file = str_replace("phpbb_{$module_class}_info_", '', $cur_module);
|
||||||
|
$old_info_class = $old_info_class_file . '_info';
|
||||||
|
|
||||||
|
if (class_exists($old_info_class))
|
||||||
|
{
|
||||||
|
$info_class = $old_info_class;
|
||||||
|
}
|
||||||
|
else if (!class_exists($info_class))
|
||||||
|
{
|
||||||
|
$info_class = $old_info_class;
|
||||||
|
// need to check class exists again because previous checks triggered autoloading
|
||||||
|
if (!class_exists($info_class) && file_exists($directory . $old_info_class_file . '.' . $phpEx))
|
||||||
{
|
{
|
||||||
$info_class = str_replace("phpbb_{$module_class}_info_", '', $module) . '_info';
|
include($directory . $old_info_class_file . '.' . $phpEx);
|
||||||
if (file_exists($directory . $info_class . '.' . $phpEx))
|
|
||||||
{
|
|
||||||
include($directory . $info_class . '.' . $phpEx);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (class_exists($info_class))
|
|
||||||
{
|
|
||||||
$info = new $info_class();
|
|
||||||
$module_info = $info->module();
|
|
||||||
|
|
||||||
$main_class = (isset($module_info['filename'])) ? $module_info['filename'] : $module;
|
|
||||||
|
|
||||||
$fileinfo[$main_class] = $module_info;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ksort($fileinfo);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$info_class = preg_replace('/_module$/', '_info', $module);
|
|
||||||
|
|
||||||
if (!class_exists($info_class))
|
|
||||||
{
|
|
||||||
if (file_exists($directory . $module . '.' . $phpEx))
|
|
||||||
{
|
|
||||||
include($directory . $module . '.' . $phpEx);
|
|
||||||
}
|
|
||||||
$info_class = $module . '_info';
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get module title tag
|
|
||||||
if (class_exists($info_class))
|
if (class_exists($info_class))
|
||||||
{
|
{
|
||||||
$info = new $info_class();
|
$info = new $info_class();
|
||||||
$module_info = $info->module();
|
$module_info = $info->module();
|
||||||
|
|
||||||
$main_class = (isset($module_info['filename'])) ? $module_info['filename'] : $module;
|
$main_class = (isset($module_info['filename'])) ? $module_info['filename'] : $cur_module;
|
||||||
|
|
||||||
$fileinfo[$main_class] = $module_info;
|
$fileinfo[$main_class] = $module_info;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ksort($fileinfo);
|
||||||
|
|
||||||
return $fileinfo;
|
return $fileinfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -740,15 +733,15 @@ class acp_modules
|
||||||
*/
|
*/
|
||||||
function remove_cache_file()
|
function remove_cache_file()
|
||||||
{
|
{
|
||||||
global $cache;
|
global $phpbb_container;
|
||||||
|
|
||||||
// Sanitise for future path use, it's escaped as appropriate for queries
|
// Sanitise for future path use, it's escaped as appropriate for queries
|
||||||
$p_class = str_replace(array('.', '/', '\\'), '', basename($this->module_class));
|
$p_class = str_replace(array('.', '/', '\\'), '', basename($this->module_class));
|
||||||
|
|
||||||
$cache->destroy('_modules_' . $p_class);
|
$phpbb_container->get('cache.driver')->destroy('_modules_' . $p_class);
|
||||||
|
|
||||||
// Additionally remove sql cache
|
// Additionally remove sql cache
|
||||||
$cache->destroy('sql', MODULES_TABLE);
|
$phpbb_container->get('cache.driver')->destroy('sql', MODULES_TABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -21,16 +21,17 @@ if (!defined('IN_PHPBB'))
|
||||||
class acp_permission_roles
|
class acp_permission_roles
|
||||||
{
|
{
|
||||||
var $u_action;
|
var $u_action;
|
||||||
|
protected $auth_admin;
|
||||||
|
|
||||||
function main($id, $mode)
|
function main($id, $mode)
|
||||||
{
|
{
|
||||||
global $db, $user, $auth, $template, $cache;
|
global $db, $user, $auth, $template, $cache, $phpbb_container;
|
||||||
global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;
|
global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;
|
||||||
|
|
||||||
include_once($phpbb_root_path . 'includes/functions_user.' . $phpEx);
|
include_once($phpbb_root_path . 'includes/functions_user.' . $phpEx);
|
||||||
include_once($phpbb_root_path . 'includes/acp/auth.' . $phpEx);
|
include_once($phpbb_root_path . 'includes/acp/auth.' . $phpEx);
|
||||||
|
|
||||||
$auth_admin = new auth_admin();
|
$this->auth_admin = new auth_admin();
|
||||||
|
|
||||||
$user->add_lang('acp/permissions');
|
$user->add_lang('acp/permissions');
|
||||||
add_permission_language();
|
add_permission_language();
|
||||||
|
@ -210,7 +211,7 @@ class acp_permission_roles
|
||||||
}
|
}
|
||||||
|
|
||||||
// Now add the auth settings
|
// Now add the auth settings
|
||||||
$auth_admin->acl_set_role($role_id, $auth_settings);
|
$this->auth_admin->acl_set_role($role_id, $auth_settings);
|
||||||
|
|
||||||
$role_name = (!empty($user->lang[$role_name])) ? $user->lang[$role_name] : $role_name;
|
$role_name = (!empty($user->lang[$role_name])) ? $user->lang[$role_name] : $role_name;
|
||||||
add_log('admin', 'LOG_' . strtoupper($permission_type) . 'ROLE_' . strtoupper($action), $role_name);
|
add_log('admin', 'LOG_' . strtoupper($permission_type) . 'ROLE_' . strtoupper($action), $role_name);
|
||||||
|
@ -305,6 +306,8 @@ class acp_permission_roles
|
||||||
trigger_error($user->lang['NO_ROLE_SELECTED'] . adm_back_link($this->u_action), E_USER_WARNING);
|
trigger_error($user->lang['NO_ROLE_SELECTED'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$phpbb_permissions = $phpbb_container->get('acl.permissions');
|
||||||
|
|
||||||
$template->assign_vars(array(
|
$template->assign_vars(array(
|
||||||
'S_EDIT' => true,
|
'S_EDIT' => true,
|
||||||
|
|
||||||
|
@ -313,9 +316,8 @@ class acp_permission_roles
|
||||||
|
|
||||||
'ROLE_NAME' => $role_row['role_name'],
|
'ROLE_NAME' => $role_row['role_name'],
|
||||||
'ROLE_DESCRIPTION' => $role_row['role_description'],
|
'ROLE_DESCRIPTION' => $role_row['role_description'],
|
||||||
'L_ACL_TYPE' => $user->lang['ACL_TYPE_' . strtoupper($permission_type)],
|
'L_ACL_TYPE' => $phpbb_permissions->get_type_lang($permission_type),
|
||||||
)
|
));
|
||||||
);
|
|
||||||
|
|
||||||
// We need to fill the auth options array with ACL_NO options ;)
|
// We need to fill the auth options array with ACL_NO options ;)
|
||||||
$sql = 'SELECT auth_option_id, auth_option
|
$sql = 'SELECT auth_option_id, auth_option
|
||||||
|
@ -343,7 +345,7 @@ class acp_permission_roles
|
||||||
// Get users/groups/forums using this preset...
|
// Get users/groups/forums using this preset...
|
||||||
if ($action == 'edit')
|
if ($action == 'edit')
|
||||||
{
|
{
|
||||||
$hold_ary = $auth_admin->get_role_mask($role_id);
|
$hold_ary = $this->auth_admin->get_role_mask($role_id);
|
||||||
|
|
||||||
if (sizeof($hold_ary))
|
if (sizeof($hold_ary))
|
||||||
{
|
{
|
||||||
|
@ -354,7 +356,7 @@ class acp_permission_roles
|
||||||
'L_ROLE_ASSIGNED_TO' => sprintf($user->lang['ROLE_ASSIGNED_TO'], $role_name))
|
'L_ROLE_ASSIGNED_TO' => sprintf($user->lang['ROLE_ASSIGNED_TO'], $role_name))
|
||||||
);
|
);
|
||||||
|
|
||||||
$auth_admin->display_role_mask($hold_ary);
|
$this->auth_admin->display_role_mask($hold_ary);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -445,8 +447,8 @@ class acp_permission_roles
|
||||||
'S_DISPLAY_ROLE_MASK' => true)
|
'S_DISPLAY_ROLE_MASK' => true)
|
||||||
);
|
);
|
||||||
|
|
||||||
$hold_ary = $auth_admin->get_role_mask($display_item);
|
$hold_ary = $this->auth_admin->get_role_mask($display_item);
|
||||||
$auth_admin->display_role_mask($hold_ary);
|
$this->auth_admin->display_role_mask($hold_ary);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -455,14 +457,16 @@ class acp_permission_roles
|
||||||
*/
|
*/
|
||||||
function display_auth_options($auth_options)
|
function display_auth_options($auth_options)
|
||||||
{
|
{
|
||||||
global $template, $user;
|
global $template, $user, $phpbb_container;
|
||||||
|
|
||||||
|
$phpbb_permissions = $phpbb_container->get('acl.permissions');
|
||||||
|
|
||||||
$content_array = $categories = array();
|
$content_array = $categories = array();
|
||||||
$key_sort_array = array(0);
|
$key_sort_array = array(0);
|
||||||
$auth_options = array(0 => $auth_options);
|
$auth_options = array(0 => $auth_options);
|
||||||
|
|
||||||
// Making use of auth_admin method here (we do not really want to change two similar code fragments)
|
// Making use of auth_admin method here (we do not really want to change two similar code fragments)
|
||||||
auth_admin::build_permission_array($auth_options, $content_array, $categories, $key_sort_array);
|
$this->auth_admin->build_permission_array($auth_options, $content_array, $categories, $key_sort_array);
|
||||||
|
|
||||||
$content_array = $content_array[0];
|
$content_array = $content_array[0];
|
||||||
|
|
||||||
|
@ -472,7 +476,7 @@ class acp_permission_roles
|
||||||
foreach ($content_array as $cat => $cat_array)
|
foreach ($content_array as $cat => $cat_array)
|
||||||
{
|
{
|
||||||
$template->assign_block_vars('auth', array(
|
$template->assign_block_vars('auth', array(
|
||||||
'CAT_NAME' => $user->lang['permission_cat'][$cat],
|
'CAT_NAME' => $phpbb_permissions->get_category_lang($cat),
|
||||||
|
|
||||||
'S_YES' => ($cat_array['S_YES'] && !$cat_array['S_NEVER'] && !$cat_array['S_NO']) ? true : false,
|
'S_YES' => ($cat_array['S_YES'] && !$cat_array['S_NEVER'] && !$cat_array['S_NO']) ? true : false,
|
||||||
'S_NEVER' => ($cat_array['S_NEVER'] && !$cat_array['S_YES'] && !$cat_array['S_NO']) ? true : false,
|
'S_NEVER' => ($cat_array['S_NEVER'] && !$cat_array['S_YES'] && !$cat_array['S_NO']) ? true : false,
|
||||||
|
@ -487,8 +491,8 @@ class acp_permission_roles
|
||||||
'S_NO' => ($allowed == ACL_NO) ? true : false,
|
'S_NO' => ($allowed == ACL_NO) ? true : false,
|
||||||
|
|
||||||
'FIELD_NAME' => $permission,
|
'FIELD_NAME' => $permission,
|
||||||
'PERMISSION' => $user->lang['acl_' . $permission]['lang'])
|
'PERMISSION' => $phpbb_permissions->get_permission_lang($permission),
|
||||||
);
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -500,8 +504,6 @@ class acp_permission_roles
|
||||||
{
|
{
|
||||||
global $db;
|
global $db;
|
||||||
|
|
||||||
$auth_admin = new auth_admin();
|
|
||||||
|
|
||||||
// Get complete auth array
|
// Get complete auth array
|
||||||
$sql = 'SELECT auth_option, auth_option_id
|
$sql = 'SELECT auth_option, auth_option_id
|
||||||
FROM ' . ACL_OPTIONS_TABLE . "
|
FROM ' . ACL_OPTIONS_TABLE . "
|
||||||
|
@ -529,19 +531,19 @@ class acp_permission_roles
|
||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
|
|
||||||
// Get role assignments
|
// Get role assignments
|
||||||
$hold_ary = $auth_admin->get_role_mask($role_id);
|
$hold_ary = $this->auth_admin->get_role_mask($role_id);
|
||||||
|
|
||||||
// Re-assign permissions
|
// Re-assign permissions
|
||||||
foreach ($hold_ary as $forum_id => $forum_ary)
|
foreach ($hold_ary as $forum_id => $forum_ary)
|
||||||
{
|
{
|
||||||
if (isset($forum_ary['users']))
|
if (isset($forum_ary['users']))
|
||||||
{
|
{
|
||||||
$auth_admin->acl_set('user', $forum_id, $forum_ary['users'], $auth_settings, 0, false);
|
$this->auth_admin->acl_set('user', $forum_id, $forum_ary['users'], $auth_settings, 0, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($forum_ary['groups']))
|
if (isset($forum_ary['groups']))
|
||||||
{
|
{
|
||||||
$auth_admin->acl_set('group', $forum_id, $forum_ary['groups'], $auth_settings, 0, false);
|
$this->auth_admin->acl_set('group', $forum_id, $forum_ary['groups'], $auth_settings, 0, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -563,6 +565,6 @@ class acp_permission_roles
|
||||||
WHERE role_id = ' . $role_id;
|
WHERE role_id = ' . $role_id;
|
||||||
$db->sql_query($sql);
|
$db->sql_query($sql);
|
||||||
|
|
||||||
$auth_admin->acl_clear_prefetch();
|
$this->auth_admin->acl_clear_prefetch();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,15 +22,18 @@ class acp_permissions
|
||||||
{
|
{
|
||||||
var $u_action;
|
var $u_action;
|
||||||
var $permission_dropdown;
|
var $permission_dropdown;
|
||||||
|
protected $permissions;
|
||||||
|
|
||||||
function main($id, $mode)
|
function main($id, $mode)
|
||||||
{
|
{
|
||||||
global $db, $user, $auth, $template, $cache;
|
global $db, $user, $auth, $template, $cache, $phpbb_container;
|
||||||
global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;
|
global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;
|
||||||
|
|
||||||
include_once($phpbb_root_path . 'includes/functions_user.' . $phpEx);
|
include_once($phpbb_root_path . 'includes/functions_user.' . $phpEx);
|
||||||
include_once($phpbb_root_path . 'includes/acp/auth.' . $phpEx);
|
include_once($phpbb_root_path . 'includes/acp/auth.' . $phpEx);
|
||||||
|
|
||||||
|
$this->permissions = $phpbb_container->get('acl.permissions');
|
||||||
|
|
||||||
$auth_admin = new auth_admin();
|
$auth_admin = new auth_admin();
|
||||||
|
|
||||||
$user->add_lang('acp/permissions');
|
$user->add_lang('acp/permissions');
|
||||||
|
@ -49,7 +52,7 @@ class acp_permissions
|
||||||
|
|
||||||
if ($user_id && isset($auth_admin->acl_options['id'][$permission]) && $auth->acl_get('a_viewauth'))
|
if ($user_id && isset($auth_admin->acl_options['id'][$permission]) && $auth->acl_get('a_viewauth'))
|
||||||
{
|
{
|
||||||
$this->page_title = sprintf($user->lang['TRACE_PERMISSION'], $user->lang['acl_' . $permission]['lang']);
|
$this->page_title = sprintf($user->lang['TRACE_PERMISSION'], $this->permissions->get_permission_lang($permission));
|
||||||
$this->permission_trace($user_id, $forum_id, $permission);
|
$this->permission_trace($user_id, $forum_id, $permission);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -512,7 +515,7 @@ class acp_permissions
|
||||||
|
|
||||||
$template->assign_vars(array(
|
$template->assign_vars(array(
|
||||||
'S_PERMISSION_DROPDOWN' => (sizeof($this->permission_dropdown) > 1) ? $this->build_permission_dropdown($this->permission_dropdown, $permission_type, $permission_scope) : false,
|
'S_PERMISSION_DROPDOWN' => (sizeof($this->permission_dropdown) > 1) ? $this->build_permission_dropdown($this->permission_dropdown, $permission_type, $permission_scope) : false,
|
||||||
'L_PERMISSION_TYPE' => $user->lang['ACL_TYPE_' . strtoupper($permission_type)],
|
'L_PERMISSION_TYPE' => $this->permissions->get_type_lang($permission_type),
|
||||||
|
|
||||||
'U_ACTION' => $this->u_action,
|
'U_ACTION' => $this->u_action,
|
||||||
'S_HIDDEN_FIELDS' => $s_hidden_fields)
|
'S_HIDDEN_FIELDS' => $s_hidden_fields)
|
||||||
|
@ -587,7 +590,7 @@ class acp_permissions
|
||||||
*/
|
*/
|
||||||
function build_permission_dropdown($options, $default_option, $permission_scope)
|
function build_permission_dropdown($options, $default_option, $permission_scope)
|
||||||
{
|
{
|
||||||
global $user, $auth;
|
global $auth;
|
||||||
|
|
||||||
$s_dropdown_options = '';
|
$s_dropdown_options = '';
|
||||||
foreach ($options as $setting)
|
foreach ($options as $setting)
|
||||||
|
@ -598,7 +601,7 @@ class acp_permissions
|
||||||
}
|
}
|
||||||
|
|
||||||
$selected = ($setting == $default_option) ? ' selected="selected"' : '';
|
$selected = ($setting == $default_option) ? ' selected="selected"' : '';
|
||||||
$l_setting = (isset($user->lang['permission_type'][$permission_scope][$setting])) ? $user->lang['permission_type'][$permission_scope][$setting] : $user->lang['permission_type'][$setting];
|
$l_setting = $this->permissions->get_type_lang($setting, $permission_scope);
|
||||||
$s_dropdown_options .= '<option value="' . $setting . '"' . $selected . '>' . $l_setting . '</option>';
|
$s_dropdown_options .= '<option value="' . $setting . '"' . $selected . '>' . $l_setting . '</option>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -656,7 +659,7 @@ class acp_permissions
|
||||||
*/
|
*/
|
||||||
function set_permissions($mode, $permission_type, &$auth_admin, &$user_id, &$group_id)
|
function set_permissions($mode, $permission_type, &$auth_admin, &$user_id, &$group_id)
|
||||||
{
|
{
|
||||||
global $user, $auth;
|
global $db, $cache, $user, $auth;
|
||||||
global $request;
|
global $request;
|
||||||
|
|
||||||
$psubmit = request_var('psubmit', array(0 => array(0 => 0)));
|
$psubmit = request_var('psubmit', array(0 => array(0 => 0)));
|
||||||
|
@ -726,13 +729,13 @@ class acp_permissions
|
||||||
// Do we need to recache the moderator lists?
|
// Do we need to recache the moderator lists?
|
||||||
if ($permission_type == 'm_')
|
if ($permission_type == 'm_')
|
||||||
{
|
{
|
||||||
cache_moderators();
|
phpbb_cache_moderators($db, $cache, $auth);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove users who are now moderators or admins from everyones foes list
|
// Remove users who are now moderators or admins from everyones foes list
|
||||||
if ($permission_type == 'm_' || $permission_type == 'a_')
|
if ($permission_type == 'm_' || $permission_type == 'a_')
|
||||||
{
|
{
|
||||||
update_foes($group_id, $user_id);
|
phpbb_update_foes($db, $auth, $group_id, $user_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->log_action($mode, 'add', $permission_type, $ug_type, $ug_id, $forum_id);
|
$this->log_action($mode, 'add', $permission_type, $ug_type, $ug_id, $forum_id);
|
||||||
|
@ -745,7 +748,7 @@ class acp_permissions
|
||||||
*/
|
*/
|
||||||
function set_all_permissions($mode, $permission_type, &$auth_admin, &$user_id, &$group_id)
|
function set_all_permissions($mode, $permission_type, &$auth_admin, &$user_id, &$group_id)
|
||||||
{
|
{
|
||||||
global $user, $auth;
|
global $db, $cache, $user, $auth;
|
||||||
global $request;
|
global $request;
|
||||||
|
|
||||||
// User or group to be set?
|
// User or group to be set?
|
||||||
|
@ -794,13 +797,13 @@ class acp_permissions
|
||||||
// Do we need to recache the moderator lists?
|
// Do we need to recache the moderator lists?
|
||||||
if ($permission_type == 'm_')
|
if ($permission_type == 'm_')
|
||||||
{
|
{
|
||||||
cache_moderators();
|
phpbb_cache_moderators($db, $cache, $auth);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove users who are now moderators or admins from everyones foes list
|
// Remove users who are now moderators or admins from everyones foes list
|
||||||
if ($permission_type == 'm_' || $permission_type == 'a_')
|
if ($permission_type == 'm_' || $permission_type == 'a_')
|
||||||
{
|
{
|
||||||
update_foes($group_id, $user_id);
|
phpbb_update_foes($db, $auth, $group_id, $user_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->log_action($mode, 'add', $permission_type, $ug_type, $ug_ids, $forum_ids);
|
$this->log_action($mode, 'add', $permission_type, $ug_type, $ug_ids, $forum_ids);
|
||||||
|
@ -858,7 +861,7 @@ class acp_permissions
|
||||||
*/
|
*/
|
||||||
function remove_permissions($mode, $permission_type, &$auth_admin, &$user_id, &$group_id, &$forum_id)
|
function remove_permissions($mode, $permission_type, &$auth_admin, &$user_id, &$group_id, &$forum_id)
|
||||||
{
|
{
|
||||||
global $user, $db, $auth;
|
global $user, $db, $cache, $auth;
|
||||||
|
|
||||||
// User or group to be set?
|
// User or group to be set?
|
||||||
$ug_type = (sizeof($user_id)) ? 'user' : 'group';
|
$ug_type = (sizeof($user_id)) ? 'user' : 'group';
|
||||||
|
@ -874,7 +877,7 @@ class acp_permissions
|
||||||
// Do we need to recache the moderator lists?
|
// Do we need to recache the moderator lists?
|
||||||
if ($permission_type == 'm_')
|
if ($permission_type == 'm_')
|
||||||
{
|
{
|
||||||
cache_moderators();
|
phpbb_cache_moderators($db, $cache, $auth);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->log_action($mode, 'del', $permission_type, $ug_type, (($ug_type == 'user') ? $user_id : $group_id), (sizeof($forum_id) ? $forum_id : array(0 => 0)));
|
$this->log_action($mode, 'del', $permission_type, $ug_type, (($ug_type == 'user') ? $user_id : $group_id), (sizeof($forum_id) ? $forum_id : array(0 => 0)));
|
||||||
|
@ -952,12 +955,7 @@ class acp_permissions
|
||||||
|
|
||||||
if ($user_id != $user->data['user_id'])
|
if ($user_id != $user->data['user_id'])
|
||||||
{
|
{
|
||||||
$sql = 'SELECT user_id, username, user_permissions, user_type
|
$userdata = $auth->obtain_user_data($user_id);
|
||||||
FROM ' . USERS_TABLE . '
|
|
||||||
WHERE user_id = ' . $user_id;
|
|
||||||
$result = $db->sql_query($sql);
|
|
||||||
$userdata = $db->sql_fetchrow($result);
|
|
||||||
$db->sql_freeresult($result);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -984,7 +982,7 @@ class acp_permissions
|
||||||
$back = request_var('back', 0);
|
$back = request_var('back', 0);
|
||||||
|
|
||||||
$template->assign_vars(array(
|
$template->assign_vars(array(
|
||||||
'PERMISSION' => $user->lang['acl_' . $permission]['lang'],
|
'PERMISSION' => $this->permissions->get_permission_lang($permission),
|
||||||
'PERMISSION_USERNAME' => $userdata['username'],
|
'PERMISSION_USERNAME' => $userdata['username'],
|
||||||
'FORUM_NAME' => $forum_name,
|
'FORUM_NAME' => $forum_name,
|
||||||
|
|
||||||
|
@ -1172,7 +1170,7 @@ class acp_permissions
|
||||||
*/
|
*/
|
||||||
function copy_forum_permissions()
|
function copy_forum_permissions()
|
||||||
{
|
{
|
||||||
global $auth, $cache, $template, $user;
|
global $db, $auth, $cache, $template, $user;
|
||||||
|
|
||||||
$user->add_lang('acp/forums');
|
$user->add_lang('acp/forums');
|
||||||
|
|
||||||
|
@ -1187,7 +1185,7 @@ class acp_permissions
|
||||||
{
|
{
|
||||||
if (copy_forum_permissions($src, $dest))
|
if (copy_forum_permissions($src, $dest))
|
||||||
{
|
{
|
||||||
cache_moderators();
|
phpbb_cache_moderators($db, $cache, $auth);
|
||||||
|
|
||||||
$auth->acl_clear_prefetch();
|
$auth->acl_clear_prefetch();
|
||||||
$cache->destroy('sql', FORUMS_TABLE);
|
$cache->destroy('sql', FORUMS_TABLE);
|
||||||
|
|
|
@ -331,7 +331,7 @@ class acp_prune
|
||||||
$s_find_active_time .= '<option value="' . $key . '">' . $value . '</option>';
|
$s_find_active_time .= '<option value="' . $key . '">' . $value . '</option>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$s_group_list = '';
|
$s_group_list = '<option value="0"></option>';
|
||||||
$sql = 'SELECT group_id, group_name
|
$sql = 'SELECT group_id, group_name
|
||||||
FROM ' . GROUPS_TABLE . '
|
FROM ' . GROUPS_TABLE . '
|
||||||
WHERE group_type <> ' . GROUP_SPECIAL . '
|
WHERE group_type <> ' . GROUP_SPECIAL . '
|
||||||
|
@ -340,7 +340,7 @@ class acp_prune
|
||||||
|
|
||||||
while ($row = $db->sql_fetchrow($result))
|
while ($row = $db->sql_fetchrow($result))
|
||||||
{
|
{
|
||||||
$s_group_list .= '<option value="' . $row['group_id'] . '">' . $row['group_name'] . '</select>';
|
$s_group_list .= '<option value="' . $row['group_id'] . '">' . $row['group_name'] . '</option>';
|
||||||
}
|
}
|
||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
|
|
||||||
|
@ -491,11 +491,12 @@ class acp_prune
|
||||||
|
|
||||||
if ($group_id)
|
if ($group_id)
|
||||||
{
|
{
|
||||||
$sql = 'SELECT user_id
|
$sql = 'SELECT u.user_id, u.username
|
||||||
FROM ' . USER_GROUP_TABLE . '
|
FROM ' . USER_GROUP_TABLE . ' ug, ' . USERS_TABLE . ' u
|
||||||
WHERE group_id = ' . (int) $group_id . '
|
WHERE ug.group_id = ' . (int) $group_id . '
|
||||||
AND user_pending = 0
|
AND ug.user_pending = 0
|
||||||
AND ' . $db->sql_in_set('user_id', $user_ids, false, true);
|
AND ' . $db->sql_in_set('ug.user_id', $user_ids, false, true) . '
|
||||||
|
AND u.user_id = ug.user_id';
|
||||||
$result = $db->sql_query($sql);
|
$result = $db->sql_query($sql);
|
||||||
|
|
||||||
// we're performing an intersection operation, so all the relevant users
|
// we're performing an intersection operation, so all the relevant users
|
||||||
|
@ -504,24 +505,19 @@ class acp_prune
|
||||||
$user_ids = $usernames = array();
|
$user_ids = $usernames = array();
|
||||||
while ($row = $db->sql_fetchrow($result))
|
while ($row = $db->sql_fetchrow($result))
|
||||||
{
|
{
|
||||||
$user_ids[] = $row['poster_id'];
|
$user_ids[] = $row['user_id'];
|
||||||
|
$usernames[$row['user_id']] = $row['username'];
|
||||||
}
|
}
|
||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
|
|
||||||
// only get usernames if they are needed (not part of some later query)
|
|
||||||
if (!$posts_on_queue)
|
|
||||||
{
|
|
||||||
// this is an additional query aginst the users table
|
|
||||||
user_get_id_name($user_ids, $usernames);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($posts_on_queue)
|
if ($posts_on_queue)
|
||||||
{
|
{
|
||||||
$sql = 'SELECT poster_id, COUNT(post_id) AS queue_posts
|
$sql = 'SELECT u.user_id, u.username, COUNT(p.post_id) AS queue_posts
|
||||||
FROM ' . POSTS_TABLE . '
|
FROM ' . POSTS_TABLE . ' p, ' . USERS_TABLE . ' u
|
||||||
WHERE ' . $db->sql_in_set('poster_id', $user_ids, false, true) . '
|
WHERE ' . $db->sql_in_set('p.poster_id', $user_ids, false, true) . '
|
||||||
GROUP BY poster_id
|
AND u.user_id = p.poster_id
|
||||||
|
GROUP BY p.poster_id
|
||||||
HAVING queue_posts ' . $key_match[$queue_select] . ' ' . $posts_on_queue;
|
HAVING queue_posts ' . $key_match[$queue_select] . ' ' . $posts_on_queue;
|
||||||
$result = $db->sql_query($result);
|
$result = $db->sql_query($result);
|
||||||
|
|
||||||
|
@ -529,12 +525,10 @@ class acp_prune
|
||||||
$user_ids = $usernames = array();
|
$user_ids = $usernames = array();
|
||||||
while ($row = $db->sql_fetchrow($result))
|
while ($row = $db->sql_fetchrow($result))
|
||||||
{
|
{
|
||||||
$user_ids[] = $row['poster_id'];
|
$user_ids[] = $row['user_id'];
|
||||||
|
$usernames[$row['user_id']] = $row['username'];
|
||||||
}
|
}
|
||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
|
|
||||||
// do an additional query to get the correct set of usernames
|
|
||||||
user_get_id_name($user_ids, $usernames);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue