db_connection = $db_conn; $this->template_engine = new template_engine("templates/"); $this->setEmailHeader(); return $this; } /** * set from email header * */ function setFromEmail($fromEmail) { $this->from_email = $fromEmail; $this->setEmailHeader(); } /** * * */ function parseCommands() { if (isset($_POST['newslettercmd'])) { $cmd = $_POST['newslettercmd']; } else { $cmd = $_GET['newslettercmd']; } if (isset($_POST['newsletteremail'])) { $email = $_POST['newsletteremail']; } else { $email = $_GET['newsletteremail']; } switch($cmd) { case "subscribe": { if ($this->subscribe($email)) { $this->message = " you are subscribed "; } else { $this->message = " "; // write error message here } break; } case "unsubscribe": { if ($this->unsubscribe($email)) { $this->message = " you are unsubscribed "; } else { $this->message = " "; // write error message here } break; } case "confirm": { if ($this->subscribe_activation($email)) { $this->message = " subscribtion confirmed "; } else { $this->message = " error confirm command "; // write error message here } break; } } } /** * set email content type header * */ function setEmailHeader($content_type = "text/plain") { $this->email_header = "From:$this->from_email \n"; $this->email_header = $this->email_header . "Content-type: $content_type \n"; $this->email_header = $this->email_header . "Reply-to:$this->from_email \n"; } /** * return html code with newsletter panel * */ function showPanel($template_file = "template/newsletter_panel.htm") { global $message; $message = $this->message; $html = $this->template_engine->compile_template($template_file); return $html; } /** * return scalar value from db table * */ function getScalar($tableName,$fieldName,$filter = "") { $sql = " SELECT $fieldName FROM $tableName $filter"; $rs = @mysql_query($sql,$this->db_connection); if ($rs == FALSE) { return FALSE; } else { $row = @mysql_fetch_array($rs); return $row[$fieldName]; } } /** * return newsletter article text * */ function getNewsletterArticle($articleID) { $result = @$this->getScalar("newsletter","article"," WHERE id=$articleID"); return $result; } /** * return url for unsubscribtion * */ function getUnsubscribeLink($email_address) { if (defined(ENEWSLETTER_URL)) { return ENEWSLETTER_URL . "?newslettercmd=unsubscribe&newsletteremail=$email_address"; } else { return FALSE; } } /** * return confirm subscribtion url * */ function getConfirmLink($email_address,$base_url = "") { if (defined(ENEWSLETTER_URL) && ($base_url == "")) { return "http://oekohaus-bamberg.de/newsletter.php?newslettercmd=confirm&newsletteremail=$email_address&vielendank"; } else { return "http://oekohaus-bamberg.de/newsletter.php?newslettercmd=confirm&newsletteremail=$email_address&vielendank"; } } /** * send news email * */ function sendNewsEmail($email_address,$articleID) { $subject = $this->getScalar("newsletter_settings","newsletter_email_subject"); $body = $this->getNewsletterArticle($articleID); if ($body != FALSE) { // send article $footer = $this->getScalar("newsletter_settings","newsletter_email_footer"); $body = $body . $footer; $result = @mail($email_address,$subject,$body,$this->email_header); } else { $result = FALSE; } return $result; } /** * send welcome,activate,newsletter emails * */ function sendEmail($email_address,$type,$articleID = "0") { $unsubscribe_phplink = $this->getUnsubscribeLink($email_address); switch ($type) { case "welcome": { $subject = $this->getScalar("newsletter_settings","welcome_email_subject"); $body = $this->getScalar("newsletter_settings","welcome_email"); $link = $this->getConfirmLink($email_address,$this->url); $body = $body . $link;// add confirm link $result = @mail($email_address,$subject,$body,$this->email_header); // send welcome email return $result; } case "unsubscribe": { $subject = $this->getScalar("newsletter_settings","unsubscribe_email_subject"); $body = $this->getScalar("newsletter_settings","unsubscribe_email"); $result = @mail($email_address,$subject,$body,$this->email_header); return $result; } case "newsletter": { $article_status = $this->getScalar("newsletter","status"," WHERE id = $articleID "); if ($article_status == 0) { // article not send $article_type = $this->getScalar("newsletter","article_type"," WHERE id = $articleID "); $this->setEmailHeader($article_type); return $this->sendNewsEmail($email_address,$articleID); } else { return FALSE; } } } return FALSE; } /** * send welcome email to subscrinbed user * */ function sendWelcomeEmail($email_address) { return $this->sendEmail($email_address,"welcome"); } /** * send unsubscribed email notification * */ function sendUnsubscribeEmail($email_address) { return $this->sendEmail($email_address,"unsubscribed"); } /** * activating subscribed user * */ function subscribe_activation($email_address) { echo "Versuche mit ".$email_adress." zu subscriben"; $sql= " UPDATE newsletter_users SET status = 2 WHERE email = '$email_address'"; $result = @mysql_query($sql,$this->db_connection); return $result; } /** * send news to all subscribed users * */ function send($articleID) { $sql = " SELECT email FROM newsletter_users WHERE status = 2 "; // only confirmed users $rs = @mysql_query($sql,$this->db_connection); $count = 0; // number of emails send while ($row = @mysql_fetch_array($rs)) { $email = $row['email']; $result = @$this->sendEmail($email,"newsletter",$articleID); if ($result == TRUE) { $count = $count + 1; } else { $this->error_message = $this->error_message + 1; } } // update article astatus $sql = " UPDATE newsletter SET status = 1 WHERE id = $articleID "; $res = @mysql_query($sql,$this->db_connection); return $count; } /** * unsubscribe email address to newsletters * */ function unsubscribe($email_address) { $sql = "UPDATE newsletter_users SET status = 1 WHERE email = '$email_address'"; $result = @mysql_query($sql,$this->db_connection); if ($result != FALSE) { // $result = $this->sendUnsubscribeEmail($email_address); } return $result; } /** * subscribe email address to newsletters * */ function subscribe($email_address) { $time = date('Y-m-d'); echo $time; $sql = "INSERT INTO newsletter_users(email,datetime_subscribed) VALUES('$email_address','$time')"; $result = @mysql_query($sql,$this->db_connection); if ($result == FALSE) { $sql = "UPDATE newsletter_users SET status = 0 WHERE email='$email_address'"; $result = @mysql_query($sql,$this->db_connection); } if ($result != FALSE) { $result = $this->sendWelcomeEmail($email_address); } return $result; } } ?>