aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--build/build.xml12
-rwxr-xr-xbuild/build_announcement.php98
-rw-r--r--phpBB/common.php2
-rw-r--r--phpBB/includes/functions_user.php4
-rw-r--r--phpBB/includes/ucp/ucp_pm_viewmessage.php4
-rw-r--r--phpBB/install/index.php2
-rw-r--r--phpBB/memberlist.php2
-rw-r--r--phpBB/phpbb/content_visibility.php6
-rw-r--r--phpBB/phpbb/db/migration/data/v310/signature_module_auth.php2
-rw-r--r--phpBB/phpbb/db/migrator.php5
-rw-r--r--phpBB/phpbb/notification/type/quote.php2
-rw-r--r--phpBB/phpbb/notification/type/report_pm.php2
-rw-r--r--phpBB/phpbb/session.php20
-rw-r--r--phpBB/viewtopic.php14
-rw-r--r--phpunit.xml.all2
-rw-r--r--phpunit.xml.dist2
-rw-r--r--phpunit.xml.functional2
-rw-r--r--tests/security/base.php18
-rw-r--r--tests/security/extract_current_page_test.php40
-rw-r--r--tests/session/extract_page_test.php74
-rw-r--r--tests/session/testable_facade.php16
-rw-r--r--tests/test_framework/phpbb_session_test_case.php13
22 files changed, 274 insertions, 68 deletions
diff --git a/build/build.xml b/build/build.xml
index 31782e6821..063f1017fb 100644
--- a/build/build.xml
+++ b/build/build.xml
@@ -169,6 +169,18 @@
<exec dir="${dir}" command="sha256sum ${filename} > ${filename}.sha256" />
</target>
+ <target name="announcement" depends="prepare">
+ <echo msg="Writing download links and checksums for email announcement to save/announcement_email_${newversion}.txt" />
+ <exec dir="build" escape="false"
+ command="php -f build_announcement.php email '${newversion}' 'new_version/release_files' sha256 >
+ save/announcement_email_${newversion}.txt" />
+
+ <echo msg="Writing download links and checksums for bbcode announcement to save/announcement_bbcode_${newversion}.txt" />
+ <exec dir="build" escape="false"
+ command="php -f build_announcement.php bbcode '${newversion}' 'new_version/release_files' sha256 >
+ save/announcement_bbcode_${newversion}.txt" />
+ </target>
+
<target name="changelog" depends="prepare">
<exec dir="build" escape="false"
command="php -f build_changelog.php '${newversion}' >
diff --git a/build/build_announcement.php b/build/build_announcement.php
new file mode 100755
index 0000000000..3ee96fc67d
--- /dev/null
+++ b/build/build_announcement.php
@@ -0,0 +1,98 @@
+#!/usr/bin/env php
+<?php
+/**
+*
+* @package build
+* @copyright (c) 2013 phpBB Group
+* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
+*
+*/
+
+if (php_sapi_name() !== 'cli' || $_SERVER['argc'] != 5)
+{
+ echo "Usage (CLI only): build_announcement.php email|bbcode new_version release_files_dir checksum_algorithm\n";
+ exit(1);
+}
+
+$mode = $_SERVER['argv'][1];
+$version = $_SERVER['argv'][2];
+$root = $_SERVER['argv'][3];
+$checksum_algorithm = $_SERVER['argv'][4];
+
+$series_version = substr($version, 0, 3);
+$base_url = "https://download.phpbb.com/pub/release/$series_version";
+
+if (strpos($version, 'RC') === false)
+{
+ // Final release
+ $install_url = "$base_url/$version";
+ $update_url = "$base_url/update/to_$version";
+}
+else
+{
+ $install_url = "$base_url/release_candidates/$version";
+ $update_url = "$base_url/release_candidates/update/other_to_$version";
+}
+
+if ($mode === 'bbcode')
+{
+ $template = "[url=%1\$s/%2\$s]%2\$s[/url]\n{$checksum_algorithm}sum: %3\$s\n";
+}
+else
+{
+ $template = "%s/%s\n{$checksum_algorithm}sum: %s\n";
+}
+
+function phpbb_rnatsort($array)
+{
+ $strrnatcmp = function($a, $b)
+ {
+ return strnatcmp($b, $a);
+ };
+ usort($array, $strrnatcmp);
+ return $array;
+}
+
+function phpbb_string_ends_with($haystack, $needle)
+{
+ return substr($haystack, -strlen($needle)) === $needle;
+}
+
+function phpbb_is_update_file($filename)
+{
+ return strpos($filename, '_to_') !== false;
+}
+
+function phpbb_get_checksum($checksum_file)
+{
+ return array_shift(explode(' ', file_get_contents($checksum_file)));
+}
+
+$install_files = $update_files = array();
+foreach (phpbb_rnatsort(array_diff(scandir($root), array('.', '..'))) as $filename)
+{
+ if (phpbb_string_ends_with($filename, $checksum_algorithm))
+ {
+ continue;
+ }
+ else if (phpbb_is_update_file($filename))
+ {
+ $update_files[] = $filename;
+ }
+ else
+ {
+ $install_files[] = $filename;
+ }
+}
+
+foreach ($install_files as $filename)
+{
+ printf($template, $install_url, $filename, phpbb_get_checksum("$root/$filename.$checksum_algorithm"));
+}
+
+echo "\n";
+
+foreach ($update_files as $filename)
+{
+ printf($template, $update_url, $filename, phpbb_get_checksum("$root/$filename.$checksum_algorithm"));
+}
diff --git a/phpBB/common.php b/phpBB/common.php
index 6bb3509ea1..b1da2215fb 100644
--- a/phpBB/common.php
+++ b/phpBB/common.php
@@ -115,6 +115,8 @@ 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
diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php
index 0a0656377c..30891c3fb5 100644
--- a/phpBB/includes/functions_user.php
+++ b/phpBB/includes/functions_user.php
@@ -2754,8 +2754,8 @@ function group_user_del($group_id, $user_id_ary = false, $username_ary = false,
* Event before users are removed from a group
*
* @event core.group_delete_user_before
- * @var int group_id ID of the group from which users are deleted
- * @var string group_name Name of the group
+ * @var int group_id ID of the group from which users are deleted
+ * @var string group_name Name of the group
* @var array user_id_ary IDs of the users which are removed
* @var array username_ary names of the users which are removed
* @since 3.1-A1
diff --git a/phpBB/includes/ucp/ucp_pm_viewmessage.php b/phpBB/includes/ucp/ucp_pm_viewmessage.php
index c7b4489daf..cebbadc7c7 100644
--- a/phpBB/includes/ucp/ucp_pm_viewmessage.php
+++ b/phpBB/includes/ucp/ucp_pm_viewmessage.php
@@ -254,8 +254,8 @@ function view_message($id, $mode, $folder_id, $msg_id, $folder, $message_row)
* @var string mode Active module
* @var int folder_id ID of the folder the message is in
* @var int msg_id ID of the private message
- * var array folder Array with data of user's message folders
- * @var array message_row Array with message data
+ * @var array folder Array with data of user's message folders
+ * @var array message_row Array with message data
* @var array cp_row Array with senders custom profile field data
* @var array msg_data Template array with message data
* @since 3.1-A1
diff --git a/phpBB/install/index.php b/phpBB/install/index.php
index 161dc78173..c9bf76bf04 100644
--- a/phpBB/install/index.php
+++ b/phpBB/install/index.php
@@ -244,6 +244,8 @@ $config = new \phpbb\config\config(array(
'load_tplcompile' => '1'
));
+$symfony_request = $phpbb_container->get('symfony_request');
+$phpbb_filesystem = $phpbb_container->get('filesystem');
$phpbb_path_helper = $phpbb_container->get('path_helper');
$template = new \phpbb\template\twig\twig($phpbb_path_helper, $config, $user, new \phpbb\template\context());
$paths = array($phpbb_root_path . 'install/update/new/adm/style', $phpbb_admin_path . 'style');
diff --git a/phpBB/memberlist.php b/phpBB/memberlist.php
index ead7179732..941d0ca713 100644
--- a/phpBB/memberlist.php
+++ b/phpBB/memberlist.php
@@ -595,7 +595,7 @@ switch ($mode)
* Modify user data before we display the profile
*
* @event core.memberlist_view_profile
- * @var array member Title of the index page
+ * @var array member Array with user's data
* @var bool user_notes_enabled Is the mcp user notes module
* enabled?
* @var bool warn_user_enabled Is the mcp warnings module
diff --git a/phpBB/phpbb/content_visibility.php b/phpBB/phpbb/content_visibility.php
index bf720957bc..0b351bc9ec 100644
--- a/phpBB/phpbb/content_visibility.php
+++ b/phpBB/phpbb/content_visibility.php
@@ -556,7 +556,7 @@ class content_visibility
*
* @param $data array Contains information from the topics table about given topic
* @param $sql_data array Populated with the SQL changes, may be empty at call time
- * @return void
+ * @return null
*/
public function add_post_to_statistic($data, &$sql_data)
{
@@ -577,7 +577,7 @@ class content_visibility
*
* @param $data array Contains information from the topics table about given topic
* @param $sql_data array Populated with the SQL changes, may be empty at call time
- * @return void
+ * @return null
*/
public function remove_post_from_statistic($data, &$sql_data)
{
@@ -599,7 +599,7 @@ class content_visibility
* @param $forum_id int Forum where the topic is found
* @param $topic_row array Contains information from the topic, may be empty at call time
* @param $sql_data array Populated with the SQL changes, may be empty at call time
- * @return void
+ * @return null
*/
public function remove_topic_from_statistic($topic_id, $forum_id, &$topic_row, &$sql_data)
{
diff --git a/phpBB/phpbb/db/migration/data/v310/signature_module_auth.php b/phpBB/phpbb/db/migration/data/v310/signature_module_auth.php
index a85e0be01c..6da1cb8009 100644
--- a/phpBB/phpbb/db/migration/data/v310/signature_module_auth.php
+++ b/phpBB/phpbb/db/migration/data/v310/signature_module_auth.php
@@ -27,7 +27,7 @@ class signature_module_auth extends \phpbb\db\migration\migration
static public function depends_on()
{
- return array('\phpbb\db\migration\data\v31x\dev');
+ return array('\phpbb\db\migration\data\v310\dev');
}
public function update_data()
diff --git a/phpBB/phpbb/db/migrator.php b/phpBB/phpbb/db/migrator.php
index 7efb23a230..9879ff2a85 100644
--- a/phpBB/phpbb/db/migrator.php
+++ b/phpBB/phpbb/db/migrator.php
@@ -192,6 +192,11 @@ class migrator
foreach ($state['migration_depends_on'] as $depend)
{
+ if ($this->unfulfillable($depend) !== false)
+ {
+ throw new \phpbb\db\migration\exception('MIGRATION_NOT_FULFILLABLE', $name, $depend);
+ }
+
if (!isset($this->migration_state[$depend]) ||
!$this->migration_state[$depend]['migration_schema_done'] ||
!$this->migration_state[$depend]['migration_data_done'])
diff --git a/phpBB/phpbb/notification/type/quote.php b/phpBB/phpbb/notification/type/quote.php
index 56cfbc9364..8fb433990e 100644
--- a/phpBB/phpbb/notification/type/quote.php
+++ b/phpBB/phpbb/notification/type/quote.php
@@ -19,7 +19,7 @@ if (!defined('IN_PHPBB'))
/**
* Post quoting notifications class
-* This class handles notifications for quoting users in a post
+* This class handles notifying users when they have been quoted in a post
*
* @package notifications
*/
diff --git a/phpBB/phpbb/notification/type/report_pm.php b/phpBB/phpbb/notification/type/report_pm.php
index fd3f754f8a..13330e2932 100644
--- a/phpBB/phpbb/notification/type/report_pm.php
+++ b/phpBB/phpbb/notification/type/report_pm.php
@@ -18,7 +18,7 @@ if (!defined('IN_PHPBB'))
}
/**
-* Private message reproted notifications class
+* Private message reported notifications class
* This class handles notifications for private messages when they are reported
*
* @package notifications
diff --git a/phpBB/phpbb/session.php b/phpBB/phpbb/session.php
index 2baf61043d..5e4380bfc8 100644
--- a/phpBB/phpbb/session.php
+++ b/phpBB/phpbb/session.php
@@ -42,13 +42,13 @@ class session
*/
static function extract_current_page($root_path)
{
- global $request;
+ global $request, $symfony_request, $phpbb_filesystem;
$page_array = array();
// First of all, get the request uri...
- $script_name = htmlspecialchars_decode($request->server('PHP_SELF'));
- $args = explode('&', htmlspecialchars_decode($request->server('QUERY_STRING')));
+ $script_name = $symfony_request->getScriptName();
+ $args = explode('&', $symfony_request->getQueryString());
// If we are unable to get the script name we use REQUEST_URI as a failover and note it within the page array for easier support...
if (!$script_name)
@@ -89,6 +89,12 @@ class session
$page_name = (substr($script_name, -1, 1) == '/') ? '' : basename($script_name);
$page_name = urlencode(htmlspecialchars($page_name));
+ $symfony_request_path = $phpbb_filesystem->clean_path($symfony_request->getPathInfo());
+ if ($symfony_request_path !== '/')
+ {
+ $page_name .= $symfony_request_path;
+ }
+
// current directory within the phpBB root (for example: adm)
$root_dirs = explode('/', str_replace('\\', '/', phpbb_realpath($root_path)));
$page_dirs = explode('/', str_replace('\\', '/', phpbb_realpath('./')));
@@ -105,10 +111,14 @@ class session
}
// Current page from phpBB root (for example: adm/index.php?i=10&b=2)
- $page = (($page_dir) ? $page_dir . '/' : '') . $page_name . (($query_string) ? "?$query_string" : '');
+ $page = (($page_dir) ? $page_dir . '/' : '') . $page_name;
+ if ($query_string)
+ {
+ $page .= '?' . $query_string;
+ }
// The script path from the webroot to the current directory (for example: /phpBB3/adm/) : always prefixed with / and ends in /
- $script_path = trim(str_replace('\\', '/', dirname($script_name)));
+ $script_path = $symfony_request->getBasePath();
// The script path from the webroot to the phpBB root (for example: /phpBB3/)
$script_dirs = explode('/', $script_path);
diff --git a/phpBB/viewtopic.php b/phpBB/viewtopic.php
index 6880b6882d..69a972ed3e 100644
--- a/phpBB/viewtopic.php
+++ b/phpBB/viewtopic.php
@@ -1115,8 +1115,8 @@ while ($row = $db->sql_fetchrow($result))
*
* @event core.viewtopic_cache_guest_data
* @var array user_cache_data Array with the user's data
- * @var int poster_id Poster's user id
- * @var array row Array with original user and post data
+ * @var int poster_id Poster's user id
+ * @var array row Array with original user and post data
* @since 3.1-A1
*/
$vars = array('user_cache_data', 'poster_id', 'row');
@@ -1181,8 +1181,8 @@ while ($row = $db->sql_fetchrow($result))
*
* @event core.viewtopic_cache_user_data
* @var array user_cache_data Array with the user's data
- * @var int poster_id Poster's user id
- * @var array row Array with original user and post data
+ * @var int poster_id Poster's user id
+ * @var array row Array with original user and post data
* @since 3.1-A1
*/
$vars = array('user_cache_data', 'poster_id', 'row');
@@ -1673,10 +1673,10 @@ for ($i = 0, $end = sizeof($post_list); $i < $end; ++$i)
* Modify the posts template block
*
* @event core.viewtopic_modify_post_row
- * @var array row Array with original post and user data
- * @var array cp_row Custom profile field data of the poster
+ * @var array row Array with original post and user data
+ * @var array cp_row Custom profile field data of the poster
* @var array user_poster_data Poster's data from user cache
- * @var array post_row Template block array of the post
+ * @var array post_row Template block array of the post
* @since 3.1-A1
*/
$vars = array('row', 'cp_row', 'user_poster_data', 'post_row');
diff --git a/phpunit.xml.all b/phpunit.xml.all
index d18518d3e3..d5ee606ce2 100644
--- a/phpunit.xml.all
+++ b/phpunit.xml.all
@@ -29,8 +29,6 @@
<directory suffix=".php">./phpBB/includes/</directory>
<directory suffix=".php">./phpBB/phpbb/</directory>
<exclude>
- <file>./phpBB/phpbb/search/fulltext_native.php</file>
- <file>./phpBB/phpbb/search/fulltext_mysql.php</file>
<directory suffix=".php">./phpBB/includes/captcha/</directory>
</exclude>
</whitelist>
diff --git a/phpunit.xml.dist b/phpunit.xml.dist
index c852f91b50..700af8b2b2 100644
--- a/phpunit.xml.dist
+++ b/phpunit.xml.dist
@@ -36,8 +36,6 @@
<directory suffix=".php">./phpBB/includes/</directory>
<directory suffix=".php">./phpBB/phpbb/</directory>
<exclude>
- <file>./phpBB/phpbb/search/fulltext_native.php</file>
- <file>./phpBB/phpbb/search/fulltext_mysql.php</file>
<directory suffix=".php">./phpBB/includes/captcha/</directory>
</exclude>
</whitelist>
diff --git a/phpunit.xml.functional b/phpunit.xml.functional
index cd9cc8771f..44d060e615 100644
--- a/phpunit.xml.functional
+++ b/phpunit.xml.functional
@@ -35,8 +35,6 @@
<directory suffix=".php">./phpBB/includes/</directory>
<directory suffix=".php">./phpBB/phpbb/</directory>
<exclude>
- <file>./phpBB/phpbb/search/fulltext_native.php</file>
- <file>./phpBB/phpbb/search/fulltext_mysql.php</file>
<directory suffix=".php">./phpBB/includes/captcha/</directory>
</exclude>
</whitelist>
diff --git a/tests/security/base.php b/tests/security/base.php
index 8cd24ff145..3ab2d1cfec 100644
--- a/tests/security/base.php
+++ b/tests/security/base.php
@@ -14,7 +14,7 @@ abstract class phpbb_security_test_base extends phpbb_test_case
*/
protected function setUp()
{
- global $user, $phpbb_root_path, $request;
+ global $user, $phpbb_root_path, $phpEx, $request, $symfony_request, $phpbb_filesystem;
// Put this into a global function being run by every test to init a proper user session
$server['HTTP_HOST'] = 'localhost';
@@ -37,6 +37,22 @@ abstract class phpbb_security_test_base extends phpbb_test_case
*/
$request = new phpbb_mock_request(array(), array(), array(), $server);
+ $symfony_request = $this->getMock("\phpbb\symfony_request", array(), array(
+ $request,
+ ));
+ $symfony_request->expects($this->any())
+ ->method('getScriptName')
+ ->will($this->returnValue($server['SCRIPT_NAME']));
+ $symfony_request->expects($this->any())
+ ->method('getQueryString')
+ ->will($this->returnValue($server['QUERY_STRING']));
+ $symfony_request->expects($this->any())
+ ->method('getBasePath')
+ ->will($this->returnValue($server['REQUEST_URI']));
+ $symfony_request->expects($this->any())
+ ->method('getPathInfo')
+ ->will($this->returnValue('/'));
+ $phpbb_filesystem = new \phpbb\filesystem($symfony_request, $phpbb_root_path, $phpEx);
// Set no user and trick a bit to circumvent errors
$user = new \phpbb\user();
diff --git a/tests/security/extract_current_page_test.php b/tests/security/extract_current_page_test.php
index e42f446b31..1284aab94c 100644
--- a/tests/security/extract_current_page_test.php
+++ b/tests/security/extract_current_page_test.php
@@ -26,13 +26,23 @@ class phpbb_security_extract_current_page_test extends phpbb_security_test_base
*/
public function test_query_string_php_self($url, $query_string, $expected)
{
- global $request;
+ global $symfony_request, $request;
- $request->merge(\phpbb\request\request_interface::SERVER, array(
- 'PHP_SELF' => $url,
- 'QUERY_STRING' => $query_string,
+ $symfony_request = $this->getMock("\phpbb\symfony_request", array(), array(
+ $request,
));
-
+ $symfony_request->expects($this->any())
+ ->method('getScriptName')
+ ->will($this->returnValue($url));
+ $symfony_request->expects($this->any())
+ ->method('getQueryString')
+ ->will($this->returnValue($query_string));
+ $symfony_request->expects($this->any())
+ ->method('getBasePath')
+ ->will($this->returnValue($server['REQUEST_URI']));
+ $symfony_request->expects($this->any())
+ ->method('getPathInfo')
+ ->will($this->returnValue('/'));
$result = \phpbb\session::extract_current_page('./');
$label = 'Running extract_current_page on ' . $query_string . ' with PHP_SELF filled.';
@@ -44,12 +54,23 @@ class phpbb_security_extract_current_page_test extends phpbb_security_test_base
*/
public function test_query_string_request_uri($url, $query_string, $expected)
{
- global $request;
+ global $symfony_request, $request;
- $request->merge(\phpbb\request\request_interface::SERVER, array(
- 'PHP_SELF' => $url,
- 'QUERY_STRING' => $query_string,
+ $symfony_request = $this->getMock("\phpbb\symfony_request", array(), array(
+ $request,
));
+ $symfony_request->expects($this->any())
+ ->method('getScriptName')
+ ->will($this->returnValue($url));
+ $symfony_request->expects($this->any())
+ ->method('getQueryString')
+ ->will($this->returnValue($query_string));
+ $symfony_request->expects($this->any())
+ ->method('getBasePath')
+ ->will($this->returnValue($server['REQUEST_URI']));
+ $symfony_request->expects($this->any())
+ ->method('getPathInfo')
+ ->will($this->returnValue('/'));
$result = \phpbb\session::extract_current_page('./');
@@ -57,4 +78,3 @@ class phpbb_security_extract_current_page_test extends phpbb_security_test_base
$this->assertEquals($expected, $result['query_string'], $label);
}
}
-
diff --git a/tests/session/extract_page_test.php b/tests/session/extract_page_test.php
index f4ae8de021..6e137e28b8 100644
--- a/tests/session/extract_page_test.php
+++ b/tests/session/extract_page_test.php
@@ -24,6 +24,7 @@ class phpbb_session_extract_page_test extends phpbb_session_test_case
'/phpBB/index.php',
'',
'/phpBB/',
+ '/',
array(
'page_name' => 'index.php',
'page_dir' => '',
@@ -38,7 +39,8 @@ class phpbb_session_extract_page_test extends phpbb_session_test_case
'./',
'/phpBB/ucp.php',
'mode=login',
- '/phpBB/ucp.php?mode=login',
+ '/phpBB/',
+ '/',
array(
'page_name' => 'ucp.php',
'page_dir' => '',
@@ -53,7 +55,8 @@ class phpbb_session_extract_page_test extends phpbb_session_test_case
'./',
'/phpBB/ucp.php',
'mode=register',
- '/phpBB/ucp.php?mode=register',
+ '/phpBB/',
+ '/',
array(
'page_name' => 'ucp.php',
'page_dir' => '',
@@ -68,7 +71,8 @@ class phpbb_session_extract_page_test extends phpbb_session_test_case
'./',
'/phpBB/ucp.php',
'mode=register',
- '/phpBB/ucp.php?mode=register',
+ '/phpBB/',
+ '/',
array(
'page_name' => 'ucp.php',
'page_dir' => '',
@@ -83,30 +87,76 @@ class phpbb_session_extract_page_test extends phpbb_session_test_case
'./../',
'/phpBB/adm/index.php',
'sid=e7215d958cdd41a6fc13509bebe53e42',
- '/phpBB/adm/index.php?sid=e7215d958cdd41a6fc13509bebe53e42',
+ '/phpBB/adm/',
+ '/',
array(
'page_name' => 'index.php',
//'page_dir' => 'adm',
// ^-- Ignored because .. returns different directory in live vs testing
'query_string' => '',
'script_path' => '/phpBB/adm/',
- 'root_script_path' => '/phpBB/',
+ //'root_script_path' => '/phpBB/',
//'page' => 'adm/index.php',
'forum' => 0,
),
),
+ array(
+ './',
+ '/phpBB/adm/app.php',
+ 'page=1&test=2',
+ '/phpBB/',
+ '/foo/bar',
+ array(
+ 'page_name' => 'app.php/foo/bar',
+ 'page_dir' => '',
+ 'query_string' => 'page=1&test=2',
+ 'script_path' => '/phpBB/',
+ 'root_script_path' => '/phpBB/',
+ 'page' => 'app.php/foo/bar?page=1&test=2',
+ 'forum' => 0,
+ ),
+ ),
+ array(
+ './../phpBB/',
+ '/test/test.php',
+ 'page=1&test=2',
+ '/test/',
+ '',
+ array(
+ 'page_name' => 'test.php',
+ //'page_dir' => '',
+ 'query_string' => 'page=1&test=2',
+ 'script_path' => '/test/',
+ //'root_script_path' => '../phpBB/',
+ //'page' => '../test/test.php/foo/bar?page=1&test=2',
+ 'forum' => 0,
+ ),
+ ),
);
}
/** @dataProvider extract_current_page_data */
- function test_extract_current_page($root_path, $php_self, $query_string, $request_uri, $expected)
+ function test_extract_current_page($root_path, $getScriptName, $getQueryString, $getBasePath, $getPathInfo, $expected)
{
- $output = $this->session_facade->extract_current_page(
- $root_path,
- $php_self,
- $query_string,
- $request_uri
- );
+ global $symfony_request;
+
+ $symfony_request = $this->getMock("\phpbb\symfony_request", array(), array(
+ new phpbb_mock_request(),
+ ));
+ $symfony_request->expects($this->any())
+ ->method('getScriptName')
+ ->will($this->returnValue($getScriptName));
+ $symfony_request->expects($this->any())
+ ->method('getQueryString')
+ ->will($this->returnValue($getQueryString));
+ $symfony_request->expects($this->any())
+ ->method('getBasePath')
+ ->will($this->returnValue($getBasePath));
+ $symfony_request->expects($this->any())
+ ->method('getPathInfo')
+ ->will($this->returnValue($getPathInfo));
+
+ $output = \phpbb\session::extract_current_page($root_path);
// This compares the result of the output.
// Any keys that are not in the expected array are overwritten by the output (aka not checked).
diff --git a/tests/session/testable_facade.php b/tests/session/testable_facade.php
index f289c48f69..2600a46cc4 100644
--- a/tests/session/testable_facade.php
+++ b/tests/session/testable_facade.php
@@ -33,21 +33,6 @@ class phpbb_session_testable_facade
$this->session_factory = $session_factory;
}
- function extract_current_page(
- $root_path,
- $php_self,
- $query_string,
- $request_uri
- )
- {
- $this->session_factory->get_session($this->db);
- global $request;
- $request->overwrite('PHP_SELF', $php_self, \phpbb\request\request_interface::SERVER);
- $request->overwrite('QUERY_STRING', $query_string, \phpbb\request\request_interface::SERVER);
- $request->overwrite('REQUEST_URI', $request_uri, \phpbb\request\request_interface::SERVER);
- return \phpbb\session::extract_current_page($root_path);
- }
-
function extract_current_hostname(
$host,
$server_name_config,
@@ -139,4 +124,3 @@ class phpbb_session_testable_facade
return $session->validate_referer($check_script_path);
}
}
-
diff --git a/tests/test_framework/phpbb_session_test_case.php b/tests/test_framework/phpbb_session_test_case.php
index e6a2b03bba..0a2f767845 100644
--- a/tests/test_framework/phpbb_session_test_case.php
+++ b/tests/test_framework/phpbb_session_test_case.php
@@ -19,6 +19,19 @@ abstract class phpbb_session_test_case extends phpbb_database_test_case
function setUp()
{
parent::setUp();
+
+ global $symfony_request, $phpbb_filesystem, $phpbb_path_helper, $request, $phpbb_root_path, $phpEx;
+ $symfony_request = new \phpbb\symfony_request(
+ new phpbb_mock_request()
+ );
+ $phpbb_filesystem = new \phpbb\filesystem();
+ $phpbb_path_helper = new \phpbb\path_helper(
+ $symfony_request,
+ $phpbb_filesystem,
+ $phpbb_root_path,
+ $phpEx
+ );
+
$this->session_factory = new phpbb_session_testable_factory;
$this->db = $this->new_dbal();
$this->session_facade =