diff --git a/e107_handlers/mailout_class.php b/e107_handlers/mailout_class.php
index 744885629..9d27c2f75 100644
--- a/e107_handlers/mailout_class.php
+++ b/e107_handlers/mailout_class.php
@@ -21,8 +21,6 @@
* @package e107
* @subpackage e107_handlers
* @version $Id: mailout_class.php 11315 2010-02-10 18:18:01Z secretr $;
- *
- * @todo last visit date needs XHTML calendar on display, and needs to accept varying input formats
*/
if (!defined('e107_INIT')) { exit; }
diff --git a/e107_plugins/newsletter/admin_config.php b/e107_plugins/newsletter/admin_config.php
index d3cd05dfa..b92ed8495 100644
--- a/e107_plugins/newsletter/admin_config.php
+++ b/e107_plugins/newsletter/admin_config.php
@@ -11,6 +11,16 @@
* $URL$
* $Id$
*/
+
+/**
+ * e107 Newsletter plugin
+ *
+ * @package e107_plugins
+ * @subpackage newsletter
+ * @version $Id$;
+ */
+
+
require_once('../../class2.php');
if (!getperms('P'))
{
diff --git a/e107_plugins/newsletter/e_mailout.php b/e107_plugins/newsletter/e_mailout.php
index 442a30d7f..5c9abf73a 100644
--- a/e107_plugins/newsletter/e_mailout.php
+++ b/e107_plugins/newsletter/e_mailout.php
@@ -1,232 +1,232 @@
-e107 = e107::getInstance();
- //$this->adminHandler = e107::getRegistry('_mailout_admin'); // Get the mailer admin object - we want to use some of its functions
- }
-
-
- /**
- * 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();
- if (is_array($_POST['nl_category_sel']))
- {
- 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)
- {
- $sql = e107::getDb();
-
-
- 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.' ';
- if (!($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()
- {
-
- $sql = e107::getDb();
-
-
- if (!$this->selectorActive) return FALSE;
-
- while ($this->selectorActive)
- {
- if (count($this->targets) == 0)
- { // Read in and process another newletter mailing list
- if (!($row = $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 array Returns array which is displayed in a table cell
- */
- public function showSelect($allow_edit = FALSE, $selectVals = FALSE)
- {
- $sql = e107::getDb();
- $frm = e107::getForm();
- $var = array();
-
- $selects = array_flip(explode(',', $selectVals));
-
- if ($sql->db_Select('newsletter', 'newsletter_id, newsletter_title', '`newsletter_parent`=0'))
- {
- $c=0;
- while ($row = $sql->db_Fetch(MYSQL_ASSOC))
- {
- $checked = (isset($selects[$row['newsletter_id']])) ? " checked='checked'" : '';
-
- if ($allow_edit)
- {
- $var[$c]['caption'] = $row['newsletter_title'];
- $var[$c]['html'] = $frm->checkbox('nl_category_sel[]',$row['newsletter_id'] ,$checked);
- }
- elseif($checked)
- {
- $var[$c]['caption'] = $row['newsletter_title'];
- $var[$c]['html'] = NLLAN_49;
- }
- $c++;
- }
- }
- else
- {
- $var[$c]['caption'] = NLLAN_50;
- $var[$c]['html'] = '';
- }
-
- return $var;
- }
-}
-
-
-
+e107 = e107::getInstance();
+ //$this->adminHandler = e107::getRegistry('_mailout_admin'); // Get the mailer admin object - we want to use some of its functions
+ }
+
+
+ /**
+ * 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();
+ if (is_array($_POST['nl_category_sel']))
+ {
+ 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)
+ {
+ $sql = e107::getDb();
+
+
+ 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.' ';
+ if (!($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()
+ {
+
+ $sql = e107::getDb();
+
+
+ if (!$this->selectorActive) return FALSE;
+
+ while ($this->selectorActive)
+ {
+ if (count($this->targets) == 0)
+ { // Read in and process another newletter mailing list
+ if (!($row = $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 array Returns array which is displayed in a table cell
+ */
+ public function showSelect($allow_edit = FALSE, $selectVals = FALSE)
+ {
+ $sql = e107::getDb();
+ $frm = e107::getForm();
+ $var = array();
+
+ $selects = array_flip(explode(',', $selectVals));
+
+ if ($sql->db_Select('newsletter', 'newsletter_id, newsletter_title', '`newsletter_parent`=0'))
+ {
+ $c=0;
+ while ($row = $sql->db_Fetch(MYSQL_ASSOC))
+ {
+ $checked = (isset($selects[$row['newsletter_id']])) ? " checked='checked'" : '';
+
+ if ($allow_edit)
+ {
+ $var[$c]['caption'] = $row['newsletter_title'];
+ $var[$c]['html'] = $frm->checkbox('nl_category_sel[]',$row['newsletter_id'] ,$checked);
+ }
+ elseif($checked)
+ {
+ $var[$c]['caption'] = $row['newsletter_title'];
+ $var[$c]['html'] = NLLAN_49;
+ }
+ $c++;
+ }
+ }
+ else
+ {
+ $var[$c]['caption'] = NLLAN_50;
+ $var[$c]['html'] = '';
+ }
+
+ return $var;
+ }
+}
+
+
+
?>
\ No newline at end of file
diff --git a/e107_plugins/newsletter/newsletter_menu.php b/e107_plugins/newsletter/newsletter_menu.php
index 65d79d7ff..8f0f2b24e 100644
--- a/e107_plugins/newsletter/newsletter_menu.php
+++ b/e107_plugins/newsletter/newsletter_menu.php
@@ -1,115 +1,115 @@
-isInstalled('newsletter'))
-{
- 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(strpos($key, 'nlUnsubscribe_') === 0)
- {
- $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)."' ");
- $requery = true;
- }
- else if(strpos($key, 'nlSubscribe_') === 0)
- {
- $subid = str_replace("nlSubscribe_", "", $key);
- $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;
- }
- }
-}
-
-global $tp;
-
-if($requery)
-{
- if($sql -> db_Select('newsletter', '*', "newsletter_parent='0' "))
- {
- $newsletterArray = $sql -> db_getList();
- }
-}
-
-$text = '';
-foreach($newsletterArray as $nl)
-{
- $text .= "
";
-
- // 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 .= "
";
+
+ // 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 .= "