2023-01-23 11:03:31 +01:00

152 lines
5.6 KiB
PHP

<?php
/* ----------------------------------------------------------------------
$Id: newsletter.php,v 1.1 2007/06/08 14:09:43 r23 Exp $
MyOOS [Shopsystem]
https://www.oos-shop.de
Copyright (c) 2003 - 2019 by the MyOOS Development Team.
----------------------------------------------------------------------
Based on:
File: newsletter.php,v 1.1 2002/03/08 18:38:18 hpdl
----------------------------------------------------------------------
osCommerce, Open Source E-Commerce Solutions
http://www.oscommerce.com
Copyright (c) 2003 osCommerce
----------------------------------------------------------------------
Released under the GNU General Public License
---------------------------------------------------------------------- */
/** ensure this file is being included by a parent file */
defined( 'OOS_VALID_MOD' ) or die( 'Direct Access to this location is not allowed.' );
// todo:
// remove link http://exampel.org/shop/index.php?action=process&newsletter=remove&email_address=
class newsletter {
var $show_choose_audience, $title, $content;
public function __construct($title, $content) {
$this->show_choose_audience = FALSE;
$this->title = $title;
$this->content = $content;
}
public function choose_audience() {
return FALSE;
}
public function confirm() {
// Get database information
$dbconn =& oosDBGetConn();
$oostable =& oosDBGetTables();
$aContents = oos_get_content();
$mail_result = $dbconn->Execute("SELECT COUNT(*) AS total FROM " . $oostable['newsletter_recipients'] . " WHERE status = '1'");
$mail = $mail_result->fields;
$confirm_string = '<table border="0" cellspacing="0" cellpadding="2">' . "\n" .
' <tr>' . "\n" .
' <td class="main"><font color="#ff0000"><b>' . sprintf(TEXT_COUNT_CUSTOMERS, $mail['total']) . '</b></font></td>' . "\n" .
' </tr>' . "\n" .
' <tr>' . "\n" .
' <td></td>' . "\n" .
' </tr>' . "\n" .
' <tr>' . "\n" .
' <td class="main"><b>' . $this->title . '</b></td>' . "\n" .
' </tr>' . "\n" .
' <tr>' . "\n" .
' <td></td>' . "\n" .
' </tr>' . "\n" .
' <tr>' . "\n" .
' <td class="main"><tt>' . nl2br($this->content) . '</tt></td>' . "\n" .
' </tr>' . "\n" .
' <tr>' . "\n" .
' <td></td>' . "\n" .
' </tr>' . "\n" .
' <tr>' . "\n" .
' <td align="right"><a href="' . oos_href_link_admin($aContents['newsletters'], 'page=' . $_GET['page'] . '&nID=' . $_GET['nID'] . '&action=confirm_send') . '">' . oos_button(IMAGE_SEND) . '</a> <a href="' . oos_href_link_admin($aContents['newsletters'], 'page=' . $_GET['page'] . '&nID=' . $_GET['nID']) . '">' . oos_button(BUTTON_CANCEL) . '</a></td>' . "\n" .
' </tr>' . "\n" .
'</table>';
return $confirm_string;
}
public function send($newsletter_id) {
// (Re)create it, if it's gone missing
if ( !is_object( $mail ) || !is_a( $mail, 'PHPMailer' ) ) {
require_once MYOOS_INCLUDE_PATH . '/includes/lib/phpmailer/class.phpmailer.php';
require_once MYOOS_INCLUDE_PATH . '/includes/lib/phpmailer/class.smtp.php';
// Instantiate a new mail object
$mail = new PHPMailer( true );
}
// Empty out the values that may be set
$oEmail->ClearAllRecipients();
$oEmail->ClearAttachments();
$oEmail->ClearCustomHeaders();
$oEmail->ClearReplyTos();
/*
$sLang = ...;
$oEmail->PluginDir = OOS_ABSOLUTE_PATH . 'includes/lib/phpmailer/';
$oEmail->SetLanguage( $sLang, OOS_ABSOLUTE_PATH . 'includes/lib/phpmailer/language/' );
*/
$oEmail->CharSet = CHARSET;
$oEmail->IsMail();
$oEmail->From = STORE_OWNER_EMAIL_ADDRESS;
$oEmail->FromName = STORE_OWNER;
$oEmail->Mailer = EMAIL_TRANSPORT;
// Add smtp values if needed
if ( EMAIL_TRANSPORT == 'smtp' ) {
$oEmail->IsSMTP(); // set mailer to use SMTP
$oEmail->SMTPAuth = OOS_SMTPAUTH; // turn on SMTP authentication
$oEmail->Username = OOS_SMTPUSER; // SMTP username
$oEmail->Password = OOS_SMTPPASS; // SMTP password
$oEmail->Host = OOS_SMTPHOST; // specify main and backup server
} else
// Set sendmail path
if ( EMAIL_TRANSPORT == 'sendmail' ) {
if (!oos_empty(OOS_SENDMAIL)) {
$oEmail->Sendmail = OOS_SENDMAIL;
$oEmail->IsSendmail();
}
}
$oEmail->Subject = $this->title;
// Get database information
$dbconn =& oosDBGetConn();
$oostable =& oosDBGetTables();
$sql = "SELECT customers_gender, customers_firstname, customers_lastname, customers_email_address
FROM " . $oostable['newsletter_recipients'] . "
WHERE status = '1'";
$mail_result = $dbconn->Execute($sql);
while ($mail = $mail_result->fields) {
$oEmail->Body = $this->content;
$oEmail->AddAddress($mail['customers_email_address'], $mail['customers_firstname'] . ' ' . $mail['customers_lastname']);
$oEmail->Send();
// Clear all addresses and attachments for next loop
$oEmail->ClearAddresses();
$oEmail->ClearAttachments();
// Move that ADOdb pointer!
$mail_result->MoveNext();
}
$newsletter_id = oos_db_prepare_input($newsletter_id);
$dbconn->Execute("UPDATE " . $oostable['newsletters'] . " SET date_sent = now(), status = '1' WHERE newsletters_id = '" . oos_db_input($newsletter_id) . "'");
}
}