From 4f6441b4117e8b7801f67f1104b9435bfa19295a Mon Sep 17 00:00:00 2001 From: Nicofuma Date: Fri, 25 Apr 2014 01:04:00 +0200 Subject: [PATCH 1/5] [ticket/11480] PM : "Unknown folder" returned when inbox folder is full https://tracker.phpbb.com/browse/PHPBB3-11480 PHPBB3-11480 --- phpBB/includes/ucp/ucp_pm.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/phpBB/includes/ucp/ucp_pm.php b/phpBB/includes/ucp/ucp_pm.php index 447b6ebe87..2a718c0701 100644 --- a/phpBB/includes/ucp/ucp_pm.php +++ b/phpBB/includes/ucp/ucp_pm.php @@ -272,6 +272,12 @@ class ucp_pm $folder_id = (int) $row['folder_id']; } + // Do not allow hold messages to be seen + if ($folder_id == PRIVMSGS_HOLD_BOX) + { + trigger_error('NO_AUTH_READ_HOLD_MESSAGE'); + } + $message_row = array(); if ($action == 'view_message' && $msg_id) { From 9c8e843defef468cceba0d738d7b2dbf985901c6 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Thu, 29 May 2014 14:56:45 +0200 Subject: [PATCH 2/5] [ticket/11480] Add functionnal test PHPBB3-11480 --- tests/functional/private_messages_test.php | 64 ++++++++++++++++++ .../phpbb_functional_test_case.php | 67 ++++++++++++++++--- 2 files changed, 123 insertions(+), 8 deletions(-) create mode 100644 tests/functional/private_messages_test.php diff --git a/tests/functional/private_messages_test.php b/tests/functional/private_messages_test.php new file mode 100644 index 0000000000..0aa62d95e5 --- /dev/null +++ b/tests/functional/private_messages_test.php @@ -0,0 +1,64 @@ +login(); + $this->admin_login(); + + $crawler = self::request('GET', "adm/index.php?sid={$this->sid}&i=board&mode=message"); + + $form = $crawler->selectButton('Submit')->form(); + $values = $form->getValues(); + + // Set the maximum number of private messages per folder to 1 + $values['config[pm_max_msgs]'] = 1; + + $form->setValues($values); + + $crawler = self::submit($form); + $this->assertContains($this->lang('CONFIG_UPDATED'), $crawler->filter('.successbox')->text()); + } + + public function test_inbox_full() + { + $this->login(); + $message_id = $this->create_private_message('Test private message #1', 'This is a test private message sent by the testing framework.', array(2)); + + $crawler = self::request('GET', "ucp.php?i=pm&mode=view&sid{$this->sid}&p={$message_id}"); + $this->assertContains($this->lang('UCP_PM_VIEW'), $crawler->filter('html')->text()); + + $message_id = $this->create_private_message('Test private message #2', 'This is a test private message sent by the testing framework.', array(2)); + + $crawler = self::request('GET', "ucp.php?i=pm&mode=view&sid{$this->sid}&p={$message_id}"); + $this->assertContains($this->lang('NO_AUTH_READ_HOLD_MESSAGE'), $crawler->filter('html')->text()); + } + public function test_restore_config() + { + $this->login(); + $this->admin_login(); + + $crawler = self::request('GET', "adm/index.php?sid={$this->sid}&i=board&mode=message"); + + $form = $crawler->selectButton('Submit')->form(); + $values = $form->getValues(); + + $values['config[pm_max_msgs]'] = 50; + + $form->setValues($values); + + $crawler = self::submit($form); + $this->assertContains($this->lang('CONFIG_UPDATED'), $crawler->filter('.successbox')->text()); + } +} diff --git a/tests/test_framework/phpbb_functional_test_case.php b/tests/test_framework/phpbb_functional_test_case.php index 5dfe07d380..c71cd4d0a9 100644 --- a/tests/test_framework/phpbb_functional_test_case.php +++ b/tests/test_framework/phpbb_functional_test_case.php @@ -665,6 +665,64 @@ class phpbb_functional_test_case extends phpbb_test_case { $this->add_lang('posting'); + $crawler = $this->submit_message($posting_url, $posting_contains, $form_data); + + $this->assertContains($this->lang('POST_STORED'), $crawler->filter('html')->text()); + $url = $crawler->selectLink($this->lang('VIEW_MESSAGE', '', ''))->link()->getUri(); + + return array( + 'topic_id' => $this->get_parameter_from_link($url, 't'), + 'post_id' => $this->get_parameter_from_link($url, 'p'), + ); + } + + /** + * Creates a private message + * + * Be sure to login before creating + * + * @param string $subject + * @param string $message + * @param array $to + * @param array $additional_form_data Any additional form data to be sent in the request + * @return int private_message_id + */ + public function create_private_message($subject, $message, $to, $additional_form_data = array()) + { + $this->add_lang(array('ucp', 'posting')); + + $posting_url = "ucp.php?i=pm&mode=compose&sid={$this->sid}"; + + $form_data = array_merge(array( + 'subject' => $subject, + 'message' => $message, + 'post' => true, + ), $additional_form_data); + + foreach ($to as $user_id) + { + $form_data['address_list[u][' . $user_id . ']'] = 'to'; + } + + $crawler = self::submit_message($posting_url, 'POST_NEW_PM', $form_data); + + $this->assertContains($this->lang('MESSAGE_STORED'), $crawler->filter('html')->text()); + $url = $crawler->selectLink($this->lang('VIEW_PRIVATE_MESSAGE', '', ''))->link()->getUri(); + + return $this->get_parameter_from_link($url, 'p'); + } + + /** + * Helper for submitting a message (post or private message) + * + * @param string $posting_url + * @param string $posting_contains + * @param array $form_data + * @return \Symfony\Component\DomCrawler\Crawler the crawler object + */ + protected function submit_message($posting_url, $posting_contains, $form_data) + { + $crawler = self::request('GET', $posting_url); $this->assertContains($this->lang($posting_contains), $crawler->filter('html')->text()); @@ -689,14 +747,7 @@ class phpbb_functional_test_case extends phpbb_test_case // I use a request because the form submission method does not allow you to send data that is not // contained in one of the actual form fields that the browser sees (i.e. it ignores "hidden" inputs) // Instead, I send it as a request with the submit button "post" set to true. - $crawler = self::request('POST', $posting_url, $form_data); - $this->assertContains($this->lang('POST_STORED'), $crawler->filter('html')->text()); - $url = $crawler->selectLink($this->lang('VIEW_MESSAGE', '', ''))->link()->getUri(); - - return array( - 'topic_id' => $this->get_parameter_from_link($url, 't'), - 'post_id' => $this->get_parameter_from_link($url, 'p'), - ); + return self::request('POST', $posting_url, $form_data); } /** From 5762af618049ca58b5c5c9dde8df2ebf619c49af Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Thu, 29 May 2014 22:45:34 +0200 Subject: [PATCH 3/5] [ticket/11480] Fix typos PHPBB3-11480 --- tests/functional/private_messages_test.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/functional/private_messages_test.php b/tests/functional/private_messages_test.php index 0aa62d95e5..15aa2b681a 100644 --- a/tests/functional/private_messages_test.php +++ b/tests/functional/private_messages_test.php @@ -2,7 +2,7 @@ /** * * @package testing -* @copyright (c) 2012 phpBB Group +* @copyright (c) 2014 phpBB Group * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 * */ @@ -44,6 +44,7 @@ class phpbb_functional_private_messages_test extends phpbb_functional_test_case $crawler = self::request('GET', "ucp.php?i=pm&mode=view&sid{$this->sid}&p={$message_id}"); $this->assertContains($this->lang('NO_AUTH_READ_HOLD_MESSAGE'), $crawler->filter('html')->text()); } + public function test_restore_config() { $this->login(); From 0ce27eacb1e0ca797cb8722fc3e57fd3ae7bc85f Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Mon, 30 Jun 2014 00:33:33 +0200 Subject: [PATCH 4/5] [ticket/11480] Fix the double spaces in phpbb_functional_test_case PHPBB3-11480 --- tests/test_framework/phpbb_functional_test_case.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_framework/phpbb_functional_test_case.php b/tests/test_framework/phpbb_functional_test_case.php index c71cd4d0a9..4522674649 100644 --- a/tests/test_framework/phpbb_functional_test_case.php +++ b/tests/test_framework/phpbb_functional_test_case.php @@ -747,7 +747,7 @@ class phpbb_functional_test_case extends phpbb_test_case // I use a request because the form submission method does not allow you to send data that is not // contained in one of the actual form fields that the browser sees (i.e. it ignores "hidden" inputs) // Instead, I send it as a request with the submit button "post" set to true. - return self::request('POST', $posting_url, $form_data); + return self::request('POST', $posting_url, $form_data); } /** From 8bdfda723cd29cc191a252ee00da7da2fa8c6147 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Wed, 30 Jul 2014 15:08:04 +0200 Subject: [PATCH 5/5] [ticket/11480] Move the test into get_folder() PHPBB3-11480 --- phpBB/includes/functions_privmsgs.php | 2 +- phpBB/includes/ucp/ucp_pm.php | 6 ------ 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/phpBB/includes/functions_privmsgs.php b/phpBB/includes/functions_privmsgs.php index b08d6e7f5c..c99f40d453 100644 --- a/phpBB/includes/functions_privmsgs.php +++ b/phpBB/includes/functions_privmsgs.php @@ -208,7 +208,7 @@ function get_folder($user_id, $folder_id = false) ); } - if ($folder_id !== false && !isset($folder[$folder_id])) + if ($folder_id !== false && $folder_id !== PRIVMSGS_HOLD_BOX && !isset($folder[$folder_id])) { trigger_error('UNKNOWN_FOLDER'); } diff --git a/phpBB/includes/ucp/ucp_pm.php b/phpBB/includes/ucp/ucp_pm.php index 2a718c0701..447b6ebe87 100644 --- a/phpBB/includes/ucp/ucp_pm.php +++ b/phpBB/includes/ucp/ucp_pm.php @@ -272,12 +272,6 @@ class ucp_pm $folder_id = (int) $row['folder_id']; } - // Do not allow hold messages to be seen - if ($folder_id == PRIVMSGS_HOLD_BOX) - { - trigger_error('NO_AUTH_READ_HOLD_MESSAGE'); - } - $message_row = array(); if ($action == 'view_message' && $msg_id) {