function viewFormMemberList($smarty, $module_name, $local_templates_dir, &$pDB, $arrConf, $credentials) { $pEmailList = new paloSantoEmailList($pDB); $id_emailList = getParameter("id"); if ($credentials['userlevel'] == 'superadmin') { $emailList = $pEmailList->getEmailList($id_emailList); } else { $emailList = $pEmailList->getEmailList($id_emailList, $credentials['domain']); } if ($emailList == false) { $smarty->assign("mb_title", _tr("Error")); $error = $emailList === false ? _tr("Couldn't be retrieved Email List data") : _tr("Email List does not exist"); $smarty->assign("mb_message", $error); return reportEmailList($smarty, $module_name, $local_templates_dir, $pDB, $arrConf, $credentials); } $title = _tr("New List Member"); $smarty->assign("MEMBER", "save_newMember"); $info = _tr("You must enter each email line by line, like the following") . ":<br /><br /><b>" . _tr("*****@*****.**") . "<br />" . _tr("*****@*****.**") . "<br />" . _tr("*****@*****.**") . "</b><br /><br />" . _tr("You can also enter a name for each email, like the following") . ":<br /><br /><b>" . _tr("Name1 Lastname1 <*****@*****.**>") . "<br />" . _tr("Name2 Lastname2 <*****@*****.**>") . "<br />" . _tr("Name3 Lastname3 <*****@*****.**>") . "</b>"; $smarty->assign("SAVE", _tr("Add")); $smarty->assign("IDEMAILLIST", $id_emailList); $smarty->assign("ACTION", 'view_memberlist'); $arrFormMemberlist = createFieldFormMember(); $oForm = new paloForm($smarty, $arrFormMemberlist); $smarty->assign("REQUIRED_FIELD", _tr("Required field")); $smarty->assign("CANCEL", _tr("Cancel")); $smarty->assign("INFO", $info); $smarty->assign("icon", "web/apps/{$module_name}/images/email.png"); $htmlForm = $oForm->fetchForm("{$local_templates_dir}/form_member.tpl", $title, $_POST); $content = "<form method='POST' style='margin-bottom:0;' action='?menu={$module_name}'>" . $htmlForm . "</form>"; return $content; }
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); }