mirror of
https://github.com/e107inc/e107.git
synced 2025-08-06 14:46:56 +02:00
Latest mailer updates - primarily use new features in newsletter and notify. Also newsletter enhancements; thanks nlstart
This commit is contained in:
@@ -9,9 +9,9 @@
|
||||
* e107 Main
|
||||
*
|
||||
* $Source: /cvs_backup/e107_0.8/e107_handlers/mail.php,v $
|
||||
* $Revision: 1.18 $
|
||||
* $Date: 2009-11-19 10:07:32 $
|
||||
* $Author: e107coders $
|
||||
* $Revision: 1.19 $
|
||||
* $Date: 2009-11-19 20:24:21 $
|
||||
* $Author: e107steved $
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -155,6 +155,7 @@ class e107Email extends PHPMailer
|
||||
private $pause_amount = 10; // Number of emails to send before pausing/resetting (or closing if SMTPkeepAlive set)
|
||||
private $pause_time = 1; // Time to pause after sending a block of emails
|
||||
|
||||
public $legacyBody = FALSE; // TRUE enables legacy conversion of plain text body to HTML in HTML emails
|
||||
|
||||
/**
|
||||
* Constructor sets up all the global options, and sensible defaults - it should be the only place the prefs are accessed
|
||||
@@ -450,11 +451,21 @@ class e107Email extends PHPMailer
|
||||
$message = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n
|
||||
<html xmlns='http://www.w3.org/1999/xhtml' >\n".$message;
|
||||
}
|
||||
if ($this->legacyBody && !preg_match('/<(font|br|a|img|b)/i', $message)) // Assume html if it includes one of these tags
|
||||
{ // Otherwise assume its a plain text message which needs some conversion to render in HTML
|
||||
$message = htmlspecialchars($message);
|
||||
$message = preg_replace('%(http|ftp|https)(://\S+)%', '<a href="\1\2">\1\2</a>', $message);
|
||||
$message = preg_replace('/([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_\+.~#?&\/\/=]+)/i', '\\1<a href="http://\\2">\\2</a>', $message);
|
||||
$message = preg_replace('/([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3})/i', '<a href="mailto:\\1">\\1</a>', $message);
|
||||
$message = str_replace("\r\n","\n",$message); // Handle alternative newline characters
|
||||
$message = str_replace("\n\r","\n",$message); // Handle alternative newline characters
|
||||
$message = str_replace("\r","\n",$message); // Handle alternative newline characters
|
||||
$message = str_replace("\n", "<br />\n", $message);
|
||||
}
|
||||
$this->MsgHTML($message); // Theoretically this should do everything, including handling of inline images.
|
||||
}
|
||||
else
|
||||
{
|
||||
// generate the plain text part
|
||||
{ // generate the plain text as the sole part of the email
|
||||
if (defined('MAIL_DEBUG')) echo "Generating plain text email<br />";
|
||||
if (strpos($message,'</style>') !== FALSE)
|
||||
{
|
||||
@@ -471,75 +482,10 @@ class e107Email extends PHPMailer
|
||||
// TODO: strip bbcodes here
|
||||
|
||||
$this->Body = $text;
|
||||
$this->AltBody = ''; // Single part email
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Legacy way of creating an HTML and a text part - as used in 0.7
|
||||
// $want_HTML= 1 uses default setting for HTML part. Set TRUE to enable, FALSE to disable
|
||||
function makeBodyLegacy($message,$want_HTML = 1, $add_HTML_header = FALSE)
|
||||
{
|
||||
switch (varset($this->general_opts['textonly'],'off'))
|
||||
{
|
||||
case 'pref' : // Disable HTML as default
|
||||
if ($want_HTML == 1) $want_HTML = FALSE;
|
||||
break;
|
||||
case 'force' : // Always disable HTML
|
||||
$want_HTML = FALSE;
|
||||
break;
|
||||
}
|
||||
|
||||
if ($want_HTML)
|
||||
{
|
||||
if (preg_match('/<(font|br|a|img|b)/i', $message))
|
||||
{
|
||||
$Html = $message; // Assume html if it includes one of these tags
|
||||
}
|
||||
else
|
||||
{
|
||||
$Html = htmlspecialchars($message);
|
||||
$Html = preg_replace('%(http|ftp|https)(://\S+)%', '<a href="\1\2">\1\2</a>', $Html);
|
||||
$Html = preg_replace('/([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_\+.~#?&\/\/=]+)/i', '\\1<a href="http://\\2">\\2</a>', $Html);
|
||||
$Html = preg_replace('/([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3})/i', '<a href="mailto:\\1">\\1</a>', $Html);
|
||||
$Html = str_replace("\r\n","\n",$Html); // Handle alternative newline characters
|
||||
$Html = str_replace("\n\r","\n",$Html); // Handle alternative newline characters
|
||||
$Html = str_replace("\r","\n",$Html); // Handle alternative newline characters
|
||||
$Html = str_replace("\n", "<br />\n", $Html);
|
||||
}
|
||||
if ($add_HTML_header)
|
||||
{
|
||||
$this->Body = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n
|
||||
<html xmlns='http://www.w3.org/1999/xhtml' >\n".$Html;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->Body = $Html;
|
||||
}
|
||||
}
|
||||
|
||||
// Now generate the plain text part - always have one
|
||||
if (strpos($message,"</style>") !== FALSE)
|
||||
{
|
||||
$text = strstr($message,"</style>");
|
||||
}
|
||||
else
|
||||
{
|
||||
$text = $message;
|
||||
}
|
||||
|
||||
$text = str_replace("<br />", "\n", $text);
|
||||
$text = strip_tags(str_replace("<br>", "\n", $text));
|
||||
|
||||
if ($want_HTML)
|
||||
{
|
||||
$this->AltBody = $text;
|
||||
$this->IsHTML = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->Body = $text;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Add attachments - either a single one as a string, or an array
|
||||
@@ -859,8 +805,8 @@ function sendemail($send_to, $subject, $message, $to_name, $send_from='', $from_
|
||||
|
||||
if (varsettrue($mailheader_e107id)) $mail->AddCustomHeader("X-e107-id: {$mailheader_e107id}");
|
||||
|
||||
//Legacy required - \n must be converted to <br /> in HTML version of email.
|
||||
$mail->makeBodyLegacy($message); // Add body, with conversion if required
|
||||
$mail->legacyBody = TRUE; // Need to handle plain text email conversion to HTML
|
||||
$mail->makeBody($message); // Add body, with conversion if required
|
||||
|
||||
if($Cc) $mail->AddAddressList('cc', $Cc);
|
||||
|
||||
|
@@ -9,9 +9,9 @@
|
||||
* e107 Main
|
||||
*
|
||||
* $Source: /cvs_backup/e107_0.8/e107_handlers/mail_manager_class.php,v $
|
||||
* $Revision: 1.4 $
|
||||
* $Date: 2009-11-18 01:04:43 $
|
||||
* $Author: e107coders $
|
||||
* $Revision: 1.5 $
|
||||
* $Date: 2009-11-19 20:24:21 $
|
||||
* $Author: e107steved $
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -78,6 +78,7 @@ if (!defined('e107_INIT')) { exit; }
|
||||
define('MAIL_STATUS_SENT', 0); // Mail sent. Email handler happy, but may have bounced (or may be yet to bounce)
|
||||
define('MAIL_STATUS_BOUNCED', 1);
|
||||
define('MAIL_STATUS_CANCELLED', 2);
|
||||
define('MAIL_STATUS_PARTIAL', 3); // A run which was abandoned - errors, out of time etc
|
||||
define('MAIL_STATUS_FAILED', 5); // Failure on initial send - rejected by selected email handler
|
||||
// This must be the numerically highest 'processing complete' code
|
||||
define('MAIL_STATUS_PENDING', 10); // Mail which is in the sending list (even if outside valid sending window)
|
||||
@@ -750,7 +751,7 @@ class e107MailManager
|
||||
/**
|
||||
* Delete an email from the DB, including (potential) recipients
|
||||
* @param $mailID - number for email (assumed to be integral)
|
||||
* @param $actions - allows selection of whic DB to delete from
|
||||
* @param $actions - allows selection of which DB to delete from
|
||||
*
|
||||
* @return FALSE on code error. Array of results on success.
|
||||
*/
|
||||
|
@@ -9,9 +9,9 @@
|
||||
* Administration - Site Maintenance
|
||||
*
|
||||
* $Source: /cvs_backup/e107_0.8/e107_handlers/mailout_admin_class.php,v $
|
||||
* $Revision: 1.4 $
|
||||
* $Date: 2009-11-18 01:04:43 $
|
||||
* $Author: e107coders $
|
||||
* $Revision: 1.5 $
|
||||
* $Date: 2009-11-19 20:24:21 $
|
||||
* $Author: e107steved $
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -338,6 +338,8 @@ class mailoutAdminClass extends e107MailManager
|
||||
return LAN_MAILOUT_213;
|
||||
case MAIL_STATUS_CANCELLED :
|
||||
return LAN_MAILOUT_218;
|
||||
case MAIL_STATUS_PARTIAL :
|
||||
return LAN_MAILOUT_219;
|
||||
case MAIL_STATUS_FAILED :
|
||||
return LAN_MAILOUT_212;
|
||||
case MAIL_STATUS_PENDING :
|
||||
|
@@ -9,9 +9,9 @@
|
||||
* News handler
|
||||
*
|
||||
* $Source: /cvs_backup/e107_0.8/e107_handlers/news_class.php,v $
|
||||
* $Revision: 1.28 $
|
||||
* $Date: 2009-11-18 01:04:43 $
|
||||
* $Author: e107coders $
|
||||
* $Revision: 1.29 $
|
||||
* $Date: 2009-11-19 20:24:21 $
|
||||
* $Author: e107steved $
|
||||
*/
|
||||
|
||||
if (!defined('e107_INIT')) { exit; }
|
||||
@@ -113,8 +113,13 @@ class news {
|
||||
$data['error'] = true;
|
||||
return $data;
|
||||
}
|
||||
|
||||
//XXX - Now hooks are executed only if no mysql error is found. Should it stay so?
|
||||
|
||||
// Calculate short strings for admin logging - no need to clog up the log with potentially long items
|
||||
$logData = $data['data'];
|
||||
if (isset($logData['news_body'])) $logData['news_body'] = $tp->text_truncate($tp->toDB($logData['news_body']),300,'...');
|
||||
if (isset($logData['news_extended'])) $logData['news_extended'] = $tp->text_truncate($tp->toDB($logData['news_extended']),300,'...');
|
||||
|
||||
//XXX - Now hooks are executed only if no mysql error is found. Should it stay so? Seems sensible to me!
|
||||
if ($news['news_id'])
|
||||
{
|
||||
// Updating existing item
|
||||
@@ -123,8 +128,8 @@ class news {
|
||||
//$vals = "news_datestamp = '".intval($news['news_datestamp'])."', ".$author_insert." news_title='".$news['news_title']."', news_body='".$news['news_body']."', news_extended='".$news['news_extended']."', news_category='".intval($news['cat_id'])."', news_allow_comments='".intval($news['news_allow_comments'])."', news_start='".intval($news['news_start'])."', news_end='".intval($news['news_end'])."', news_class='".$tp->toDB($news['news_class'])."', news_render_type='".intval($news['news_rendertype'])."' , news_summary='".$news['news_summary']."', news_thumbnail='".$tp->toDB($news['news_thumbnail'])."', news_sticky='".intval($news['news_sticky'])."' WHERE news_id='".intval($news['news_id'])."' ";
|
||||
if ($sql->db_Update('news', $data))
|
||||
{
|
||||
e107::getAdminLog()->logArrayAll('NEWS_09', $data['data']);
|
||||
|
||||
e107::getAdminLog()->logArrayAll('NEWS_09', $logData);
|
||||
|
||||
//manage rewrites
|
||||
$data['data']['news_id'] = $news['news_id'];
|
||||
if('error' === $this->handleRewriteSubmit('update', $data['data'], $datarw, $smessages))
|
||||
@@ -185,13 +190,13 @@ class news {
|
||||
//$news['news_id'] = $sql ->db_Insert('news', "0, '".$news['news_title']."', '".$news['news_body']."', '".$news['news_extended']."', ".intval($news['news_datestamp']).", ".intval($news['news_author']).", '".intval($news['cat_id'])."', '".intval($news['news_allow_comments'])."', '".intval($news['news_start'])."', '".intval($news['news_end'])."', '".$tp->toDB($news['news_class'])."', '".intval($news['news_rendertype'])."', '0' , '".$news['news_summary']."', '".$tp->toDB($news['news_thumbnail'])."', '".intval($news['news_sticky'])."' ")
|
||||
if ($data['data']['news_id'])
|
||||
{
|
||||
//
|
||||
$data['news_id'] = $news['news_id'];
|
||||
$message = LAN_NEWS_6;
|
||||
$emessage->add(LAN_NEWS_6, E_MESSAGE_SUCCESS, $smessages);
|
||||
e107::getCache()->clear('news.php');
|
||||
|
||||
//moved down - prevent wrong mysql_insert_id
|
||||
e107::getAdminLog()->logArrayAll('NEWS_08', $data['data']);
|
||||
e107::getAdminLog()->logArrayAll('NEWS_08', $logData);
|
||||
|
||||
//manage rewrites
|
||||
if('error' === $this->handleRewriteSubmit('insert', $data['data'], $datarw, $smessages))
|
||||
@@ -201,7 +206,7 @@ class news {
|
||||
|
||||
e107::getEvent()->trigger('newspost', $data['data']);
|
||||
|
||||
//XXX - triggetHook after trigger?
|
||||
//XXX - triggerHook after trigger?
|
||||
$evdata = array('method'=>'create', 'table'=>'news', 'id'=>$data['data']['news_id'], 'plugin'=>'news', 'function'=>'submit_item');
|
||||
$emessage->add($e_event->triggerHook($evdata), E_MESSAGE_INFO, $smessages);
|
||||
}
|
||||
|
@@ -9,9 +9,9 @@
|
||||
* Forum plugin notify configuration
|
||||
*
|
||||
* $Source: /cvs_backup/e107_0.8/e107_handlers/notify_class.php,v $
|
||||
* $Revision: 1.8 $
|
||||
* $Date: 2009-11-18 01:04:43 $
|
||||
* $Author: e107coders $
|
||||
* $Revision: 1.9 $
|
||||
* $Date: 2009-11-19 20:24:21 $
|
||||
* $Author: e107steved $
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -40,42 +40,129 @@ class notify
|
||||
include_lan(e_LANGUAGEDIR.e_LANGUAGE.'/lan_notify.php');
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Send an email notification following an event.
|
||||
*
|
||||
* For up to a (hard-coded) number of recipients, the mail is sent immediately.
|
||||
* Otherwise its added to the queue
|
||||
*
|
||||
* @param string $id - identifies event actions
|
||||
* @param string $subject - subject for email
|
||||
* @param string $message - email message body
|
||||
* @return none
|
||||
*/
|
||||
// TODO: handle 'everyone except' clauses (email address filter done)
|
||||
function send($id, $subject, $message)
|
||||
{
|
||||
global $sql, $tp;
|
||||
e107_require_once(e_HANDLER.'mail.php');
|
||||
$subject = SITENAME.': '.$subject;
|
||||
if ($this->notify_prefs['event'][$id]['class'] == e_UC_MAINADMIN)
|
||||
$e107 = e107::getInstance();
|
||||
|
||||
$subject = $e107->tp->toEmail(SITENAME.': '.$subject);
|
||||
$message = $e107->tp->toEmail($message);
|
||||
$emailFilter = '';
|
||||
$notifyTarget = $this->notify_prefs['event'][$id]['class'];
|
||||
if ($notifyTarget == '-email')
|
||||
{
|
||||
sendemail(SITEADMINEMAIL, $tp->toEmail($subject), $tp->toEmail($message));
|
||||
$emailFilter = $this->notify_prefs['event'][$id]['email'];
|
||||
}
|
||||
elseif (is_numeric($this -> notify_prefs['event'][$id]['class']))
|
||||
if (is_numeric($this -> notify_prefs['event'][$id]['class']))
|
||||
{
|
||||
if ($this->notify_prefs['event'][$id]['class'] == e_UC_ADMIN)
|
||||
switch ($notifyTarget)
|
||||
{
|
||||
$sql->db_Select('user', 'user_email', "user_admin = 1 AND user_ban = 0");
|
||||
case e_UC_MAINADMIN :
|
||||
$qry = "`user_admin` = 1 AND `user_perms` = '0' AND `user_ban` = 0";
|
||||
break;
|
||||
case e_UC_ADMIN :
|
||||
$qry = "`user_admin` = 1 AND `user_ban` = 0";
|
||||
break;
|
||||
case e_UC_MEMBER :
|
||||
$qry = "`user_ban` = 0";
|
||||
break;
|
||||
default :
|
||||
$qry = "user_ban = 0 AND user_class REGEXP '(^|,)(".$this->notify_prefs['event'][$id]['class'].")(,|$)'";
|
||||
break;
|
||||
}
|
||||
elseif ($this->notify_prefs['event'][$id]['class'] == e_UC_MEMBER)
|
||||
$qry = 'SELECT user_id,user_name,user_email FROM `#user` WHERE '.$qry;
|
||||
if (FALSE !== ($count = $e107->sql->db_Select_gen($qry)))
|
||||
{
|
||||
$sql->db_Select('user', 'user_email', 'user_ban = 0');
|
||||
}
|
||||
else
|
||||
{
|
||||
$sql->db_Select('user', 'user_email', "user_ban = 0 AND user_class REGEXP '(^|,)(".$this->notify_prefs['event'][$id]['class'].")(,|$)'");
|
||||
}
|
||||
while ($email = $sql->db_Fetch())
|
||||
{
|
||||
sendemail($email['user_email'], $tp->toEmail($subject), $tp->toEmail($message));
|
||||
if ($count <= 5)
|
||||
{ // Arbitrary number below which we send emails immediately
|
||||
e107_require_once(e_HANDLER.'mail.php');
|
||||
while ($email = $e107->sql->db_Fetch())
|
||||
{
|
||||
if ($email['user_email'] != $emailFilter)
|
||||
{
|
||||
sendemail($email['user_email'], $subject, $message, $email['user_name']);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{ // Otherwise add to mailout queue
|
||||
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' => 'notify',
|
||||
'mail_title' => 'NOTIFY',
|
||||
'mail_subject' => $subject,
|
||||
'mail_sender_email' => $pref['siteadminemail'],
|
||||
'mail_sender_name' => $pref['siteadmin'],
|
||||
'mail_send_style' => 'textonly',
|
||||
'mail_body' => $message
|
||||
);
|
||||
$result = $mailer->saveEmail($mailData, TRUE);
|
||||
if (is_numeric($result))
|
||||
{
|
||||
$mailMainID = $mailData['mail_source_id'] = $result;
|
||||
}
|
||||
else
|
||||
{
|
||||
// TODO: Handle error
|
||||
return; // Probably nothing else we can do
|
||||
}
|
||||
$mailer->mailInitCounters($mailMainID); // Initialise counters for emails added
|
||||
|
||||
// Now add email addresses to the list
|
||||
while ($row = $e107->sql->db_Fetch(MYSQL_ASSOC))
|
||||
{
|
||||
if ($row['user_email'] != $emailFilter)
|
||||
{
|
||||
$uTarget = array('mail_recipient_id' => $row['user_id'],
|
||||
'mail_recipient_name' => $row['user_name'], // Should this use realname?
|
||||
'mail_recipient_email' => $row['user_email']
|
||||
);
|
||||
$result = $mailer->mailAddNoDup($mailMainID, $uTarget, MAIL_STATUS_TEMP);
|
||||
}
|
||||
}
|
||||
$mailer->mailUpdateCounters($mailMainID); // Update the counters
|
||||
$counters = $mailer->mailRetrieveCounters($mailMainID); // Retrieve the counters
|
||||
if ($counters['add'] == 0)
|
||||
{
|
||||
$mailer->deleteEmail($mailMainID); // Probably a fault, but precautionary - delete email
|
||||
}
|
||||
else
|
||||
{
|
||||
$mailer->activateEmail($mailMainID, FALSE); // Actually mark the email for sending
|
||||
}
|
||||
}
|
||||
$e107->admin_log->e_log_event(10,-1,'NOTIFY',$subject,$message,FALSE,LOG_TO_ROLLING);
|
||||
}
|
||||
}
|
||||
elseif ($this->notify_prefs['event'][$id]['class'] == 'email')
|
||||
{
|
||||
sendemail($this->notify_prefs['event'][$id]['email'], $tp->toEmail($subject), $tp->toEmail($message));
|
||||
elseif ($notifyTarget == 'email')
|
||||
{ // Single email address - that can always go immediately
|
||||
e107_require_once(e_HANDLER.'mail.php');
|
||||
sendemail($this->notify_prefs['event'][$id]['email'], $subject, $message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//DEPRECATED, BC, call the method only when needed, $e107->notify caught by __get()
|
||||
global $nt;
|
||||
$nt = e107::getNotify(); //TODO - find & replace $nt, $e107->notify
|
||||
@@ -145,16 +232,20 @@ function notify_subnews($data)
|
||||
|
||||
function notify_newspost($data)
|
||||
{
|
||||
global $nt;
|
||||
$message = '<b>'.$data['news_title'].'</b><br /><br />'.$data['news_summary'].'<br /><br />'.$data['data'].'<br /><br />'.$data['news_extended'];
|
||||
$nt->send('newspost', $data['news_title'], $message);
|
||||
$message = '<b>'.$data['news_title'].'</b>';
|
||||
if (vartrue($data['news_summary'])) $message .= '<br /><br />'.$data['news_summary'];
|
||||
if (vartrue($data['news_body'])) $message .= '<br /><br />'.$data['news_body'];
|
||||
if (vartrue($data['news_extended'])) $message.= '<br /><br />'.$data['news_extended'];
|
||||
e107::getNotify()->send('newspost', $data['news_title'], e107::getParser()->text_truncate(e107::getParser()->toDB($message), 400, '...'));
|
||||
}
|
||||
|
||||
function notify_newsupd($data)
|
||||
{
|
||||
global $nt;
|
||||
$message = '<b>'.$data['news_title'].'</b><br /><br />'.$data['news_summary'].'<br /><br />'.$data['data'].'<br /><br />'.$data['news_extended'];
|
||||
$nt->send('newsupd', NT_LAN_NU_1.': '.$data['news_title'], $message);
|
||||
$message = '<b>'.$data['news_title'].'</b>';
|
||||
if (vartrue($data['news_summary'])) $message .= '<br /><br />'.$data['news_summary'];
|
||||
if (vartrue($data['news_body'])) $message .= '<br /><br />'.$data['news_body'];
|
||||
if (vartrue($data['news_extended'])) $message.= '<br /><br />'.$data['news_extended'];
|
||||
e107::getNotify()->send('newsupd', NT_LAN_NU_1.': '.$data['news_title'], e107::getParser()->text_truncate(e107::getParser()->toDB($message), 400, '...'));
|
||||
}
|
||||
|
||||
function notify_newsdel($data)
|
||||
|
@@ -9,9 +9,9 @@
|
||||
* Administration - Site Maintenance
|
||||
*
|
||||
* $Source: /cvs_backup/e107_0.8/e107_languages/English/admin/lan_mailout.php,v $
|
||||
* $Revision: 1.9 $
|
||||
* $Date: 2009-11-18 01:05:12 $
|
||||
* $Author: e107coders $
|
||||
* $Revision: 1.10 $
|
||||
* $Date: 2009-11-19 20:24:21 $
|
||||
* $Author: e107steved $
|
||||
*
|
||||
*/
|
||||
define('LAN_MAILOUT_01','From Name');
|
||||
@@ -235,7 +235,7 @@ define('LAN_MAILOUT_215', 'Saved');
|
||||
define('LAN_MAILOUT_216', 'Code error');
|
||||
define('LAN_MAILOUT_217', 'Held');
|
||||
define('LAN_MAILOUT_218', 'Cancelled');
|
||||
define('LAN_MAILOUT_219', '');
|
||||
define('LAN_MAILOUT_219', 'Partial');
|
||||
|
||||
// General messages continued
|
||||
define('LAN_MAILOUT_220', 'Email ID --ID-- cancelled');
|
||||
|
@@ -6,26 +6,28 @@
|
||||
* Released under the terms and conditions of the
|
||||
* GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
|
||||
*
|
||||
*
|
||||
* Administration - Site Maintenance
|
||||
*
|
||||
* $Source: /cvs_backup/e107_0.8/e107_plugins/newsletter/admin_config.php,v $
|
||||
* $Revision: 1.11 $
|
||||
* $Date: 2009-11-18 01:05:53 $
|
||||
* $Author: e107coders $
|
||||
*/
|
||||
|
||||
* $Revision: 1.12 $
|
||||
* $Date: 2009-11-19 20:24:21 $
|
||||
* $Author: e107steved $
|
||||
*
|
||||
*/
|
||||
require_once('../../class2.php');
|
||||
if (!getperms("P"))
|
||||
if (!getperms('P'))
|
||||
{
|
||||
header('location:'.e_BASE.'index.php');
|
||||
exit;
|
||||
}
|
||||
$e_sub_cat = 'newsletter';
|
||||
require_once(e_ADMIN."auth.php");
|
||||
require_once(e_ADMIN.'auth.php');
|
||||
// Include ren_help for display_help (while showing BBcodes)
|
||||
require_once(e_HANDLER.'ren_help.php');
|
||||
|
||||
if (e_QUERY)
|
||||
{
|
||||
list($action, $id, $key) = explode(".", e_QUERY);
|
||||
list($action, $id, $key) = explode('.', e_QUERY);
|
||||
$key = intval($key);
|
||||
$id = intval($id);
|
||||
}
|
||||
@@ -46,7 +48,7 @@ else
|
||||
{
|
||||
switch ($action)
|
||||
{
|
||||
case 'vs' : // View subscribers of a newsletter
|
||||
case 'vs' : // View subscribers of a newsletter
|
||||
$nl -> view_subscribers($id);
|
||||
break;
|
||||
case 'remove' : // Remove subscriber
|
||||
@@ -54,10 +56,10 @@ else
|
||||
$nl -> view_subscribers($id);
|
||||
break;
|
||||
default:
|
||||
$function = $action."Newsletter";
|
||||
$function = $action.'Newsletter';
|
||||
if (method_exists($nl, $function))
|
||||
{
|
||||
$nl -> $function();
|
||||
$nl -> $function($id);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -67,20 +69,19 @@ else
|
||||
}
|
||||
|
||||
|
||||
|
||||
class newsletter
|
||||
{
|
||||
protected $e107;
|
||||
var $message;
|
||||
|
||||
|
||||
function newsletter()
|
||||
public function __construct()
|
||||
{
|
||||
global $ns, $tp;
|
||||
$this->e107 = e107::getInstance();
|
||||
|
||||
foreach($_POST as $key => $value)
|
||||
{
|
||||
$key = $tp->toDB($key);
|
||||
if(strstr($key, "nlmailnow"))
|
||||
$key = $this->e107->tp->toDB($key);
|
||||
if(strpos($key, 'nlmailnow') === 0)
|
||||
{
|
||||
$this->releaseIssue($key);
|
||||
break;
|
||||
@@ -104,16 +105,15 @@ class newsletter
|
||||
|
||||
if($this -> message)
|
||||
{
|
||||
$ns->tablerender("", "<div style='text-align:center'><b>".$this -> message."</b></div>");
|
||||
$this->e107->ns->tablerender('', "<div style='text-align:center'><b>".$this -> message.'</b></div>');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function showExistingNewsletters()
|
||||
{
|
||||
global $sql, $ns, $tp;
|
||||
|
||||
if(!$sql -> db_Select("newsletter", "*", "newsletter_parent='0' ORDER BY newsletter_id DESC"))
|
||||
if(!$this->e107->sql->db_Select('newsletter', '*', "newsletter_parent='0' ORDER BY newsletter_id DESC"))
|
||||
{
|
||||
$text = NLLAN_05;
|
||||
}
|
||||
@@ -129,7 +129,7 @@ class newsletter
|
||||
</tr>
|
||||
";
|
||||
|
||||
$nlArray = $sql -> db_getList();
|
||||
$nlArray = $this->e107->sql->db_getList();
|
||||
foreach($nlArray as $data)
|
||||
{
|
||||
$text .= "<tr>
|
||||
@@ -138,7 +138,7 @@ class newsletter
|
||||
<td style='width:20%; text-align: center;' class='forumheader'>".((substr_count($data['newsletter_subscribers'], chr(1))!= 0)?"<a href='".e_SELF."?vs.".$data['newsletter_id']."'>".substr_count($data['newsletter_subscribers'], chr(1))."</a>":substr_count($data['newsletter_subscribers'], chr(1)))."</td>
|
||||
<td style='width:10%; text-align: center;' class='forumheader3'>
|
||||
<a href='".e_SELF."?edit.".$data['newsletter_id']."'>".ADMIN_EDIT_ICON."</a>
|
||||
<input type='image' title='".LAN_DELETE."' name='delete[newsletter_".$data['newsletter_id']."]' src='".ADMIN_DELETE_ICON_PATH."' onclick=\"return jsconfirm('".$tp->toJS(NLLAN_09." [ID: ".$data['newsletter_id']." ]")."') \"/>
|
||||
<input type='image' title='".LAN_DELETE."' name='delete[newsletter_".$data['newsletter_id']."]' src='".ADMIN_DELETE_ICON_PATH."' onclick=\"return jsconfirm('".$this->e107->tp->toJS(NLLAN_09." [ID: ".$data['newsletter_id']." ]")."') \"/>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -150,10 +150,9 @@ class newsletter
|
||||
</div>
|
||||
";
|
||||
}
|
||||
$ns -> tablerender(NLLAN_10, $text);
|
||||
$this->e107->ns->tablerender(NLLAN_10, $text);
|
||||
|
||||
|
||||
if(!$sql -> db_Select("newsletter", "*", "newsletter_parent!='0' ORDER BY newsletter_id DESC"))
|
||||
if(!$this->e107->sql->db_Select('newsletter', '*', "newsletter_parent!='0' ORDER BY newsletter_id DESC"))
|
||||
{
|
||||
$text = NLLAN_11;
|
||||
}
|
||||
@@ -170,7 +169,7 @@ class newsletter
|
||||
</tr>
|
||||
";
|
||||
|
||||
$nlArray = $sql -> db_getList();
|
||||
$nlArray = $this->e107->sql->db_getList();
|
||||
|
||||
foreach($nlArray as $data)
|
||||
{
|
||||
@@ -178,10 +177,10 @@ class newsletter
|
||||
<td style='width:5%; text-align: center;' class='forumheader3'>".$data['newsletter_id']."</td>
|
||||
<td style='width:10%; text-align: center;' class='forumheader3'>".$data['newsletter_issue']."</td>
|
||||
<td style='width:65%' class='forumheader3'>[ ".$data['newsletter_parent']." ] ".$data['newsletter_title']."</td>
|
||||
<td style='width:10%; text-align: center;' class='forumheader3'>".($data['newsletter_flag'] ? NLLAN_16 : "<input class='button' type='submit' name='nlmailnow_".$data['newsletter_id']."' value='".NLLAN_17."' onclick=\"return jsconfirm('".$tp->toJS(NLLAN_18)."') \" />")."</td>
|
||||
<td style='width:10%; text-align: center;' class='forumheader3'>".($data['newsletter_flag'] ? NLLAN_16 : "<input class='button' type='submit' name='nlmailnow_".$data['newsletter_id']."' value='".NLLAN_17."' onclick=\"return jsconfirm('".$this->e107->tp->toJS(NLLAN_18)."') \" />")."</td>
|
||||
<td style='width:10%; text-align: center;' class='forumheader3'>
|
||||
<a href='".e_SELF."?edit.".$data['newsletter_id']."'>".ADMIN_EDIT_ICON."</a>
|
||||
<input type='image' title='".LAN_DELETE."' name='delete[issue_".$data['newsletter_id']."]' src='".ADMIN_DELETE_ICON_PATH."' onclick=\"return jsconfirm('".$tp->toJS(NLLAN_19." [ID: ".$data['newsletter_id']." ]")."') \"/>
|
||||
<input type='image' title='".LAN_DELETE."' name='delete[issue_".$data['newsletter_id']."]' src='".ADMIN_DELETE_ICON_PATH."' onclick=\"return jsconfirm('".$this->e107->tp->toJS(NLLAN_19." [ID: ".$data['newsletter_id']." ]")."') \"/>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -193,23 +192,20 @@ class newsletter
|
||||
</div>
|
||||
";
|
||||
}
|
||||
$ns -> tablerender(NLLAN_20, $text);
|
||||
$this->e107->ns->tablerender(NLLAN_20, $text);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
function defineNewsletter($edit=FALSE)
|
||||
{
|
||||
global $ns, $tp;
|
||||
// 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']); // Looks as if this was missed
|
||||
$newsletter_title = $this->e107->tp->toFORM($edit['newsletter_title']);
|
||||
$newsletter_text = $this->e107->tp->toFORM($edit['newsletter_text']);
|
||||
$newsletter_footer = $this->e107->tp->toFORM($edit['newsletter_footer']);
|
||||
$newsletter_header = $this->e107->tp->toFORM($edit['newsletter_header']);
|
||||
}
|
||||
|
||||
$text .= "<div style='text-align:center; margin-left:auto; margin-right: auto;'>
|
||||
@@ -245,29 +241,34 @@ class newsletter
|
||||
|
||||
$caption = ($edit ? NLLAN_25 : NLLAN_26);
|
||||
|
||||
$ns -> tablerender($caption, $text);
|
||||
$this->e107->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()
|
||||
{
|
||||
global $sql, $tp;
|
||||
|
||||
$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']);
|
||||
$letter['newsletter_title'] = $this->e107->tp->toDB($_POST['newsletter_title']);
|
||||
$letter['newsletter_text'] = $this->e107->tp->toDB($_POST['newsletter_text']);
|
||||
$letter['newsletter_header'] = $this->e107->tp->toDB($_POST['newsletter_header']);
|
||||
$letter['newsletter_footer'] = $this->e107->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']));
|
||||
$this->e107->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']));
|
||||
$this -> message = NLLAN_27;
|
||||
}
|
||||
else
|
||||
{
|
||||
$letter['newsletter_datestamp'] = time();
|
||||
$sql -> db_Insert('newsletter', $letter);
|
||||
$this->e107->sql->db_Insert('newsletter', $letter);
|
||||
$this -> message = NLLAN_28;
|
||||
}
|
||||
}
|
||||
@@ -276,23 +277,21 @@ class newsletter
|
||||
|
||||
function makeNewsletter($edit=FALSE)
|
||||
{
|
||||
global $sql, $ns, $tp;
|
||||
|
||||
// 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']);
|
||||
$newsletter_title = $this->e107->tp->toFORM($edit['newsletter_title']);
|
||||
$newsletter_text = $this->e107->tp->toFORM($edit['newsletter_text']);
|
||||
$newsletter_issue = $this->e107->tp->toFORM($edit['newsletter_issue']);
|
||||
}
|
||||
|
||||
if(!$sql -> db_Select("newsletter", "*", "newsletter_parent='0' "))
|
||||
if(!$this->e107->sql->db_Select('newsletter', '*', "newsletter_parent='0' "))
|
||||
{
|
||||
$this -> message = NLLAN_29;
|
||||
$this -> message = NLLAN_05;
|
||||
return;
|
||||
}
|
||||
|
||||
$nlArray = $sql -> db_getList();
|
||||
$nlArray = $this->e107->sql -> db_getList();
|
||||
|
||||
$text .= "<div style='text-align:center; margin-left:auto; margin-right: auto;'>
|
||||
<form action='".e_SELF."' id='newsletterform' method='post'>
|
||||
@@ -322,7 +321,9 @@ class newsletter
|
||||
</tr>
|
||||
<tr>
|
||||
<td style='width:30%;' class='forumheader3'>".NLLAN_33."</td>
|
||||
<td style='width:70%' class='forumheader3'><textarea class='tbox' id='data' name='newsletter_text' cols='80' rows='10' style='width:95%'>{$edit['newsletter_text']}</textarea></td>
|
||||
<td style='width:70%' class='forumheader3'>
|
||||
<textarea class='tbox' id='data' name='newsletter_text' cols='80' rows='10' style='width:95%' onselect='storeCaret(this);' onclick='storeCaret(this);' onkeyup='storeCaret(this);'>{$edit['newsletter_text']}</textarea><br/>".display_help('helpa')."
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' style='text-align:center' class='forumheader'>
|
||||
@@ -337,141 +338,150 @@ class newsletter
|
||||
|
||||
$caption = ($edit ? NLLAN_36 : NLLAN_37);
|
||||
|
||||
$ns -> tablerender($caption, $text);
|
||||
$this->e107->ns->tablerender($caption, $text);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
function createIssue()
|
||||
{
|
||||
global $sql, $tp;
|
||||
$letter['newsletter_title'] = $tp -> toDB($_POST['newsletter_title']);
|
||||
$letter['newsletter_text'] = $tp -> toDB($_POST['newsletter_text']);
|
||||
$letter['newsletter_title'] = $this->e107->tp->toDB($_POST['newsletter_title']);
|
||||
$letter['newsletter_text'] = $this->e107->tp->toDB($_POST['newsletter_text']);
|
||||
$letter['newsletter_parent'] = intval($_POST['newsletter_parent']);
|
||||
$letter['newsletter_issue'] = $tp->toDB($_POST['newsletter_issue']);
|
||||
$letter['newsletter_issue'] = $this->e107->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']));
|
||||
$this->e107->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']));
|
||||
$this -> message = NLLAN_38;
|
||||
}
|
||||
else
|
||||
{
|
||||
$letter['newsletter_datestamp'] = time();
|
||||
$sql -> db_Insert('newsletter', $letter);
|
||||
$this->e107->sql->db_Insert('newsletter', $letter);
|
||||
$this -> message = NLLAN_39;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 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)
|
||||
{
|
||||
global $pref, $sql, $ns, $tp, $THEMES_DIRECTORY;
|
||||
global $pref;
|
||||
|
||||
$issue = str_replace("nlmailnow_", "", $issue);
|
||||
$issue = intval(str_replace('nlmailnow_', '', $issue));
|
||||
|
||||
if(!$sql -> db_Select("newsletter", "*", "newsletter_id='{$issue}' "))
|
||||
// Get details of current newsletter issue
|
||||
if(!$this->e107->sql->db_Select('newsletter', '*', 'newsletter_id='.$issue))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
$newsletterInfo = $sql -> db_Fetch();
|
||||
$newsletterInfo = $this->e107->sql->db_Fetch(MYSQL_ASSOC);
|
||||
|
||||
if(!$sql -> db_Select("newsletter", "*", "newsletter_id='".$newsletterInfo['newsletter_parent']."' "))
|
||||
// Get parent details - has header/footer and subscriber list
|
||||
if(!$this->e107->sql -> db_Select('newsletter', '*', "newsletter_id='".$newsletterInfo['newsletter_parent']."' "))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
$newsletterParentInfo = $sql -> db_Fetch();
|
||||
$newsletterParentInfo = $this->e107->sql->db_Fetch(MYSQL_ASSOC);
|
||||
$memberArray = explode(chr(1), $newsletterParentInfo['newsletter_subscribers']);
|
||||
|
||||
require(e_HANDLER."phpmailer/class.phpmailer.php");
|
||||
require(e_HANDLER.'mail_manager_class.php');
|
||||
$mailer = new e107MailManager;
|
||||
|
||||
$mail = new PHPMailer();
|
||||
|
||||
$mail->From = $pref['siteadminemail'];
|
||||
$mail->FromName = $pref['siteadmin'];
|
||||
if ($pref['mailer'] == "smtp")
|
||||
// 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 = "<div style='width:90%; padding-top:10px'>";
|
||||
$mail_style .= "<div class='fcaption'><b>{$mailout['mail_subject']}<br />[ ".NLLAN_12." ".$newsletterInfo['newsletter_issue']." ]</b></div><br /><br />";
|
||||
$mail_style .= "<div class='forumheader3'>";
|
||||
$mailData['mail_body'] = $mail_style.$newsletterParentInfo['newsletter_header']."<hr />".$newsletterInfo['newsletter_text']."<br /><br /><hr />".$newsletterParentInfo['newsletter_footer']."<br /></div></div>";
|
||||
|
||||
$result = $mailer->saveEmail($mailData, TRUE);
|
||||
if (is_numeric($result))
|
||||
{
|
||||
$mail->Mailer = "smtp";
|
||||
$mail->SMTPKeepAlive = (isset($pref['smtp_keepalive']) && $pref['smtp_keepalive']==1) ? TRUE : FALSE;
|
||||
$mail->SMTPAuth = TRUE;
|
||||
$mail->Username = $pref['smtp_username'];
|
||||
$mail->Password = $pref['smtp_password'];
|
||||
$mail->Host = $pref['smtp_server'];
|
||||
$mailMainID = $mailData['mail_source_id'] = $result;
|
||||
}
|
||||
else
|
||||
{
|
||||
$mail->Mailer = "mail";
|
||||
// TODO: Handle error
|
||||
}
|
||||
|
||||
|
||||
$mail->WordWrap = 50;
|
||||
$mail->CharSet = 'utf-8';
|
||||
$mail->Subject = $newsletterParentInfo['newsletter_title'] . ": ".$newsletterInfo['newsletter_title'];
|
||||
$mail->IsHTML(true);
|
||||
$mailer->mailInitCounters($mailMainID); // Initialise counters for emails added
|
||||
|
||||
// ============================ Render Results and Mail it =========
|
||||
|
||||
$message_subject = stripslashes($tp -> toHTML($mail->Subject));
|
||||
$message_body = stripslashes($tp -> toHTML($mail->Subject, TRUE));
|
||||
$message_body = str_replace(""", '"', $tp -> toHTML($newsletterInfo['newsletter_text'], TRUE));
|
||||
$message_body = str_replace('src="', 'src="'.SITEURL, $message_body);
|
||||
|
||||
$newsletter_header = $tp -> toHTML($newsletterParentInfo['newsletter_header'], TRUE);
|
||||
$newsletter_footer = $tp -> toHTML($newsletterParentInfo['newsletter_footer'], TRUE);
|
||||
|
||||
|
||||
$theme = $THEMES_DIRECTORY.$pref['sitetheme']."/";
|
||||
$mail_style = "<link rel=\"stylesheet\" href=\"".SITEURL.$theme."style.css\" type=\"text/css\" />";
|
||||
$mail_style .= "<div style='width:100%'>";
|
||||
$mail_style .= "<div style='width:90%; padding-top:10px'>";
|
||||
$mail_style .= "<div class='fcaption'><b>$message_subject<br />[ ".NLLAN_12." ".$newsletterInfo['newsletter_issue']." ]</b></div><br /><br />";
|
||||
$mail_style .= "<div class='forumheader3'>";
|
||||
$message_body = $mail_style.$newsletter_header."<hr />".$message_body."<br /><br /><hr />".$newsletter_footer."<br /></div></div>";
|
||||
|
||||
$message_body = str_replace("\n", "<br />", $message_body);
|
||||
|
||||
$mail->Body = $tp->toHTML($message_body, TRUE,'no_replace, emotes_off');
|
||||
$mail->AltBody = strip_tags(str_replace("<br />", "\n", $message_body));
|
||||
|
||||
$sent_counter = 0;
|
||||
// Now add email addresses to the list
|
||||
|
||||
foreach($memberArray as $memberID)
|
||||
{
|
||||
if($memberID)
|
||||
if ($memberID = intval($memberID))
|
||||
{
|
||||
if($sql -> db_Select("user", "user_name, user_email", "user_id='$memberID' "))
|
||||
if($this->e107->sql->db_Select('user', 'user_name,user_email,user_loginname,user_lastvisit', 'user_id='.$memberID))
|
||||
{
|
||||
$row = $sql -> db_Fetch();
|
||||
$mname = $row['user_name'];
|
||||
$memail = $row['user_email'];
|
||||
}
|
||||
|
||||
$mail->AddAddress($memail, $mname);
|
||||
|
||||
echo "<b>".NLLAN_54."</b> ".$mname." ( ".$memail." ) <br />";
|
||||
|
||||
$mail->Send();
|
||||
$sent_counter ++;
|
||||
|
||||
$mail->ClearAddresses();
|
||||
if ($pref['mailer'] == "smtp") {
|
||||
$mail->SmtpClose();
|
||||
$row = $this->e107->sql->db_Fetch(MYSQL_ASSOC);
|
||||
$uTarget = array('mail_recipient_id' => $memberID,
|
||||
'mail_recipient_name' => $row['user_name'], // Should this use realname?
|
||||
'mail_recipient_email' => $row['user_email'],
|
||||
'mail_target_info' => array(
|
||||
'USERID' => $memberID,
|
||||
'DISPLAYNAME' => $row['user_name'],
|
||||
'USERNAME' => $row['user_loginname'],
|
||||
'USERLASTVISIT' => $row['user_lastvisit']
|
||||
)
|
||||
); // Probably overkill, but some user data in case we want to substitute
|
||||
}
|
||||
$result = $mailer->mailAddNoDup($mailMainID, $uTarget, MAIL_STATUS_TEMP);
|
||||
//echo '<b>'.NLLAN_54.'</b> '.$uTarget['mail_recipient_name'].' ( '.$uTarget['mail_recipient_email'].' ) <br />';
|
||||
}
|
||||
}
|
||||
$sql -> db_Update("newsletter", "newsletter_flag='1' WHERE newsletter_id='$issue' ");
|
||||
$this -> message = NLLAN_40.$sent_counter.NLLAN_41;
|
||||
$mailer->mailUpdateCounters($mailMainID); // Update the counters
|
||||
$counters = $mailer->mailRetrieveCounters($mailMainID); // Retrieve the counters
|
||||
if ($counters['add'] == 0)
|
||||
{
|
||||
$mailer->deleteEmail($mailMainID); // No subscribers - delete email
|
||||
$this->message = NLLAN_41;
|
||||
}
|
||||
else
|
||||
{
|
||||
$mailer->activateEmail($mailMainID, FALSE); // Actually mark the email for sending
|
||||
$this->message = str_replace('--COUNT--', $counters['add'],NLLAN_40);
|
||||
}
|
||||
$this->e107->sql->db_Update('newsletter', "newsletter_flag='1' WHERE newsletter_id=".$issue);
|
||||
}
|
||||
|
||||
|
||||
|
||||
function editNewsletter()
|
||||
/**
|
||||
* Edit a newsletter
|
||||
*
|
||||
* @param $id int ID of newsletter to edit
|
||||
* @return none
|
||||
*/
|
||||
function editNewsletter($id)
|
||||
{
|
||||
global $id, $sql;
|
||||
|
||||
if($sql -> db_Select("newsletter", "*", "newsletter_id='{$id}' "))
|
||||
if($this->e107->sql->db_Select("newsletter", "*", "newsletter_id='{$id}'"))
|
||||
{
|
||||
$foo = $sql -> db_Fetch();
|
||||
$foo = $this->e107->sql->db_Fetch();
|
||||
if(!$foo['newsletter_parent'])
|
||||
{
|
||||
$this -> defineNewsletter($foo);
|
||||
@@ -484,36 +494,41 @@ class newsletter
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Delete a newsletter
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
function deleteNewsletter()
|
||||
{
|
||||
global $sql;
|
||||
$tmp = each($_POST['delete']);
|
||||
if(strstr($tmp['key'], "newsletter"))
|
||||
if(strpos($tmp['key'], 'newsletter') === 0)
|
||||
{
|
||||
$id = str_replace("newsletter_", "", $tmp['key']);
|
||||
$sql -> db_Delete("newsletter", "newsletter_id='{$id}' ");
|
||||
$id = intval(str_replace('newsletter_', '', $tmp['key']));
|
||||
$this->e107->sql->db_Delete('newsletter', "newsletter_id='{$id}'");
|
||||
$this -> message = NLLAN_42;
|
||||
}
|
||||
else
|
||||
{
|
||||
$id = str_replace("issue_", "", $tmp['key']);
|
||||
$sql -> db_Delete("newsletter", "newsletter_id='{$id}' ");
|
||||
$id = intval(str_replace('issue_', '', $tmp['key']));
|
||||
$this->e107->sql->db_Delete('newsletter', "newsletter_id='{$id}' ");
|
||||
$this -> message = NLLAN_43;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Generate and display admin menu
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
function show_options($action)
|
||||
{
|
||||
global $sql;
|
||||
if ($action == "")
|
||||
{
|
||||
$action = "main";
|
||||
}
|
||||
// ##### Display options ---------------------------------------------------------------------------------------------------------
|
||||
|
||||
$var['main']['text'] = NLLAN_44;
|
||||
$var['main']['link'] = e_SELF;
|
||||
|
||||
@@ -528,97 +543,107 @@ class newsletter
|
||||
|
||||
|
||||
|
||||
|
||||
function view_subscribers($p_id)
|
||||
{
|
||||
global $ns;
|
||||
|
||||
$nl_sql = new db;
|
||||
if(!$nl_sql -> db_Select('newsletter', '*', 'newsletter_id='.$p_id))
|
||||
function view_subscribers($p_id)
|
||||
{
|
||||
// Check if newsletter id is available
|
||||
$vs_text .= "<br /><br /><center>".NLLAN_56."<br /><br/>
|
||||
<input class='button' type=button value='".NLLAN_57."' onClick=\"window.location='".e_SELF."'\"></center>";
|
||||
$ns -> tablerender(NLLAN_58, $vs_text);
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
$vs_text .= "
|
||||
<form action='".e_SELF."' id='newsletterform' method='post'>
|
||||
<table style='".ADMIN_WIDTH."' class='fborder'>
|
||||
<tr>
|
||||
<td style='width:5%; text-align: center;' class='forumheader'>".NLLAN_55."</td>
|
||||
<td style='width:35%' class='forumheader'>".NLLAN_59."</td>
|
||||
<td style='width:45%;' class='forumheader'>".NLLAN_60."</td>
|
||||
<td style='width:15%; text-align: center;' class='forumheader'>".NLLAN_61."</td>
|
||||
</tr>";
|
||||
|
||||
// $nl_sql -> db_Select("newsletter", "*", "newsletter_id=".$p_id); Already done
|
||||
if($nl_row = $nl_sql-> db_Fetch())
|
||||
$nl_sql = new db;
|
||||
$_nl_sanatized = '';
|
||||
if(!$nl_sql -> db_Select('newsletter', '*', 'newsletter_id='.$p_id))
|
||||
{ // Check if newsletter id is available
|
||||
$vs_text .= "<br /><br /><center>".NLLAN_56."<br /><br/>
|
||||
<input class='button' type=button value='".NLLAN_57."' onClick=\"window.location='".e_SELF."'\"></center>";
|
||||
$ns -> tablerender(NLLAN_58, $vs_text);
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
$subscribers_list = explode(chr(1), trim($nl_row['newsletter_subscribers']));
|
||||
$subscribers_total_count = count($subscribers_list) - 1; // Get a null entry as well
|
||||
}
|
||||
if ($subscribers_total_count<1)
|
||||
{
|
||||
header("location:".e_SELF);
|
||||
exit;
|
||||
}
|
||||
// Loop through each user in the array subscribers_list
|
||||
foreach ($subscribers_list as $val)
|
||||
{
|
||||
$val=trim($val);
|
||||
if ($val)
|
||||
$vs_text .= "
|
||||
<form action='".e_SELF."' id='newsletterform' method='post'>
|
||||
<table style='".ADMIN_WIDTH."' class='fborder'>
|
||||
<tr>
|
||||
<td style='width:5%; text-align: center;' class='forumheader'>".NLLAN_55."</td>
|
||||
<td style='width:35%' class='forumheader'>".NLLAN_59."</td>
|
||||
<td style='width:45%;' class='forumheader'>".NLLAN_60."</td>
|
||||
<td style='width:15%; text-align: center;' class='forumheader'>".NLLAN_61."</td>
|
||||
</tr>";
|
||||
if($nl_row = $nl_sql-> db_Fetch())
|
||||
{
|
||||
$nl_sql -> db_Select("user", "*", "user_id=".$val);
|
||||
if($nl_row = $nl_sql-> db_Fetch())
|
||||
$subscribers_list = explode(chr(1), trim($nl_row['newsletter_subscribers']));
|
||||
sort($subscriber_list);
|
||||
$subscribers_total_count = count($subscribers_list) - 1; // Get a null entry as well
|
||||
}
|
||||
if ($subscribers_total_count<1)
|
||||
{
|
||||
header("location:".e_SELF);
|
||||
exit;
|
||||
}
|
||||
// Loop through each user in the array subscribers_list & sanatize
|
||||
$_last_subscriber = '';
|
||||
foreach ($subscribers_list as $val)
|
||||
{
|
||||
$val=trim($val);
|
||||
if ($val)
|
||||
{
|
||||
$vs_text .= "<tr>
|
||||
<td style='text-align: center;' class='forumheader3'>{$val}
|
||||
</td>
|
||||
<td class='forumheader3'><a href='".e_BASE."user.php?id.{$val}'>".$nl_row['user_name']."</a>
|
||||
</td>
|
||||
<td class='forumheader3'>".$nl_row['user_email']."
|
||||
</td>
|
||||
<td style='text-align: center;' class='forumheader3'><a href='".e_SELF."?remove.{$p_id}.{$val}'>".ADMIN_DELETE_ICON."</a>
|
||||
".(($nl_row['user_ban'] > 0) ? NLLAN_62 : "")."
|
||||
</td>
|
||||
</tr>";
|
||||
if ($val != $_last_subscriber)
|
||||
{
|
||||
$nl_sql -> db_Select("user", "*", "user_id=".$val);
|
||||
if($nl_row = $nl_sql-> db_Fetch())
|
||||
{
|
||||
$vs_text .= "<tr>
|
||||
<td style='text-align: center;' class='forumheader3'>{$val}
|
||||
</td>
|
||||
<td class='forumheader3'><a href='".e_BASE."user.php?id.{$val}'>".$nl_row['user_name']."</a>
|
||||
</td>
|
||||
<td class='forumheader3'>".$nl_row['user_email']."
|
||||
</td>
|
||||
<td style='text-align: center;' class='forumheader3'><a href='".e_SELF."?remove.{$p_id}.{$val}'>".ADMIN_DELETE_ICON."</a>
|
||||
".(($nl_row['user_ban'] > 0) ? NLLAN_62 : "")."
|
||||
</td>
|
||||
</tr>";
|
||||
$_last_subscriber = $val;
|
||||
}
|
||||
}
|
||||
else
|
||||
{ // Duplicate user id found in the subscribers_list array!
|
||||
newsletter::remove_subscribers($p_id, $val); // removes all entries for this user id
|
||||
$newsletterArray[$p_id]['newsletter_subscribers'] = chr(1).$val; // keep this single value in the list
|
||||
$nl_sql -> db_Update("newsletter", "newsletter_subscribers='".$newsletterArray[$p_id]['newsletter_subscribers']."' WHERE newsletter_id='".intval($p_id)."'");
|
||||
$subscribers_total_count --;
|
||||
$_nl_sanatized = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$vs_text .= "
|
||||
<tr>
|
||||
<td colspan='4' class='forumheader'>".NLLAN_63.": ".$subscribers_total_count."</td>
|
||||
</tr>
|
||||
<tr><td colspan='4' style='text-align:center;'><br /><input class='button' type='submit' value='".NLLAN_64."' /></td></tr>
|
||||
</table></form>
|
||||
";
|
||||
$ns -> tablerender(NLLAN_65.' '.$p_id, $vs_text);
|
||||
}
|
||||
|
||||
$vs_text .= "
|
||||
<tr>
|
||||
<td colspan='4' class='forumheader'>".NLLAN_63.": ".$subscribers_total_count."</td>
|
||||
</tr>
|
||||
<tr><td colspan='4' style='text-align:center;'><br /><input class='button' type='submit' value='".NLLAN_64."' /></td></tr>
|
||||
</table></form>
|
||||
";
|
||||
if ($_nl_sanatized == 1)
|
||||
{
|
||||
$vs_text .= "<br /><div style='text-align:center;'>".NLLAN_66."</div>";
|
||||
}
|
||||
$this->e107->ns->tablerender(NLLAN_65.' '.$p_id, $vs_text);
|
||||
}
|
||||
|
||||
|
||||
|
||||
function remove_subscribers($p_id, $p_key)
|
||||
{
|
||||
global $sql;
|
||||
$sql -> db_Select("newsletter", "*", "newsletter_id=".$p_id);
|
||||
if($nl_row = $sql-> db_Fetch())
|
||||
$this->e107->sql -> db_Select('newsletter', '*', 'newsletter_id='.intval($p_id));
|
||||
if($nl_row = $this->e107->sql-> db_Fetch(MYSQL_ASSOC))
|
||||
{
|
||||
$subscribers_list = array_flip(explode(chr(1), $nl_row['newsletter_subscribers']));
|
||||
unset($subscribers_list[$p_key]);
|
||||
$new_subscriber_list = implode(chr(1), array_keys($subscribers_list));
|
||||
$sql -> db_Update("newsletter", "newsletter_subscribers='{$new_subscriber_list}' WHERE newsletter_id=".$p_id);
|
||||
$this->e107->sql->db_Update('newsletter', "newsletter_subscribers='{$new_subscriber_list}' WHERE newsletter_id='".$p_id."'");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
require_once(e_ADMIN."footer.php");
|
||||
|
||||
require_once(e_ADMIN.'footer.php');
|
||||
|
||||
function admin_config_adminmenu()
|
||||
{
|
||||
@@ -626,5 +651,4 @@ function admin_config_adminmenu()
|
||||
global $action;
|
||||
$nl->show_options($action);
|
||||
}
|
||||
|
||||
?>
|
212
e107_plugins/newsletter/e_mailout.php
Normal file
212
e107_plugins/newsletter/e_mailout.php
Normal file
@@ -0,0 +1,212 @@
|
||||
<?php
|
||||
/*
|
||||
* e107 website system
|
||||
*
|
||||
* Copyright (C) 2008-2009 e107 Inc (e107.org)
|
||||
* Released under the terms and conditions of the
|
||||
* GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
|
||||
*
|
||||
* Administration - Site Maintenance
|
||||
*
|
||||
* $Source: /cvs_backup/e107_0.8/e107_plugins/newsletter/e_mailout.php,v $
|
||||
* $Revision: 1.1 $
|
||||
* $Date: 2009-11-19 20:24:21 $
|
||||
* $Author: e107steved $
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
if (!defined('e107_INIT')) { exit; }
|
||||
|
||||
|
||||
include_lan(e_PLUGIN.'/newsletter/languages/English_admin_newsletter.php');
|
||||
|
||||
/*
|
||||
Class for event calendar mailout function
|
||||
|
||||
Allows admins to send mail to those subscribed to calendar events
|
||||
*/
|
||||
// These variables determine the circumstances under which this class is loaded (only used during loading, and may be overwritten later)
|
||||
$mailerIncludeWithDefault = TRUE; // Mandatory - if false, show only when mailout for this specific plugin is enabled
|
||||
$mailerExcludeDefault = FALSE; // Mandatory - if TRUE, when this plugin's mailout is active, the default (core) isn't loaded
|
||||
|
||||
class newsletter_mailout
|
||||
{
|
||||
protected $mailCount = 0;
|
||||
protected $mailRead = 0;
|
||||
protected $e107;
|
||||
public $mailerSource = 'newsletter'; // Plugin name (core mailer is special case) Must be directory for this file
|
||||
public $mailerName = NLLAN_48; // Text to identify the source of selector (displayed on left of admin page)
|
||||
public $mailerEnabled = TRUE; // Mandatory - set to FALSE to disable this plugin (e.g. due to permissions restrictions)
|
||||
protected $adminHandler = NULL; // Filled in with the name of the admin handler on creation
|
||||
private $selectorActive = FALSE; // Set TRUE if we've got a valid selector to start returning entries
|
||||
private $targets = array(); // Used to store potential recipients
|
||||
private $ourDB;
|
||||
|
||||
|
||||
// Constructor
|
||||
public function __construct(&$mailerAdminHandler = NULL)
|
||||
{
|
||||
$this->e107 = e107::getInstance();
|
||||
if ($mailerAdminHandler == NULL)
|
||||
{
|
||||
global $mailAdmin;
|
||||
$mailerAdminHandler = $mailAdmin;
|
||||
}
|
||||
$this->adminHandler = $mailerAdminHandler;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return data representing the user's selection criteria as entered in the $_POST array.
|
||||
*
|
||||
* This is stored in the DB with a saved email. (Just return an empty string or array if this is undesirable)
|
||||
* The returned value is passed back to selectInit() and showSelect when needed.
|
||||
*
|
||||
* @return string Selection data - comma-separated list of category IDs
|
||||
*/
|
||||
public function returnSelectors()
|
||||
{
|
||||
$res = array();
|
||||
foreach ($_POST['nl_category_sel'] as $k => $v)
|
||||
{
|
||||
$res[] = intval($v);
|
||||
}
|
||||
return implode(',',$res);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Called to initialise data selection routine.
|
||||
* Needs to save any queries or other information into internal variables, do initial DB queries as appropriate.
|
||||
* Could in principle read all addresses and buffer them for later routines, if this is more convenient
|
||||
*
|
||||
* @param string $selectVals - array of selection criteria as returned by returnSelectors()
|
||||
*
|
||||
* @return integer Return number of records available (or 1 if unknown) on success, FALSE on failure
|
||||
*/
|
||||
public function selectInit($selectVals = FALSE)
|
||||
{
|
||||
if (($selectVals === FALSE) || ($selectVals == ''))
|
||||
{
|
||||
return 0; // No valid selector - so no valid records
|
||||
}
|
||||
|
||||
$qry = "SELECT newsletter_id,newsletter_subscribers FROM `#newsletter` WHERE (`newsletter_parent`=0) AND (`newsletter_id` IN ({$selectVals}))";
|
||||
// echo "Selector {$selectVals} query: ".$qry.'<br />';
|
||||
if (!($this->e107->sql->db_Select_gen($qry))) return FALSE;
|
||||
$this->selectorActive = TRUE;
|
||||
$this->mail_count = 1; // We have no idea of how many subscribers without reading all relevant DB records
|
||||
$this->mail_read = 0;
|
||||
$this->ourDB = new db(); // We'll need our own database object
|
||||
return $this->mail_count;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Return an email address to add to the recipients list. Return FALSE if no more addresses to add
|
||||
*
|
||||
* @return array|boolean FALSE if no more addresses available; else an array:
|
||||
* 'mail_recipient_id' - non-zero if a registered user, zero if a non-registered user. (Always non-zero from this class)
|
||||
* 'mail_recipient_name' - user name
|
||||
* 'mail_recipient_email' - email address to use
|
||||
* 'mail_target_info' - array of info which might be substituted into email, usually using the codes defined by the editor.
|
||||
* Array key is the code within '|...|', value is the string for substitution
|
||||
*/
|
||||
public function selectAdd()
|
||||
{
|
||||
if (!$this->selectorActive) return FALSE;
|
||||
|
||||
while ($this->selectorActive)
|
||||
{
|
||||
if (count($this->targets) == 0)
|
||||
{ // Read in and process another newletter mailing list
|
||||
if (!($row = $this->e107->sql->db_Fetch(MYSQL_ASSOC)))
|
||||
{
|
||||
$this->selectorActive = FALSE;
|
||||
return FALSE; // Run out of DB records
|
||||
}
|
||||
$this->targets = explode(chr(1), $row['newsletter_subscribers']);
|
||||
unset($row);
|
||||
}
|
||||
foreach ($this->targets as $k => $v)
|
||||
{
|
||||
if ($uid = intval(trim($v)))
|
||||
{ // Got a user ID here - look them up and add their data
|
||||
if ($this->ourDB->db_Select('user', 'user_name,user_email,user_lastvisit', '`user_id`='.$uid))
|
||||
{
|
||||
$row = $this->ourDB->db_Fetch();
|
||||
$ret = array('mail_recipient_id' => $uid,
|
||||
'mail_recipient_name' => $row['user_name'], // Should this use realname?
|
||||
'mail_recipient_email' => $row['user_email'],
|
||||
'mail_target_info' => array(
|
||||
'USERID' => $uid,
|
||||
'DISPLAYNAME' => $row['user_name'],
|
||||
'SIGNUP_LINK' => $row['user_sess'],
|
||||
'USERNAME' => $row['user_loginname'],
|
||||
'USERLASTVISIT' => $row['user_lastvisit']
|
||||
)
|
||||
);
|
||||
$this->mail_read++;
|
||||
unset($this->targets[$k]);
|
||||
return $ret;
|
||||
}
|
||||
}
|
||||
unset($this->targets[$k]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Called once all email addresses read, to do any housekeeping needed
|
||||
* @return none
|
||||
*/
|
||||
public function select_close()
|
||||
{
|
||||
// Nothing to do here
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Called to show current selection criteria, and optionally allow edit
|
||||
*
|
||||
* @param boolean $allow_edit is TRUE to allow user to change the selection; FALSE to just display current settings
|
||||
* @param string $selectVals is the current selection information - in the same format as returned by returnSelectors()
|
||||
*
|
||||
* @return string Returns HTML which is displayed in a table cell. Typically we return a complete table
|
||||
*/
|
||||
public function showSelect($allow_edit = FALSE, $selectVals = FALSE)
|
||||
{
|
||||
$ret = "<table style='width:95%'>";
|
||||
$selects = array_flip(explode(',', $selectVals));
|
||||
|
||||
if ($this->e107->sql->db_Select('newsletter', 'newsletter_id, newsletter_title', '`newsletter_parent`=0'))
|
||||
{
|
||||
while ($row = $this->e107->sql->db_Fetch(MYSQL_ASSOC))
|
||||
{
|
||||
$checked = (isset($selects[$row['newsletter_id']])) ? " checked='checked'" : '';
|
||||
if ($allow_edit)
|
||||
{
|
||||
$ret .= "<tr><td><input type='checkbox' name='nl_category_sel[]' value='{$row['newsletter_id']}' {$checked}/></td><td>
|
||||
".$row['newsletter_title']."</td></tr>";
|
||||
}
|
||||
elseif($checked)
|
||||
{
|
||||
$ret .= "<tr><td>".NLLAN_49."</td><td>
|
||||
".$row['newsletter_title']."</td></tr>";
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$ret .= "<tr><td colspan='2'>".NLLAN_50.'</td></tr>';
|
||||
}
|
||||
return $ret.'</table>';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
?>
|
@@ -6,87 +6,29 @@
|
||||
* Released under the terms and conditions of the
|
||||
* GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
|
||||
*
|
||||
*
|
||||
* Plugin - newsfeeds
|
||||
*
|
||||
* $Source: /cvs_backup/e107_0.8/e107_plugins/newsletter/languages/English.php,v $
|
||||
* $Revision: 1.4 $
|
||||
* $Date: 2009-11-18 01:05:53 $
|
||||
* $Author: e107coders $
|
||||
*/
|
||||
* $Revision: 1.5 $
|
||||
* $Date: 2009-11-19 20:24:21 $
|
||||
* $Author: e107steved $
|
||||
*
|
||||
*/
|
||||
|
||||
define("NLLAN_MENU_CAPTION", "Newsletter");
|
||||
define('NLLAN_MENU_CAPTION', 'Newsletter');
|
||||
|
||||
define("NLLAN_01", "Newsletter");
|
||||
define("NLLAN_02", "Provides a quick and easy way to configure and send newsletters");
|
||||
define("NLLAN_03", "Configure Newsletters");
|
||||
define("NLLAN_04", "The newsletter plugin has been successfully installed. To configure, return to your main admin page and click on 'Newsletter' in the plugin section.");
|
||||
define("NLLAN_05", "No newsletters defined yet");
|
||||
define('NLLAN_48', 'you are subscribed to this newsletter - if you wish to unsubscribe please click the button below.');
|
||||
define('NLLAN_49', 'Are you sure you want to un-subscribe from this newsletter?');
|
||||
define('NLLAN_50', 'Click button to subscribe ( your subscription address is');
|
||||
define('NLLAN_51', 'Unsubscribe');
|
||||
define('NLLAN_52', 'Subscribe');
|
||||
define('NLLAN_53', 'Are you sure you want to subscribe to this newsletter?');
|
||||
|
||||
define("NLLAN_06", "Name");
|
||||
define("NLLAN_07", "Subscribers");
|
||||
define("NLLAN_08", "Options");
|
||||
define("NLLAN_09", "Are you sure you want to delete this newsletter?");
|
||||
define("NLLAN_10", "Existing Newsletters");
|
||||
define('NLLAN_67', 'Archive overview');
|
||||
define('NLLAN_68', 'Invalid parameter defined');
|
||||
define('NLLAN_69', 'No sent newsletters available.');
|
||||
define('NLLAN_70', 'Selected newsletter does not exist');
|
||||
define('NLLAN_71', 'Back');
|
||||
define('NLLAN_72', 'View archive');
|
||||
|
||||
define("NLLAN_11", "No newsletter issues yet");
|
||||
define("NLLAN_12", "Issue");
|
||||
define("NLLAN_13", "[ Parent ID ] Subject/Title");
|
||||
define("NLLAN_14", "Mailed?");
|
||||
define("NLLAN_15", "Options");
|
||||
define("NLLAN_16", "yes");
|
||||
define("NLLAN_17", "Not sent out - click to send");
|
||||
define("NLLAN_18", "Are you sure you want to mail this issue to subscribers?");
|
||||
define("NLLAN_19", "Are you sure you want to delete this newsletter issue?");
|
||||
define("NLLAN_20", "Existing Issues");
|
||||
define("NLLAN_21", "Title");
|
||||
define("NLLAN_22", "Description");
|
||||
define("NLLAN_23", "Header");
|
||||
define("NLLAN_24", "Footer");
|
||||
define("NLLAN_25", "Update Newsletter");
|
||||
define("NLLAN_26", "Create Newsletter");
|
||||
define("NLLAN_27", "Newsletter updated in database.");
|
||||
define("NLLAN_28", "Newsletter defined and saved in database.");
|
||||
define("NLLAN_29", "No newsletters defined yet.");
|
||||
define("NLLAN_30", "Newsletter");
|
||||
define("NLLAN_31", "Subject / Title");
|
||||
define("NLLAN_32", "Issue Number");
|
||||
define("NLLAN_33", "Text");
|
||||
define("NLLAN_34", "Update Mailing");
|
||||
define("NLLAN_35", "Create Mailing");
|
||||
define("NLLAN_36", "Update Newsletter Issue");
|
||||
define("NLLAN_37", "Create Newsletter Issue");
|
||||
define("NLLAN_38", "Newsletter updated in database.");
|
||||
define("NLLAN_39", "Newsletter issue saved in database - to send out, click the 'Release Issue' button in the Options menu.");
|
||||
define("NLLAN_40", "Mailout completed - issue sent to ");
|
||||
|
||||
define("NLLAN_41", " subscriber(s).");
|
||||
define("NLLAN_42", "Newsletter deleted.");
|
||||
define("NLLAN_43", "Newsletter issue deleted.");
|
||||
|
||||
define("NLLAN_44", "Newsletter Front Page");
|
||||
define("NLLAN_45", "Create Newsletter");
|
||||
define("NLLAN_46", "Create mailing");
|
||||
define("NLLAN_47", "Newsletter Options");
|
||||
|
||||
define("NLLAN_48", "you are subscribed to this newsletter - if you wish to unsubscribe please click the button below.");
|
||||
define("NLLAN_49", "Are you sure you want to un-subscribe from this newsletter?");
|
||||
define("NLLAN_50", "Click button to subscribe ( your subscription address is");
|
||||
define("NLLAN_51", "Unsubscribe");
|
||||
define("NLLAN_52", "Subscribe");
|
||||
define("NLLAN_53", "Are you sure you want to subscribe to this newsletter?");
|
||||
|
||||
define("NLLAN_54", "Sending");
|
||||
|
||||
define("NLLAN_55", "ID");
|
||||
define("NLLAN_56", "Newsletter ID not available");
|
||||
define("NLLAN_57", "Return to previous page");
|
||||
define("NLLAN_58", "Error");
|
||||
define("NLLAN_59", "Name");
|
||||
define("NLLAN_60", "Email");
|
||||
define("NLLAN_61", "Actions");
|
||||
define("NLLAN_62", "User is banned! (or not fully signed up)");
|
||||
define("NLLAN_63", "Total subscribers");
|
||||
define("NLLAN_64", "Return to Newsletter frontpage");
|
||||
define("NLLAN_65", "Subscribers overview newsletter ID");
|
||||
|
||||
?>
|
||||
?>
|
||||
|
@@ -0,0 +1,87 @@
|
||||
<?php
|
||||
/*
|
||||
* e107 website system
|
||||
*
|
||||
* Copyright (C) 2008-2009 e107 Inc (e107.org)
|
||||
* Released under the terms and conditions of the
|
||||
* GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
|
||||
*
|
||||
* Plugin - newsfeeds
|
||||
*
|
||||
* $Source: /cvs_backup/e107_0.8/e107_plugins/newsletter/languages/English_admin_newsletter.php,v $
|
||||
* $Revision: 1.1 $
|
||||
* $Date: 2009-11-19 20:24:21 $
|
||||
* $Author: e107steved $
|
||||
*
|
||||
*/
|
||||
|
||||
define('NLLAN_01', 'Newsletter');
|
||||
define('NLLAN_02', 'Provides a quick and easy way to configure and send newsletters');
|
||||
define('NLLAN_03', 'Configure Newsletters');
|
||||
define('NLLAN_04', 'The newsletter plugin has been successfully installed. To configure, return to your main admin page and click on \'Newsletter\' in the plugin section.');
|
||||
define('NLLAN_05', 'No newsletters defined yet');
|
||||
|
||||
define('NLLAN_06', 'Name');
|
||||
define('NLLAN_07', 'Subscribers');
|
||||
define('NLLAN_08', 'Options');
|
||||
define('NLLAN_09', 'Are you sure you want to delete this newsletter?');
|
||||
define('NLLAN_10', 'Existing Newsletters');
|
||||
|
||||
define('NLLAN_11', 'No newsletter issues yet');
|
||||
define('NLLAN_12', 'Issue');
|
||||
define('NLLAN_13', '[ Parent ID ] Subject/Title');
|
||||
define('NLLAN_14', 'Mailed?');
|
||||
define('NLLAN_15', 'Options');
|
||||
define('NLLAN_16', 'yes');
|
||||
define('NLLAN_17', 'Not sent out - click to send');
|
||||
define('NLLAN_18', 'Are you sure you want to mail this issue to subscribers?');
|
||||
define('NLLAN_19', 'Are you sure you want to delete this newsletter issue?');
|
||||
define('NLLAN_20', 'Existing Issues');
|
||||
define('NLLAN_21', 'Title');
|
||||
define('NLLAN_22', 'Description');
|
||||
define('NLLAN_23', 'Header');
|
||||
define('NLLAN_24', 'Footer');
|
||||
define('NLLAN_25', 'Update Newsletter');
|
||||
define('NLLAN_26', 'Create Newsletter');
|
||||
define('NLLAN_27', 'Newsletter updated in database.');
|
||||
define('NLLAN_28', 'Newsletter defined and saved in database.');
|
||||
//define('NLLAN_29', 'No newsletters defined yet.');
|
||||
define('NLLAN_30', 'Newsletter');
|
||||
define('NLLAN_31', 'Subject / Title');
|
||||
define('NLLAN_32', 'Issue Number');
|
||||
define('NLLAN_33', 'Text');
|
||||
define('NLLAN_34', 'Update Mailing');
|
||||
define('NLLAN_35', 'Create Mailing');
|
||||
define('NLLAN_36', 'Update Newsletter Issue');
|
||||
define('NLLAN_37', 'Create Newsletter Issue');
|
||||
define('NLLAN_38', 'Newsletter updated in database.');
|
||||
define('NLLAN_39', 'Newsletter issue saved in database - to send out, click the \'Release Issue\' button in the Options menu.');
|
||||
define('NLLAN_40', 'Mailout added to mailout queue - issue sent to --COUNT-- subscriber(s).');
|
||||
define('NLLAN_41', 'No subscribers found - email cancelled');
|
||||
define('NLLAN_42', 'Newsletter deleted.');
|
||||
define('NLLAN_43', 'Newsletter issue deleted.');
|
||||
|
||||
define('NLLAN_44', 'Newsletter Front Page');
|
||||
define('NLLAN_45', 'Create Newsletter');
|
||||
define('NLLAN_46', 'Create mailing');
|
||||
define('NLLAN_47', 'Newsletter Options');
|
||||
define('NLLAN_48', 'Subscribers to each newsletter');
|
||||
define('NLLAN_49', 'Newsletter: ');
|
||||
|
||||
define('NLLAN_54', 'Sending');
|
||||
|
||||
define('NLLAN_55', 'ID');
|
||||
define('NLLAN_56', 'Newsletter ID not available');
|
||||
define('NLLAN_57', 'Return to previous page');
|
||||
define('NLLAN_58', 'Error');
|
||||
define('NLLAN_59', 'Name');
|
||||
define('NLLAN_60', 'Email');
|
||||
define('NLLAN_61', 'Actions');
|
||||
define('NLLAN_62', 'User is banned! (or not fully signed up)');
|
||||
define('NLLAN_63', 'Total subscribers');
|
||||
define('NLLAN_64', 'Return to Newsletter frontpage');
|
||||
define('NLLAN_65', 'Subscribers overview newsletter ID');
|
||||
define('NLLAN_66', 'Your news letter subscriber list has been sanitised.');
|
||||
|
||||
// Up to NLLAN_72 used in 'public' file
|
||||
?>
|
@@ -6,40 +6,56 @@
|
||||
* Released under the terms and conditions of the
|
||||
* GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
|
||||
*
|
||||
*
|
||||
* Administration - Site Maintenance
|
||||
*
|
||||
* $Source: /cvs_backup/e107_0.8/e107_plugins/newsletter/newsletter_menu.php,v $
|
||||
* $Revision: 1.3 $
|
||||
* $Date: 2009-11-18 01:05:53 $
|
||||
* $Author: e107coders $
|
||||
*/
|
||||
* $Revision: 1.4 $
|
||||
* $Date: 2009-11-19 20:24:21 $
|
||||
* $Author: e107steved $
|
||||
*
|
||||
*/
|
||||
|
||||
if (!defined('e107_INIT')) { exit; }
|
||||
|
||||
if(!USER || !$sql -> db_Select("newsletter", "*", "newsletter_parent='0' "))
|
||||
if (!$e107->isInstalled('newsletter'))
|
||||
{
|
||||
// no newsletters defined yet //
|
||||
return;
|
||||
}
|
||||
|
||||
if(!USER || !$sql -> db_Select('newsletter', '*', "newsletter_parent='0'"))
|
||||
{ // no newsletters defined yet
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
$newsletterArray = $sql -> db_getList();
|
||||
$requery = false;
|
||||
include_lan(e_PLUGIN.'newsletter/languages/'.e_LANGUAGE.'.php');
|
||||
|
||||
foreach($_POST as $key => $value)
|
||||
{
|
||||
if(strstr($key, "nlUnsubscribe_"))
|
||||
if(strpos($key, 'nlUnsubscribe_') === 0)
|
||||
{
|
||||
$subid = str_replace("nlUnsubscribe_", "", $key);
|
||||
$subid = str_replace('nlUnsubscribe_', '', $key);
|
||||
$newsletterArray[$subid]['newsletter_subscribers'] = str_replace(chr(1).USERID, "", $newsletterArray[$subid]['newsletter_subscribers']);
|
||||
$sql -> db_Update("newsletter", "newsletter_subscribers='".$newsletterArray[$subid]['newsletter_subscribers']."' WHERE newsletter_id='".intval($subid)."' ");
|
||||
$sql -> db_Update('newsletter', "newsletter_subscribers='".$newsletterArray[$subid]['newsletter_subscribers']."' WHERE newsletter_id='".intval($subid)."' ");
|
||||
$requery = true;
|
||||
}
|
||||
else if(strstr($key, "nlSubscribe_"))
|
||||
else if(strpos($key, 'nlSubscribe_') === 0)
|
||||
{
|
||||
$subid = str_replace("nlSubscribe_", "", $key);
|
||||
$newsletterArray[$subid]['newsletter_subscribers'] .= chr(1).USERID;
|
||||
$sql -> db_Update("newsletter", "newsletter_subscribers='".$newsletterArray[$subid]['newsletter_subscribers']."' WHERE newsletter_id='".intval($subid)."' ");
|
||||
$requery = true;
|
||||
$nl_subscriber_array = $newsletterArray[$subid]['newsletter_subscribers'];
|
||||
if (!array_key_exists(USERID, $nl_subscriber_array))
|
||||
{ // prevent double entry of same user id
|
||||
$newsletterArray[$subid]['newsletter_subscribers'] .= chr(1).USERID;
|
||||
$subscribers_list = array_flip(explode(chr(1), $newsletterArray[$subid]['newsletter_subscribers']));
|
||||
sort($subscribers_list);
|
||||
$new_subscriber_list = implode(chr(1), array_keys($subscribers_list));
|
||||
if (substr($new_subscriber_list, 0, 1) == '0')
|
||||
{ // remove the possible zero caused by function array_flip
|
||||
$new_subscriber_list = substr($new_subscriber_list, 1);
|
||||
}
|
||||
$sql -> db_Update('newsletter', "newsletter_subscribers='".$new_subscriber_list."' WHERE newsletter_id='".intval($subid)."' ");
|
||||
$requery = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,13 +63,13 @@ global $tp;
|
||||
|
||||
if($requery)
|
||||
{
|
||||
if($sql -> db_Select("newsletter", "*", "newsletter_parent='0' "))
|
||||
if($sql -> db_Select('newsletter', '*', "newsletter_parent='0' "))
|
||||
{
|
||||
$newsletterArray = $sql -> db_getList();
|
||||
}
|
||||
}
|
||||
|
||||
$text = "";
|
||||
$text = '';
|
||||
foreach($newsletterArray as $nl)
|
||||
{
|
||||
$text .= "<div style='text-align: center; margin-left: auto; margin-right: auto;'>
|
||||
@@ -72,10 +88,15 @@ foreach($newsletterArray as $nl)
|
||||
}
|
||||
else
|
||||
{
|
||||
$text .= NLLAN_50." <b>".USEREMAIL."</b> ) ...<br /><br />
|
||||
$text .= NLLAN_50." <b>".USEREMAIL."</b> )<br /><br />
|
||||
<input class='button' type='submit' name='nlSubscribe_".$nl['newsletter_id']."' value='".NLLAN_52."' onclick=\"return jsconfirm('".$tp->toJS(NLLAN_53)."') \" />
|
||||
";
|
||||
}
|
||||
$nl_count = $sql -> db_Count('newsletter', "(*)", "WHERE newsletter_parent='".$nl['newsletter_id']."' AND newsletter_flag='1'");
|
||||
if($nl_count > 0 && USER)
|
||||
{ // display issued newsletters
|
||||
$text .= "<br /><a href='".e_PLUGIN."newsletter/nl_archive.php?show.".$nl['newsletter_id']."' alt='".NLLAN_72."' title='".NLLAN_72."'>".NLLAN_72."</a><br/><br/>";
|
||||
}
|
||||
$text .= "</form>
|
||||
</div>
|
||||
<br />
|
||||
@@ -83,6 +104,4 @@ foreach($newsletterArray as $nl)
|
||||
}
|
||||
|
||||
$ns -> tablerender(NLLAN_MENU_CAPTION, $text);
|
||||
|
||||
|
||||
?>
|
13
e107_plugins/newsletter/newsletter_sql.php
Normal file
13
e107_plugins/newsletter/newsletter_sql.php
Normal file
@@ -0,0 +1,13 @@
|
||||
CREATE TABLE newsletter (
|
||||
newsletter_id int(10) unsigned NOT NULL auto_increment,
|
||||
newsletter_datestamp int(10) unsigned NOT NULL,
|
||||
newsletter_title varchar(200) NOT NULL,
|
||||
newsletter_text text NOT NULL,
|
||||
newsletter_header text NOT NULL,
|
||||
newsletter_footer text NOT NULL,
|
||||
newsletter_subscribers text NOT NULL,
|
||||
newsletter_parent int(11) NOT NULL,
|
||||
newsletter_flag tinyint(4) NOT NULL,
|
||||
newsletter_issue varchar(100) NOT NULL,
|
||||
PRIMARY KEY (newsletter_id)
|
||||
) TYPE=MyISAM;
|
139
e107_plugins/newsletter/nl_archive.php
Normal file
139
e107_plugins/newsletter/nl_archive.php
Normal file
@@ -0,0 +1,139 @@
|
||||
<?php
|
||||
/*
|
||||
* e107 website system
|
||||
*
|
||||
* Copyright (C) 2008-2009 e107 Inc (e107.org)
|
||||
* Released under the terms and conditions of the
|
||||
* GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
|
||||
*
|
||||
* Administration - Site Maintenance
|
||||
*
|
||||
* $Source: /cvs_backup/e107_0.8/e107_plugins/newsletter/nl_archive.php,v $
|
||||
* $Revision: 1.1 $
|
||||
* $Date: 2009-11-19 20:24:21 $
|
||||
* $Author: e107steved $
|
||||
*
|
||||
*/
|
||||
require_once('../../class2.php');
|
||||
if (!$e107->isInstalled('newsletter') || !ADMIN)
|
||||
{
|
||||
header('Location: '.e_BASE.'index.php');
|
||||
exit();
|
||||
}
|
||||
include_lan(e_PLUGIN.'newsletter/languages/'.e_LANGUAGE.'.php');
|
||||
require_once(HEADERF);
|
||||
|
||||
$action_parent_id = 0;
|
||||
$action_nl_id = 0;
|
||||
if(e_QUERY)
|
||||
{
|
||||
$tmp = explode('.', e_QUERY);
|
||||
$action = $tmp[0];
|
||||
$action_parent_id = varset(intval($tmp[1], 0));
|
||||
$action_nl_id = varset(intval($tmp[2], 0));
|
||||
unset($tmp);
|
||||
}
|
||||
|
||||
$page_size = 10; // Might become a preference setting later on
|
||||
$text .= "<div style='text-align: center; margin-left: auto; margin-right: auto; width: 100%;'>";
|
||||
|
||||
if (($action <> 'show' && $action <> 'showp') || ($action_parent_id == 0))
|
||||
{ // Action 'show' displays initial page, 'showp' displays following pages
|
||||
$text .= NLLAN_68; // Invalid parameter defined
|
||||
}
|
||||
else
|
||||
{
|
||||
if(!isset($_POST['limit_start']))
|
||||
{
|
||||
$limit_start = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
$limit_start = $_POST['limit_start'];
|
||||
}
|
||||
$nl_count = $e107->sql->db_Count('newsletter', '(*)', "WHERE newsletter_parent='".$action_parent_id."' AND newsletter_flag='1'");
|
||||
if ($nl_count > 0)
|
||||
{
|
||||
// Retrieve parent info
|
||||
$e107->sql->db_Select('newsletter', "*", "newsletter_id='".$action_parent_id."'");
|
||||
if ($row = $e107->sql->db_Fetch())
|
||||
{
|
||||
$parent_newsletter_title = $tp->toHTML($row['newsletter_title'],true);
|
||||
$parent_newsletter_text = $tp->toHTML($row['newsletter_text'],true);
|
||||
$parent_newsletter_header = $tp->toHTML($row['newsletter_header'],true);
|
||||
$parent_newsletter_footer = $tp->toHTML($row['newsletter_footer'],true);
|
||||
}
|
||||
if ($action_nl_id == '' || $action_nl_id == 0) //Show list of sent newsletters
|
||||
{
|
||||
// Display parent name
|
||||
$text .= "{$parent_newsletter_title}<br />
|
||||
<div style='text-align: left;'>{$parent_newsletter_text}</div><br /><br />
|
||||
<table>";
|
||||
|
||||
// Display list of sent newsletters titles
|
||||
if ($action == 'showp')
|
||||
{ // This should only be done when action is 'showp'
|
||||
$limit_start = $limit_start + $page_size;
|
||||
}
|
||||
$e107->sql->db_Select('newsletter', '*', "newsletter_parent='".$action_parent_id."' AND newsletter_flag='1' ORDER BY newsletter_datestamp DESC LIMIT ".$limit_start.",".$page_size);
|
||||
while ($row = $e107->sql->db_Fetch())
|
||||
{
|
||||
$ga = new convert();
|
||||
$newsletter_datestamp = $ga->convert_date($row['newsletter_datestamp'], 'long');
|
||||
$text .= "<tr>
|
||||
<td>
|
||||
".$row['newsletter_issue']."
|
||||
</td>
|
||||
<td>
|
||||
<a href='".e_PLUGIN."newsletter/nl_archive.php?show.".$action_parent_id.".".$row['newsletter_id']."'>".$tp->toHTML($row['newsletter_title'],true)."</a>
|
||||
</td>
|
||||
<td>
|
||||
".$newsletter_datestamp."
|
||||
</td>
|
||||
</tr>";
|
||||
}
|
||||
$text .= "</table>";
|
||||
if($limit_start + $page_size < $nl_count)
|
||||
{
|
||||
$text .= "<form id='nl' method='post' action='".e_PLUGIN."newsletter/nl_archive.php?showp.".$action_parent_id."'>
|
||||
<br /><input class='button' name='submit' type='submit' value='View older newsletters in archive'/>
|
||||
<input type='hidden' name='limit_start' value='".$limit_start."'/></form>";
|
||||
}
|
||||
}
|
||||
else // Show requested newsletter
|
||||
{
|
||||
$e107->sql->db_Select('newsletter', '*', "newsletter_parent='".$action_parent_id."' AND newsletter_id='".$action_nl_id."' AND newsletter_flag='1'");
|
||||
if ($row = $e107->sql->db_Fetch())
|
||||
{
|
||||
// Display parent header
|
||||
$text .= "$parent_newsletter_title<br />
|
||||
<div style='text-align: left;'>$parent_newsletter_text</div><br /><br />
|
||||
$parent_newsletter_header<br /><br />";
|
||||
// Display newsletter text
|
||||
$ga = new convert();
|
||||
$newsletter_datestamp = $ga->convert_date($row['newsletter_datestamp'], "long");
|
||||
$text .= $newsletter_datestamp."<br />".
|
||||
$tp->toHTML($row['newsletter_title'],true)."<br />
|
||||
<div style='text-align: left;'>".$tp->toHTML($row['newsletter_text'],true)."</div><br /><br />";
|
||||
// Display parent footer
|
||||
$text .= "$parent_newsletter_footer<br />";
|
||||
// Display back to newsletter overview button
|
||||
$text .= "<br /><a href='javascript:history.go(-1);'><input class='button' type='submit' value='".NLLAN_71."'</a>";
|
||||
}
|
||||
else
|
||||
{
|
||||
$text .= NLLAN_70; //Selected newsletter does not exist
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$text .= NLLAN_69; // No send newsletters available for selected parent
|
||||
}
|
||||
}
|
||||
|
||||
$text .= "</div>";
|
||||
|
||||
$ns -> tablerender(NLLAN_67, $text);
|
||||
require_once(FOOTERF);
|
||||
?>
|
@@ -1,78 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
* e107 website system
|
||||
*
|
||||
* Copyright (C) 2008-2009 e107 Inc (e107.org)
|
||||
* Released under the terms and conditions of the
|
||||
* GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
|
||||
*
|
||||
*
|
||||
*
|
||||
* $Source: /cvs_backup/e107_0.8/e107_plugins/newsletter/plugin.php,v $
|
||||
* $Revision: 1.6 $
|
||||
* $Date: 2009-11-18 01:05:53 $
|
||||
* $Author: e107coders $
|
||||
*/
|
||||
|
||||
if (!defined('e107_INIT')) { exit; }
|
||||
|
||||
include_lan(e_PLUGIN."newsletter/languages/".e_LANGUAGE.".php");
|
||||
|
||||
// Plugin info -------------------------------------------------------------------------------------------------------
|
||||
$eplug_name = "NLLAN_01";
|
||||
$eplug_version = "1.0";
|
||||
$eplug_author = "e107 Inc.";
|
||||
$eplug_url = "http://e107.org";
|
||||
$eplug_email = "jalist@e107.org";
|
||||
$eplug_description = NLLAN_02;
|
||||
$eplug_compatible = "e107v0.7+";
|
||||
$eplug_readme = "";
|
||||
$eplug_category = "content";
|
||||
|
||||
// Name of the plugin's folder -------------------------------------------------------------------------------------
|
||||
$eplug_folder = "newsletter";
|
||||
|
||||
// Name of menu item for plugin ----------------------------------------------------------------------------------
|
||||
$eplug_menu_name = "newsletter_menu";
|
||||
|
||||
// Name of the admin configuration file --------------------------------------------------------------------------
|
||||
$eplug_conffile = "admin_config.php";
|
||||
|
||||
// Icon image and caption text ------------------------------------------------------------------------------------
|
||||
$eplug_icon = $eplug_folder."/images/nl_32.png";
|
||||
$eplug_icon_small = $eplug_folder."/images/nl_16.png";
|
||||
$eplug_caption = NLLAN_03;
|
||||
|
||||
// List of preferences -----------------------------------------------------------------------------------------------
|
||||
$eplug_prefs = array();
|
||||
|
||||
// List of table names -----------------------------------------------------------------------------------------------
|
||||
$eplug_table_names = array("newsletter");
|
||||
|
||||
// List of sql requests to create tables -----------------------------------------------------------------------------
|
||||
$eplug_tables = array(
|
||||
|
||||
"CREATE TABLE ".MPREFIX."newsletter (
|
||||
newsletter_id int(10) unsigned NOT NULL auto_increment,
|
||||
newsletter_datestamp int(10) unsigned NOT NULL,
|
||||
newsletter_title varchar(200) NOT NULL,
|
||||
newsletter_text text NOT NULL,
|
||||
newsletter_header text NOT NULL,
|
||||
newsletter_footer text NOT NULL,
|
||||
newsletter_subscribers text NOT NULL,
|
||||
newsletter_parent int(11) NOT NULL,
|
||||
newsletter_flag tinyint(4) NOT NULL,
|
||||
newsletter_issue varchar(100) NOT NULL,
|
||||
PRIMARY KEY (newsletter_id)
|
||||
) TYPE=MyISAM;");
|
||||
|
||||
|
||||
// Create a link in main menu (yes=TRUE, no=FALSE) -------------------------------------------------------------
|
||||
$eplug_link = FALSE;
|
||||
$eplug_link_name = "";
|
||||
$eplug_link_url = "";
|
||||
|
||||
// Text to display after plugin successfully installed ------------------------------------------------------------------
|
||||
$eplug_done = NLLAN_04;
|
||||
|
||||
?>
|
19
e107_plugins/newsletter/plugin.xml
Normal file
19
e107_plugins/newsletter/plugin.xml
Normal file
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
|
||||
<!-- Copyright e107 Inc e107.org, Licensed under GNU GPL (http://www.gnu.org/licenses/gpl.txt) -->
|
||||
<!-- $Id: plugin.xml,v 1.1 2009-11-19 20:24:21 e107steved Exp $ -->
|
||||
|
||||
<e107Plugin name="NLLAN_01" version="1.1" compatibility="0.8" installRequired="true">
|
||||
<author name="e107 Inc, nlstart" url="http://e107.org" />
|
||||
<description>NLLAN_02</description>
|
||||
<folder>newsletter</folder>
|
||||
<copyright>Copyright e107 Inc e107.org, Licensed under GPL (http://www.gnu.org/licenses/gpl.txt)</copyright>
|
||||
<category>content</category>
|
||||
<languageFiles>
|
||||
<file type='log' path='languages/--LAN--_admin_newsletter.php' />
|
||||
</languageFiles>
|
||||
<adminLinks>
|
||||
<link url='admin_config.php' description='LAN_CONFIGURE' icon='images/nl_32.png' iconSmall='images/nl_16.png' primary='true' >NLLAN_03</link>
|
||||
</adminLinks>
|
||||
<mainPrefs/>
|
||||
</e107Plugin>
|
Reference in New Issue
Block a user