mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-28 14:18:52 +00:00
Merge branch 'develop-ascraeus' of github.com:phpbb/phpbb into ticket/12407
* 'develop-ascraeus' of github.com:phpbb/phpbb: (424 commits) [ticket/12428] Use the database to store the original version number [ticket/12493] Add functional test [ticket/12493] Fix sql query for selection of users that have disabled PM [ticket/12513] Add asset include support to simple header/footer in ACP [ticket/12513] Add simple_header head event with support for CSS assets calls [ticket/12511] Add missing titles for profile fields in members group view [ticket/12428] Incorrect from version in database update log entry [ticket/12510] Convert & to & in build_url() when no params are stripped. [ticket/12402] CAPTCHA plugin migration fails to detect missing plugins [ticket/12440] Use a more generic approach for replacing the URL. [ticket/12507] Move the 'require' statement [ticket/12507] Add console command to purge the cache [ticket/12421] Rebase and enable tests [ticket/12421] Don't parse [attachment] tags if user can't view them [ticket/12325] Use \RecursiveDirectoryIterator [ticket/12325] Doc blocks [ticket/12440] Set browser URL to point to specific post when using view=unread [ticket/12357] Support routes in generate_smilies() function. [ticket/12459] Change language strings [ticket/12504] Use local variables where possible ... Conflicts: phpBB/posting.php
This commit is contained in:
commit
8121f87f08
327 changed files with 10520 additions and 1946 deletions
8
.gitignore
vendored
8
.gitignore
vendored
|
@ -5,15 +5,13 @@
|
||||||
/phpBB/cache/*.php
|
/phpBB/cache/*.php
|
||||||
/phpBB/cache/*.lock
|
/phpBB/cache/*.lock
|
||||||
/phpBB/composer.phar
|
/phpBB/composer.phar
|
||||||
/phpBB/config.php
|
/phpBB/config*.php
|
||||||
/phpBB/config_dev.php
|
|
||||||
/phpBB/config_test.php
|
|
||||||
/phpBB/ext/*
|
/phpBB/ext/*
|
||||||
/phpBB/files/*
|
/phpBB/files/*
|
||||||
/phpBB/images/avatars/gallery/*
|
/phpBB/images/avatars/gallery/*
|
||||||
/phpBB/images/avatars/upload/*
|
/phpBB/images/avatars/upload/*
|
||||||
/phpBB/store/*
|
/phpBB/store/*
|
||||||
/phpBB/vendor
|
/phpBB/vendor
|
||||||
/tests/phpbb_unit_tests.sqlite2
|
/tests/phpbb_unit_tests.sqlite*
|
||||||
/tests/test_config.php
|
/tests/test_config*.php
|
||||||
/tests/tmp/*
|
/tests/tmp/*
|
||||||
|
|
21
.travis.yml
21
.travis.yml
|
@ -14,23 +14,13 @@ services:
|
||||||
- redis-server
|
- redis-server
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- sh -c "if [ '$DB' = 'mariadb' ]; then travis/setup-mariadb.sh; fi"
|
- travis/setup-phpbb.sh $DB $TRAVIS_PHP_VERSION
|
||||||
- sh -c "if [ '$TRAVIS_PHP_VERSION' != 'hhvm' ]; then travis/setup-php-extensions.sh; fi"
|
|
||||||
- sh -c "if [ `php -r "echo (int) version_compare(PHP_VERSION, '5.3.19', '>=');"` = "1" ]; then travis/setup-webserver.sh; fi"
|
|
||||||
- cd phpBB
|
|
||||||
- php ../composer.phar install --dev --no-interaction --prefer-source
|
|
||||||
- cd ..
|
|
||||||
|
|
||||||
before_script:
|
before_script:
|
||||||
- sh -c "if [ '$DB' = 'postgres' ]; then psql -c 'DROP DATABASE IF EXISTS phpbb_tests;' -U postgres; fi"
|
- travis/setup-database.sh $DB $TRAVIS_PHP_VERSION
|
||||||
- sh -c "if [ '$DB' = 'postgres' ]; then psql -c 'create database phpbb_tests;' -U postgres; fi"
|
|
||||||
- sh -c "if [ '$TRAVIS_PHP_VERSION' = '5.3' -a '$DB' = 'mysql' ]; then mysql -e 'SET GLOBAL storage_engine=MyISAM;'; fi"
|
|
||||||
- sh -c "if [ '$DB' = 'mysql' -o '$DB' = 'mariadb' ]; then mysql -e 'create database IF NOT EXISTS phpbb_tests;'; fi"
|
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- cd build
|
- travis/phing-sniff.sh $DB $TRAVIS_PHP_VERSION
|
||||||
- sh -c "if [ '$TRAVIS_PHP_VERSION' = '5.5' -a '$DB' = 'mysql' ]; then ../phpBB/vendor/bin/phing sniff; fi"
|
|
||||||
- cd ..
|
|
||||||
- phpBB/vendor/bin/phpunit --configuration travis/phpunit-$DB-travis.xml
|
- phpBB/vendor/bin/phpunit --configuration travis/phpunit-$DB-travis.xml
|
||||||
- sh -c "if [ '$TRAVIS_PHP_VERSION' = '5.5' -a '$DB' = 'mysql' -a '$TRAVIS_PULL_REQUEST' != 'false' ]; then git-tools/commit-msg-hook-range.sh origin/$TRAVIS_BRANCH..FETCH_HEAD; fi"
|
- sh -c "if [ '$TRAVIS_PHP_VERSION' = '5.5' -a '$DB' = 'mysql' -a '$TRAVIS_PULL_REQUEST' != 'false' ]; then git-tools/commit-msg-hook-range.sh origin/$TRAVIS_BRANCH..FETCH_HEAD; fi"
|
||||||
|
|
||||||
|
@ -40,3 +30,8 @@ matrix:
|
||||||
env: DB=mariadb
|
env: DB=mariadb
|
||||||
- php: 5.4
|
- php: 5.4
|
||||||
env: DB=postgres
|
env: DB=postgres
|
||||||
|
- php: 5.4
|
||||||
|
env: DB=sqlite3
|
||||||
|
allow_failures:
|
||||||
|
- php: hhvm
|
||||||
|
fast_finish: true
|
||||||
|
|
|
@ -2,9 +2,9 @@
|
||||||
|
|
||||||
<project name="phpBB" description="The phpBB forum software" default="all" basedir="../">
|
<project name="phpBB" description="The phpBB forum software" default="all" basedir="../">
|
||||||
<!-- a few settings for the build -->
|
<!-- a few settings for the build -->
|
||||||
<property name="newversion" value="3.1.0-b3-dev" />
|
<property name="newversion" value="3.1.0-b4-dev" />
|
||||||
<property name="prevversion" value="3.1.0-b2" />
|
<property name="prevversion" value="3.1.0-b3" />
|
||||||
<property name="olderversions" value="3.0.12, 3.1.0-a1, 3.1.0-a2, 3.1.0-a3, 3.1.0-b1" />
|
<property name="olderversions" value="3.0.12, 3.1.0-a1, 3.1.0-a2, 3.1.0-a3, 3.1.0-b1, 3.1.0-b2" />
|
||||||
<!-- 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}" />
|
||||||
|
@ -141,6 +141,7 @@
|
||||||
|
|
||||||
<exec dir="build/old_versions" command="LC_ALL=C diff -crNEBwd release-${version} release-${newversion} >
|
<exec dir="build/old_versions" command="LC_ALL=C diff -crNEBwd release-${version} release-${newversion} >
|
||||||
../new_version/patches/phpBB-${version}_to_${newversion}.patch" escape="false" />
|
../new_version/patches/phpBB-${version}_to_${newversion}.patch" escape="false" />
|
||||||
|
<exec dir="build/old_versions" command="LC_ALL=C diff -qr release-${version} release-${newversion} | grep 'Only in release-${version}' > ../new_version/patches/phpBB-${version}_to_${newversion}.deleted" escape="false" />
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
<target name="prepare-new-version">
|
<target name="prepare-new-version">
|
||||||
|
@ -273,6 +274,10 @@
|
||||||
<delete dir="${dir}/develop" />
|
<delete dir="${dir}/develop" />
|
||||||
<delete dir="${dir}/install/data" />
|
<delete dir="${dir}/install/data" />
|
||||||
|
|
||||||
|
<phingcall target="clean-vendor-dir">
|
||||||
|
<property name="dir" value="${dir}" />
|
||||||
|
</phingcall>
|
||||||
|
|
||||||
<echo msg="Setting permissions for checkout of ${revision} in ${dir}" />
|
<echo msg="Setting permissions for checkout of ${revision} in ${dir}" />
|
||||||
<!-- set permissions of all files to 644, directories to 755 -->
|
<!-- set permissions of all files to 644, directories to 755 -->
|
||||||
<exec dir="${dir}" command="find . -type f|xargs chmod 644" escape="false" />
|
<exec dir="${dir}" command="find . -type f|xargs chmod 644" escape="false" />
|
||||||
|
@ -284,6 +289,91 @@
|
||||||
<chmod mode="0777" file="${dir}/images/avatars/upload" />
|
<chmod mode="0777" file="${dir}/images/avatars/upload" />
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
|
<target name="clean-vendor-dir">
|
||||||
|
<!-- Delete unrelated files from vendor/, see PHPBB3-12390 -->
|
||||||
|
<delete dir="${dir}/vendor/lusitanian/oauth/examples" />
|
||||||
|
<delete dir="${dir}/vendor/lusitanian/oauth/tests" />
|
||||||
|
<delete file="${dir}/vendor/lusitanian/oauth/.gitignore" />
|
||||||
|
<delete file="${dir}/vendor/lusitanian/oauth/.travis.yml" />
|
||||||
|
<delete file="${dir}/vendor/lusitanian/oauth/phpunit.xml.dist" />
|
||||||
|
<delete file="${dir}/vendor/lusitanian/oauth/README.md" />
|
||||||
|
|
||||||
|
<delete dir="${dir}/vendor/psr/log/Psr/Log/Test" />
|
||||||
|
<delete file="${dir}/vendor/psr/log/.gitignore" />
|
||||||
|
<delete file="${dir}/vendor/psr/log/README.md" />
|
||||||
|
|
||||||
|
<delete dir="${dir}/vendor/symfony/config/Symfony/Component/Config/Tests" />
|
||||||
|
<delete file="${dir}/vendor/symfony/config/Symfony/Component/Config/.gitignore" />
|
||||||
|
<delete file="${dir}/vendor/symfony/config/Symfony/Component/Config/CHANGELOG.md" />
|
||||||
|
<delete file="${dir}/vendor/symfony/config/Symfony/Component/Config/README.md" />
|
||||||
|
<delete file="${dir}/vendor/symfony/config/Symfony/Component/Config/phpunit.xml.dist" />
|
||||||
|
|
||||||
|
<delete dir="${dir}/vendor/symfony/console/Symfony/Component/Console/Tests" />
|
||||||
|
<delete file="${dir}/vendor/symfony/console/Symfony/Component/Console/.gitignore" />
|
||||||
|
<delete file="${dir}/vendor/symfony/console/Symfony/Component/Console/CHANGELOG.md" />
|
||||||
|
<delete file="${dir}/vendor/symfony/console/Symfony/Component/Console/README.md" />
|
||||||
|
<delete file="${dir}/vendor/symfony/console/Symfony/Component/Console/phpunit.xml.dist" />
|
||||||
|
|
||||||
|
<delete dir="${dir}/vendor/symfony/debug/Symfony/Component/Debug/Tests" />
|
||||||
|
<delete file="${dir}/vendor/symfony/debug/Symfony/Component/Debug/.gitignore" />
|
||||||
|
<delete file="${dir}/vendor/symfony/debug/Symfony/Component/Debug/CHANGELOG.md" />
|
||||||
|
<delete file="${dir}/vendor/symfony/debug/Symfony/Component/Debug/README.md" />
|
||||||
|
<delete file="${dir}/vendor/symfony/debug/Symfony/Component/Debug/phpunit.xml.dist" />
|
||||||
|
|
||||||
|
<delete dir="${dir}/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Tests" />
|
||||||
|
<delete file="${dir}/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/.gitignore" />
|
||||||
|
<delete file="${dir}/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/CHANGELOG.md" />
|
||||||
|
<delete file="${dir}/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/README.md" />
|
||||||
|
<delete file="${dir}/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/phpunit.xml.dist" />
|
||||||
|
|
||||||
|
<delete dir="${dir}/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/Tests" />
|
||||||
|
<delete file="${dir}/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/.gitignore" />
|
||||||
|
<delete file="${dir}/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/CHANGELOG.md" />
|
||||||
|
<delete file="${dir}/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/README.md" />
|
||||||
|
<delete file="${dir}/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/phpunit.xml.dist" />
|
||||||
|
|
||||||
|
<delete dir="${dir}/vendor/symfony/filesystem/Symfony/Component/Filesystem/Tests" />
|
||||||
|
<delete file="${dir}/vendor/symfony/filesystem/Symfony/Component/Filesystem/.gitignore" />
|
||||||
|
<delete file="${dir}/vendor/symfony/filesystem/Symfony/Component/Filesystem/CHANGELOG.md" />
|
||||||
|
<delete file="${dir}/vendor/symfony/filesystem/Symfony/Component/Filesystem/README.md" />
|
||||||
|
<delete file="${dir}/vendor/symfony/filesystem/Symfony/Component/Filesystem/phpunit.xml.dist" />
|
||||||
|
|
||||||
|
<delete dir="${dir}/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/Tests" />
|
||||||
|
<delete file="${dir}/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/.gitignore" />
|
||||||
|
<delete file="${dir}/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/CHANGELOG.md" />
|
||||||
|
<delete file="${dir}/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/README.md" />
|
||||||
|
<delete file="${dir}/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/phpunit.xml.dist" />
|
||||||
|
|
||||||
|
<delete dir="${dir}/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Tests" />
|
||||||
|
<delete file="${dir}/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/.gitignore" />
|
||||||
|
<delete file="${dir}/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/CHANGELOG.md" />
|
||||||
|
<delete file="${dir}/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/README.md" />
|
||||||
|
<delete file="${dir}/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/phpunit.xml.dist" />
|
||||||
|
|
||||||
|
<delete dir="${dir}/vendor/symfony/routing/Symfony/Component/Routing/Tests" />
|
||||||
|
<delete file="${dir}/vendor/symfony/routing/Symfony/Component/Routing/.gitignore" />
|
||||||
|
<delete file="${dir}/vendor/symfony/routing/Symfony/Component/Routing/CHANGELOG.md" />
|
||||||
|
<delete file="${dir}/vendor/symfony/routing/Symfony/Component/Routing/README.md" />
|
||||||
|
<delete file="${dir}/vendor/symfony/routing/Symfony/Component/Routing/phpunit.xml.dist" />
|
||||||
|
|
||||||
|
<delete dir="${dir}/vendor/symfony/yaml/Symfony/Component/Yaml/Tests" />
|
||||||
|
<delete file="${dir}/vendor/symfony/yaml/Symfony/Component/Yaml/.gitignore" />
|
||||||
|
<delete file="${dir}/vendor/symfony/yaml/Symfony/Component/Yaml/CHANGELOG.md" />
|
||||||
|
<delete file="${dir}/vendor/symfony/yaml/Symfony/Component/Yaml/README.md" />
|
||||||
|
<delete file="${dir}/vendor/symfony/yaml/Symfony/Component/Yaml/phpunit.xml.dist" />
|
||||||
|
|
||||||
|
<delete dir="${dir}/vendor/twig/twig/doc" />
|
||||||
|
<delete dir="${dir}/vendor/twig/twig/ext" />
|
||||||
|
<delete dir="${dir}/vendor/twig/twig/test" />
|
||||||
|
<delete file="${dir}/vendor/twig/twig/.editorconfig" />
|
||||||
|
<delete file="${dir}/vendor/twig/twig/.gitignore" />
|
||||||
|
<delete file="${dir}/vendor/twig/twig/.travis.yml" />
|
||||||
|
<delete file="${dir}/vendor/twig/twig/AUTHORS" />
|
||||||
|
<delete file="${dir}/vendor/twig/twig/CHANGELOG" />
|
||||||
|
<delete file="${dir}/vendor/twig/twig/phpunit.xml.dist" />
|
||||||
|
<delete file="${dir}/vendor/twig/twig/README.markdown" />
|
||||||
|
</target>
|
||||||
|
|
||||||
<target name="clean-diff-dir">
|
<target name="clean-diff-dir">
|
||||||
<delete dir="${dir}/cache" />
|
<delete dir="${dir}/cache" />
|
||||||
<delete dir="${dir}/docs" />
|
<delete dir="${dir}/docs" />
|
||||||
|
|
|
@ -312,4 +312,63 @@ class build_package
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Collect the list of the deleted files from a list of deleted files and folders.
|
||||||
|
*
|
||||||
|
* @param string $deleted_filename The full path to a file containing the list of deleted files and directories
|
||||||
|
* @param string $package_name The name of the package
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function collect_deleted_files($deleted_filename, $package_name)
|
||||||
|
{
|
||||||
|
$result = array();
|
||||||
|
$file_contents = file($deleted_filename);
|
||||||
|
|
||||||
|
foreach ($file_contents as $filename)
|
||||||
|
{
|
||||||
|
$filename = trim($filename);
|
||||||
|
|
||||||
|
if (!$filename)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$filename = str_replace('Only in ' . $package_name, '', $filename);
|
||||||
|
$filename = ltrim($filename, '/');
|
||||||
|
|
||||||
|
if (substr($filename, 0, 1) == ':')
|
||||||
|
{
|
||||||
|
$replace = '';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$replace = '/';
|
||||||
|
}
|
||||||
|
|
||||||
|
$filename = str_replace(': ', $replace, $filename);
|
||||||
|
|
||||||
|
if (is_dir("{$this->locations['old_versions']}{$package_name}/{$filename}"))
|
||||||
|
{
|
||||||
|
$iterator = new \RecursiveIteratorIterator(
|
||||||
|
new \RecursiveDirectoryIterator(
|
||||||
|
"{$this->locations['old_versions']}{$package_name}/{$filename}",
|
||||||
|
\FilesystemIterator::UNIX_PATHS | \FilesystemIterator::SKIP_DOTS
|
||||||
|
),
|
||||||
|
\RecursiveIteratorIterator::LEAVES_ONLY
|
||||||
|
);
|
||||||
|
|
||||||
|
foreach ($iterator as $file_info)
|
||||||
|
{
|
||||||
|
$result[] = "{$filename}/{$iterator->getSubPathname()}";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$result[] = $filename;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,6 +41,18 @@
|
||||||
</rule>
|
</rule>
|
||||||
<rule ref="Squiz.Functions.FunctionDeclarationArgumentSpacing.SpacingAfterHint" />
|
<rule ref="Squiz.Functions.FunctionDeclarationArgumentSpacing.SpacingAfterHint" />
|
||||||
|
|
||||||
|
<!-- There MUST NOT be trailing whitespace at the end of lines. -->
|
||||||
|
<rule ref="Squiz.WhiteSpace.SuperfluousWhitespace" />
|
||||||
|
|
||||||
|
<!-- There MUST NOT be whitespace before the first content of a file -->
|
||||||
|
<rule ref="Squiz.WhiteSpace.SuperfluousWhitespace.StartFile" />
|
||||||
|
|
||||||
|
<!-- There MUST NOT be whitespace after the last content of a file -->
|
||||||
|
<rule ref="Squiz.WhiteSpace.SuperfluousWhitespace.EndFile" />
|
||||||
|
|
||||||
|
<!-- Functions MUST NOT contain multiple empty lines in a row -->
|
||||||
|
<rule ref="Squiz.WhiteSpace.SuperfluousWhitespace.EmptyLines" />
|
||||||
|
|
||||||
<!-- The ?> closing tag MUST be omitted from files containing only PHP. -->
|
<!-- The ?> closing tag MUST be omitted from files containing only PHP. -->
|
||||||
<rule ref="Zend.Files.ClosingTag" />
|
<rule ref="Zend.Files.ClosingTag" />
|
||||||
|
|
||||||
|
|
|
@ -22,18 +22,6 @@
|
||||||
<!-- PHP keywords MUST be in lower case. -->
|
<!-- PHP keywords MUST be in lower case. -->
|
||||||
<rule ref="Generic.PHP.LowerCaseKeyword" />
|
<rule ref="Generic.PHP.LowerCaseKeyword" />
|
||||||
|
|
||||||
<!-- There MUST NOT be trailing whitespace at the end of lines. -->
|
|
||||||
<rule ref="Squiz.WhiteSpace.SuperfluousWhitespace" />
|
|
||||||
|
|
||||||
<!-- There MUST NOT be whitespace before the first content of a file -->
|
|
||||||
<rule ref="Squiz.WhiteSpace.SuperfluousWhitespace.StartFile" />
|
|
||||||
|
|
||||||
<!-- There MUST NOT be whitespace after the last content of a file -->
|
|
||||||
<rule ref="Squiz.WhiteSpace.SuperfluousWhitespace.EndFile" />
|
|
||||||
|
|
||||||
<!-- Functions MUST NOT contain multiple empty lines in a row -->
|
|
||||||
<rule ref="Squiz.WhiteSpace.SuperfluousWhitespace.EmptyLines" />
|
|
||||||
|
|
||||||
<!-- Classes etc. MUST be namespaced -->
|
<!-- Classes etc. MUST be namespaced -->
|
||||||
<rule ref="PSR1.Classes.ClassDeclaration.MissingNamespace" />
|
<rule ref="PSR1.Classes.ClassDeclaration.MissingNamespace" />
|
||||||
|
|
||||||
|
|
|
@ -45,6 +45,10 @@ if (sizeof($package->old_packages))
|
||||||
$package->get('patch_directory') . '/phpBB-' . $dest_package_filename . $package->get('new_version_number') . '.patch',
|
$package->get('patch_directory') . '/phpBB-' . $dest_package_filename . $package->get('new_version_number') . '.patch',
|
||||||
$_package_name
|
$_package_name
|
||||||
);
|
);
|
||||||
|
$diff_file_changes[$_package_name]['deleted'] = $package->collect_deleted_files(
|
||||||
|
$package->get('patch_directory') . '/phpBB-' . $dest_package_filename . $package->get('new_version_number') . '.deleted',
|
||||||
|
$_package_name
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Now put those files determined within the correct directories
|
// Now put those files determined within the correct directories
|
||||||
|
@ -292,6 +296,15 @@ $update_info = array(
|
||||||
$index_contents .= "\t'binary' => array(),\n";
|
$index_contents .= "\t'binary' => array(),\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (sizeof($file_contents['deleted']))
|
||||||
|
{
|
||||||
|
$index_contents .= "\t'deleted' => array(\n\t\t'" . implode("',\n\t\t'", $file_contents['deleted']) . "',\n\t),\n";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$index_contents .= "\t'deleted' => array(),\n";
|
||||||
|
}
|
||||||
|
|
||||||
$index_contents .= ");\n";
|
$index_contents .= ");\n";
|
||||||
|
|
||||||
$fp = fopen($dest_filename_dir . '/install/update/index.php', 'wt');
|
$fp = fopen($dest_filename_dir . '/install/update/index.php', 'wt');
|
||||||
|
|
|
@ -26,12 +26,50 @@ RewriteRule ^(.*)$ app.php [QSA,L]
|
||||||
#Options +FollowSymLinks
|
#Options +FollowSymLinks
|
||||||
</IfModule>
|
</IfModule>
|
||||||
|
|
||||||
|
# With Apache 2.4 the "Order, Deny" syntax has been deprecated and moved from
|
||||||
|
# module mod_authz_host to a new module called mod_access_compat (which may be
|
||||||
|
# disabled) and a new "Require" syntax has been introduced to mod_authz_host.
|
||||||
|
# We could just conditionally provide both versions, but unfortunately Apache
|
||||||
|
# does not explicitly tell us its version if the module mod_version is not
|
||||||
|
# available. In this case, we check for the availability of module
|
||||||
|
# mod_authz_core (which should be on 2.4 or higher only) as a best guess.
|
||||||
|
<IfModule mod_version.c>
|
||||||
|
<IfVersion < 2.4>
|
||||||
<Files "config.php">
|
<Files "config.php">
|
||||||
Order Allow,Deny
|
Order Allow,Deny
|
||||||
Deny from All
|
Deny from All
|
||||||
</Files>
|
</Files>
|
||||||
|
|
||||||
<Files "common.php">
|
<Files "common.php">
|
||||||
Order Allow,Deny
|
Order Allow,Deny
|
||||||
Deny from All
|
Deny from All
|
||||||
</Files>
|
</Files>
|
||||||
|
</IfVersion>
|
||||||
|
<IfVersion >= 2.4>
|
||||||
|
<Files "config.php">
|
||||||
|
Require all denied
|
||||||
|
</Files>
|
||||||
|
<Files "common.php">
|
||||||
|
Require all denied
|
||||||
|
</Files>
|
||||||
|
</IfVersion>
|
||||||
|
</IfModule>
|
||||||
|
<IfModule !mod_version.c>
|
||||||
|
<IfModule !mod_authz_core.c>
|
||||||
|
<Files "config.php">
|
||||||
|
Order Allow,Deny
|
||||||
|
Deny from All
|
||||||
|
</Files>
|
||||||
|
<Files "common.php">
|
||||||
|
Order Allow,Deny
|
||||||
|
Deny from All
|
||||||
|
</Files>
|
||||||
|
</IfModule>
|
||||||
|
<IfModule mod_authz_core.c>
|
||||||
|
<Files "config.php">
|
||||||
|
Require all denied
|
||||||
|
</Files>
|
||||||
|
<Files "common.php">
|
||||||
|
Require all denied
|
||||||
|
</Files>
|
||||||
|
</IfModule>
|
||||||
|
</IfModule>
|
||||||
|
|
|
@ -331,15 +331,15 @@
|
||||||
<fieldset class="tabulated">
|
<fieldset class="tabulated">
|
||||||
<legend>{L_TITLE}</legend>
|
<legend>{L_TITLE}</legend>
|
||||||
|
|
||||||
<table class="table1 zebra-table">
|
<table class="table1 zebra-table fixed-width-table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>{L_FILENAME}</th>
|
<th>{L_FILENAME}</th>
|
||||||
<th>{L_FILEDATE}</th>
|
<th style="width: 15%;">{L_FILEDATE}</th>
|
||||||
<th>{L_FILESIZE}</th>
|
<th style="width: 15%;">{L_FILESIZE}</th>
|
||||||
<th>{L_ATTACH_POST_ID}</th>
|
<th style="width: 15%;">{L_ATTACH_POST_ID}</th>
|
||||||
<th>{L_ATTACH_TO_POST}</th>
|
<th style="width: 15%;">{L_ATTACH_TO_POST}</th>
|
||||||
<th>{L_DELETE}</th>
|
<th style="width: 15%;">{L_DELETE}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
@ -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="number" 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}]" maxlength="10" value="{orphan.POST_ID}" style="width: 75%;" /></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>
|
||||||
|
@ -378,7 +378,7 @@
|
||||||
<fieldset class="tabulated">
|
<fieldset class="tabulated">
|
||||||
<legend>{L_TITLE}</legend>
|
<legend>{L_TITLE}</legend>
|
||||||
|
|
||||||
<div class="pagination">
|
<div class="pagination top-pagination">
|
||||||
<!-- IF .pagination or TOTAL_FILES -->
|
<!-- IF .pagination or TOTAL_FILES -->
|
||||||
{L_NUMBER_FILES}{L_COLON} {TOTAL_FILES} • {L_TOTAL_SIZE}{L_COLON} {TOTAL_SIZE}
|
{L_NUMBER_FILES}{L_COLON} {TOTAL_FILES} • {L_TOTAL_SIZE}{L_COLON} {TOTAL_SIZE}
|
||||||
<!-- IF .pagination -->
|
<!-- IF .pagination -->
|
||||||
|
@ -389,13 +389,14 @@
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<table class="table1 zebra-table">
|
<!-- IF .attachments -->
|
||||||
|
<table class="table1 zebra-table fixed-width-table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>{L_FILENAME}</th>
|
<th>{L_FILENAME}</th>
|
||||||
<th>{L_POSTED}</th>
|
<th style="width: 15%;">{L_POSTED}</th>
|
||||||
<th>{L_FILESIZE}</th>
|
<th style="width: 15%;" class="centered-text">{L_FILESIZE}</th>
|
||||||
<th>{L_DELETE}</th>
|
<th style="width: 10%;" class="centered-text">{L_MARK}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
@ -406,25 +407,19 @@
|
||||||
<!-- ELSE --><a href="{attachments.U_FILE}" style="font-weight: bold;">{attachments.REAL_FILENAME}</a><br /><!-- IF attachments.COMMENT -->{attachments.COMMENT}<br /><!-- ENDIF -->{attachments.L_DOWNLOAD_COUNT}<br />{L_TOPIC}{L_COLON} <a href="{attachments.U_VIEW_TOPIC}">{attachments.TOPIC_TITLE}</a><!-- ENDIF -->
|
<!-- ELSE --><a href="{attachments.U_FILE}" style="font-weight: bold;">{attachments.REAL_FILENAME}</a><br /><!-- IF attachments.COMMENT -->{attachments.COMMENT}<br /><!-- ENDIF -->{attachments.L_DOWNLOAD_COUNT}<br />{L_TOPIC}{L_COLON} <a href="{attachments.U_VIEW_TOPIC}">{attachments.TOPIC_TITLE}</a><!-- ENDIF -->
|
||||||
</td>
|
</td>
|
||||||
<td>{attachments.FILETIME}<br />{L_POST_BY_AUTHOR} {attachments.ATTACHMENT_POSTER}</td>
|
<td>{attachments.FILETIME}<br />{L_POST_BY_AUTHOR} {attachments.ATTACHMENT_POSTER}</td>
|
||||||
<td>{attachments.FILESIZE}</td>
|
<td class="centered-text">{attachments.FILESIZE}</td>
|
||||||
<td><input type="checkbox" class="radio" name="delete[{attachments.ATTACH_ID}]" /></td>
|
<td class="centered-text"><input type="checkbox" class="radio" name="delete[{attachments.ATTACH_ID}]" /></td>
|
||||||
</tr>
|
</tr>
|
||||||
<!-- END attachments -->
|
<!-- END attachments -->
|
||||||
<tr class="row4">
|
|
||||||
<td colspan="3"> </td>
|
|
||||||
<td class="small"><a href="#" onclick="marklist('attachments', 'delete', true); return false;">{L_MARK_ALL}</a> :: <a href="#" onclick="marklist('attachments', 'delete', false); return false;">{L_UNMARK_ALL}</a></td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
<!-- ELSE -->
|
||||||
|
<div class="errorbox">
|
||||||
|
<p>{L_NO_ATTACHMENTS}</p>
|
||||||
|
</div>
|
||||||
|
<!-- ENDIF -->
|
||||||
|
|
||||||
<!-- IF TOTAL_FILES -->
|
<!-- IF TOTAL_FILES -->
|
||||||
<fieldset class="display-options">
|
|
||||||
{L_DISPLAY_LOG}{L_COLON} {S_LIMIT_DAYS} {L_SORT_BY}{L_COLON} {S_SORT_KEY} {S_SORT_DIR}
|
|
||||||
<input class="button2" type="submit" value="{L_GO}" name="sort" />
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<hr />
|
|
||||||
|
|
||||||
<div class="pagination">
|
<div class="pagination">
|
||||||
{L_NUMBER_FILES}{L_COLON} {TOTAL_FILES} • {L_TOTAL_SIZE}{L_COLON} {TOTAL_SIZE}
|
{L_NUMBER_FILES}{L_COLON} {TOTAL_FILES} • {L_TOTAL_SIZE}{L_COLON} {TOTAL_SIZE}
|
||||||
<!-- IF .pagination -->
|
<!-- IF .pagination -->
|
||||||
|
@ -435,10 +430,22 @@
|
||||||
</div>
|
</div>
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
|
|
||||||
<p class="submit-buttons">
|
<fieldset class="display-options">
|
||||||
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
{L_DISPLAY_LOG}{L_COLON} {S_LIMIT_DAYS} {L_SORT_BY}{L_COLON} {S_SORT_KEY} {S_SORT_DIR}
|
||||||
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
<input class="button2" type="submit" value="{L_GO}" name="sort" />
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
<!-- IF .attachments -->
|
||||||
|
<fieldset class="quick">
|
||||||
|
<input class="button2" type="submit" name="submit" value="{L_DELETE_MARKED}" /><br />
|
||||||
|
<p class="small">
|
||||||
|
<a href="#" onclick="marklist('attachments', 'delete', true); return false;">{L_MARK_ALL}</a> •
|
||||||
|
<a href="#" onclick="marklist('attachments', 'delete', false); return false;">{L_UNMARK_ALL}</a>
|
||||||
</p>
|
</p>
|
||||||
|
</fieldset>
|
||||||
|
<!-- ENDIF -->
|
||||||
{S_FORM_TOKEN}
|
{S_FORM_TOKEN}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<!-- IF .pagination -->
|
<!-- IF .pagination -->
|
||||||
<div class="pagination" style="float: right; margin: 15px 0 2px 0">
|
<div class="pagination top-pagination">
|
||||||
<!-- INCLUDE pagination.html -->
|
<!-- INCLUDE pagination.html -->
|
||||||
</div>
|
</div>
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
|
@ -22,15 +22,15 @@
|
||||||
<div><br style="clear: both;" /></div>
|
<div><br style="clear: both;" /></div>
|
||||||
|
|
||||||
<!-- IF .log -->
|
<!-- IF .log -->
|
||||||
<table class="table1 zebra-table">
|
<table class="table1 zebra-table fixed-width-table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>{L_USERNAME}</th>
|
<th style="width: 15%;">{L_USERNAME}</th>
|
||||||
<th>{L_IP}</th>
|
<th style="width: 15%;">{L_IP}</th>
|
||||||
<th>{L_TIME}</th>
|
<th style="width: 20%;">{L_TIME}</th>
|
||||||
<th>{L_ACTION}</th>
|
<th>{L_ACTION}</th>
|
||||||
<!-- IF S_CLEARLOGS -->
|
<!-- IF S_CLEARLOGS -->
|
||||||
<th>{L_MARK}</th>
|
<th style="width: 50px;">{L_MARK}</th>
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
|
|
@ -164,14 +164,14 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- IF .attach -->
|
<!-- IF .attach -->
|
||||||
<table class="table1 zebra-table">
|
<table class="table1 zebra-table fixed-width-table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>{L_FILENAME}</th>
|
<th>{L_FILENAME}</th>
|
||||||
<th>{L_POST_TIME}</th>
|
<th style="width: 20%;">{L_POST_TIME}</th>
|
||||||
<th>{L_FILESIZE}</th>
|
<th style="width: 20%;">{L_FILESIZE}</th>
|
||||||
<th>{L_DOWNLOADS}</th>
|
<th style="width: 20%;">{L_DOWNLOADS}</th>
|
||||||
<th>{L_MARK}</th>
|
<th style="width: 50px;">{L_MARK}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
|
|
@ -5,9 +5,10 @@
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<form id="user_prefs" method="post" action="{U_ACTION}">
|
<form id="user_prefs" method="post" action="{U_ACTION}">
|
||||||
|
<!-- EVENT acp_users_prefs_prepend -->
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{L_UCP_PREFS_PERSONAL}</legend>
|
<legend>{L_UCP_PREFS_PERSONAL}</legend>
|
||||||
|
<!-- EVENT acp_users_prefs_personal_prepend -->
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="viewemail">{L_SHOW_EMAIL}{L_COLON}</label></dt>
|
<dt><label for="viewemail">{L_SHOW_EMAIL}{L_COLON}</label></dt>
|
||||||
<dd><label><input type="radio" class="radio" name="viewemail" value="1"<!-- IF VIEW_EMAIL --> id="viewemail" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
<dd><label><input type="radio" class="radio" name="viewemail" value="1"<!-- IF VIEW_EMAIL --> id="viewemail" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||||
|
@ -53,10 +54,12 @@
|
||||||
<dd><select name="dateoptions" id="dateoptions" onchange="if(this.value=='custom'){phpbb.toggleDisplay('custom_date',1);}else{phpbb.toggleDisplay('custom_date',-1);} if (this.value == 'custom') { document.getElementById('dateformat').value = default_dateformat; } else { document.getElementById('dateformat').value = this.value; }">{S_DATEFORMAT_OPTIONS}</select></dd>
|
<dd><select name="dateoptions" id="dateoptions" onchange="if(this.value=='custom'){phpbb.toggleDisplay('custom_date',1);}else{phpbb.toggleDisplay('custom_date',-1);} if (this.value == 'custom') { document.getElementById('dateformat').value = default_dateformat; } else { document.getElementById('dateformat').value = this.value; }">{S_DATEFORMAT_OPTIONS}</select></dd>
|
||||||
<dd><div id="custom_date"<!-- IF not S_CUSTOM_DATEFORMAT --> style="display:none;"<!-- ENDIF -->><input type="text" name="dateformat" id="dateformat" value="{DATE_FORMAT}" maxlength="30" /></div></dd>
|
<dd><div id="custom_date"<!-- IF not S_CUSTOM_DATEFORMAT --> style="display:none;"<!-- ENDIF -->><input type="text" name="dateformat" id="dateformat" value="{DATE_FORMAT}" maxlength="30" /></div></dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
<!-- EVENT acp_users_prefs_personal_append -->
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{L_UCP_PREFS_POST}</legend>
|
<legend>{L_UCP_PREFS_POST}</legend>
|
||||||
|
<!-- EVENT acp_users_prefs_post_prepend -->
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="bbcode">{L_DEFAULT_BBCODE}{L_COLON}</label></dt>
|
<dt><label for="bbcode">{L_DEFAULT_BBCODE}{L_COLON}</label></dt>
|
||||||
<dd><label><input type="radio" class="radio" name="bbcode" value="1"<!-- IF BBCODE --> id="bbcode" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
<dd><label><input type="radio" class="radio" name="bbcode" value="1"<!-- IF BBCODE --> id="bbcode" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||||
|
@ -77,10 +80,12 @@
|
||||||
<dd><label><input type="radio" class="radio" name="notify" value="1"<!-- IF NOTIFY --> id="notify" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
<dd><label><input type="radio" class="radio" name="notify" value="1"<!-- IF NOTIFY --> id="notify" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||||
<label><input type="radio" class="radio" name="notify" value="0"<!-- IF not NOTIFY --> id="notify" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
<label><input type="radio" class="radio" name="notify" value="0"<!-- IF not NOTIFY --> id="notify" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
<!-- EVENT acp_users_prefs_post_append -->
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{L_UCP_PREFS_VIEW}</legend>
|
<legend>{L_UCP_PREFS_VIEW}</legend>
|
||||||
|
<!-- EVENT acp_users_prefs_view_prepend -->
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="view_images">{L_VIEW_IMAGES}{L_COLON}</label></dt>
|
<dt><label for="view_images">{L_VIEW_IMAGES}{L_COLON}</label></dt>
|
||||||
<dd><label><input type="radio" class="radio" name="view_images" value="1"<!-- IF VIEW_IMAGES --> id="view_images" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
<dd><label><input type="radio" class="radio" name="view_images" value="1"<!-- IF VIEW_IMAGES --> id="view_images" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||||
|
@ -135,8 +140,9 @@
|
||||||
<dt><label>{L_VIEW_POSTS_DIR}{L_COLON}</label></dt>
|
<dt><label>{L_VIEW_POSTS_DIR}{L_COLON}</label></dt>
|
||||||
<dd>{S_POST_SORT_DIR}</dd>
|
<dd>{S_POST_SORT_DIR}</dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
<!-- EVENT acp_users_prefs_view_append -->
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
<!-- EVENT acp_users_prefs_append -->
|
||||||
<fieldset class="quick">
|
<fieldset class="quick">
|
||||||
<input class="button1" type="submit" name="update" value="{L_SUBMIT}" />
|
<input class="button1" type="submit" name="update" value="{L_SUBMIT}" />
|
||||||
{S_FORM_TOKEN}
|
{S_FORM_TOKEN}
|
||||||
|
|
|
@ -102,6 +102,10 @@ hr {
|
||||||
height: 1px;
|
height: 1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.centered-text {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
.small {
|
.small {
|
||||||
font-size: 0.85em;
|
font-size: 0.85em;
|
||||||
}
|
}
|
||||||
|
@ -907,6 +911,11 @@ table.styles td.users, table td.mark {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
table.fixed-width-table {
|
||||||
|
table-layout: fixed;
|
||||||
|
word-break: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 700px), only screen and (max-device-width: 700px)
|
@media only screen and (max-width: 700px), only screen and (max-device-width: 700px)
|
||||||
{
|
{
|
||||||
table.responsive, table.responsive tbody, table.responsive tr, table.responsive td {
|
table.responsive, table.responsive tbody, table.responsive tr, table.responsive td {
|
||||||
|
@ -1126,11 +1135,14 @@ input.langvalue, textarea.langvalue {
|
||||||
}
|
}
|
||||||
|
|
||||||
optgroup, select {
|
optgroup, select {
|
||||||
|
background-color: #FAFAFA;
|
||||||
|
border: 1px solid #666666;
|
||||||
font-family: Verdana, Helvetica, Arial, sans-serif;
|
font-family: Verdana, Helvetica, Arial, sans-serif;
|
||||||
font-size: 0.85em;
|
font-size: 0.85em;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
padding: 1px;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
width: auto;
|
width: auto;
|
||||||
color: #000;
|
color: #000;
|
||||||
|
@ -1238,7 +1250,7 @@ fieldset.display-options {
|
||||||
border: none;
|
border: none;
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-size: 0.75em;
|
font-size: 0.85em;
|
||||||
}
|
}
|
||||||
|
|
||||||
fieldset.display-options select, fieldset.display-options input, fieldset.display-options label {
|
fieldset.display-options select, fieldset.display-options input, fieldset.display-options label {
|
||||||
|
@ -1663,11 +1675,16 @@ input.button1:focus, input.button2:focus {
|
||||||
/* Pagination
|
/* Pagination
|
||||||
---------------------------------------- */
|
---------------------------------------- */
|
||||||
.pagination {
|
.pagination {
|
||||||
|
font-size: .85em;
|
||||||
height: 1%; /* IE tweak (holly hack) */
|
height: 1%; /* IE tweak (holly hack) */
|
||||||
width: auto;
|
width: auto;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
margin-top: 5px;
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.top-pagination {
|
||||||
float: right;
|
float: right;
|
||||||
|
margin: 15px 0 2px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.rtl .pagination {
|
.rtl .pagination {
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
<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>
|
||||||
|
|
||||||
<!-- EVENT acp_simple_footer_after -->
|
<!-- EVENT acp_simple_footer_after -->
|
||||||
|
{$SCRIPTS}
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -83,6 +83,7 @@ function find_username(url)
|
||||||
// ]]>
|
// ]]>
|
||||||
</script>
|
</script>
|
||||||
<!-- EVENT acp_simple_header_head_append -->
|
<!-- EVENT acp_simple_header_head_append -->
|
||||||
|
{$STYLESHEETS}
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="{S_CONTENT_DIRECTION} {BODY_CLASS}">
|
<body class="{S_CONTENT_DIRECTION} {BODY_CLASS}">
|
||||||
|
|
|
@ -26,6 +26,7 @@ phpbb.loadingIndicator = function() {
|
||||||
if (!loadingIndicator.is(':visible')) {
|
if (!loadingIndicator.is(':visible')) {
|
||||||
loadingIndicator.fadeIn(phpbb.alertTime);
|
loadingIndicator.fadeIn(phpbb.alertTime);
|
||||||
// Wait fifteen seconds and display an error if nothing has been returned by then.
|
// Wait fifteen seconds and display an error if nothing has been returned by then.
|
||||||
|
phpbb.clearLoadingTimeout();
|
||||||
phpbbAlertTimer = setTimeout(function() {
|
phpbbAlertTimer = setTimeout(function() {
|
||||||
if (loadingIndicator.is(':visible')) {
|
if (loadingIndicator.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'));
|
||||||
|
@ -248,7 +249,16 @@ phpbb.ajaxify = function(options) {
|
||||||
callback = options.callback,
|
callback = options.callback,
|
||||||
overlay = (typeof options.overlay !== 'undefined') ? options.overlay : true,
|
overlay = (typeof options.overlay !== 'undefined') ? options.overlay : true,
|
||||||
isForm = elements.is('form'),
|
isForm = elements.is('form'),
|
||||||
eventName = isForm ? 'submit' : 'click';
|
isText = elements.is('input[type="text"], textarea'),
|
||||||
|
eventName;
|
||||||
|
|
||||||
|
if (isForm) {
|
||||||
|
eventName = 'submit';
|
||||||
|
} else if (isText) {
|
||||||
|
eventName = 'keyup';
|
||||||
|
} else {
|
||||||
|
eventName = 'click';
|
||||||
|
}
|
||||||
|
|
||||||
elements.bind(eventName, 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);
|
||||||
|
@ -315,7 +325,7 @@ phpbb.ajaxify = function(options) {
|
||||||
refresh = false;
|
refresh = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
setTimeout(function() {
|
phpbbAlertTimer = setTimeout(function() {
|
||||||
if (refresh) {
|
if (refresh) {
|
||||||
window.location = res.REFRESH_DATA.url;
|
window.location = res.REFRESH_DATA.url;
|
||||||
}
|
}
|
||||||
|
@ -348,6 +358,7 @@ phpbb.ajaxify = function(options) {
|
||||||
// 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 runFilter = (typeof options.filter === 'function');
|
var runFilter = (typeof options.filter === 'function');
|
||||||
|
var data = {};
|
||||||
|
|
||||||
if (isForm) {
|
if (isForm) {
|
||||||
action = $this.attr('action').replace('&', '&');
|
action = $this.attr('action').replace('&', '&');
|
||||||
|
@ -361,18 +372,18 @@ phpbb.ajaxify = function(options) {
|
||||||
value: submit.val()
|
value: submit.val()
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
} else if (isText) {
|
||||||
|
var name = ($this.attr('data-name') !== undefined) ? $this.attr('data-name') : this['name'];
|
||||||
|
action = $this.attr('data-url').replace('&', '&');
|
||||||
|
data[name] = this.value;
|
||||||
|
method = 'POST';
|
||||||
} else {
|
} else {
|
||||||
action = this.href;
|
action = this.href;
|
||||||
data = null;
|
data = null;
|
||||||
method = 'GET';
|
method = 'GET';
|
||||||
}
|
}
|
||||||
|
|
||||||
// If filter function returns false, cancel the AJAX functionality,
|
var sendRequest = function() {
|
||||||
// and return true (meaning that the HTTP request will be sent normally).
|
|
||||||
if (runFilter && !options.filter.call(this, data)) {
|
|
||||||
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.loadingIndicator();
|
phpbb.loadingIndicator();
|
||||||
}
|
}
|
||||||
|
@ -387,7 +398,15 @@ phpbb.ajaxify = function(options) {
|
||||||
request.always(function() {
|
request.always(function() {
|
||||||
loadingIndicator.fadeOut(phpbb.alertTime);
|
loadingIndicator.fadeOut(phpbb.alertTime);
|
||||||
});
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// If filter function returns false, cancel the AJAX functionality,
|
||||||
|
// and return true (meaning that the HTTP request will be sent normally).
|
||||||
|
if (runFilter && !options.filter.call(this, data, event, sendRequest)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
sendRequest();
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -403,6 +422,346 @@ phpbb.ajaxify = function(options) {
|
||||||
return this;
|
return this;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
phpbb.search = {cache: {data: []}, tpl: [], container: []};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get cached search data.
|
||||||
|
*
|
||||||
|
* @param string id Search ID.
|
||||||
|
* @return bool|object. Cached data object. Returns false if no data exists.
|
||||||
|
*/
|
||||||
|
phpbb.search.cache.get = function(id) {
|
||||||
|
if (this.data[id]) {
|
||||||
|
return this.data[id];
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set search cache data value.
|
||||||
|
*
|
||||||
|
* @param string id Search ID.
|
||||||
|
* @param string key Data key.
|
||||||
|
* @param string value Data value.
|
||||||
|
*
|
||||||
|
* @return undefined
|
||||||
|
*/
|
||||||
|
phpbb.search.cache.set = function(id, key, value) {
|
||||||
|
if (!this.data[id]) {
|
||||||
|
this.data[id] = {results: []};
|
||||||
|
}
|
||||||
|
this.data[id][key] = value;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cache search result.
|
||||||
|
*
|
||||||
|
* @param string id Search ID.
|
||||||
|
* @param string keyword Keyword.
|
||||||
|
* @param array results Search results.
|
||||||
|
*
|
||||||
|
* @return undefined
|
||||||
|
*/
|
||||||
|
phpbb.search.cache.setResults = function(id, keyword, value) {
|
||||||
|
this.data[id]['results'][keyword] = value;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Trim spaces from keyword and lower its case.
|
||||||
|
*
|
||||||
|
* @param string keyword Search keyword to clean.
|
||||||
|
* @return string Cleaned string.
|
||||||
|
*/
|
||||||
|
phpbb.search.cleanKeyword = function(keyword) {
|
||||||
|
return $.trim(keyword).toLowerCase();
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get clean version of search keyword. If textarea supports several keywords
|
||||||
|
* (one per line), it fetches the current keyword based on the caret position.
|
||||||
|
*
|
||||||
|
* @param jQuery el Search input|textarea.
|
||||||
|
* @param string keyword Input|textarea value.
|
||||||
|
* @param bool multiline Whether textarea supports multiple search keywords.
|
||||||
|
*
|
||||||
|
* @return string Clean string.
|
||||||
|
*/
|
||||||
|
phpbb.search.getKeyword = function(el, keyword, multiline) {
|
||||||
|
if (multiline) {
|
||||||
|
var line = phpbb.search.getKeywordLine(el);
|
||||||
|
keyword = keyword.split("\n").splice(line, 1);
|
||||||
|
}
|
||||||
|
return phpbb.search.cleanKeyword(keyword);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the textarea line number on which the keyword resides - for textareas
|
||||||
|
* that support multiple keywords (one per line).
|
||||||
|
*
|
||||||
|
* @param jQuery el Search textarea.
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
phpbb.search.getKeywordLine = function (el) {
|
||||||
|
return el.val().substr(0, el.get(0).selectionStart).split("\n").length - 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the value on the input|textarea. If textarea supports multiple
|
||||||
|
* keywords, only the active keyword is replaced.
|
||||||
|
*
|
||||||
|
* @param jQuery el Search input|textarea.
|
||||||
|
* @param string value Value to set.
|
||||||
|
* @param bool multiline Whether textarea supports multiple search keywords.
|
||||||
|
*
|
||||||
|
* @return undefined
|
||||||
|
*/
|
||||||
|
phpbb.search.setValue = function(el, value, multiline) {
|
||||||
|
if (multiline) {
|
||||||
|
var line = phpbb.search.getKeywordLine(el),
|
||||||
|
lines = el.val().split("\n");
|
||||||
|
lines[line] = value;
|
||||||
|
value = lines.join("\n");
|
||||||
|
}
|
||||||
|
el.val(value);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the onclick event to set the value on the input|textarea to the selected search result.
|
||||||
|
*
|
||||||
|
* @param jQuery el Search input|textarea.
|
||||||
|
* @param object value Result object.
|
||||||
|
* @param object container jQuery object for the search container.
|
||||||
|
*
|
||||||
|
* @return undefined
|
||||||
|
*/
|
||||||
|
phpbb.search.setValueOnClick = function(el, value, row, container) {
|
||||||
|
row.click(function() {
|
||||||
|
phpbb.search.setValue(el, value.result, el.attr('data-multiline'));
|
||||||
|
container.hide();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Runs before the AJAX search request is sent and determines whether
|
||||||
|
* there is a need to contact the server. If there are cached results
|
||||||
|
* already, those are displayed instead. Executes the AJAX request function
|
||||||
|
* itself due to the need to use a timeout to limit the number of requests.
|
||||||
|
*
|
||||||
|
* @param array data Data to be sent to the server.
|
||||||
|
* @param object event Onkeyup event object.
|
||||||
|
* @param function sendRequest Function to execute AJAX request.
|
||||||
|
*
|
||||||
|
* @return bool Returns false.
|
||||||
|
*/
|
||||||
|
phpbb.search.filter = function(data, event, sendRequest) {
|
||||||
|
var el = $(this),
|
||||||
|
dataName = (el.attr('data-name') !== undefined) ? el.attr('data-name') : el.attr('name'),
|
||||||
|
minLength = parseInt(el.attr('data-min-length')),
|
||||||
|
searchID = el.attr('data-results'),
|
||||||
|
keyword = phpbb.search.getKeyword(el, data[dataName], el.attr('data-multiline')),
|
||||||
|
cache = phpbb.search.cache.get(searchID),
|
||||||
|
proceed = true;
|
||||||
|
data[dataName] = keyword;
|
||||||
|
|
||||||
|
if (cache['timeout']) {
|
||||||
|
clearTimeout(cache['timeout']);
|
||||||
|
}
|
||||||
|
|
||||||
|
var timeout = setTimeout(function() {
|
||||||
|
// Check min length and existence of cache.
|
||||||
|
if (minLength > keyword.length) {
|
||||||
|
proceed = false;
|
||||||
|
} else if (cache['last_search']) {
|
||||||
|
// Has the keyword actually changed?
|
||||||
|
if (cache['last_search'] === keyword) {
|
||||||
|
proceed = false;
|
||||||
|
} else {
|
||||||
|
// Do we already have results for this?
|
||||||
|
if (cache['results'][keyword]) {
|
||||||
|
var response = {keyword: keyword, results: cache['results'][keyword]};
|
||||||
|
phpbb.search.handleResponse(response, el, true);
|
||||||
|
proceed = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If the previous search didn't yield results and the string only had characters added to it,
|
||||||
|
// then we won't bother sending a request.
|
||||||
|
if (keyword.indexOf(cache['last_search']) === 0 && cache['results'][cache['last_search']].length === 0) {
|
||||||
|
phpbb.search.cache.set(searchID, 'last_search', keyword);
|
||||||
|
phpbb.search.cache.setResults(searchID, keyword, []);
|
||||||
|
proceed = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (proceed) {
|
||||||
|
sendRequest.call(this);
|
||||||
|
}
|
||||||
|
}, 350);
|
||||||
|
phpbb.search.cache.set(searchID, 'timeout', timeout);
|
||||||
|
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle search result response.
|
||||||
|
*
|
||||||
|
* @param object res Data received from server.
|
||||||
|
* @param jQuery el Search input|textarea.
|
||||||
|
* @param bool fromCache Whether the results are from the cache.
|
||||||
|
* @param function callback Optional callback to run when assigning each search result.
|
||||||
|
*
|
||||||
|
* @return undefined
|
||||||
|
*/
|
||||||
|
phpbb.search.handleResponse = function(res, el, fromCache, callback) {
|
||||||
|
if (typeof res !== 'object') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var searchID = el.attr('data-results'),
|
||||||
|
container = $(searchID);
|
||||||
|
|
||||||
|
if (this.cache.get(searchID)['callback']) {
|
||||||
|
callback = this.cache.get(searchID)['callback'];
|
||||||
|
} else if (typeof callback === 'function') {
|
||||||
|
this.cache.set(searchID, 'callback', callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!fromCache) {
|
||||||
|
this.cache.setResults(searchID, res.keyword, res.results);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.cache.set(searchID, 'last_search', res.keyword);
|
||||||
|
this.showResults(res.results, el, container, callback);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show search results.
|
||||||
|
*
|
||||||
|
* @param array results Search results.
|
||||||
|
* @param jQuery el Search input|textarea.
|
||||||
|
* @param jQuery container Search results container element.
|
||||||
|
* @param function callback Optional callback to run when assigning each search result.
|
||||||
|
*
|
||||||
|
* @return undefined
|
||||||
|
*/
|
||||||
|
phpbb.search.showResults = function(results, el, container, callback) {
|
||||||
|
var resultContainer = $('.search-results', container);
|
||||||
|
this.clearResults(resultContainer);
|
||||||
|
|
||||||
|
if (!results.length) {
|
||||||
|
container.hide();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var searchID = container.attr('id'),
|
||||||
|
tpl,
|
||||||
|
row;
|
||||||
|
|
||||||
|
if (!this.tpl[searchID]) {
|
||||||
|
tpl = $('.search-result-tpl', container);
|
||||||
|
this.tpl[searchID] = tpl.clone().removeClass('search-result-tpl');
|
||||||
|
tpl.remove();
|
||||||
|
}
|
||||||
|
tpl = this.tpl[searchID];
|
||||||
|
|
||||||
|
$.each(results, function(i, item) {
|
||||||
|
row = tpl.clone();
|
||||||
|
row.find('.search-result').html(item.display);
|
||||||
|
|
||||||
|
if (typeof callback === 'function') {
|
||||||
|
callback.call(this, el, item, row, container);
|
||||||
|
}
|
||||||
|
row.appendTo(resultContainer).show();
|
||||||
|
});
|
||||||
|
container.show();
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clear search results.
|
||||||
|
*
|
||||||
|
* @param jQuery container Search results container.
|
||||||
|
* @return undefined
|
||||||
|
*/
|
||||||
|
phpbb.search.clearResults = function(container) {
|
||||||
|
container.children(':not(.search-result-tpl)').remove();
|
||||||
|
};
|
||||||
|
|
||||||
|
$('#phpbb').click(function(e) {
|
||||||
|
var target = $(e.target);
|
||||||
|
|
||||||
|
if (!target.is('.live-search') && !target.parents().is('.live-search')) {
|
||||||
|
$('.live-search').hide();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
phpbb.history = {};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check whether a method in the native history object is supported.
|
||||||
|
*
|
||||||
|
* @param string fn Method name.
|
||||||
|
* @return bool Returns true if the method is supported.
|
||||||
|
*/
|
||||||
|
phpbb.history.isSupported = function(fn) {
|
||||||
|
if (typeof history === 'undefined' || typeof history[fn] === 'undefined') {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wrapper for the pushState and replaceState methods of the
|
||||||
|
* native history object.
|
||||||
|
*
|
||||||
|
* @param string mode Mode. Either push or replace.
|
||||||
|
* @param string url New URL.
|
||||||
|
* @param string title Optional page title.
|
||||||
|
* @patam object obj Optional state object.
|
||||||
|
*
|
||||||
|
* @return undefined
|
||||||
|
*/
|
||||||
|
phpbb.history.alterUrl = function(mode, url, title, obj) {
|
||||||
|
var fn = mode + 'State';
|
||||||
|
|
||||||
|
if (!url || !phpbb.history.isSupported(fn)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!title) {
|
||||||
|
title = document.title;
|
||||||
|
}
|
||||||
|
if (!obj) {
|
||||||
|
obj = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
history[fn](obj, title, url);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wrapper for the native history.replaceState method.
|
||||||
|
*
|
||||||
|
* @param string url New URL.
|
||||||
|
* @param string title Optional page title.
|
||||||
|
* @patam object obj Optional state object.
|
||||||
|
*
|
||||||
|
* @return undefined
|
||||||
|
*/
|
||||||
|
phpbb.history.replaceUrl = function(url, title, obj) {
|
||||||
|
phpbb.history.alterUrl('replace', url, title, obj);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wrapper for the native history.pushState method.
|
||||||
|
*
|
||||||
|
* @param string url New URL.
|
||||||
|
* @param string title Optional page title.
|
||||||
|
* @patam object obj Optional state object.
|
||||||
|
*
|
||||||
|
* @return undefined
|
||||||
|
*/
|
||||||
|
phpbb.history.pushUrl = function(url, title, obj) {
|
||||||
|
phpbb.history.alterUrl('push', url, title, obj);
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Hide the optgroups that are not the selected timezone
|
* Hide the optgroups that are not the selected timezone
|
||||||
*
|
*
|
||||||
|
@ -542,6 +901,12 @@ phpbb.addAjaxCallback = function(id, callback) {
|
||||||
return this;
|
return this;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This callback handles live member searches.
|
||||||
|
*/
|
||||||
|
phpbb.addAjaxCallback('member_search', function(res) {
|
||||||
|
phpbb.search.handleResponse(res, $(this), false, phpbb.getFunctionByName('phpbb.search.setValueOnClick'));
|
||||||
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This callback alternates text - it replaces the current text with the text in
|
* This callback alternates text - it replaces the current text with the text in
|
||||||
|
@ -917,9 +1282,10 @@ phpbb.toggleDropdown = function() {
|
||||||
// Check dimensions when showing dropdown
|
// Check dimensions when showing dropdown
|
||||||
// !visible because variable shows state of dropdown before it was toggled
|
// !visible because variable shows state of dropdown before it was toggled
|
||||||
if (!visible) {
|
if (!visible) {
|
||||||
|
var windowWidth = $(window).width();
|
||||||
|
|
||||||
options.dropdown.find('.dropdown-contents').each(function() {
|
options.dropdown.find('.dropdown-contents').each(function() {
|
||||||
var $this = $(this),
|
var $this = $(this);
|
||||||
windowWidth = $(window).width();
|
|
||||||
|
|
||||||
$this.css({
|
$this.css({
|
||||||
marginLeft: 0,
|
marginLeft: 0,
|
||||||
|
@ -937,6 +1303,13 @@ phpbb.toggleDropdown = function() {
|
||||||
$this.css('margin-left', (windowWidth - offset - width - 2) + 'px');
|
$this.css('margin-left', (windowWidth - offset - width - 2) + 'px');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
var freeSpace = parent.offset().left - 4;
|
||||||
|
|
||||||
|
if (direction == 'left') {
|
||||||
|
options.dropdown.css('margin-left', '-' + freeSpace + 'px');
|
||||||
|
} else {
|
||||||
|
options.dropdown.css('margin-right', '-' + (windowWidth + freeSpace) + 'px');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Prevent event propagation
|
// Prevent event propagation
|
||||||
|
@ -1102,6 +1475,24 @@ phpbb.toggleDisplay = function(id, action, type) {
|
||||||
$('#' + id).css('display', ((action === 1) ? type : 'none'));
|
$('#' + id).css('display', ((action === 1) ? type : 'none'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get function from name.
|
||||||
|
* Based on http://stackoverflow.com/a/359910
|
||||||
|
*
|
||||||
|
* @param string functionName Function to get.
|
||||||
|
* @return function
|
||||||
|
*/
|
||||||
|
phpbb.getFunctionByName = function (functionName) {
|
||||||
|
var namespaces = functionName.split('.'),
|
||||||
|
func = namespaces.pop(),
|
||||||
|
context = window;
|
||||||
|
|
||||||
|
for (var i = 0; i < namespaces.length; i++) {
|
||||||
|
context = context[namespaces[i]];
|
||||||
|
}
|
||||||
|
return context[func];
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Apply code editor to all textarea elements with data-bbcode attribute
|
* Apply code editor to all textarea elements with data-bbcode attribute
|
||||||
*/
|
*/
|
||||||
|
@ -1121,6 +1512,10 @@ $(document).ready(function() {
|
||||||
$('#color_palette_placeholder').each(function() {
|
$('#color_palette_placeholder').each(function() {
|
||||||
phpbb.registerPalette($(this));
|
phpbb.registerPalette($(this));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Update browser history URL to point to specific post in viewtopic.php
|
||||||
|
// when using view=unread#unread link.
|
||||||
|
phpbb.history.replaceUrl($('#unread[data-url]').data('url'));
|
||||||
});
|
});
|
||||||
|
|
||||||
})(jQuery); // Avoid conflicts with other libraries
|
})(jQuery); // Avoid conflicts with other libraries
|
||||||
|
|
|
@ -21,7 +21,9 @@ require($phpbb_root_path . 'includes/startup.' . $phpEx);
|
||||||
require($phpbb_root_path . 'config.' . $phpEx);
|
require($phpbb_root_path . 'config.' . $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_admin.' . $phpEx);
|
||||||
require($phpbb_root_path . 'includes/functions_container.' . $phpEx);
|
require($phpbb_root_path . 'includes/functions_container.' . $phpEx);
|
||||||
|
require($phpbb_root_path . 'includes/utf/utf_tools.' . $phpEx);
|
||||||
require($phpbb_root_path . 'phpbb/class_loader.' . $phpEx);
|
require($phpbb_root_path . 'phpbb/class_loader.' . $phpEx);
|
||||||
|
|
||||||
$phpbb_class_loader = new \phpbb\class_loader('phpbb\\', "{$phpbb_root_path}phpbb/", $phpEx);
|
$phpbb_class_loader = new \phpbb\class_loader('phpbb\\', "{$phpbb_root_path}phpbb/", $phpEx);
|
||||||
|
@ -30,6 +32,8 @@ $phpbb_class_loader_ext = new \phpbb\class_loader('\\', "{$phpbb_root_path}ext/"
|
||||||
$phpbb_class_loader_ext->register();
|
$phpbb_class_loader_ext->register();
|
||||||
|
|
||||||
$phpbb_container = phpbb_create_update_container($phpbb_root_path, $phpEx, "$phpbb_root_path/config");
|
$phpbb_container = phpbb_create_update_container($phpbb_root_path, $phpEx, "$phpbb_root_path/config");
|
||||||
|
$phpbb_container->get('request')->enable_super_globals();
|
||||||
|
require($phpbb_root_path . 'includes/compatibility_globals.' . $phpEx);
|
||||||
|
|
||||||
$application = new \phpbb\console\application('phpBB Console', PHPBB_VERSION);
|
$application = new \phpbb\console\application('phpBB Console', PHPBB_VERSION);
|
||||||
$application->register_container_commands($phpbb_container);
|
$application->register_container_commands($phpbb_container);
|
||||||
|
|
|
@ -96,34 +96,7 @@ $phpbb_container = phpbb_create_default_container($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'));
|
||||||
|
|
||||||
// set up caching
|
require($phpbb_root_path . 'includes/compatibility_globals.' . $phpEx);
|
||||||
$cache = $phpbb_container->get('cache');
|
|
||||||
|
|
||||||
// Instantiate some basic classes
|
|
||||||
$phpbb_dispatcher = $phpbb_container->get('dispatcher');
|
|
||||||
$request = $phpbb_container->get('request');
|
|
||||||
$user = $phpbb_container->get('user');
|
|
||||||
$auth = $phpbb_container->get('auth');
|
|
||||||
$db = $phpbb_container->get('dbal.conn');
|
|
||||||
|
|
||||||
// make sure request_var uses this request instance
|
|
||||||
request_var('', 0, false, false, $request); // "dependency injection" for a function
|
|
||||||
|
|
||||||
// Grab global variables, re-cache if necessary
|
|
||||||
$config = $phpbb_container->get('config');
|
|
||||||
set_config(null, null, null, $config);
|
|
||||||
set_config_count(null, null, null, $config);
|
|
||||||
|
|
||||||
$phpbb_log = $phpbb_container->get('log');
|
|
||||||
$symfony_request = $phpbb_container->get('symfony_request');
|
|
||||||
$phpbb_filesystem = $phpbb_container->get('filesystem');
|
|
||||||
$phpbb_path_helper = $phpbb_container->get('path_helper');
|
|
||||||
|
|
||||||
// load extensions
|
|
||||||
$phpbb_extension_manager = $phpbb_container->get('ext.manager');
|
|
||||||
$phpbb_subscriber_loader = $phpbb_container->get('event.subscriber_loader');
|
|
||||||
|
|
||||||
$template = $phpbb_container->get('template');
|
|
||||||
|
|
||||||
// Add own hook handler
|
// Add own hook handler
|
||||||
require($phpbb_root_path . 'includes/hooks/index.' . $phpEx);
|
require($phpbb_root_path . 'includes/hooks/index.' . $phpEx);
|
||||||
|
@ -151,6 +124,6 @@ if (!$config['use_system_cron'])
|
||||||
* please use the core.user_setup event instead!
|
* please use the core.user_setup event instead!
|
||||||
*
|
*
|
||||||
* @event core.common
|
* @event core.common
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$phpbb_dispatcher->dispatch('core.common');
|
$phpbb_dispatcher->dispatch('core.common');
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
{
|
{
|
||||||
"minimum-stability": "beta",
|
"_readme": [
|
||||||
|
"You MUST update the clean-vendor-dir target in build/build.xml",
|
||||||
|
"accordingly when adding or upgrading dependencies."
|
||||||
|
],
|
||||||
"require": {
|
"require": {
|
||||||
"lusitanian/oauth": "0.2.*",
|
"lusitanian/oauth": "0.2.*",
|
||||||
"symfony/config": "2.3.*",
|
"symfony/config": "2.3.*",
|
||||||
|
@ -13,8 +16,8 @@
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"fabpot/goutte": "1.0.*",
|
"fabpot/goutte": "1.0.*",
|
||||||
"phpunit/dbunit": "1.2.*",
|
"phpunit/dbunit": "1.3.*",
|
||||||
"phpunit/phpunit": "3.7.*",
|
"phpunit/phpunit": "4.1.*",
|
||||||
"phing/phing": "2.4.*",
|
"phing/phing": "2.4.*",
|
||||||
"squizlabs/php_codesniffer": "1.*"
|
"squizlabs/php_codesniffer": "1.*"
|
||||||
}
|
}
|
||||||
|
|
623
phpBB/composer.lock
generated
623
phpBB/composer.lock
generated
File diff suppressed because it is too large
Load diff
|
@ -1,4 +1,15 @@
|
||||||
services:
|
services:
|
||||||
|
console.command.cache.purge:
|
||||||
|
class: phpbb\console\command\cache\purge
|
||||||
|
arguments:
|
||||||
|
- @cache.driver
|
||||||
|
- @dbal.conn
|
||||||
|
- @auth
|
||||||
|
- @log
|
||||||
|
- @user
|
||||||
|
tags:
|
||||||
|
- { name: console.command }
|
||||||
|
|
||||||
console.command.config.delete:
|
console.command.config.delete:
|
||||||
class: phpbb\console\command\config\delete
|
class: phpbb\console\command\config\delete
|
||||||
arguments:
|
arguments:
|
||||||
|
@ -34,6 +45,18 @@ services:
|
||||||
tags:
|
tags:
|
||||||
- { name: console.command }
|
- { name: console.command }
|
||||||
|
|
||||||
|
console.command.db.migrate:
|
||||||
|
class: phpbb\console\command\db\migrate
|
||||||
|
arguments:
|
||||||
|
- @migrator
|
||||||
|
- @ext.manager
|
||||||
|
- @config
|
||||||
|
- @cache
|
||||||
|
- @log
|
||||||
|
- @user
|
||||||
|
tags:
|
||||||
|
- { name: console.command }
|
||||||
|
|
||||||
console.command.extension.disable:
|
console.command.extension.disable:
|
||||||
class: phpbb\console\command\extension\disable
|
class: phpbb\console\command\extension\disable
|
||||||
arguments:
|
arguments:
|
||||||
|
|
|
@ -4,6 +4,7 @@ services:
|
||||||
arguments:
|
arguments:
|
||||||
- @auth
|
- @auth
|
||||||
- @dbal.conn
|
- @dbal.conn
|
||||||
|
- @dispatcher
|
||||||
- @request
|
- @request
|
||||||
- @template
|
- @template
|
||||||
- @profilefields.type_collection
|
- @profilefields.type_collection
|
||||||
|
|
|
@ -95,6 +95,7 @@ services:
|
||||||
- @user
|
- @user
|
||||||
- @config
|
- @config
|
||||||
- @controller.provider
|
- @controller.provider
|
||||||
|
- @ext.manager
|
||||||
- %core.root_path%
|
- %core.root_path%
|
||||||
- %core.php_ext%
|
- %core.php_ext%
|
||||||
|
|
||||||
|
@ -107,8 +108,6 @@ services:
|
||||||
|
|
||||||
controller.provider:
|
controller.provider:
|
||||||
class: phpbb\controller\provider
|
class: phpbb\controller\provider
|
||||||
arguments:
|
|
||||||
- @ext.finder
|
|
||||||
calls:
|
calls:
|
||||||
- [find, [%core.root_path%]]
|
- [find, [%core.root_path%]]
|
||||||
|
|
||||||
|
@ -175,16 +174,6 @@ services:
|
||||||
- %core.php_ext%
|
- %core.php_ext%
|
||||||
- @cache.driver
|
- @cache.driver
|
||||||
|
|
||||||
ext.finder:
|
|
||||||
class: phpbb\extension\finder
|
|
||||||
arguments:
|
|
||||||
- @ext.manager
|
|
||||||
- @filesystem
|
|
||||||
- %core.root_path%
|
|
||||||
- @cache.driver
|
|
||||||
- %core.php_ext%
|
|
||||||
- _ext_finder
|
|
||||||
|
|
||||||
filesystem:
|
filesystem:
|
||||||
class: phpbb\filesystem
|
class: phpbb\filesystem
|
||||||
|
|
||||||
|
@ -217,7 +206,7 @@ services:
|
||||||
kernel_request_subscriber:
|
kernel_request_subscriber:
|
||||||
class: phpbb\event\kernel_request_subscriber
|
class: phpbb\event\kernel_request_subscriber
|
||||||
arguments:
|
arguments:
|
||||||
- @ext.finder
|
- @ext.manager
|
||||||
- %core.root_path%
|
- %core.root_path%
|
||||||
- %core.php_ext%
|
- %core.php_ext%
|
||||||
tags:
|
tags:
|
||||||
|
|
|
@ -376,6 +376,7 @@ function mass_auth($ug_type, $forum_id, $ug_id, $acl_list, $setting)
|
||||||
|
|
||||||
case 'mssql':
|
case 'mssql':
|
||||||
case 'sqlite':
|
case 'sqlite':
|
||||||
|
case 'sqlite3':
|
||||||
$sql = implode(' UNION ALL ', preg_replace('#^(.*?)$#', 'SELECT \1', $sql_subary));
|
$sql = implode(' UNION ALL ', preg_replace('#^(.*?)$#', 'SELECT \1', $sql_subary));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -70,6 +70,7 @@ foreach ($supported_dbms as $dbms)
|
||||||
case 'mysql_41':
|
case 'mysql_41':
|
||||||
case 'firebird':
|
case 'firebird':
|
||||||
case 'sqlite':
|
case 'sqlite':
|
||||||
|
case 'sqlite3':
|
||||||
fwrite($fp, "# DO NOT EDIT THIS FILE, IT IS GENERATED\n");
|
fwrite($fp, "# DO NOT EDIT THIS FILE, IT IS GENERATED\n");
|
||||||
fwrite($fp, "#\n");
|
fwrite($fp, "#\n");
|
||||||
fwrite($fp, "# To change the contents of this file, edit\n");
|
fwrite($fp, "# To change the contents of this file, edit\n");
|
||||||
|
|
|
@ -16,291 +16,28 @@ $phpbb_root_path = __DIR__ . '/../';
|
||||||
|
|
||||||
function usage()
|
function usage()
|
||||||
{
|
{
|
||||||
echo "Usage: export_events_for_wiki.php COMMAND\n";
|
echo "Usage: export_events_for_wiki.php COMMAND [EXTENSION]\n";
|
||||||
echo "\n";
|
echo "\n";
|
||||||
echo "acp:\n";
|
echo "COMMAND:\n";
|
||||||
echo " Export all events for files in the acp style.\n";
|
echo " all:\n";
|
||||||
echo "\n";
|
echo " Generate the complete wikipage for https://wiki.phpbb.com/Event_List\n";
|
||||||
echo "styles:\n";
|
|
||||||
echo " Export all events for files in the prosilver and subsilver2 styles.\n";
|
|
||||||
echo "\n";
|
echo "\n";
|
||||||
echo " php:\n";
|
echo " php:\n";
|
||||||
echo " Export all events for php-files.\n";
|
echo " Generate the PHP event section of Event_List\n";
|
||||||
|
echo "\n";
|
||||||
|
echo " adm:\n";
|
||||||
|
echo " Generate the ACP Template event section of Event_List\n";
|
||||||
|
echo "\n";
|
||||||
|
echo " styles:\n";
|
||||||
|
echo " Generate the Styles Template event section of Event_List\n";
|
||||||
|
echo "\n";
|
||||||
|
echo "EXTENSION (Optional):\n";
|
||||||
|
echo " If not given, only core events will be exported.\n";
|
||||||
|
echo " Otherwise only events from the extension will be exported.\n";
|
||||||
|
echo "\n";
|
||||||
exit(2);
|
exit(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
function export_from_eventsmd($phpbb_root_path, $filter)
|
|
||||||
{
|
|
||||||
$file_content = file_get_contents($phpbb_root_path . 'docs/events.md');
|
|
||||||
|
|
||||||
$events = explode("\n\n", $file_content);
|
|
||||||
foreach ($events as $event)
|
|
||||||
{
|
|
||||||
// Last row of the file
|
|
||||||
if (strpos($event, "\n===\n") === false) continue;
|
|
||||||
|
|
||||||
list($event_name, $details) = explode("\n===\n", $event);
|
|
||||||
|
|
||||||
if ($filter == 'acp' && strpos($event_name, 'acp_') !== 0) continue;
|
|
||||||
if ($filter == 'styles' && strpos($event_name, 'acp_') === 0) continue;
|
|
||||||
|
|
||||||
list($file_details, $details) = explode("\n* Since: ", $details);
|
|
||||||
list($version, $explanition) = explode("\n* Purpose: ", $details);
|
|
||||||
|
|
||||||
echo "|- id=\"{$event_name}\"\n";
|
|
||||||
echo "| [[#{$event_name}|{$event_name}]] || ";
|
|
||||||
|
|
||||||
if (strpos($file_details, "* Locations:\n + ") === 0)
|
|
||||||
{
|
|
||||||
$file_details = substr($file_details, strlen("* Locations:\n + "));
|
|
||||||
$files = explode("\n + ", $file_details);
|
|
||||||
$prosilver = $subsilver2 = $adm = array();
|
|
||||||
foreach ($files as $file)
|
|
||||||
{
|
|
||||||
if (strpos($file, 'styles/prosilver/template/') === 0)
|
|
||||||
{
|
|
||||||
$prosilver[] = substr($file, strlen('styles/prosilver/template/'));
|
|
||||||
}
|
|
||||||
if (strpos($file, 'styles/subsilver2/template/') === 0)
|
|
||||||
{
|
|
||||||
$subsilver2[] = substr($file, strlen('styles/subsilver2/template/'));
|
|
||||||
}
|
|
||||||
if (strpos($file, 'adm/style/') === 0)
|
|
||||||
{
|
|
||||||
$adm[] = substr($file, strlen('adm/style/'));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ($filter == 'acp')
|
|
||||||
{
|
|
||||||
echo implode(', ', $adm);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
echo implode(', ', $prosilver) . ' || ' . implode(', ', $subsilver2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if ($filter == 'acp')
|
|
||||||
{
|
|
||||||
echo substr($file_details, strlen("* Location: adm/style/"));
|
|
||||||
}
|
|
||||||
echo " || {$version} || " . str_replace("\n", ' ', $explanition) . "\n";
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function export_from_php($phpbb_root_path)
|
|
||||||
{
|
|
||||||
$files = get_file_list($phpbb_root_path);
|
|
||||||
$events = array();
|
|
||||||
foreach ($files as $file)
|
|
||||||
{
|
|
||||||
$file_events = check_for_events($phpbb_root_path, $file);
|
|
||||||
if (!empty($file_events))
|
|
||||||
{
|
|
||||||
$events = array_merge($events, $file_events);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ksort($events);
|
|
||||||
|
|
||||||
foreach ($events as $event)
|
|
||||||
{
|
|
||||||
echo '|- id="' . $event['event'] . '"' . "\n";
|
|
||||||
echo '| [[#' . $event['event'] . '|' . $event['event'] . ']] || ' . $event['file'] . ' || ' . implode(', ', $event['arguments']) . ' || ' . $event['since'] . ' || ' . $event['description'] . "\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function check_for_events($phpbb_root_path, $file)
|
|
||||||
{
|
|
||||||
$events = array();
|
|
||||||
$content = file_get_contents($phpbb_root_path . $file);
|
|
||||||
|
|
||||||
if (strpos($content, "phpbb_dispatcher->trigger_event('") || strpos($content, "phpbb_dispatcher->dispatch('"))
|
|
||||||
{
|
|
||||||
$lines = explode("\n", $content);
|
|
||||||
for ($i = 0, $num_lines = sizeof($lines); $i < $num_lines; $i++)
|
|
||||||
{
|
|
||||||
$event_line = 0;
|
|
||||||
$found_trigger_event = strpos($lines[$i], "phpbb_dispatcher->trigger_event('");
|
|
||||||
if ($found_trigger_event !== false)
|
|
||||||
{
|
|
||||||
$event_line = $i;
|
|
||||||
$event_name = $lines[$event_line];
|
|
||||||
$event_name = substr($event_name, $found_trigger_event + strlen("phpbb_dispatcher->trigger_event('"));
|
|
||||||
$event_name = substr($event_name, 0, strpos($event_name, "'"));
|
|
||||||
|
|
||||||
$current_line = trim($lines[$event_line]);
|
|
||||||
$arguments = array();
|
|
||||||
$found_inline_array = strpos($current_line, "', compact(array('");
|
|
||||||
if ($found_inline_array !== false)
|
|
||||||
{
|
|
||||||
$varsarray = substr($current_line, $found_inline_array + strlen("', compact(array('"), -6);
|
|
||||||
$arguments = explode("', '", $varsarray);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (empty($arguments))
|
|
||||||
{
|
|
||||||
// Find $vars array lines
|
|
||||||
$find_varsarray_line = 1;
|
|
||||||
while (strpos($lines[$event_line - $find_varsarray_line], "vars = array('") === false)
|
|
||||||
{
|
|
||||||
$find_varsarray_line++;
|
|
||||||
|
|
||||||
if ($find_varsarray_line > min(50, $event_line))
|
|
||||||
{
|
|
||||||
throw new LogicException('Can not find "$vars = array()"-line for event "' . $event_name . '" in file "' . $file . '"');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$varsarray = substr(trim($lines[$event_line - $find_varsarray_line]), strlen("\$vars = array('"), -3);
|
|
||||||
$arguments = explode("', '", $varsarray);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Validate $vars array with @var
|
|
||||||
$find_vars_line = 3;
|
|
||||||
$doc_vars = array();
|
|
||||||
while (strpos(trim($lines[$event_line - $find_vars_line]), '*') === 0)
|
|
||||||
{
|
|
||||||
$var_line = trim($lines[$event_line - $find_vars_line]);
|
|
||||||
$var_line = preg_replace('!\s+!', ' ', $var_line);
|
|
||||||
if (strpos($var_line, '* @var ') === 0)
|
|
||||||
{
|
|
||||||
$doc_line = explode(' ', $var_line);
|
|
||||||
if (isset($doc_line[3]))
|
|
||||||
{
|
|
||||||
$doc_vars[] = $doc_line[3];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$find_vars_line++;
|
|
||||||
}
|
|
||||||
if (sizeof($arguments) !== sizeof($doc_vars) && array_intersect($arguments, $doc_vars))
|
|
||||||
{
|
|
||||||
throw new LogicException('$vars array does not match the list of @var tags for event "' . $event_name . '" in file "' . $file . '"');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$found_dispatch = strpos($lines[$i], "phpbb_dispatcher->dispatch('");
|
|
||||||
if ($found_dispatch !== false)
|
|
||||||
{
|
|
||||||
$event_line = $i;
|
|
||||||
$event_name = $lines[$event_line];
|
|
||||||
$event_name = substr($event_name, $found_dispatch + strlen("phpbb_dispatcher->dispatch('"));
|
|
||||||
$event_name = substr($event_name, 0, strpos($event_name, "'"));
|
|
||||||
$arguments = array();
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($event_line)
|
|
||||||
{
|
|
||||||
// Validate @event name
|
|
||||||
$find_event_line = 1;
|
|
||||||
while (strpos($lines[$event_line - $find_event_line], '* @event ') === false)
|
|
||||||
{
|
|
||||||
$find_event_line++;
|
|
||||||
|
|
||||||
if ($find_event_line > min(50, $event_line))
|
|
||||||
{
|
|
||||||
throw new LogicException('Can not find @event tag for event "' . $event_name . '" in file "' . $file . '"');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$event_name_tag = substr(trim($lines[$event_line - $find_event_line]), strlen('* @event '));
|
|
||||||
if ($event_name_tag !== $event_name)
|
|
||||||
{
|
|
||||||
throw new LogicException('Event name does not match @event tag for event "' . $event_name . '" in file "' . $file . '"');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Find @since
|
|
||||||
$find_since_line = 1;
|
|
||||||
while (strpos($lines[$event_line - $find_since_line], '* @since ') === false)
|
|
||||||
{
|
|
||||||
$find_since_line++;
|
|
||||||
|
|
||||||
if ($find_since_line > min(50, $event_line))
|
|
||||||
{
|
|
||||||
throw new LogicException('Can not find @since tag for event "' . $event_name . '" in file "' . $file . '"');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$since = substr(trim($lines[$event_line - $find_since_line]), strlen('* @since '));
|
|
||||||
$since = ($since == '3.1-A1') ? '3.1.0-a1' : $since;
|
|
||||||
|
|
||||||
// Find event description line
|
|
||||||
$find_description_line = 3;
|
|
||||||
while (strpos(trim($lines[$event_line - $find_description_line]), '*') === 0)
|
|
||||||
{
|
|
||||||
$find_description_line++;
|
|
||||||
|
|
||||||
if ($find_description_line > min(50, $event_line))
|
|
||||||
{
|
|
||||||
throw new LogicException('Can not find description-line for event "' . $event_name . '" in file "' . $file . '"');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$description = substr(trim($lines[$event_line - $find_description_line + 1]), strlen('* '));
|
|
||||||
|
|
||||||
$events[$event_name] = array(
|
|
||||||
'event' => $event_name,
|
|
||||||
'file' => $file,
|
|
||||||
'arguments' => $arguments,
|
|
||||||
'since' => $since,
|
|
||||||
'description' => $description,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $events;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a list of files in that directory
|
|
||||||
*
|
|
||||||
* Works recursive with any depth
|
|
||||||
*
|
|
||||||
* @param string $dir Directory to go through
|
|
||||||
* @return array List of files (including directories from within $dir
|
|
||||||
*/
|
|
||||||
function get_file_list($dir, $path = '')
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
$iterator = new \DirectoryIterator($dir);
|
|
||||||
}
|
|
||||||
catch (Exception $e)
|
|
||||||
{
|
|
||||||
return array();
|
|
||||||
}
|
|
||||||
|
|
||||||
$files = array();
|
|
||||||
foreach ($iterator as $file_info)
|
|
||||||
{
|
|
||||||
if ($file_info->isDot())
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Do not scan some directories
|
|
||||||
if ($file_info->isDir() && (
|
|
||||||
($path == '' && in_array($file_info->getFilename(), array('cache', 'develop', 'ext', 'files', 'language', 'store', 'vendor')))
|
|
||||||
|| ($path == '/includes' && in_array($file_info->getFilename(), array('utf')))
|
|
||||||
|| ($path == '/phpbb/db/migration' && in_array($file_info->getFilename(), array('data')))
|
|
||||||
|| ($path == '/phpbb' && in_array($file_info->getFilename(), array('event')))
|
|
||||||
))
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
else if ($file_info->isDir())
|
|
||||||
{
|
|
||||||
$sub_dir = get_file_list($file_info->getPath() . '/' . $file_info->getFilename(), $path . '/' . $file_info->getFilename());
|
|
||||||
foreach ($sub_dir as $file)
|
|
||||||
{
|
|
||||||
$files[] = $file_info->getFilename() . '/' . $file;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (substr($file_info->getFilename(), -4) == '.php')
|
|
||||||
{
|
|
||||||
$files[] = $file_info->getFilename();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $files;
|
|
||||||
}
|
|
||||||
|
|
||||||
function validate_argument_count($arguments, $count)
|
function validate_argument_count($arguments, $count)
|
||||||
{
|
{
|
||||||
if ($arguments <= $count)
|
if ($arguments <= $count)
|
||||||
|
@ -312,19 +49,50 @@ function validate_argument_count($arguments, $count)
|
||||||
validate_argument_count($argc, 1);
|
validate_argument_count($argc, 1);
|
||||||
|
|
||||||
$action = $argv[1];
|
$action = $argv[1];
|
||||||
|
$extension = isset($argv[2]) ? $argv[2] : null;
|
||||||
|
require __DIR__ . '/../phpbb/event/php_exporter.' . $phpEx;
|
||||||
|
require __DIR__ . '/../phpbb/event/md_exporter.' . $phpEx;
|
||||||
|
require __DIR__ . '/../phpbb/event/recursive_event_filter_iterator.' . $phpEx;
|
||||||
|
require __DIR__ . '/../phpbb/recursive_dot_prefix_filter_iterator.' . $phpEx;
|
||||||
|
|
||||||
switch ($action)
|
switch ($action)
|
||||||
{
|
{
|
||||||
case 'acp':
|
case 'all':
|
||||||
export_from_eventsmd($phpbb_root_path, 'acp');
|
echo '__FORCETOC__' . "\n";
|
||||||
break;
|
|
||||||
|
|
||||||
case 'styles':
|
|
||||||
export_from_eventsmd($phpbb_root_path, 'styles');
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'php':
|
case 'php':
|
||||||
export_from_php($phpbb_root_path);
|
$exporter = new \phpbb\event\php_exporter($phpbb_root_path, $extension);
|
||||||
|
$exporter->crawl_phpbb_directory_php();
|
||||||
|
echo $exporter->export_events_for_wiki();
|
||||||
|
|
||||||
|
if ($action === 'php')
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
echo "\n";
|
||||||
|
// no break;
|
||||||
|
|
||||||
|
case 'styles':
|
||||||
|
$exporter = new \phpbb\event\md_exporter($phpbb_root_path, $extension);
|
||||||
|
$exporter->crawl_phpbb_directory_styles('docs/events.md');
|
||||||
|
echo $exporter->export_events_for_wiki();
|
||||||
|
|
||||||
|
if ($action === 'styles')
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
echo "\n";
|
||||||
|
// no break;
|
||||||
|
|
||||||
|
case 'adm':
|
||||||
|
$exporter = new \phpbb\event\md_exporter($phpbb_root_path, $extension);
|
||||||
|
$exporter->crawl_phpbb_directory_adm('docs/events.md');
|
||||||
|
echo $exporter->export_events_for_wiki();
|
||||||
|
|
||||||
|
if ($action === 'all')
|
||||||
|
{
|
||||||
|
echo "\n" . '[[Category:Events and Listeners]]' . "\n";
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -26,6 +26,7 @@ phpBB Developers: bantu (Andreas Fischer)
|
||||||
dhruv.goel92 (Dhruv Goel)
|
dhruv.goel92 (Dhruv Goel)
|
||||||
EXreaction (Nathan Guse)
|
EXreaction (Nathan Guse)
|
||||||
imkingdavid (David King)
|
imkingdavid (David King)
|
||||||
|
marc1706 (Marc Alexander)
|
||||||
nickvergessen (Joas Schilling)
|
nickvergessen (Joas Schilling)
|
||||||
prototech (Cesar Gallegos)
|
prototech (Cesar Gallegos)
|
||||||
|
|
||||||
|
|
|
@ -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="#v310b2">Changes since 3.1.0-b2</a></li>
|
||||||
<li><a href="#v310b1">Changes since 3.1.0-b1</a></li>
|
<li><a href="#v310b1">Changes since 3.1.0-b1</a></li>
|
||||||
<li><a href="#v310a3">Changes since 3.1.0-a3</a></li>
|
<li><a href="#v310a3">Changes since 3.1.0-a3</a></li>
|
||||||
<li><a href="#v310a2">Changes since 3.1.0-a2</a></li>
|
<li><a href="#v310a2">Changes since 3.1.0-a2</a></li>
|
||||||
|
@ -91,7 +92,172 @@
|
||||||
|
|
||||||
<div class="content">
|
<div class="content">
|
||||||
|
|
||||||
<a name="v310b1"></a><h3>1.i. Changes since 3.1.0-b1</h3>
|
<a name="v310b2"></a><h3>1.i. Changes since 3.1.0-b2</h3>
|
||||||
|
|
||||||
|
<h4>Bug</h4>
|
||||||
|
<ul>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-7707">PHPBB3-7707</a>] - Missing occurrences of get_username_string</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-8323">PHPBB3-8323</a>] - Banned User (PMs and Mails)</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-8558">PHPBB3-8558</a>] - Board Emails not setting a correct email header</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-8700">PHPBB3-8700</a>] - Language file "acp/styles.php" contains many unused language entries</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-8960">PHPBB3-8960</a>] - Allow changing allow_avatar_remote when images/avatars/upload is not writable</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10423">PHPBB3-10423</a>] - Searching for the term "test *" will highlight nearly every word and displays htmlspecialchars as htmlentities.</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10687">PHPBB3-10687</a>] - UNABLE_GET_IMAGE_SIZE text misleading for remote avatars</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10851">PHPBB3-10851</a>] - HTML files containing certain tags being rejected as possible attack vectors with "Check attachment file" set to "No"</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11098">PHPBB3-11098</a>] - New persistent login keys list should have (un)select all and order options.</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11339">PHPBB3-11339</a>] - Using AJAX calls one after another</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11352">PHPBB3-11352</a>] - Disapproving topic takes you to quick reply for that topic</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11431">PHPBB3-11431</a>] - All topic notifications are deleted if one reply is edited and needs to be approved</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11508">PHPBB3-11508</a>] - General error "not allowed as quickmod" when changing the forum while merging two topics</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11772">PHPBB3-11772</a>] - New topic notification triggered when editing an existing post with post-approval enabled</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11860">PHPBB3-11860</a>] - .htaccess not working for Apache 2.4</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11881">PHPBB3-11881</a>] - Timezone migration can take a long time</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11917">PHPBB3-11917</a>] - "Manage external account" shows when not activated</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11978">PHPBB3-11978</a>] - Text field for topic-search</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12004">PHPBB3-12004</a>] - Support empty routes to app.php/ in path_helper</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12012">PHPBB3-12012</a>] - DB Tools should correctly remove columns that are part of indexes</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12043">PHPBB3-12043</a>] - Sort Extensions by Name in ACP Ext Mgr</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12052">PHPBB3-12052</a>] - Post edited by user on moderation queue is not marked as unapproved.</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12083">PHPBB3-12083</a>] - "Select all" selects nothing in Webkit Browsers with only one character in [code] -</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12097">PHPBB3-12097</a>] - The validate_data() function doesn't work with class method</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12113">PHPBB3-12113</a>] - Deleting warnings does not use plurals correctly</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12121">PHPBB3-12121</a>] - Update process doesn't preserve total redirects for links</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12130">PHPBB3-12130</a>] - Bullet character disappears on mouse-over in IE8</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12186">PHPBB3-12186</a>] - MCP should open "Reported posts" instead of PM Reports</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12191">PHPBB3-12191</a>] - UCP should open with global settings instead of notification settings</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12193">PHPBB3-12193</a>] - Broken HTML when an SQL error occurs during migration</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12211">PHPBB3-12211</a>] - Attachment file names are run through htmlspecialchars twice</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12254">PHPBB3-12254</a>] - Language switching on Registration page doesn't work for Extensions</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12265">PHPBB3-12265</a>] - Contact profile fields icons should be hidden in a dropdown</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12286">PHPBB3-12286</a>] - Fix coding guidelines</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12331">PHPBB3-12331</a>] - Fix DB error in update_profile_field_data() with disabled fields</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12342">PHPBB3-12342</a>] - Javascript Bugs and Fixes</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12348">PHPBB3-12348</a>] - Make create_schema_files.php runnable when phpBB is not installed yet</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12350">PHPBB3-12350</a>] - tests/extension/modules_test.php can not be run alone</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12351">PHPBB3-12351</a>] - Ajax "Mark topics read" does not give feedback</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12353">PHPBB3-12353</a>] - User attachments in ACP are not displaying every attachment</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12354">PHPBB3-12354</a>] - passwords_manager_test::test_unique_id fails from time to time</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12355">PHPBB3-12355</a>] - Topic Tools not updated fully updated when subscribing/bookmarking</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12356">PHPBB3-12356</a>] - Plupload does not load in PM editor</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12358">PHPBB3-12358</a>] - data-refresh not working as expected for routes</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12359">PHPBB3-12359</a>] - Day and Month of Birthday Misaligned When Editing</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12360">PHPBB3-12360</a>] - User is displayed twice in online list after second login</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12362">PHPBB3-12362</a>] - Infinite loop in schema generator if dependency can't be resolved</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12367">PHPBB3-12367</a>] - Travis fails in phpbb_wrapper_gmgetdate_test::test_gmgetdate()</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12372">PHPBB3-12372</a>] - dE() function does not toggle in ACP</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12373">PHPBB3-12373</a>] - Add to/from forum ids to LOG_MOVE entries </li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12375">PHPBB3-12375</a>] - Attachment deletion broken after jQuery update</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12378">PHPBB3-12378</a>] - Prosilver common.css has duplicate entries</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12379">PHPBB3-12379</a>] - Plupload labels duplicated when responsive</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12380">PHPBB3-12380</a>] - “Remember Me” login keys are not sorted in UCP</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12381">PHPBB3-12381</a>] - Broken error message when selecting invalid DB driver</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12382">PHPBB3-12382</a>] - Template event listners can not access subloops when loop is defined in the original file</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12386">PHPBB3-12386</a>] - Add DEBUG_EXTRA again and use it for container creation</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12388">PHPBB3-12388</a>] - Log entries without log_data display language key instead of translated string</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12391">PHPBB3-12391</a>] - core.posting_modify_template_vars pass some variables to listeners</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12395">PHPBB3-12395</a>] - Pagination tests fail on travis with postgresql</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12397">PHPBB3-12397</a>] - db_tools::sql_unique_index_exists() has wrong doc block</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12398">PHPBB3-12398</a>] - Prune shadow topics tests fail due to wrong forum_last_post_id</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12405">PHPBB3-12405</a>] - create_user() in functional tests uses invalid timezone and no dateformat</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12406">PHPBB3-12406</a>] - Fix description of page_title var in core.viewtopic_modify_page_title</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12412">PHPBB3-12412</a>] - Styling issue with pagination numbering for smilies and icons</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12413">PHPBB3-12413</a>] - Fatal error "Call to undefined method phpbb\feed\*::fetch_attachments()" for topic based feeds</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12418">PHPBB3-12418</a>] - Notice displayed for feed.php </li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12422">PHPBB3-12422</a>] - Log searches error due to plural arrays in language files</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12429">PHPBB3-12429</a>] - Update phpunit to 3.8+</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12432">PHPBB3-12432</a>] - Migrator should not automatically revert custom functions defined in update_data()</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12436">PHPBB3-12436</a>] - Functional test framework's add_style() should not use sql_multi_insert()</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12444">PHPBB3-12444</a>] - The logs message aren't filled correctly when some values are missing.</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12455">PHPBB3-12455</a>] - Remove unused strings EXTENSION_CONTROLLER_MISSING and EXTENSION_CLASS_WRONG_TYPE from common.php</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12456">PHPBB3-12456</a>] - Missing new lines at the end of file in language files</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12467">PHPBB3-12467</a>] - Add config_*.php and tests_config_*.php to .gitignore</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12469">PHPBB3-12469</a>] - Convert Timezone test fails because of outdated schema</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12470">PHPBB3-12470</a>] - Move commands from .travis.yml to separate files to allow reuse</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12472">PHPBB3-12472</a>] - Set fast finish for .travis.yml</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12474">PHPBB3-12474</a>] - The console command for updating/migrating the db should display the error with the <error> tag</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12475">PHPBB3-12475</a>] - Undefined variable $log in db:migrate console command</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12477">PHPBB3-12477</a>] - PM link no longer displays in viewtopic</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12478">PHPBB3-12478</a>] - ucp_pm_viewmessage_contact_fields_before/after missing in PM page</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12480">PHPBB3-12480</a>] - \phpbb\extension\finder is finding too many routing files</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12482">PHPBB3-12482</a>] - Undefined variable: data in viewtopic when not logged in</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12485">PHPBB3-12485</a>] - Broken tests due to absolute exclude</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12494">PHPBB3-12494</a>] - Undefined index: user_type on viewtopic.php</li>
|
||||||
|
</ul>
|
||||||
|
<h4>Improvement</h4>
|
||||||
|
<ul>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9758">PHPBB3-9758</a>] - Make users avatar available to the template</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10521">PHPBB3-10521</a>] - Override Board Language via URL</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11962">PHPBB3-11962</a>] - Resize images to 100% with in viewtopic</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12150">PHPBB3-12150</a>] - Automatically prune shadow topics</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12201">PHPBB3-12201</a>] - Clean up ACP attachment management page</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12273">PHPBB3-12273</a>] - Add a test to run the event exporter on travis</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12282">PHPBB3-12282</a>] - Add an interface for dbal driver to ensure that functions are there</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12283">PHPBB3-12283</a>] - Online status on posting review page.</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12322">PHPBB3-12322</a>] - Add CSS classes for post-profile <dd> elements</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12323">PHPBB3-12323</a>] - Add Template Event search_results_author_prepend</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12327">PHPBB3-12327</a>] - Changing poll result-bars width from absolute % to relative</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12328">PHPBB3-12328</a>] - Add Template Event index_body_stat_blocks_after</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12329">PHPBB3-12329</a>] - Add <div> container to index blocks (online-list, birthday-list, statistics)</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12333">PHPBB3-12333</a>] - Add Template Event overall_header_page_body_before</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12335">PHPBB3-12335</a>] - Add Events to phpbb\profilefields\manager (grab & show)</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12336">PHPBB3-12336</a>] - Add functions_module.php core events to allow adjusting parameters for custom ACP, MCP, UCP modules</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12337">PHPBB3-12337</a>] - Update jQuery to version 1.11.0</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12338">PHPBB3-12338</a>] - Add Template Event overall_footer_page_body_after</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12339">PHPBB3-12339</a>] - Add Event core.page_header_after</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12344">PHPBB3-12344</a>] - Add event to submit_pm()</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12345">PHPBB3-12345</a>] - Improve search flood interval message</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12346">PHPBB3-12346</a>] - Add Template Event overall_header_navlink_append/prepend</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12347">PHPBB3-12347</a>] - Move breadcrumb seperator from template to CSS</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12361">PHPBB3-12361</a>] - Replace the Google logo with the phpBB logo in the BBCode FAQ</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12364">PHPBB3-12364</a>] - Add template identifier var to all missing pages</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12365">PHPBB3-12365</a>] - Do not crop image attachment heights at 350px</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12366">PHPBB3-12366</a>] - Add Event core.search_get_posts_data</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12369">PHPBB3-12369</a>] - Add template variable for extensions to add classes to <body> element without JS</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12374">PHPBB3-12374</a>] - Add Template events index_body_block_<blockname>_append</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12376">PHPBB3-12376</a>] - Add template events viewtopic_body_polls</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12377">PHPBB3-12377</a>] - Move navbars to separate template files</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12389">PHPBB3-12389</a>] - Move "print topic" & "email topic" icons (and PM versions) to topic tools</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12392">PHPBB3-12392</a>] - Include $profile_fields in core.memberlist_view_profile event</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12396">PHPBB3-12396</a>] - Add Template events viewforum_forum_name_append/prepend</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12400">PHPBB3-12400</a>] - Add viewforum.php core event to allow modifying topics data before display the page</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12401">PHPBB3-12401</a>] - Add $topic_data array to core.viewtopic_modify_post_row event in viewtopic.php</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12403">PHPBB3-12403</a>] - Add template events to acp_users_prefs.html</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12409">PHPBB3-12409</a>] - Add acp_users.php core events to modify users preferences data</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12410">PHPBB3-12410</a>] - Add Template events search_results_post_before/after</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12411">PHPBB3-12411</a>] - Expand dispatch vars of event: core.search_modify_tpl_ary</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12419">PHPBB3-12419</a>] - Improve font size in notifications drop-down</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12437">PHPBB3-12437</a>] - Clean up redundant "clear" elements & "corners"</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12438">PHPBB3-12438</a>] - Add Template event memberlist_view_content_prepend</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12442">PHPBB3-12442</a>] - Add CSS classes to heading elements</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12473">PHPBB3-12473</a>] - Add console command for updating/migrating database</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12484">PHPBB3-12484</a>] - Template event ucp_agreement_terms_before/after</li>
|
||||||
|
</ul>
|
||||||
|
<h4>New Feature</h4>
|
||||||
|
<ul>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9728">PHPBB3-9728</a>] - Support for sqlite version 3</li>
|
||||||
|
</ul>
|
||||||
|
<h4>Sub-task</h4>
|
||||||
|
<ul>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12349">PHPBB3-12349</a>] - License in migrations header not linking to version 2 of GNU GPL</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12370">PHPBB3-12370</a>] - Editing a post removes topic notifications</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12371">PHPBB3-12371</a>] - Notifications are incorrectly updated when a post is deleted or moved to ModerationQueue</li>
|
||||||
|
</ul>
|
||||||
|
<h4>Task</h4>
|
||||||
|
<ul>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12071">PHPBB3-12071</a>] - Test suite fails if Fileinfo isn't installed</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12199">PHPBB3-12199</a>] - Move deprecated functions to functions_compatibility.php</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12318">PHPBB3-12318</a>] - Correctly setup HHVM functional tests on Travis CI</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12320">PHPBB3-12320</a>] - No longer allow Travis CI HHVM environment to fail</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12341">PHPBB3-12341</a>] - Add tests for get_username_string()</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12390">PHPBB3-12390</a>] - Released packages MUST NOT contain vendor tests or other non-library code</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12417">PHPBB3-12417</a>] - hhvm-nightly 2014.04.16~precise breaks tests</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12423">PHPBB3-12423</a>] - Increase composer minimum-stability from beta to stable</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12424">PHPBB3-12424</a>] - Update Symfony Dependencies to latest 2.3 releaes</li>
|
||||||
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12458">PHPBB3-12458</a>] - Apply Squiz.WhiteSpace.SuperfluousWhitespace.* sniffs to legacy codebase</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="v310b1"></a><h3>1.ii. Changes since 3.1.0-b1</h3>
|
||||||
|
|
||||||
<h4>Bug</h4>
|
<h4>Bug</h4>
|
||||||
<ul>
|
<ul>
|
||||||
|
@ -159,7 +325,7 @@
|
||||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12302">PHPBB3-12302</a>] - Upgrade composer.phar to 1.0.0-alpha8</li>
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12302">PHPBB3-12302</a>] - Upgrade composer.phar to 1.0.0-alpha8</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<a name="v310a3"></a><h3>1.ii. Changes since 3.1.0-a3</h3>
|
<a name="v310a3"></a><h3>1.iii. Changes since 3.1.0-a3</h3>
|
||||||
|
|
||||||
<h4>Bug</h4>
|
<h4>Bug</h4>
|
||||||
<ul>
|
<ul>
|
||||||
|
@ -306,7 +472,7 @@
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
<a name="v310a2"></a><h3>1.iii. Changes since 3.1.0-a2</h3>
|
<a name="v310a2"></a><h3>1.iv. Changes since 3.1.0-a2</h3>
|
||||||
|
|
||||||
<h4>Bug</h4>
|
<h4>Bug</h4>
|
||||||
<ul>
|
<ul>
|
||||||
|
@ -414,7 +580,7 @@
|
||||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12147">PHPBB3-12147</a>] - Remove Travis CI notification configuration</li>
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12147">PHPBB3-12147</a>] - Remove Travis CI notification configuration</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<a name="v310a1"></a><h3>1.iv. Changes since 3.1.0-a1</h3>
|
<a name="v310a1"></a><h3>1.v. Changes since 3.1.0-a1</h3>
|
||||||
|
|
||||||
<h4>Bug</h4>
|
<h4>Bug</h4>
|
||||||
<ul>
|
<ul>
|
||||||
|
@ -490,7 +656,7 @@
|
||||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11998">PHPBB3-11998</a>] - Add console / command line client environment </li>
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11998">PHPBB3-11998</a>] - Add console / command line client environment </li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<a name="v30x"></a><h3>1.v. Changes since 3.0.x</h3>
|
<a name="v30x"></a><h3>1.vi. Changes since 3.0.x</h3>
|
||||||
|
|
||||||
<h4>Bug</h4>
|
<h4>Bug</h4>
|
||||||
<ul>
|
<ul>
|
||||||
|
@ -1171,7 +1337,7 @@
|
||||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11913">PHPBB3-11913</a>] - Apply reorganisation of download.phpbb.com to build_announcement.php</li>
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11913">PHPBB3-11913</a>] - Apply reorganisation of download.phpbb.com to build_announcement.php</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<a name="v3011"></a><h3>1.vi. Changes since 3.0.11</h3>
|
<a name="v3011"></a><h3>1.vii. Changes since 3.0.11</h3>
|
||||||
|
|
||||||
<h4>Bug</h4>
|
<h4>Bug</h4>
|
||||||
<ul>
|
<ul>
|
||||||
|
@ -1326,7 +1492,7 @@
|
||||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11753">PHPBB3-11753</a>] - Upgrade mysql_upgrader.php schema data.</li>
|
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11753">PHPBB3-11753</a>] - Upgrade mysql_upgrader.php schema data.</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<a name="v3010"></a><h3>1.vii. Changes since 3.0.10</h3>
|
<a name="v3010"></a><h3>1.viii. Changes since 3.0.10</h3>
|
||||||
|
|
||||||
<h4>Bug</h4>
|
<h4>Bug</h4>
|
||||||
<ul>
|
<ul>
|
||||||
|
@ -1451,7 +1617,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.viii. Changes since 3.0.9</h3>
|
<a name="v309"></a><h3>1.ix. Changes since 3.0.9</h3>
|
||||||
|
|
||||||
<h4>Bug</h4>
|
<h4>Bug</h4>
|
||||||
<ul>
|
<ul>
|
||||||
|
@ -1587,7 +1753,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.ix. Changes since 3.0.8</h3>
|
<a name="v308"></a><h3>1.x. Changes since 3.0.8</h3>
|
||||||
|
|
||||||
<h4> Bug
|
<h4> Bug
|
||||||
</h4>
|
</h4>
|
||||||
|
@ -1955,7 +2121,7 @@
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
<a name="v307-PL1"></a><h3>1.x. Changes since 3.0.7-PL1</h3>
|
<a name="v307-PL1"></a><h3>1.xi. Changes since 3.0.7-PL1</h3>
|
||||||
<h4> Security
|
<h4> Security
|
||||||
</h4>
|
</h4>
|
||||||
<ul>
|
<ul>
|
||||||
|
@ -2413,13 +2579,13 @@
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
<a name="v307"></a><h3>1.xi. Changes since 3.0.7</h3>
|
<a name="v307"></a><h3>1.xii. 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.xii. Changes since 3.0.6</h3>
|
<a name="v306"></a><h3>1.xiii. 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>
|
||||||
|
@ -2523,7 +2689,7 @@
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<a name="v305"></a><h3>1.xiii. Changes since 3.0.5</h3>
|
<a name="v305"></a><h3>1.xiv. 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>
|
||||||
|
@ -2745,7 +2911,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.xiv. Changes since 3.0.4</h3>
|
<a name="v304"></a><h3>1.xv. 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>
|
||||||
|
@ -2834,7 +3000,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.xv. Changes since 3.0.3</h3>
|
<a name="v303"></a><h3>1.xvi. 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>
|
||||||
|
@ -2866,7 +3032,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.xvi. Changes since 3.0.2</h3>
|
<a name="v302"></a><h3>1.xvii. 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>
|
||||||
|
@ -2965,7 +3131,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.xvii. Changes since 3.0.1</h3>
|
<a name="v301"></a><h3>1.xviii. 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>
|
||||||
|
@ -3013,7 +3179,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.xviii. Changes since 3.0.0</h3>
|
<a name="v300"></a><h3>1.xix. Changes since 3.0.0</h3>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>[Change] Validate birthdays (Bug #15004)</li>
|
<li>[Change] Validate birthdays (Bug #15004)</li>
|
||||||
|
@ -3084,7 +3250,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.xix. Changes since 3.0.RC8</h3>
|
<a name="v30rc8"></a><h3>1.xx. 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>
|
||||||
|
@ -3093,7 +3259,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.xx. Changes since 3.0.RC7</h3>
|
<a name="v30rc7"></a><h3>1.xxi. 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>
|
||||||
|
@ -3128,7 +3294,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.xxi. Changes since 3.0.RC6</h3>
|
<a name="v30rc6"></a><h3>1.xxii. 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>
|
||||||
|
@ -3138,7 +3304,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.xxii. Changes since 3.0.RC5</h3>
|
<a name="v30rc5"></a><h3>1.xxiii. 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>
|
||||||
|
@ -3201,7 +3367,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.xxiii. Changes since 3.0.RC4</h3>
|
<a name="v30rc4"></a><h3>1.xxiv. 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>
|
||||||
|
@ -3252,7 +3418,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.xxiv. Changes since 3.0.RC3</h3>
|
<a name="v30rc3"></a><h3>1.xxv. 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>
|
||||||
|
@ -3361,7 +3527,7 @@
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<a name="v30rc2"></a><h3>1.xxv. Changes since 3.0.RC2</h3>
|
<a name="v30rc2"></a><h3>1.xxvi. 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>
|
||||||
|
@ -3407,7 +3573,7 @@
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<a name="v30rc1"></a><h3>1.xxvi. Changes since 3.0.RC1</h3>
|
<a name="v30rc1"></a><h3>1.xxvii. 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>
|
||||||
|
|
|
@ -134,7 +134,8 @@
|
||||||
<li>MySQL 3.23 or above (MySQLi supported)</li>
|
<li>MySQL 3.23 or above (MySQLi supported)</li>
|
||||||
<li>MariaDB 5.1 or above</li>
|
<li>MariaDB 5.1 or above</li>
|
||||||
<li>PostgreSQL 8.3+</li>
|
<li>PostgreSQL 8.3+</li>
|
||||||
<li>SQLite 2.8.2+ (SQLite 3 is not supported)</li>
|
<li>SQLite 2.8.2+</li>
|
||||||
|
<li>SQLite 3.6.15+</li>
|
||||||
<li>Firebird 2.1+</li>
|
<li>Firebird 2.1+</li>
|
||||||
<li>MS SQL Server 2000 or above (directly or via ODBC or the native adapter)</li>
|
<li>MS SQL Server 2000 or above (directly or via ODBC or the native adapter)</li>
|
||||||
<li>Oracle</li>
|
<li>Oracle</li>
|
||||||
|
|
|
@ -66,16 +66,64 @@ acp_simple_header_body_before
|
||||||
|
|
||||||
acp_simple_header_head_append
|
acp_simple_header_head_append
|
||||||
===
|
===
|
||||||
* Location: adm/style/overall_header.html
|
* Location: adm/style/simple_header.html
|
||||||
* Since: 3.1.0-a1
|
* Since: 3.1.0-a1
|
||||||
* Purpose: Add assets within the `<head>` tags in the simple header of the ACP
|
* Purpose: Add assets within the `<head>` tags in the simple header of the ACP
|
||||||
|
|
||||||
acp_users_overview_options_append
|
acp_users_overview_options_append
|
||||||
===
|
===
|
||||||
* Location: adm/style/acp_users.html
|
* Location: adm/style/acp_users_overview.html
|
||||||
* Since: 3.1.0-a1
|
* Since: 3.1.0-a1
|
||||||
* Purpose: Add options and settings on user overview page
|
* Purpose: Add options and settings on user overview page
|
||||||
|
|
||||||
|
acp_users_prefs_append
|
||||||
|
===
|
||||||
|
* Location: adm/style/acp_users_prefs.html
|
||||||
|
* Since: 3.1.0-b3
|
||||||
|
* Purpose: Add user options fieldset to the bottom of ACP users prefs settings
|
||||||
|
|
||||||
|
acp_users_prefs_prepend
|
||||||
|
===
|
||||||
|
* Location: adm/style/acp_users_prefs.html
|
||||||
|
* Since: 3.1.0-b3
|
||||||
|
* Purpose: Add user options fieldset to the top of ACP users prefs settings
|
||||||
|
|
||||||
|
acp_users_prefs_personal_append
|
||||||
|
===
|
||||||
|
* Location: adm/style/acp_users_prefs.html
|
||||||
|
* Since: 3.1.0-b3
|
||||||
|
* Purpose: Add user options fieldset to the bottom of ACP users personal prefs settings
|
||||||
|
|
||||||
|
acp_users_prefs_personal_prepend
|
||||||
|
===
|
||||||
|
* Location: adm/style/acp_users_prefs.html
|
||||||
|
* Since: 3.1.0-b3
|
||||||
|
* Purpose: Add user options fieldset to the top of ACP users personal prefs settings
|
||||||
|
|
||||||
|
acp_users_prefs_post_append
|
||||||
|
===
|
||||||
|
* Location: adm/style/acp_users_prefs.html
|
||||||
|
* Since: 3.1.0-b3
|
||||||
|
* Purpose: Add user options fieldset to the bottom of ACP users post prefs settings
|
||||||
|
|
||||||
|
acp_users_prefs_post_prepend
|
||||||
|
===
|
||||||
|
* Location: adm/style/acp_users_prefs.html
|
||||||
|
* Since: 3.1.0-b3
|
||||||
|
* Purpose: Add user options fieldset to the top of ACP users post prefs settings
|
||||||
|
|
||||||
|
acp_users_prefs_view_append
|
||||||
|
===
|
||||||
|
* Location: adm/style/acp_users_prefs.html
|
||||||
|
* Since: 3.1.0-b3
|
||||||
|
* Purpose: Add user options fieldset to the bottom of ACP users view prefs settings
|
||||||
|
|
||||||
|
acp_users_prefs_view_prepend
|
||||||
|
===
|
||||||
|
* Location: adm/style/acp_users_prefs.html
|
||||||
|
* Since: 3.1.0-b3
|
||||||
|
* Purpose: Add user options fieldset to the top of ACP users view prefs settings
|
||||||
|
|
||||||
acp_users_signature_editor_buttons_after
|
acp_users_signature_editor_buttons_after
|
||||||
===
|
===
|
||||||
* Locations:
|
* Locations:
|
||||||
|
@ -91,7 +139,7 @@ acp_users_signature_editor_buttons_before
|
||||||
* Purpose: Add content before BBCode posting buttons in the ACP user signature
|
* Purpose: Add content before BBCode posting buttons in the ACP user signature
|
||||||
|
|
||||||
forumlist_body_category_header_after
|
forumlist_body_category_header_after
|
||||||
====
|
===
|
||||||
* Locations:
|
* Locations:
|
||||||
+ styles/prosilver/template/forumlist_body.html
|
+ styles/prosilver/template/forumlist_body.html
|
||||||
+ styles/subsilver2/template/forumlist_body.html
|
+ styles/subsilver2/template/forumlist_body.html
|
||||||
|
@ -99,7 +147,7 @@ forumlist_body_category_header_after
|
||||||
* Purpose: Add content after the header of the category on the forum list.
|
* Purpose: Add content after the header of the category on the forum list.
|
||||||
|
|
||||||
forumlist_body_category_header_before
|
forumlist_body_category_header_before
|
||||||
====
|
===
|
||||||
* Locations:
|
* Locations:
|
||||||
+ styles/prosilver/template/forumlist_body.html
|
+ styles/prosilver/template/forumlist_body.html
|
||||||
+ styles/subsilver2/template/forumlist_body.html
|
+ styles/subsilver2/template/forumlist_body.html
|
||||||
|
@ -107,7 +155,7 @@ forumlist_body_category_header_before
|
||||||
* Purpose: Add content before the header of the category on the forum list.
|
* Purpose: Add content before the header of the category on the forum list.
|
||||||
|
|
||||||
forumlist_body_last_post_title_prepend
|
forumlist_body_last_post_title_prepend
|
||||||
====
|
===
|
||||||
* Locations:
|
* Locations:
|
||||||
+ styles/prosilver/template/forumlist_body.html
|
+ styles/prosilver/template/forumlist_body.html
|
||||||
+ styles/subsilver2/template/forumlist_body.html
|
+ styles/subsilver2/template/forumlist_body.html
|
||||||
|
@ -115,7 +163,7 @@ forumlist_body_last_post_title_prepend
|
||||||
* Purpose: Add content before the post title of the latest post in a forum on the forum list.
|
* Purpose: Add content before the post title of the latest post in a forum on the forum list.
|
||||||
|
|
||||||
forumlist_body_subforums_after
|
forumlist_body_subforums_after
|
||||||
====
|
===
|
||||||
* Locations:
|
* Locations:
|
||||||
+ styles/prosilver/template/forumlist_body.html
|
+ styles/prosilver/template/forumlist_body.html
|
||||||
+ styles/subsilver2/template/forumlist_body.html
|
+ styles/subsilver2/template/forumlist_body.html
|
||||||
|
@ -123,7 +171,7 @@ forumlist_body_subforums_after
|
||||||
* Purpose: Add content after the list of subforums (if any) for each forum on the forum list.
|
* Purpose: Add content after the list of subforums (if any) for each forum on the forum list.
|
||||||
|
|
||||||
forumlist_body_subforums_before
|
forumlist_body_subforums_before
|
||||||
====
|
===
|
||||||
* Locations:
|
* Locations:
|
||||||
+ styles/prosilver/template/forumlist_body.html
|
+ styles/prosilver/template/forumlist_body.html
|
||||||
+ styles/subsilver2/template/forumlist_body.html
|
+ styles/subsilver2/template/forumlist_body.html
|
||||||
|
@ -131,13 +179,61 @@ forumlist_body_subforums_before
|
||||||
* Purpose: Add content before the list of subforums (if any) for each forum on the forum list.
|
* Purpose: Add content before the list of subforums (if any) for each forum on the forum list.
|
||||||
|
|
||||||
forumlist_body_last_row_after
|
forumlist_body_last_row_after
|
||||||
====
|
===
|
||||||
* Locations:
|
* Locations:
|
||||||
+ styles/prosilver/template/forumlist_body.html
|
+ styles/prosilver/template/forumlist_body.html
|
||||||
+ styles/subsilver2/template/forumlist_body.html
|
+ styles/subsilver2/template/forumlist_body.html
|
||||||
* Since: 3.1.0-b2
|
* Since: 3.1.0-b2
|
||||||
* Purpose: Add content after the very last row of the forum list.
|
* Purpose: Add content after the very last row of the forum list.
|
||||||
|
|
||||||
|
index_body_block_birthday_append
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/index_body.html
|
||||||
|
+ styles/subsilver2/template/index_body.html
|
||||||
|
* Since: 3.1.0-b3
|
||||||
|
* Purpose: Append content to the birthday list on the Board index
|
||||||
|
|
||||||
|
index_body_block_birthday_prepend
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/index_body.html
|
||||||
|
+ styles/subsilver2/template/index_body.html
|
||||||
|
* Since: 3.1.0-b3
|
||||||
|
* Purpose: Prepend content to the birthday list on the Board index
|
||||||
|
|
||||||
|
index_body_block_online_append
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/index_body.html
|
||||||
|
+ styles/subsilver2/template/index_body.html
|
||||||
|
* Since: 3.1.0-b3
|
||||||
|
* Purpose: Append content to the online list on the Board index
|
||||||
|
|
||||||
|
index_body_block_online_prepend
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/index_body.html
|
||||||
|
+ styles/subsilver2/template/index_body.html
|
||||||
|
* Since: 3.1.0-b3
|
||||||
|
* Purpose: Prepend content to the online list on the Board index
|
||||||
|
|
||||||
|
index_body_block_stats_append
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/index_body.html
|
||||||
|
+ styles/subsilver2/template/index_body.html
|
||||||
|
* Since: 3.1.0-b3
|
||||||
|
* Purpose: Append content to the statistics list on the Board index
|
||||||
|
|
||||||
|
index_body_block_stats_prepend
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/index_body.html
|
||||||
|
+ styles/subsilver2/template/index_body.html
|
||||||
|
* Since: 3.1.0-b3
|
||||||
|
* Purpose: Prepend content to the statistics list on the Board index
|
||||||
|
|
||||||
index_body_linklist_after
|
index_body_linklist_after
|
||||||
===
|
===
|
||||||
* Locations:
|
* Locations:
|
||||||
|
@ -212,6 +308,14 @@ memberlist_view_content_append
|
||||||
* Since: 3.1.0-b2
|
* Since: 3.1.0-b2
|
||||||
* Purpose: Add custom content to the user profile view after the main content
|
* Purpose: Add custom content to the user profile view after the main content
|
||||||
|
|
||||||
|
memberlist_view_content_prepend
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/memberlist_view.html
|
||||||
|
+ styles/subsilver2/template/memberlist_view.html
|
||||||
|
* Since: 3.1.0-b3
|
||||||
|
* Purpose: Add custom content to the user profile view before the main content
|
||||||
|
|
||||||
memberlist_view_user_statistics_after
|
memberlist_view_user_statistics_after
|
||||||
===
|
===
|
||||||
* Locations:
|
* Locations:
|
||||||
|
@ -275,6 +379,38 @@ overall_footer_page_body_after
|
||||||
* Since: 3.1.0-b3
|
* Since: 3.1.0-b3
|
||||||
* Purpose: Add content after the page-body, but before the footer
|
* Purpose: Add content after the page-body, but before the footer
|
||||||
|
|
||||||
|
overall_footer_teamlink_after
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/navbar_footer.html
|
||||||
|
+ styles/subsilver2/template/index_body.html
|
||||||
|
* Since: 3.1.0-b3
|
||||||
|
* Purpose: Add contents after the team-link in the footer
|
||||||
|
|
||||||
|
overall_footer_teamlink_before
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/navbar_footer.html
|
||||||
|
+ styles/subsilver2/template/index_body.html
|
||||||
|
* Since: 3.1.0-b3
|
||||||
|
* Purpose: Add contents before the team-link in the footer
|
||||||
|
|
||||||
|
overall_footer_timezone_after
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/navbar_footer.html
|
||||||
|
+ styles/subsilver2/template/breadcrumbs.html
|
||||||
|
* Since: 3.1.0-b3
|
||||||
|
* Purpose: Add content to the navbar in the page footer, after "Timezone"
|
||||||
|
|
||||||
|
overall_footer_timezone_before
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/navbar_footer.html
|
||||||
|
+ styles/subsilver2/template/breadcrumbs.html
|
||||||
|
* Since: 3.1.0-b3
|
||||||
|
* Purpose: Add content to the navbar in the page footer, before "Timezone"
|
||||||
|
|
||||||
overall_header_body_before
|
overall_header_body_before
|
||||||
===
|
===
|
||||||
* Locations:
|
* Locations:
|
||||||
|
@ -323,6 +459,22 @@ overall_header_navigation_prepend
|
||||||
* Since: 3.1.0-a1
|
* Since: 3.1.0-a1
|
||||||
* Purpose: Add links before the navigation links in the header
|
* Purpose: Add links before the navigation links in the header
|
||||||
|
|
||||||
|
overall_header_navlink_append
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/navbar_header.html
|
||||||
|
+ styles/subsilver2/template/breadcrumbs.html
|
||||||
|
* Since: 3.1.0-b3
|
||||||
|
* Purpose: Add content after each individual navlink (breadcrumb)
|
||||||
|
|
||||||
|
overall_header_navlink_prepend
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/navbar_header.html
|
||||||
|
+ styles/subsilver2/template/breadcrumbs.html
|
||||||
|
* Since: 3.1.0-b3
|
||||||
|
* Purpose: Add content before each individual navlink (breadcrumb)
|
||||||
|
|
||||||
overall_header_page_body_before
|
overall_header_page_body_before
|
||||||
===
|
===
|
||||||
* Locations:
|
* Locations:
|
||||||
|
@ -419,10 +571,41 @@ quickreply_editor_message_before
|
||||||
* Since: 3.1.0-a4
|
* Since: 3.1.0-a4
|
||||||
* Purpose: Add content before the quick reply textbox
|
* Purpose: Add content before the quick reply textbox
|
||||||
|
|
||||||
|
search_results_post_after
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/search_results.html
|
||||||
|
+ styles/subsilver2/template/search_results.html
|
||||||
|
* Since: 3.1.0-b3
|
||||||
|
* Purpose: Add data after search result posts
|
||||||
|
|
||||||
|
search_results_post_before
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/search_results.html
|
||||||
|
+ styles/subsilver2/template/search_results.html
|
||||||
|
* Since: 3.1.0-b3
|
||||||
|
* Purpose: Add data before search result posts
|
||||||
|
|
||||||
|
search_results_postprofile_after
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/search_results.html
|
||||||
|
* Since: 3.1.0-b3
|
||||||
|
* Purpose: Add content after the post author and stats in search results (posts view mode)
|
||||||
|
|
||||||
|
search_results_postprofile_before
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/search_results.html
|
||||||
|
* Since: 3.1.0-b3
|
||||||
|
* Purpose: Add content directly before the post author in search results (posts view mode)
|
||||||
|
|
||||||
simple_footer_after
|
simple_footer_after
|
||||||
===
|
===
|
||||||
* Locations:
|
* Locations:
|
||||||
+ styles/prosilver/template/simple_footer.html
|
+ styles/prosilver/template/simple_footer.html
|
||||||
|
+ styles/subsilver2/template/simple_footer.html
|
||||||
* Since: 3.1.0-a1
|
* Since: 3.1.0-a1
|
||||||
* Purpose: Add content directly prior to the `</body>` tag of the simple footer
|
* Purpose: Add content directly prior to the `</body>` tag of the simple footer
|
||||||
|
|
||||||
|
@ -434,6 +617,14 @@ simple_header_body_before
|
||||||
* Since: 3.1.0-b2
|
* Since: 3.1.0-b2
|
||||||
* Purpose: Add content to the header body
|
* Purpose: Add content to the header body
|
||||||
|
|
||||||
|
simple_header_head_append
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/simple_header.html
|
||||||
|
+ styles/subsilver2/template/simple_header.html
|
||||||
|
* Since: 3.1.0-b4
|
||||||
|
* Purpose: Add asset calls directly before the `</head>` tag
|
||||||
|
|
||||||
topiclist_row_prepend
|
topiclist_row_prepend
|
||||||
===
|
===
|
||||||
* Locations:
|
* Locations:
|
||||||
|
@ -454,6 +645,38 @@ topiclist_row_append
|
||||||
* Since: 3.1.0-a1
|
* Since: 3.1.0-a1
|
||||||
* Purpose: Add content into topic rows (inside the elements containing topic titles)
|
* Purpose: Add content into topic rows (inside the elements containing topic titles)
|
||||||
|
|
||||||
|
ucp_agreement_terms_after
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/ucp_agreement.html
|
||||||
|
+ styles/subsilver2/template/ucp_agreement.html
|
||||||
|
* Since: 3.1.0-b3
|
||||||
|
* Purpose: Add content after the terms of agreement text at user registration
|
||||||
|
|
||||||
|
ucp_agreement_terms_before
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/ucp_agreement.html
|
||||||
|
+ styles/subsilver2/template/ucp_agreement.html
|
||||||
|
* Since: 3.1.0-b3
|
||||||
|
* Purpose: Add content before the terms of agreement text at user registration
|
||||||
|
|
||||||
|
ucp_pm_viewmessage_contact_fields_after
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/ucp_pm_viewmessage.html
|
||||||
|
* Since: 3.1.0-b1
|
||||||
|
* Purpose: Add data after the contact fields on the user profile when viewing
|
||||||
|
a private message
|
||||||
|
|
||||||
|
ucp_pm_viewmessage_contact_fields_before
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/ucp_pm_viewmessage.html
|
||||||
|
* Since: 3.1.0-b1
|
||||||
|
* Purpose: Add data before the contact fields on the user profile when viewing
|
||||||
|
a private message
|
||||||
|
|
||||||
ucp_pm_viewmessage_custom_fields_after
|
ucp_pm_viewmessage_custom_fields_after
|
||||||
===
|
===
|
||||||
* Locations:
|
* Locations:
|
||||||
|
@ -562,6 +785,22 @@ ucp_friend_list_after
|
||||||
* Since: 3.1.0-a4
|
* Since: 3.1.0-a4
|
||||||
* Purpose: Add optional elements after list of friends in UCP
|
* Purpose: Add optional elements after list of friends in UCP
|
||||||
|
|
||||||
|
viewforum_forum_name_append
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/viewforum_body.html
|
||||||
|
+ styles/subsilver2/template/viewforum_body.html
|
||||||
|
* Since: 3.1.0-b3
|
||||||
|
* Purpose: Add content directly after the forum name link on the View forum screen
|
||||||
|
|
||||||
|
viewforum_forum_name_prepend
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/viewforum_body.html
|
||||||
|
+ styles/subsilver2/template/viewforum_body.html
|
||||||
|
* Since: 3.1.0-b3
|
||||||
|
* Purpose: Add content directly before the forum name link on the View forum screen
|
||||||
|
|
||||||
viewtopic_print_head_append
|
viewtopic_print_head_append
|
||||||
===
|
===
|
||||||
* Locations:
|
* Locations:
|
||||||
|
@ -570,6 +809,22 @@ viewtopic_print_head_append
|
||||||
* Since: 3.1.0-a1
|
* Since: 3.1.0-a1
|
||||||
* Purpose: Add asset calls directly before the `</head>` tag of the Print Topic screen
|
* Purpose: Add asset calls directly before the `</head>` tag of the Print Topic screen
|
||||||
|
|
||||||
|
viewtopic_body_contact_fields_after
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/viewtopic_body.html
|
||||||
|
* Since: 3.1.0-b3
|
||||||
|
* Purpose: Add data after the contact fields on the user profile when viewing
|
||||||
|
a post
|
||||||
|
|
||||||
|
viewtopic_body_contact_fields_before
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/viewtopic_body.html
|
||||||
|
* Since: 3.1.0-b3
|
||||||
|
* Purpose: Add data before the contact fields on the user profile when viewing
|
||||||
|
a post
|
||||||
|
|
||||||
viewtopic_body_footer_before
|
viewtopic_body_footer_before
|
||||||
===
|
===
|
||||||
* Locations:
|
* Locations:
|
||||||
|
@ -580,6 +835,40 @@ viewtopic_body_footer_before
|
||||||
and quick reply, directly before the jumpbox in Prosilver, breadcrumbs in
|
and quick reply, directly before the jumpbox in Prosilver, breadcrumbs in
|
||||||
Subsilver2.
|
Subsilver2.
|
||||||
|
|
||||||
|
viewtopic_body_poll_option_after
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/viewtopic_body.html
|
||||||
|
+ styles/subsilver2/template/viewtopic_body.html
|
||||||
|
* Since: 3.1.0-b3
|
||||||
|
* Purpose: Add content after the poll option
|
||||||
|
the list.
|
||||||
|
|
||||||
|
viewtopic_body_poll_option_before
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/viewtopic_body.html
|
||||||
|
+ styles/subsilver2/template/viewtopic_body.html
|
||||||
|
* Since: 3.1.0-b3
|
||||||
|
* Purpose: Add content before the poll option
|
||||||
|
the list.
|
||||||
|
|
||||||
|
viewtopic_body_poll_question_append
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/viewtopic_body.html
|
||||||
|
+ styles/subsilver2/template/viewtopic_body.html
|
||||||
|
* Since: 3.1.0-b3
|
||||||
|
* Purpose: Add content directly after the poll question on the View topic screen
|
||||||
|
|
||||||
|
viewtopic_body_poll_question_prepend
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/viewtopic_body.html
|
||||||
|
+ styles/subsilver2/template/viewtopic_body.html
|
||||||
|
* Since: 3.1.0-b3
|
||||||
|
* Purpose: Add content directly before the poll question on the View topic screen
|
||||||
|
|
||||||
viewtopic_body_post_buttons_after
|
viewtopic_body_post_buttons_after
|
||||||
===
|
===
|
||||||
* Locations:
|
* Locations:
|
||||||
|
@ -656,6 +945,14 @@ viewtopic_body_topic_actions_before
|
||||||
* Since: 3.1.0-a4
|
* Since: 3.1.0-a4
|
||||||
* Purpose: Add data before the topic actions buttons (after the posts sorting options)
|
* Purpose: Add data before the topic actions buttons (after the posts sorting options)
|
||||||
|
|
||||||
|
viewtopic_topic_title_append
|
||||||
|
===
|
||||||
|
* Locations:
|
||||||
|
+ styles/prosilver/template/viewtopic_body.html
|
||||||
|
+ styles/subsilver2/template/viewtopic_body.html
|
||||||
|
* Since: 3.1.0-b3
|
||||||
|
* Purpose: Add content directly after the topic title link on the View topic screen
|
||||||
|
|
||||||
viewtopic_topic_title_prepend
|
viewtopic_topic_title_prepend
|
||||||
===
|
===
|
||||||
* Locations:
|
* Locations:
|
||||||
|
|
|
@ -37,7 +37,7 @@ if (!empty($config['feed_http_auth']) && request_var('auth', '') == 'http')
|
||||||
}
|
}
|
||||||
|
|
||||||
$auth->acl($user->data);
|
$auth->acl($user->data);
|
||||||
$user->setup();
|
$user->setup('viewtopic');
|
||||||
|
|
||||||
// Initial var setup
|
// Initial var setup
|
||||||
$forum_id = request_var('f', 0);
|
$forum_id = request_var('f', 0);
|
||||||
|
@ -73,9 +73,6 @@ if ($feed === false)
|
||||||
trigger_error('NO_FEED');
|
trigger_error('NO_FEED');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get attachments for this feed
|
|
||||||
$feed->fetch_attachments();
|
|
||||||
|
|
||||||
// Open Feed
|
// Open Feed
|
||||||
$feed->open();
|
$feed->open();
|
||||||
|
|
||||||
|
@ -103,6 +100,8 @@ while ($row = $feed->get_item())
|
||||||
$published = ($feed->get('published') !== NULL) ? (int) $row[$feed->get('published')] : 0;
|
$published = ($feed->get('published') !== NULL) ? (int) $row[$feed->get('published')] : 0;
|
||||||
$updated = ($feed->get('updated') !== NULL) ? (int) $row[$feed->get('updated')] : 0;
|
$updated = ($feed->get('updated') !== NULL) ? (int) $row[$feed->get('updated')] : 0;
|
||||||
|
|
||||||
|
$display_attachments = ($auth->acl_get('u_download') && $auth->acl_get('f_download', $row['forum_id']) && isset($row['post_attachment']) && $row['post_attachment']) ? true : false;
|
||||||
|
|
||||||
$item_row = array(
|
$item_row = array(
|
||||||
'author' => ($feed->get('creator') !== NULL) ? $row[$feed->get('creator')] : '',
|
'author' => ($feed->get('creator') !== NULL) ? $row[$feed->get('creator')] : '',
|
||||||
'published' => ($published > 0) ? $phpbb_feed_helper->format_date($published) : '',
|
'published' => ($published > 0) ? $phpbb_feed_helper->format_date($published) : '',
|
||||||
|
@ -111,7 +110,7 @@ while ($row = $feed->get_item())
|
||||||
'title' => censor_text($title),
|
'title' => censor_text($title),
|
||||||
'category' => ($config['feed_item_statistics'] && !empty($row['forum_id'])) ? $board_url . '/viewforum.' . $phpEx . '?f=' . $row['forum_id'] : '',
|
'category' => ($config['feed_item_statistics'] && !empty($row['forum_id'])) ? $board_url . '/viewforum.' . $phpEx . '?f=' . $row['forum_id'] : '',
|
||||||
'category_name' => ($config['feed_item_statistics'] && isset($row['forum_name'])) ? $row['forum_name'] : '',
|
'category_name' => ($config['feed_item_statistics'] && isset($row['forum_name'])) ? $row['forum_name'] : '',
|
||||||
'description' => censor_text($phpbb_feed_helper->generate_content($row[$feed->get('text')], $row[$feed->get('bbcode_uid')], $row[$feed->get('bitfield')], $options, $row['forum_id'], (($row['post_attachment']) ? $feed->attachments[$row['post_id']] : array()))),
|
'description' => censor_text($phpbb_feed_helper->generate_content($row[$feed->get('text')], $row[$feed->get('bbcode_uid')], $row[$feed->get('bitfield')], $options, $row['forum_id'], ($display_attachments ? $feed->get_attachments($row['post_id']) : array()))),
|
||||||
'statistics' => '',
|
'statistics' => '',
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -147,7 +147,6 @@ class acp_attachments
|
||||||
'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),
|
||||||
'check_attachment_content' => array('lang' => 'CHECK_CONTENT', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
'check_attachment_content' => array('lang' => 'CHECK_CONTENT', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
|
|
||||||
|
|
||||||
'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),
|
||||||
|
@ -1115,11 +1114,6 @@ class acp_attachments
|
||||||
if ($stats_error)
|
if ($stats_error)
|
||||||
{
|
{
|
||||||
$error[] = $stats_error;
|
$error[] = $stats_error;
|
||||||
|
|
||||||
// Show option to resync stats
|
|
||||||
$this->template->assign_vars(array(
|
|
||||||
'S_ACTION_OPTIONS' => $auth->acl_get('a_board'),
|
|
||||||
));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$template->assign_vars(array(
|
$template->assign_vars(array(
|
||||||
|
@ -1228,7 +1222,7 @@ class acp_attachments
|
||||||
'ATTACHMENT_POSTER' => get_username_string('full', (int) $row['poster_id'], (string) $row['username'], (string) $row['user_colour'], (string) $row['username']),
|
'ATTACHMENT_POSTER' => get_username_string('full', (int) $row['poster_id'], (string) $row['username'], (string) $row['user_colour'], (string) $row['username']),
|
||||||
'FILESIZE' => get_formatted_filesize((int) $row['filesize']),
|
'FILESIZE' => get_formatted_filesize((int) $row['filesize']),
|
||||||
'FILETIME' => $user->format_date((int) $row['filetime']),
|
'FILETIME' => $user->format_date((int) $row['filetime']),
|
||||||
'REAL_FILENAME' => (!$row['in_message']) ? utf8_wordwrap(utf8_basename((string) $row['real_filename']), 40, '<br />', true) : '',
|
'REAL_FILENAME' => (!$row['in_message']) ? utf8_basename((string) $row['real_filename']) : '',
|
||||||
'PHYSICAL_FILENAME' => utf8_basename((string) $row['physical_filename']),
|
'PHYSICAL_FILENAME' => utf8_basename((string) $row['physical_filename']),
|
||||||
'EXT_GROUP_NAME' => (!empty($extensions[$row['extension']]['group_name'])) ? $user->lang['EXT_GROUP_' . $extensions[$row['extension']]['group_name']] : '',
|
'EXT_GROUP_NAME' => (!empty($extensions[$row['extension']]['group_name'])) ? $user->lang['EXT_GROUP_' . $extensions[$row['extension']]['group_name']] : '',
|
||||||
'COMMENT' => $comment,
|
'COMMENT' => $comment,
|
||||||
|
@ -1321,7 +1315,15 @@ class acp_attachments
|
||||||
|
|
||||||
if (($num_files != $stats['num_files']) || ($total_size != $stats['upload_dir_size']))
|
if (($num_files != $stats['num_files']) || ($total_size != $stats['upload_dir_size']))
|
||||||
{
|
{
|
||||||
return $this->user->lang('FILES_STATS_WRONG', (int) $stats['num_files'], get_formatted_filesize($stats['upload_dir_size']));
|
$u_resync = $this->u_action . '&action=stats';
|
||||||
|
|
||||||
|
return $this->user->lang(
|
||||||
|
'FILES_STATS_WRONG',
|
||||||
|
(int) $stats['num_files'],
|
||||||
|
get_formatted_filesize($stats['upload_dir_size']),
|
||||||
|
'<a href="' . $u_resync . '">',
|
||||||
|
'</a>'
|
||||||
|
);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -159,7 +159,16 @@ class acp_bbcodes
|
||||||
* submitting form when $warn_text is true
|
* submitting form when $warn_text is true
|
||||||
* @since 3.1.0-a3
|
* @since 3.1.0-a3
|
||||||
*/
|
*/
|
||||||
$vars = array('action', 'sql_ary', 'bbcode_id', 'display_on_posting', 'bbcode_match', 'bbcode_tpl', 'bbcode_helpline', 'hidden_fields');
|
$vars = array(
|
||||||
|
'action',
|
||||||
|
'sql_ary',
|
||||||
|
'bbcode_id',
|
||||||
|
'display_on_posting',
|
||||||
|
'bbcode_match',
|
||||||
|
'bbcode_tpl',
|
||||||
|
'bbcode_helpline',
|
||||||
|
'hidden_fields',
|
||||||
|
);
|
||||||
extract($phpbb_dispatcher->trigger_event('core.acp_bbcodes_modify_create', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.acp_bbcodes_modify_create', compact($vars)));
|
||||||
|
|
||||||
$warn_text = preg_match('%<[^>]*\{text[\d]*\}[^>]*>%i', $bbcode_tpl);
|
$warn_text = preg_match('%<[^>]*\{text[\d]*\}[^>]*>%i', $bbcode_tpl);
|
||||||
|
@ -210,7 +219,6 @@ class acp_bbcodes
|
||||||
trigger_error($user->lang['BBCODE_TAG_DEF_TOO_LONG'] . adm_back_link($this->u_action), E_USER_WARNING);
|
trigger_error($user->lang['BBCODE_TAG_DEF_TOO_LONG'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (strlen($bbcode_helpline) > 255)
|
if (strlen($bbcode_helpline) > 255)
|
||||||
{
|
{
|
||||||
trigger_error($user->lang['BBCODE_HELPLINE_TOO_LONG'] . adm_back_link($this->u_action), E_USER_WARNING);
|
trigger_error($user->lang['BBCODE_HELPLINE_TOO_LONG'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||||
|
|
|
@ -345,6 +345,7 @@ class acp_board
|
||||||
'load_user_activity' => array('lang' => 'LOAD_USER_ACTIVITY', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
'load_user_activity' => array('lang' => 'LOAD_USER_ACTIVITY', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
'load_tplcompile' => array('lang' => 'RECOMPILE_STYLES', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
'load_tplcompile' => array('lang' => 'RECOMPILE_STYLES', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
'allow_cdn' => array('lang' => 'ALLOW_CDN', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
'allow_cdn' => array('lang' => 'ALLOW_CDN', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
|
'allow_live_searches' => array('lang' => 'ALLOW_LIVE_SEARCHES', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
|
|
||||||
'legend3' => 'CUSTOM_PROFILE_FIELDS',
|
'legend3' => 'CUSTOM_PROFILE_FIELDS',
|
||||||
'load_cpf_memberlist' => array('lang' => 'LOAD_CPF_MEMBERLIST', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
|
'load_cpf_memberlist' => array('lang' => 'LOAD_CPF_MEMBERLIST', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
|
||||||
|
@ -434,6 +435,7 @@ class acp_board
|
||||||
'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' => 'number:0:99999', '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' => 'email', 'type' => 'email:25:100', 'explain' => true),
|
'board_contact' => array('lang' => 'CONTACT_EMAIL', 'validate' => 'email', 'type' => 'email:25:100', 'explain' => true),
|
||||||
|
'board_contact_name' => array('lang' => 'CONTACT_EMAIL_NAME', 'validate' => 'string', 'type' => 'text:25:50', 'explain' => true),
|
||||||
'board_email' => array('lang' => 'ADMIN_EMAIL', 'validate' => 'email', 'type' => 'email: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),
|
||||||
|
|
|
@ -220,7 +220,6 @@ class acp_bots
|
||||||
trigger_error($user->lang['NO_BOT_GROUP'] . adm_back_link($this->u_action . "&id=$bot_id&action=$action"), E_USER_WARNING);
|
trigger_error($user->lang['NO_BOT_GROUP'] . adm_back_link($this->u_action . "&id=$bot_id&action=$action"), E_USER_WARNING);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$user_id = user_add(array(
|
$user_id = user_add(array(
|
||||||
'user_type' => (int) USER_IGNORE,
|
'user_type' => (int) USER_IGNORE,
|
||||||
'group_id' => (int) $group_row['group_id'],
|
'group_id' => (int) $group_row['group_id'],
|
||||||
|
|
|
@ -36,7 +36,6 @@ class acp_captcha
|
||||||
$selected = (isset($captchas['available'][$selected]) || isset($captchas['unavailable'][$selected])) ? $selected : $config['captcha_plugin'];
|
$selected = (isset($captchas['available'][$selected]) || isset($captchas['unavailable'][$selected])) ? $selected : $config['captcha_plugin'];
|
||||||
$configure = request_var('configure', false);
|
$configure = request_var('configure', false);
|
||||||
|
|
||||||
|
|
||||||
// Oh, they are just here for the view
|
// Oh, they are just here for the view
|
||||||
if (isset($_GET['captcha_demo']))
|
if (isset($_GET['captcha_demo']))
|
||||||
{
|
{
|
||||||
|
|
|
@ -101,6 +101,10 @@ class acp_database
|
||||||
$extractor = new sqlite_extractor($format, $filename, $time, $download, $store);
|
$extractor = new sqlite_extractor($format, $filename, $time, $download, $store);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'sqlite3':
|
||||||
|
$extractor = new sqlite3_extractor($format, $filename, $time, $download, $store);
|
||||||
|
break;
|
||||||
|
|
||||||
case 'postgres':
|
case 'postgres':
|
||||||
$extractor = new postgres_extractor($format, $filename, $time, $download, $store);
|
$extractor = new postgres_extractor($format, $filename, $time, $download, $store);
|
||||||
break;
|
break;
|
||||||
|
@ -135,6 +139,7 @@ class acp_database
|
||||||
switch ($db->sql_layer)
|
switch ($db->sql_layer)
|
||||||
{
|
{
|
||||||
case 'sqlite':
|
case 'sqlite':
|
||||||
|
case 'sqlite3':
|
||||||
case 'firebird':
|
case 'firebird':
|
||||||
$extractor->flush('DELETE FROM ' . $table_name . ";\n");
|
$extractor->flush('DELETE FROM ' . $table_name . ";\n");
|
||||||
break;
|
break;
|
||||||
|
@ -325,6 +330,7 @@ class acp_database
|
||||||
case 'mysql4':
|
case 'mysql4':
|
||||||
case 'mysqli':
|
case 'mysqli':
|
||||||
case 'sqlite':
|
case 'sqlite':
|
||||||
|
case 'sqlite3':
|
||||||
while (($sql = $fgetd($fp, ";\n", $read, $seek, $eof)) !== false)
|
while (($sql = $fgetd($fp, ";\n", $read, $seek, $eof)) !== false)
|
||||||
{
|
{
|
||||||
$db->sql_query($sql);
|
$db->sql_query($sql);
|
||||||
|
@ -1049,6 +1055,112 @@ class sqlite_extractor extends base_extractor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @package acp
|
||||||
|
*/
|
||||||
|
class sqlite3_extractor extends base_extractor
|
||||||
|
{
|
||||||
|
function write_start($prefix)
|
||||||
|
{
|
||||||
|
$sql_data = "--\n";
|
||||||
|
$sql_data .= "-- phpBB Backup Script\n";
|
||||||
|
$sql_data .= "-- Dump of tables for $prefix\n";
|
||||||
|
$sql_data .= "-- DATE : " . gmdate("d-m-Y H:i:s", $this->time) . " GMT\n";
|
||||||
|
$sql_data .= "--\n";
|
||||||
|
$sql_data .= "BEGIN TRANSACTION;\n";
|
||||||
|
$this->flush($sql_data);
|
||||||
|
}
|
||||||
|
|
||||||
|
function write_table($table_name)
|
||||||
|
{
|
||||||
|
global $db;
|
||||||
|
$sql_data = '-- Table: ' . $table_name . "\n";
|
||||||
|
$sql_data .= "DROP TABLE $table_name;\n";
|
||||||
|
|
||||||
|
$sql = "SELECT sql
|
||||||
|
FROM sqlite_master
|
||||||
|
WHERE type = 'table'
|
||||||
|
AND name = '" . $db->sql_escape($table_name) . "'
|
||||||
|
ORDER BY name ASC;";
|
||||||
|
$result = $db->sql_query($sql);
|
||||||
|
$row = $db->sql_fetchrow($result);
|
||||||
|
$db->sql_freeresult($result);
|
||||||
|
|
||||||
|
// Create Table
|
||||||
|
$sql_data .= $row['sql'] . ";\n";
|
||||||
|
|
||||||
|
$result = $db->sql_query("PRAGMA index_list('" . $db->sql_escape($table_name) . "');");
|
||||||
|
|
||||||
|
while ($row = $db->sql_fetchrow($result))
|
||||||
|
{
|
||||||
|
if (strpos($row['name'], 'autoindex') !== false)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$result2 = $db->sql_query("PRAGMA index_info('" . $db->sql_escape($row['name']) . "');");
|
||||||
|
|
||||||
|
$fields = array();
|
||||||
|
while ($row2 = $db->sql_fetchrow($result2))
|
||||||
|
{
|
||||||
|
$fields[] = $row2['name'];
|
||||||
|
}
|
||||||
|
$db->sql_freeresult($result2);
|
||||||
|
|
||||||
|
$sql_data .= 'CREATE ' . ($row['unique'] ? 'UNIQUE ' : '') . 'INDEX ' . $row['name'] . ' ON ' . $table_name . ' (' . implode(', ', $fields) . ");\n";
|
||||||
|
}
|
||||||
|
$db->sql_freeresult($result);
|
||||||
|
|
||||||
|
$this->flush($sql_data . "\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
function write_data($table_name)
|
||||||
|
{
|
||||||
|
global $db;
|
||||||
|
|
||||||
|
$result = $db->sql_query("PRAGMA table_info('" . $db->sql_escape($table_name) . "');");
|
||||||
|
|
||||||
|
$col_types = array();
|
||||||
|
while ($row = $db->sql_fetchrow($result))
|
||||||
|
{
|
||||||
|
$col_types[$row['name']] = $row['type'];
|
||||||
|
}
|
||||||
|
$db->sql_freeresult($result);
|
||||||
|
|
||||||
|
$sql_insert = 'INSERT INTO ' . $table_name . ' (' . implode(', ', array_keys($col_types)) . ') VALUES (';
|
||||||
|
|
||||||
|
$sql = "SELECT *
|
||||||
|
FROM $table_name";
|
||||||
|
$result = $db->sql_query($sql);
|
||||||
|
|
||||||
|
while ($row = $db->sql_fetchrow($result))
|
||||||
|
{
|
||||||
|
foreach ($row as $column_name => $column_data)
|
||||||
|
{
|
||||||
|
if (is_null($column_data))
|
||||||
|
{
|
||||||
|
$row[$column_name] = 'NULL';
|
||||||
|
}
|
||||||
|
else if ($column_data === '')
|
||||||
|
{
|
||||||
|
$row[$column_name] = "''";
|
||||||
|
}
|
||||||
|
else if (stripos($col_types[$column_name], 'text') !== false || stripos($col_types[$column_name], 'char') !== false || stripos($col_types[$column_name], 'blob') !== false)
|
||||||
|
{
|
||||||
|
$row[$column_name] = sanitize_data_generic(str_replace("'", "''", $column_data));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$this->flush($sql_insert . implode(', ', $row) . ");\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function write_end()
|
||||||
|
{
|
||||||
|
$this->flush("COMMIT;\n");
|
||||||
|
parent::write_end();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @package acp
|
* @package acp
|
||||||
*/
|
*/
|
||||||
|
@ -1180,7 +1292,6 @@ class postgres_extractor extends base_extractor
|
||||||
}
|
}
|
||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
|
|
||||||
|
|
||||||
// Get the listing of primary keys.
|
// Get the listing of primary keys.
|
||||||
$sql_pri_keys = "SELECT ic.relname as index_name, bc.relname as tab_name, ta.attname as column_name, i.indisunique as unique_key, i.indisprimary as primary_key
|
$sql_pri_keys = "SELECT ic.relname as index_name, bc.relname as tab_name, ta.attname as column_name, i.indisunique as unique_key, i.indisprimary as primary_key
|
||||||
FROM pg_class bc, pg_class ic, pg_index i, pg_attribute ta, pg_attribute ia
|
FROM pg_class bc, pg_class ic, pg_index i, pg_attribute ta, pg_attribute ia
|
||||||
|
@ -1280,7 +1391,6 @@ class postgres_extractor extends base_extractor
|
||||||
$ary_type[] = pg_field_type($result, $i);
|
$ary_type[] = pg_field_type($result, $i);
|
||||||
$ary_name[] = pg_field_name($result, $i);
|
$ary_name[] = pg_field_name($result, $i);
|
||||||
|
|
||||||
|
|
||||||
$sql = "SELECT pg_get_expr(d.adbin, d.adrelid) as rowdefault
|
$sql = "SELECT pg_get_expr(d.adbin, d.adrelid) as rowdefault
|
||||||
FROM pg_attrdef d, pg_class c
|
FROM pg_attrdef d, pg_class c
|
||||||
WHERE (c.relname = '{$table_name}')
|
WHERE (c.relname = '{$table_name}')
|
||||||
|
|
|
@ -158,7 +158,7 @@ class acp_forums
|
||||||
* @event core.acp_manage_forums_request_data
|
* @event core.acp_manage_forums_request_data
|
||||||
* @var string action Type of the action: add|edit
|
* @var string action Type of the action: add|edit
|
||||||
* @var array forum_data Array with new forum data
|
* @var array forum_data Array with new forum data
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('action', 'forum_data');
|
$vars = array('action', 'forum_data');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.acp_manage_forums_request_data', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.acp_manage_forums_request_data', compact($vars)));
|
||||||
|
@ -484,7 +484,7 @@ class acp_forums
|
||||||
* empty when creating new forum
|
* empty when creating new forum
|
||||||
* @var array forum_data Array with new forum data
|
* @var array forum_data Array with new forum data
|
||||||
* @var string parents_list List of parent options
|
* @var string parents_list List of parent options
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('action', 'update', 'forum_id', 'row', 'forum_data', 'parents_list');
|
$vars = array('action', 'update', 'forum_id', 'row', 'forum_data', 'parents_list');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.acp_manage_forums_initialise_data', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.acp_manage_forums_initialise_data', compact($vars)));
|
||||||
|
@ -705,9 +705,18 @@ class acp_forums
|
||||||
* ensure to update the template variables
|
* ensure to update the template variables
|
||||||
* S_ERROR and ERROR_MSG to display it
|
* S_ERROR and ERROR_MSG to display it
|
||||||
* @var array template_data Array with new forum data
|
* @var array template_data Array with new forum data
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('action', 'update', 'forum_id', 'row', 'forum_data', 'parents_list', 'errors', 'template_data');
|
$vars = array(
|
||||||
|
'action',
|
||||||
|
'update',
|
||||||
|
'forum_id',
|
||||||
|
'row',
|
||||||
|
'forum_data',
|
||||||
|
'parents_list',
|
||||||
|
'errors',
|
||||||
|
'template_data',
|
||||||
|
);
|
||||||
extract($phpbb_dispatcher->trigger_event('core.acp_manage_forums_display_form', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.acp_manage_forums_display_form', compact($vars)));
|
||||||
|
|
||||||
$template->assign_vars($template_data);
|
$template->assign_vars($template_data);
|
||||||
|
@ -946,7 +955,7 @@ class acp_forums
|
||||||
* @var array forum_data Array with new forum data
|
* @var array forum_data Array with new forum data
|
||||||
* @var array errors Array of errors, should be strings and not
|
* @var array errors Array of errors, should be strings and not
|
||||||
* language key.
|
* language key.
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('forum_data', 'errors');
|
$vars = array('forum_data', 'errors');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.acp_manage_forums_validate_data', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.acp_manage_forums_validate_data', compact($vars)));
|
||||||
|
@ -1054,7 +1063,7 @@ class acp_forums
|
||||||
* @var array forum_data_sql Array with data we are going to update
|
* @var array forum_data_sql Array with data we are going to update
|
||||||
* If forum_data_sql[forum_id] is set, we update
|
* If forum_data_sql[forum_id] is set, we update
|
||||||
* that forum, otherwise a new one is created.
|
* that forum, otherwise a new one is created.
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('forum_data', 'forum_data_sql');
|
$vars = array('forum_data', 'forum_data_sql');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.acp_manage_forums_update_data_before', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.acp_manage_forums_update_data_before', compact($vars)));
|
||||||
|
@ -1347,7 +1356,7 @@ class acp_forums
|
||||||
* ensure to set forum_data_sql[forum_id]
|
* ensure to set forum_data_sql[forum_id]
|
||||||
* @var array errors Array of errors, should be strings and not
|
* @var array errors Array of errors, should be strings and not
|
||||||
* language key.
|
* language key.
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('forum_data', 'forum_data_sql', 'is_new_forum', 'errors');
|
$vars = array('forum_data', 'forum_data_sql', 'is_new_forum', 'errors');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.acp_manage_forums_update_data_after', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.acp_manage_forums_update_data_after', compact($vars)));
|
||||||
|
@ -1385,7 +1394,7 @@ class acp_forums
|
||||||
* @var int to_id If of the new parent forum
|
* @var int to_id If of the new parent forum
|
||||||
* @var array errors Array of errors, should be strings and not
|
* @var array errors Array of errors, should be strings and not
|
||||||
* language key.
|
* language key.
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('from_id', 'to_id', 'errors');
|
$vars = array('from_id', 'to_id', 'errors');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.acp_manage_forums_move_children', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.acp_manage_forums_move_children', compact($vars)));
|
||||||
|
@ -1489,7 +1498,7 @@ class acp_forums
|
||||||
* @var array errors Array of errors, should be strings and not
|
* @var array errors Array of errors, should be strings and not
|
||||||
* language key. If this array is not empty,
|
* language key. If this array is not empty,
|
||||||
* The content will not be moved.
|
* The content will not be moved.
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('from_id', 'to_id', 'sync', 'errors');
|
$vars = array('from_id', 'to_id', 'sync', 'errors');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.acp_manage_forums_move_content', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.acp_manage_forums_move_content', compact($vars)));
|
||||||
|
|
|
@ -53,7 +53,6 @@ class acp_groups
|
||||||
$start = request_var('start', 0);
|
$start = request_var('start', 0);
|
||||||
$update = (isset($_POST['update'])) ? true : false;
|
$update = (isset($_POST['update'])) ? true : false;
|
||||||
|
|
||||||
|
|
||||||
// Clear some vars
|
// Clear some vars
|
||||||
$group_row = array();
|
$group_row = array();
|
||||||
|
|
||||||
|
@ -331,7 +330,6 @@ class acp_groups
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Did we submit?
|
// Did we submit?
|
||||||
if ($update)
|
if ($update)
|
||||||
{
|
{
|
||||||
|
|
|
@ -203,7 +203,6 @@ class acp_icons
|
||||||
unset($_images[$row[$fields . '_url']]);
|
unset($_images[$row[$fields . '_url']]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if ($row[$fields . '_id'] == $icon_id)
|
if ($row[$fields . '_id'] == $icon_id)
|
||||||
{
|
{
|
||||||
$after = true;
|
$after = true;
|
||||||
|
@ -539,6 +538,7 @@ class acp_icons
|
||||||
switch ($db->sql_layer)
|
switch ($db->sql_layer)
|
||||||
{
|
{
|
||||||
case 'sqlite':
|
case 'sqlite':
|
||||||
|
case 'sqlite3':
|
||||||
case 'firebird':
|
case 'firebird':
|
||||||
$db->sql_query('DELETE FROM ' . $table);
|
$db->sql_query('DELETE FROM ' . $table);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -271,6 +271,7 @@ class acp_main
|
||||||
switch ($db->sql_layer)
|
switch ($db->sql_layer)
|
||||||
{
|
{
|
||||||
case 'sqlite':
|
case 'sqlite':
|
||||||
|
case 'sqlite3':
|
||||||
case 'firebird':
|
case 'firebird':
|
||||||
$db->sql_query('DELETE FROM ' . TOPICS_POSTED_TABLE);
|
$db->sql_query('DELETE FROM ' . TOPICS_POSTED_TABLE);
|
||||||
break;
|
break;
|
||||||
|
@ -376,6 +377,7 @@ class acp_main
|
||||||
switch ($db->sql_layer)
|
switch ($db->sql_layer)
|
||||||
{
|
{
|
||||||
case 'sqlite':
|
case 'sqlite':
|
||||||
|
case 'sqlite3':
|
||||||
case 'firebird':
|
case 'firebird':
|
||||||
$db->sql_query("DELETE FROM $table");
|
$db->sql_query("DELETE FROM $table");
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -330,7 +330,6 @@ class acp_permissions
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Setting permissions screen
|
// Setting permissions screen
|
||||||
$s_hidden_fields = build_hidden_fields(array(
|
$s_hidden_fields = build_hidden_fields(array(
|
||||||
'user_id' => $user_id,
|
'user_id' => $user_id,
|
||||||
|
|
|
@ -114,6 +114,7 @@ class acp_profile
|
||||||
switch ($db->sql_layer)
|
switch ($db->sql_layer)
|
||||||
{
|
{
|
||||||
case 'sqlite':
|
case 'sqlite':
|
||||||
|
case 'sqlite3':
|
||||||
$sql = "SELECT sql
|
$sql = "SELECT sql
|
||||||
FROM sqlite_master
|
FROM sqlite_master
|
||||||
WHERE type = 'table'
|
WHERE type = 'table'
|
||||||
|
@ -485,7 +486,6 @@ class acp_profile
|
||||||
}
|
}
|
||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
|
|
||||||
|
|
||||||
$sql = 'SELECT lang_id, lang_name, lang_explain, lang_default_value
|
$sql = 'SELECT lang_id, lang_name, lang_explain, lang_default_value
|
||||||
FROM ' . PROFILE_LANG_TABLE . '
|
FROM ' . PROFILE_LANG_TABLE . '
|
||||||
WHERE lang_id <> ' . $this->edit_lang_id . "
|
WHERE lang_id <> ' . $this->edit_lang_id . "
|
||||||
|
@ -1116,7 +1116,6 @@ class acp_profile
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$db->sql_transaction('begin');
|
$db->sql_transaction('begin');
|
||||||
|
|
||||||
if ($action == 'create')
|
if ($action == 'create')
|
||||||
|
@ -1206,7 +1205,8 @@ class acp_profile
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'sqlite':
|
case 'sqlite':
|
||||||
if (version_compare(sqlite_libversion(), '3.0') == -1)
|
case 'sqlite3':
|
||||||
|
if (version_compare($db->sql_server_info(true), '3.0') == -1)
|
||||||
{
|
{
|
||||||
$sql = "SELECT sql
|
$sql = "SELECT sql
|
||||||
FROM sqlite_master
|
FROM sqlite_master
|
||||||
|
|
|
@ -533,7 +533,7 @@ class acp_prune
|
||||||
WHERE u.user_id <> ' . ANONYMOUS . '
|
WHERE u.user_id <> ' . ANONYMOUS . '
|
||||||
AND u.user_type <> ' . USER_FOUNDER .
|
AND u.user_type <> ' . USER_FOUNDER .
|
||||||
((!empty($user_ids)) ? 'AND ' . $db->sql_in_set('p.poster_id', $user_ids) : '') . '
|
((!empty($user_ids)) ? 'AND ' . $db->sql_in_set('p.poster_id', $user_ids) : '') . '
|
||||||
AND p.post_visibility = ' . ITEM_UNAPPROVED . '
|
AND ' . $db->sql_in_set('p.post_visibility', array(ITEM_UNAPPROVED, ITEM_REAPPROVE)) . '
|
||||||
AND u.user_id = p.poster_id
|
AND u.user_id = p.poster_id
|
||||||
GROUP BY 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;
|
||||||
|
|
|
@ -214,7 +214,6 @@ class acp_ranks
|
||||||
'MIN_POSTS' => (isset($ranks['rank_min']) && !$ranks['rank_special']) ? $ranks['rank_min'] : 0)
|
'MIN_POSTS' => (isset($ranks['rank_min']) && !$ranks['rank_special']) ? $ranks['rank_min'] : 0)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -253,6 +253,7 @@ class acp_reasons
|
||||||
case 'oracle':
|
case 'oracle':
|
||||||
case 'firebird':
|
case 'firebird':
|
||||||
case 'sqlite':
|
case 'sqlite':
|
||||||
|
case 'sqlite3':
|
||||||
// Change the reports using this reason to 'other'
|
// Change the reports using this reason to 'other'
|
||||||
$sql = 'UPDATE ' . REPORTS_TABLE . '
|
$sql = 'UPDATE ' . REPORTS_TABLE . '
|
||||||
SET reason_id = ' . $other_reason_id . ", report_text = '" . $db->sql_escape($reason_row['reason_description']) . "\n\n' || report_text
|
SET reason_id = ' . $other_reason_id . ", report_text = '" . $db->sql_escape($reason_row['reason_description']) . "\n\n' || report_text
|
||||||
|
|
|
@ -657,6 +657,7 @@ class acp_users
|
||||||
{
|
{
|
||||||
if ($topic_id_ary[$row['topic_id']][ITEM_APPROVED] == $row['topic_posts_approved']
|
if ($topic_id_ary[$row['topic_id']][ITEM_APPROVED] == $row['topic_posts_approved']
|
||||||
&& $topic_id_ary[$row['topic_id']][ITEM_UNAPPROVED] == $row['topic_posts_unapproved']
|
&& $topic_id_ary[$row['topic_id']][ITEM_UNAPPROVED] == $row['topic_posts_unapproved']
|
||||||
|
&& $topic_id_ary[$row['topic_id']][ITEM_REAPPROVE] == $row['topic_posts_unapproved']
|
||||||
&& $topic_id_ary[$row['topic_id']][ITEM_DELETED] == $row['topic_posts_softdeleted'])
|
&& $topic_id_ary[$row['topic_id']][ITEM_DELETED] == $row['topic_posts_softdeleted'])
|
||||||
{
|
{
|
||||||
$move_topic_ary[] = $row['topic_id'];
|
$move_topic_ary[] = $row['topic_id'];
|
||||||
|
@ -735,7 +736,6 @@ class acp_users
|
||||||
sync('forum', 'forum_id', $forum_id_ary, false, true);
|
sync('forum', 'forum_id', $forum_id_ary, false, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
add_log('admin', 'LOG_USER_MOVE_POSTS', $user_row['username'], $forum_info['forum_name']);
|
add_log('admin', 'LOG_USER_MOVE_POSTS', $user_row['username'], $forum_info['forum_name']);
|
||||||
add_log('user', $user_id, 'LOG_USER_MOVE_POSTS_USER', $forum_info['forum_name']);
|
add_log('user', $user_id, 'LOG_USER_MOVE_POSTS_USER', $forum_info['forum_name']);
|
||||||
|
|
||||||
|
@ -772,7 +772,7 @@ class acp_users
|
||||||
* @event core.acp_users_overview_run_quicktool
|
* @event core.acp_users_overview_run_quicktool
|
||||||
* @var array user_row Current user data
|
* @var array user_row Current user data
|
||||||
* @var string action Quick tool that should be run
|
* @var string action Quick tool that should be run
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('action', 'user_row');
|
$vars = array('action', 'user_row');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.acp_users_overview_run_quicktool', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.acp_users_overview_run_quicktool', compact($vars)));
|
||||||
|
@ -893,7 +893,7 @@ class acp_users
|
||||||
* @var array user_row Current user data
|
* @var array user_row Current user data
|
||||||
* @var array data Submitted user data
|
* @var array data Submitted user data
|
||||||
* @var array sql_ary User data we udpate
|
* @var array sql_ary User data we udpate
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('user_row', 'data', 'sql_ary');
|
$vars = array('user_row', 'data', 'sql_ary');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.acp_users_overview_modify_data', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.acp_users_overview_modify_data', compact($vars)));
|
||||||
|
@ -1008,7 +1008,7 @@ class acp_users
|
||||||
* @event core.acp_users_display_overview
|
* @event core.acp_users_display_overview
|
||||||
* @var array user_row Array with user data
|
* @var array user_row Array with user data
|
||||||
* @var array quick_tool_ary Ouick tool options
|
* @var array quick_tool_ary Ouick tool options
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('user_row', 'quick_tool_ary');
|
$vars = array('user_row', 'quick_tool_ary');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.acp_users_display_overview', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.acp_users_display_overview', compact($vars)));
|
||||||
|
@ -1050,7 +1050,7 @@ class acp_users
|
||||||
$sql = 'SELECT COUNT(post_id) as posts_in_queue
|
$sql = 'SELECT COUNT(post_id) as posts_in_queue
|
||||||
FROM ' . POSTS_TABLE . '
|
FROM ' . POSTS_TABLE . '
|
||||||
WHERE poster_id = ' . $user_id . '
|
WHERE poster_id = ' . $user_id . '
|
||||||
AND post_visibility = ' . ITEM_UNAPPROVED;
|
AND ' . $db->sql_in_set('post_visibility', array(ITEM_UNAPPROVED, ITEM_REAPPROVE));
|
||||||
$result = $db->sql_query($sql);
|
$result = $db->sql_query($sql);
|
||||||
$user_row['posts_in_queue'] = (int) $db->sql_fetchfield('posts_in_queue');
|
$user_row['posts_in_queue'] = (int) $db->sql_fetchfield('posts_in_queue');
|
||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
|
@ -1329,7 +1329,6 @@ class acp_users
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$template->assign_block_vars('warn', array(
|
$template->assign_block_vars('warn', array(
|
||||||
'ID' => $row['warning_id'],
|
'ID' => $row['warning_id'],
|
||||||
'USERNAME' => ($row['log_operation']) ? get_username_string('full', $row['mod_user_id'], $row['mod_username'], $row['mod_user_colour']) : '-',
|
'USERNAME' => ($row['log_operation']) ? get_username_string('full', $row['mod_user_id'], $row['mod_username'], $row['mod_user_colour']) : '-',
|
||||||
|
@ -1379,7 +1378,6 @@ class acp_users
|
||||||
$data['bday_year'] = request_var('bday_year', $data['bday_year']);
|
$data['bday_year'] = request_var('bday_year', $data['bday_year']);
|
||||||
$data['user_birthday'] = sprintf('%2d-%2d-%4d', $data['bday_day'], $data['bday_month'], $data['bday_year']);
|
$data['user_birthday'] = sprintf('%2d-%2d-%4d', $data['bday_day'], $data['bday_month'], $data['bday_year']);
|
||||||
|
|
||||||
|
|
||||||
if ($submit)
|
if ($submit)
|
||||||
{
|
{
|
||||||
$error = validate_data($data, array(
|
$error = validate_data($data, array(
|
||||||
|
@ -1503,6 +1501,17 @@ class acp_users
|
||||||
'notify' => request_var('notify', $user_row['user_notify']),
|
'notify' => request_var('notify', $user_row['user_notify']),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Modify users preferences data
|
||||||
|
*
|
||||||
|
* @event core.acp_users_prefs_modify_data
|
||||||
|
* @var array data Array with users preferences data
|
||||||
|
* @var array user_row Array with user data
|
||||||
|
* @since 3.1.0-b3
|
||||||
|
*/
|
||||||
|
$vars = array('data', 'user_row');
|
||||||
|
extract($phpbb_dispatcher->trigger_event('core.acp_users_prefs_modify_data', compact($vars)));
|
||||||
|
|
||||||
if ($submit)
|
if ($submit)
|
||||||
{
|
{
|
||||||
$error = validate_data($data, array(
|
$error = validate_data($data, array(
|
||||||
|
@ -1559,6 +1568,21 @@ class acp_users
|
||||||
'user_notify' => $data['notify'],
|
'user_notify' => $data['notify'],
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Modify SQL query before users preferences are updated
|
||||||
|
*
|
||||||
|
* @event core.acp_users_prefs_modify_sql
|
||||||
|
* @var array data Array with users preferences data
|
||||||
|
* @var array user_row Array with user data
|
||||||
|
* @var array sql_ary SQL array with users preferences data to update
|
||||||
|
* @var array error Array with errors data
|
||||||
|
* @since 3.1.0-b3
|
||||||
|
*/
|
||||||
|
$vars = array('data', 'user_row', 'sql_ary', 'error');
|
||||||
|
extract($phpbb_dispatcher->trigger_event('core.acp_users_prefs_modify_sql', compact($vars)));
|
||||||
|
|
||||||
|
if (!sizeof($error))
|
||||||
|
{
|
||||||
$sql = 'UPDATE ' . USERS_TABLE . '
|
$sql = 'UPDATE ' . USERS_TABLE . '
|
||||||
SET ' . $db->sql_build_array('UPDATE', $sql_ary) . "
|
SET ' . $db->sql_build_array('UPDATE', $sql_ary) . "
|
||||||
WHERE user_id = $user_id";
|
WHERE user_id = $user_id";
|
||||||
|
@ -1591,6 +1615,7 @@ class acp_users
|
||||||
|
|
||||||
trigger_error($user->lang['USER_PREFS_UPDATED'] . adm_back_link($this->u_action . '&u=' . $user_id));
|
trigger_error($user->lang['USER_PREFS_UPDATED'] . adm_back_link($this->u_action . '&u=' . $user_id));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Replace "error" strings with their real, localised form
|
// Replace "error" strings with their real, localised form
|
||||||
$error = array_map(array($user, 'lang'), $error);
|
$error = array_map(array($user, 'lang'), $error);
|
||||||
|
@ -1653,7 +1678,7 @@ class acp_users
|
||||||
}
|
}
|
||||||
|
|
||||||
$timezone_selects = phpbb_timezone_select($user, $data['tz'], true);
|
$timezone_selects = phpbb_timezone_select($user, $data['tz'], true);
|
||||||
$template->assign_vars(array(
|
$user_prefs_data = array(
|
||||||
'S_PREFS' => true,
|
'S_PREFS' => true,
|
||||||
'S_JABBER_DISABLED' => ($config['jab_enable'] && $user_row['user_jabber'] && @extension_loaded('xml')) ? false : true,
|
'S_JABBER_DISABLED' => ($config['jab_enable'] && $user_row['user_jabber'] && @extension_loaded('xml')) ? false : true,
|
||||||
|
|
||||||
|
@ -1693,9 +1718,22 @@ class acp_users
|
||||||
'S_STYLE_OPTIONS' => style_select($data['style']),
|
'S_STYLE_OPTIONS' => style_select($data['style']),
|
||||||
'S_TZ_OPTIONS' => $timezone_selects['tz_select'],
|
'S_TZ_OPTIONS' => $timezone_selects['tz_select'],
|
||||||
'S_TZ_DATE_OPTIONS' => $timezone_selects['tz_dates'],
|
'S_TZ_DATE_OPTIONS' => $timezone_selects['tz_dates'],
|
||||||
)
|
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Modify users preferences data before assigning it to the template
|
||||||
|
*
|
||||||
|
* @event core.acp_users_prefs_modify_template_data
|
||||||
|
* @var array data Array with users preferences data
|
||||||
|
* @var array user_row Array with user data
|
||||||
|
* @var array user_prefs_data Array with users preferences data to be assigned to the template
|
||||||
|
* @since 3.1.0-b3
|
||||||
|
*/
|
||||||
|
$vars = array('data', 'user_row', 'user_prefs_data');
|
||||||
|
extract($phpbb_dispatcher->trigger_event('core.acp_users_prefs_modify_template_data', compact($vars)));
|
||||||
|
|
||||||
|
$template->assign_vars($user_prefs_data);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'avatar':
|
case 'avatar':
|
||||||
|
@ -2243,7 +2281,6 @@ class acp_users
|
||||||
$error = array();
|
$error = array();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$sql = 'SELECT ug.*, g.*
|
$sql = 'SELECT ug.*, g.*
|
||||||
FROM ' . GROUPS_TABLE . ' g, ' . USER_GROUP_TABLE . " ug
|
FROM ' . GROUPS_TABLE . ' g, ' . USER_GROUP_TABLE . " ug
|
||||||
WHERE ug.user_id = $user_id
|
WHERE ug.user_id = $user_id
|
||||||
|
|
|
@ -162,7 +162,6 @@ class acp_words
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$template->assign_vars(array(
|
$template->assign_vars(array(
|
||||||
'U_ACTION' => $this->u_action,
|
'U_ACTION' => $this->u_action,
|
||||||
'S_HIDDEN_FIELDS' => $s_hidden_fields)
|
'S_HIDDEN_FIELDS' => $s_hidden_fields)
|
||||||
|
|
|
@ -139,7 +139,6 @@ class auth_admin extends \phpbb\auth\auth
|
||||||
$auth2 = &$auth;
|
$auth2 = &$auth;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$hold_ary[$userdata['user_id']] = array();
|
$hold_ary[$userdata['user_id']] = array();
|
||||||
foreach ($forum_ids as $f_id)
|
foreach ($forum_ids as $f_id)
|
||||||
{
|
{
|
||||||
|
|
|
@ -2352,7 +2352,6 @@ class colour_manager
|
||||||
$colour3[0] += 180;
|
$colour3[0] += 180;
|
||||||
$colour4[0] += 210;
|
$colour4[0] += 210;
|
||||||
|
|
||||||
|
|
||||||
$results[] = $this->allocate($colour2, $mode);
|
$results[] = $this->allocate($colour2, $mode);
|
||||||
$results[] = $this->allocate($colour3, $mode);
|
$results[] = $this->allocate($colour3, $mode);
|
||||||
$results[] = $this->allocate($colour4, $mode);
|
$results[] = $this->allocate($colour4, $mode);
|
||||||
|
|
44
phpBB/includes/compatibility_globals.php
Normal file
44
phpBB/includes/compatibility_globals.php
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package phpBB3
|
||||||
|
* @copyright (c) 2014 phpBB Group
|
||||||
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
*/
|
||||||
|
if (!defined('IN_PHPBB'))
|
||||||
|
{
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
// set up caching
|
||||||
|
$cache = $phpbb_container->get('cache');
|
||||||
|
|
||||||
|
// Instantiate some basic classes
|
||||||
|
$phpbb_dispatcher = $phpbb_container->get('dispatcher');
|
||||||
|
$request = $phpbb_container->get('request');
|
||||||
|
$user = $phpbb_container->get('user');
|
||||||
|
$auth = $phpbb_container->get('auth');
|
||||||
|
$db = $phpbb_container->get('dbal.conn');
|
||||||
|
|
||||||
|
// make sure request_var uses this request instance
|
||||||
|
request_var('', 0, false, false, $request); // "dependency injection" for a function
|
||||||
|
|
||||||
|
// Grab global variables, re-cache if necessary
|
||||||
|
$config = $phpbb_container->get('config');
|
||||||
|
set_config(null, null, null, $config);
|
||||||
|
set_config_count(null, null, null, $config);
|
||||||
|
|
||||||
|
$phpbb_log = $phpbb_container->get('log');
|
||||||
|
$symfony_request = $phpbb_container->get('symfony_request');
|
||||||
|
$phpbb_filesystem = $phpbb_container->get('filesystem');
|
||||||
|
$phpbb_path_helper = $phpbb_container->get('path_helper');
|
||||||
|
|
||||||
|
// load extensions
|
||||||
|
$phpbb_extension_manager = $phpbb_container->get('ext.manager');
|
||||||
|
$phpbb_subscriber_loader = $phpbb_container->get('event.subscriber_loader');
|
||||||
|
|
||||||
|
$template = $phpbb_container->get('template');
|
|
@ -24,7 +24,7 @@ if (!defined('IN_PHPBB'))
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// phpBB Version
|
// phpBB Version
|
||||||
define('PHPBB_VERSION', '3.1.0-b3-dev');
|
define('PHPBB_VERSION', '3.1.0-b4-dev');
|
||||||
|
|
||||||
// QA-related
|
// QA-related
|
||||||
// define('PHPBB_QA', 1);
|
// define('PHPBB_QA', 1);
|
||||||
|
@ -46,10 +46,10 @@ define('USER_INACTIVE', 1);
|
||||||
define('USER_IGNORE', 2);
|
define('USER_IGNORE', 2);
|
||||||
define('USER_FOUNDER', 3);
|
define('USER_FOUNDER', 3);
|
||||||
|
|
||||||
define('INACTIVE_REGISTER', 1);
|
define('INACTIVE_REGISTER', 1); // Newly registered account
|
||||||
define('INACTIVE_PROFILE', 2);
|
define('INACTIVE_PROFILE', 2); // Profile details changed
|
||||||
define('INACTIVE_MANUAL', 3);
|
define('INACTIVE_MANUAL', 3); // Account deactivated by administrator
|
||||||
define('INACTIVE_REMIND', 4);
|
define('INACTIVE_REMIND', 4); // Forced user account reactivation
|
||||||
|
|
||||||
// ACL
|
// ACL
|
||||||
define('ACL_NEVER', 0);
|
define('ACL_NEVER', 0);
|
||||||
|
@ -91,6 +91,7 @@ define('ITEM_MOVED', 2);
|
||||||
define('ITEM_UNAPPROVED', 0); // => has not yet been approved
|
define('ITEM_UNAPPROVED', 0); // => has not yet been approved
|
||||||
define('ITEM_APPROVED', 1); // => has been approved, and has not been soft deleted
|
define('ITEM_APPROVED', 1); // => has been approved, and has not been soft deleted
|
||||||
define('ITEM_DELETED', 2); // => has been soft deleted
|
define('ITEM_DELETED', 2); // => has been soft deleted
|
||||||
|
define('ITEM_REAPPROVE', 3); // => has been edited and needs to be re-approved
|
||||||
|
|
||||||
// Forum Flags
|
// Forum Flags
|
||||||
define('FORUM_FLAG_LINK_TRACK', 1);
|
define('FORUM_FLAG_LINK_TRACK', 1);
|
||||||
|
|
|
@ -1004,24 +1004,6 @@ function phpbb_get_timezone_identifiers($selected_timezone)
|
||||||
return $timezones;
|
return $timezones;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Pick a timezone
|
|
||||||
*
|
|
||||||
* @param string $default A timezone to select
|
|
||||||
* @param boolean $truncate Shall we truncate the options text
|
|
||||||
*
|
|
||||||
* @return string Returns the options for timezone selector only
|
|
||||||
*
|
|
||||||
* @deprecated
|
|
||||||
*/
|
|
||||||
function tz_select($default = '', $truncate = false)
|
|
||||||
{
|
|
||||||
global $user;
|
|
||||||
|
|
||||||
$timezone_select = phpbb_timezone_select($user, $default, $truncate);
|
|
||||||
return $timezone_select['tz_select'];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Options to pick a timezone and date/time
|
* Options to pick a timezone and date/time
|
||||||
*
|
*
|
||||||
|
@ -2022,7 +2004,7 @@ function append_sid($url, $params = false, $is_amp = true, $session_id = false)
|
||||||
* the global one (false)
|
* the global one (false)
|
||||||
* @var bool|string append_sid_overwrite Overwrite function (string
|
* @var bool|string append_sid_overwrite Overwrite function (string
|
||||||
* URL) or not (false)
|
* URL) or not (false)
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('url', 'params', 'is_amp', 'session_id', 'append_sid_overwrite');
|
$vars = array('url', 'params', 'is_amp', 'session_id', 'append_sid_overwrite');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.append_sid', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.append_sid', compact($vars)));
|
||||||
|
@ -2344,8 +2326,9 @@ function reapply_sid($url)
|
||||||
*/
|
*/
|
||||||
function build_url($strip_vars = false)
|
function build_url($strip_vars = false)
|
||||||
{
|
{
|
||||||
global $config, $user, $phpEx, $phpbb_root_path;
|
global $config, $user, $phpbb_path_helper;
|
||||||
|
|
||||||
|
$php_ext = $phpbb_path_helper->get_php_ext();
|
||||||
$page = $user->page['page'];
|
$page = $user->page['page'];
|
||||||
|
|
||||||
// We need to be cautious here.
|
// We need to be cautious here.
|
||||||
|
@ -2358,71 +2341,27 @@ function build_url($strip_vars = false)
|
||||||
if ($url_parts === false || empty($url_parts['scheme']) || empty($url_parts['host']))
|
if ($url_parts === false || empty($url_parts['scheme']) || empty($url_parts['host']))
|
||||||
{
|
{
|
||||||
// Remove 'app.php/' from the page, when rewrite is enabled
|
// Remove 'app.php/' from the page, when rewrite is enabled
|
||||||
if ($config['enable_mod_rewrite'] && strpos($page, 'app.' . $phpEx . '/') === 0)
|
if ($config['enable_mod_rewrite'] && strpos($page, 'app.' . $php_ext . '/') === 0)
|
||||||
{
|
{
|
||||||
$page = substr($page, strlen('app.' . $phpEx . '/'));
|
$page = substr($page, strlen('app.' . $php_ext . '/'));
|
||||||
}
|
}
|
||||||
|
|
||||||
$page = $phpbb_root_path . $page;
|
$page = $phpbb_path_helper->get_phpbb_root_path() . $page;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Append SID
|
// Append SID
|
||||||
$redirect = append_sid($page, false, false);
|
$redirect = append_sid($page, false, false);
|
||||||
|
|
||||||
// Add delimiter if not there...
|
if ($strip_vars !== false)
|
||||||
if (strpos($redirect, '?') === false)
|
|
||||||
{
|
{
|
||||||
$redirect .= '?';
|
$redirect = $phpbb_path_helper->strip_url_params($redirect, $strip_vars, false);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$redirect = str_replace('&', '&', $redirect);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Strip vars...
|
return $redirect . ((strpos($redirect, '?') === false) ? '?' : '');
|
||||||
if ($strip_vars !== false && strpos($redirect, '?') !== false)
|
|
||||||
{
|
|
||||||
if (!is_array($strip_vars))
|
|
||||||
{
|
|
||||||
$strip_vars = array($strip_vars);
|
|
||||||
}
|
|
||||||
|
|
||||||
$query = $_query = array();
|
|
||||||
|
|
||||||
$args = substr($redirect, strpos($redirect, '?') + 1);
|
|
||||||
$args = ($args) ? explode('&', $args) : array();
|
|
||||||
$redirect = substr($redirect, 0, strpos($redirect, '?'));
|
|
||||||
|
|
||||||
foreach ($args as $argument)
|
|
||||||
{
|
|
||||||
$arguments = explode('=', $argument);
|
|
||||||
$key = $arguments[0];
|
|
||||||
unset($arguments[0]);
|
|
||||||
|
|
||||||
if ($key === '')
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
$query[$key] = implode('=', $arguments);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Strip the vars off
|
|
||||||
foreach ($strip_vars as $strip)
|
|
||||||
{
|
|
||||||
if (isset($query[$strip]))
|
|
||||||
{
|
|
||||||
unset($query[$strip]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Glue the remaining parts together... already urlencoded
|
|
||||||
foreach ($query as $key => $value)
|
|
||||||
{
|
|
||||||
$_query[] = $key . '=' . $value;
|
|
||||||
}
|
|
||||||
$query = implode('&', $_query);
|
|
||||||
|
|
||||||
$redirect .= ($query) ? '?' . $query : '';
|
|
||||||
}
|
|
||||||
|
|
||||||
return str_replace('&', '&', $redirect);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -2712,7 +2651,6 @@ function confirm_box($check, $title = '', $hidden = '', $html_body = 'confirm_bo
|
||||||
WHERE user_id = " . $user->data['user_id'];
|
WHERE user_id = " . $user->data['user_id'];
|
||||||
$db->sql_query($sql);
|
$db->sql_query($sql);
|
||||||
|
|
||||||
|
|
||||||
if ($request->is_ajax())
|
if ($request->is_ajax())
|
||||||
{
|
{
|
||||||
$u_action .= '&confirm_uid=' . $user->data['user_id'] . '&sess=' . $user->session_id . '&sid=' . $user->session_id;
|
$u_action .= '&confirm_uid=' . $user->data['user_id'] . '&sess=' . $user->session_id . '&sid=' . $user->session_id;
|
||||||
|
@ -3849,6 +3787,16 @@ function msg_handler($errno, $msg_text, $errfile, $errline)
|
||||||
if (defined('IN_INSTALL') || defined('DEBUG') || isset($auth) && $auth->acl_get('a_'))
|
if (defined('IN_INSTALL') || defined('DEBUG') || isset($auth) && $auth->acl_get('a_'))
|
||||||
{
|
{
|
||||||
$msg_text = $log_text;
|
$msg_text = $log_text;
|
||||||
|
|
||||||
|
// If this is defined there already was some output
|
||||||
|
// So let's not break it
|
||||||
|
if (defined('IN_DB_UPDATE'))
|
||||||
|
{
|
||||||
|
echo '<div class="errorbox">' . $msg_text . '</div>';
|
||||||
|
|
||||||
|
$db->sql_return_on_error(true);
|
||||||
|
phpbb_end_update($cache, $config);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((defined('IN_CRON') || defined('IMAGE_OUTPUT')) && isset($db))
|
if ((defined('IN_CRON') || defined('IMAGE_OUTPUT')) && isset($db))
|
||||||
|
@ -4045,7 +3993,7 @@ function obtain_guest_count($item_id = 0, $item = 'forum')
|
||||||
|
|
||||||
// Get number of online guests
|
// Get number of online guests
|
||||||
|
|
||||||
if ($db->sql_layer === 'sqlite')
|
if ($db->sql_layer === 'sqlite' || $db->sql_layer === 'sqlite3')
|
||||||
{
|
{
|
||||||
$sql = 'SELECT COUNT(session_ip) as num_guests
|
$sql = 'SELECT COUNT(session_ip) as num_guests
|
||||||
FROM (
|
FROM (
|
||||||
|
@ -4735,7 +4683,7 @@ function page_header($page_title = '', $display_online_list = false, $item_id =
|
||||||
* @var int item_id Restrict online users to item id
|
* @var int item_id Restrict online users to item id
|
||||||
* @var bool page_header_override Shall we return instead of running
|
* @var bool page_header_override Shall we return instead of running
|
||||||
* the rest of page_header()
|
* the rest of page_header()
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('page_title', 'display_online_list', 'item_id', 'item', 'page_header_override');
|
$vars = array('page_title', 'display_online_list', 'item_id', 'item', 'page_header_override');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.page_header', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.page_header', compact($vars)));
|
||||||
|
@ -4911,12 +4859,10 @@ function page_header($page_title = '', $display_online_list = false, $item_id =
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$hidden_fields_for_jumpbox = phpbb_build_hidden_fields_for_query_params($request, array('f'));
|
|
||||||
$notification_mark_hash = generate_link_hash('mark_all_notifications_read');
|
$notification_mark_hash = generate_link_hash('mark_all_notifications_read');
|
||||||
|
|
||||||
// The following assigns all _common_ variables that may be used at any point in a template.
|
// The following assigns all _common_ variables that may be used at any point in a template.
|
||||||
$template->assign_vars(array(
|
$template->assign_vars(array(
|
||||||
'CURRENT_USER_AVATAR' => phpbb_get_user_avatar($user->data),
|
|
||||||
'SITENAME' => $config['sitename'],
|
'SITENAME' => $config['sitename'],
|
||||||
'SITE_DESCRIPTION' => $config['site_desc'],
|
'SITE_DESCRIPTION' => $config['site_desc'],
|
||||||
'PAGE_TITLE' => $page_title,
|
'PAGE_TITLE' => $page_title,
|
||||||
|
@ -4927,9 +4873,10 @@ function page_header($page_title = '', $display_online_list = false, $item_id =
|
||||||
'TOTAL_USERS_ONLINE' => $l_online_users,
|
'TOTAL_USERS_ONLINE' => $l_online_users,
|
||||||
'LOGGED_IN_USER_LIST' => $online_userlist,
|
'LOGGED_IN_USER_LIST' => $online_userlist,
|
||||||
'RECORD_USERS' => $l_online_record,
|
'RECORD_USERS' => $l_online_record,
|
||||||
'PRIVATE_MESSAGE_COUNT' => (!empty($user->data['user_unread_privmsg'])) ? $user->data['user_unread_privmsg'] : 0,
|
|
||||||
'HIDDEN_FIELDS_FOR_JUMPBOX' => $hidden_fields_for_jumpbox,
|
|
||||||
|
|
||||||
|
'PRIVATE_MESSAGE_COUNT' => (!empty($user->data['user_unread_privmsg'])) ? $user->data['user_unread_privmsg'] : 0,
|
||||||
|
'CURRENT_USER_AVATAR' => phpbb_get_user_avatar($user->data),
|
||||||
|
'CURRENT_USERNAME_FULL' => get_username_string('full', $user->data['user_id'], $user->data['username'], $user->data['user_colour']),
|
||||||
'UNREAD_NOTIFICATIONS_COUNT' => ($notifications !== false) ? $notifications['unread_count'] : '',
|
'UNREAD_NOTIFICATIONS_COUNT' => ($notifications !== false) ? $notifications['unread_count'] : '',
|
||||||
'NOTIFICATIONS_COUNT' => ($notifications !== false) ? $notifications['unread_count'] : '',
|
'NOTIFICATIONS_COUNT' => ($notifications !== false) ? $notifications['unread_count'] : '',
|
||||||
'U_VIEW_ALL_NOTIFICATIONS' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=ucp_notifications'),
|
'U_VIEW_ALL_NOTIFICATIONS' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=ucp_notifications'),
|
||||||
|
@ -4946,7 +4893,6 @@ function page_header($page_title = '', $display_online_list = false, $item_id =
|
||||||
'SESSION_ID' => $user->session_id,
|
'SESSION_ID' => $user->session_id,
|
||||||
'ROOT_PATH' => $web_path,
|
'ROOT_PATH' => $web_path,
|
||||||
'BOARD_URL' => $board_url,
|
'BOARD_URL' => $board_url,
|
||||||
'USERNAME_FULL' => get_username_string('full', $user->data['user_id'], $user->data['username'], $user->data['user_colour']),
|
|
||||||
|
|
||||||
'L_LOGIN_LOGOUT' => $l_login_logout,
|
'L_LOGIN_LOGOUT' => $l_login_logout,
|
||||||
'L_INDEX' => ($config['board_index_text'] !== '') ? $config['board_index_text'] : $user->lang['FORUM_INDEX'],
|
'L_INDEX' => ($config['board_index_text'] !== '') ? $config['board_index_text'] : $user->lang['FORUM_INDEX'],
|
||||||
|
@ -5100,7 +5046,7 @@ function page_footer($run_cron = true, $display_template = true, $exit_handler =
|
||||||
* @var bool run_cron Shall we run cron tasks
|
* @var bool run_cron Shall we run cron tasks
|
||||||
* @var bool page_footer_override Shall we return instead of running
|
* @var bool page_footer_override Shall we return instead of running
|
||||||
* the rest of page_footer()
|
* the rest of page_footer()
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('run_cron', 'page_footer_override');
|
$vars = array('run_cron', 'page_footer_override');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.page_footer', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.page_footer', compact($vars)));
|
||||||
|
@ -5208,7 +5154,7 @@ function garbage_collection()
|
||||||
* Unload some objects, to free some memory, before we finish our task
|
* Unload some objects, to free some memory, before we finish our task
|
||||||
*
|
*
|
||||||
* @event core.garbage_collection
|
* @event core.garbage_collection
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$phpbb_dispatcher->dispatch('core.garbage_collection');
|
$phpbb_dispatcher->dispatch('core.garbage_collection');
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,7 +41,7 @@ function adm_page_header($page_title)
|
||||||
* @var string page_title Page title
|
* @var string page_title Page title
|
||||||
* @var bool adm_page_header_override Shall we return instead of
|
* @var bool adm_page_header_override Shall we return instead of
|
||||||
* running the rest of adm_page_header()
|
* running the rest of adm_page_header()
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('page_title', 'adm_page_header_override');
|
$vars = array('page_title', 'adm_page_header_override');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.adm_page_header', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.adm_page_header', compact($vars)));
|
||||||
|
@ -132,7 +132,7 @@ function adm_page_footer($copyright_html = true)
|
||||||
* @var bool copyright_html Shall we display the copyright?
|
* @var bool copyright_html Shall we display the copyright?
|
||||||
* @var bool adm_page_footer_override Shall we return instead of
|
* @var bool adm_page_footer_override Shall we return instead of
|
||||||
* running the rest of adm_page_footer()
|
* running the rest of adm_page_footer()
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('copyright_html', 'adm_page_footer_override');
|
$vars = array('copyright_html', 'adm_page_footer_override');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.adm_page_footer', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.adm_page_footer', compact($vars)));
|
||||||
|
@ -396,7 +396,7 @@ function build_cfg_template($tpl_type, $key, &$new, $config_key, $vars)
|
||||||
* @var string name Should be used for the name attribute
|
* @var string name Should be used for the name attribute
|
||||||
* @var array vars Array with the options for the config
|
* @var array vars Array with the options for the config
|
||||||
* @var string tpl The resulting html code we display
|
* @var string tpl The resulting html code we display
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('tpl_type', 'key', 'new', 'name', 'vars', 'tpl');
|
$vars = array('tpl_type', 'key', 'new', 'name', 'vars', 'tpl');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.build_config_template', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.build_config_template', compact($vars)));
|
||||||
|
@ -606,7 +606,7 @@ function validate_config_vars($config_vars, &$cfg_array, &$error)
|
||||||
* @var array error Array of errors, the errors should
|
* @var array error Array of errors, the errors should
|
||||||
* be strings only, language keys are
|
* be strings only, language keys are
|
||||||
* not replaced afterwards
|
* not replaced afterwards
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('cfg_array', 'config_name', 'config_definition', 'error');
|
$vars = array('cfg_array', 'config_name', 'config_definition', 'error');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.validate_config_variable', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.validate_config_variable', compact($vars)));
|
||||||
|
|
|
@ -736,8 +736,6 @@ function delete_posts($where_type, $where_ids, $auto_sync = true, $posted_sync =
|
||||||
// Notifications types to delete
|
// Notifications types to delete
|
||||||
$delete_notifications_types = array(
|
$delete_notifications_types = array(
|
||||||
'quote',
|
'quote',
|
||||||
'bookmark',
|
|
||||||
'post',
|
|
||||||
'approve_post',
|
'approve_post',
|
||||||
'post_in_queue',
|
'post_in_queue',
|
||||||
);
|
);
|
||||||
|
@ -755,7 +753,15 @@ function delete_posts($where_type, $where_ids, $auto_sync = true, $posted_sync =
|
||||||
* @var array delete_notifications_types Array with notifications types to delete
|
* @var array delete_notifications_types Array with notifications types to delete
|
||||||
* @since 3.1.0-a4
|
* @since 3.1.0-a4
|
||||||
*/
|
*/
|
||||||
$vars = array('where_type', 'where_ids', 'auto_sync', 'posted_sync', 'post_count_sync', 'call_delete_topics', 'delete_notifications_types');
|
$vars = array(
|
||||||
|
'where_type',
|
||||||
|
'where_ids',
|
||||||
|
'auto_sync',
|
||||||
|
'posted_sync',
|
||||||
|
'post_count_sync',
|
||||||
|
'call_delete_topics',
|
||||||
|
'delete_notifications_types',
|
||||||
|
);
|
||||||
extract($phpbb_dispatcher->trigger_event('core.delete_posts_before', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.delete_posts_before', compact($vars)));
|
||||||
|
|
||||||
if ($where_type === 'range')
|
if ($where_type === 'range')
|
||||||
|
@ -912,7 +918,15 @@ function delete_posts($where_type, $where_ids, $auto_sync = true, $posted_sync =
|
||||||
* @var array delete_notifications_types Array with notifications types to delete
|
* @var array delete_notifications_types Array with notifications types to delete
|
||||||
* @since 3.1.0-a4
|
* @since 3.1.0-a4
|
||||||
*/
|
*/
|
||||||
$vars = array('post_ids', 'poster_ids', 'topic_ids', 'forum_ids', 'where_type', 'where_ids', 'delete_notifications_types');
|
$vars = array(
|
||||||
|
'post_ids',
|
||||||
|
'poster_ids',
|
||||||
|
'topic_ids',
|
||||||
|
'forum_ids',
|
||||||
|
'where_type',
|
||||||
|
'where_ids',
|
||||||
|
'delete_notifications_types',
|
||||||
|
);
|
||||||
extract($phpbb_dispatcher->trigger_event('core.delete_posts_in_transaction', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.delete_posts_in_transaction', compact($vars)));
|
||||||
|
|
||||||
$db->sql_transaction('commit');
|
$db->sql_transaction('commit');
|
||||||
|
@ -930,7 +944,15 @@ function delete_posts($where_type, $where_ids, $auto_sync = true, $posted_sync =
|
||||||
* @var array delete_notifications_types Array with notifications types to delete
|
* @var array delete_notifications_types Array with notifications types to delete
|
||||||
* @since 3.1.0-a4
|
* @since 3.1.0-a4
|
||||||
*/
|
*/
|
||||||
$vars = array('post_ids', 'poster_ids', 'topic_ids', 'forum_ids', 'where_type', 'where_ids', 'delete_notifications_types');
|
$vars = array(
|
||||||
|
'post_ids',
|
||||||
|
'poster_ids',
|
||||||
|
'topic_ids',
|
||||||
|
'forum_ids',
|
||||||
|
'where_type',
|
||||||
|
'where_ids',
|
||||||
|
'delete_notifications_types',
|
||||||
|
);
|
||||||
extract($phpbb_dispatcher->trigger_event('core.delete_posts_after', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.delete_posts_after', compact($vars)));
|
||||||
|
|
||||||
// Resync topics_posted table
|
// Resync topics_posted table
|
||||||
|
@ -1489,7 +1511,7 @@ function sync($mode, $where_type = '', $where_ids = '', $resync_parents = false,
|
||||||
ITEM_DELETED => (!empty($topics_softdeleted)) ? ' WHERE ' . $db->sql_in_set('topic_id', $topics_softdeleted) : '',
|
ITEM_DELETED => (!empty($topics_softdeleted)) ? ' WHERE ' . $db->sql_in_set('topic_id', $topics_softdeleted) : '',
|
||||||
);
|
);
|
||||||
|
|
||||||
foreach ($topic_visiblities as $visibility => $sql_where)
|
foreach ($update_ary as $visibility => $sql_where)
|
||||||
{
|
{
|
||||||
if ($sql_where)
|
if ($sql_where)
|
||||||
{
|
{
|
||||||
|
@ -1778,7 +1800,7 @@ function sync($mode, $where_type = '', $where_ids = '', $resync_parents = false,
|
||||||
{
|
{
|
||||||
$forum_data[$forum_id]['topics_approved'] = $row['total_topics'];
|
$forum_data[$forum_id]['topics_approved'] = $row['total_topics'];
|
||||||
}
|
}
|
||||||
else if ($row['topic_visibility'] == ITEM_UNAPPROVED)
|
else if ($row['topic_visibility'] == ITEM_UNAPPROVED || $row['topic_visibility'] == ITEM_REAPPROVE)
|
||||||
{
|
{
|
||||||
$forum_data[$forum_id]['topics_unapproved'] = $row['total_topics'];
|
$forum_data[$forum_id]['topics_unapproved'] = $row['total_topics'];
|
||||||
}
|
}
|
||||||
|
@ -2001,7 +2023,7 @@ function sync($mode, $where_type = '', $where_ids = '', $resync_parents = false,
|
||||||
{
|
{
|
||||||
$topic_data[$topic_id]['posts_approved'] = $row['total_posts'];
|
$topic_data[$topic_id]['posts_approved'] = $row['total_posts'];
|
||||||
}
|
}
|
||||||
else if ($row['post_visibility'] == ITEM_UNAPPROVED)
|
else if ($row['post_visibility'] == ITEM_UNAPPROVED || $row['post_visibility'] == ITEM_REAPPROVE)
|
||||||
{
|
{
|
||||||
$topic_data[$topic_id]['posts_unapproved'] = $row['total_posts'];
|
$topic_data[$topic_id]['posts_unapproved'] = $row['total_posts'];
|
||||||
}
|
}
|
||||||
|
@ -2023,7 +2045,7 @@ function sync($mode, $where_type = '', $where_ids = '', $resync_parents = false,
|
||||||
$topic_data[$topic_id]['first_post_id'] = (!empty($topic_data[$topic_id]['first_post_id'])) ? min($topic_data[$topic_id]['first_post_id'], $row['first_post_id']) : $row['first_post_id'];
|
$topic_data[$topic_id]['first_post_id'] = (!empty($topic_data[$topic_id]['first_post_id'])) ? min($topic_data[$topic_id]['first_post_id'], $row['first_post_id']) : $row['first_post_id'];
|
||||||
$topic_data[$topic_id]['last_post_id'] = max($topic_data[$topic_id]['last_post_id'], $row['last_post_id']);
|
$topic_data[$topic_id]['last_post_id'] = max($topic_data[$topic_id]['last_post_id'], $row['last_post_id']);
|
||||||
|
|
||||||
if ($topic_data[$topic_id]['visibility'] == ITEM_UNAPPROVED)
|
if ($topic_data[$topic_id]['visibility'] == ITEM_UNAPPROVED || $topic_data[$topic_id]['visibility'] == ITEM_REAPPROVE)
|
||||||
{
|
{
|
||||||
// Soft delete status is stronger than unapproved.
|
// Soft delete status is stronger than unapproved.
|
||||||
$topic_data[$topic_id]['visibility'] = $row['post_visibility'];
|
$topic_data[$topic_id]['visibility'] = $row['post_visibility'];
|
||||||
|
@ -2418,6 +2440,7 @@ function phpbb_cache_moderators($db, $cache, $auth)
|
||||||
switch ($db->sql_layer)
|
switch ($db->sql_layer)
|
||||||
{
|
{
|
||||||
case 'sqlite':
|
case 'sqlite':
|
||||||
|
case 'sqlite3':
|
||||||
case 'firebird':
|
case 'firebird':
|
||||||
$db->sql_query('DELETE FROM ' . MODERATOR_CACHE_TABLE);
|
$db->sql_query('DELETE FROM ' . MODERATOR_CACHE_TABLE);
|
||||||
break;
|
break;
|
||||||
|
@ -2580,20 +2603,6 @@ function phpbb_cache_moderators($db, $cache, $auth)
|
||||||
$db->sql_multi_insert(MODERATOR_CACHE_TABLE, $sql_ary);
|
$db->sql_multi_insert(MODERATOR_CACHE_TABLE, $sql_ary);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Cache moderators. Called whenever permissions are changed
|
|
||||||
* via admin_permissions. Changes of usernames and group names
|
|
||||||
* must be carried through for the moderators table.
|
|
||||||
*
|
|
||||||
* @deprecated 3.1
|
|
||||||
* @return null
|
|
||||||
*/
|
|
||||||
function cache_moderators()
|
|
||||||
{
|
|
||||||
global $db, $cache, $auth;
|
|
||||||
return phpbb_cache_moderators($db, $cache, $auth);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* View log
|
* View log
|
||||||
*
|
*
|
||||||
|
@ -2743,20 +2752,6 @@ function phpbb_update_foes($db, $auth, $group_id = false, $user_id = false)
|
||||||
unset($perms);
|
unset($perms);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Removes moderators and administrators from foe lists.
|
|
||||||
*
|
|
||||||
* @deprecated 3.1
|
|
||||||
* @param array|bool $group_id If an array, remove all members of this group from foe lists, or false to ignore
|
|
||||||
* @param array|bool $user_id If an array, remove this user from foe lists, or false to ignore
|
|
||||||
* @return null
|
|
||||||
*/
|
|
||||||
function update_foes($group_id = false, $user_id = false)
|
|
||||||
{
|
|
||||||
global $db, $auth;
|
|
||||||
return phpbb_update_foes($db, $auth, $group_id, $user_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Lists inactive users
|
* Lists inactive users
|
||||||
*/
|
*/
|
||||||
|
@ -2913,6 +2908,7 @@ function get_database_size()
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'sqlite':
|
case 'sqlite':
|
||||||
|
case 'sqlite3':
|
||||||
global $dbhost;
|
global $dbhost;
|
||||||
|
|
||||||
if (file_exists($dbhost))
|
if (file_exists($dbhost))
|
||||||
|
|
|
@ -116,3 +116,49 @@ function phpbb_clean_path($path)
|
||||||
|
|
||||||
return $phpbb_path_helper->clean_path($path);
|
return $phpbb_path_helper->clean_path($path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pick a timezone
|
||||||
|
*
|
||||||
|
* @param string $default A timezone to select
|
||||||
|
* @param boolean $truncate Shall we truncate the options text
|
||||||
|
*
|
||||||
|
* @return string Returns the options for timezone selector only
|
||||||
|
*
|
||||||
|
* @deprecated
|
||||||
|
*/
|
||||||
|
function tz_select($default = '', $truncate = false)
|
||||||
|
{
|
||||||
|
global $user;
|
||||||
|
|
||||||
|
$timezone_select = phpbb_timezone_select($user, $default, $truncate);
|
||||||
|
return $timezone_select['tz_select'];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cache moderators. Called whenever permissions are changed
|
||||||
|
* via admin_permissions. Changes of usernames and group names
|
||||||
|
* must be carried through for the moderators table.
|
||||||
|
*
|
||||||
|
* @deprecated 3.1
|
||||||
|
* @return null
|
||||||
|
*/
|
||||||
|
function cache_moderators()
|
||||||
|
{
|
||||||
|
global $db, $cache, $auth;
|
||||||
|
return phpbb_cache_moderators($db, $cache, $auth);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes moderators and administrators from foe lists.
|
||||||
|
*
|
||||||
|
* @deprecated 3.1
|
||||||
|
* @param array|bool $group_id If an array, remove all members of this group from foe lists, or false to ignore
|
||||||
|
* @param array|bool $user_id If an array, remove this user from foe lists, or false to ignore
|
||||||
|
* @return null
|
||||||
|
*/
|
||||||
|
function update_foes($group_id = false, $user_id = false)
|
||||||
|
{
|
||||||
|
global $db, $auth;
|
||||||
|
return phpbb_update_foes($db, $auth, $group_id, $user_id);
|
||||||
|
}
|
||||||
|
|
|
@ -110,7 +110,7 @@ function gen_sort_selects(&$limit_days, &$sort_by_text, &$sort_days, &$sort_key,
|
||||||
*/
|
*/
|
||||||
function make_jumpbox($action, $forum_id = false, $select_all = false, $acl_list = false, $force_display = false)
|
function make_jumpbox($action, $forum_id = false, $select_all = false, $acl_list = false, $force_display = false)
|
||||||
{
|
{
|
||||||
global $config, $auth, $template, $user, $db;
|
global $config, $auth, $template, $user, $db, $phpbb_path_helper;
|
||||||
|
|
||||||
// We only return if the jumpbox is not forced to be displayed (in case it is needed for functionality)
|
// We only return if the jumpbox is not forced to be displayed (in case it is needed for functionality)
|
||||||
if (!$config['load_jumpbox'] && $force_display === false)
|
if (!$config['load_jumpbox'] && $force_display === false)
|
||||||
|
@ -196,10 +196,13 @@ function make_jumpbox($action, $forum_id = false, $select_all = false, $acl_list
|
||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
unset($padding_store);
|
unset($padding_store);
|
||||||
|
|
||||||
|
$url_parts = $phpbb_path_helper->get_url_parts($action);
|
||||||
|
|
||||||
$template->assign_vars(array(
|
$template->assign_vars(array(
|
||||||
'S_DISPLAY_JUMPBOX' => $display_jumpbox,
|
'S_DISPLAY_JUMPBOX' => $display_jumpbox,
|
||||||
'S_JUMPBOX_ACTION' => $action)
|
'S_JUMPBOX_ACTION' => $action,
|
||||||
);
|
'HIDDEN_FIELDS_FOR_JUMPBOX' => build_hidden_fields($url_parts['params']),
|
||||||
|
));
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -445,7 +448,7 @@ function generate_text_for_display($text, $uid, $bitfield, $flags, $censor_text
|
||||||
* @var string bitfield The BBCode Bitfield
|
* @var string bitfield The BBCode Bitfield
|
||||||
* @var int flags The BBCode Flags
|
* @var int flags The BBCode Flags
|
||||||
* @var bool censor_text Whether or not to apply word censors
|
* @var bool censor_text Whether or not to apply word censors
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('text', 'uid', 'bitfield', 'flags', 'censor_text');
|
$vars = array('text', 'uid', 'bitfield', 'flags', 'censor_text');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.modify_text_for_display_before', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.modify_text_for_display_before', compact($vars)));
|
||||||
|
@ -487,7 +490,7 @@ function generate_text_for_display($text, $uid, $bitfield, $flags, $censor_text
|
||||||
* @var string uid The BBCode UID
|
* @var string uid The BBCode UID
|
||||||
* @var string bitfield The BBCode Bitfield
|
* @var string bitfield The BBCode Bitfield
|
||||||
* @var int flags The BBCode Flags
|
* @var int flags The BBCode Flags
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('text', 'uid', 'bitfield', 'flags');
|
$vars = array('text', 'uid', 'bitfield', 'flags');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.modify_text_for_display_after', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.modify_text_for_display_after', compact($vars)));
|
||||||
|
@ -525,9 +528,17 @@ function generate_text_for_storage(&$text, &$uid, &$bitfield, &$flags, $allow_bb
|
||||||
* @var bool allow_bbcode Whether or not to parse BBCode
|
* @var bool allow_bbcode Whether or not to parse BBCode
|
||||||
* @var bool allow_urls Whether or not to parse URLs
|
* @var bool allow_urls Whether or not to parse URLs
|
||||||
* @var bool allow_smilies Whether or not to parse Smilies
|
* @var bool allow_smilies Whether or not to parse Smilies
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('text', 'uid', 'bitfield', 'flags', 'allow_bbcode', 'allow_urls', 'allow_smilies');
|
$vars = array(
|
||||||
|
'text',
|
||||||
|
'uid',
|
||||||
|
'bitfield',
|
||||||
|
'flags',
|
||||||
|
'allow_bbcode',
|
||||||
|
'allow_urls',
|
||||||
|
'allow_smilies',
|
||||||
|
);
|
||||||
extract($phpbb_dispatcher->trigger_event('core.modify_text_for_storage_before', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.modify_text_for_storage_before', compact($vars)));
|
||||||
|
|
||||||
$uid = $bitfield = '';
|
$uid = $bitfield = '';
|
||||||
|
@ -565,7 +576,7 @@ function generate_text_for_storage(&$text, &$uid, &$bitfield, &$flags, $allow_bb
|
||||||
* @var string uid The BBCode UID
|
* @var string uid The BBCode UID
|
||||||
* @var string bitfield The BBCode Bitfield
|
* @var string bitfield The BBCode Bitfield
|
||||||
* @var int flags The BBCode Flags
|
* @var int flags The BBCode Flags
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('text', 'uid', 'bitfield', 'flags');
|
$vars = array('text', 'uid', 'bitfield', 'flags');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.modify_text_for_storage_after', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.modify_text_for_storage_after', compact($vars)));
|
||||||
|
@ -588,7 +599,7 @@ function generate_text_for_edit($text, $uid, $flags)
|
||||||
* @var string text The text to parse
|
* @var string text The text to parse
|
||||||
* @var string uid The BBCode UID
|
* @var string uid The BBCode UID
|
||||||
* @var int flags The BBCode Flags
|
* @var int flags The BBCode Flags
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('text', 'uid', 'flags');
|
$vars = array('text', 'uid', 'flags');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.modify_text_for_edit_before', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.modify_text_for_edit_before', compact($vars)));
|
||||||
|
@ -601,7 +612,7 @@ function generate_text_for_edit($text, $uid, $flags)
|
||||||
* @event core.modify_text_for_edit_after
|
* @event core.modify_text_for_edit_after
|
||||||
* @var string text The text to parse
|
* @var string text The text to parse
|
||||||
* @var int flags The BBCode Flags
|
* @var int flags The BBCode Flags
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('text', 'flags');
|
$vars = array('text', 'flags');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.modify_text_for_edit_after', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.modify_text_for_edit_after', compact($vars)));
|
||||||
|
@ -1408,9 +1419,18 @@ function get_username_string($mode, $user_id, $username, $username_colour = '',
|
||||||
* profile url.
|
* profile url.
|
||||||
* @var string username_string The string that has been generated
|
* @var string username_string The string that has been generated
|
||||||
* @var array _profile_cache Array of original return templates
|
* @var array _profile_cache Array of original return templates
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('mode', 'user_id', 'username', 'username_colour', 'guest_username', 'custom_profile_url', 'username_string', '_profile_cache');
|
$vars = array(
|
||||||
|
'mode',
|
||||||
|
'user_id',
|
||||||
|
'username',
|
||||||
|
'username_colour',
|
||||||
|
'guest_username',
|
||||||
|
'custom_profile_url',
|
||||||
|
'username_string',
|
||||||
|
'_profile_cache',
|
||||||
|
);
|
||||||
extract($phpbb_dispatcher->trigger_event('core.modify_username_string', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.modify_username_string', compact($vars)));
|
||||||
|
|
||||||
return $username_string;
|
return $username_string;
|
||||||
|
|
|
@ -1650,6 +1650,7 @@ function mass_auth($ug_type, $forum_id, $ug_id, $acl_list, $setting = ACL_NO)
|
||||||
|
|
||||||
case 'mssql':
|
case 'mssql':
|
||||||
case 'sqlite':
|
case 'sqlite':
|
||||||
|
case 'sqlite3':
|
||||||
case 'mssqlnative':
|
case 'mssqlnative':
|
||||||
$sql = implode(' UNION ALL ', preg_replace('#^(.*?)$#', 'SELECT \1', $sql_subary));
|
$sql = implode(' UNION ALL ', preg_replace('#^(.*?)$#', 'SELECT \1', $sql_subary));
|
||||||
break;
|
break;
|
||||||
|
@ -2037,6 +2038,7 @@ function update_topics_posted()
|
||||||
switch ($db->sql_layer)
|
switch ($db->sql_layer)
|
||||||
{
|
{
|
||||||
case 'sqlite':
|
case 'sqlite':
|
||||||
|
case 'sqlite3':
|
||||||
case 'firebird':
|
case 'firebird':
|
||||||
$db->sql_query('DELETE FROM ' . TOPICS_POSTED_TABLE);
|
$db->sql_query('DELETE FROM ' . TOPICS_POSTED_TABLE);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -138,7 +138,7 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod
|
||||||
*
|
*
|
||||||
* @event core.display_forums_modify_sql
|
* @event core.display_forums_modify_sql
|
||||||
* @var array sql_ary The SQL array to get the data of the forums
|
* @var array sql_ary The SQL array to get the data of the forums
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('sql_ary');
|
$vars = array('sql_ary');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.display_forums_modify_sql', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.display_forums_modify_sql', compact($vars)));
|
||||||
|
@ -161,7 +161,7 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod
|
||||||
* @event core.display_forums_modify_row
|
* @event core.display_forums_modify_row
|
||||||
* @var int branch_root_id Last top-level forum
|
* @var int branch_root_id Last top-level forum
|
||||||
* @var array row The data of the forum
|
* @var array row The data of the forum
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('branch_root_id', 'row');
|
$vars = array('branch_root_id', 'row');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.display_forums_modify_row', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.display_forums_modify_row', compact($vars)));
|
||||||
|
@ -318,7 +318,7 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod
|
||||||
* @var int branch_root_id Current top-level forum
|
* @var int branch_root_id Current top-level forum
|
||||||
* @var int parent_id Current parent forum
|
* @var int parent_id Current parent forum
|
||||||
* @var array row The data of the forum
|
* @var array row The data of the forum
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('forum_rows', 'subforums', 'branch_root_id', 'parent_id', 'row');
|
$vars = array('forum_rows', 'subforums', 'branch_root_id', 'parent_id', 'row');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.display_forums_modify_forum_rows', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.display_forums_modify_forum_rows', compact($vars)));
|
||||||
|
@ -568,7 +568,7 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod
|
||||||
* @event core.display_forums_modify_template_vars
|
* @event core.display_forums_modify_template_vars
|
||||||
* @var array forum_row Template data of the forum
|
* @var array forum_row Template data of the forum
|
||||||
* @var array row The data of the forum
|
* @var array row The data of the forum
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('forum_row', 'row');
|
$vars = array('forum_row', 'row');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.display_forums_modify_template_vars', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.display_forums_modify_template_vars', compact($vars)));
|
||||||
|
@ -900,7 +900,6 @@ function topic_status(&$topic_row, $replies, $unread_topic, &$folder_img, &$fold
|
||||||
$folder_new .= '_locked';
|
$folder_new .= '_locked';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$folder_img = ($unread_topic) ? $folder_new : $folder;
|
$folder_img = ($unread_topic) ? $folder_new : $folder;
|
||||||
$folder_alt = ($unread_topic) ? 'UNREAD_POSTS' : (($topic_row['topic_status'] == ITEM_LOCKED) ? 'TOPIC_LOCKED' : 'NO_UNREAD_POSTS');
|
$folder_alt = ($unread_topic) ? 'UNREAD_POSTS' : (($topic_row['topic_status'] == ITEM_LOCKED) ? 'TOPIC_LOCKED' : 'NO_UNREAD_POSTS');
|
||||||
|
|
||||||
|
@ -975,7 +974,7 @@ function display_custom_bbcodes()
|
||||||
* @event core.display_custom_bbcodes_modify_row
|
* @event core.display_custom_bbcodes_modify_row
|
||||||
* @var array custom_tags Template data of the bbcode
|
* @var array custom_tags Template data of the bbcode
|
||||||
* @var array row The data of the bbcode
|
* @var array row The data of the bbcode
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('custom_tags', 'row');
|
$vars = array('custom_tags', 'row');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.display_custom_bbcodes_modify_row', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.display_custom_bbcodes_modify_row', compact($vars)));
|
||||||
|
@ -990,7 +989,7 @@ function display_custom_bbcodes()
|
||||||
* Display custom bbcodes
|
* Display custom bbcodes
|
||||||
*
|
*
|
||||||
* @event core.display_custom_bbcodes
|
* @event core.display_custom_bbcodes
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$phpbb_dispatcher->dispatch('core.display_custom_bbcodes');
|
$phpbb_dispatcher->dispatch('core.display_custom_bbcodes');
|
||||||
}
|
}
|
||||||
|
|
|
@ -106,6 +106,15 @@ function get_available_dbms($dbms = false, $return_unavailable = false, $only_20
|
||||||
'AVAILABLE' => true,
|
'AVAILABLE' => true,
|
||||||
'2.0.x' => false,
|
'2.0.x' => false,
|
||||||
),
|
),
|
||||||
|
'sqlite3' => array(
|
||||||
|
'LABEL' => 'SQLite3',
|
||||||
|
'SCHEMA' => 'sqlite',
|
||||||
|
'MODULE' => 'sqlite3',
|
||||||
|
'DELIM' => ';',
|
||||||
|
'DRIVER' => 'phpbb\db\driver\sqlite3',
|
||||||
|
'AVAILABLE' => true,
|
||||||
|
'2.0.x' => false,
|
||||||
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
if ($dbms)
|
if ($dbms)
|
||||||
|
@ -206,14 +215,14 @@ function connect_check_db($error_connect, &$error, $dbms_details, $table_prefix,
|
||||||
$db->sql_return_on_error(true);
|
$db->sql_return_on_error(true);
|
||||||
|
|
||||||
// Check that we actually have a database name before going any further.....
|
// Check that we actually have a database name before going any further.....
|
||||||
if ($dbms_details['DRIVER'] != 'phpbb\db\driver\sqlite' && $dbms_details['DRIVER'] != 'phpbb\db\driver\oracle' && $dbname === '')
|
if ($dbms_details['DRIVER'] != 'phpbb\db\driver\sqlite' && $dbms_details['DRIVER'] != 'phpbb\db\driver\sqlite3' && $dbms_details['DRIVER'] != 'phpbb\db\driver\oracle' && $dbname === '')
|
||||||
{
|
{
|
||||||
$error[] = $lang['INST_ERR_DB_NO_NAME'];
|
$error[] = $lang['INST_ERR_DB_NO_NAME'];
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make sure we don't have a daft user who thinks having the SQLite database in the forum directory is a good idea
|
// Make sure we don't have a daft user who thinks having the SQLite database in the forum directory is a good idea
|
||||||
if ($dbms_details['DRIVER'] == 'phpbb\db\driver\sqlite' && stripos(phpbb_realpath($dbhost), phpbb_realpath('../')) === 0)
|
if (($dbms_details['DRIVER'] == 'phpbb\db\driver\sqlite' || $dbms_details['DRIVER'] == 'phpbb\db\driver\sqlite3') && stripos(phpbb_realpath($dbhost), phpbb_realpath('../')) === 0)
|
||||||
{
|
{
|
||||||
$error[] = $lang['INST_ERR_DB_FORUM_PATH'];
|
$error[] = $lang['INST_ERR_DB_FORUM_PATH'];
|
||||||
return false;
|
return false;
|
||||||
|
@ -243,6 +252,7 @@ function connect_check_db($error_connect, &$error, $dbms_details, $table_prefix,
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'phpbb\db\driver\sqlite':
|
case 'phpbb\db\driver\sqlite':
|
||||||
|
case 'phpbb\db\driver\sqlite3':
|
||||||
$prefix_length = 200;
|
$prefix_length = 200;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -299,6 +309,14 @@ function connect_check_db($error_connect, &$error, $dbms_details, $table_prefix,
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'phpbb\db\driver\sqlite3':
|
||||||
|
$version = \SQLite3::version();
|
||||||
|
if (version_compare($version['versionString'], '3.6.15', '<'))
|
||||||
|
{
|
||||||
|
$error[] = $lang['INST_ERR_DB_NO_SQLITE3'];
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case 'phpbb\db\driver\firebird':
|
case 'phpbb\db\driver\firebird':
|
||||||
// check the version of FB, use some hackery if we can't get access to the server info
|
// check the version of FB, use some hackery if we can't get access to the server info
|
||||||
if ($db->service_handle !== false && function_exists('ibase_server_info'))
|
if ($db->service_handle !== false && function_exists('ibase_server_info'))
|
||||||
|
|
|
@ -484,14 +484,17 @@ class messenger
|
||||||
$use_queue = true;
|
$use_queue = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$contact_name = htmlspecialchars_decode($config['board_contact_name']);
|
||||||
|
$board_contact = (($contact_name !== '') ? '"' . mail_encode($contact_name) . '" ' : '') . '<' . $config['board_contact'] . '>';
|
||||||
|
|
||||||
if (empty($this->replyto))
|
if (empty($this->replyto))
|
||||||
{
|
{
|
||||||
$this->replyto = '<' . $config['board_contact'] . '>';
|
$this->replyto = $board_contact;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($this->from))
|
if (empty($this->from))
|
||||||
{
|
{
|
||||||
$this->from = '<' . $config['board_contact'] . '>';
|
$this->from = $board_contact;
|
||||||
}
|
}
|
||||||
|
|
||||||
$encode_eol = ($config['smtp_delivery']) ? "\r\n" : $this->eol;
|
$encode_eol = ($config['smtp_delivery']) ? "\r\n" : $this->eol;
|
||||||
|
|
|
@ -398,6 +398,7 @@ class p_master
|
||||||
'cfg_([a-z0-9_]+)' => '(int) $config[\'\\1\']',
|
'cfg_([a-z0-9_]+)' => '(int) $config[\'\\1\']',
|
||||||
'request_([a-zA-Z0-9_]+)' => '$request->variable(\'\\1\', false)',
|
'request_([a-zA-Z0-9_]+)' => '$request->variable(\'\\1\', false)',
|
||||||
'ext_([a-zA-Z0-9_/]+)' => 'array_key_exists(\'\\1\', $phpbb_extension_manager->all_enabled())',
|
'ext_([a-zA-Z0-9_/]+)' => 'array_key_exists(\'\\1\', $phpbb_extension_manager->all_enabled())',
|
||||||
|
'authmethod_([a-z0-9_\\\\]+)' => '($config[\'auth_method\'] === \'\\1\')',
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -409,7 +410,7 @@ class p_master
|
||||||
* @var string module_auth The module_auth of the current
|
* @var string module_auth The module_auth of the current
|
||||||
* module
|
* module
|
||||||
* @var int forum_id The current forum_id
|
* @var int forum_id The current forum_id
|
||||||
* @since 3.1-A3
|
* @since 3.1.0-a3
|
||||||
*/
|
*/
|
||||||
$vars = array('valid_tokens', 'module_auth', 'forum_id');
|
$vars = array('valid_tokens', 'module_auth', 'forum_id');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.module_auth', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.module_auth', compact($vars)));
|
||||||
|
|
|
@ -21,7 +21,7 @@ if (!defined('IN_PHPBB'))
|
||||||
function generate_smilies($mode, $forum_id)
|
function generate_smilies($mode, $forum_id)
|
||||||
{
|
{
|
||||||
global $db, $user, $config, $template, $phpbb_dispatcher;
|
global $db, $user, $config, $template, $phpbb_dispatcher;
|
||||||
global $phpEx, $phpbb_root_path, $phpbb_container;
|
global $phpEx, $phpbb_root_path, $phpbb_container, $phpbb_path_helper;
|
||||||
|
|
||||||
$base_url = append_sid("{$phpbb_root_path}posting.$phpEx", 'mode=smilies&f=' . $forum_id);
|
$base_url = append_sid("{$phpbb_root_path}posting.$phpEx", 'mode=smilies&f=' . $forum_id);
|
||||||
$pagination = $phpbb_container->get('pagination');
|
$pagination = $phpbb_container->get('pagination');
|
||||||
|
@ -111,7 +111,7 @@ function generate_smilies($mode, $forum_id)
|
||||||
|
|
||||||
if (sizeof($smilies))
|
if (sizeof($smilies))
|
||||||
{
|
{
|
||||||
$root_path = (defined('PHPBB_USE_BOARD_URL_PATH') && PHPBB_USE_BOARD_URL_PATH) ? generate_board_url() . '/' : $phpbb_root_path;
|
$root_path = (defined('PHPBB_USE_BOARD_URL_PATH') && PHPBB_USE_BOARD_URL_PATH) ? generate_board_url() . '/' : $phpbb_path_helper->get_web_root_path();
|
||||||
|
|
||||||
foreach ($smilies as $row)
|
foreach ($smilies as $row)
|
||||||
{
|
{
|
||||||
|
@ -133,7 +133,7 @@ function generate_smilies($mode, $forum_id)
|
||||||
* @var string mode Mode of the smilies: window|inline
|
* @var string mode Mode of the smilies: window|inline
|
||||||
* @var int forum_id The forum ID we are currently in
|
* @var int forum_id The forum ID we are currently in
|
||||||
* @var bool display_link Shall we display the "more smilies" link?
|
* @var bool display_link Shall we display the "more smilies" link?
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('mode', 'forum_id', 'display_link');
|
$vars = array('mode', 'forum_id', 'display_link');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.generate_smilies_after', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.generate_smilies_after', compact($vars)));
|
||||||
|
@ -173,7 +173,6 @@ function update_post_information($type, $ids, $return_update_sql = false)
|
||||||
$ids = array($ids);
|
$ids = array($ids);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$update_sql = $empty_forums = $not_empty_forums = array();
|
$update_sql = $empty_forums = $not_empty_forums = array();
|
||||||
|
|
||||||
if ($type != 'topic')
|
if ($type != 'topic')
|
||||||
|
@ -1296,7 +1295,7 @@ function delete_post($forum_id, $topic_id, $post_id, &$data, $is_soft = false, $
|
||||||
{
|
{
|
||||||
$sql_data[FORUMS_TABLE] .= 'forum_posts_approved = forum_posts_approved - 1, forum_topics_approved = forum_topics_approved - 1';
|
$sql_data[FORUMS_TABLE] .= 'forum_posts_approved = forum_posts_approved - 1, forum_topics_approved = forum_topics_approved - 1';
|
||||||
}
|
}
|
||||||
else if ($data['topic_visibility'] == ITEM_UNAPPROVED)
|
else if ($data['topic_visibility'] == ITEM_UNAPPROVED || $data['post_visibility'] == ITEM_REAPPROVE)
|
||||||
{
|
{
|
||||||
$sql_data[FORUMS_TABLE] .= 'forum_posts_unapproved = forum_posts_unapproved - 1, forum_topics_unapproved = forum_topics_unapproved - 1';
|
$sql_data[FORUMS_TABLE] .= 'forum_posts_unapproved = forum_posts_unapproved - 1, forum_topics_unapproved = forum_topics_unapproved - 1';
|
||||||
}
|
}
|
||||||
|
@ -1403,7 +1402,7 @@ function delete_post($forum_id, $topic_id, $post_id, &$data, $is_soft = false, $
|
||||||
{
|
{
|
||||||
$phpbb_content_visibility->remove_post_from_statistic($data, $sql_data);
|
$phpbb_content_visibility->remove_post_from_statistic($data, $sql_data);
|
||||||
}
|
}
|
||||||
else if ($data['post_visibility'] == ITEM_UNAPPROVED)
|
else if ($data['post_visibility'] == ITEM_UNAPPROVED || $data['post_visibility'] == ITEM_REAPPROVE)
|
||||||
{
|
{
|
||||||
$sql_data[FORUMS_TABLE] = (($sql_data[FORUMS_TABLE]) ? $sql_data[FORUMS_TABLE] . ', ' : '') . 'forum_posts_unapproved = forum_posts_unapproved - 1';
|
$sql_data[FORUMS_TABLE] = (($sql_data[FORUMS_TABLE]) ? $sql_data[FORUMS_TABLE] . ', ' : '') . 'forum_posts_unapproved = forum_posts_unapproved - 1';
|
||||||
$sql_data[TOPICS_TABLE] = (($sql_data[TOPICS_TABLE]) ? $sql_data[TOPICS_TABLE] . ', ' : '') . 'topic_posts_unapproved = topic_posts_unapproved - 1';
|
$sql_data[TOPICS_TABLE] = (($sql_data[TOPICS_TABLE]) ? $sql_data[TOPICS_TABLE] . ', ' : '') . 'topic_posts_unapproved = topic_posts_unapproved - 1';
|
||||||
|
@ -1497,7 +1496,17 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u
|
||||||
* @var bool update_search_index Flag indicating if the search index will be updated
|
* @var bool update_search_index Flag indicating if the search index will be updated
|
||||||
* @since 3.1.0-a4
|
* @since 3.1.0-a4
|
||||||
*/
|
*/
|
||||||
extract($phpbb_dispatcher->trigger_event('core.modify_submit_post_data', compact(array('mode', 'subject', 'username', 'topic_type', 'poll', 'data', 'update_message', 'update_search_index'))));
|
$vars = array(
|
||||||
|
'mode',
|
||||||
|
'subject',
|
||||||
|
'username',
|
||||||
|
'topic_type',
|
||||||
|
'poll',
|
||||||
|
'data',
|
||||||
|
'update_message',
|
||||||
|
'update_search_index',
|
||||||
|
);
|
||||||
|
extract($phpbb_dispatcher->trigger_event('core.modify_submit_post_data', compact($vars)));
|
||||||
|
|
||||||
// We do not handle erasing posts here
|
// We do not handle erasing posts here
|
||||||
if ($mode == 'delete')
|
if ($mode == 'delete')
|
||||||
|
@ -1555,16 +1564,25 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u
|
||||||
{
|
{
|
||||||
// Post not approved, but in queue
|
// Post not approved, but in queue
|
||||||
$post_visibility = ITEM_UNAPPROVED;
|
$post_visibility = ITEM_UNAPPROVED;
|
||||||
|
switch ($post_mode)
|
||||||
|
{
|
||||||
|
case 'edit_first_post':
|
||||||
|
case 'edit':
|
||||||
|
case 'edit_last_post':
|
||||||
|
case 'edit_topic':
|
||||||
|
$post_visibility = ITEM_REAPPROVE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// MODs/Extensions are able to force any visibility on posts
|
// MODs/Extensions are able to force any visibility on posts
|
||||||
if (isset($data['force_approved_state']))
|
if (isset($data['force_approved_state']))
|
||||||
{
|
{
|
||||||
$post_visibility = (in_array((int) $data['force_approved_state'], array(ITEM_APPROVED, ITEM_UNAPPROVED, ITEM_DELETED))) ? (int) $data['force_approved_state'] : $post_visibility;
|
$post_visibility = (in_array((int) $data['force_approved_state'], array(ITEM_APPROVED, ITEM_UNAPPROVED, ITEM_DELETED, ITEM_REAPPROVE))) ? (int) $data['force_approved_state'] : $post_visibility;
|
||||||
}
|
}
|
||||||
if (isset($data['force_visibility']))
|
if (isset($data['force_visibility']))
|
||||||
{
|
{
|
||||||
$post_visibility = (in_array((int) $data['force_visibility'], array(ITEM_APPROVED, ITEM_UNAPPROVED, ITEM_DELETED))) ? (int) $data['force_visibility'] : $post_visibility;
|
$post_visibility = (in_array((int) $data['force_visibility'], array(ITEM_APPROVED, ITEM_UNAPPROVED, ITEM_DELETED, ITEM_REAPPROVE))) ? (int) $data['force_visibility'] : $post_visibility;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Start the transaction here
|
// Start the transaction here
|
||||||
|
@ -2032,6 +2050,7 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u
|
||||||
$first_post_has_topic_info = ($post_mode == 'edit_first_post' &&
|
$first_post_has_topic_info = ($post_mode == 'edit_first_post' &&
|
||||||
(($post_visibility == ITEM_DELETED && $data['topic_posts_softdeleted'] == 1) ||
|
(($post_visibility == ITEM_DELETED && $data['topic_posts_softdeleted'] == 1) ||
|
||||||
($post_visibility == ITEM_UNAPPROVED && $data['topic_posts_unapproved'] == 1) ||
|
($post_visibility == ITEM_UNAPPROVED && $data['topic_posts_unapproved'] == 1) ||
|
||||||
|
($post_visibility == ITEM_REAPPROVE && $data['topic_posts_unapproved'] == 1) ||
|
||||||
($post_visibility == ITEM_APPROVED && $data['topic_posts_approved'] == 1)));
|
($post_visibility == ITEM_APPROVED && $data['topic_posts_approved'] == 1)));
|
||||||
// Fix the post's and topic's visibility and first/last post information, when the post is edited
|
// Fix the post's and topic's visibility and first/last post information, when the post is edited
|
||||||
if (($post_mode != 'post' && $post_mode != 'reply') && $data['post_visibility'] != $post_visibility)
|
if (($post_mode != 'post' && $post_mode != 'reply') && $data['post_visibility'] != $post_visibility)
|
||||||
|
@ -2039,7 +2058,7 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u
|
||||||
// If the post was not approved, it could also be the starter,
|
// If the post was not approved, it could also be the starter,
|
||||||
// so we sync the starter after approving/restoring, to ensure that the stats are correct
|
// so we sync the starter after approving/restoring, to ensure that the stats are correct
|
||||||
// Same applies for the last post
|
// Same applies for the last post
|
||||||
$is_starter = ($post_mode == 'edit_first_post' || $data['post_visibility'] != ITEM_APPROVED);
|
$is_starter = ($post_mode == 'edit_first_post' || $post_mode == 'edit_topic' || $data['post_visibility'] != ITEM_APPROVED);
|
||||||
$is_latest = ($post_mode == 'edit_last_post' || $post_mode == 'edit_topic' || $data['post_visibility'] != ITEM_APPROVED);
|
$is_latest = ($post_mode == 'edit_last_post' || $post_mode == 'edit_topic' || $data['post_visibility'] != ITEM_APPROVED);
|
||||||
|
|
||||||
$phpbb_content_visibility = $phpbb_container->get('content.visibility');
|
$phpbb_content_visibility = $phpbb_container->get('content.visibility');
|
||||||
|
@ -2272,16 +2291,36 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u
|
||||||
case 'edit_first_post':
|
case 'edit_first_post':
|
||||||
case 'edit':
|
case 'edit':
|
||||||
case 'edit_last_post':
|
case 'edit_last_post':
|
||||||
if ($data['topic_visibility'] != ITEM_APPROVED)
|
// Nothing to do here
|
||||||
{
|
break;
|
||||||
$phpbb_notifications->delete_notifications('topic', $data['topic_id']);
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else if ($post_visibility == ITEM_REAPPROVE)
|
||||||
|
{
|
||||||
|
switch ($mode)
|
||||||
|
{
|
||||||
|
case 'edit_topic':
|
||||||
|
case 'edit_first_post':
|
||||||
|
$phpbb_notifications->add_notifications('topic_in_queue', $notification_data);
|
||||||
|
|
||||||
$phpbb_notifications->delete_notifications(array(
|
// Delete the approve_post notification so we can notify the user again,
|
||||||
'quote',
|
// when his post got reapproved
|
||||||
'bookmark',
|
$phpbb_notifications->delete_notifications('approve_post', $notification_data['post_id']);
|
||||||
'post',
|
break;
|
||||||
), $data['post_id']);
|
|
||||||
|
case 'edit':
|
||||||
|
case 'edit_last_post':
|
||||||
|
$phpbb_notifications->add_notifications('post_in_queue', $notification_data);
|
||||||
|
|
||||||
|
// Delete the approve_post notification so we can notify the user again,
|
||||||
|
// when his post got reapproved
|
||||||
|
$phpbb_notifications->delete_notifications('approve_post', $notification_data['post_id']);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'post':
|
||||||
|
case 'reply':
|
||||||
|
case 'quote':
|
||||||
|
// Nothing to do here
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2292,23 +2331,11 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u
|
||||||
case 'post':
|
case 'post':
|
||||||
case 'reply':
|
case 'reply':
|
||||||
case 'quote':
|
case 'quote':
|
||||||
// Nothing to do here
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'edit_topic':
|
case 'edit_topic':
|
||||||
case 'edit_first_post':
|
case 'edit_first_post':
|
||||||
case 'edit':
|
case 'edit':
|
||||||
case 'edit_last_post':
|
case 'edit_last_post':
|
||||||
if ($data['topic_visibility'] != ITEM_APPROVED)
|
// Nothing to do here
|
||||||
{
|
|
||||||
$phpbb_notifications->delete_notifications('topic', $data['topic_id']);
|
|
||||||
}
|
|
||||||
|
|
||||||
$phpbb_notifications->delete_notifications(array(
|
|
||||||
'quote',
|
|
||||||
'bookmark',
|
|
||||||
'post',
|
|
||||||
), $data['post_id']);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2345,7 +2372,7 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u
|
||||||
* @var string url The "Return to topic" URL
|
* @var string url The "Return to topic" URL
|
||||||
* @var array data Array of post data about the
|
* @var array data Array of post data about the
|
||||||
* submitted post
|
* submitted post
|
||||||
* @since 3.1-A3
|
* @since 3.1.0-a3
|
||||||
*/
|
*/
|
||||||
$vars = array('url', 'data');
|
$vars = array('url', 'data');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.submit_post_end', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.submit_post_end', compact($vars)));
|
||||||
|
|
|
@ -314,7 +314,6 @@ function check_rule(&$rules, &$rule_row, &$message_row, $user_id)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (!$result)
|
if (!$result)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -22,22 +22,22 @@ if (!defined('IN_PHPBB'))
|
||||||
/**
|
/**
|
||||||
* Create a new UrlMatcher class and dump it into the cache file
|
* Create a new UrlMatcher class and dump it into the cache file
|
||||||
*
|
*
|
||||||
* @param \phpbb\extension\finder $finder Extension finder
|
* @param \phpbb\extension\manager $manager Extension manager
|
||||||
* @param RequestContext $context Symfony RequestContext object
|
* @param RequestContext $context Symfony RequestContext object
|
||||||
* @param string $root_path Root path
|
* @param string $root_path Root path
|
||||||
* @param string $php_ext PHP extension
|
* @param string $php_ext PHP extension
|
||||||
* @return null
|
* @return null
|
||||||
*/
|
*/
|
||||||
function phpbb_get_url_matcher(\phpbb\extension\finder $finder, RequestContext $context, $root_path, $php_ext)
|
function phpbb_get_url_matcher(\phpbb\extension\manager $manager, RequestContext $context, $root_path, $php_ext)
|
||||||
{
|
{
|
||||||
if (defined('DEBUG'))
|
if (defined('DEBUG'))
|
||||||
{
|
{
|
||||||
return phpbb_create_url_matcher($finder, $context, $root_path);
|
return phpbb_create_url_matcher($manager, $context, $root_path);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!phpbb_url_matcher_dumped($root_path, $php_ext))
|
if (!phpbb_url_matcher_dumped($root_path, $php_ext))
|
||||||
{
|
{
|
||||||
phpbb_create_dumped_url_matcher($finder, $root_path, $php_ext);
|
phpbb_create_dumped_url_matcher($manager, $root_path, $php_ext);
|
||||||
}
|
}
|
||||||
|
|
||||||
return phpbb_load_url_matcher($context, $root_path, $php_ext);
|
return phpbb_load_url_matcher($context, $root_path, $php_ext);
|
||||||
|
@ -46,14 +46,15 @@ function phpbb_get_url_matcher(\phpbb\extension\finder $finder, RequestContext $
|
||||||
/**
|
/**
|
||||||
* Create a new UrlMatcher class and dump it into the cache file
|
* Create a new UrlMatcher class and dump it into the cache file
|
||||||
*
|
*
|
||||||
* @param \phpbb\extension\finder $finder Extension finder
|
* @param \phpbb\extension\manager $manager Extension manager
|
||||||
* @param string $root_path Root path
|
* @param string $root_path Root path
|
||||||
* @param string $php_ext PHP extension
|
* @param string $php_ext PHP extension
|
||||||
* @return null
|
* @return null
|
||||||
*/
|
*/
|
||||||
function phpbb_create_dumped_url_matcher(\phpbb\extension\finder $finder, $root_path, $php_ext)
|
function phpbb_create_dumped_url_matcher(\phpbb\extension\manager $manager, $root_path, $php_ext)
|
||||||
{
|
{
|
||||||
$provider = new \phpbb\controller\provider($finder);
|
$provider = new \phpbb\controller\provider();
|
||||||
|
$provider->find_routing_files($manager->get_finder());
|
||||||
$routes = $provider->find($root_path)->get_routes();
|
$routes = $provider->find($root_path)->get_routes();
|
||||||
$dumper = new PhpMatcherDumper($routes);
|
$dumper = new PhpMatcherDumper($routes);
|
||||||
$cached_url_matcher_dump = $dumper->dump(array(
|
$cached_url_matcher_dump = $dumper->dump(array(
|
||||||
|
@ -66,13 +67,14 @@ function phpbb_create_dumped_url_matcher(\phpbb\extension\finder $finder, $root_
|
||||||
/**
|
/**
|
||||||
* Create a non-cached UrlMatcher
|
* Create a non-cached UrlMatcher
|
||||||
*
|
*
|
||||||
* @param \phpbb\extension\finder $finder Extension finder
|
* @param \phpbb\extension\manager $manager Extension manager
|
||||||
* @param RequestContext $context Symfony RequestContext object
|
* @param RequestContext $context Symfony RequestContext object
|
||||||
* @return UrlMatcher
|
* @return UrlMatcher
|
||||||
*/
|
*/
|
||||||
function phpbb_create_url_matcher(\phpbb\extension\finder $finder, RequestContext $context, $root_path)
|
function phpbb_create_url_matcher(\phpbb\extension\manager $manager, RequestContext $context, $root_path)
|
||||||
{
|
{
|
||||||
$provider = new \phpbb\controller\provider($finder);
|
$provider = new \phpbb\controller\provider();
|
||||||
|
$provider->find_routing_files($manager->get_finder());
|
||||||
$routes = $provider->find($root_path)->get_routes();
|
$routes = $provider->find($root_path)->get_routes();
|
||||||
return new UrlMatcher($routes, $context);
|
return new UrlMatcher($routes, $context);
|
||||||
}
|
}
|
||||||
|
|
|
@ -143,7 +143,7 @@ function user_update_name($old_name, $new_name)
|
||||||
* @event core.update_username
|
* @event core.update_username
|
||||||
* @var string old_name The old username that is replaced
|
* @var string old_name The old username that is replaced
|
||||||
* @var string new_name The new username
|
* @var string new_name The new username
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('old_name', 'new_name');
|
$vars = array('old_name', 'new_name');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.update_username', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.update_username', compact($vars)));
|
||||||
|
@ -259,7 +259,7 @@ function user_add($user_row, $cp_data = false)
|
||||||
*
|
*
|
||||||
* @event core.user_add_modify_data
|
* @event core.user_add_modify_data
|
||||||
* @var array sql_ary Array of data to be inserted when a user is added
|
* @var array sql_ary Array of data to be inserted when a user is added
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('sql_ary');
|
$vars = array('sql_ary');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.user_add_modify_data', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.user_add_modify_data', compact($vars)));
|
||||||
|
@ -386,7 +386,7 @@ function user_delete($mode, $user_ids, $retain_username = true)
|
||||||
* @var array user_ids IDs of the deleted user
|
* @var array user_ids IDs of the deleted user
|
||||||
* @var mixed retain_username True if username should be retained
|
* @var mixed retain_username True if username should be retained
|
||||||
* or false if not
|
* or false if not
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('mode', 'user_ids', 'retain_username');
|
$vars = array('mode', 'user_ids', 'retain_username');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.delete_user_before', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.delete_user_before', compact($vars)));
|
||||||
|
@ -615,7 +615,7 @@ function user_delete($mode, $user_ids, $retain_username = true)
|
||||||
* @var array user_ids IDs of the deleted user
|
* @var array user_ids IDs of the deleted user
|
||||||
* @var mixed retain_username True if username should be retained
|
* @var mixed retain_username True if username should be retained
|
||||||
* or false if not
|
* or false if not
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('mode', 'user_ids', 'retain_username');
|
$vars = array('mode', 'user_ids', 'retain_username');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.delete_user_after', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.delete_user_after', compact($vars)));
|
||||||
|
@ -1326,9 +1326,18 @@ function validate_data($data, $val_ary)
|
||||||
{
|
{
|
||||||
$function = array_shift($validate);
|
$function = array_shift($validate);
|
||||||
array_unshift($validate, $data[$var]);
|
array_unshift($validate, $data[$var]);
|
||||||
$function_prefix = (function_exists('phpbb_validate_' . $function)) ? 'phpbb_validate_' : 'validate_';
|
|
||||||
|
|
||||||
if ($result = call_user_func_array($function_prefix . $function, $validate))
|
if (is_array($function))
|
||||||
|
{
|
||||||
|
$result = call_user_func_array(array($function[0], 'validate_' . $function[1]), $validate);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$function_prefix = (function_exists('phpbb_validate_' . $function)) ? 'phpbb_validate_' : 'validate_';
|
||||||
|
$result = call_user_func_array($function_prefix . $function, $validate);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($result)
|
||||||
{
|
{
|
||||||
// Since errors are checked later for their language file existence, we need to make sure custom errors are not adjusted.
|
// Since errors are checked later for their language file existence, we need to make sure custom errors are not adjusted.
|
||||||
$error[] = (empty($user->lang[$result . '_' . strtoupper($var)])) ? $result : $result . '_' . strtoupper($var);
|
$error[] = (empty($user->lang[$result . '_' . strtoupper($var)])) ? $result : $result . '_' . strtoupper($var);
|
||||||
|
@ -2077,7 +2086,6 @@ function get_avatar_filename($avatar_entry)
|
||||||
{
|
{
|
||||||
global $config;
|
global $config;
|
||||||
|
|
||||||
|
|
||||||
if ($avatar_entry[0] === 'g')
|
if ($avatar_entry[0] === 'g')
|
||||||
{
|
{
|
||||||
$avatar_group = true;
|
$avatar_group = true;
|
||||||
|
@ -2504,7 +2512,7 @@ function group_delete($group_id, $group_name = false)
|
||||||
* @event core.delete_group_after
|
* @event core.delete_group_after
|
||||||
* @var int group_id ID of the deleted group
|
* @var int group_id ID of the deleted group
|
||||||
* @var string group_name Name of the deleted group
|
* @var string group_name Name of the deleted group
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('group_id', 'group_name');
|
$vars = array('group_id', 'group_name');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.delete_group_after', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.delete_group_after', compact($vars)));
|
||||||
|
@ -2752,7 +2760,7 @@ function group_user_del($group_id, $user_id_ary = false, $username_ary = false,
|
||||||
* @var string group_name Name of the group
|
* @var string group_name Name of the group
|
||||||
* @var array user_id_ary IDs of the users which are removed
|
* @var array user_id_ary IDs of the users which are removed
|
||||||
* @var array username_ary names of the users which are removed
|
* @var array username_ary names of the users which are removed
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('group_id', 'group_name', 'user_id_ary', 'username_ary');
|
$vars = array('group_id', 'group_name', 'user_id_ary', 'username_ary');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.group_delete_user_before', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.group_delete_user_before', compact($vars)));
|
||||||
|
@ -3198,7 +3206,7 @@ function group_set_user_default($group_id, $user_id_ary, $group_attributes = fal
|
||||||
* @var array group_attributes Group attributes which were changed
|
* @var array group_attributes Group attributes which were changed
|
||||||
* @var array update_listing Update the list of moderators and foes
|
* @var array update_listing Update the list of moderators and foes
|
||||||
* @var array sql_ary User attributes which were changed
|
* @var array sql_ary User attributes which were changed
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('group_id', 'user_id_ary', 'group_attributes', 'update_listing', 'sql_ary');
|
$vars = array('group_id', 'user_id_ary', 'group_attributes', 'update_listing', 'sql_ary');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.user_set_default_group', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.user_set_default_group', compact($vars)));
|
||||||
|
@ -3447,9 +3455,12 @@ function remove_newly_registered($user_id, $user_data = false)
|
||||||
*
|
*
|
||||||
* @param array $user_ids Array of users' ids to check for banning,
|
* @param array $user_ids Array of users' ids to check for banning,
|
||||||
* leave empty to get complete list of banned ids
|
* leave empty to get complete list of banned ids
|
||||||
|
* @param bool|int $ban_end Bool True to get users currently banned
|
||||||
|
* Bool False to only get permanently banned users
|
||||||
|
* Int Unix timestamp to get users banned until that time
|
||||||
* @return array Array of banned users' ids if any, empty array otherwise
|
* @return array Array of banned users' ids if any, empty array otherwise
|
||||||
*/
|
*/
|
||||||
function phpbb_get_banned_user_ids($user_ids = array())
|
function phpbb_get_banned_user_ids($user_ids = array(), $ban_end = true)
|
||||||
{
|
{
|
||||||
global $db;
|
global $db;
|
||||||
|
|
||||||
|
@ -3461,9 +3472,26 @@ function phpbb_get_banned_user_ids($user_ids = array())
|
||||||
$sql = 'SELECT ban_userid
|
$sql = 'SELECT ban_userid
|
||||||
FROM ' . BANLIST_TABLE . "
|
FROM ' . BANLIST_TABLE . "
|
||||||
WHERE $sql_user_ids
|
WHERE $sql_user_ids
|
||||||
AND ban_exclude <> 1
|
AND ban_exclude <> 1";
|
||||||
AND (ban_end > " . time() . '
|
|
||||||
|
if ($ban_end === true)
|
||||||
|
{
|
||||||
|
// Banned currently
|
||||||
|
$sql .= " AND (ban_end > " . time() . '
|
||||||
OR ban_end = 0)';
|
OR ban_end = 0)';
|
||||||
|
}
|
||||||
|
else if ($ban_end === false)
|
||||||
|
{
|
||||||
|
// Permanently banned
|
||||||
|
$sql .= " AND ban_end = 0";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Banned until a specified time
|
||||||
|
$sql .= " AND (ban_end > " . (int) $ban_end . '
|
||||||
|
OR ban_end = 0)';
|
||||||
|
}
|
||||||
|
|
||||||
$result = $db->sql_query($sql);
|
$result = $db->sql_query($sql);
|
||||||
while ($row = $db->sql_fetchrow($result))
|
while ($row = $db->sql_fetchrow($result))
|
||||||
{
|
{
|
||||||
|
|
|
@ -224,7 +224,7 @@ function mcp_forum_view($id, $mode, $action, $forum_info)
|
||||||
|
|
||||||
$topic_title = censor_text($row['topic_title']);
|
$topic_title = censor_text($row['topic_title']);
|
||||||
|
|
||||||
$topic_unapproved = ($row['topic_visibility'] == ITEM_UNAPPROVED && $auth->acl_get('m_approve', $row['forum_id'])) ? true : false;
|
$topic_unapproved = (($row['topic_visibility'] == ITEM_UNAPPROVED || $row['topic_visibility'] == ITEM_REAPPROVE) && $auth->acl_get('m_approve', $row['forum_id'])) ? true : false;
|
||||||
$posts_unapproved = ($row['topic_visibility'] == ITEM_APPROVED && $row['topic_posts_unapproved'] && $auth->acl_get('m_approve', $row['forum_id'])) ? true : false;
|
$posts_unapproved = ($row['topic_visibility'] == ITEM_APPROVED && $row['topic_posts_unapproved'] && $auth->acl_get('m_approve', $row['forum_id'])) ? true : false;
|
||||||
$topic_deleted = $row['topic_visibility'] == ITEM_DELETED;
|
$topic_deleted = $row['topic_visibility'] == ITEM_DELETED;
|
||||||
$u_mcp_queue = ($topic_unapproved || $posts_unapproved) ? $url . '&i=queue&mode=' . (($topic_unapproved) ? 'approve_details' : 'unapproved_posts') . '&t=' . $row['topic_id'] : '';
|
$u_mcp_queue = ($topic_unapproved || $posts_unapproved) ? $url . '&i=queue&mode=' . (($topic_unapproved) ? 'approve_details' : 'unapproved_posts') . '&t=' . $row['topic_id'] : '';
|
||||||
|
@ -302,7 +302,7 @@ function mcp_forum_view($id, $mode, $action, $forum_info)
|
||||||
* @event core.mcp_view_forum_modify_topicrow
|
* @event core.mcp_view_forum_modify_topicrow
|
||||||
* @var array row Array with topic data
|
* @var array row Array with topic data
|
||||||
* @var array topic_row Template array with topic data
|
* @var array topic_row Template array with topic data
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('row', 'topic_row');
|
$vars = array('row', 'topic_row');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.mcp_view_forum_modify_topicrow', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.mcp_view_forum_modify_topicrow', compact($vars)));
|
||||||
|
|
|
@ -39,7 +39,7 @@ function mcp_front_view($id, $mode, $action)
|
||||||
$sql = 'SELECT COUNT(post_id) AS total
|
$sql = 'SELECT COUNT(post_id) AS total
|
||||||
FROM ' . POSTS_TABLE . '
|
FROM ' . POSTS_TABLE . '
|
||||||
WHERE ' . $db->sql_in_set('forum_id', $forum_list) . '
|
WHERE ' . $db->sql_in_set('forum_id', $forum_list) . '
|
||||||
AND post_visibility = ' . ITEM_UNAPPROVED;
|
AND ' . $db->sql_in_set('post_visibility', array(ITEM_UNAPPROVED, ITEM_REAPPROVE));
|
||||||
$result = $db->sql_query($sql);
|
$result = $db->sql_query($sql);
|
||||||
$total = (int) $db->sql_fetchfield('total');
|
$total = (int) $db->sql_fetchfield('total');
|
||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
|
@ -60,7 +60,7 @@ function mcp_front_view($id, $mode, $action)
|
||||||
$sql = 'SELECT post_id
|
$sql = 'SELECT post_id
|
||||||
FROM ' . POSTS_TABLE . '
|
FROM ' . POSTS_TABLE . '
|
||||||
WHERE ' . $db->sql_in_set('forum_id', $forum_list) . '
|
WHERE ' . $db->sql_in_set('forum_id', $forum_list) . '
|
||||||
AND post_visibility = ' . ITEM_UNAPPROVED . '
|
AND ' . $db->sql_in_set('post_visibility', array(ITEM_UNAPPROVED, ITEM_REAPPROVE)) . '
|
||||||
ORDER BY post_time DESC';
|
ORDER BY post_time DESC';
|
||||||
$result = $db->sql_query_limit($sql, 5);
|
$result = $db->sql_query_limit($sql, 5);
|
||||||
|
|
||||||
|
|
|
@ -493,7 +493,7 @@ function mcp_move_topic($topic_ids)
|
||||||
{
|
{
|
||||||
$topics_moved++;
|
$topics_moved++;
|
||||||
}
|
}
|
||||||
elseif ($topic_info['topic_visibility'] == ITEM_UNAPPROVED)
|
elseif ($topic_info['topic_visibility'] == ITEM_UNAPPROVED || $topic_info['topic_visibility'] == ITEM_REAPPROVE)
|
||||||
{
|
{
|
||||||
$topics_moved_unapproved++;
|
$topics_moved_unapproved++;
|
||||||
}
|
}
|
||||||
|
@ -1230,6 +1230,7 @@ function mcp_fork_topic($topic_ids)
|
||||||
$total_topics++;
|
$total_topics++;
|
||||||
break;
|
break;
|
||||||
case ITEM_UNAPPROVED:
|
case ITEM_UNAPPROVED:
|
||||||
|
case ITEM_REAPPROVE:
|
||||||
$total_topics_unapproved++;
|
$total_topics_unapproved++;
|
||||||
break;
|
break;
|
||||||
case ITEM_DELETED:
|
case ITEM_DELETED:
|
||||||
|
@ -1316,6 +1317,7 @@ function mcp_fork_topic($topic_ids)
|
||||||
$total_posts++;
|
$total_posts++;
|
||||||
break;
|
break;
|
||||||
case ITEM_UNAPPROVED:
|
case ITEM_UNAPPROVED:
|
||||||
|
case ITEM_REAPPROVE:
|
||||||
$total_posts_unapproved++;
|
$total_posts_unapproved++;
|
||||||
break;
|
break;
|
||||||
case ITEM_DELETED:
|
case ITEM_DELETED:
|
||||||
|
|
|
@ -203,7 +203,7 @@ function mcp_post_details($id, $mode, $action)
|
||||||
'S_CAN_DELETE_POST' => $auth->acl_get('m_delete', $post_info['forum_id']),
|
'S_CAN_DELETE_POST' => $auth->acl_get('m_delete', $post_info['forum_id']),
|
||||||
|
|
||||||
'S_POST_REPORTED' => ($post_info['post_reported']) ? true : false,
|
'S_POST_REPORTED' => ($post_info['post_reported']) ? true : false,
|
||||||
'S_POST_UNAPPROVED' => ($post_info['post_visibility'] == ITEM_UNAPPROVED) ? true : false,
|
'S_POST_UNAPPROVED' => ($post_info['post_visibility'] == ITEM_UNAPPROVED || $post_info['post_visibility'] == ITEM_REAPPROVE) ? true : false,
|
||||||
'S_POST_DELETED' => ($post_info['post_visibility'] == ITEM_DELETED) ? true : false,
|
'S_POST_DELETED' => ($post_info['post_visibility'] == ITEM_DELETED) ? true : false,
|
||||||
'S_POST_LOCKED' => ($post_info['post_edit_locked']) ? true : false,
|
'S_POST_LOCKED' => ($post_info['post_edit_locked']) ? true : false,
|
||||||
'S_USER_NOTES' => true,
|
'S_USER_NOTES' => true,
|
||||||
|
|
|
@ -115,10 +115,10 @@ class mcp_queue
|
||||||
|
|
||||||
if (!empty($topic_id_list))
|
if (!empty($topic_id_list))
|
||||||
{
|
{
|
||||||
$post_visibility = ($mode == 'deleted_topics') ? ITEM_DELETED : ITEM_UNAPPROVED;
|
$post_visibility = ($mode == 'deleted_topics') ? ITEM_DELETED : array(ITEM_UNAPPROVED, ITEM_REAPPROVE);
|
||||||
$sql = 'SELECT post_id
|
$sql = 'SELECT post_id
|
||||||
FROM ' . POSTS_TABLE . '
|
FROM ' . POSTS_TABLE . '
|
||||||
WHERE post_visibility = ' . $post_visibility . '
|
WHERE ' . $db->sql_in_set('post_visibility', $post_visibility) . '
|
||||||
AND ' . $db->sql_in_set('topic_id', $topic_id_list);
|
AND ' . $db->sql_in_set('topic_id', $topic_id_list);
|
||||||
$result = $db->sql_query($sql);
|
$result = $db->sql_query($sql);
|
||||||
|
|
||||||
|
@ -281,7 +281,7 @@ class mcp_queue
|
||||||
'U_APPROVE_ACTION' => append_sid("{$phpbb_root_path}mcp.$phpEx", "i=queue&p=$post_id&f=$forum_id"),
|
'U_APPROVE_ACTION' => append_sid("{$phpbb_root_path}mcp.$phpEx", "i=queue&p=$post_id&f=$forum_id"),
|
||||||
'S_CAN_VIEWIP' => $auth->acl_get('m_info', $post_info['forum_id']),
|
'S_CAN_VIEWIP' => $auth->acl_get('m_info', $post_info['forum_id']),
|
||||||
'S_POST_REPORTED' => $post_info['post_reported'],
|
'S_POST_REPORTED' => $post_info['post_reported'],
|
||||||
'S_POST_UNAPPROVED' => ($post_info['post_visibility'] == ITEM_UNAPPROVED),
|
'S_POST_UNAPPROVED' => $post_info['post_visibility'] == ITEM_UNAPPROVED || $post_info['post_visibility'] == ITEM_REAPPROVE,
|
||||||
'S_POST_LOCKED' => $post_info['post_edit_locked'],
|
'S_POST_LOCKED' => $post_info['post_edit_locked'],
|
||||||
'S_USER_NOTES' => true,
|
'S_USER_NOTES' => true,
|
||||||
'S_POST_DELETED' => ($post_info['post_visibility'] == ITEM_DELETED),
|
'S_POST_DELETED' => ($post_info['post_visibility'] == ITEM_DELETED),
|
||||||
|
@ -298,7 +298,6 @@ class mcp_queue
|
||||||
|
|
||||||
'MINI_POST_IMG' => ($post_unread) ? $user->img('icon_post_target_unread', 'UNREAD_POST') : $user->img('icon_post_target', 'POST'),
|
'MINI_POST_IMG' => ($post_unread) ? $user->img('icon_post_target_unread', 'UNREAD_POST') : $user->img('icon_post_target', 'POST'),
|
||||||
|
|
||||||
|
|
||||||
'RETURN_QUEUE' => sprintf($user->lang['RETURN_QUEUE'], '<a href="' . append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=queue' . (($topic_id) ? '&mode=unapproved_topics' : '&mode=unapproved_posts')) . '&start=' . $start . '">', '</a>'),
|
'RETURN_QUEUE' => sprintf($user->lang['RETURN_QUEUE'], '<a href="' . append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=queue' . (($topic_id) ? '&mode=unapproved_topics' : '&mode=unapproved_posts')) . '&start=' . $start . '">', '</a>'),
|
||||||
'RETURN_POST' => sprintf($user->lang['RETURN_POST'], '<a href="' . $post_url . '">', '</a>'),
|
'RETURN_POST' => sprintf($user->lang['RETURN_POST'], '<a href="' . $post_url . '">', '</a>'),
|
||||||
'RETURN_TOPIC_SIMPLE' => sprintf($user->lang['RETURN_TOPIC_SIMPLE'], '<a href="' . $topic_url . '">', '</a>'),
|
'RETURN_TOPIC_SIMPLE' => sprintf($user->lang['RETURN_TOPIC_SIMPLE'], '<a href="' . $topic_url . '">', '</a>'),
|
||||||
|
@ -331,7 +330,7 @@ class mcp_queue
|
||||||
$m_perm = 'm_approve';
|
$m_perm = 'm_approve';
|
||||||
$is_topics = ($mode == 'unapproved_topics' || $mode == 'deleted_topics') ? true : false;
|
$is_topics = ($mode == 'unapproved_topics' || $mode == 'deleted_topics') ? true : false;
|
||||||
$is_restore = ($mode == 'deleted_posts' || $mode == 'deleted_topics') ? true : false;
|
$is_restore = ($mode == 'deleted_posts' || $mode == 'deleted_topics') ? true : false;
|
||||||
$visibility_const = (!$is_restore) ? ITEM_UNAPPROVED : ITEM_DELETED;
|
$visibility_const = (!$is_restore) ? array(ITEM_UNAPPROVED, ITEM_REAPPROVE) : ITEM_DELETED;
|
||||||
|
|
||||||
$user->add_lang(array('viewtopic', 'viewforum'));
|
$user->add_lang(array('viewtopic', 'viewforum'));
|
||||||
|
|
||||||
|
@ -419,7 +418,7 @@ class mcp_queue
|
||||||
$sql = 'SELECT p.post_id
|
$sql = 'SELECT p.post_id
|
||||||
FROM ' . POSTS_TABLE . ' p, ' . TOPICS_TABLE . ' t' . (($sort_order_sql[0] == 'u') ? ', ' . USERS_TABLE . ' u' : '') . '
|
FROM ' . POSTS_TABLE . ' p, ' . TOPICS_TABLE . ' t' . (($sort_order_sql[0] == 'u') ? ', ' . USERS_TABLE . ' u' : '') . '
|
||||||
WHERE ' . $db->sql_in_set('p.forum_id', $forum_list) . '
|
WHERE ' . $db->sql_in_set('p.forum_id', $forum_list) . '
|
||||||
AND p.post_visibility = ' . $visibility_const . '
|
AND ' . $db->sql_in_set('p.post_visibility', $visibility_const) . '
|
||||||
' . (($sort_order_sql[0] == 'u') ? 'AND u.user_id = p.poster_id' : '') . '
|
' . (($sort_order_sql[0] == 'u') ? 'AND u.user_id = p.poster_id' : '') . '
|
||||||
' . (($topic_id) ? 'AND p.topic_id = ' . $topic_id : '') . "
|
' . (($topic_id) ? 'AND p.topic_id = ' . $topic_id : '') . "
|
||||||
AND t.topic_id = p.topic_id
|
AND t.topic_id = p.topic_id
|
||||||
|
@ -472,7 +471,7 @@ class mcp_queue
|
||||||
$sql = 'SELECT t.forum_id, t.topic_id, t.topic_title, t.topic_title AS post_subject, t.topic_time AS post_time, t.topic_poster AS poster_id, t.topic_first_post_id AS post_id, t.topic_attachment AS post_attachment, t.topic_first_poster_name AS username, t.topic_first_poster_colour AS user_colour
|
$sql = 'SELECT t.forum_id, t.topic_id, t.topic_title, t.topic_title AS post_subject, t.topic_time AS post_time, t.topic_poster AS poster_id, t.topic_first_post_id AS post_id, t.topic_attachment AS post_attachment, t.topic_first_poster_name AS username, t.topic_first_poster_colour AS user_colour
|
||||||
FROM ' . TOPICS_TABLE . ' t
|
FROM ' . TOPICS_TABLE . ' t
|
||||||
WHERE ' . $db->sql_in_set('forum_id', $forum_list) . '
|
WHERE ' . $db->sql_in_set('forum_id', $forum_list) . '
|
||||||
AND topic_visibility = ' . $visibility_const . "
|
AND ' . $db->sql_in_set('topic_visibility', $visibility_const) . "
|
||||||
AND topic_delete_user <> 0
|
AND topic_delete_user <> 0
|
||||||
$limit_time_sql
|
$limit_time_sql
|
||||||
ORDER BY $sort_order_sql";
|
ORDER BY $sort_order_sql";
|
||||||
|
@ -660,11 +659,18 @@ class mcp_queue
|
||||||
}
|
}
|
||||||
$phpbb_notifications->delete_notifications('post_in_queue', $post_id);
|
$phpbb_notifications->delete_notifications('post_in_queue', $post_id);
|
||||||
|
|
||||||
|
// Only add notifications, if we are not reapproving post
|
||||||
|
// When the topic was already approved, but was edited and
|
||||||
|
// now needs re-approval, we don't want to notify the users
|
||||||
|
// again.
|
||||||
|
if ($post_data['post_visibility'] == ITEM_UNAPPROVED)
|
||||||
|
{
|
||||||
$phpbb_notifications->add_notifications(array(
|
$phpbb_notifications->add_notifications(array(
|
||||||
'quote',
|
'quote',
|
||||||
'bookmark',
|
'bookmark',
|
||||||
'post',
|
'post',
|
||||||
), $post_data);
|
), $post_data);
|
||||||
|
}
|
||||||
|
|
||||||
$phpbb_notifications->mark_notifications_read(array(
|
$phpbb_notifications->mark_notifications_read(array(
|
||||||
'quote',
|
'quote',
|
||||||
|
@ -832,10 +838,18 @@ class mcp_queue
|
||||||
));
|
));
|
||||||
|
|
||||||
$phpbb_notifications->delete_notifications('topic_in_queue', $topic_id);
|
$phpbb_notifications->delete_notifications('topic_in_queue', $topic_id);
|
||||||
|
|
||||||
|
// Only add notifications, if we are not reapproving post
|
||||||
|
// When the topic was already approved, but was edited and
|
||||||
|
// now needs re-approval, we don't want to notify the users
|
||||||
|
// again.
|
||||||
|
if ($topic_data['topic_visibility'] == ITEM_UNAPPROVED)
|
||||||
|
{
|
||||||
$phpbb_notifications->add_notifications(array(
|
$phpbb_notifications->add_notifications(array(
|
||||||
'quote',
|
'quote',
|
||||||
'topic',
|
'topic',
|
||||||
), $topic_data);
|
), $topic_data);
|
||||||
|
}
|
||||||
|
|
||||||
$phpbb_notifications->mark_notifications_read('quote', $topic_data['post_id'], $user->data['user_id']);
|
$phpbb_notifications->mark_notifications_read('quote', $topic_data['post_id'], $user->data['user_id']);
|
||||||
$phpbb_notifications->mark_notifications_read('topic', $topic_id, $user->data['user_id']);
|
$phpbb_notifications->mark_notifications_read('topic', $topic_id, $user->data['user_id']);
|
||||||
|
@ -1060,7 +1074,7 @@ class mcp_queue
|
||||||
if ($is_disapproving)
|
if ($is_disapproving)
|
||||||
{
|
{
|
||||||
$l_log_message = ($log_data['type'] == 'topic') ? 'LOG_TOPIC_DISAPPROVED' : 'LOG_POST_DISAPPROVED';
|
$l_log_message = ($log_data['type'] == 'topic') ? 'LOG_TOPIC_DISAPPROVED' : 'LOG_POST_DISAPPROVED';
|
||||||
add_log('mod', $log_data['forum_id'], $log_data['topic_id'], $l_log_message, $log_data['post_subject'], $disapprove_reason);
|
add_log('mod', $log_data['forum_id'], $log_data['topic_id'], $l_log_message, $log_data['post_subject'], $disapprove_reason, $log_data['post_username']);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1126,7 +1140,6 @@ class mcp_queue
|
||||||
$post_data['disapprove_reason'] .= ($reason) ? "\n\n" . $reason : '';
|
$post_data['disapprove_reason'] .= ($reason) ? "\n\n" . $reason : '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if ($disapprove_all_posts_in_topic && $topic_information[$topic_id]['topic_posts_unapproved'] == 1)
|
if ($disapprove_all_posts_in_topic && $topic_information[$topic_id]['topic_posts_unapproved'] == 1)
|
||||||
{
|
{
|
||||||
// If there is only 1 post when disapproving the topic,
|
// If there is only 1 post when disapproving the topic,
|
||||||
|
@ -1144,7 +1157,6 @@ class mcp_queue
|
||||||
|
|
||||||
unset($lang_reasons, $post_info, $disapprove_reason, $disapprove_reason_lang);
|
unset($lang_reasons, $post_info, $disapprove_reason, $disapprove_reason_lang);
|
||||||
|
|
||||||
|
|
||||||
if ($num_disapproved_topics)
|
if ($num_disapproved_topics)
|
||||||
{
|
{
|
||||||
$success_msg = ($num_disapproved_topics == 1) ? 'TOPIC' : 'TOPICS';
|
$success_msg = ($num_disapproved_topics == 1) ? 'TOPIC' : 'TOPICS';
|
||||||
|
|
|
@ -144,7 +144,6 @@ class mcp_reports
|
||||||
|
|
||||||
$post_unread = (isset($topic_tracking_info[$post_info['topic_id']]) && $post_info['post_time'] > $topic_tracking_info[$post_info['topic_id']]) ? true : false;
|
$post_unread = (isset($topic_tracking_info[$post_info['topic_id']]) && $post_info['post_time'] > $topic_tracking_info[$post_info['topic_id']]) ? true : false;
|
||||||
|
|
||||||
|
|
||||||
$report['report_text'] = make_clickable(bbcode_nl2br($report['report_text']));
|
$report['report_text'] = make_clickable(bbcode_nl2br($report['report_text']));
|
||||||
|
|
||||||
if ($post_info['post_attachment'] && $auth->acl_get('u_download') && $auth->acl_get('f_download', $post_info['forum_id']))
|
if ($post_info['post_attachment'] && $auth->acl_get('u_download') && $auth->acl_get('f_download', $post_info['forum_id']))
|
||||||
|
@ -187,7 +186,7 @@ class mcp_reports
|
||||||
'S_CLOSE_ACTION' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=reports&mode=report_details&f=' . $post_info['forum_id'] . '&p=' . $post_id),
|
'S_CLOSE_ACTION' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=reports&mode=report_details&f=' . $post_info['forum_id'] . '&p=' . $post_id),
|
||||||
'S_CAN_VIEWIP' => $auth->acl_get('m_info', $post_info['forum_id']),
|
'S_CAN_VIEWIP' => $auth->acl_get('m_info', $post_info['forum_id']),
|
||||||
'S_POST_REPORTED' => $post_info['post_reported'],
|
'S_POST_REPORTED' => $post_info['post_reported'],
|
||||||
'S_POST_UNAPPROVED' => ($post_info['post_visibility'] == ITEM_UNAPPROVED),
|
'S_POST_UNAPPROVED' => $post_info['post_visibility'] == ITEM_UNAPPROVED || $post_info['post_visibility'] == ITEM_REAPPROVE,
|
||||||
'S_POST_LOCKED' => $post_info['post_edit_locked'],
|
'S_POST_LOCKED' => $post_info['post_edit_locked'],
|
||||||
'S_REPORT_CLOSED' => $report['report_closed'],
|
'S_REPORT_CLOSED' => $report['report_closed'],
|
||||||
'S_USER_NOTES' => true,
|
'S_USER_NOTES' => true,
|
||||||
|
@ -578,7 +577,6 @@ function close_report($report_id_list, $mode, $action, $pm = false)
|
||||||
}
|
}
|
||||||
$db->sql_query($sql);
|
$db->sql_query($sql);
|
||||||
|
|
||||||
|
|
||||||
if (sizeof($close_report_posts))
|
if (sizeof($close_report_posts))
|
||||||
{
|
{
|
||||||
if ($pm)
|
if ($pm)
|
||||||
|
|
|
@ -212,7 +212,7 @@ function mcp_topic_view($id, $mode, $action)
|
||||||
parse_attachments($topic_info['forum_id'], $message, $attachments[$row['post_id']], $update_count);
|
parse_attachments($topic_info['forum_id'], $message, $attachments[$row['post_id']], $update_count);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($row['post_visibility'] == ITEM_UNAPPROVED)
|
if ($row['post_visibility'] == ITEM_UNAPPROVED || $row['post_visibility'] == ITEM_REAPPROVE)
|
||||||
{
|
{
|
||||||
$has_unapproved_posts = true;
|
$has_unapproved_posts = true;
|
||||||
}
|
}
|
||||||
|
@ -239,7 +239,7 @@ function mcp_topic_view($id, $mode, $action)
|
||||||
'MINI_POST_IMG' => ($post_unread) ? $user->img('icon_post_target_unread', 'UNREAD_POST') : $user->img('icon_post_target', 'POST'),
|
'MINI_POST_IMG' => ($post_unread) ? $user->img('icon_post_target_unread', 'UNREAD_POST') : $user->img('icon_post_target', 'POST'),
|
||||||
|
|
||||||
'S_POST_REPORTED' => ($row['post_reported'] && $auth->acl_get('m_report', $topic_info['forum_id'])),
|
'S_POST_REPORTED' => ($row['post_reported'] && $auth->acl_get('m_report', $topic_info['forum_id'])),
|
||||||
'S_POST_UNAPPROVED' => ($row['post_visibility'] == ITEM_UNAPPROVED && $auth->acl_get('m_approve', $topic_info['forum_id'])),
|
'S_POST_UNAPPROVED' => (($row['post_visibility'] == ITEM_UNAPPROVED || $row['post_visibility'] == ITEM_REAPPROVE) && $auth->acl_get('m_approve', $topic_info['forum_id'])),
|
||||||
'S_POST_DELETED' => ($row['post_visibility'] == ITEM_DELETED && $auth->acl_get('m_approve', $topic_info['forum_id'])),
|
'S_POST_DELETED' => ($row['post_visibility'] == ITEM_DELETED && $auth->acl_get('m_approve', $topic_info['forum_id'])),
|
||||||
'S_CHECKED' => (($submitted_id_list && !in_array(intval($row['post_id']), $submitted_id_list)) || in_array(intval($row['post_id']), $checked_ids)) ? true : false,
|
'S_CHECKED' => (($submitted_id_list && !in_array(intval($row['post_id']), $submitted_id_list)) || in_array(intval($row['post_id']), $checked_ids)) ? true : false,
|
||||||
'S_HAS_ATTACHMENTS' => (!empty($attachments[$row['post_id']])) ? true : false,
|
'S_HAS_ATTACHMENTS' => (!empty($attachments[$row['post_id']])) ? true : false,
|
||||||
|
@ -462,7 +462,7 @@ function split_topic($action, $topic_id, $to_forum_id, $subject)
|
||||||
while ($row = $db->sql_fetchrow($result))
|
while ($row = $db->sql_fetchrow($result))
|
||||||
{
|
{
|
||||||
// If split from selected post (split_beyond), we split the unapproved items too.
|
// If split from selected post (split_beyond), we split the unapproved items too.
|
||||||
if ($row['post_visibility'] == ITEM_UNAPPROVED && !$auth->acl_get('m_approve', $row['forum_id']))
|
if (($row['post_visibility'] == ITEM_UNAPPROVED || $row['post_visibility'] == ITEM_REAPPROVE) && !$auth->acl_get('m_approve', $row['forum_id']))
|
||||||
{
|
{
|
||||||
// continue;
|
// continue;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1128,7 +1128,7 @@ class parse_message extends bbcode_firstpass
|
||||||
// Maximum message length check. 0 disables this check completely.
|
// Maximum message length check. 0 disables this check completely.
|
||||||
if ((int) $config['max_' . $mode . '_chars'] > 0 && $message_length > (int) $config['max_' . $mode . '_chars'])
|
if ((int) $config['max_' . $mode . '_chars'] > 0 && $message_length > (int) $config['max_' . $mode . '_chars'])
|
||||||
{
|
{
|
||||||
$this->warn_msg[] = $user->lang('TOO_MANY_CHARS_' . strtoupper($mode), $message_length, (int) $config['max_' . $mode . '_chars']);
|
$this->warn_msg[] = $user->lang('CHARS_' . strtoupper($mode) . '_CONTAINS', $message_length) . '<br />' . $user->lang('TOO_MANY_CHARS_LIMIT', (int) $config['max_' . $mode . '_chars']);
|
||||||
return (!$update_this_message) ? $return_message : $this->warn_msg;
|
return (!$update_this_message) ? $return_message : $this->warn_msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1137,7 +1137,7 @@ class parse_message extends bbcode_firstpass
|
||||||
{
|
{
|
||||||
if (!$message_length || $message_length < (int) $config['min_post_chars'])
|
if (!$message_length || $message_length < (int) $config['min_post_chars'])
|
||||||
{
|
{
|
||||||
$this->warn_msg[] = (!$message_length) ? $user->lang['TOO_FEW_CHARS'] : $user->lang('TOO_FEW_CHARS_LIMIT', $message_length, (int) $config['min_post_chars']);
|
$this->warn_msg[] = (!$message_length) ? $user->lang['TOO_FEW_CHARS'] : ($user->lang('CHARS_POST_CONTAINS', $message_length) . '<br />' . $user->lang('TOO_FEW_CHARS_LIMIT', (int) $config['min_post_chars']));
|
||||||
return (!$update_this_message) ? $return_message : $this->warn_msg;
|
return (!$update_this_message) ? $return_message : $this->warn_msg;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,7 @@ class ucp_auth_link_info
|
||||||
'title' => 'UCP_AUTH_LINK',
|
'title' => 'UCP_AUTH_LINK',
|
||||||
'version' => '1.0.0',
|
'version' => '1.0.0',
|
||||||
'modes' => array(
|
'modes' => array(
|
||||||
'auth_link' => array('title' => 'UCP_AUTH_LINK_MANAGE', 'auth' => '', 'cat' => array('UCP_PROFILE')),
|
'auth_link' => array('title' => 'UCP_AUTH_LINK_MANAGE', 'auth' => 'authmethod_oauth', 'cat' => array('UCP_PROFILE')),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -619,7 +619,6 @@ class ucp_main
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$template->assign_vars(array(
|
$template->assign_vars(array(
|
||||||
'L_TITLE' => $user->lang['UCP_MAIN_' . strtoupper($mode)],
|
'L_TITLE' => $user->lang['UCP_MAIN_' . strtoupper($mode)],
|
||||||
|
|
||||||
|
@ -691,7 +690,6 @@ class ucp_main
|
||||||
AND t.topic_id = tw.topic_id
|
AND t.topic_id = tw.topic_id
|
||||||
AND ' . $db->sql_in_set('t.forum_id', $forbidden_forum_ary, true, true),
|
AND ' . $db->sql_in_set('t.forum_id', $forbidden_forum_ary, true, true),
|
||||||
|
|
||||||
|
|
||||||
'ORDER_BY' => 't.topic_last_post_time DESC'
|
'ORDER_BY' => 't.topic_last_post_time DESC'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -172,7 +172,6 @@ class ucp_pm
|
||||||
trigger_error('NO_AUTH_READ_HOLD_MESSAGE');
|
trigger_error('NO_AUTH_READ_HOLD_MESSAGE');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// First Handle Mark actions and moving messages
|
// First Handle Mark actions and moving messages
|
||||||
$submit_mark = (isset($_POST['submit_mark'])) ? true : false;
|
$submit_mark = (isset($_POST['submit_mark'])) ? true : false;
|
||||||
$move_pm = (isset($_POST['move_pm'])) ? true : false;
|
$move_pm = (isset($_POST['move_pm'])) ? true : false;
|
||||||
|
|
|
@ -586,7 +586,6 @@ function compose_pm($id, $mode, $action, $user_folders = array())
|
||||||
);
|
);
|
||||||
$s_hidden_fields .= build_address_field($address_list);
|
$s_hidden_fields .= build_address_field($address_list);
|
||||||
|
|
||||||
|
|
||||||
confirm_box(false, 'SAVE_DRAFT', $s_hidden_fields);
|
confirm_box(false, 'SAVE_DRAFT', $s_hidden_fields);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -748,7 +747,6 @@ function compose_pm($id, $mode, $action, $user_folders = array())
|
||||||
$return_box_url = ($action === 'post' || $action === 'edit') ? $outbox_folder_url : $inbox_folder_url;
|
$return_box_url = ($action === 'post' || $action === 'edit') ? $outbox_folder_url : $inbox_folder_url;
|
||||||
$return_box_lang = ($action === 'post' || $action === 'edit') ? 'PM_OUTBOX' : 'PM_INBOX';
|
$return_box_lang = ($action === 'post' || $action === 'edit') ? 'PM_OUTBOX' : 'PM_INBOX';
|
||||||
|
|
||||||
|
|
||||||
$save_message = ($action === 'edit') ? $user->lang['MESSAGE_EDITED'] : $user->lang['MESSAGE_STORED'];
|
$save_message = ($action === 'edit') ? $user->lang['MESSAGE_EDITED'] : $user->lang['MESSAGE_STORED'];
|
||||||
$message = $save_message . '<br /><br />' . $user->lang('VIEW_PRIVATE_MESSAGE', '<a href="' . $return_message_url . '">', '</a>');
|
$message = $save_message . '<br /><br />' . $user->lang('VIEW_PRIVATE_MESSAGE', '<a href="' . $return_message_url . '">', '</a>');
|
||||||
|
|
||||||
|
@ -1006,7 +1004,6 @@ function compose_pm($id, $mode, $action, $user_folders = array())
|
||||||
// Build hidden address list
|
// Build hidden address list
|
||||||
$s_hidden_address_field = build_address_field($address_list);
|
$s_hidden_address_field = build_address_field($address_list);
|
||||||
|
|
||||||
|
|
||||||
$bbcode_checked = (isset($enable_bbcode)) ? !$enable_bbcode : (($config['allow_bbcode'] && $auth->acl_get('u_pm_bbcode')) ? !$user->optionget('bbcode') : 1);
|
$bbcode_checked = (isset($enable_bbcode)) ? !$enable_bbcode : (($config['allow_bbcode'] && $auth->acl_get('u_pm_bbcode')) ? !$user->optionget('bbcode') : 1);
|
||||||
$smilies_checked = (isset($enable_smilies)) ? !$enable_smilies : (($config['allow_smilies'] && $auth->acl_get('u_pm_smilies')) ? !$user->optionget('smilies') : 1);
|
$smilies_checked = (isset($enable_smilies)) ? !$enable_smilies : (($config['allow_smilies'] && $auth->acl_get('u_pm_smilies')) ? !$user->optionget('smilies') : 1);
|
||||||
$urls_checked = (isset($enable_urls)) ? !$enable_urls : 0;
|
$urls_checked = (isset($enable_urls)) ? !$enable_urls : 0;
|
||||||
|
@ -1229,29 +1226,80 @@ function handle_message_list_actions(&$address_list, &$error, $remove_u, $remove
|
||||||
// Check for disallowed recipients
|
// Check for disallowed recipients
|
||||||
if (!empty($address_list['u']))
|
if (!empty($address_list['u']))
|
||||||
{
|
{
|
||||||
// We need to check their PM status (do they want to receive PM's?)
|
$can_ignore_allow_pm = $auth->acl_gets('a_', 'm_') || $auth->acl_getf_global('m_');
|
||||||
// Only check if not a moderator or admin, since they are allowed to override this user setting
|
|
||||||
if (!$auth->acl_gets('a_', 'm_') && !$auth->acl_getf_global('m_'))
|
// Administrator deactivated users check and we need to check their
|
||||||
{
|
// PM status (do they want to receive PM's?)
|
||||||
$sql = 'SELECT user_id
|
// Only check PM status if not a moderator or admin, since they
|
||||||
|
// are allowed to override this user setting
|
||||||
|
$sql = 'SELECT user_id, user_allow_pm
|
||||||
FROM ' . USERS_TABLE . '
|
FROM ' . USERS_TABLE . '
|
||||||
WHERE ' . $db->sql_in_set('user_id', array_keys($address_list['u'])) . '
|
WHERE ' . $db->sql_in_set('user_id', array_keys($address_list['u'])) . '
|
||||||
AND user_allow_pm = 0';
|
AND (
|
||||||
|
(user_type = ' . USER_INACTIVE . '
|
||||||
|
AND user_inactive_reason = ' . INACTIVE_MANUAL . ')
|
||||||
|
' . ($can_ignore_allow_pm ? '' : ' OR user_allow_pm = 0') . '
|
||||||
|
)';
|
||||||
|
|
||||||
$result = $db->sql_query($sql);
|
$result = $db->sql_query($sql);
|
||||||
|
|
||||||
$removed = false;
|
$removed_no_pm = $removed_no_permission = false;
|
||||||
while ($row = $db->sql_fetchrow($result))
|
while ($row = $db->sql_fetchrow($result))
|
||||||
{
|
{
|
||||||
$removed = true;
|
if (!$can_ignore_allow_pm && !$row['user_allow_pm'])
|
||||||
|
{
|
||||||
|
$removed_no_pm = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$removed_no_permission = true;
|
||||||
|
}
|
||||||
|
|
||||||
unset($address_list['u'][$row['user_id']]);
|
unset($address_list['u'][$row['user_id']]);
|
||||||
}
|
}
|
||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
|
|
||||||
// print a notice about users not being added who do not want to receive pms
|
// print a notice about users not being added who do not want to receive pms
|
||||||
if ($removed)
|
if ($removed_no_pm)
|
||||||
{
|
{
|
||||||
$error[] = $user->lang['PM_USERS_REMOVED_NO_PM'];
|
$error[] = $user->lang['PM_USERS_REMOVED_NO_PM'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// print a notice about users not being added who do not have permission to receive PMs
|
||||||
|
if ($removed_no_permission)
|
||||||
|
{
|
||||||
|
$error[] = $user->lang['PM_USERS_REMOVED_NO_PERMISSION'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!sizeof(array_keys($address_list['u'])))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if users have permission to read PMs
|
||||||
|
$can_read = $auth->acl_get_list(array_keys($address_list['u']), 'u_readpm');
|
||||||
|
$can_read = (empty($can_read) || !isset($can_read[0]['u_readpm'])) ? array() : $can_read[0]['u_readpm'];
|
||||||
|
$cannot_read_list = array_diff(array_keys($address_list['u']), $can_read);
|
||||||
|
if (!empty($cannot_read_list))
|
||||||
|
{
|
||||||
|
foreach ($cannot_read_list as $cannot_read)
|
||||||
|
{
|
||||||
|
unset($address_list['u'][$cannot_read]);
|
||||||
|
}
|
||||||
|
|
||||||
|
$error[] = $user->lang['PM_USERS_REMOVED_NO_PERMISSION'];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if users are banned
|
||||||
|
$banned_user_list = phpbb_get_banned_user_ids(array_keys($address_list['u']), false);
|
||||||
|
if (!empty($banned_user_list))
|
||||||
|
{
|
||||||
|
foreach ($banned_user_list as $banned_user)
|
||||||
|
{
|
||||||
|
unset($address_list['u'][$banned_user]);
|
||||||
|
}
|
||||||
|
|
||||||
|
$error[] = $user->lang['PM_USERS_REMOVED_NO_PERMISSION'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -177,6 +177,18 @@ function view_message($id, $mode, $folder_id, $msg_id, $folder, $message_row)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$u_pm = $u_jabber = '';
|
||||||
|
|
||||||
|
if ($config['allow_privmsg'] && $auth->acl_get('u_sendpm') && ($user_info['user_allow_pm'] || $auth->acl_gets('a_', 'm_') || $auth->acl_getf_global('m_')))
|
||||||
|
{
|
||||||
|
$u_pm = append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=pm&mode=compose&u=' . $author_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($user_info['user_jabber'] && $auth->acl_get('u_sendim'))
|
||||||
|
{
|
||||||
|
$u_jabber = append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=contact&action=jabber&u=' . $author_id);
|
||||||
|
}
|
||||||
|
|
||||||
$msg_data = array(
|
$msg_data = array(
|
||||||
'MESSAGE_AUTHOR_FULL' => get_username_string('full', $author_id, $user_info['username'], $user_info['user_colour'], $user_info['username']),
|
'MESSAGE_AUTHOR_FULL' => get_username_string('full', $author_id, $user_info['username'], $user_info['user_colour'], $user_info['username']),
|
||||||
'MESSAGE_AUTHOR_COLOUR' => get_username_string('colour', $author_id, $user_info['username'], $user_info['user_colour'], $user_info['username']),
|
'MESSAGE_AUTHOR_COLOUR' => get_username_string('colour', $author_id, $user_info['username'], $user_info['user_colour'], $user_info['username']),
|
||||||
|
@ -208,8 +220,8 @@ function view_message($id, $mode, $folder_id, $msg_id, $folder, $message_row)
|
||||||
'EDITED_MESSAGE' => $l_edited_by,
|
'EDITED_MESSAGE' => $l_edited_by,
|
||||||
'MESSAGE_ID' => $message_row['msg_id'],
|
'MESSAGE_ID' => $message_row['msg_id'],
|
||||||
|
|
||||||
'U_PM' => ($config['allow_privmsg'] && $auth->acl_get('u_sendpm') && ($user_info['user_allow_pm'] || $auth->acl_gets('a_', 'm_') || $auth->acl_getf_global('m_'))) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=pm&mode=compose&u=' . $author_id) : '',
|
'U_PM' => $u_pm,
|
||||||
'U_JABBER' => ($user_info['user_jabber'] && $auth->acl_get('u_sendim')) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=contact&action=jabber&u=' . $author_id) : '',
|
'U_JABBER' => $u_jabber,
|
||||||
|
|
||||||
'U_DELETE' => ($auth->acl_get('u_pm_delete')) ? "$url&mode=compose&action=delete&f=$folder_id&p=" . $message_row['msg_id'] : '',
|
'U_DELETE' => ($auth->acl_get('u_pm_delete')) ? "$url&mode=compose&action=delete&f=$folder_id&p=" . $message_row['msg_id'] : '',
|
||||||
'U_EMAIL' => $user_info['email'],
|
'U_EMAIL' => $user_info['email'],
|
||||||
|
@ -248,13 +260,48 @@ function view_message($id, $mode, $folder_id, $msg_id, $folder, $message_row)
|
||||||
* @var array message_row Array with message data
|
* @var array message_row Array with message data
|
||||||
* @var array cp_row Array with senders custom profile field data
|
* @var array cp_row Array with senders custom profile field data
|
||||||
* @var array msg_data Template array with message data
|
* @var array msg_data Template array with message data
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('id', 'mode', 'folder_id', 'msg_id', 'folder', 'message_row', 'cp_row', 'msg_data');
|
$vars = array(
|
||||||
|
'id',
|
||||||
|
'mode',
|
||||||
|
'folder_id',
|
||||||
|
'msg_id',
|
||||||
|
'folder',
|
||||||
|
'message_row',
|
||||||
|
'cp_row',
|
||||||
|
'msg_data',
|
||||||
|
);
|
||||||
extract($phpbb_dispatcher->trigger_event('core.ucp_pm_view_messsage', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.ucp_pm_view_messsage', compact($vars)));
|
||||||
|
|
||||||
$template->assign_vars($msg_data);
|
$template->assign_vars($msg_data);
|
||||||
|
|
||||||
|
$contact_fields = array(
|
||||||
|
array(
|
||||||
|
'ID' => 'pm',
|
||||||
|
'NAME' => $user->lang['PRIVATE_MESSAGE'],
|
||||||
|
'U_CONTACT' => $u_pm,
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'ID' => 'email',
|
||||||
|
'NAME' => $user->lang['SEND_EMAIL'],
|
||||||
|
'U_CONTACT' => $user_info['email'],
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'ID' => 'jabber',
|
||||||
|
'NAME' => $user->lang['JABBER'],
|
||||||
|
'U_CONTACT' => $u_jabber,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
foreach ($contact_fields as $field)
|
||||||
|
{
|
||||||
|
if ($field['U_CONTACT'])
|
||||||
|
{
|
||||||
|
$template->assign_block_vars('contact', $field);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Display the custom profile fields
|
// Display the custom profile fields
|
||||||
if (!empty($cp_row['row']))
|
if (!empty($cp_row['row']))
|
||||||
{
|
{
|
||||||
|
@ -263,6 +310,15 @@ function view_message($id, $mode, $folder_id, $msg_id, $folder, $message_row)
|
||||||
foreach ($cp_row['blockrow'] as $cp_block_row)
|
foreach ($cp_row['blockrow'] as $cp_block_row)
|
||||||
{
|
{
|
||||||
$template->assign_block_vars('custom_fields', $cp_block_row);
|
$template->assign_block_vars('custom_fields', $cp_block_row);
|
||||||
|
|
||||||
|
if ($cp_block_row['S_PROFILE_CONTACT'])
|
||||||
|
{
|
||||||
|
$template->assign_block_vars('contact', array(
|
||||||
|
'ID' => $cp_block_row['PROFILE_FIELD_IDENT'],
|
||||||
|
'NAME' => $cp_block_row['PROFILE_FIELD_NAME'],
|
||||||
|
'U_CONTACT' => $cp_block_row['PROFILE_FIELD_CONTACT'],
|
||||||
|
));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -64,7 +64,7 @@ class ucp_prefs
|
||||||
* @var bool submit Do we display the form only
|
* @var bool submit Do we display the form only
|
||||||
* or did the user press submit
|
* or did the user press submit
|
||||||
* @var array data Array with current ucp options data
|
* @var array data Array with current ucp options data
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('submit', 'data');
|
$vars = array('submit', 'data');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.ucp_prefs_personal_data', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.ucp_prefs_personal_data', compact($vars)));
|
||||||
|
@ -113,7 +113,7 @@ class ucp_prefs
|
||||||
* @event core.ucp_prefs_personal_update_data
|
* @event core.ucp_prefs_personal_update_data
|
||||||
* @var array data Submitted display options data
|
* @var array data Submitted display options data
|
||||||
* @var array sql_ary Display options data we udpate
|
* @var array sql_ary Display options data we udpate
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('data', 'sql_ary');
|
$vars = array('data', 'sql_ary');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.ucp_prefs_personal_update_data', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.ucp_prefs_personal_update_data', compact($vars)));
|
||||||
|
@ -243,7 +243,7 @@ class ucp_prefs
|
||||||
* @var bool submit Do we display the form only
|
* @var bool submit Do we display the form only
|
||||||
* or did the user press submit
|
* or did the user press submit
|
||||||
* @var array data Array with current ucp options data
|
* @var array data Array with current ucp options data
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('submit', 'data');
|
$vars = array('submit', 'data');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.ucp_prefs_view_data', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.ucp_prefs_view_data', compact($vars)));
|
||||||
|
@ -292,7 +292,7 @@ class ucp_prefs
|
||||||
* @event core.ucp_prefs_view_update_data
|
* @event core.ucp_prefs_view_update_data
|
||||||
* @var array data Submitted display options data
|
* @var array data Submitted display options data
|
||||||
* @var array sql_ary Display options data we udpate
|
* @var array sql_ary Display options data we udpate
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('data', 'sql_ary');
|
$vars = array('data', 'sql_ary');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.ucp_prefs_view_update_data', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.ucp_prefs_view_update_data', compact($vars)));
|
||||||
|
@ -394,7 +394,7 @@ class ucp_prefs
|
||||||
* @var bool submit Do we display the form only
|
* @var bool submit Do we display the form only
|
||||||
* or did the user press submit
|
* or did the user press submit
|
||||||
* @var array data Array with current ucp options data
|
* @var array data Array with current ucp options data
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('submit', 'data');
|
$vars = array('submit', 'data');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.ucp_prefs_post_data', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.ucp_prefs_post_data', compact($vars)));
|
||||||
|
@ -418,7 +418,7 @@ class ucp_prefs
|
||||||
* @event core.ucp_prefs_post_update_data
|
* @event core.ucp_prefs_post_update_data
|
||||||
* @var array data Submitted display options data
|
* @var array data Submitted display options data
|
||||||
* @var array sql_ary Display options data we udpate
|
* @var array sql_ary Display options data we udpate
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('data', 'sql_ary');
|
$vars = array('data', 'sql_ary');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.ucp_prefs_post_update_data', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.ucp_prefs_post_update_data', compact($vars)));
|
||||||
|
|
|
@ -64,10 +64,7 @@ class ucp_register
|
||||||
$agreed = false;
|
$agreed = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$user->lang_name = $user_lang = $use_lang;
|
$user_lang = $use_lang;
|
||||||
$user->lang = array();
|
|
||||||
$user->data['user_lang'] = $user->lang_name;
|
|
||||||
$user->add_lang(array('common', 'ucp'));
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -101,7 +98,6 @@ class ucp_register
|
||||||
|
|
||||||
if (!$agreed || ($coppa === false && $config['coppa_enable']) || ($coppa && !$config['coppa_enable']))
|
if (!$agreed || ($coppa === false && $config['coppa_enable']) || ($coppa && !$config['coppa_enable']))
|
||||||
{
|
{
|
||||||
$add_lang = ($change_lang) ? '&change_lang=' . urlencode($change_lang) : '';
|
|
||||||
$add_coppa = ($coppa !== false) ? '&coppa=' . $coppa : '';
|
$add_coppa = ($coppa !== false) ? '&coppa=' . $coppa : '';
|
||||||
|
|
||||||
$s_hidden_fields = array_merge($s_hidden_fields, array(
|
$s_hidden_fields = array_merge($s_hidden_fields, array(
|
||||||
|
@ -147,12 +143,15 @@ class ucp_register
|
||||||
'L_COPPA_NO' => sprintf($user->lang['UCP_COPPA_BEFORE'], $coppa_birthday),
|
'L_COPPA_NO' => sprintf($user->lang['UCP_COPPA_BEFORE'], $coppa_birthday),
|
||||||
'L_COPPA_YES' => sprintf($user->lang['UCP_COPPA_ON_AFTER'], $coppa_birthday),
|
'L_COPPA_YES' => sprintf($user->lang['UCP_COPPA_ON_AFTER'], $coppa_birthday),
|
||||||
|
|
||||||
'U_COPPA_NO' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=register&coppa=0' . $add_lang),
|
'U_COPPA_NO' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=register&coppa=0'),
|
||||||
'U_COPPA_YES' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=register&coppa=1' . $add_lang),
|
'U_COPPA_YES' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=register&coppa=1'),
|
||||||
|
|
||||||
'S_SHOW_COPPA' => true,
|
'S_SHOW_COPPA' => true,
|
||||||
'S_HIDDEN_FIELDS' => build_hidden_fields($s_hidden_fields),
|
'S_HIDDEN_FIELDS' => build_hidden_fields($s_hidden_fields),
|
||||||
'S_UCP_ACTION' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=register' . $add_lang),
|
'S_UCP_ACTION' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=register'),
|
||||||
|
|
||||||
|
'COOKIE_NAME' => $config['cookie_name'],
|
||||||
|
'COOKIE_PATH' => $config['cookie_path'],
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -164,7 +163,10 @@ class ucp_register
|
||||||
'S_SHOW_COPPA' => false,
|
'S_SHOW_COPPA' => false,
|
||||||
'S_REGISTRATION' => true,
|
'S_REGISTRATION' => true,
|
||||||
'S_HIDDEN_FIELDS' => build_hidden_fields($s_hidden_fields),
|
'S_HIDDEN_FIELDS' => build_hidden_fields($s_hidden_fields),
|
||||||
'S_UCP_ACTION' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=register' . $add_lang . $add_coppa),
|
'S_UCP_ACTION' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=register' . $add_coppa),
|
||||||
|
|
||||||
|
'COOKIE_NAME' => $config['cookie_name'],
|
||||||
|
'COOKIE_PATH' => $config['cookie_path'],
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -469,6 +471,9 @@ class ucp_register
|
||||||
'S_COPPA' => $coppa,
|
'S_COPPA' => $coppa,
|
||||||
'S_HIDDEN_FIELDS' => $s_hidden_fields,
|
'S_HIDDEN_FIELDS' => $s_hidden_fields,
|
||||||
'S_UCP_ACTION' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=register'),
|
'S_UCP_ACTION' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=register'),
|
||||||
|
|
||||||
|
'COOKIE_NAME' => $config['cookie_name'],
|
||||||
|
'COOKIE_PATH' => $config['cookie_path'],
|
||||||
));
|
));
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
|
@ -62,7 +62,7 @@ class ucp_zebra
|
||||||
* @event core.ucp_remove_zebra
|
* @event core.ucp_remove_zebra
|
||||||
* @var string mode Zebra type: friends|foes
|
* @var string mode Zebra type: friends|foes
|
||||||
* @var array user_ids User ids we remove
|
* @var array user_ids User ids we remove
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('mode', 'user_ids');
|
$vars = array('mode', 'user_ids');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.ucp_remove_zebra', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.ucp_remove_zebra', compact($vars)));
|
||||||
|
@ -207,7 +207,7 @@ class ucp_zebra
|
||||||
* friends|foes
|
* friends|foes
|
||||||
* @var array sql_ary Array of
|
* @var array sql_ary Array of
|
||||||
* entries we add
|
* entries we add
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('mode', 'sql_ary');
|
$vars = array('mode', 'sql_ary');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.ucp_add_zebra', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.ucp_add_zebra', compact($vars)));
|
||||||
|
|
|
@ -479,7 +479,6 @@ class utf_normalizer
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// STEP 1: Decompose current char
|
// STEP 1: Decompose current char
|
||||||
|
|
||||||
// We have found a character that is either:
|
// We have found a character that is either:
|
||||||
|
@ -527,7 +526,6 @@ class utf_normalizer
|
||||||
$utf_seq = array($utf_char);
|
$utf_seq = array($utf_char);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// STEP 2: Capture the starter
|
// STEP 2: Capture the starter
|
||||||
|
|
||||||
// Check out the combining class of the first character of the UTF sequence
|
// Check out the combining class of the first character of the UTF sequence
|
||||||
|
@ -683,7 +681,6 @@ class utf_normalizer
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// STEP 3: Capture following combining modifiers
|
// STEP 3: Capture following combining modifiers
|
||||||
|
|
||||||
while ($pos < $len)
|
while ($pos < $len)
|
||||||
|
@ -752,7 +749,6 @@ class utf_normalizer
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// STEP 4: Sort and combine
|
// STEP 4: Sort and combine
|
||||||
|
|
||||||
// Here we sort...
|
// Here we sort...
|
||||||
|
@ -991,7 +987,6 @@ class utf_normalizer
|
||||||
$tmp_pos = $last_cc = $sort = $dump = 0;
|
$tmp_pos = $last_cc = $sort = $dump = 0;
|
||||||
$utf_sort = array();
|
$utf_sort = array();
|
||||||
|
|
||||||
|
|
||||||
// Main loop
|
// Main loop
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
|
@ -1047,7 +1042,6 @@ class utf_normalizer
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// STEP 1: Decide what to do with current char
|
// STEP 1: Decide what to do with current char
|
||||||
|
|
||||||
// Now, in that order:
|
// Now, in that order:
|
||||||
|
|
|
@ -63,7 +63,7 @@ if (($mark_notification = $request->variable('mark_notification', 0)))
|
||||||
redirect(append_sid($phpbb_root_path . $redirect));
|
redirect(append_sid($phpbb_root_path . $redirect));
|
||||||
}
|
}
|
||||||
|
|
||||||
redirect($notification->get_url());
|
redirect($notification->get_redirect_url());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -188,7 +188,7 @@ $page_title = $user->lang['INDEX'];
|
||||||
*
|
*
|
||||||
* @event core.index_modify_page_title
|
* @event core.index_modify_page_title
|
||||||
* @var string page_title Title of the index page
|
* @var string page_title Title of the index page
|
||||||
* @since 3.1-A1
|
* @since 3.1.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('page_title');
|
$vars = array('page_title');
|
||||||
extract($phpbb_dispatcher->trigger_event('core.index_modify_page_title', compact($vars)));
|
extract($phpbb_dispatcher->trigger_event('core.index_modify_page_title', compact($vars)));
|
||||||
|
|
|
@ -33,7 +33,7 @@ $dbms = phpbb_convert_30_dbms_to_31($dbms);
|
||||||
$convertor_data = array(
|
$convertor_data = array(
|
||||||
'forum_name' => 'phpBB 2.0.x',
|
'forum_name' => 'phpBB 2.0.x',
|
||||||
'version' => '1.0.3',
|
'version' => '1.0.3',
|
||||||
'phpbb_version' => '3.1.0-b2',
|
'phpbb_version' => '3.1.0-b3',
|
||||||
'author' => '<a href="https://www.phpbb.com/">phpBB Group</a>',
|
'author' => '<a href="https://www.phpbb.com/">phpBB Group</a>',
|
||||||
'dbms' => $dbms,
|
'dbms' => $dbms,
|
||||||
'dbhost' => $dbhost,
|
'dbhost' => $dbhost,
|
||||||
|
|
|
@ -71,7 +71,6 @@ function phpbb_insert_forums()
|
||||||
$prune_enabled = (int) $src_db->sql_fetchfield('config_value');
|
$prune_enabled = (int) $src_db->sql_fetchfield('config_value');
|
||||||
$src_db->sql_freeresult($result);
|
$src_db->sql_freeresult($result);
|
||||||
|
|
||||||
|
|
||||||
// Insert categories
|
// Insert categories
|
||||||
$sql = 'SELECT cat_id, cat_title
|
$sql = 'SELECT cat_id, cat_title
|
||||||
FROM ' . $convert->src_table_prefix . 'categories
|
FROM ' . $convert->src_table_prefix . 'categories
|
||||||
|
@ -571,7 +570,6 @@ function phpbb_convert_authentication($mode)
|
||||||
// What we will do is handling all 2.0.x admins as founder to replicate what is common in 2.0.x.
|
// What we will do is handling all 2.0.x admins as founder to replicate what is common in 2.0.x.
|
||||||
// After conversion the main admin need to make sure he is removing permissions and the founder status if wanted.
|
// After conversion the main admin need to make sure he is removing permissions and the founder status if wanted.
|
||||||
|
|
||||||
|
|
||||||
// Grab user ids of users with user_level of ADMIN
|
// Grab user ids of users with user_level of ADMIN
|
||||||
$sql = "SELECT user_id
|
$sql = "SELECT user_id
|
||||||
FROM {$convert->src_table_prefix}users
|
FROM {$convert->src_table_prefix}users
|
||||||
|
@ -1845,6 +1843,7 @@ function phpbb_create_userconv_table()
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'sqlite':
|
case 'sqlite':
|
||||||
|
case 'sqlite3':
|
||||||
$create_sql = 'CREATE TABLE ' . USERCONV_TABLE . ' (
|
$create_sql = 'CREATE TABLE ' . USERCONV_TABLE . ' (
|
||||||
user_id INTEGER NOT NULL DEFAULT \'0\',
|
user_id INTEGER NOT NULL DEFAULT \'0\',
|
||||||
username_clean varchar(255) NOT NULL DEFAULT \'\'
|
username_clean varchar(255) NOT NULL DEFAULT \'\'
|
||||||
|
|
|
@ -115,7 +115,13 @@ request_var('', 0, false, false, $request); // "dependency injection" for a func
|
||||||
$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);
|
||||||
$orig_version = $config['version'];
|
|
||||||
|
if (!isset($config['version_update_from']))
|
||||||
|
{
|
||||||
|
$config->set('version_update_from', $config['version']);
|
||||||
|
}
|
||||||
|
|
||||||
|
$orig_version = $config['version_update_from'];
|
||||||
|
|
||||||
$user->add_lang(array('common', 'acp/common', 'install', 'migrator'));
|
$user->add_lang(array('common', 'acp/common', 'install', 'migrator'));
|
||||||
|
|
||||||
|
@ -169,6 +175,8 @@ header('Content-type: text/html; charset=UTF-8');
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
define('IN_DB_UPDATE', true);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @todo firebird/mysql update?
|
* @todo firebird/mysql update?
|
||||||
*/
|
*/
|
||||||
|
@ -285,4 +293,6 @@ else
|
||||||
echo $user->lang['COMPLETE_LOGIN_TO_BOARD'];
|
echo $user->lang['COMPLETE_LOGIN_TO_BOARD'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$config->delete('version_update_from');
|
||||||
|
|
||||||
phpbb_end_update($cache, $config);
|
phpbb_end_update($cache, $config);
|
||||||
|
|
|
@ -249,6 +249,7 @@ class install_convert extends module
|
||||||
switch ($db->sql_layer)
|
switch ($db->sql_layer)
|
||||||
{
|
{
|
||||||
case 'sqlite':
|
case 'sqlite':
|
||||||
|
case 'sqlite3':
|
||||||
case 'firebird':
|
case 'firebird':
|
||||||
$db->sql_query('DELETE FROM ' . SESSIONS_KEYS_TABLE);
|
$db->sql_query('DELETE FROM ' . SESSIONS_KEYS_TABLE);
|
||||||
$db->sql_query('DELETE FROM ' . SESSIONS_TABLE);
|
$db->sql_query('DELETE FROM ' . SESSIONS_TABLE);
|
||||||
|
@ -696,6 +697,7 @@ class install_convert extends module
|
||||||
switch ($src_db->sql_layer)
|
switch ($src_db->sql_layer)
|
||||||
{
|
{
|
||||||
case 'sqlite':
|
case 'sqlite':
|
||||||
|
case 'sqlite3':
|
||||||
case 'firebird':
|
case 'firebird':
|
||||||
$convert->src_truncate_statement = 'DELETE FROM ';
|
$convert->src_truncate_statement = 'DELETE FROM ';
|
||||||
break;
|
break;
|
||||||
|
@ -728,6 +730,7 @@ class install_convert extends module
|
||||||
switch ($db->sql_layer)
|
switch ($db->sql_layer)
|
||||||
{
|
{
|
||||||
case 'sqlite':
|
case 'sqlite':
|
||||||
|
case 'sqlite3':
|
||||||
case 'firebird':
|
case 'firebird':
|
||||||
$convert->truncate_statement = 'DELETE FROM ';
|
$convert->truncate_statement = 'DELETE FROM ';
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -217,7 +217,6 @@ class install_install extends module
|
||||||
'S_LEGEND' => false,
|
'S_LEGEND' => false,
|
||||||
));
|
));
|
||||||
|
|
||||||
|
|
||||||
// Check for getimagesize
|
// Check for getimagesize
|
||||||
if (@function_exists('getimagesize'))
|
if (@function_exists('getimagesize'))
|
||||||
{
|
{
|
||||||
|
@ -291,8 +290,8 @@ class install_install extends module
|
||||||
$checks = array(
|
$checks = array(
|
||||||
array('func_overload', '&', MB_OVERLOAD_MAIL|MB_OVERLOAD_STRING),
|
array('func_overload', '&', MB_OVERLOAD_MAIL|MB_OVERLOAD_STRING),
|
||||||
array('encoding_translation', '!=', 0),
|
array('encoding_translation', '!=', 0),
|
||||||
array('http_input', '!=', 'pass'),
|
array('http_input', '!=', array('pass', '')),
|
||||||
array('http_output', '!=', 'pass')
|
array('http_output', '!=', array('pass', ''))
|
||||||
);
|
);
|
||||||
|
|
||||||
foreach ($checks as $mb_checks)
|
foreach ($checks as $mb_checks)
|
||||||
|
@ -313,7 +312,8 @@ class install_install extends module
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case '!=':
|
case '!=':
|
||||||
if ($ini_val != $mb_checks[2])
|
if (!is_array($mb_checks[2]) && $ini_val != $mb_checks[2] ||
|
||||||
|
is_array($mb_checks[2]) && !in_array($ini_val, $mb_checks[2]))
|
||||||
{
|
{
|
||||||
$result = '<strong style="color:red">' . $lang['NO'] . '</strong>';
|
$result = '<strong style="color:red">' . $lang['NO'] . '</strong>';
|
||||||
$passed['mbstring'] = false;
|
$passed['mbstring'] = false;
|
||||||
|
@ -535,7 +535,6 @@ class install_install extends module
|
||||||
$url = (!in_array(false, $passed)) ? $this->p_master->module_url . "?mode=$mode&sub=database&language=$language" : $this->p_master->module_url . "?mode=$mode&sub=requirements&language=$language ";
|
$url = (!in_array(false, $passed)) ? $this->p_master->module_url . "?mode=$mode&sub=database&language=$language" : $this->p_master->module_url . "?mode=$mode&sub=requirements&language=$language ";
|
||||||
$submit = (!in_array(false, $passed)) ? $lang['INSTALL_START'] : $lang['INSTALL_TEST'];
|
$submit = (!in_array(false, $passed)) ? $lang['INSTALL_START'] : $lang['INSTALL_TEST'];
|
||||||
|
|
||||||
|
|
||||||
$template->assign_vars(array(
|
$template->assign_vars(array(
|
||||||
'L_SUBMIT' => $submit,
|
'L_SUBMIT' => $submit,
|
||||||
'S_HIDDEN' => $s_hidden_fields,
|
'S_HIDDEN' => $s_hidden_fields,
|
||||||
|
@ -1649,6 +1648,45 @@ class install_install extends module
|
||||||
$_module->move_module_by($row, 'move_up', 5);
|
$_module->move_module_by($row, 'move_up', 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($module_class == 'mcp')
|
||||||
|
{
|
||||||
|
// Move pm report details module 3 down...
|
||||||
|
$sql = 'SELECT *
|
||||||
|
FROM ' . MODULES_TABLE . "
|
||||||
|
WHERE module_basename = 'mcp_pm_reports'
|
||||||
|
AND module_class = 'mcp'
|
||||||
|
AND module_mode = 'pm_report_details'";
|
||||||
|
$result = $db->sql_query($sql);
|
||||||
|
$row = $db->sql_fetchrow($result);
|
||||||
|
$db->sql_freeresult($result);
|
||||||
|
|
||||||
|
$_module->move_module_by($row, 'move_down', 3);
|
||||||
|
|
||||||
|
// Move closed pm reports module 3 down...
|
||||||
|
$sql = 'SELECT *
|
||||||
|
FROM ' . MODULES_TABLE . "
|
||||||
|
WHERE module_basename = 'mcp_pm_reports'
|
||||||
|
AND module_class = 'mcp'
|
||||||
|
AND module_mode = 'pm_reports_closed'";
|
||||||
|
$result = $db->sql_query($sql);
|
||||||
|
$row = $db->sql_fetchrow($result);
|
||||||
|
$db->sql_freeresult($result);
|
||||||
|
|
||||||
|
$_module->move_module_by($row, 'move_down', 3);
|
||||||
|
|
||||||
|
// Move open pm reports module 3 down...
|
||||||
|
$sql = 'SELECT *
|
||||||
|
FROM ' . MODULES_TABLE . "
|
||||||
|
WHERE module_basename = 'mcp_pm_reports'
|
||||||
|
AND module_class = 'mcp'
|
||||||
|
AND module_mode = 'pm_reports'";
|
||||||
|
$result = $db->sql_query($sql);
|
||||||
|
$row = $db->sql_fetchrow($result);
|
||||||
|
$db->sql_freeresult($result);
|
||||||
|
|
||||||
|
$_module->move_module_by($row, 'move_down', 3);
|
||||||
|
}
|
||||||
|
|
||||||
if ($module_class == 'ucp')
|
if ($module_class == 'ucp')
|
||||||
{
|
{
|
||||||
// Move attachment module 4 down...
|
// Move attachment module 4 down...
|
||||||
|
@ -1674,6 +1712,18 @@ class install_install extends module
|
||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
|
|
||||||
$_module->move_module_by($row, 'move_down', 4);
|
$_module->move_module_by($row, 'move_down', 4);
|
||||||
|
|
||||||
|
// Move OAuth module 5 down...
|
||||||
|
$sql = 'SELECT *
|
||||||
|
FROM ' . MODULES_TABLE . "
|
||||||
|
WHERE module_basename = 'ucp_auth_link'
|
||||||
|
AND module_class = 'ucp'
|
||||||
|
AND module_mode = 'auth_link'";
|
||||||
|
$result = $db->sql_query($sql);
|
||||||
|
$row = $db->sql_fetchrow($result);
|
||||||
|
$db->sql_freeresult($result);
|
||||||
|
|
||||||
|
$_module->move_module_by($row, 'move_down', 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
// And now for the special ones
|
// And now for the special ones
|
||||||
|
|
|
@ -21,6 +21,7 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_cdn', '0');
|
||||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_emailreuse', '0');
|
INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_emailreuse', '0');
|
||||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_password_reset', '1');
|
INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_password_reset', '1');
|
||||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_forum_notify', '1');
|
INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_forum_notify', '1');
|
||||||
|
INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_live_searches', '1');
|
||||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_mass_pm', '1');
|
INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_mass_pm', '1');
|
||||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_name_chars', 'USERNAME_CHARS_ANY');
|
INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_name_chars', 'USERNAME_CHARS_ANY');
|
||||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_namechange', '0');
|
INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_namechange', '0');
|
||||||
|
@ -56,6 +57,7 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('avatar_min_width',
|
||||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('avatar_path', 'images/avatars/upload');
|
INSERT INTO phpbb_config (config_name, config_value) VALUES ('avatar_path', 'images/avatars/upload');
|
||||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('avatar_salt', 'phpbb_avatar');
|
INSERT INTO phpbb_config (config_name, config_value) VALUES ('avatar_salt', 'phpbb_avatar');
|
||||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('board_contact', 'contact@yourdomain.tld');
|
INSERT INTO phpbb_config (config_name, config_value) VALUES ('board_contact', 'contact@yourdomain.tld');
|
||||||
|
INSERT INTO phpbb_config (config_name, config_value) VALUES ('board_contact_name', '');
|
||||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('board_disable', '0');
|
INSERT INTO phpbb_config (config_name, config_value) VALUES ('board_disable', '0');
|
||||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('board_disable_msg', '');
|
INSERT INTO phpbb_config (config_name, config_value) VALUES ('board_disable_msg', '');
|
||||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('board_email', 'address@yourdomain.tld');
|
INSERT INTO phpbb_config (config_name, config_value) VALUES ('board_email', 'address@yourdomain.tld');
|
||||||
|
@ -269,7 +271,7 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('tpl_allow_php', '0
|
||||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('upload_icons_path', 'images/upload_icons');
|
INSERT INTO phpbb_config (config_name, config_value) VALUES ('upload_icons_path', 'images/upload_icons');
|
||||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('upload_path', 'files');
|
INSERT INTO phpbb_config (config_name, config_value) VALUES ('upload_path', 'files');
|
||||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('use_system_cron', '0');
|
INSERT INTO phpbb_config (config_name, config_value) VALUES ('use_system_cron', '0');
|
||||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('version', '3.1.0-b3-dev');
|
INSERT INTO phpbb_config (config_name, config_value) VALUES ('version', '3.1.0-b4-dev');
|
||||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('warnings_expire_days', '90');
|
INSERT INTO phpbb_config (config_name, config_value) VALUES ('warnings_expire_days', '90');
|
||||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('warnings_gc', '14400');
|
INSERT INTO phpbb_config (config_name, config_value) VALUES ('warnings_gc', '14400');
|
||||||
|
|
||||||
|
|
|
@ -107,6 +107,9 @@ $lang = array_merge($lang, array(
|
||||||
'EXT_GROUP_REAL_MEDIA' => 'Real Media',
|
'EXT_GROUP_REAL_MEDIA' => 'Real Media',
|
||||||
'EXT_GROUP_WINDOWS_MEDIA' => 'Windows Media',
|
'EXT_GROUP_WINDOWS_MEDIA' => 'Windows Media',
|
||||||
|
|
||||||
|
'FILES_GONE' => 'Some of the attachments you selected for deletion do not exist. They may have been already deleted. Attachments that did exist were deleted.',
|
||||||
|
'FILES_STATS_WRONG' => 'Your file statistics are likely inaccurate and need to be resynchronised. Actual values: number of attachments = %1$d, total size of attachments = %2$s.<br />Click %3$shere%4$s to resynchronise them.',
|
||||||
|
|
||||||
'GO_TO_EXTENSIONS' => 'Go to extension management screen',
|
'GO_TO_EXTENSIONS' => 'Go to extension management screen',
|
||||||
'GROUP_NAME' => 'Group name',
|
'GROUP_NAME' => 'Group name',
|
||||||
|
|
||||||
|
@ -130,6 +133,7 @@ $lang = array_merge($lang, array(
|
||||||
'NOT_ALLOWED_IN_PM' => 'Only allowed in posts',
|
'NOT_ALLOWED_IN_PM' => 'Only allowed in posts',
|
||||||
'NOT_ALLOWED_IN_PM_POST' => 'Not allowed',
|
'NOT_ALLOWED_IN_PM_POST' => 'Not allowed',
|
||||||
'NOT_ASSIGNED' => 'Not assigned',
|
'NOT_ASSIGNED' => 'Not assigned',
|
||||||
|
'NO_ATTACHMENTS' => 'No attachments found for this period.',
|
||||||
'NO_EXT_GROUP' => 'None',
|
'NO_EXT_GROUP' => 'None',
|
||||||
'NO_EXT_GROUP_NAME' => 'No group name entered',
|
'NO_EXT_GROUP_NAME' => 'No group name entered',
|
||||||
'NO_EXT_GROUP_SPECIFIED' => 'No extension group specified.',
|
'NO_EXT_GROUP_SPECIFIED' => 'No extension group specified.',
|
||||||
|
@ -145,6 +149,7 @@ $lang = array_merge($lang, array(
|
||||||
|
|
||||||
'REMOVE_ALLOWED_IPS' => 'Remove or un-exclude <em>allowed</em> IPs/hostnames',
|
'REMOVE_ALLOWED_IPS' => 'Remove or un-exclude <em>allowed</em> IPs/hostnames',
|
||||||
'REMOVE_DISALLOWED_IPS' => 'Remove or un-exclude <em>disallowed</em> IPs/hostnames',
|
'REMOVE_DISALLOWED_IPS' => 'Remove or un-exclude <em>disallowed</em> IPs/hostnames',
|
||||||
|
'RESYNC_FILES_STATS_CONFIRM' => 'Are you sure you wish to resynchronise file statistics?',
|
||||||
|
|
||||||
'SEARCH_IMAGICK' => 'Search for Imagemagick',
|
'SEARCH_IMAGICK' => 'Search for Imagemagick',
|
||||||
'SECURE_ALLOW_DENY' => 'Allow/Deny list',
|
'SECURE_ALLOW_DENY' => 'Allow/Deny list',
|
||||||
|
|
|
@ -111,7 +111,7 @@ $lang = array_merge($lang, array(
|
||||||
'AVATAR_GALLERY_PATH' => 'Avatar gallery path',
|
'AVATAR_GALLERY_PATH' => 'Avatar gallery path',
|
||||||
'AVATAR_GALLERY_PATH_EXPLAIN' => 'Path under your phpBB root directory for pre-loaded images, e.g. <samp>images/avatars/gallery</samp>.',
|
'AVATAR_GALLERY_PATH_EXPLAIN' => 'Path under your phpBB root directory for pre-loaded images, e.g. <samp>images/avatars/gallery</samp>.',
|
||||||
'AVATAR_STORAGE_PATH' => 'Avatar storage path',
|
'AVATAR_STORAGE_PATH' => 'Avatar storage path',
|
||||||
'AVATAR_STORAGE_PATH_EXPLAIN' => 'Path under your phpBB root directory, e.g. <samp>images/avatars/upload</samp>.',
|
'AVATAR_STORAGE_PATH_EXPLAIN' => 'Path under your phpBB root directory, e.g. <samp>images/avatars/upload</samp>.<br />Avatar uploading <strong>will not be available</strong> if this path is not writable.',
|
||||||
'MAX_AVATAR_SIZE' => 'Maximum avatar dimensions',
|
'MAX_AVATAR_SIZE' => 'Maximum avatar dimensions',
|
||||||
'MAX_AVATAR_SIZE_EXPLAIN' => 'Width x Height in pixels.',
|
'MAX_AVATAR_SIZE_EXPLAIN' => 'Width x Height in pixels.',
|
||||||
'MAX_FILESIZE' => 'Maximum avatar file size',
|
'MAX_FILESIZE' => 'Maximum avatar file size',
|
||||||
|
@ -356,6 +356,8 @@ $lang = array_merge($lang, array(
|
||||||
|
|
||||||
'ALLOW_CDN' => 'Allow usage of third party content delivery networks',
|
'ALLOW_CDN' => 'Allow usage of third party content delivery networks',
|
||||||
'ALLOW_CDN_EXPLAIN' => 'If this setting is enabled, some files will be served from external third party servers instead of your server. This reduces the network bandwidth required by your server, but may present a privacy issue for some board administrators. In a default phpBB installation, this includes loading “jQuery” and the font “Open Sans” from Google’s content delivery network.',
|
'ALLOW_CDN_EXPLAIN' => 'If this setting is enabled, some files will be served from external third party servers instead of your server. This reduces the network bandwidth required by your server, but may present a privacy issue for some board administrators. In a default phpBB installation, this includes loading “jQuery” and the font “Open Sans” from Google’s content delivery network.',
|
||||||
|
'ALLOW_LIVE_SEARCHES' => 'Allow live searches',
|
||||||
|
'ALLOW_LIVE_SEARCHES_EXPLAIN' => 'If this setting is enabled, users are provided with keyword suggestions as they type in certain fields throughout the board.',
|
||||||
'CUSTOM_PROFILE_FIELDS' => 'Custom profile fields',
|
'CUSTOM_PROFILE_FIELDS' => 'Custom profile fields',
|
||||||
'LIMIT_LOAD' => 'Limit system load',
|
'LIMIT_LOAD' => 'Limit system load',
|
||||||
'LIMIT_LOAD_EXPLAIN' => 'If the system’s 1-minute load average exceeds this value the board will automatically go offline. A value of 1.0 equals ~100% utilisation of one processor. This only functions on UNIX based servers and where this information is accessible. The value here resets itself to 0 if phpBB was unable to get the load limit.',
|
'LIMIT_LOAD_EXPLAIN' => 'If the system’s 1-minute load average exceeds this value the board will automatically go offline. A value of 1.0 equals ~100% utilisation of one processor. This only functions on UNIX based servers and where this information is accessible. The value here resets itself to 0 if phpBB was unable to get the load limit.',
|
||||||
|
@ -524,6 +526,8 @@ $lang = array_merge($lang, array(
|
||||||
'BOARD_HIDE_EMAILS_EXPLAIN' => 'This function keeps email addresses completely private.',
|
'BOARD_HIDE_EMAILS_EXPLAIN' => 'This function keeps email addresses completely private.',
|
||||||
'CONTACT_EMAIL' => 'Contact email address',
|
'CONTACT_EMAIL' => 'Contact email address',
|
||||||
'CONTACT_EMAIL_EXPLAIN' => 'This address will be used whenever a specific contact point is needed, e.g. spam, error output, etc. It will always be used as the <samp>From</samp> and <samp>Reply-To</samp> address in emails.',
|
'CONTACT_EMAIL_EXPLAIN' => 'This address will be used whenever a specific contact point is needed, e.g. spam, error output, etc. It will always be used as the <samp>From</samp> and <samp>Reply-To</samp> address in emails.',
|
||||||
|
'CONTACT_EMAIL_NAME' => 'Contact name',
|
||||||
|
'CONTACT_EMAIL_NAME_EXPLAIN' => 'This is the contact name that e-mail recipients will see. If you don’t want to have a contact name, leave this field empty.',
|
||||||
'EMAIL_FUNCTION_NAME' => 'Email function name',
|
'EMAIL_FUNCTION_NAME' => 'Email function name',
|
||||||
'EMAIL_FUNCTION_NAME_EXPLAIN' => 'The email function used to send mails through PHP.',
|
'EMAIL_FUNCTION_NAME_EXPLAIN' => 'The email function used to send mails through PHP.',
|
||||||
'EMAIL_PACKAGE_SIZE' => 'Email package size',
|
'EMAIL_PACKAGE_SIZE' => 'Email package size',
|
||||||
|
|
|
@ -85,7 +85,6 @@ $lang = array_merge($lang, array(
|
||||||
'ACP_EXTENSION_MANAGEMENT' => 'Extension management',
|
'ACP_EXTENSION_MANAGEMENT' => 'Extension management',
|
||||||
'ACP_EXTENSIONS' => 'Manage extensions',
|
'ACP_EXTENSIONS' => 'Manage extensions',
|
||||||
|
|
||||||
|
|
||||||
'ACP_FORUM_BASED_PERMISSIONS' => 'Forum based permissions',
|
'ACP_FORUM_BASED_PERMISSIONS' => 'Forum based permissions',
|
||||||
'ACP_FORUM_LOGS' => 'Forum logs',
|
'ACP_FORUM_LOGS' => 'Forum logs',
|
||||||
'ACP_FORUM_MANAGEMENT' => 'Forum management',
|
'ACP_FORUM_MANAGEMENT' => 'Forum management',
|
||||||
|
@ -241,9 +240,6 @@ $lang = array_merge($lang, array(
|
||||||
'EXPORT_DOWNLOAD' => 'Download',
|
'EXPORT_DOWNLOAD' => 'Download',
|
||||||
'EXPORT_STORE' => 'Store',
|
'EXPORT_STORE' => 'Store',
|
||||||
|
|
||||||
'FILES_GONE' => 'Some of the attachments you selected for deletion do not exist. They may have been already deleted. Attachments that did exist were deleted.',
|
|
||||||
'FILES_STATS_WRONG' => 'Your files statistics are probably inaccurate and need to be resynchronised. Actual values: number of attachments = %1$d, total size of attachments = %2$s.',
|
|
||||||
|
|
||||||
'GENERAL_OPTIONS' => 'General options',
|
'GENERAL_OPTIONS' => 'General options',
|
||||||
'GENERAL_SETTINGS' => 'General settings',
|
'GENERAL_SETTINGS' => 'General settings',
|
||||||
'GLOBAL_MASK' => 'Global permission mask',
|
'GLOBAL_MASK' => 'Global permission mask',
|
||||||
|
@ -286,8 +282,6 @@ $lang = array_merge($lang, array(
|
||||||
|
|
||||||
'REMIND' => 'Remind',
|
'REMIND' => 'Remind',
|
||||||
'RESYNC' => 'Resynchronise',
|
'RESYNC' => 'Resynchronise',
|
||||||
'RESYNC_FILES_STATS' => 'Resynchronise files statistics',
|
|
||||||
'RESYNC_FILES_STATS_EXPLAIN' => 'Recalculates the total number and size of files attached to posts and private messages.',
|
|
||||||
|
|
||||||
'SELECT_ANONYMOUS' => 'Select anonymous user',
|
'SELECT_ANONYMOUS' => 'Select anonymous user',
|
||||||
'SELECT_OPTION' => 'Select option',
|
'SELECT_OPTION' => 'Select option',
|
||||||
|
@ -388,7 +382,6 @@ $lang = array_merge($lang, array(
|
||||||
'RESET_ONLINE' => 'Reset most users ever online',
|
'RESET_ONLINE' => 'Reset most users ever online',
|
||||||
'RESET_ONLINE_CONFIRM' => 'Are you sure you wish to reset the most users ever online counter?',
|
'RESET_ONLINE_CONFIRM' => 'Are you sure you wish to reset the most users ever online counter?',
|
||||||
'RESET_ONLINE_SUCCESS' => 'Most users ever online reset',
|
'RESET_ONLINE_SUCCESS' => 'Most users ever online reset',
|
||||||
'RESYNC_FILES_STATS_CONFIRM' => 'Are you sure you wish to resynchronise files statistics?',
|
|
||||||
'RESYNC_POSTCOUNTS' => 'Resynchronise post counts',
|
'RESYNC_POSTCOUNTS' => 'Resynchronise post counts',
|
||||||
'RESYNC_POSTCOUNTS_EXPLAIN' => 'Only existing posts will be taken into consideration. Pruned posts will not be counted.',
|
'RESYNC_POSTCOUNTS_EXPLAIN' => 'Only existing posts will be taken into consideration. Pruned posts will not be counted.',
|
||||||
'RESYNC_POSTCOUNTS_CONFIRM' => 'Are you sure you wish to resynchronise post counts?',
|
'RESYNC_POSTCOUNTS_CONFIRM' => 'Are you sure you wish to resynchronise post counts?',
|
||||||
|
@ -557,7 +550,7 @@ $lang = array_merge($lang, array(
|
||||||
'LOG_PM_REPORT_CLOSED' => '<strong>Closed PM report</strong><br />» %s',
|
'LOG_PM_REPORT_CLOSED' => '<strong>Closed PM report</strong><br />» %s',
|
||||||
'LOG_PM_REPORT_DELETED' => '<strong>Deleted PM report</strong><br />» %s',
|
'LOG_PM_REPORT_DELETED' => '<strong>Deleted PM report</strong><br />» %s',
|
||||||
'LOG_POST_APPROVED' => '<strong>Approved post</strong><br />» %s',
|
'LOG_POST_APPROVED' => '<strong>Approved post</strong><br />» %s',
|
||||||
'LOG_POST_DISAPPROVED' => '<strong>Disapproved post “%1$s” with the following reason</strong><br />» %2$s',
|
'LOG_POST_DISAPPROVED' => '<strong>Disapproved post “%1$s” written by “%3$s” for the following reason</strong><br />» %2$s',
|
||||||
'LOG_POST_EDITED' => '<strong>Edited post “%1$s” written by</strong><br />» %2$s',
|
'LOG_POST_EDITED' => '<strong>Edited post “%1$s” written by</strong><br />» %2$s',
|
||||||
'LOG_POST_RESTORED' => '<strong>Restored post</strong><br />» %s',
|
'LOG_POST_RESTORED' => '<strong>Restored post</strong><br />» %s',
|
||||||
'LOG_REPORT_CLOSED' => '<strong>Closed report</strong><br />» %s',
|
'LOG_REPORT_CLOSED' => '<strong>Closed report</strong><br />» %s',
|
||||||
|
@ -570,7 +563,7 @@ $lang = array_merge($lang, array(
|
||||||
|
|
||||||
'LOG_TOPIC_APPROVED' => '<strong>Approved topic</strong><br />» %s',
|
'LOG_TOPIC_APPROVED' => '<strong>Approved topic</strong><br />» %s',
|
||||||
'LOG_TOPIC_RESTORED' => '<strong>Restored topic</strong><br />» %s',
|
'LOG_TOPIC_RESTORED' => '<strong>Restored topic</strong><br />» %s',
|
||||||
'LOG_TOPIC_DISAPPROVED' => '<strong>Disapproved topic “%1$s” with the following reason</strong><br />%2$s',
|
'LOG_TOPIC_DISAPPROVED' => '<strong>Disapproved topic “%1$s” written by “%3$s” for the following reason</strong><br />» %2$s',
|
||||||
'LOG_TOPIC_RESYNC' => '<strong>Resynchronised topic counters</strong><br />» %s',
|
'LOG_TOPIC_RESYNC' => '<strong>Resynchronised topic counters</strong><br />» %s',
|
||||||
'LOG_TOPIC_TYPE_CHANGED' => '<strong>Changed topic type</strong><br />» %s',
|
'LOG_TOPIC_TYPE_CHANGED' => '<strong>Changed topic type</strong><br />» %s',
|
||||||
'LOG_UNLOCK' => '<strong>Unlocked topic</strong><br />» %s',
|
'LOG_UNLOCK' => '<strong>Unlocked topic</strong><br />» %s',
|
||||||
|
@ -684,7 +677,6 @@ $lang = array_merge($lang, array(
|
||||||
'LOG_PURGE_CACHE' => '<strong>Purged cache</strong>',
|
'LOG_PURGE_CACHE' => '<strong>Purged cache</strong>',
|
||||||
'LOG_PURGE_SESSIONS' => '<strong>Purged sessions</strong>',
|
'LOG_PURGE_SESSIONS' => '<strong>Purged sessions</strong>',
|
||||||
|
|
||||||
|
|
||||||
'LOG_RANK_ADDED' => '<strong>Added new rank</strong><br />» %s',
|
'LOG_RANK_ADDED' => '<strong>Added new rank</strong><br />» %s',
|
||||||
'LOG_RANK_REMOVED' => '<strong>Removed rank</strong><br />» %s',
|
'LOG_RANK_REMOVED' => '<strong>Removed rank</strong><br />» %s',
|
||||||
'LOG_RANK_UPDATED' => '<strong>Updated rank</strong><br />» %s',
|
'LOG_RANK_UPDATED' => '<strong>Updated rank</strong><br />» %s',
|
||||||
|
@ -696,7 +688,7 @@ $lang = array_merge($lang, array(
|
||||||
'LOG_REFERER_INVALID' => '<strong>Referer validation failed</strong><br />»Referer was “<em>%1$s</em>”. The request was rejected and the session killed.',
|
'LOG_REFERER_INVALID' => '<strong>Referer validation failed</strong><br />»Referer was “<em>%1$s</em>”. The request was rejected and the session killed.',
|
||||||
'LOG_RESET_DATE' => '<strong>Board start date reset</strong>',
|
'LOG_RESET_DATE' => '<strong>Board start date reset</strong>',
|
||||||
'LOG_RESET_ONLINE' => '<strong>Most users online reset</strong>',
|
'LOG_RESET_ONLINE' => '<strong>Most users online reset</strong>',
|
||||||
'LOG_RESYNC_FILES_STATS' => '<strong>Files statistics resynchronised</strong>',
|
'LOG_RESYNC_FILES_STATS' => '<strong>File statistics resynchronised</strong>',
|
||||||
'LOG_RESYNC_POSTCOUNTS' => '<strong>User post counts resynchronised</strong>',
|
'LOG_RESYNC_POSTCOUNTS' => '<strong>User post counts resynchronised</strong>',
|
||||||
'LOG_RESYNC_POST_MARKING' => '<strong>Dotted topics resynchronised</strong>',
|
'LOG_RESYNC_POST_MARKING' => '<strong>Dotted topics resynchronised</strong>',
|
||||||
'LOG_RESYNC_STATS' => '<strong>Post, topic and user statistics resynchronised</strong>',
|
'LOG_RESYNC_STATS' => '<strong>Post, topic and user statistics resynchronised</strong>',
|
||||||
|
|
|
@ -33,7 +33,6 @@ if (empty($lang) || !is_array($lang))
|
||||||
// equally where a string contains only two placeholders which are used to wrap text
|
// equally where a string contains only two placeholders which are used to wrap text
|
||||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||||
|
|
||||||
|
|
||||||
$lang = array_merge($lang, array(
|
$lang = array_merge($lang, array(
|
||||||
'EXTENSION' => 'Extension',
|
'EXTENSION' => 'Extension',
|
||||||
'EXTENSIONS' => 'Extensions',
|
'EXTENSIONS' => 'Extensions',
|
||||||
|
|
|
@ -182,7 +182,6 @@ $lang = array_merge($lang, array(
|
||||||
'ROLE_USER_STANDARD' => 'Standard Features',
|
'ROLE_USER_STANDARD' => 'Standard Features',
|
||||||
'ROLE_USER_NEW_MEMBER' => 'Newly Registered User Features',
|
'ROLE_USER_NEW_MEMBER' => 'Newly Registered User Features',
|
||||||
|
|
||||||
|
|
||||||
'ROLE_DESCRIPTION_ADMIN_FORUM' => 'Can access the forum management and forum permission settings.',
|
'ROLE_DESCRIPTION_ADMIN_FORUM' => 'Can access the forum management and forum permission settings.',
|
||||||
'ROLE_DESCRIPTION_ADMIN_FULL' => 'Has access to all administrative functions of this board.<br />Not recommended.',
|
'ROLE_DESCRIPTION_ADMIN_FULL' => 'Has access to all administrative functions of this board.<br />Not recommended.',
|
||||||
'ROLE_DESCRIPTION_ADMIN_STANDARD' => 'Has access to most administrative features but is not allowed to use server or system related tools.',
|
'ROLE_DESCRIPTION_ADMIN_STANDARD' => 'Has access to most administrative features but is not allowed to use server or system related tools.',
|
||||||
|
|
|
@ -85,8 +85,8 @@ $lang = array_merge($lang, array(
|
||||||
'URL' => 'A valid URL using any protocol (http, ftp, etc… cannot be used for javascript exploits). If none is given, “http://” is prefixed to the string.',
|
'URL' => 'A valid URL using any protocol (http, ftp, etc… cannot be used for javascript exploits). If none is given, “http://” is prefixed to the string.',
|
||||||
'LOCAL_URL' => 'A local URL. The URL must be relative to the topic page and cannot contain a server name or protocol, as links are prefixed with “%s”',
|
'LOCAL_URL' => 'A local URL. The URL must be relative to the topic page and cannot contain a server name or protocol, as links are prefixed with “%s”',
|
||||||
'RELATIVE_URL' => 'A relative URL. You can use this to match parts of a URL, but be careful: a full URL is a valid relative URL. When you want to use relative URLs of your board, use the LOCAL_URL token.',
|
'RELATIVE_URL' => 'A relative URL. You can use this to match parts of a URL, but be careful: a full URL is a valid relative URL. When you want to use relative URLs of your board, use the LOCAL_URL token.',
|
||||||
'COLOR' => 'A HTML colour, can be either in the numeric form <samp>#FF1234</samp> or a <a href="http://www.w3.org/TR/CSS21/syndata.html#value-def-color">CSS colour keyword</a> such as <samp>fuchsia</samp> or <samp>InactiveBorder</samp>'
|
'COLOR' => 'A HTML colour, can be either in the numeric form <samp>#FF1234</samp> or a <a href="http://www.w3.org/TR/CSS21/syndata.html#value-def-color">CSS colour keyword</a> such as <samp>fuchsia</samp> or <samp>InactiveBorder</samp>',
|
||||||
)
|
),
|
||||||
));
|
));
|
||||||
|
|
||||||
// Smilies and topic icons
|
// Smilies and topic icons
|
||||||
|
@ -109,8 +109,6 @@ $lang = array_merge($lang, array(
|
||||||
'DISPLAY_POSTING' => 'On posting page',
|
'DISPLAY_POSTING' => 'On posting page',
|
||||||
'DISPLAY_POSTING_NO' => 'Not on posting page',
|
'DISPLAY_POSTING_NO' => 'Not on posting page',
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
'EDIT_ICONS' => 'Edit icons',
|
'EDIT_ICONS' => 'Edit icons',
|
||||||
'EDIT_SMILIES' => 'Edit smilies',
|
'EDIT_SMILIES' => 'Edit smilies',
|
||||||
'EMOTION' => 'Emotion',
|
'EMOTION' => 'Emotion',
|
||||||
|
|
|
@ -68,8 +68,8 @@ $lang = array_merge($lang, array(
|
||||||
'DISPLAY_AT_REGISTER_EXPLAIN' => 'If this option is enabled, the field will be displayed on registration.',
|
'DISPLAY_AT_REGISTER_EXPLAIN' => 'If this option is enabled, the field will be displayed on registration.',
|
||||||
'DISPLAY_ON_MEMBERLIST' => 'Display on memberlist screen',
|
'DISPLAY_ON_MEMBERLIST' => 'Display on memberlist screen',
|
||||||
'DISPLAY_ON_MEMBERLIST_EXPLAIN' => 'If this option is enabled, the field will be displayed in the user rows on the memberlist screen.',
|
'DISPLAY_ON_MEMBERLIST_EXPLAIN' => 'If this option is enabled, the field will be displayed in the user rows on the memberlist screen.',
|
||||||
'DISPLAY_ON_PM' => 'Display on view pm screen',
|
'DISPLAY_ON_PM' => 'Display on view private message screen',
|
||||||
'DISPLAY_ON_PM_EXPLAIN' => 'If this option is enabled, the field will be displayed in the mini-profile on the pm screen.',
|
'DISPLAY_ON_PM_EXPLAIN' => 'If this option is enabled, the field will be displayed in the mini-profile on the private message screen.',
|
||||||
'DISPLAY_ON_VT' => 'Display on viewtopic screen',
|
'DISPLAY_ON_VT' => 'Display on viewtopic screen',
|
||||||
'DISPLAY_ON_VT_EXPLAIN' => 'If this option is enabled, the field will be displayed in the mini-profile on the topic screen.',
|
'DISPLAY_ON_VT_EXPLAIN' => 'If this option is enabled, the field will be displayed in the mini-profile on the topic screen.',
|
||||||
'DISPLAY_PROFILE_FIELD' => 'Publicly display profile field',
|
'DISPLAY_PROFILE_FIELD' => 'Publicly display profile field',
|
||||||
|
|
|
@ -41,9 +41,6 @@ if (empty($lang) || !is_array($lang))
|
||||||
$lang = array_merge($lang, array(
|
$lang = array_merge($lang, array(
|
||||||
'CONTROLLER_ARGUMENT_VALUE_MISSING' => 'Missing value for argument #%1$s: <strong>%3$s</strong> in class <strong>%2$s</strong>',
|
'CONTROLLER_ARGUMENT_VALUE_MISSING' => 'Missing value for argument #%1$s: <strong>%3$s</strong> in class <strong>%2$s</strong>',
|
||||||
'CONTROLLER_NOT_SPECIFIED' => 'No controller has been specified.',
|
'CONTROLLER_NOT_SPECIFIED' => 'No controller has been specified.',
|
||||||
'CONTROLLER_NOT_FOUND' => 'The requested page could not be found.',
|
|
||||||
'CONTROLLER_METHOD_NOT_SPECIFIED' => 'No method was specified for the controller.',
|
'CONTROLLER_METHOD_NOT_SPECIFIED' => 'No method was specified for the controller.',
|
||||||
'CONTROLLER_SERVICE_NOT_GIVEN' => 'The controller "<strong>%s</strong>" must have a service specified in ./config/routing.yml.',
|
|
||||||
'CONTROLLER_SERVICE_UNDEFINED' => 'The service for controller "<strong>%s</strong>" is not defined in ./config/services.yml.',
|
'CONTROLLER_SERVICE_UNDEFINED' => 'The service for controller "<strong>%s</strong>" is not defined in ./config/services.yml.',
|
||||||
'CONTROLLER_RETURN_TYPE_INVALID' => 'The controller object <strong>%s</strong> must return a Symfony\Component\HttpFoundation\Response object.',
|
|
||||||
));
|
));
|
||||||
|
|
|
@ -167,6 +167,7 @@ $lang = array_merge($lang, array(
|
||||||
'CONGRATULATIONS' => 'Congratulations to',
|
'CONGRATULATIONS' => 'Congratulations to',
|
||||||
'CONNECTION_FAILED' => 'Connection failed.',
|
'CONNECTION_FAILED' => 'Connection failed.',
|
||||||
'CONNECTION_SUCCESS' => 'Connection was successful!',
|
'CONNECTION_SUCCESS' => 'Connection was successful!',
|
||||||
|
'CONTACT_USER' => 'Contact',
|
||||||
'COOKIES_DELETED' => 'All board cookies successfully deleted.',
|
'COOKIES_DELETED' => 'All board cookies successfully deleted.',
|
||||||
'CURRENT_TIME' => 'It is currently %s',
|
'CURRENT_TIME' => 'It is currently %s',
|
||||||
|
|
||||||
|
@ -217,8 +218,6 @@ $lang = array_merge($lang, array(
|
||||||
'ERROR' => 'Error',
|
'ERROR' => 'Error',
|
||||||
'EXPAND_VIEW' => 'Expand view',
|
'EXPAND_VIEW' => 'Expand view',
|
||||||
'EXTENSION' => 'Extension',
|
'EXTENSION' => 'Extension',
|
||||||
'EXTENSION_CONTROLLER_MISSING' => 'The extension <strong>%s</strong> is missing a controller class and cannot be accessed through the front-end.',
|
|
||||||
'EXTENSION_CLASS_WRONG_TYPE' => 'The extension controller class <strong>%s</strong> is not an instance of the phpbb_extension_controller_interface.',
|
|
||||||
'EXTENSION_DISABLED' => 'The extension <strong>%s</strong> is not enabled.',
|
'EXTENSION_DISABLED' => 'The extension <strong>%s</strong> is not enabled.',
|
||||||
'EXTENSION_DISABLED_AFTER_POSTING' => 'The extension <strong>%s</strong> has been deactivated and can no longer be displayed.',
|
'EXTENSION_DISABLED_AFTER_POSTING' => 'The extension <strong>%s</strong> has been deactivated and can no longer be displayed.',
|
||||||
'EXTENSION_DOES_NOT_EXIST' => 'The extension <strong>%s</strong> does not exist.',
|
'EXTENSION_DOES_NOT_EXIST' => 'The extension <strong>%s</strong> does not exist.',
|
||||||
|
@ -348,6 +347,7 @@ $lang = array_merge($lang, array(
|
||||||
'LDAP_NO_SERVER_CONNECTION' => 'Could not connect to LDAP server.',
|
'LDAP_NO_SERVER_CONNECTION' => 'Could not connect to LDAP server.',
|
||||||
'LDAP_SEARCH_FAILED' => 'An error occurred while searching the LDAP directory.',
|
'LDAP_SEARCH_FAILED' => 'An error occurred while searching the LDAP directory.',
|
||||||
'LEGEND' => 'Legend',
|
'LEGEND' => 'Legend',
|
||||||
|
'LIVE_SEARCHES_NOT_ALLOWED' => 'Live searches are not allowed.',
|
||||||
'LOADING' => 'Loading',
|
'LOADING' => 'Loading',
|
||||||
'LOCATION' => 'Location',
|
'LOCATION' => 'Location',
|
||||||
'LOCK_POST' => 'Lock post',
|
'LOCK_POST' => 'Lock post',
|
||||||
|
@ -422,14 +422,16 @@ $lang = array_merge($lang, array(
|
||||||
'NOT_WATCHING_FORUM' => 'You are no longer subscribed to updates on this forum.',
|
'NOT_WATCHING_FORUM' => 'You are no longer subscribed to updates on this forum.',
|
||||||
'NOT_WATCHING_TOPIC' => 'You are no longer subscribed to this topic.',
|
'NOT_WATCHING_TOPIC' => 'You are no longer subscribed to this topic.',
|
||||||
'NOTIFICATIONS' => 'Notifications',
|
'NOTIFICATIONS' => 'Notifications',
|
||||||
// This applies for NOTIFICATION_BOOKMARK, NOTIFICATION_POST, and NOTIFICATION_QUOTE.
|
// This applies for NOTIFICATION_BOOKMARK and NOTIFICATION_POST.
|
||||||
// %1$s will return a list of users that's concatenated using "," and "and" - see STRING_LIST
|
// %1$s will return a list of users that's concatenated using "," and "and" - see STRING_LIST
|
||||||
// Once the user count reaches 5 users or more, the list is trimmed using NOTIFICATION_X_OTHERS
|
// Once the user count reaches 5 users or more, the list is trimmed using NOTIFICATION_X_OTHERS
|
||||||
|
// Once the user count reaches 20 users or more, the list is trimmed using NOTIFICATION_MANY_OTHERS
|
||||||
// Examples:
|
// Examples:
|
||||||
// A replied...
|
// A replied...
|
||||||
// A and B replied...
|
// A and B replied...
|
||||||
// A, B and C replied...
|
// A, B and C replied...
|
||||||
// A, B, C and 2 others replied...
|
// A, B, C and 2 others replied...
|
||||||
|
// A, B, C and others replied...
|
||||||
'NOTIFICATION_BOOKMARK' => array(
|
'NOTIFICATION_BOOKMARK' => array(
|
||||||
1 => '%1$s replied to the topic “%2$s” you have bookmarked.',
|
1 => '%1$s replied to the topic “%2$s” you have bookmarked.',
|
||||||
),
|
),
|
||||||
|
@ -454,7 +456,8 @@ $lang = array_merge($lang, array(
|
||||||
'NOTIFICATION_TOPIC_IN_QUEUE' => 'A new topic titled "%2$s" was posted by %1$s and needs approval.',
|
'NOTIFICATION_TOPIC_IN_QUEUE' => 'A new topic titled "%2$s" was posted by %1$s and needs approval.',
|
||||||
'NOTIFICATION_TYPE_NOT_EXIST' => 'The notification type "%s" is missing from the file system.',
|
'NOTIFICATION_TYPE_NOT_EXIST' => 'The notification type "%s" is missing from the file system.',
|
||||||
'NOTIFICATION_ADMIN_ACTIVATE_USER' => 'The user “%1$s” is newly registered and requires activation.',
|
'NOTIFICATION_ADMIN_ACTIVATE_USER' => 'The user “%1$s” is newly registered and requires activation.',
|
||||||
// Used in conjuction with NOTIFICATION_BOOKMARK, NOTIFICATION_POST, and NOTIFICATION_QUOTE.
|
// Used in conjuction with NOTIFICATION_BOOKMARK and NOTIFICATION_POST.
|
||||||
|
'NOTIFICATION_MANY_OTHERS' => 'others',
|
||||||
'NOTIFICATION_X_OTHERS' => array(
|
'NOTIFICATION_X_OTHERS' => array(
|
||||||
2 => '%d others',
|
2 => '%d others',
|
||||||
),
|
),
|
||||||
|
@ -552,7 +555,8 @@ $lang = array_merge($lang, array(
|
||||||
'POST_BY_FOE' => '<strong>%1$s</strong>, who is currently on your ignore list, made this post.',
|
'POST_BY_FOE' => '<strong>%1$s</strong>, who is currently on your ignore list, made this post.',
|
||||||
'POST_DISPLAY' => '%1$sDisplay this post%2$s.',
|
'POST_DISPLAY' => '%1$sDisplay this post%2$s.',
|
||||||
'POST_DAY' => '%.2f posts per day',
|
'POST_DAY' => '%.2f posts per day',
|
||||||
'POST_DELETED' => 'Deleted post:',
|
'POST_DELETED_ACTION' => 'Deleted post:',
|
||||||
|
'POST_DELETED' => 'This post has been deleted.',
|
||||||
'POST_DELETED_BY' => '<strong>%2$s</strong> deleted the post by <strong>%1$s</strong> on %3$s.',
|
'POST_DELETED_BY' => '<strong>%2$s</strong> deleted the post by <strong>%1$s</strong> on %3$s.',
|
||||||
'POST_DELETED_BY_REASON'=> '<strong>%2$s</strong> deleted the post by <strong>%1$s</strong> on %3$s for the following reason: %4$s',
|
'POST_DELETED_BY_REASON'=> '<strong>%2$s</strong> deleted the post by <strong>%1$s</strong> on %3$s for the following reason: %4$s',
|
||||||
'POST_DETAILS' => 'Post details',
|
'POST_DETAILS' => 'Post details',
|
||||||
|
@ -565,7 +569,8 @@ $lang = array_merge($lang, array(
|
||||||
'POST_SUBJECT' => 'Post subject',
|
'POST_SUBJECT' => 'Post subject',
|
||||||
'POST_TIME' => 'Post time',
|
'POST_TIME' => 'Post time',
|
||||||
'POST_TOPIC' => 'Post a new topic',
|
'POST_TOPIC' => 'Post a new topic',
|
||||||
'POST_UNAPPROVED' => 'Post awaiting approval:',
|
'POST_UNAPPROVED_ACTION' => 'Post awaiting approval:',
|
||||||
|
'POST_UNAPPROVED' => 'This post has not been approved.',
|
||||||
'POWERED_BY' => 'Powered by %s',
|
'POWERED_BY' => 'Powered by %s',
|
||||||
'PREVIEW' => 'Preview',
|
'PREVIEW' => 'Preview',
|
||||||
'PREVIOUS' => 'Previous', // Used in pagination
|
'PREVIOUS' => 'Previous', // Used in pagination
|
||||||
|
@ -735,7 +740,8 @@ $lang = array_merge($lang, array(
|
||||||
'TOPIC_MOVED' => 'Moved topic',
|
'TOPIC_MOVED' => 'Moved topic',
|
||||||
'TOPIC_REVIEW' => 'Topic review',
|
'TOPIC_REVIEW' => 'Topic review',
|
||||||
'TOPIC_TITLE' => 'Topic title',
|
'TOPIC_TITLE' => 'Topic title',
|
||||||
'TOPIC_UNAPPROVED' => 'This topic has not been approved',
|
'TOPIC_UNAPPROVED' => 'This topic has not been approved.',
|
||||||
|
'TOPIC_DELETED' => 'This topic has been deleted.',
|
||||||
'TOTAL_ATTACHMENTS' => 'Attachment(s)',
|
'TOTAL_ATTACHMENTS' => 'Attachment(s)',
|
||||||
'TOTAL_LOGS' => array(
|
'TOTAL_LOGS' => array(
|
||||||
1 => '%d log',
|
1 => '%d log',
|
||||||
|
@ -1370,7 +1376,7 @@ $lang = array_merge($lang, array(
|
||||||
'D M d, Y g:i a' => 'Mon Jan 01, 2007 1:37 pm',
|
'D M d, Y g:i a' => 'Mon Jan 01, 2007 1:37 pm',
|
||||||
'F jS, Y, g:i a' => 'January 1st, 2007, 1:37 pm',
|
'F jS, Y, g:i a' => 'January 1st, 2007, 1:37 pm',
|
||||||
'|d M Y|, H:i' => 'Today, 13:37 / 01 Jan 2007, 13:37',
|
'|d M Y|, H:i' => 'Today, 13:37 / 01 Jan 2007, 13:37',
|
||||||
'|F jS, Y|, g:i a' => 'Today, 1:37 pm / January 1st, 2007, 1:37 pm'
|
'|F jS, Y|, g:i a' => 'Today, 1:37 pm / January 1st, 2007, 1:37 pm',
|
||||||
),
|
),
|
||||||
|
|
||||||
// The default dateformat which will be used on new installs in this language
|
// The default dateformat which will be used on new installs in this language
|
||||||
|
|
|
@ -10,5 +10,4 @@ Use this link to view the user's profile:
|
||||||
Use this link to activate the account:
|
Use this link to activate the account:
|
||||||
{U_ACTIVATE}
|
{U_ACTIVATE}
|
||||||
|
|
||||||
|
|
||||||
{EMAIL_SIG}
|
{EMAIL_SIG}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue