* @return the string containing the form
*/
function to_form() {
- $res = "<form action=\"{$_SERVER['REQUEST_URI']}\" method=\"post\" onsubmit=\"return del_onsubmit()\">\n"
+ $res = "<form id=\"emails\" action=\"{$_SERVER['REQUEST_URI']}\" method=\"post\">\n"
. "<table class=\"bicol\" cellpadding=\"1\" cellspacing=\"1\" width=\"95%\" align=\"center\">\n"
. "<tr><th>Email</th>\n"
. " <th>Active</th>\n"
. "<td align=\"center\" width=\"10%\">\n"
. " <input type=\"checkbox\" name=\"emails[$id][active]\""
. ($email->is_active() ? " checked=\"checked\"" : "")." /></td>\n"
- . "<td><input type=\"submit\" name=\"emails[$id][del]\" value=\"Del\" /></td>\n"
+ . "<td align=\"center\"><input type=\"button\" name=\"d$id\" "
+ . "value=\"Del\" onclick=\"del_onclick(this)\" /></td>\n"
. "</tr>\n";
$pair = !$pair;
}
$res .= "</table>\n"
. "<center>\n"
+ . " <input id=\"emailsDel\" type=\"hidden\" name=\"emails[del]\" value=\"\" />\n"
. " <input type=\"submit\" name=\"emails[apply]\" value=\"Apply changes\" />\n"
. "</center>\n"
. "</form>\n";
$philter->set_error($_POST['emails']['new']." is not a valid email");
return false;
}
+ } elseif(!empty($_POST['emails']['del'])) { // delete one email
+ $del_id = $_POST['emails']['del'];
+ // we compute a list of all actives emails
+ $allow = false;
+ foreach($this->emails as $id=>$mail)
+ if($del_id!=$id && $mail->is_active())
+ $allow = true;
+
+ if($allow && isset($this->emails[$del_id])) {
+ list($count) = mysql_fetch_row(mysql_query("SELECT COUNT(*) FROM actions "
+ ."WHERE uid='{$this->uid}' AND pid='"
+ .FwdPlugin::rtti()."' AND data='$del_id'"));
+ if($count) {
+ $philter->set_error("This email is still in use and can't be deleted !");
+ return false;
+ } else {
+ mysql_query("DELETE FROM emails WHERE uid='{$this->uid}' "
+ ."AND email='{$this->emails[$del_id]->email}'");
+ unset($this->emails[$del_id]);
+ }
+ } else {
+ $philter->set_error("you must have at least one active email !");
+ return false;
+ }
} elseif(isset($_POST['emails']['apply'])) { // apply actives changes
$one_active = false;
+
foreach($this->emails as $id=>$mail)
if(isset($_POST['emails'][$id]['active'])) {
$one_active = true;
$this->emails[$id]->toggle_flag('active');
$this->emails[$id]->commit($this->uid, $id);
}
- } else { // delete one email
- // we compute a list of all actives emails
- $actives = array();
- foreach($this->emails as $id=>$mail)
- if($mail->is_active())
- $actives[$id] = true;
-
- foreach($this->emails as $id=>$key)
- if(isset($_POST['emails'][$id]['del'])) {
- if(count($this->emails)>0 && (count($actives)>1 || empty($actives[$id]))) {
- list($count) = mysql_fetch_row(mysql_query("SELECT COUNT(*) FROM actions "
- ."WHERE uid='{$this->uid}' AND pid='"
- .FwdPlugin::rtti()."' AND data='$id'"));
- if($count) {
- $philter->set_error("This email is still in use and can't be deleted !");
- return false;
- } else {
- mysql_query("DELETE FROM emails WHERE uid='{$this->uid}' "
- ."AND email='{$this->emails[$id]->email}'");
- unset($this->emails[$id]);
- unset($actives[$id]);
- }
- } else {
- $philter->set_error("you must have at least one active email !");
- return false;
- }
- }
- }
return true;
+ }
}
}