aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--phpBB/composer.json2
-rw-r--r--phpBB/composer.lock463
-rw-r--r--phpBB/develop/generate_utf_casefold.php2
-rw-r--r--phpBB/develop/generate_utf_confusables.php2
-rw-r--r--phpBB/develop/generate_utf_tables.php2
-rw-r--r--phpBB/develop/utf_normalizer_test.php2
-rw-r--r--phpBB/docs/auth_api.html2
-rw-r--r--phpBB/includes/acm/acm_apc.php2
-rw-r--r--phpBB/includes/acm/acm_eaccelerator.php4
-rw-r--r--phpBB/includes/acm/acm_memcache.php4
-rw-r--r--phpBB/includes/acm/acm_redis.php4
-rw-r--r--phpBB/includes/acm/acm_wincache.php2
-rw-r--r--phpBB/includes/acm/acm_xcache.php2
-rw-r--r--phpBB/includes/functions.php4
-rw-r--r--phpBB/includes/functions_admin.php2
-rw-r--r--phpBB/includes/functions_messenger.php13
-rw-r--r--phpBB/includes/questionnaire/questionnaire.php2
-rw-r--r--phpBB/includes/ucp/ucp_prefs.php32
-rw-r--r--phpBB/install/database_update.php20
-rw-r--r--phpBB/install/install_install.php1
-rw-r--r--phpBB/styles/prosilver/template/ucp_prefs_personal.html12
-rw-r--r--phpBB/styles/subsilver2/template/ucp_prefs_personal.html4
-rw-r--r--tests/lint_test.php74
-rw-r--r--travis/phpunit-mysql-travis.xml1
-rw-r--r--travis/phpunit-postgres-travis.xml1
25 files changed, 600 insertions, 59 deletions
diff --git a/phpBB/composer.json b/phpBB/composer.json
index c2811ad1d7..8d5dd1d52e 100644
--- a/phpBB/composer.json
+++ b/phpBB/composer.json
@@ -1,6 +1,6 @@
{
"minimum-stability": "beta",
"require-dev": {
- "fabpot/goutte": "1.0.x-dev"
+ "fabpot/goutte": "v0.1.0"
}
}
diff --git a/phpBB/composer.lock b/phpBB/composer.lock
index 9f2195e70a..a78fff9a14 100644
--- a/phpBB/composer.lock
+++ b/phpBB/composer.lock
@@ -1,55 +1,456 @@
{
- "hash": "a5d02c59e3a91c84c1a96aca0f1ae81a",
+ "hash": "23352b29002e6d22658e314a8e737f71",
"packages": [
-
+ {
+ "name": "symfony/event-dispatcher",
+ "version": "v2.1.4",
+ "target-dir": "Symfony/Component/EventDispatcher",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/EventDispatcher",
+ "reference": "v2.1.4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://github.com/symfony/EventDispatcher/archive/v2.1.4.zip",
+ "reference": "v2.1.4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "symfony/dependency-injection": "2.1.*"
+ },
+ "suggest": {
+ "symfony/dependency-injection": "2.1.*",
+ "symfony/http-kernel": "2.1.*"
+ },
+ "time": "2012-11-08 09:51:48",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.1-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-0": {
+ "Symfony\\Component\\EventDispatcher": ""
+ }
+ },
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony EventDispatcher Component",
+ "homepage": "http://symfony.com"
+ }
],
"packages-dev": [
{
- "package": "fabpot/goutte",
- "version": "dev-master",
- "alias-pretty-version": "1.0.x-dev",
- "alias-version": "1.0.9999999.9999999-dev"
- },
- {
- "package": "fabpot/goutte",
- "version": "dev-master",
- "source-reference": "c2ea8d9a6682d14482e57ede2371001b8a5238d2",
- "commit-date": "1340264258"
- },
- {
- "package": "guzzle/guzzle",
- "version": "v2.6.6"
+ "name": "fabpot/goutte",
+ "version": "v0.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/fabpot/Goutte",
+ "reference": "v0.1.0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://github.com/fabpot/Goutte/archive/v0.1.0.zip",
+ "reference": "v0.1.0",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0",
+ "ext-curl": "*",
+ "symfony/browser-kit": "2.1.*",
+ "symfony/css-selector": "2.1.*",
+ "symfony/dom-crawler": "2.1.*",
+ "symfony/finder": "2.1.*",
+ "symfony/process": "2.1.*",
+ "guzzle/guzzle": "3.0.*"
+ },
+ "time": "2012-12-02 13:44:35",
+ "type": "application",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "installation-source": "source",
+ "autoload": {
+ "psr-0": {
+ "Goutte": "."
+ }
+ },
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "A simple PHP Web Scraper",
+ "homepage": "https://github.com/fabpot/Goutte",
+ "keywords": [
+ "scraper"
+ ]
},
{
- "package": "symfony/browser-kit",
- "version": "v2.1.0-BETA3"
+ "name": "guzzle/guzzle",
+ "version": "v3.0.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/guzzle",
+ "reference": "v3.0.5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://github.com/guzzle/guzzle/archive/v3.0.5.zip",
+ "reference": "v3.0.5",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2",
+ "ext-curl": "*",
+ "symfony/event-dispatcher": "2.1.*"
+ },
+ "replace": {
+ "guzzle/batch": "self.version",
+ "guzzle/cache": "self.version",
+ "guzzle/common": "self.version",
+ "guzzle/http": "self.version",
+ "guzzle/inflection": "self.version",
+ "guzzle/iterator": "self.version",
+ "guzzle/log": "self.version",
+ "guzzle/parser": "self.version",
+ "guzzle/plugin": "self.version",
+ "guzzle/plugin-async": "self.version",
+ "guzzle/plugin-backoff": "self.version",
+ "guzzle/plugin-cache": "self.version",
+ "guzzle/plugin-cookie": "self.version",
+ "guzzle/plugin-curlauth": "self.version",
+ "guzzle/plugin-history": "self.version",
+ "guzzle/plugin-log": "self.version",
+ "guzzle/plugin-md5": "self.version",
+ "guzzle/plugin-mock": "self.version",
+ "guzzle/plugin-oauth": "self.version",
+ "guzzle/service": "self.version",
+ "guzzle/stream": "self.version"
+ },
+ "require-dev": {
+ "doctrine/common": "*",
+ "symfony/class-loader": "*",
+ "monolog/monolog": "1.*",
+ "zendframework/zend-cache": "2.0.*",
+ "zendframework/zend-log": "2.0.*",
+ "zend/zend-log1": "1.12",
+ "zend/zend-cache1": "1.12",
+ "phpunit/phpunit": "3.7.*"
+ },
+ "time": "2012-11-19 00:15:33",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-0": {
+ "Guzzle\\Tests": "tests/",
+ "Guzzle": "src/"
+ }
+ },
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ },
+ {
+ "name": "Guzzle Community",
+ "homepage": "https://github.com/guzzle/guzzle/contributors"
+ }
+ ],
+ "description": "Guzzle is a PHP HTTP client library and framework for building RESTful web service clients",
+ "homepage": "http://guzzlephp.org/",
+ "keywords": [
+ "framework",
+ "curl",
+ "http",
+ "rest",
+ "http client",
+ "client",
+ "web service"
+ ]
},
{
- "package": "symfony/css-selector",
- "version": "v2.1.0-BETA3"
+ "name": "symfony/browser-kit",
+ "version": "v2.1.4",
+ "target-dir": "Symfony/Component/BrowserKit",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/BrowserKit",
+ "reference": "v2.1.4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://github.com/symfony/BrowserKit/archive/v2.1.4.zip",
+ "reference": "v2.1.4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "symfony/dom-crawler": "2.1.*"
+ },
+ "require-dev": {
+ "symfony/process": "2.1.*",
+ "symfony/css-selector": "2.1.*"
+ },
+ "suggest": {
+ "symfony/process": "2.1.*"
+ },
+ "time": "2012-11-08 09:51:48",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.1-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-0": {
+ "Symfony\\Component\\BrowserKit": ""
+ }
+ },
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony BrowserKit Component",
+ "homepage": "http://symfony.com"
},
{
- "package": "symfony/dom-crawler",
- "version": "v2.1.0-BETA3"
+ "name": "symfony/css-selector",
+ "version": "v2.1.4",
+ "target-dir": "Symfony/Component/CssSelector",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/CssSelector",
+ "reference": "v2.1.4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://github.com/symfony/CssSelector/archive/v2.1.4.zip",
+ "reference": "v2.1.4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "time": "2012-11-08 09:51:48",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.1-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-0": {
+ "Symfony\\Component\\CssSelector": ""
+ }
+ },
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony CssSelector Component",
+ "homepage": "http://symfony.com"
},
{
- "package": "symfony/event-dispatcher",
- "version": "v2.1.0-BETA3"
+ "name": "symfony/dom-crawler",
+ "version": "v2.1.4",
+ "target-dir": "Symfony/Component/DomCrawler",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/DomCrawler",
+ "reference": "v2.1.4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://github.com/symfony/DomCrawler/archive/v2.1.4.zip",
+ "reference": "v2.1.4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "symfony/css-selector": "2.1.*"
+ },
+ "suggest": {
+ "symfony/css-selector": "2.1.*"
+ },
+ "time": "2012-11-29 10:32:18",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.1-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-0": {
+ "Symfony\\Component\\DomCrawler": ""
+ }
+ },
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony DomCrawler Component",
+ "homepage": "http://symfony.com"
},
{
- "package": "symfony/finder",
- "version": "v2.1.0-BETA3"
+ "name": "symfony/finder",
+ "version": "v2.1.4",
+ "target-dir": "Symfony/Component/Finder",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/Finder",
+ "reference": "v2.1.4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://github.com/symfony/Finder/archive/v2.1.4.zip",
+ "reference": "v2.1.4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "time": "2012-11-08 09:51:48",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.1-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-0": {
+ "Symfony\\Component\\Finder": ""
+ }
+ },
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Finder Component",
+ "homepage": "http://symfony.com"
},
{
- "package": "symfony/process",
- "version": "v2.1.0-BETA3"
+ "name": "symfony/process",
+ "version": "v2.1.4",
+ "target-dir": "Symfony/Component/Process",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/Process",
+ "reference": "v2.1.4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://github.com/symfony/Process/archive/v2.1.4.zip",
+ "reference": "v2.1.4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "time": "2012-11-19 20:53:52",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.1-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-0": {
+ "Symfony\\Component\\Process": ""
+ }
+ },
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Process Component",
+ "homepage": "http://symfony.com"
}
],
"aliases": [
],
"minimum-stability": "beta",
- "stability-flags": {
- "fabpot/goutte": 20
- }
+ "stability-flags": [
+
+ ]
}
diff --git a/phpBB/develop/generate_utf_casefold.php b/phpBB/develop/generate_utf_casefold.php
index 73951cb4dc..08f67c3eb6 100644
--- a/phpBB/develop/generate_utf_casefold.php
+++ b/phpBB/develop/generate_utf_casefold.php
@@ -111,7 +111,7 @@ function my_var_export($var)
* Download a file to the develop/ dir
*
* @param string $url URL of the file to download
-* @return void
+* @return null
*/
function download($url)
{
diff --git a/phpBB/develop/generate_utf_confusables.php b/phpBB/develop/generate_utf_confusables.php
index d2ffbcfc65..fd0439a4bb 100644
--- a/phpBB/develop/generate_utf_confusables.php
+++ b/phpBB/develop/generate_utf_confusables.php
@@ -199,7 +199,7 @@ function my_var_export($var)
* Download a file to the develop/ dir
*
* @param string $url URL of the file to download
-* @return void
+* @return null
*/
function download($url)
{
diff --git a/phpBB/develop/generate_utf_tables.php b/phpBB/develop/generate_utf_tables.php
index 6fe5d68ffd..6372270b78 100644
--- a/phpBB/develop/generate_utf_tables.php
+++ b/phpBB/develop/generate_utf_tables.php
@@ -481,7 +481,7 @@ function my_var_export($var)
* Download a file to the develop/ dir
*
* @param string $url URL of the file to download
-* @return void
+* @return null
*/
function download($url)
{
diff --git a/phpBB/develop/utf_normalizer_test.php b/phpBB/develop/utf_normalizer_test.php
index 71f24a716b..b8709888fe 100644
--- a/phpBB/develop/utf_normalizer_test.php
+++ b/phpBB/develop/utf_normalizer_test.php
@@ -222,7 +222,7 @@ die("\n\nALL TESTS PASSED SUCCESSFULLY\n");
* Download a file to the develop/ dir
*
* @param string $url URL of the file to download
-* @return void
+* @return null
*/
function download($url)
{
diff --git a/phpBB/docs/auth_api.html b/phpBB/docs/auth_api.html
index 29469c21ac..a319460360 100644
--- a/phpBB/docs/auth_api.html
+++ b/phpBB/docs/auth_api.html
@@ -200,7 +200,7 @@ $user_id = 2;
$auth->acl_clear_prefetch($user_id);
</pre></div>
- <p>This method returns void.</p>
+ <p>This method returns null.</p>
<a name="acl_get_list"></a><h3>2.viii. acl_get_list</h3>
diff --git a/phpBB/includes/acm/acm_apc.php b/phpBB/includes/acm/acm_apc.php
index 1a487f94ad..205353d3a5 100644
--- a/phpBB/includes/acm/acm_apc.php
+++ b/phpBB/includes/acm/acm_apc.php
@@ -33,7 +33,7 @@ class acm extends acm_memory
/**
* Purge cache data
*
- * @return void
+ * @return null
*/
function purge()
{
diff --git a/phpBB/includes/acm/acm_eaccelerator.php b/phpBB/includes/acm/acm_eaccelerator.php
index 645067c199..ecec3ac9a5 100644
--- a/phpBB/includes/acm/acm_eaccelerator.php
+++ b/phpBB/includes/acm/acm_eaccelerator.php
@@ -37,7 +37,7 @@ class acm extends acm_memory
/**
* Purge cache data
*
- * @return void
+ * @return null
*/
function purge()
{
@@ -54,7 +54,7 @@ class acm extends acm_memory
/**
* Perform cache garbage collection
*
- * @return void
+ * @return null
*/
function tidy()
{
diff --git a/phpBB/includes/acm/acm_memcache.php b/phpBB/includes/acm/acm_memcache.php
index e54fa36c38..70bc219952 100644
--- a/phpBB/includes/acm/acm_memcache.php
+++ b/phpBB/includes/acm/acm_memcache.php
@@ -71,7 +71,7 @@ class acm extends acm_memory
/**
* Unload the cache resources
*
- * @return void
+ * @return null
*/
function unload()
{
@@ -83,7 +83,7 @@ class acm extends acm_memory
/**
* Purge cache data
*
- * @return void
+ * @return null
*/
function purge()
{
diff --git a/phpBB/includes/acm/acm_redis.php b/phpBB/includes/acm/acm_redis.php
index 41533eaacb..dc11ca7768 100644
--- a/phpBB/includes/acm/acm_redis.php
+++ b/phpBB/includes/acm/acm_redis.php
@@ -80,7 +80,7 @@ class acm extends acm_memory
/**
* Unload the cache resources
*
- * @return void
+ * @return null
*/
function unload()
{
@@ -92,7 +92,7 @@ class acm extends acm_memory
/**
* Purge cache data
*
- * @return void
+ * @return null
*/
function purge()
{
diff --git a/phpBB/includes/acm/acm_wincache.php b/phpBB/includes/acm/acm_wincache.php
index 0501ab74c5..7faba4f5b6 100644
--- a/phpBB/includes/acm/acm_wincache.php
+++ b/phpBB/includes/acm/acm_wincache.php
@@ -32,7 +32,7 @@ class acm extends acm_memory
/**
* Purge cache data
*
- * @return void
+ * @return null
*/
function purge()
{
diff --git a/phpBB/includes/acm/acm_xcache.php b/phpBB/includes/acm/acm_xcache.php
index d0a614660c..e3d83f8bfa 100644
--- a/phpBB/includes/acm/acm_xcache.php
+++ b/phpBB/includes/acm/acm_xcache.php
@@ -48,7 +48,7 @@ class acm extends acm_memory
/**
* Purge cache data
*
- * @return void
+ * @return null
*/
function purge()
{
diff --git a/phpBB/includes/functions.php b/phpBB/includes/functions.php
index 6e661228b7..571c863839 100644
--- a/phpBB/includes/functions.php
+++ b/phpBB/includes/functions.php
@@ -2745,7 +2745,7 @@ function meta_refresh($time, $url, $disable_cd_check = false)
*
* @param int $code HTTP status code
* @param string $message Message for the status code
-* @return void
+* @return null
*/
function send_status_line($code, $message)
{
@@ -4332,7 +4332,7 @@ function phpbb_optionset($bit, $set, $data)
*
* @param array $param Parameter array, see $param_defaults array.
*
-* @return void
+* @return null
*/
function phpbb_http_login($param)
{
diff --git a/phpBB/includes/functions_admin.php b/phpBB/includes/functions_admin.php
index 7352b3d1f3..190185cfcf 100644
--- a/phpBB/includes/functions_admin.php
+++ b/phpBB/includes/functions_admin.php
@@ -3343,7 +3343,7 @@ function obtain_latest_version_info($force_update = false, $warn_fail = false, $
* @param int $flag The binary flag which is OR-ed with the current column value
* @param string $sql_more This string is attached to the sql query generated to update the table.
*
- * @return void
+ * @return null
*/
function enable_bitfield_column_flag($table_name, $column_name, $flag, $sql_more = '')
{
diff --git a/phpBB/includes/functions_messenger.php b/phpBB/includes/functions_messenger.php
index 6549693333..e837811c86 100644
--- a/phpBB/includes/functions_messenger.php
+++ b/phpBB/includes/functions_messenger.php
@@ -715,14 +715,21 @@ class queue
$lock_fp = $this->lock();
- set_config('last_queue_run', time(), true);
-
- if (!file_exists($this->cache_file) || filemtime($this->cache_file) > time() - $config['queue_interval'])
+ // avoid races, check file existence once
+ $have_cache_file = file_exists($this->cache_file);
+ if (!$have_cache_file || $config['last_queue_run'] > time() - $config['queue_interval'])
{
+ if (!$have_cache_file)
+ {
+ set_config('last_queue_run', time(), true);
+ }
+
$this->unlock($lock_fp);
return;
}
+ set_config('last_queue_run', time(), true);
+
include($this->cache_file);
foreach ($this->queue_data as $object => $data_ary)
diff --git a/phpBB/includes/questionnaire/questionnaire.php b/phpBB/includes/questionnaire/questionnaire.php
index cbd7638809..3268775cb6 100644
--- a/phpBB/includes/questionnaire/questionnaire.php
+++ b/phpBB/includes/questionnaire/questionnaire.php
@@ -71,7 +71,7 @@ class phpbb_questionnaire_data_collector
/**
* Collect info into the data property.
*
- * @return void
+ * @return null
*/
function collect()
{
diff --git a/phpBB/includes/ucp/ucp_prefs.php b/phpBB/includes/ucp/ucp_prefs.php
index 17d7d23f02..c6e43b831c 100644
--- a/phpBB/includes/ucp/ucp_prefs.php
+++ b/phpBB/includes/ucp/ucp_prefs.php
@@ -134,6 +134,35 @@ class ucp_prefs
}
$dateformat_options .= '>' . $user->lang['CUSTOM_DATEFORMAT'] . '</option>';
+ // check if there are any user-selectable languages
+ $sql = 'SELECT COUNT(lang_id) as languages_count
+ FROM ' . LANG_TABLE;
+ $result = $db->sql_query($sql);
+ if ($db->sql_fetchfield('languages_count') > 1)
+ {
+ $s_more_languages = true;
+ }
+ else
+ {
+ $s_more_languages = false;
+ }
+ $db->sql_freeresult($result);
+
+ // check if there are any user-selectable styles
+ $sql = 'SELECT COUNT(style_id) as styles_count
+ FROM ' . STYLES_TABLE . '
+ WHERE style_active = 1';
+ $result = $db->sql_query($sql);
+ if ($db->sql_fetchfield('styles_count') > 1)
+ {
+ $s_more_styles = true;
+ }
+ else
+ {
+ $s_more_styles = false;
+ }
+ $db->sql_freeresult($result);
+
$template->assign_vars(array(
'ERROR' => (sizeof($error)) ? implode('<br />', $error) : '',
@@ -155,6 +184,9 @@ class ucp_prefs
'DEFAULT_DATEFORMAT' => $config['default_dateformat'],
'A_DEFAULT_DATEFORMAT' => addslashes($config['default_dateformat']),
+ 'S_MORE_LANGUAGES' => $s_more_languages,
+ 'S_MORE_STYLES' => $s_more_styles,
+
'S_LANG_OPTIONS' => language_select($data['lang']),
'S_STYLE_OPTIONS' => ($config['override_user_style']) ? '' : style_select($data['style']),
'S_TZ_OPTIONS' => tz_select($data['tz'], true),
diff --git a/phpBB/install/database_update.php b/phpBB/install/database_update.php
index 399ad3429a..983b1b46c4 100644
--- a/phpBB/install/database_update.php
+++ b/phpBB/install/database_update.php
@@ -2171,6 +2171,26 @@ function change_database_data(&$no_updates, $version)
}
}
+ // Disable receiving pms for bots
+ $sql = 'SELECT user_id
+ FROM ' . BOTS_TABLE;
+ $result = $db->sql_query($sql);
+
+ $bot_user_ids = array();
+ while ($row = $db->sql_fetchrow($result))
+ {
+ $bot_user_ids[] = (int) $row['user_id'];
+ }
+ $db->sql_freeresult($result);
+
+ if (!empty($bot_user_ids))
+ {
+ $sql = 'UPDATE ' . USERS_TABLE . '
+ SET user_allow_pm = 0
+ WHERE ' . $db->sql_in_set('user_id', $bot_user_ids);
+ _sql($sql, $errored, $error_ary);
+ }
+
$no_updates = false;
break;
}
diff --git a/phpBB/install/install_install.php b/phpBB/install/install_install.php
index 67ebb8b1c5..0575b58d92 100644
--- a/phpBB/install/install_install.php
+++ b/phpBB/install/install_install.php
@@ -1859,6 +1859,7 @@ class install_install extends module
'user_timezone' => 0,
'user_dateformat' => $lang['default_dateformat'],
'user_allow_massemail' => 0,
+ 'user_allow_pm' => 0,
);
$user_id = user_add($user_row);
diff --git a/phpBB/styles/prosilver/template/ucp_prefs_personal.html b/phpBB/styles/prosilver/template/ucp_prefs_personal.html
index 9022346627..600319fc72 100644
--- a/phpBB/styles/prosilver/template/ucp_prefs_personal.html
+++ b/phpBB/styles/prosilver/template/ucp_prefs_personal.html
@@ -63,11 +63,13 @@
<label for="popuppm0"><input type="radio" name="popuppm" id="popuppm0" value="0"<!-- IF not S_POPUP_PM --> checked="checked"<!-- ENDIF --> /> {L_NO}</label>
</dd>
</dl>
- <dl>
- <dt><label for="lang">{L_BOARD_LANGUAGE}:</label></dt>
- <dd><select name="lang" id="lang">{S_LANG_OPTIONS}</select></dd>
- </dl>
- <!-- IF S_STYLE_OPTIONS -->
+ <!-- IF S_MORE_LANGUAGES -->
+ <dl>
+ <dt><label for="lang">{L_BOARD_LANGUAGE}:</label></dt>
+ <dd><select name="lang" id="lang">{S_LANG_OPTIONS}</select></dd>
+ </dl>
+ <!-- ENDIF -->
+ <!-- IF S_STYLE_OPTIONS and S_MORE_STYLES -->
<dl>
<dt><label for="style">{L_BOARD_STYLE}:</label></dt>
<dd><select name="style" id="style">{S_STYLE_OPTIONS}</select></dd>
diff --git a/phpBB/styles/subsilver2/template/ucp_prefs_personal.html b/phpBB/styles/subsilver2/template/ucp_prefs_personal.html
index e2266b7d38..4cd0f37a80 100644
--- a/phpBB/styles/subsilver2/template/ucp_prefs_personal.html
+++ b/phpBB/styles/subsilver2/template/ucp_prefs_personal.html
@@ -61,11 +61,13 @@
<td class="row1" width="50%"><b class="genmed">{L_POPUP_ON_PM}:</b></td>
<td class="row2"><input type="radio" class="radio" name="popuppm" value="1"<!-- IF S_POPUP_PM --> checked="checked"<!-- ENDIF --> /><span class="genmed">{L_YES}</span>&nbsp;&nbsp;<input type="radio" class="radio" name="popuppm" value="0"<!-- IF not S_POPUP_PM --> checked="checked"<!-- ENDIF --> /><span class="genmed">{L_NO}</span></td>
</tr>
+<!-- IF S_MORE_LANGUAGES -->
<tr>
<td class="row1" width="50%"><b class="genmed">{L_BOARD_LANGUAGE}:</b></td>
<td class="row2"><select name="lang">{S_LANG_OPTIONS}</select></td>
</tr>
-<!-- IF S_STYLE_OPTIONS -->
+<!-- ENDIF -->
+<!-- IF S_STYLE_OPTIONS and S_MORE_STYLES -->
<tr>
<td class="row1" width="50%"><b class="genmed">{L_BOARD_STYLE}:</b></td>
<td class="row2"><select name="style">{S_STYLE_OPTIONS}</select></td>
diff --git a/tests/lint_test.php b/tests/lint_test.php
new file mode 100644
index 0000000000..905067072d
--- /dev/null
+++ b/tests/lint_test.php
@@ -0,0 +1,74 @@
+<?php
+/**
+*
+* @package testing
+* @copyright (c) 2012 phpBB Group
+* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
+*
+*/
+
+class phpbb_lint_test extends phpbb_test_case
+{
+ static protected $exclude;
+
+ static public function setUpBeforeClass()
+ {
+ $output = array();
+ $status = 1;
+ exec('(php -v) 2>&1', $output, $status);
+ if ($status)
+ {
+ $output = implode("\n", $output);
+ self::markTestSkipped("php is not in PATH or broken: $output");
+ }
+
+ self::$exclude = array(
+ // PHP Fatal error: Cannot declare class Container because the name is already in use in /var/www/projects/phpbb3/tests/../phpBB/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services1-1.php on line 20
+ // https://gist.github.com/e003913ffd493da63cbc
+ dirname(__FILE__) . '/../phpBB/vendor',
+ );
+ }
+
+ public function test_lint()
+ {
+ if (version_compare(PHP_VERSION, '5.3.0', '<'))
+ {
+ $this->markTestSkipped('phpBB uses PHP 5.3 syntax in some files, linting on PHP < 5.3 will fail');
+ }
+
+ $root = dirname(__FILE__) . '/..';
+ $this->check($root);
+ }
+
+ protected function check($root)
+ {
+ $dh = opendir($root);
+ while (($filename = readdir($dh)) !== false)
+ {
+ if ($filename == '.' || $filename == '..' || $filename == 'git')
+ {
+ continue;
+ }
+ $path = $root . '/' . $filename;
+ // skip symlinks to avoid infinite loops
+ if (is_link($path))
+ {
+ continue;
+ }
+ if (is_dir($path) && !in_array($path, self::$exclude))
+ {
+ $this->check($path);
+ }
+ else if (substr($filename, strlen($filename)-4) == '.php')
+ {
+ // assume php binary is called php and it is in PATH
+ $cmd = '(php -l ' . escapeshellarg($path) . ') 2>&1';
+ $output = array();
+ $status = 1;
+ exec($cmd, $output, $status);
+ $output = implode("\n", $output);
+ $this->assertEquals(0, $status, "php -l failed for $path:\n$output");
+ }
+ }
+ }
+}
diff --git a/travis/phpunit-mysql-travis.xml b/travis/phpunit-mysql-travis.xml
index e54b2bb77b..5366494c8b 100644
--- a/travis/phpunit-mysql-travis.xml
+++ b/travis/phpunit-mysql-travis.xml
@@ -9,6 +9,7 @@
stopOnFailure="false"
syntaxCheck="true"
strict="true"
+ verbose="true"
bootstrap="../tests/bootstrap.php">
<testsuites>
<testsuite name="phpBB Test Suite">
diff --git a/travis/phpunit-postgres-travis.xml b/travis/phpunit-postgres-travis.xml
index 55ba996548..0383edd9d6 100644
--- a/travis/phpunit-postgres-travis.xml
+++ b/travis/phpunit-postgres-travis.xml
@@ -9,6 +9,7 @@
stopOnFailure="false"
syntaxCheck="true"
strict="true"
+ verbose="true"
bootstrap="../tests/bootstrap.php">
<testsuites>
<testsuite name="phpBB Test Suite">