diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html
index 660e5abb19..a93f5106a8 100644
--- a/phpBB/docs/CHANGELOG.html
+++ b/phpBB/docs/CHANGELOG.html
@@ -94,9 +94,14 @@
[Change] Do not check usernames against word censor list. Disallowed usernames is already checked and word censor belong to posts. (Bug #17745)
[Fix] Additionally include non-postable forums for moderators forums shown within the teams list. (Bug #17265)
[Change] Sped up viewforum considerably (also goes towards mcp_forum)
-
+ [Fix] Do not split topic list for topics being promoted to announcements after been moved to another forum (Bug #18635)
+ [Fix] Allow editing usernames within database_update on username cleanup (Bug #18415)
+ [Fix] Fixing wrong sync() calls if moving all posts by a member in ACP (Bug #18385)
+ [Fix] Check entered imagemagick path for trailing slash (Bug #18205)
+ [Fix] Use proper title on index for new/unread posts (Bug #13101) - patch provided by Pyramide
+ [Fix] Allow calls to $user->set_cookie() define no cookie time for setting session cookies (Bug #18025)
-
+
1.i. Changes since 3.0.RC8
diff --git a/phpBB/includes/acp/acp_attachments.php b/phpBB/includes/acp/acp_attachments.php
index 4ab47ec9d6..e2ee126479 100644
--- a/phpBB/includes/acp/acp_attachments.php
+++ b/phpBB/includes/acp/acp_attachments.php
@@ -184,7 +184,18 @@ class acp_attachments
}
// We strip eventually manual added convert program, we only want the patch
- $this->new_config['img_imagick'] = str_replace(array('convert', '.exe'), array('', ''), $this->new_config['img_imagick']);
+ if ($this->new_config['img_imagick'])
+ {
+ // Change path separator
+ $this->new_config['img_magick'] = str_replace('\\', '/', $this->new_config['img_magick']);
+ $this->new_config['img_imagick'] = str_replace(array('convert', '.exe'), array('', ''), $this->new_config['img_imagick']);
+
+ // Check for trailing slash
+ if (substr($this->new_config['img_magick'], -1) !== '/')
+ {
+ $this->new_config['img_magick'] .= '/';
+ }
+ }
$supported_types = get_supported_image_types();
@@ -1134,7 +1145,7 @@ class acp_attachments
foreach ($locations as $location)
{
// The path might not end properly, fudge it
- if (substr($location, -1, 1) !== '/')
+ if (substr($location, -1) !== '/')
{
$location .= '/';
}
diff --git a/phpBB/includes/acp/acp_users.php b/phpBB/includes/acp/acp_users.php
index 310759d38c..40230d0270 100644
--- a/phpBB/includes/acp/acp_users.php
+++ b/phpBB/includes/acp/acp_users.php
@@ -630,7 +630,7 @@ class acp_users
}
$forum_id_ary = array_unique($forum_id_ary);
- $topic_id_ary = array_unique(array_merge($topic_id_ary, $new_topic_id_ary));
+ $topic_id_ary = array_unique(array_merge(array_keys($topic_id_ary), $new_topic_id_ary));
if (sizeof($topic_id_ary))
{
diff --git a/phpBB/includes/acp/auth.php b/phpBB/includes/acp/auth.php
index b4ea0e46d0..177c42f581 100644
--- a/phpBB/includes/acp/auth.php
+++ b/phpBB/includes/acp/auth.php
@@ -778,6 +778,10 @@ class auth_admin extends auth
$cache->destroy('_acl_options');
$this->acl_clear_prefetch();
+ // Because we just changed the options and also purged the options cache, we instantly update/regenerate it for later calls to succeed.
+ $this->option_ids = $this->acl_options = array();
+ $this->auth_admin();
+
return true;
}
diff --git a/phpBB/includes/functions_display.php b/phpBB/includes/functions_display.php
index 05630342d1..f9cabaff29 100644
--- a/phpBB/includes/functions_display.php
+++ b/phpBB/includes/functions_display.php
@@ -371,7 +371,7 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod
$s_subforums_list = array();
foreach ($subforums_list as $subforum)
{
- $s_subforums_list[] = '' . $subforum['name'] . '';
+ $s_subforums_list[] = '' . $subforum['name'] . '';
}
$s_subforums_list = (string) implode(', ', $s_subforums_list);
$catless = ($row['parent_id'] == $root_data['forum_id']) ? true : false;
@@ -409,6 +409,7 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod
$l_post_click_count => $post_click_count,
'FORUM_FOLDER_IMG' => $user->img($folder_image, $folder_alt),
'FORUM_FOLDER_IMG_SRC' => $user->img($folder_image, $folder_alt, false, '', 'src'),
+ 'FORUM_FOLDER_IMG_ALT' => isset($user->lang[$folder_alt]) ? $user->lang[$folder_alt] : '',
'FORUM_IMAGE' => ($row['forum_image']) ? '
' : '',
'FORUM_IMAGE_SRC' => ($row['forum_image']) ? $phpbb_root_path . $row['forum_image'] : '',
'LAST_POST_SUBJECT' => censor_text($last_post_subject),
diff --git a/phpBB/includes/functions_posting.php b/phpBB/includes/functions_posting.php
index 9ed2d78cb7..4b7387115a 100644
--- a/phpBB/includes/functions_posting.php
+++ b/phpBB/includes/functions_posting.php
@@ -618,6 +618,11 @@ function create_thumbnail($source, $destination, $mimetype)
// Only use imagemagick if defined and the passthru function not disabled
if ($config['img_imagick'] && function_exists('passthru'))
{
+ if (substr($config['img_magick'], -1) !== '/')
+ {
+ $config['img_magick'] .= '/';
+ }
+
@passthru(escapeshellcmd($config['img_imagick']) . 'convert' . ((defined('PHP_OS') && preg_match('#^win#i', PHP_OS)) ? '.exe' : '') . ' -quality 85 -antialias -sample ' . $new_width . 'x' . $new_height . ' "' . str_replace('\\', '/', $source) . '" +profile "*" "' . str_replace('\\', '/', $destination) . '"');
if (file_exists($destination))
diff --git a/phpBB/includes/session.php b/phpBB/includes/session.php
index 9411ec1ae6..afc9e810e3 100644
--- a/phpBB/includes/session.php
+++ b/phpBB/includes/session.php
@@ -872,7 +872,11 @@ class session
/**
* Sets a cookie
*
- * Sets a cookie of the given name with the specified data for the given length of time.
+ * Sets a cookie of the given name with the specified data for the given length of time. If no time is specified, a session cookie will be set.
+ *
+ * @param string $name Name of the cookie, will be automatically prefixed with the phpBB cookie name. track becomes [cookie_name]_track then.
+ * @param string $cookiedata The data to hold within the cookie
+ * @param int $cookietime The expiration time as UNIX timestamp. If 0 is provided, a session cookie is set.
*/
function set_cookie($name, $cookiedata, $cookietime)
{
@@ -882,7 +886,7 @@ class session
$expire = gmdate('D, d-M-Y H:i:s \\G\\M\\T', $cookietime);
$domain = (!$config['cookie_domain'] || $config['cookie_domain'] == 'localhost' || $config['cookie_domain'] == '127.0.0.1') ? '' : '; domain=' . $config['cookie_domain'];
- header('Set-Cookie: ' . $name_data . '; expires=' . $expire . '; path=' . $config['cookie_path'] . $domain . ((!$config['cookie_secure']) ? '' : '; secure') . '; HttpOnly', false);
+ header('Set-Cookie: ' . $name_data . (($cookietime) ? '; expires=' . $expire : '') . '; path=' . $config['cookie_path'] . $domain . ((!$config['cookie_secure']) ? '' : '; secure') . '; HttpOnly', false);
}
/**
diff --git a/phpBB/install/database_update.php b/phpBB/install/database_update.php
index fc9ce65dac..990591e8a4 100644
--- a/phpBB/install/database_update.php
+++ b/phpBB/install/database_update.php
@@ -616,6 +616,9 @@ if (version_compare($current_version, '3.0.RC8', '<='))
$modify_users = request_var('modify_users', array(0 => ''));
$new_usernames = request_var('new_usernames', array(0 => ''), true);
+ // We need this file if someone wants to edit usernames.
+ include($phpbb_root_path . 'includes/utf/utf_normalizer.' . $phpEx);
+
if (!class_exists('utf_new_normalizer'))
{
if (!file_exists($phpbb_root_path . 'install/data/new_normalizer.' . $phpEx))
diff --git a/phpBB/styles/prosilver/template/forumlist_body.html b/phpBB/styles/prosilver/template/forumlist_body.html
index 753d83995c..76e86ae1c2 100644
--- a/phpBB/styles/prosilver/template/forumlist_body.html
+++ b/phpBB/styles/prosilver/template/forumlist_body.html
@@ -26,7 +26,7 @@
-
- -
+
-
{forumrow.FORUM_IMAGE}
{forumrow.FORUM_NAME}
{forumrow.FORUM_DESC}
diff --git a/phpBB/styles/prosilver/template/overall_header.html b/phpBB/styles/prosilver/template/overall_header.html
index 7c447afba5..a87dc671b7 100644
--- a/phpBB/styles/prosilver/template/overall_header.html
+++ b/phpBB/styles/prosilver/template/overall_header.html
@@ -8,7 +8,7 @@
-
+
{META}
diff --git a/phpBB/styles/prosilver/template/simple_header.html b/phpBB/styles/prosilver/template/simple_header.html
index 65538f5da9..5acf19f000 100644
--- a/phpBB/styles/prosilver/template/simple_header.html
+++ b/phpBB/styles/prosilver/template/simple_header.html
@@ -8,7 +8,7 @@
-
+
{META}
diff --git a/phpBB/styles/prosilver/template/viewforum_body.html b/phpBB/styles/prosilver/template/viewforum_body.html
index 1a731e0451..8bf9f98747 100644
--- a/phpBB/styles/prosilver/template/viewforum_body.html
+++ b/phpBB/styles/prosilver/template/viewforum_body.html
@@ -136,7 +136,7 @@
-
- - {NEWEST_POST_IMG} {topicrow.TOPIC_TITLE}
+
- style="background-image: url({T_ICONS_PATH}{topicrow.TOPIC_ICON_IMG}); background-repeat: no-repeat;" title="{topicrow.TOPIC_FOLDER_IMG_ALT}">{NEWEST_POST_IMG} {topicrow.TOPIC_TITLE}
{topicrow.UNAPPROVED_IMG}
{REPORTED_IMG}
diff --git a/phpBB/styles/prosilver/template/viewtopic_body.html b/phpBB/styles/prosilver/template/viewtopic_body.html
index 2238f402aa..ee89b3b15f 100644
--- a/phpBB/styles/prosilver/template/viewtopic_body.html
+++ b/phpBB/styles/prosilver/template/viewtopic_body.html
@@ -257,7 +257,7 @@
diff --git a/phpBB/styles/prosilver/template/viewtopic_print.html b/phpBB/styles/prosilver/template/viewtopic_print.html
index 669c58d547..45c7010867 100644
--- a/phpBB/styles/prosilver/template/viewtopic_print.html
+++ b/phpBB/styles/prosilver/template/viewtopic_print.html
@@ -8,7 +8,7 @@
-
+
diff --git a/phpBB/styles/subsilver2/template/overall_header.html b/phpBB/styles/subsilver2/template/overall_header.html
index 3603d8a3e2..309e9a1ef1 100644
--- a/phpBB/styles/subsilver2/template/overall_header.html
+++ b/phpBB/styles/subsilver2/template/overall_header.html
@@ -8,7 +8,7 @@
-
+
{META}
diff --git a/phpBB/styles/subsilver2/template/simple_header.html b/phpBB/styles/subsilver2/template/simple_header.html
index f3e374fac0..bcef9a7059 100644
--- a/phpBB/styles/subsilver2/template/simple_header.html
+++ b/phpBB/styles/subsilver2/template/simple_header.html
@@ -8,7 +8,7 @@
-
+
{META}
diff --git a/phpBB/viewforum.php b/phpBB/viewforum.php
index 0b2af13d76..197f77065f 100644
--- a/phpBB/viewforum.php
+++ b/phpBB/viewforum.php
@@ -493,8 +493,9 @@ if (sizeof($shadow_topic_list))
// We want to retain some values
$row = array_merge($row, array(
'topic_moved_id' => $rowset[$orig_topic_id]['topic_moved_id'],
- 'topic_status' => $rowset[$orig_topic_id]['topic_status'])
- );
+ 'topic_status' => $rowset[$orig_topic_id]['topic_status'],
+ 'topic_type' => $rowset[$orig_topic_id]['topic_type'],
+ ));
$rowset[$orig_topic_id] = $row;
}
diff --git a/phpBB/viewtopic.php b/phpBB/viewtopic.php
index f24eebd1a7..4240c3da7a 100644
--- a/phpBB/viewtopic.php
+++ b/phpBB/viewtopic.php
@@ -578,7 +578,7 @@ $template->assign_vars(array(
'S_SELECT_SORT_DAYS' => $s_limit_days,
'S_SINGLE_MODERATOR' => (!empty($forum_moderators[$forum_id]) && sizeof($forum_moderators[$forum_id]) > 1) ? false : true,
'S_TOPIC_ACTION' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&t=$topic_id&start=$start"),
- 'S_TOPIC_MOD' => ($topic_mod != '') ? '' : '',
+ 'S_TOPIC_MOD' => ($topic_mod != '') ? '' : '',
'S_MOD_ACTION' => append_sid("{$phpbb_root_path}mcp.$phpEx", "f=$forum_id&t=$topic_id&quickmod=1&redirect=" . urlencode(str_replace('&', '&', $viewtopic_url)), true, $user->session_id),
'S_VIEWTOPIC' => true,