showExistingNewsletters(); } else { switch ($action) { case 'vs' : // View subscribers of a newsletter $nl -> view_subscribers($id); break; case 'remove' : // Remove subscriber $nl -> remove_subscribers($id,$key); $nl -> view_subscribers($id); break; default: $function = $action.'Newsletter'; if (method_exists($nl, $function)) { $nl -> $function($id); } else { exit; } } } class newsletter { protected $e107; var $message; public function __construct() { $tp = e107::getParser(); $ns = e107::getRender(); $mes = e107::getMessage(); $this->e107 = e107::getInstance(); // TODO remove? foreach($_POST as $key => $value) { $key = $tp->toDB($key); if(strpos($key, 'nlmailnow') === 0) { $this->releaseIssue($key); break; } } if(isset($_POST['delete'])) { $this->deleteNewsletter(); } if(isset($_POST['createNewsletter'])) { $this->createNewsletter(); } if(isset($_POST['createIssue'])) { $this->createIssue(); } if($mes) { $ns->tablerender($caption, $mes->render() . $text); } } function showExistingNewsletters() { $sql = e107::getDb(); $ns = e107::getRender(); $mes = e107::getMessage(); $tp = e107::getParser(); if(!$sql->select('newsletter', '*', "newsletter_parent='0' ORDER BY newsletter_id DESC")) { $mes->addInfo(NLLAN_05); } else { $text = "
"; } $ns->tablerender(NLLAN_10, $mes->render() . $text); unset($text); if(!$sql->select('newsletter', '*', "newsletter_parent!='0' ORDER BY newsletter_id DESC")) { $mes->addinfo(NLLAN_11); } else { $text = " "; } $ns->tablerender(NLLAN_20, $mes->render() . $text); } function defineNewsletter($edit=FALSE) { $tp = e107::getParser(); $ns = e107::getRender(); $frm = e107::getForm(); // We've been passed a value from DB, so should be reasonably sanitised. if($edit) { $newsletter_title = $tp->toFORM($edit['newsletter_title']); $newsletter_text = $tp->toFORM($edit['newsletter_text']); $newsletter_footer = $tp->toFORM($edit['newsletter_footer']); $newsletter_header = $tp->toFORM($edit['newsletter_header']); } $text .= " "; $caption = ($edit ? LAN_PLUGIN_NEWSLETTER_NAME.' - '.LAN_UPDATE : LAN_PLUGIN_NEWSLETTER_NAME.' - '.LAN_CREATE); $ns->tablerender($caption, $text); } /** * Save entry for new newsletter in DB, using $_POST values * * @param int $_POST['editid'] - ID of newsletter if existing - indicates edit to be saved * * @return none */ function createNewsletter() { $tp = e107::getParser(); $sql = e107::getDb(); $mes = e107::getMessage(); $letter['newsletter_title'] = $tp->toDB($_POST['newsletter_title']); $letter['newsletter_text'] = $tp->toDB($_POST['newsletter_text']); $letter['newsletter_header'] = $tp->toDB($_POST['newsletter_header']); $letter['newsletter_footer'] = $tp->toDB($_POST['newsletter_footer']); if(isset($_POST['editid'])) { $sql -> db_Update('newsletter', "newsletter_title='{$letter['newsletter_title']}', newsletter_text='{$letter['newsletter_text']}', newsletter_header='{$letter['newsletter_header']}', newsletter_footer='{$letter['newsletter_footer']}' WHERE newsletter_id=".intval($_POST['editid'])); $mes->addSuccess(LAN_UPDATED); } else { $letter['newsletter_datestamp'] = time(); $sql->db_Insert('newsletter', $letter); $mes->addSuccess(LAN_CREATED); } } function makeNewsletter($edit=FALSE) { $tp = e107::getParser(); $ns = e107::getRender(); $sql = e107::getDb(); $mes = e107::getMessage(); $frm = e107::getForm(); // Passed data is from DB if($edit) { $newsletter_title = $tp->toFORM($edit['newsletter_title']); $newsletter_text = $tp->toFORM($edit['newsletter_text']); $newsletter_issue = $tp->toFORM($edit['newsletter_issue']); } if(!$sql->db_Select('newsletter', '*', "newsletter_parent='0' ")) { //$this -> message = NLLAN_05; $mes->addInfo(NLLAN_05); } else { $nlArray = $sql -> db_getList(); $text .= " "; } $caption = ($edit ? NLLAN_36 : NLLAN_37); $ns->tablerender($caption, $mes->render() . $text); } function createIssue() { $tp = e107::getParser(); $sql = e107::getDb(); $mes = e107::getMessage(); $ns = e107::getRender(); $letter['newsletter_title'] = $tp->toDB($_POST['newsletter_title']); $letter['newsletter_text'] = $tp->toDB($_POST['newsletter_text']); $letter['newsletter_parent'] = intval($_POST['newsletter_parent']); $letter['newsletter_issue'] = $tp->toDB($_POST['newsletter_issue']); if (isset($_POST['editid'])) { $sql->db_Update('newsletter', "newsletter_title='{$letter['newsletter_title']}', newsletter_text='{$letter['newsletter_text']}', newsletter_parent='".$letter['newsletter_parent']."', newsletter_issue='".$letter['newsletter_issue']."' WHERE newsletter_id=".intval($_POST['editid'])); $mes->addSuccess(LAN_UPDATED); } else { $letter['newsletter_datestamp'] = time(); $sql->db_Insert('newsletter', $letter); $mes->addSuccess(NLLAN_39); } $ns->tablerender($caption, $mes->render() . $text); } /** * Actually release an issue of a newsletter * Add the mailing to the mail queue * * @param int id of issue * * @return boolean FALSE on error */ function releaseIssue($issue) { $pref = e107::getPref(); $sql = e107::getDb(); $mes = e107::getMessage(); $issue = intval(str_replace('nlmailnow_', '', $issue)); // Get details of current newsletter issue if(!$sql->select('newsletter', '*', 'newsletter_id='.$issue)) { return FALSE; } $newsletterInfo = $sql->fetch(MYSQL_ASSOC); // Get parent details - has header/footer and subscriber list if(!$sql->select('newsletter', '*', "newsletter_id='".$newsletterInfo['newsletter_parent']."' ")) { return FALSE; } $newsletterParentInfo = $sql->db_Fetch(MYSQL_ASSOC); $memberArray = explode(chr(1), $newsletterParentInfo['newsletter_subscribers']); require(e_HANDLER.'mail_manager_class.php'); $mailer = new e107MailManager; // Start by creating the mail body $mailData = array( 'mail_content_status' => MAIL_STATUS_TEMP, 'mail_create_app' => 'newsletter', 'mail_title' => NLLAN_01.' '.$issue, 'mail_subject' => $newsletterParentInfo['newsletter_title'] .': '.$newsletterInfo['newsletter_title'], 'mail_sender_email' => $pref['siteadminemail'], 'mail_sender_name' => $pref['siteadmin'], 'mail_send_style' => 'themehtml', 'mail_include_images' => TRUE ); // Assemble body - we can leave a lot to to core mail sending routines $mail_style = "