Add plugin hooks for creating/saving/deleting identities and contacts
| | |
| | | private $env = array(); |
| | | private $texts = array(); |
| | | private $commands = array(); |
| | | private $message = null; |
| | | |
| | | public $type = 'js'; |
| | | public $ajax_call = true; |
| | |
| | | * @param string Message to display |
| | | * @param string Message type [notice|confirm|error] |
| | | * @param array Key-value pairs to be replaced in localized text |
| | | * @param boolean Override last set message |
| | | * @uses self::command() |
| | | */ |
| | | public function show_message($message, $type='notice', $vars=null) |
| | | public function show_message($message, $type='notice', $vars=null, $override=true) |
| | | { |
| | | if ($override || !$this->message) { |
| | | $this->message = $message; |
| | | $this->command( |
| | | 'display_message', |
| | | rcube_label(array('name' => $message, 'vars' => $vars)), |
| | | $type |
| | | ); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * Delete all stored env variables and commands |
| | |
| | | var $config; |
| | | var $framed = false; |
| | | var $pagetitle = ''; |
| | | var $message = null; |
| | | var $env = array(); |
| | | var $js_env = array(); |
| | | var $js_commands = array(); |
| | |
| | | * @param string Message to display |
| | | * @param string Message type [notice|confirm|error] |
| | | * @param array Key-value pairs to be replaced in localized text |
| | | * @param boolean Override last set message |
| | | * @uses self::command() |
| | | */ |
| | | public function show_message($message, $type='notice', $vars=NULL) |
| | | public function show_message($message, $type='notice', $vars=null, $override=true) |
| | | { |
| | | if ($override || !$this->message) { |
| | | $this->message = $message; |
| | | $this->command( |
| | | 'display_message', |
| | | rcube_label(array('name' => $message, 'vars' => $vars)), |
| | | $type); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | |
| | | VALUES (".$dbh->now().", ".$dbh->now().", ?, ?, ?, ?)", |
| | | strip_newlines($user), |
| | | strip_newlines($host), |
| | | strip_newlines($user_email), |
| | | strip_newlines($data['alias'] ? $data['alias'] : $user_email), |
| | | $_SESSION['language']); |
| | | |
| | | if ($user_id = $dbh->insert_id(get_sequence_name('users'))) |
| | |
| | | preg_match('/^[a-zA-Z0-9=]+(,[a-zA-Z0-9=]+)*$/', $cid)) |
| | | ) |
| | | { |
| | | $deleted = $CONTACTS->delete($cid); |
| | | $plugin = $RCMAIL->plugins->exec_hook('delete_contact', array('id' => $cid, 'source' => get_input_value('_source', RCUBE_INPUT_GPC))); |
| | | |
| | | $deleted = !$plugin['abort'] ? $CONTACTS->delete($cid) : false; |
| | | if (!$deleted) |
| | | { |
| | | // send error message |
| | |
| | | // update an existing contact |
| | | if (!empty($cid)) |
| | | { |
| | | if ($CONTACTS->update($cid, $a_record)) |
| | | $plugin = $RCMAIL->plugins->exec_hook('save_contact', array('id' => $cid, 'record' => $a_record, 'source' => get_input_value('_source', RCUBE_INPUT_GPC))); |
| | | $a_record = $plugin['record']; |
| | | |
| | | if (!$plugin['abort'] && $CONTACTS->update($cid, $a_record)) |
| | | { |
| | | // define list of cols to be displayed |
| | | $a_js_cols = array(); |
| | |
| | | $OUTPUT->command('parent.update_contact_row', $cid, $a_js_cols); |
| | | |
| | | // show confirmation |
| | | $OUTPUT->show_message('successfullysaved', 'confirmation'); |
| | | $OUTPUT->show_message('successfullysaved', 'confirmation', null, false); |
| | | rcmail_overwrite_action('show'); |
| | | } |
| | | else |
| | | { |
| | | // show error message |
| | | $OUTPUT->show_message('errorsaving', 'error'); |
| | | $OUTPUT->show_message('errorsaving', 'error', null, false); |
| | | rcmail_overwrite_action('show'); |
| | | } |
| | | } |
| | |
| | | // show warning message |
| | | if ($existing->count) |
| | | { |
| | | $OUTPUT->show_message('contactexists', 'warning'); |
| | | $OUTPUT->show_message('contactexists', 'warning', null, false); |
| | | rcmail_overwrite_action('add'); |
| | | return; |
| | | } |
| | | |
| | | $plugin = $RCMAIL->plugins->exec_hook('create_contact', array('record' => $a_record, 'source' => get_input_value('_source', RCUBE_INPUT_GPC))); |
| | | $a_record = $plugin['record']; |
| | | |
| | | // insert record and send response |
| | | if ($insert_id = $CONTACTS->insert($a_record)) |
| | | if (!$plugin['abort'] && ($insert_id = $CONTACTS->insert($a_record))) |
| | | { |
| | | // add contact row or jump to the page where it should appear |
| | | $CONTACTS->reset(); |
| | |
| | | $OUTPUT->command('parent.set_rowcount', rcmail_get_rowcount_text()); |
| | | |
| | | // show confirmation |
| | | $OUTPUT->show_message('successfullysaved', 'confirmation'); |
| | | $OUTPUT->show_message('successfullysaved', 'confirmation', null, false); |
| | | rcmail_overwrite_action('show'); |
| | | $_GET['_cid'] = $insert_id; |
| | | } |
| | | else |
| | | { |
| | | // show error message |
| | | $OUTPUT->show_message('errorsaving', 'error'); |
| | | $OUTPUT->show_message('errorsaving', 'error', null, false); |
| | | rcmail_overwrite_action('add'); |
| | | } |
| | | } |
| | |
| | | |
| | | if (($ids = get_input_value('_iid', RCUBE_INPUT_GET)) && preg_match('/^[0-9]+(,[0-9]+)*$/', $ids)) |
| | | { |
| | | if ($USER->delete_identity($ids)) { |
| | | $OUTPUT->show_message('deletedsuccessfully', 'confirmation'); |
| | | $plugin = $RCMAIL->plugins->exec_hook('delete_identity', array('id' => $ids)); |
| | | |
| | | if (!$plugin['abort'] && $USER->delete_identity($ids)) { |
| | | $OUTPUT->show_message('deletedsuccessfully', 'confirmation', null, false); |
| | | } |
| | | else { |
| | | $OUTPUT->show_message('nodeletelastidentity', 'error'); |
| | | $OUTPUT->show_message('nodeletelastidentity', 'error', null, false); |
| | | } |
| | | // send response |
| | | if ($OUTPUT->ajax_call) |
| | |
| | | // update an existing contact |
| | | if ($_POST['_iid']) |
| | | { |
| | | if ($updated = $USER->update_identity(get_input_value('_iid', RCUBE_INPUT_POST), $save_data)) |
| | | $iid = get_input_value('_iid', RCUBE_INPUT_POST); |
| | | $plugin = $RCMAIL->plugins->exec_hook('save_identity', array('id' => $iid, 'record' => $save_data)); |
| | | $save_data = $plugin['record']; |
| | | |
| | | if (!$plugin['abort'] && ($updated = $USER->update_identity($iid, $save_data))) |
| | | { |
| | | $OUTPUT->show_message('successfullysaved', 'confirmation'); |
| | | |
| | |
| | | // ... |
| | | } |
| | | } |
| | | else if ($DB->is_error()) |
| | | else if ($plugin['abort'] || $DB->is_error()) |
| | | { |
| | | // show error message |
| | | $OUTPUT->show_message('errorsaving', 'error'); |
| | | $OUTPUT->show_message('errorsaving', 'error', null, false); |
| | | rcmail_overwrite_action('edit-identity'); |
| | | return; |
| | | } |
| | |
| | | if (IDENTITIES_LEVEL == 1) |
| | | $save_data['email'] = $RCMAIL->user->get_username(); |
| | | |
| | | if ($save_data['email'] && ($insert_id = $USER->insert_identity($save_data))) |
| | | $plugin = $RCMAIL->plugins->exec_hook('create_identity', array('id' => $iid, 'record' => $save_data)); |
| | | $save_data = $plugin['record']; |
| | | |
| | | if (!$plugin['abort'] && $save_data['email'] && ($insert_id = $USER->insert_identity($save_data))) |
| | | { |
| | | $OUTPUT->show_message('successfullysaved', 'confirmation'); |
| | | $OUTPUT->show_message('successfullysaved', 'confirmation', null, false); |
| | | |
| | | $_GET['_iid'] = $insert_id; |
| | | |
| | |
| | | else |
| | | { |
| | | // show error message |
| | | $OUTPUT->show_message('errorsaving', 'error'); |
| | | $OUTPUT->show_message('errorsaving', 'error', null, false); |
| | | rcmail_overwrite_action('edit-identity'); |
| | | return; |
| | | } |