Trigger 'create_identity' when creating a new user; Allow 'create_user' hook to abort the operation

release-0.6
thomascube 16 years ago
parent e54f6c7a9e
commit f879f4e2f8

@ -491,6 +491,13 @@ class rcmail
// get existing mailboxes (but why?) // get existing mailboxes (but why?)
// $a_mailboxes = $this->imap->list_mailboxes(); // $a_mailboxes = $this->imap->list_mailboxes();
} }
else {
raise_error(array(
'code' => 600,
'type' => 'php',
'message' => "Failed to create a user record. Maybe aborted by a plugin?"
), true, false);
}
} }
else { else {
raise_error(array( raise_error(array(

@ -354,6 +354,10 @@ class rcube_user
$user_name = $data['user_name']; $user_name = $data['user_name'];
$user_email = $data['user_email']; $user_email = $data['user_email'];
// plugin aborted this operation
if ($data['abort'])
return false;
$dbh = $rcmail->get_dbh(); $dbh = $rcmail->get_dbh();
// try to resolve user in virtuser table and file // try to resolve user in virtuser table and file
@ -392,14 +396,23 @@ class rcube_user
// create new identities records // create new identities records
$standard = 1; $standard = 1;
foreach ($email_list as $email) { foreach ($email_list as $email) {
$plugin = $RCMAIL->plugins->exec_hook('create_identity', array('record' => array(
'login' => true,
'user_id' => $user_id,
'name' => strip_newlines($user_name),
'email' => $email,
'standard' => $standard)));
if (!$plugin['abort'] && $plugin['record']['name'] && $plugin['record']['email']) {
$dbh->query( $dbh->query(
"INSERT INTO ".get_table_name('identities')." "INSERT INTO ".get_table_name('identities')."
(user_id, del, standard, name, email) (user_id, del, standard, name, email)
VALUES (?, 0, ?, ?, ?)", VALUES (?, 0, ?, ?, ?)",
$user_id, $user_id,
$standard, $plugin['record']['standard'],
strip_newlines($user_name), $plugin['record']['name'],
preg_replace('/^@/', $user . '@', $email)); $plugin['record']['email']);
}
$standard = 0; $standard = 0;
} }
} }

@ -92,7 +92,7 @@ else if (IDENTITIES_LEVEL < 2)
if (IDENTITIES_LEVEL == 1) if (IDENTITIES_LEVEL == 1)
$save_data['email'] = $RCMAIL->user->get_username(); $save_data['email'] = $RCMAIL->user->get_username();
$plugin = $RCMAIL->plugins->exec_hook('create_identity', array('id' => $iid, 'record' => $save_data)); $plugin = $RCMAIL->plugins->exec_hook('create_identity', array('record' => $save_data));
$save_data = $plugin['record']; $save_data = $plugin['record'];
if (!$plugin['abort'] && $save_data['email'] && ($insert_id = $USER->insert_identity($save_data))) if (!$plugin['abort'] && $save_data['email'] && ($insert_id = $USER->insert_identity($save_data)))

Loading…
Cancel
Save