diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html
index bf323966ef..b54f212e91 100644
--- a/phpBB/docs/CHANGELOG.html
+++ b/phpBB/docs/CHANGELOG.html
@@ -102,6 +102,8 @@
[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)
+ [Fix] Stricter checks on smilie packs (Bug #19675)
+ [Fix] Gracefully return from cancelling pm drafts (Bug #19675)
1.i. Changes since 3.0.RC8
diff --git a/phpBB/includes/acp/acp_icons.php b/phpBB/includes/acp/acp_icons.php
index 2211420313..4f16c0c83d 100644
--- a/phpBB/includes/acp/acp_icons.php
+++ b/phpBB/includes/acp/acp_icons.php
@@ -337,11 +337,16 @@ class acp_icons
}
$icons_updated = 0;
+ $errors = array();
foreach ($images as $image)
{
- if (($mode == 'smilies' && ($image_emotion[$image] == '' || $image_code[$image] == '')) ||
- ($action == 'create' && !isset($image_add[$image])))
+ if ($mode == 'smilies' && ($image_emotion[$image] == '' || $image_code[$image] == ''))
{
+ $errors[$image] = 'SMILIE_NO_' . (($image_emotion[$image] == '') ? 'EMOTION' : 'CODE');
+ }
+ else if ($action == 'create' && !isset($image_add[$image]))
+ {
+ // skip images where add wasn't checked
}
else
{
@@ -431,13 +436,18 @@ class acp_icons
default:
$suc_lang = $lang;
}
+ $errormsgs = '
';
+ foreach ($errors as $img => $error)
+ {
+ $errormsgs .= '
' . sprintf($user->lang[$error], $img);
+ }
if ($action == 'modify')
{
- trigger_error($user->lang[$suc_lang . '_EDITED'] . adm_back_link($this->u_action), $level);
+ trigger_error($user->lang[$suc_lang . '_EDITED'] . $errormsgs . adm_back_link($this->u_action), $level);
}
else
{
- trigger_error($user->lang[$suc_lang . '_ADDED'] . adm_back_link($this->u_action), $level);
+ trigger_error($user->lang[$suc_lang . '_ADDED'] . $errormsgs .adm_back_link($this->u_action), $level);
}
break;
@@ -462,7 +472,7 @@ class acp_icons
if (preg_match_all("#'(.*?)', ?#", $pak_entry, $data))
{
if ((sizeof($data[1]) != 4 && $mode == 'icons') ||
- (sizeof($data[1]) != 6 && $mode == 'smilies'))
+ ((sizeof($data[1]) != 6 || (empty($data[1][4]) || empty($data[1][5]))) && $mode == 'smilies' ))
{
trigger_error($user->lang['WRONG_PAK_TYPE'] . adm_back_link($this->u_action), E_USER_WARNING);
}
diff --git a/phpBB/includes/ucp/ucp_pm_compose.php b/phpBB/includes/ucp/ucp_pm_compose.php
index b2e91d8dde..af592e3612 100644
--- a/phpBB/includes/ucp/ucp_pm_compose.php
+++ b/phpBB/includes/ucp/ucp_pm_compose.php
@@ -465,7 +465,8 @@ function compose_pm($id, $mode, $action)
'forum_id' => 0,
'save_time' => $current_time,
'draft_subject' => $subject,
- 'draft_message' => $message)
+ 'draft_message' => $message
+ )
);
$db->sql_query($sql);
@@ -488,6 +489,8 @@ function compose_pm($id, $mode, $action)
'g' => $to_group_id,
'p' => $msg_id)
);
+ $s_hidden_fields .= build_address_field($address_list);
+
confirm_box(false, 'SAVE_DRAFT', $s_hidden_fields);
}
@@ -541,7 +544,7 @@ function compose_pm($id, $mode, $action)
if ($submit || $preview || $refresh)
{
- if (!check_form_key('ucp_pm_compose'))
+ if (($submit || $preview) && !check_form_key('ucp_pm_compose'))
{
$error[] = $user->lang['FORM_INVALID'];
}
@@ -888,15 +891,9 @@ function compose_pm($id, $mode, $action)
}
// Build hidden address list
- $s_hidden_address_field = '';
- foreach ($address_list as $type => $adr_ary)
- {
- foreach ($adr_ary as $id => $field)
- {
- $s_hidden_address_field .= '';
- }
- }
-
+ $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);
$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;
@@ -1117,6 +1114,22 @@ function handle_message_list_actions(&$address_list, &$error, $remove_u, $remove
}
}
+/**
+* Build the hidden field for the recipients. Needed, as the variable is not read via request_var.
+*/
+function build_address_field($address_list)
+{
+ $s_hidden_address_field = '';
+ foreach ($address_list as $type => $adr_ary)
+ {
+ foreach ($adr_ary as $id => $field)
+ {
+ $s_hidden_address_field .= '';
+ }
+ }
+ return $s_hidden_address_field;
+}
+
/**
* Return number of private message recipients
*/
diff --git a/phpBB/language/en/acp/posting.php b/phpBB/language/en/acp/posting.php
index 2f390dfebd..961ca2612c 100644
--- a/phpBB/language/en/acp/posting.php
+++ b/phpBB/language/en/acp/posting.php
@@ -162,6 +162,8 @@ $lang = array_merge($lang, array(
'SMILIES_CONFIG' => 'Smiley configuration',
'SMILIES_DELETED' => 'The smiley has been removed successfully.',
'SMILIES_EDIT' => 'Edit smiley',
+ 'SMILIE_NO_CODE' => 'The smilie ā%sā was ignored, as there was no code entered.',
+ 'SMILIE_NO_EMOTION' => 'The smilie ā%sā was ignored, as there was no emotion entered.',
'SMILIES_NONE_EDITED' => 'No smilies were updated.',
'SMILIES_ONE_EDITED' => 'The smiley has been updated successfully.',
'SMILIES_EDITED' => 'The smilies have been updated successfully.',
diff --git a/phpBB/styles/subsilver2/template/posting_body.html b/phpBB/styles/subsilver2/template/posting_body.html
index a1cd573768..a1515f9628 100644
--- a/phpBB/styles/subsilver2/template/posting_body.html
+++ b/phpBB/styles/subsilver2/template/posting_body.html
@@ -382,13 +382,14 @@
-
+ {S_FORM_TOKEN}
-
+
+
@@ -397,8 +398,7 @@
- {S_FORM_TOKEN}
-
+