[ticket/11548] Fix incorrect usage of array_map on acp groups page

The array_map was only ran on small parts of the actual error array instead
of the whole one. This resulted in the output of the language variables' names
rather than their actual value.

PHPBB3-11548
This commit is contained in:
Marc Alexander 2013-07-12 13:40:30 -04:00
parent 16aeaed7bd
commit da8e35ac77
3 changed files with 51 additions and 50 deletions

View file

@ -437,7 +437,7 @@ class acp_groups
if ($validation_error = validate_data($submit_ary, $validation_checks)) if ($validation_error = validate_data($submit_ary, $validation_checks))
{ {
// Replace "error" string with its real, localised form // Replace "error" string with its real, localised form
$error = array_merge($error, array_map(array(&$user, 'lang'), $validation_error)); $error = array_merge($error, $validation_error);
} }
if (!sizeof($error)) if (!sizeof($error))
@ -530,6 +530,7 @@ class acp_groups
if (sizeof($error)) if (sizeof($error))
{ {
$error = array_map(array(&$user, 'lang'), $error);
$group_rank = $submit_ary['rank']; $group_rank = $submit_ary['rank'];
$group_desc_data = array( $group_desc_data = array(

View file

@ -14,6 +14,26 @@ abstract class phpbb_functional_common_groups_test extends phpbb_functional_test
{ {
abstract protected function get_url(); abstract protected function get_url();
// Enable all avatars in the ACP
protected function enable_all_avatars()
{
$this->add_lang('acp/board');
$crawler = self::request('GET', 'adm/index.php?i=board&mode=avatar&sid=' . $this->sid);
// Check the default entries we should have
$this->assertContains($this->lang('ALLOW_REMOTE'), $crawler->text());
$this->assertContains($this->lang('ALLOW_AVATARS'), $crawler->text());
$this->assertContains($this->lang('ALLOW_LOCAL'), $crawler->text());
// Now start setting the needed settings
$form = $crawler->selectButton($this->lang('SUBMIT'))->form();
$form['config[allow_avatar_local]']->select(1);
$form['config[allow_avatar_remote]']->select(1);
$form['config[allow_avatar_remote_upload]']->select(1);
$crawler = self::submit($form);
$this->assertContains($this->lang('CONFIG_UPDATED'), $crawler->text());
}
public function groups_manage_test_data() public function groups_manage_test_data()
{ {
return array( return array(
@ -41,4 +61,33 @@ abstract class phpbb_functional_common_groups_test extends phpbb_functional_test
$crawler = self::submit($form); $crawler = self::submit($form);
$this->assertContains($this->lang($expected), $crawler->text()); $this->assertContains($this->lang($expected), $crawler->text());
} }
public function group_avatar_min_max_data()
{
return array(
array('uploadurl', 'foo', 'TOO_SHORT'),
array('uploadurl', 'foobar', 'AVATAR_URL_INVALID'),
array('uploadurl', str_repeat('f', 256), 'TOO_LONG'),
array('remotelink', 'foo', 'TOO_SHORT'),
array('remotelink', 'foobar', 'AVATAR_URL_INVALID'),
array('remotelink', str_repeat('f', 256), 'TOO_LONG'),
);
}
/**
* @dataProvider group_avatar_min_max_data
*/
public function test_group_avatar_min_max($form_name, $input, $expected)
{
$this->login();
$this->admin_login();
$this->add_lang(array('ucp', 'acp/groups'));
$this->enable_all_avatars();
$crawler = self::request('GET', $this->get_url() . '&g=5&sid=' . $this->sid);
$form = $crawler->selectButton($this->lang('SUBMIT'))->form();
$form[$form_name]->setValue($input);
$crawler = self::submit($form);
$this->assertContains($this->lang($expected), $crawler->text());
}
} }

View file

@ -18,53 +18,4 @@ class phpbb_functional_ucp_groups_test extends phpbb_functional_common_groups_te
{ {
return 'ucp.php?i=groups&mode=manage&action=edit'; return 'ucp.php?i=groups&mode=manage&action=edit';
} }
// Enable all avatars in the ACP
private function enable_all_avatars()
{
$this->add_lang('acp/board');
$crawler = self::request('GET', 'adm/index.php?i=board&mode=avatar&sid=' . $this->sid);
// Check the default entries we should have
$this->assertContains($this->lang('ALLOW_REMOTE'), $crawler->text());
$this->assertContains($this->lang('ALLOW_AVATARS'), $crawler->text());
$this->assertContains($this->lang('ALLOW_LOCAL'), $crawler->text());
// Now start setting the needed settings
$form = $crawler->selectButton($this->lang('SUBMIT'))->form();
$form['config[allow_avatar_local]']->select(1);
$form['config[allow_avatar_remote]']->select(1);
$form['config[allow_avatar_remote_upload]']->select(1);
$crawler = self::submit($form);
$this->assertContains($this->lang('CONFIG_UPDATED'), $crawler->text());
}
public function group_avatar_min_max_data()
{
return array(
array('uploadurl', 'foo', 'TOO_SHORT'),
array('uploadurl', 'foobar', 'AVATAR_URL_INVALID'),
array('uploadurl', str_repeat('f', 256), 'TOO_LONG'),
array('remotelink', 'foo', 'TOO_SHORT'),
array('remotelink', 'foobar', 'AVATAR_URL_INVALID'),
array('remotelink', str_repeat('f', 256), 'TOO_LONG'),
);
}
/**
* @dataProvider group_avatar_min_max_data
*/
public function test_group_avatar_min_max($form_name, $input, $expected)
{
$this->login();
$this->admin_login();
$this->add_lang(array('ucp', 'acp/groups'));
$this->enable_all_avatars();
$crawler = self::request('GET', $this->get_url() . '&g=5&sid=' . $this->sid);
$form = $crawler->selectButton($this->lang('SUBMIT'))->form();
$form[$form_name]->setValue($input);
$crawler = self::submit($form);
$this->assertContains($this->lang($expected), $crawler->text());
}
} }