function saveNewMember($smarty, $module_name, $local_templates_dir, &$pDB, $arrConf) { $pEmaillist = new paloSantoEmaillist($pDB); $arrFormMemberlist = createFieldFormMember(); $oForm = new paloForm($smarty, $arrFormMemberlist); $emailMembers = getParameter("emailmembers"); $id_list = getParameter("id_emaillist"); if (!$oForm->validateForm($_POST)) { // Falla la validación básica del formulario $strErrorMsg = "<b>" . _tr('The following fields contain errors') . ":</b><br/>"; $arrErrores = $oForm->arrErroresValidacion; if (is_array($arrErrores) && count($arrErrores) > 0) { foreach ($arrErrores as $k => $v) { $strErrorMsg .= "{$k}: [{$v['mensaje']}] <br /> "; } } $smarty->assign("mb_title", _tr("Validation Error")); $smarty->assign("mb_message", $strErrorMsg); return viewFormMemberList($smarty, $module_name, $local_templates_dir, $pDB, $arrConf); } elseif (!$pEmaillist->listExistsbyId($id_list)) { $smarty->assign("mb_title", _tr("Validation Error")); $smarty->assign("mb_message", _tr("The List entered does not exist")); return viewFormMemberList($smarty, $module_name, $local_templates_dir, $pDB, $arrConf); } $emailMembers = explode("\n", $emailMembers); $arrMembers = array(); $arrErrorMembers = array(); $i = 0; foreach ($emailMembers as $key => $value) { $member = trim($value); if (preg_match("/^[[:alnum:]]+([\\._\\-]?[[:alnum:]]+)*@[[:alnum:]]+([\\._\\-]?[[:alnum:]]+)*(\\.[[:alnum:]]{2,4})+\$/", $member)) { if (getParameter("save_newMember")) { if (!$pEmaillist->isAMemberOfList($member, $id_list)) { $arrMembers[$i]["member"] = $member; $arrMembers[$i]["email_member"] = $member; $i++; } else { $arrErrorMembers[] = _tr("Already a member") . ": " . htmlentities($member); } } else { if ($pEmaillist->isAMemberOfList($member, $id_list)) { $arrMembers[$i]["member"] = $member; $arrMembers[$i]["email_member"] = $member; $i++; } else { $arrErrorMembers[] = _tr("No such subscriber") . ": " . htmlentities($member); } } } elseif (preg_match("/^([[:alnum:]]+([[:space:]]*[[:alnum:]]+){0,3})[[:space:]]*\\<([[:alnum:]]+([\\._\\-]?[[:alnum:]]+)*@[[:alnum:]]+([\\._\\-]?[[:alnum:]]+)*(\\.[[:alnum:]]{2,4})+)\\>\$/", $member, $matches) && getParameter("save_newMember")) { if (!$pEmaillist->isAMemberOfList($matches[3], $id_list)) { $arrMembers[$i]["member"] = preg_replace("/[[:space:]]+/", " ", $member); $arrMembers[$i]["namemember"] = $matches[1]; $arrMembers[$i]["email_member"] = $matches[3]; $i++; } else { $arrErrorMembers[] = _tr("Already a member") . ": " . htmlentities($member); } } elseif ($member != "") { $arrErrorMembers[] = htmlentities($member); } } $pDB->beginTransaction(); if (count($arrMembers) > 0) { foreach ($arrMembers as $key => $value) { if (getParameter("save_newMember")) { if (isset($value["namemember"])) { $namemember = $value["namemember"]; } else { $namemember = ""; } if (!$pEmaillist->saveMember($value["email_member"], $id_list, $namemember)) { $pDB->rollBack(); $smarty->assign("mb_title", _tr("Error")); $smarty->assign("mb_message", $pEmaillist->getError()); return reportEmailList($smarty, $module_name, $local_templates_dir, $pDB, $arrConf); } } else { if (!$pEmaillist->removeMember($value["email_member"], $id_list)) { $pDB->rollBack(); $smarty->assign("mb_title", _tr("Error")); $smarty->assign("mb_message", $pEmaillist->getError()); return reportEmailList($smarty, $module_name, $local_templates_dir, $pDB, $arrConf); } } } if (getParameter("save_newMember")) { if (!$pEmaillist->mailmanAddMembers($arrMembers, $id_list)) { $pDB->rollBack(); $smarty->assign("mb_title", _tr("Validation Error")); $smarty->assign("mb_message", _tr("Mailman could not add the members")); return reportEmailList($smarty, $module_name, $local_templates_dir, $pDB, $arrConf); } } else { if (!$pEmaillist->mailmanRemoveMembers($arrMembers, $id_list)) { $pDB->rollBack(); $smarty->assign("mb_title", _tr("Validation Error")); $smarty->assign("mb_message", _tr("Mailman could not remove the members")); return reportEmailList($smarty, $module_name, $local_templates_dir, $pDB, $arrConf); } } } $pDB->commit(); $message = ""; if (count($arrMembers) > 0) { if (getParameter("save_newMember")) { $message .= "<b>" . _tr("The following members were added to the list") . ":</b><br />"; } else { $message .= "<b>" . _tr("The following members were removed from the list") . "</b>:<br />"; } foreach ($arrMembers as $member) { $message .= htmlentities($member["member"]) . "<br />"; } } if (count($arrErrorMembers) > 0) { if (getParameter("save_newMember")) { $message .= "<b>" . _tr("The following members could not be added to the list") . ":</b><br />"; } else { $message .= "<b>" . _tr("The following members could not be removed from the list") . "</b>:<br />"; } foreach ($arrErrorMembers as $noMember) { $message .= $noMember . "<br />"; } } if ($message != "") { $smarty->assign("mb_title", _tr("Message")); $smarty->assign("mb_message", $message); } return reportEmailList($smarty, $module_name, $local_templates_dir, $pDB, $arrConf); }