2006-12-02 04:36:16 +00:00
< ? php
/*
2009-11-17 13:48:46 +00:00
* e107 website system
*
2013-02-08 14:57:15 +01:00
* Copyright ( C ) 2008 - 2013 e107 Inc ( e107 . org )
2009-11-17 13:48:46 +00:00
* Released under the terms and conditions of the
* GNU General Public License ( http :// www . gnu . org / licenses / gpl . txt )
*
2013-02-08 14:57:15 +01:00
* Plugin - Newsletter
2009-11-19 20:24:21 +00:00
*
*/
2013-03-02 17:59:32 +00:00
/**
* e107 Newsletter plugin
*
* @ package e107_plugins
* @ subpackage newsletter
*/
2008-12-18 21:10:10 +00:00
require_once ( '../../class2.php' );
2009-11-19 20:24:21 +00:00
if ( ! getperms ( 'P' ))
2008-09-22 20:38:26 +00:00
{
2008-12-18 21:10:10 +00:00
header ( 'location:' . e_BASE . 'index.php' );
2008-09-22 20:38:26 +00:00
exit ;
2006-12-02 04:36:16 +00:00
}
$e_sub_cat = 'newsletter' ;
2009-11-19 20:24:21 +00:00
require_once ( e_ADMIN . 'auth.php' );
// Include ren_help for display_help (while showing BBcodes)
require_once ( e_HANDLER . 'ren_help.php' );
2006-12-02 04:36:16 +00:00
2013-02-08 14:57:15 +01:00
$mes = e107 :: getMessage ();
2008-09-22 20:38:26 +00:00
if ( e_QUERY )
{
2009-11-19 20:24:21 +00:00
list ( $action , $id , $key ) = explode ( '.' , e_QUERY );
2008-09-22 20:38:26 +00:00
$key = intval ( $key );
$id = intval ( $id );
2006-12-02 04:36:16 +00:00
}
else
{
$action = FALSE ;
$id = FALSE ;
}
$nl = new newsletter ;
if ( ! e_QUERY )
{
$nl -> showExistingNewsletters ();
}
else
{
2008-12-18 21:10:10 +00:00
switch ( $action )
2008-09-22 20:38:26 +00:00
{
2009-11-19 20:24:21 +00:00
case 'vs' : // View subscribers of a newsletter
2008-12-18 21:10:10 +00:00
$nl -> view_subscribers ( $id );
break ;
case 'remove' : // Remove subscriber
$nl -> remove_subscribers ( $id , $key );
$nl -> view_subscribers ( $id );
break ;
default :
2009-11-19 20:24:21 +00:00
$function = $action . 'Newsletter' ;
2008-12-18 21:10:10 +00:00
if ( method_exists ( $nl , $function ))
{
2009-11-19 20:24:21 +00:00
$nl -> $function ( $id );
2008-12-18 21:10:10 +00:00
}
else
{
exit ;
}
2008-09-22 20:38:26 +00:00
}
2006-12-02 04:36:16 +00:00
}
2008-09-22 20:38:26 +00:00
2006-12-02 04:36:16 +00:00
class newsletter
{
2009-11-19 20:24:21 +00:00
protected $e107 ;
2006-12-02 04:36:16 +00:00
var $message ;
2009-11-19 20:24:21 +00:00
public function __construct ()
2006-12-02 04:36:16 +00:00
{
2012-12-07 17:09:46 +01:00
$tp = e107 :: getParser ();
$ns = e107 :: getRender ();
2013-02-08 14:57:15 +01:00
$mes = e107 :: getMessage ();
2012-12-07 17:09:46 +01:00
$this -> e107 = e107 :: getInstance (); // TODO remove?
2006-12-02 04:36:16 +00:00
foreach ( $_POST as $key => $value )
{
2012-12-07 17:09:46 +01:00
$key = $tp -> toDB ( $key );
2009-11-19 20:24:21 +00:00
if ( strpos ( $key , 'nlmailnow' ) === 0 )
2006-12-02 04:36:16 +00:00
{
2008-12-18 21:10:10 +00:00
$this -> releaseIssue ( $key );
2006-12-02 04:36:16 +00:00
break ;
}
}
if ( isset ( $_POST [ 'delete' ]))
{
2008-12-18 21:10:10 +00:00
$this -> deleteNewsletter ();
2006-12-02 04:36:16 +00:00
}
if ( isset ( $_POST [ 'createNewsletter' ]))
{
2008-12-18 21:10:10 +00:00
$this -> createNewsletter ();
2006-12-02 04:36:16 +00:00
}
if ( isset ( $_POST [ 'createIssue' ]))
{
2008-12-18 21:10:10 +00:00
$this -> createIssue ();
2006-12-02 04:36:16 +00:00
}
2013-02-08 14:57:15 +01:00
if ( $mes )
{
$ns -> tablerender ( $caption , $mes -> render () . $text );
2006-12-02 04:36:16 +00:00
}
}
function showExistingNewsletters ()
{
2012-12-07 17:09:46 +01:00
$sql = e107 :: getDb ();
$ns = e107 :: getRender ();
2013-02-08 14:57:15 +01:00
$mes = e107 :: getMessage ();
$tp = e107 :: getParser ();
2006-12-02 04:36:16 +00:00
2013-03-17 13:20:25 +01:00
if ( ! $sql -> select ( 'newsletter' , '*' , " newsletter_parent='0' ORDER BY newsletter_id DESC " ))
2006-12-02 04:36:16 +00:00
{
2013-02-08 14:57:15 +01:00
$mes -> addInfo ( NLLAN_05 );
2006-12-02 04:36:16 +00:00
}
else
{
$text = " <form action=' " . e_SELF . " ' id='newsletterform' method='post'>
2012-12-07 17:09:46 +01:00
< table class = 'table adminlist' >
2013-02-08 14:57:15 +01:00
< colgroup >
< col style = 'width: 5%; text-align: center;' />
< col style = 'width: 65%;' />
< col style = 'width: 20%; text-align: center;' />
< col style = 'width: 10%; text-align: center;' />
</ colgroup >
2006-12-02 04:36:16 +00:00
< tr >
2013-02-08 14:57:15 +01:00
< td > " .LAN_ID. " </ td >
< td > " .LAN_NAME. " </ td >
< td > " .NLLAN_07. " </ td >
2013-03-17 13:20:25 +01:00
< td class = 'center options' > " .LAN_OPTIONS. " </ td >
2006-12-02 04:36:16 +00:00
</ tr >
" ;
2013-03-17 13:20:25 +01:00
$nlArray = $sql -> db_getList ();
2006-12-02 04:36:16 +00:00
foreach ( $nlArray as $data )
{
2013-02-08 14:57:15 +01:00
$text .= "
< tr >
< td > " . $data['newsletter_id'] . " </ td >
< td > " . $data['newsletter_title'] . " </ td >
< td > " .((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 >
2013-03-17 13:20:25 +01:00
< td >
< a class = 'btn btn-large' 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 ( LAN_CONFIRMDEL . " [ID: " . $data [ 'newsletter_id' ] . " ] " ) . " ') \" />
</ td >
2006-12-02 04:36:16 +00:00
</ tr >
" ;
}
$text .= " </table>
</ form >
" ;
}
2013-02-08 14:57:15 +01:00
$ns -> tablerender ( NLLAN_10 , $mes -> render () . $text );
2006-12-02 04:36:16 +00:00
2013-03-17 13:20:25 +01:00
unset ( $text );
2013-02-09 13:19:21 +01:00
2013-03-17 13:20:25 +01:00
if ( ! $sql -> select ( 'newsletter' , '*' , " newsletter_parent!='0' ORDER BY newsletter_id DESC " ))
2006-12-02 04:36:16 +00:00
{
2013-02-08 14:57:15 +01:00
$mes -> addinfo ( NLLAN_11 );
2006-12-02 04:36:16 +00:00
}
else
{
$text = " <form action=' " . e_SELF . " ' id='newsletterform2' method='post'>
2012-12-07 17:09:46 +01:00
< table class = 'table adminlist' >
2013-02-08 14:57:15 +01:00
< colgroup >
< col style = 'width: 5%; text-align: center;' />
< col style = 'width: 10%; text-align: center;' />
< col style = 'width: 65%;' />
< col style = 'width: 10%; text-align: center;' />
< col style = 'width: 10%; text-align: center;' />
</ colgroup >
2006-12-02 04:36:16 +00:00
< tr >
2013-02-08 14:57:15 +01:00
< td > " .LAN_ID. " </ td >
< td > " .NLLAN_12. " </ td >
< td > " .NLLAN_13. " </ td >
< td > " .NLLAN_14. " </ td >
2013-03-17 13:20:25 +01:00
< td class = 'center options' > " .LAN_OPTIONS. " </ td >
2006-12-02 04:36:16 +00:00
</ tr >
" ;
2012-12-07 17:09:46 +01:00
$nlArray = $sql -> db_getList ();
2006-12-02 04:36:16 +00:00
foreach ( $nlArray as $data )
{
2013-02-08 14:57:15 +01:00
$text .= "
< tr >
< td > " . $data['newsletter_id'] . " </ td >
< td > " . $data['newsletter_issue'] . " </ td >
< td > [ " . $data['newsletter_parent'] . " ] " . $data['newsletter_title'] . " </ td >
2013-04-26 13:48:23 -07:00
< td > " .( $data['newsletter_flag'] ? LAN_YES : " < input class = 'btn button' type = 'submit' name = 'nlmailnow_".$data[' newsletter_id ']."' value = '".NLLAN_17."' onclick = \ " return jsconfirm(' " . $tp -> toJS ( NLLAN_18 ) . " ') \" /> " ) . " </td>
2013-03-17 13:20:25 +01:00
< td >< a class = 'btn btn-large' 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' ] . " ] " ) . " ') \" />
2006-12-02 04:36:16 +00:00
</ td >
</ tr >
" ;
}
$text .= " </table>
</ form >
" ;
}
2013-02-08 14:57:15 +01:00
$ns -> tablerender ( NLLAN_20 , $mes -> render () . $text );
2006-12-02 04:36:16 +00:00
}
2008-09-22 20:38:26 +00:00
2006-12-02 04:36:16 +00:00
function defineNewsletter ( $edit = FALSE )
{
2012-12-07 17:09:46 +01:00
$tp = e107 :: getParser ();
$ns = e107 :: getRender ();
$frm = e107 :: getForm ();
2008-12-18 21:10:10 +00:00
// We've been passed a value from DB, so should be reasonably sanitised.
2006-12-02 04:36:16 +00:00
if ( $edit )
{
2012-12-07 17:09:46 +01:00
$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' ]);
2006-12-02 04:36:16 +00:00
}
2012-12-07 17:09:46 +01:00
$text .= "
2006-12-02 04:36:16 +00:00
< form action = '".e_SELF."' id = 'newsletterform' method = 'post' >
2012-12-07 17:09:46 +01:00
< table class = 'table adminform' >
2013-03-17 13:20:25 +01:00
< colgroup span = '2' >
< col class = 'col-label' />
< col class = 'col-control' />
</ colgroup >
2006-12-02 04:36:16 +00:00
< tr >
2013-02-08 14:57:15 +01:00
< td > " .LAN_TITLE. " </ td >
2013-03-17 13:20:25 +01:00
< td > " . $frm->text ('newsletter_title', $newsletter_title , '200'). " </ td >
2006-12-02 04:36:16 +00:00
</ tr >
< tr >
2013-02-08 14:57:15 +01:00
< td > " .LAN_DESCRIPTION. " </ td >
2012-12-07 17:09:46 +01:00
< td >< textarea class = 'tbox' id = 'data' name = 'newsletter_text' cols = '80' rows = '10' > { $newsletter_text } </ textarea ></ td >
2006-12-02 04:36:16 +00:00
</ tr >
< tr >
2012-12-07 17:09:46 +01:00
< td > " .NLLAN_23. " </ td >
< td >< textarea class = 'tbox' id = 'data' name = 'newsletter_header' cols = '80' rows = '5' > { $newsletter_header } </ textarea ></ td >
2006-12-02 04:36:16 +00:00
</ tr >
< tr >
2012-12-07 17:09:46 +01:00
< td > " .NLLAN_24. " </ td >
< td >< textarea class = 'tbox' id = 'data' name = 'newsletter_footer' cols = '80' rows = '5' > { $newsletter_footer } </ textarea ></ td >
</ tr >
2006-12-02 04:36:16 +00:00
</ table >
2013-02-08 14:57:15 +01:00
2012-12-07 17:09:46 +01:00
< div class = 'buttons-bar center' >
2013-02-08 14:57:15 +01:00
" .( $edit ? $frm->admin_button ('createNewsletter', LAN_UPDATE, 'update'). " \n < input type = 'hidden' name = 'editid' value = '{$edit[' newsletter_id ']}' /> " : $frm->admin_button ('createNewsletter', LAN_CREATE, 'create')). "
2006-12-02 04:36:16 +00:00
</ div >
2012-12-07 17:09:46 +01:00
</ form >
2006-12-02 04:36:16 +00:00
" ;
2013-02-08 14:57:15 +01:00
$caption = ( $edit ? LAN_PLUGIN_NEWSLETTER_NAME . ' - ' . LAN_UPDATE : LAN_PLUGIN_NEWSLETTER_NAME . ' - ' . LAN_CREATE );
2006-12-02 04:36:16 +00:00
2012-12-07 17:09:46 +01:00
$ns -> tablerender ( $caption , $text );
2006-12-02 04:36:16 +00:00
}
2008-09-22 20:38:26 +00:00
2009-11-19 20:24:21 +00:00
/**
* 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
*/
2006-12-02 04:36:16 +00:00
function createNewsletter ()
{
2012-12-07 17:09:46 +01:00
$tp = e107 :: getParser ();
$sql = e107 :: getDb ();
2013-02-08 14:57:15 +01:00
$mes = e107 :: getMessage ();
2012-12-07 17:09:46 +01:00
$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' ]);
2006-12-02 04:36:16 +00:00
if ( isset ( $_POST [ 'editid' ]))
{
2012-12-07 17:09:46 +01:00
$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' ]));
2013-02-08 14:57:15 +01:00
$mes -> addSuccess ( LAN_UPDATED );
2006-12-02 04:36:16 +00:00
}
else
{
2008-12-18 21:10:10 +00:00
$letter [ 'newsletter_datestamp' ] = time ();
2012-12-07 17:09:46 +01:00
$sql -> db_Insert ( 'newsletter' , $letter );
2013-02-08 14:57:15 +01:00
$mes -> addSuccess ( LAN_CREATED );
2006-12-02 04:36:16 +00:00
}
}
function makeNewsletter ( $edit = FALSE )
{
2012-12-07 17:09:46 +01:00
$tp = e107 :: getParser ();
$ns = e107 :: getRender ();
$sql = e107 :: getDb ();
2013-02-08 14:57:15 +01:00
$mes = e107 :: getMessage ();
$frm = e107 :: getForm ();
2012-12-07 17:09:46 +01:00
2008-12-18 21:10:10 +00:00
// Passed data is from DB
2006-12-02 04:36:16 +00:00
if ( $edit )
{
2012-12-07 17:09:46 +01:00
$newsletter_title = $tp -> toFORM ( $edit [ 'newsletter_title' ]);
$newsletter_text = $tp -> toFORM ( $edit [ 'newsletter_text' ]);
$newsletter_issue = $tp -> toFORM ( $edit [ 'newsletter_issue' ]);
2006-12-02 04:36:16 +00:00
}
2012-12-07 17:09:46 +01:00
if ( ! $sql -> db_Select ( 'newsletter' , '*' , " newsletter_parent='0' " ))
2006-12-02 04:36:16 +00:00
{
2013-02-08 14:57:15 +01:00
//$this -> message = NLLAN_05;
$mes -> addInfo ( NLLAN_05 );
2006-12-02 04:36:16 +00:00
}
2013-02-09 13:19:21 +01:00
else
{
2012-12-07 17:09:46 +01:00
$nlArray = $sql -> db_getList ();
2006-12-02 04:36:16 +00:00
2012-12-07 17:09:46 +01:00
$text .= "
2006-12-02 04:36:16 +00:00
< form action = '".e_SELF."' id = 'newsletterform' method = 'post' >
2012-12-07 17:09:46 +01:00
< table class = 'table adminform' >
2013-03-17 13:20:25 +01:00
< colgroup span = '2' >
< col class = 'col-label' />
< col class = 'col-control' />
</ colgroup >
2006-12-02 04:36:16 +00:00
< tr >
2013-02-08 14:57:15 +01:00
< td > " .NLLAN_30. " </ td >
< td >
2006-12-02 04:36:16 +00:00
2013-02-08 14:57:15 +01:00
< select name = 'newsletter_parent' class = 'tbox' >
" ;
2006-12-02 04:36:16 +00:00
2013-02-08 14:57:15 +01:00
foreach ( $nlArray as $nl )
{
$text .= " <option value=' " . $nl [ 'newsletter_id' ] . " '> " . $nl [ 'newsletter_title' ] . " </option> \n " ;
}
2006-12-02 04:36:16 +00:00
2013-02-08 14:57:15 +01:00
$text .= " </select></td>
2006-12-02 04:36:16 +00:00
< tr >
2012-12-07 17:09:46 +01:00
< td > " .NLLAN_31. " </ td >
2013-03-17 13:20:25 +01:00
< td > " . $frm->text ('newsletter_title', $newsletter_title , '200'). " </ td >
2006-12-02 04:36:16 +00:00
</ tr >
< tr >
2012-12-07 17:09:46 +01:00
< td > " .NLLAN_32. " </ td >
2013-03-17 13:20:25 +01:00
< td > " . $frm->number ('newsletter_', $newsletter_issue , '200'). " </ td >
2006-12-02 04:36:16 +00:00
</ tr >
< tr >
2012-12-07 17:09:46 +01:00
< td > " .NLLAN_33. " </ td >
< td >
2013-03-17 13:20:25 +01:00
< textarea class = 'tbox' id = 'data' name = 'newsletter_text' cols = '80' rows = '10' onselect = 'storeCaret(this);' onclick = 'storeCaret(this);' onkeyup = 'storeCaret(this);' > { $edit [ 'newsletter_text' ]} </ textarea ></ td >
2006-12-02 04:36:16 +00:00
</ tr >
</ table >
2012-12-07 17:09:46 +01:00
< div class = 'buttons-bar center' >
2013-03-17 13:20:25 +01:00
" .( $edit ? $frm->admin_button ('createIssue', LAN_UPDATE, 'update'). " < input type = 'hidden' name = 'editid' value = '{$edit[' newsletter_id ']}' /> " : $frm->admin_button ('createIssue', LAN_CREATE, 'submit')). "
2012-12-07 17:09:46 +01:00
</ div >
2006-12-02 04:36:16 +00:00
</ form >
</ div >
" ;
2013-02-09 13:19:21 +01:00
}
2006-12-02 04:36:16 +00:00
$caption = ( $edit ? NLLAN_36 : NLLAN_37 );
2013-02-08 14:57:15 +01:00
$ns -> tablerender ( $caption , $mes -> render () . $text );
2006-12-02 04:36:16 +00:00
}
function createIssue ()
{
2013-02-08 14:57:15 +01:00
$tp = e107 :: getParser ();
$sql = e107 :: getDb ();
$mes = e107 :: getMessage ();
2013-02-09 13:19:21 +01:00
$ns = e107 :: getRender ();
2013-02-08 14:57:15 +01:00
$letter [ 'newsletter_title' ] = $tp -> toDB ( $_POST [ 'newsletter_title' ]);
$letter [ 'newsletter_text' ] = $tp -> toDB ( $_POST [ 'newsletter_text' ]);
2008-12-18 21:10:10 +00:00
$letter [ 'newsletter_parent' ] = intval ( $_POST [ 'newsletter_parent' ]);
2013-02-08 14:57:15 +01:00
$letter [ 'newsletter_issue' ] = $tp -> toDB ( $_POST [ 'newsletter_issue' ]);
2006-12-02 04:36:16 +00:00
2008-12-18 21:10:10 +00:00
if ( isset ( $_POST [ 'editid' ]))
2006-12-02 04:36:16 +00:00
{
2013-02-08 14:57:15 +01:00
$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' ]));
2013-02-11 10:22:25 +01:00
$mes -> addSuccess ( LAN_UPDATED );
2006-12-02 04:36:16 +00:00
}
else
{
2008-12-18 21:10:10 +00:00
$letter [ 'newsletter_datestamp' ] = time ();
2013-02-08 14:57:15 +01:00
$sql -> db_Insert ( 'newsletter' , $letter );
$mes -> addSuccess ( NLLAN_39 );
2006-12-02 04:36:16 +00:00
}
2013-02-08 14:57:15 +01:00
$ns -> tablerender ( $caption , $mes -> render () . $text );
2006-12-02 04:36:16 +00:00
}
2009-11-19 20:24:21 +00:00
/**
* Actually release an issue of a newsletter
* Add the mailing to the mail queue
*
* @ param int id of issue
*
* @ return boolean FALSE on error
*/
2006-12-02 04:36:16 +00:00
function releaseIssue ( $issue )
{
2012-12-07 17:09:46 +01:00
$pref = e107 :: getPref ();
$sql = e107 :: getDb ();
2013-02-08 14:57:15 +01:00
$mes = e107 :: getMessage ();
2006-12-02 04:36:16 +00:00
2009-11-19 20:24:21 +00:00
$issue = intval ( str_replace ( 'nlmailnow_' , '' , $issue ));
2006-12-02 04:36:16 +00:00
2009-11-19 20:24:21 +00:00
// Get details of current newsletter issue
2013-03-17 13:20:25 +01:00
if ( ! $sql -> select ( 'newsletter' , '*' , 'newsletter_id=' . $issue ))
2006-12-02 04:36:16 +00:00
{
return FALSE ;
}
2013-03-17 13:20:25 +01:00
$newsletterInfo = $sql -> fetch ( MYSQL_ASSOC );
2006-12-02 04:36:16 +00:00
2009-11-19 20:24:21 +00:00
// Get parent details - has header/footer and subscriber list
2013-03-17 13:20:25 +01:00
if ( ! $sql -> select ( 'newsletter' , '*' , " newsletter_id=' " . $newsletterInfo [ 'newsletter_parent' ] . " ' " ))
2006-12-02 04:36:16 +00:00
{
return FALSE ;
}
2012-12-07 17:09:46 +01:00
$newsletterParentInfo = $sql -> db_Fetch ( MYSQL_ASSOC );
2006-12-02 04:36:16 +00:00
$memberArray = explode ( chr ( 1 ), $newsletterParentInfo [ 'newsletter_subscribers' ]);
2009-11-19 20:24:21 +00:00
require ( e_HANDLER . 'mail_manager_class.php' );
$mailer = new e107MailManager ;
// Start by creating the mail body
$mailData = array (
'mail_content_status' => MAIL_STATUS_TEMP ,
'mail_create_app' => 'newsletter' ,
'mail_title' => NLLAN_01 . ' ' . $issue ,
'mail_subject' => $newsletterParentInfo [ 'newsletter_title' ] . ': ' . $newsletterInfo [ 'newsletter_title' ],
'mail_sender_email' => $pref [ 'siteadminemail' ],
'mail_sender_name' => $pref [ 'siteadmin' ],
'mail_send_style' => 'themehtml' ,
'mail_include_images' => TRUE
);
2006-12-02 04:36:16 +00:00
2009-11-19 20:24:21 +00:00
// Assemble body - we can leave a lot to to core mail sending routines
$mail_style = " <div style='width:90%; padding-top:10px'> " ;
2012-12-07 17:09:46 +01:00
$mail_style .= " <div><b> { $mailout [ 'mail_subject' ] } <br />[ " . NLLAN_12 . " " . $newsletterInfo [ 'newsletter_issue' ] . " ]</b></div><br /><br /> " ;
$mail_style .= " <div> " ;
2009-11-19 20:24:21 +00:00
$mailData [ 'mail_body' ] = $mail_style . $newsletterParentInfo [ 'newsletter_header' ] . " <hr /> " . $newsletterInfo [ 'newsletter_text' ] . " <br /><br /><hr /> " . $newsletterParentInfo [ 'newsletter_footer' ] . " <br /></div></div> " ;
2006-12-02 04:36:16 +00:00
2009-11-19 20:24:21 +00:00
$result = $mailer -> saveEmail ( $mailData , TRUE );
if ( is_numeric ( $result ))
2006-12-02 04:36:16 +00:00
{
2009-11-19 20:24:21 +00:00
$mailMainID = $mailData [ 'mail_source_id' ] = $result ;
2006-12-02 04:36:16 +00:00
}
else
{
2009-11-19 20:24:21 +00:00
// TODO: Handle error
2006-12-02 04:36:16 +00:00
}
2009-11-19 20:24:21 +00:00
2006-12-02 04:36:16 +00:00
2009-11-19 20:24:21 +00:00
$mailer -> mailInitCounters ( $mailMainID ); // Initialise counters for emails added
2006-12-02 04:36:16 +00:00
2009-11-19 20:24:21 +00:00
// Now add email addresses to the list
2006-12-02 04:36:16 +00:00
foreach ( $memberArray as $memberID )
{
2009-11-19 20:24:21 +00:00
if ( $memberID = intval ( $memberID ))
2006-12-02 04:36:16 +00:00
{
2012-12-07 17:09:46 +01:00
if ( $sql -> db_Select ( 'user' , 'user_name,user_email,user_loginname,user_lastvisit' , 'user_id=' . $memberID ))
2006-12-02 04:36:16 +00:00
{
2012-12-07 17:09:46 +01:00
$row = $sql -> db_Fetch ( MYSQL_ASSOC );
2009-11-19 20:24:21 +00:00
$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
2006-12-02 04:36:16 +00:00
}
2009-11-19 20:24:21 +00:00
$result = $mailer -> mailAddNoDup ( $mailMainID , $uTarget , MAIL_STATUS_TEMP );
//echo '<b>'.NLLAN_54.'</b> '.$uTarget['mail_recipient_name'].' ( '.$uTarget['mail_recipient_email'].' ) <br />';
2006-12-02 04:36:16 +00:00
}
}
2009-11-19 20:24:21 +00:00
$mailer -> mailUpdateCounters ( $mailMainID ); // Update the counters
$counters = $mailer -> mailRetrieveCounters ( $mailMainID ); // Retrieve the counters
if ( $counters [ 'add' ] == 0 )
{
$mailer -> deleteEmail ( $mailMainID ); // No subscribers - delete email
2013-02-08 14:57:15 +01:00
//$this->message = NLLAN_41;
$mes -> addError ( NLLAN_41 );
2009-11-19 20:24:21 +00:00
}
else
{
$mailer -> activateEmail ( $mailMainID , FALSE ); // Actually mark the email for sending
2013-02-08 14:57:15 +01:00
//$this->message = str_replace('--COUNT--', $counters['add'],NLLAN_40);
$mes -> addSuccess ( str_replace ( '--COUNT--' , $counters [ 'add' ], NLLAN_40 ));
2009-11-19 20:24:21 +00:00
}
2012-12-07 17:09:46 +01:00
$sql -> db_Update ( 'newsletter' , " newsletter_flag='1' WHERE newsletter_id= " . $issue );
2013-02-08 14:57:15 +01:00
$ns -> tablerender ( $caption , $mes -> render () . $text );
2006-12-02 04:36:16 +00:00
}
2009-11-19 20:24:21 +00:00
/**
* Edit a newsletter
*
* @ param $id int ID of newsletter to edit
* @ return none
*/
function editNewsletter ( $id )
2006-12-02 04:36:16 +00:00
{
2012-12-07 17:09:46 +01:00
$sql = e107 :: getDb ();
2013-03-17 13:20:25 +01:00
if ( $sql -> select ( " newsletter " , " * " , " newsletter_id=' { $id } ' " ))
2006-12-02 04:36:16 +00:00
{
2013-03-17 13:20:25 +01:00
$foo = $sql -> fetch ();
2006-12-02 04:36:16 +00:00
if ( ! $foo [ 'newsletter_parent' ])
{
$this -> defineNewsletter ( $foo );
}
else
{
$this -> makeNewsletter ( $foo );
}
}
}
2009-11-19 20:24:21 +00:00
/**
* Delete a newsletter
*
* @ return none
*/
2006-12-02 04:36:16 +00:00
function deleteNewsletter ()
{
2012-12-07 17:09:46 +01:00
$sql = e107 :: getDb ();
2013-02-08 14:57:15 +01:00
$mes = e107 :: getMessage ();
2012-12-07 17:09:46 +01:00
2006-12-02 04:36:16 +00:00
$tmp = each ( $_POST [ 'delete' ]);
2009-11-19 20:24:21 +00:00
if ( strpos ( $tmp [ 'key' ], 'newsletter' ) === 0 )
2006-12-02 04:36:16 +00:00
{
2009-11-19 20:24:21 +00:00
$id = intval ( str_replace ( 'newsletter_' , '' , $tmp [ 'key' ]));
2013-03-17 13:20:25 +01:00
$sql -> delete ( 'newsletter' , " newsletter_id=' { $id } ' " );
2013-02-08 14:57:15 +01:00
//$this -> message = NLLAN_42;
$mes -> addSuccess ( LAN_DELETED );
2006-12-02 04:36:16 +00:00
}
else
{
2009-11-19 20:24:21 +00:00
$id = intval ( str_replace ( 'issue_' , '' , $tmp [ 'key' ]));
2013-03-17 13:20:25 +01:00
$sql -> delete ( 'newsletter' , " newsletter_id=' { $id } ' " );
2013-02-08 14:57:15 +01:00
//$this -> message = NLLAN_43;
$mes -> addSuccess ( LAN_DELETED );
2006-12-02 04:36:16 +00:00
}
}
2009-11-19 20:24:21 +00:00
/**
* Generate and display admin menu
*
* @ return none
*/
2006-12-02 04:36:16 +00:00
function show_options ( $action )
{
if ( $action == " " )
{
$action = " main " ;
}
$var [ 'main' ][ 'text' ] = NLLAN_44 ;
$var [ 'main' ][ 'link' ] = e_SELF ;
$var [ 'define' ][ 'text' ] = NLLAN_45 ;
$var [ 'define' ][ 'link' ] = e_SELF . " ?define " ;
$var [ 'make' ][ 'text' ] = NLLAN_46 ;
$var [ 'make' ][ 'link' ] = e_SELF . " ?make " ;
show_admin_menu ( NLLAN_47 , $action , $var );
}
2008-09-22 20:38:26 +00:00
2009-11-19 20:24:21 +00:00
function view_subscribers ( $p_id )
2008-09-22 20:38:26 +00:00
{
2012-12-07 17:09:46 +01:00
$ns = e107 :: getRender ();
2013-02-08 14:57:15 +01:00
$mes = e107 :: getMessage ();
$frm = e107 :: getForm ();
2009-11-19 20:24:21 +00:00
$nl_sql = new db ;
$_nl_sanatized = '' ;
2012-12-07 17:09:46 +01:00
2013-02-08 14:57:15 +01:00
if ( ! $nl_sql -> db_Select ( 'newsletter' , '*' , 'newsletter_id=' . $p_id )) // Check if newsletter id is available
{
$mes -> addError ( NLLAN_56 );
2013-02-10 15:39:20 +01:00
$vs_text .= " <div class='buttons-bar center'>
2013-04-26 13:48:23 -07:00
< input class = 'btn button' type = button value = '".LAN_BACK."' onClick = \ " window.location=' " . e_SELF . " ' \" >
2013-02-08 14:57:15 +01:00
</ div > " ;
$ns -> tablerender ( NLLAN_65 . ' ' . $p_id , $mes -> render () . $vs_text );
2009-11-19 20:24:21 +00:00
return ;
}
else
2008-09-22 20:38:26 +00:00
{
2009-11-19 20:24:21 +00:00
$vs_text .= "
2013-02-08 14:57:15 +01:00
< form action = '".e_SELF."' id = 'newsletterform' method = 'post' >
< table class = 'table adminlist' >
< colgroup >
< col style = 'width: 5%; text-align: center;' />
< col style = 'width: 35%;' />
< col style = 'width: 45%;' />
< col style = 'width: 15%; text-align: center;' />
</ colgroup >
2009-11-19 20:24:21 +00:00
< tr >
2013-02-08 14:57:15 +01:00
< td > " .LAN_ID. " </ td >
< td > " .LAN_NAME. " </ td >
< td > " .LAN_EMAIL. " </ td >
< td > " .LAN_OPTIONS. " </ td >
2009-11-19 20:24:21 +00:00
</ tr > " ;
2013-02-08 14:57:15 +01:00
2009-11-19 20:24:21 +00:00
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 )
2008-09-22 20:38:26 +00:00
{
2009-11-19 20:24:21 +00:00
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 )
2008-09-22 20:38:26 +00:00
{
2009-11-19 20:24:21 +00:00
if ( $val != $_last_subscriber )
{
$nl_sql -> db_Select ( " user " , " * " , " user_id= " . $val );
if ( $nl_row = $nl_sql -> db_Fetch ())
{
2013-02-08 14:57:15 +01:00
$vs_text .= "
< tr >
< td > " . $val . " </ td >
< td >< a href = '".e_BASE."user.php?id.{$val}' > " . $nl_row['user_name'] . " </ a ></ td >
< td > " . $nl_row['user_email'] . " </ td >
< td >< a href = '".e_SELF."?remove.{$p_id}.{$val}' > " .ADMIN_DELETE_ICON. " </ a > " .(( $nl_row['user_ban'] > 0) ? NLLAN_62 : " " ). " </ td >
2009-11-19 20:24:21 +00:00
</ 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 ;
}
2008-09-22 20:38:26 +00:00
}
}
}
2009-11-19 20:24:21 +00:00
$vs_text .= "
2013-02-08 14:57:15 +01:00
< tr >
< td colspan = '4' > " .NLLAN_63. " : " . $subscribers_total_count . " </ td >
</ tr >
</ table >
2013-02-10 15:39:20 +01:00
< div class = 'buttons-bar center' >
2013-02-08 14:57:15 +01:00
" . $frm->admin_button ('submit', LAN_BACK, 'submit'). "
</ div >
</ form >
2009-11-19 20:24:21 +00:00
" ;
if ( $_nl_sanatized == 1 )
{
2013-02-08 14:57:15 +01:00
$mes -> addInfo ( NLLAN_66 );
2009-11-19 20:24:21 +00:00
}
2013-02-08 14:57:15 +01:00
$ns -> tablerender ( NLLAN_65 . ' ' . $p_id , $mes -> render () . $vs_text );
2009-11-19 20:24:21 +00:00
}
2008-09-22 20:38:26 +00:00
2009-11-19 20:24:21 +00:00
2008-12-18 21:10:10 +00:00
function remove_subscribers ( $p_id , $p_key )
2008-09-22 20:38:26 +00:00
{
2012-12-07 17:09:46 +01:00
$sql = e107 :: getDb ();
2013-03-17 13:20:25 +01:00
$sql -> select ( 'newsletter' , '*' , 'newsletter_id=' . intval ( $p_id ));
if ( $nl_row = $sql -> fetch ( MYSQL_ASSOC ))
2008-12-18 21:10:10 +00:00
{
$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 ));
2012-12-07 17:09:46 +01:00
$sql -> db_Update ( 'newsletter' , " newsletter_subscribers=' { $new_subscriber_list } ' WHERE newsletter_id=' " . $p_id . " ' " );
2008-12-18 21:10:10 +00:00
}
}
2006-12-02 04:36:16 +00:00
}
2009-11-19 20:24:21 +00:00
require_once ( e_ADMIN . 'footer.php' );
2006-12-02 04:36:16 +00:00
function admin_config_adminmenu ()
{
global $nl ;
global $action ;
$nl -> show_options ( $action );
}
2008-09-22 20:38:26 +00:00
?>