[ticket/10411] Catch exceptions from grouppositions

PHPBB3-10411
This commit is contained in:
Joas Schilling 2013-02-26 16:53:51 +01:00
parent e0df593448
commit 9e70f7a4e0
2 changed files with 108 additions and 49 deletions

View file

@ -851,53 +851,66 @@ class acp_groups
{ {
$group_position = $phpbb_container->get('groupposition.' . $field); $group_position = $phpbb_container->get('groupposition.' . $field);
$group_position->set_admin_back_link($this->u_action);
} }
if ($field == 'teampage') if ($field == 'teampage')
{ {
switch ($action) try
{ {
case 'add': switch ($action)
$group_position->add_group_teampage($group_id, $category_id); {
break; case 'add':
$group_position->add_group_teampage($group_id, $category_id);
break;
case 'add_category': case 'add_category':
$group_position->add_category_teampage($request->variable('category_name', '', true)); $group_position->add_category_teampage($request->variable('category_name', '', true));
break; break;
case 'delete': case 'delete':
$group_position->delete_teampage($teampage_id); $group_position->delete_teampage($teampage_id);
break; break;
case 'move_up': case 'move_up':
$group_position->move_up_teampage($teampage_id); $group_position->move_up_teampage($teampage_id);
break; break;
case 'move_down': case 'move_down':
$group_position->move_down_teampage($teampage_id); $group_position->move_down_teampage($teampage_id);
break; break;
}
}
catch (phpbb_groupposition_exception $exception)
{
trigger_error($user->lang($exception->getMessage()) . adm_back_link($this->u_action), E_USER_WARNING);
} }
} }
else if ($field == 'legend') else if ($field == 'legend')
{ {
switch ($action) try
{ {
case 'add': switch ($action)
$group_position->add_group($group_id); {
break; case 'add':
$group_position->add_group($group_id);
break;
case 'delete': case 'delete':
$group_position->delete_group($group_id); $group_position->delete_group($group_id);
break; break;
case 'move_up': case 'move_up':
$group_position->move_up($group_id); $group_position->move_up($group_id);
break; break;
case 'move_down': case 'move_down':
$group_position->move_down($group_id); $group_position->move_down($group_id);
break; break;
}
}
catch (phpbb_groupposition_exception $exception)
{
trigger_error($user->lang($exception->getMessage()) . adm_back_link($this->u_action), E_USER_WARNING);
} }
} }
else else

View file

@ -2606,8 +2606,15 @@ function group_create(&$group_id, $type, $name, $desc, $group_attributes, $allow
$teampage = $phpbb_container->get('groupposition.teampage'); $teampage = $phpbb_container->get('groupposition.teampage');
if ($group_id) if ($group_id)
{ {
$current_legend = $legend->get_group_value($group_id); try
$current_teampage = $teampage->get_group_value($group_id); {
$current_legend = $legend->get_group_value($group_id);
$current_teampage = $teampage->get_group_value($group_id);
}
catch (phpbb_groupposition_exception $exception)
{
trigger_error($user->lang($exception->getMessage()));
}
} }
if (!empty($group_attributes['group_legend'])) if (!empty($group_attributes['group_legend']))
@ -2626,7 +2633,14 @@ function group_create(&$group_id, $type, $name, $desc, $group_attributes, $allow
else if ($group_id && ($current_legend != phpbb_groupposition_legend::GROUP_DISABLED)) else if ($group_id && ($current_legend != phpbb_groupposition_legend::GROUP_DISABLED))
{ {
// Group is removed from the legend // Group is removed from the legend
$legend->delete_group($group_id, true); try
{
$legend->delete_group($group_id, true);
}
catch (phpbb_groupposition_exception $exception)
{
trigger_error($user->lang($exception->getMessage()));
}
$group_attributes['group_legend'] = phpbb_groupposition_legend::GROUP_DISABLED; $group_attributes['group_legend'] = phpbb_groupposition_legend::GROUP_DISABLED;
} }
else else
@ -2733,7 +2747,14 @@ function group_create(&$group_id, $type, $name, $desc, $group_attributes, $allow
// which is currently displayed. // which is currently displayed.
if (!$group_teampage && $group_id && $current_teampage != phpbb_groupposition_teampage::GROUP_DISABLED) if (!$group_teampage && $group_id && $current_teampage != phpbb_groupposition_teampage::GROUP_DISABLED)
{ {
$teampage->delete_group($group_id); try
{
$teampage->delete_group($group_id);
}
catch (phpbb_groupposition_exception $exception)
{
trigger_error($user->lang($exception->getMessage()));
}
} }
if (!$group_id) if (!$group_id)
@ -2746,21 +2767,28 @@ function group_create(&$group_id, $type, $name, $desc, $group_attributes, $allow
} }
} }
if ($group_teampage && $current_teampage == phpbb_groupposition_teampage::GROUP_DISABLED) try
{ {
$teampage->add_group($group_id); if ($group_teampage && $current_teampage == phpbb_groupposition_teampage::GROUP_DISABLED)
}
if ($group_teampage)
{
if ($current_teampage == phpbb_groupposition_teampage::GROUP_DISABLED)
{ {
$teampage->add_group($group_id); $teampage->add_group($group_id);
} }
if ($group_teampage)
{
if ($current_teampage == phpbb_groupposition_teampage::GROUP_DISABLED)
{
$teampage->add_group($group_id);
}
}
else if ($group_id && ($current_teampage != phpbb_groupposition_teampage::GROUP_DISABLED))
{
$teampage->delete_group($group_id);
}
} }
else if ($group_id && ($current_teampage != phpbb_groupposition_teampage::GROUP_DISABLED)) catch (phpbb_groupposition_exception $exception)
{ {
$teampage->delete_group($group_id); trigger_error($user->lang($exception->getMessage()));
} }
unset($teampage); unset($teampage);
@ -2887,13 +2915,31 @@ function group_delete($group_id, $group_name = false)
while ($start); while ($start);
// Delete group from legend and teampage // Delete group from legend and teampage
$legend = $phpbb_container->get('groupposition.legend'); try
$legend->delete_group($group_id); {
unset($legend); $legend = $phpbb_container->get('groupposition.legend');
$legend->delete_group($group_id);
unset($legend);
}
catch (phpbb_groupposition_exception $exception)
{
// The group we want to delete does not exist.
// No reason to worry, we just continue the deleting process.
//trigger_error($user->lang($exception->getMessage()));
}
$teampage = $phpbb_container->get('groupposition.teampage'); try
$teampage->delete_group($group_id); {
unset($teampage); $teampage = $phpbb_container->get('groupposition.teampage');
$teampage->delete_group($group_id);
unset($teampage);
}
catch (phpbb_groupposition_exception $exception)
{
// The group we want to delete does not exist.
// No reason to worry, we just continue the deleting process.
//trigger_error($user->lang($exception->getMessage()));
}
// Delete group // Delete group
$sql = 'DELETE FROM ' . GROUPS_TABLE . " $sql = 'DELETE FROM ' . GROUPS_TABLE . "