From aa12df20e46ae72467f8d4dc01784a500eb83f0c Mon Sep 17 00:00:00 2001 From: thomascube Date: Thu, 1 Apr 2010 06:39:06 +0000 Subject: Add server-side plugin hooks to address group functions + better action names --- program/steps/addressbook/groups.inc | 62 +++++++++++++++++++++++------------- 1 file changed, 39 insertions(+), 23 deletions(-) (limited to 'program/steps') diff --git a/program/steps/addressbook/groups.inc b/program/steps/addressbook/groups.inc index 014192676..f69501b0d 100644 --- a/program/steps/addressbook/groups.inc +++ b/program/steps/addressbook/groups.inc @@ -25,54 +25,70 @@ if ($CONTACTS->readonly || !$CONTACTS->groups) { $OUTPUT->send(); } -if ($RCMAIL->action == 'group-addmember') { - if (($gid = get_input_value('_gid', RCUBE_INPUT_POST)) && ($ids = get_input_value('_cid', RCUBE_INPUT_POST))) - if ($CONTACTS->add_to_group($gid, $ids)) - $OUTPUT->show_message('contactaddedtogroup'); - //else - // $OUTPUT->show_message('erroraddingcontact', 'warning'); +$source = get_input_value('_source', RCUBE_INPUT_GPC); + +if ($RCMAIL->action == 'group-addmembers') { + if (($gid = get_input_value('_gid', RCUBE_INPUT_POST)) && ($ids = get_input_value('_cid', RCUBE_INPUT_POST))) { + $plugin = $RCMAIL->plugins->exec_hook('group_addmember', array('group_id' => $gid, 'ids' => $ids, 'source' => $source)); + + if (!$plugin['abort'] && $CONTACTS->add_to_group($gid, $plugin['ids'])) + $OUTPUT->show_message('contactaddedtogroup'); + else if ($plugin['message']) + $OUTPUT->show_message($plugin['message'], 'warning'); + } } -else if ($RCMAIL->action == 'group-delmember') { - if (($gid = get_input_value('_gid', RCUBE_INPUT_POST)) && ($ids = get_input_value('_cid', RCUBE_INPUT_POST))) - if ($CONTACTS->remove_from_group($gid, $ids)) - $OUTPUT->show_message('contactremovedfromgroup'); - //else - // $OUTPUT->show_message('erroraddingcontact', 'warning'); +else if ($RCMAIL->action == 'group-delmembers') { + if (($gid = get_input_value('_gid', RCUBE_INPUT_POST)) && ($ids = get_input_value('_cid', RCUBE_INPUT_POST))) { + $plugin = $RCMAIL->plugins->exec_hook('group_delmembers', array('group_id' => $gid, 'ids' => $ids, 'source' => $source)); + $ids = $plugin['ids']; + + if (!$plugin['abort'] && $CONTACTS->remove_from_group($gid, $ids)) + $OUTPUT->show_message('contactremovedfromgroup'); + else if ($plugin['message']) + $OUTPUT->show_message($plugin['message'], 'warning'); + } } else if ($RCMAIL->action == 'group-create') { - if (!empty($_POST['_name'])) { - $name = trim(get_input_value('_name', RCUBE_INPUT_POST)); - $created = $CONTACTS->create_group($name); + if ($name = trim(get_input_value('_name', RCUBE_INPUT_POST))) { + $plugin = $RCMAIL->plugins->exec_hook('group_create', array('name' => $name, 'source' => $source)); + if (!$plugin['abort']) + $created = $CONTACTS->create_group($plugin['name']); } if ($created && $OUTPUT->ajax_call) { $OUTPUT->command('insert_contact_group', $created); } - else if (!$create) { - $OUTPUT->show_message('errorsaving', 'error'); + else if (!$created) { + $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'errorsaving', 'error'); } } else if ($RCMAIL->action == 'group-rename') { - if (($gid = get_input_value('_gid', RCUBE_INPUT_POST)) && ($name = trim(get_input_value('_name', RCUBE_INPUT_POST)))) - $newname = $CONTACTS->rename_group($gid, $name); + if (($gid = get_input_value('_gid', RCUBE_INPUT_POST)) && ($name = trim(get_input_value('_name', RCUBE_INPUT_POST)))) { + $plugin = $RCMAIL->plugins->exec_hook('group_rename', array('group_id' => $gid, 'name' => $name, 'source' => $source)); + if (!$plugin['abort']) + $newname = $CONTACTS->rename_group($gid, $plugin['name']); + } if ($newname && $OUTPUT->ajax_call) $OUTPUT->command('update_contact_group', $gid, $newname); else if (!$newname) - $OUTPUT->show_message('errorsaving', 'error'); + $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'errorsaving', 'error'); } else if ($RCMAIL->action == 'group-delete') { - if ($gid = get_input_value('_gid', RCUBE_INPUT_POST)) - $deleted = $CONTACTS->delete_group($gid); + if ($gid = get_input_value('_gid', RCUBE_INPUT_POST)) { + $plugin = $RCMAIL->plugins->exec_hook('group_delete', array('group_id' => $gid, 'source' => $source)); + if (!$plugin['abort']) + $deleted = $CONTACTS->delete_group($gid); + } if ($deleted) $OUTPUT->command('remove_group_item', $gid); else - $OUTPUT->show_message('errorsaving', 'error'); + $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'errorsaving', 'error'); } // send response -- cgit v1.2.3