aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB')
-rw-r--r--phpBB/common.php2
-rw-r--r--phpBB/includes/acp/acp_modules.php2
-rw-r--r--phpBB/includes/functions_module.php31
-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/acp_style_components_module.php42
-rw-r--r--phpBB/phpbb/db/migration/data/v310/signature_module_auth.php2
-rw-r--r--phpBB/phpbb/db/migration/tool/module.php7
-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
16 files changed, 113 insertions, 34 deletions
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/acp/acp_modules.php b/phpBB/includes/acp/acp_modules.php
index 6792886d2a..100e33044b 100644
--- a/phpBB/includes/acp/acp_modules.php
+++ b/phpBB/includes/acp/acp_modules.php
@@ -565,7 +565,7 @@ class acp_modules
{
// Skip entries we do not need if we know the module we are
// looking for
- if ($module && strpos(str_replace('\\', '_', $cur_module), $module) === false)
+ if ($module && strpos(str_replace('\\', '_', $cur_module), $module) === false && $module !== $cur_module)
{
continue;
}
diff --git a/phpBB/includes/functions_module.php b/phpBB/includes/functions_module.php
index b33f3d6866..dca720c36e 100644
--- a/phpBB/includes/functions_module.php
+++ b/phpBB/includes/functions_module.php
@@ -519,7 +519,7 @@ class p_master
}
// Not being able to overwrite ;)
- $this->module->u_action = append_sid("{$phpbb_admin_path}index.$phpEx", "i={$this->p_name}") . (($icat) ? '&icat=' . $icat : '') . "&mode={$this->p_mode}";
+ $this->module->u_action = append_sid("{$phpbb_admin_path}index.$phpEx", 'i=' . $this->get_module_identifier($this->p_name, $this->p_id)) . (($icat) ? '&icat=' . $icat : '') . "&mode={$this->p_mode}";
}
else
{
@@ -551,7 +551,7 @@ class p_master
$this->module->u_action = $phpbb_root_path . (($user->page['page_dir']) ? $user->page['page_dir'] . '/' : '') . $user->page['page_name'];
}
- $this->module->u_action = append_sid($this->module->u_action, "i={$this->p_name}") . (($icat) ? '&icat=' . $icat : '') . "&mode={$this->p_mode}";
+ $this->module->u_action = append_sid($this->module->u_action, 'i=' . $this->get_module_identifier($this->p_name, $this->p_id)) . (($icat) ? '&icat=' . $icat : '') . "&mode={$this->p_mode}";
}
// Add url_extra parameter to u_action url
@@ -799,12 +799,12 @@ class p_master
// if the item has a name use it, else use its id
if (empty($item_ary['name']))
{
- $u_title .= $item_ary['id'];
+ $u_title .= $item_ary['id'];
}
else
{
// if the category has a name, then use it.
- $u_title .= $item_ary['name'];
+ $u_title .= $this->get_module_identifier($item_ary['name'], $item_ary['id']);
}
// If the item is not a category append the mode
if (!$item_ary['cat'])
@@ -983,6 +983,29 @@ class p_master
}
/**
+ * If the basename contains a \ we dont use that for the URL.
+ *
+ * Firefox is currently unable to correctly copy a urlencoded \
+ * so users will be unable to post links to modules.
+ * However we can still fallback to the id instead of the name,
+ * so we do that in this case.
+ *
+ * @param string $basename Basename of the module
+ * @param int $id Id of the module
+ * @return mixed Identifier that should be used for
+ * module link creation
+ */
+ protected function get_module_identifier($basename, $id)
+ {
+ if (strpos($basename, '\\') === false)
+ {
+ return $basename;
+ }
+
+ return $id;
+ }
+
+ /**
* Checks whether the given module basename is a correct class name
*
* @param string $basename A module basename
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/acp_style_components_module.php b/phpBB/phpbb/db/migration/data/v310/acp_style_components_module.php
new file mode 100644
index 0000000000..9f168f4fd6
--- /dev/null
+++ b/phpBB/phpbb/db/migration/data/v310/acp_style_components_module.php
@@ -0,0 +1,42 @@
+<?php
+/**
+*
+* @package migration
+* @copyright (c) 2013 phpBB Group
+* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
+*
+*/
+
+namespace phpbb\db\migration\data\v310;
+
+class acp_style_components_module extends \phpbb\db\migration\migration
+{
+ public function effectively_installed()
+ {
+ $sql = 'SELECT module_id
+ FROM ' . MODULES_TABLE . "
+ WHERE module_class = 'acp'
+ AND module_langname = 'ACP_STYLE_COMPONENTS'";
+ $result = $this->db->sql_query($sql);
+ $module_id = $this->db->sql_fetchfield('module_id');
+ $this->db->sql_freeresult($result);
+
+ return $module_id == false;
+ }
+
+ static public function depends_on()
+ {
+ return array('\phpbb\db\migration\data\v310\dev');
+ }
+
+ public function update_data()
+ {
+ return array(
+ array('module.remove', array(
+ 'acp',
+ false,
+ 'ACP_STYLE_COMPONENTS',
+ )),
+ );
+ }
+}
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/migration/tool/module.php b/phpBB/phpbb/db/migration/tool/module.php
index 9869dd4230..3e39d87c04 100644
--- a/phpBB/phpbb/db/migration/tool/module.php
+++ b/phpBB/phpbb/db/migration/tool/module.php
@@ -182,9 +182,6 @@ class module implements \phpbb\db\migration\tool\tool_interface
{
// The "automatic" way
$basename = (isset($data['module_basename'])) ? $data['module_basename'] : '';
- $basename = str_replace(array('/', '\\'), '', $basename);
- $class = str_replace(array('/', '\\'), '', $class);
-
$module = $this->get_module_info($class, $basename);
$result = '';
@@ -353,9 +350,7 @@ class module implements \phpbb\db\migration\tool\tool_interface
}
// Automatic method
- $basename = str_replace(array('/', '\\'), '', $module['module_basename']);
- $class = str_replace(array('/', '\\'), '', $class);
-
+ $basename = $module['module_basename'];
$module_info = $this->get_module_info($class, $basename);
foreach ($module_info['modes'] as $mode => $info)
diff --git a/phpBB/phpbb/db/migrator.php b/phpBB/phpbb/db/migrator.php
index acfd943e56..47e1406043 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');