From 3694e494ab11e2ed7ebb1cbf08423b918c742e50 Mon Sep 17 00:00:00 2001 From: e107steved Date: Wed, 18 Nov 2009 20:45:20 +0000 Subject: [PATCH] Signup - use new mailer. Plus a few details --- e107_admin/mailout.php | 10 +- e107_handlers/e107_class.php | 8 +- e107_themes/templates/email_template.php | 57 ++++--- signup.php | 193 ++++++++++++----------- usersettings.php | 8 +- 5 files changed, 143 insertions(+), 133 deletions(-) diff --git a/e107_admin/mailout.php b/e107_admin/mailout.php index 094cc3733..4f6a208b4 100644 --- a/e107_admin/mailout.php +++ b/e107_admin/mailout.php @@ -9,9 +9,9 @@ * Administration - Site Maintenance * * $Source: /cvs_backup/e107_0.8/e107_admin/mailout.php,v $ - * $Revision: 1.26 $ - * $Date: 2009-11-18 01:04:26 $ - * $Author: e107coders $ + * $Revision: 1.27 $ + * $Date: 2009-11-18 20:45:18 $ + * $Author: e107steved $ * */ @@ -737,12 +737,12 @@ function show_prefs($mailAdmin) { // Allow selection of email address sources $text .= " ".LAN_MAILOUT_77." - + "; $mail_enable = explode(',',$pref['mailout_enabled']); foreach ($pref['e_mailout_list'] as $mailer => $v) { $check = (in_array($mailer,$mail_enable)) ? "checked='checked'" : ""; - $text .= $mailer." 
"; + $text .= "  {$mailer}
"; } $text .= "\n"; } diff --git a/e107_handlers/e107_class.php b/e107_handlers/e107_class.php index 23fe902b1..95e3cfe03 100644 --- a/e107_handlers/e107_class.php +++ b/e107_handlers/e107_class.php @@ -9,13 +9,15 @@ * e107 Main * * $Source: /cvs_backup/e107_0.8/e107_handlers/e107_class.php,v $ - * $Revision: 1.73 $ - * $Date: 2009-11-18 01:04:43 $ - * $Author: e107coders $ + * $Revision: 1.74 $ + * $Date: 2009-11-18 20:45:18 $ + * $Author: e107steved $ */ if (!defined('e107_INIT')) { exit; } + +define('LOCALHOST_IP', '0000:0000:0000:0000:0000:ffff:7f00:0001'); // IPV6 string for localhost - as stored in DB /** * e107 class * diff --git a/e107_themes/templates/email_template.php b/e107_themes/templates/email_template.php index 1fe398dd2..388100e53 100644 --- a/e107_themes/templates/email_template.php +++ b/e107_themes/templates/email_template.php @@ -6,37 +6,45 @@ * Released under the terms and conditions of the * GNU General Public License (http://www.gnu.org/licenses/gpl.txt) * - * + * Template for signup emails * * $Source: /cvs_backup/e107_0.8/e107_themes/templates/email_template.php,v $ - * $Revision: 1.9 $ - * $Date: 2009-11-18 01:06:08 $ - * $Author: e107coders $ + * $Revision: 1.10 $ + * $Date: 2009-11-18 20:45:19 $ + * $Author: e107steved $ */ if (!defined('e107_INIT')) { exit; } global $pref; -$SIGNUPEMAIL_SUBJECT = LAN_SIGNUP_96." {SITENAME}"; -$SIGNUPEMAIL_USETHEME = 1; // Use CSS STYLE from THEME: 0 = Off, 1 = external, 2 = embedded -$SIGNUPEMAIL_LINKSTYLE = ""; // css to use on links eg. color:red; -$SIGNUPEMAIL_IMAGES = e_IMAGE.$pref['sitebutton']; // comma separated paths to image to embed. referenced below with {IMAGE1} (IMAGE2} etc. -$SIGNUPEMAIL_CC = ""; // comma separated email addresses to put in CC of the signup email. -$SIGNUPEMAIL_BCC = ""; // comma separated email addresses to put in BCC of the signup email. -$SIGNUPEMAIL_ATTACHMENTS = ""; // files-path array of attachments. eg. array(e_FILE."myfile.zip",e_FILE."myotherfile.zip"); -$SIGNUPEMAIL_BACKGROUNDIMAGE = "";// relative path to a background image eg. e_IMAGE."mybackground.jpg"; - -// Optional admin preferences Override. -$EMAIL_METHOD = ""; // php, smtp or sendmail -$EMAIL_SMTP_SERVER = ""; // smtp.myserver.com -$EMAIL_SMTP_USER = ""; -$EMAIL_SMTP_PASS = ""; -$EMAIL_SENDMAIL_PATH = ""; -$EMAIL_FROM = ""; // admin@mysite.com -$EMAIL_FROM_NAME = ""; // Admin +$SIGNUPEMAIL_SUBJECT = LAN_SIGNUP_96.' {SITENAME}'; +$SIGNUPEMAIL_USETHEME = 1; // Use CSS STYLE from THEME: 0 = Off, 1 = external, 2 = embedded +$SIGNUPEMAIL_LINKSTYLE = ''; // css to use on links eg. color:red; +//$SIGNUPEMAIL_IMAGES = e_IMAGE.$pref['sitebutton']; // comma separated paths to image to embed. referenced below with {IMAGE1} (IMAGE2} etc. Not required +$SIGNUPEMAIL_CC = ""; // comma separated email addresses to put in CC of the signup email. +$SIGNUPEMAIL_BCC = ""; // comma separated email addresses to put in BCC of the signup email. +$SIGNUPEMAIL_ATTACHMENTS = ""; // files-path array of attachments. eg. array(e_FILE."myfile.zip",e_FILE."myotherfile.zip"); +$SIGNUPEMAIL_BACKGROUNDIMAGE = ""; // absolute path to a background image eg. e_IMAGE."mybackground.jpg"; +/* +Optional mailer admin preferences Override. The following mailer parameters can be overridden: +'mailer', 'smtp_server', 'smtp_username', 'smtp_password', 'sendmail', 'siteadminemail', 'siteadmin', 'smtp_pop3auth', +'SMTPDebug', 'subject', 'from', 'fromname', 'replyto', 'send_html', 'add_html_header', 'attachments', 'cc', 'bcc', +'bouncepath', 'returnreceipt', 'priority', 'extra_header', 'wordwrap', 'split' +See e_HANDLER.mail.php for more information +If required, uncomment the following block and add array elements for options to be overridden - array key is the option name +DON'T put in empty fields unless you wish to set the value to an empty value! */ +/* +global $EMAIL_OVERRIDES; +$EMAIL_OVERRIDES = array( + 'bouncepath' => 'some email address', + 'returnreceipt' => 1 +); +*/ + +// Not used in signup email $EMAIL_HEADER = " @@ -48,6 +56,7 @@ $EMAIL_HEADER = "
{SITENAME=link} @@ -81,14 +90,10 @@ LAN_SIGNUP_97." {SITENAME}

{SITENAME}
{SITEURL} -

-{IMAGE1} +

".($pref['sitebutton'] ? "" : '')." "; - - - ?> \ No newline at end of file diff --git a/signup.php b/signup.php index e39fd3c98..7cc15a228 100644 --- a/signup.php +++ b/signup.php @@ -2,16 +2,16 @@ /* * e107 website system * - * Copyright (C) 2008-2009 e107 Inc (e107.org) + * Copyright (C) 2001-2008 e107 Inc (e107.org) * Released under the terms and conditions of the * GNU General Public License (http://www.gnu.org/licenses/gpl.txt) * * User signup * * $Source: /cvs_backup/e107_0.8/signup.php,v $ - * $Revision: 1.41 $ - * $Date: 2009-11-18 01:04:24 $ - * $Author: e107coders $ + * $Revision: 1.42 $ + * $Date: 2009-11-18 20:45:20 $ + * $Author: e107steved $ * */ @@ -39,18 +39,18 @@ require_once(e_HANDLER.'user_handler.php'); $userMethods = new UserHandler; $userMethods->deleteExpired(); // Delete time-expired partial registrations -if (is_readable(THEME."signup_template.php")) +if (is_readable(THEME.'signup_template.php')) { - require_once(THEME."signup_template.php"); + require_once(THEME.'signup_template.php'); } else { - require_once(e_THEME."templates/signup_template.php"); + require_once(e_THEME.'templates/signup_template.php'); } -include_once(e_FILE."shortcode/batch/signup_shortcodes.php"); +include_once(e_FILE.'shortcode/batch/signup_shortcodes.php'); -$signup_imagecode = ($pref['signcode'] && extension_loaded("gd")); +$signup_imagecode = ($pref['signcode'] && extension_loaded('gd')); $text = ''; $extraErrors = array(); $error = FALSE; @@ -59,9 +59,8 @@ $error = FALSE; //------------------------------- // Resend Activation Email //------------------------------- -if(e_QUERY == "resend" && !USER && ($pref['user_reg_veri'] == 1)) +if((e_QUERY == 'resend') && !USER && ($pref['user_reg_veri'] == 1)) { -// done above: include_lan(e_LANGUAGEDIR.e_LANGUAGE.'/lan_'.e_PAGE); require_once(HEADERF); $clean_email = $tp -> toDB($_POST['resend_email']); @@ -120,8 +119,11 @@ if(e_QUERY == "resend" && !USER && ($pref['user_reg_veri'] == 1)) // Now send the email - got some valid info $row['user_password'] = 'xxxxxxx'; // Don't know the real one $eml = render_email($row); - $mailheader_e107id = $row['user_id']; - require_once(e_HANDLER."mail.php"); + $eml['e107_header'] = $row['user_id']; + require_once(e_HANDLER.'mail.php'); + $mailer = new e107Email(); + + if(!$mailer->sendEmail(USEREMAIL, USERNAME, $eml, FALSE)) $do_log['signup_action'] = LAN_SIGNUP_63; @@ -188,24 +190,22 @@ if(e_QUERY == "resend" && !USER && ($pref['user_reg_veri'] == 1)) if(!$_POST) { - - $error = ""; - $text = " "; - $password1 = ""; - $password2 = ""; - $email = ""; // Used in shortcodes - $loginname = ""; - $realname = ""; - $image = ""; - $avatar_upload = ""; - $photo_upload = ""; - $_POST['ue'] = ""; - $signature = ""; + $error = ''; + $text = ' '; + $password1 = ''; + $password2 = ''; + $email = ''; // Used in shortcodes + $loginname = ''; + $realname = ''; + $image = ''; + $avatar_upload = ''; + $photo_upload = ''; + $_POST['ue'] = ''; + $signature = ''; } -if(ADMIN && (e_QUERY == "preview" || e_QUERY == "test" || e_QUERY == "preview.aftersignup")) +if(ADMIN && (e_QUERY == 'preview' || e_QUERY == 'test' || e_QUERY == 'preview.aftersignup')) { -// done above: include_lan(e_LANGUAGEDIR.e_LANGUAGE.'/lan_'.e_PAGE); if(e_QUERY == "preview.aftersignup") { require_once(HEADERF); @@ -224,17 +224,12 @@ if(ADMIN && (e_QUERY == "preview" || e_QUERY == "test" || e_QUERY == "preview.a $eml = render_email($temp,TRUE); // It ignores the data, anyway echo $eml['preview']; - if(e_QUERY == "test") + if(e_QUERY == 'test') { - require_once(e_HANDLER."mail.php"); - $message = $eml['message']; - $subj = $eml['subject']; - $inline = $eml['inline-images']; - $Cc = $eml['cc']; - $Bcc = $eml['bcc']; - $attachments = $eml['attachments']; + require_once(e_HANDLER.'mail.php'); + $mailer = new e107Email(); - if(!sendemail(USEREMAIL, $subj, $message, USERNAME, "", "", $attachments, $Cc, $Bcc, $returnpath, $returnreceipt,$inline)) + if(!$mailer->sendEmail(USEREMAIL, USERNAME, $eml, FALSE)) { echo "



  >> ".LAN_SIGNUP_42; // there was a problem. } @@ -251,14 +246,14 @@ if ($pref['membersonly_enabled']) $HEADER = "

"; if (file_exists(THEME."images/login_logo.png")) { - $HEADER .= "\n"; + $HEADER .= "\n"; } else { - $HEADER .= "\n"; + $HEADER .= "\n"; } - $HEADER .= "
"; - $FOOTER = "
"; + $HEADER .= '
'; + $FOOTER = ''; } if($signup_imagecode) @@ -267,31 +262,26 @@ if($signup_imagecode) $sec_img = new secure_image; } -if($pref['user_reg'] == 0) +if (USER || ($pref['user_reg'] == 0) || ($pref['auth_method'] != 'e107')) { - header("location: ".e_HTTP."index.php"); + header('location: '.e_HTTP.'index.php'); exit; } -if(USER) -{ - header("location: ".e_HTTP."index.php"); - exit; -} //---------------------------------------- // After clicking the activation link //---------------------------------------- if (e_QUERY) { - $qs = explode(".", e_QUERY); - if ($qs[0] == "activate" && (count($qs) == 3 || count($qs) == 4) && $qs[2]) + $qs = explode('.', e_QUERY); + if ($qs[0] == 'activate' && (count($qs) == 3 || count($qs) == 4) && $qs[2]) { //TODO use generic multilanguage selection // return the message in the correct language. if(isset($qs[3]) && strlen($qs[3]) == 2 ) { - require_once(e_HANDLER."language_class.php"); + require_once(e_HANDLER.'language_class.php'); $slng = new language; $the_language = $slng->convert($qs[3]); if(is_readable(e_LANGUAGEDIR.$the_language.'/lan_'.e_PAGE)) @@ -457,13 +447,16 @@ if (isset($_POST['register'])) $allData['user_ip'] = $e107->getip(); - // check for multiple signups from the same IP address. - if($ipcount = $sql->db_Select('user', '*', "user_ip='".$allData['user_ip']."' and user_ban !='2' ")) + // check for multiple signups from the same IP address. But ignore localhost + if ($allData['user_ip'] != LOCALHOST_IP) { - if($ipcount >= $pref['signup_maxip'] && trim($pref['signup_maxip']) != "") + if($ipcount = $sql->db_Select('user', '*', "user_ip='".$allData['user_ip']."' and user_ban !='2' ")) { - $allData['errors']['user_email'] = ERR_GENERIC; - $allData['errortext']['user_email'] = LAN_SIGNUP_71; + if($ipcount >= $pref['signup_maxip'] && trim($pref['signup_maxip']) != "") + { + $allData['errors']['user_email'] = ERR_GENERIC; + $allData['errortext']['user_email'] = LAN_SIGNUP_71; + } } } @@ -620,14 +613,15 @@ if (isset($_POST['register'])) $allData['data']['user_id'] = $nid; // User ID $allData['data']['user_password'] = $savePassword; // Might need to send plaintext password in the email $eml = render_email($allData['data']); - $mailheader_e107id = $eml['userid']; - require_once(e_HANDLER."mail.php"); + $eml['e107_header'] = $eml['userid']; + require_once(e_HANDLER.'mail.php'); + $mailer = new e107Email(); - - if(!sendemail($_POST['email'], $eml['subject'], $eml['message'], "", "", "", $eml['attachments'], $eml['cc'], $eml['bcc'], "", "", $eml['inline-images'])) + if(!$mailer->sendEmail($allData['data']['user_email'], $allData['data']['user_name'], $eml,FALSE)) { $error_message = LAN_SIGNUP_42; // There was a problem, the registration mail was not sent, please contact the website administrator. } + unset($allData['data']['user_password']); } $e_event->trigger('usersup', $_POST); // Old trigger - send everything in the template, including extended fields. $e_event->trigger('userpartial', array_merge($allData['data'],$eufVals['data'])); // New trigger - send everything in the template, including extended fields. @@ -749,7 +743,13 @@ function headerjs() } -// Create the email to send. $userInfo is the array of DB variables +/** + * Create email to send to user who just registered. + * + * @param array $userInfo is the array of user-related DB variables + * + * @return array of data for mailer - field names directly compatible + */ function render_email($userInfo, $preview = FALSE) { // 1 = Body @@ -767,69 +767,74 @@ function render_email($userInfo, $preview = FALSE) $userInfo['user_sess'] = "1234567890ABCDEFGHIJKLMNOP"; } - define("RETURNADDRESS", (substr(SITEURL, -1) == "/" ? SITEURL."signup.php?activate.".$userInfo['user_id'].".".$userInfo['user_sess'] : SITEURL."/signup.php?activate.".$userInfo['user_id'].".".$userInfo['user_sess'].".".e_LAN)); - $pass_show = ($pref['user_reg_secureveri'])? "*******" : $userInfo['user_password']; + define('RETURNADDRESS', (substr(SITEURL, -1) == "/" ? SITEURL."signup.php?activate.".$userInfo['user_id'].".".$userInfo['user_sess'] : SITEURL."/signup.php?activate.".$userInfo['user_id'].".".$userInfo['user_sess'].".".e_LAN)); + $pass_show = ($pref['user_reg_secureveri'])? '*******' : $userInfo['user_password']; - if (file_exists(THEME."email_template.php")) + if (file_exists(THEME.'email_template.php')) { - require_once(THEME."email_template.php"); + require_once(THEME.'email_template.php'); } else { - require_once(e_THEME."templates/email_template.php"); + require_once(e_THEME.'templates/email_template.php'); } - $inline_images = explode(",",$SIGNUPEMAIL_IMAGES); - if($SIGNUPEMAIL_BACKGROUNDIMAGE) + /* Inline images now handled automatically - just include in email template with an absolute link + $inlineImages = array(); + $inlineImages = explode(",",$SIGNUPEMAIL_IMAGES); + if (vartrue($SIGNUPEMAIL_BACKGROUNDIMAGE)) { - $inline_images[] = $SIGNUPEMAIL_BACKGROUNDIMAGE; + $inlineImages[] = $SIGNUPEMAIL_BACKGROUNDIMAGE; } + if (count($inlineImages)) { $ret['mail_inline_images'] = implode(",",$inlineImages); } + */ - $ret['userid'] = $userInfo['user_id']; - $ret['cc'] = $SIGNUPEMAIL_CC; - $ret['bcc'] = $SIGNUPEMAIL_BCC; - $ret['attachments'] = $SIGNUPEMAIL_ATTACHMENTS; - $ret['inline-images'] = implode(",",$inline_images); + $ret['mail_recipient_id'] = $userInfo['user_id']; + if (vartrue($SIGNUPEMAIL_CC)) { $ret['mail_copy_to'] = $SIGNUPEMAIL_CC; } + if (vartrue($SIGNUPEMAIL_BCC)) { $ret['mail_bcopy_to'] = $SIGNUPEMAIL_BCC; } + if (vartrue($SIGNUPEMAIL_ATTACHMENTS)) { $ret['mail_attach'] = $SIGNUPEMAIL_ATTACHMENTS; } - $style = ($SIGNUPEMAIL_LINKSTYLE) ? "style='$SIGNUPEMAIL_LINKSTYLE'" : ""; + $style = ($SIGNUPEMAIL_LINKSTYLE) ? "style='{$SIGNUPEMAIL_LINKSTYLE}'" : ""; - $search[0] = "{LOGINNAME}"; + $search[0] = '{LOGINNAME}'; $replace[0] = $userInfo['user_loginname']; - $search[1] = "{PASSWORD}"; + $search[1] = '{PASSWORD}'; $replace[1] = $pass_show; - $search[2] = "{ACTIVATION_LINK}"; + $search[2] = '{ACTIVATION_LINK}'; $replace[2] = "".RETURNADDRESS.""; - $search[3] = "{SITENAME}"; + $search[3] = '{SITENAME}'; $replace[3] = SITENAME; - $search[4] = "{SITEURL}"; + $search[4] = '{SITEURL}'; $replace[4] = "".SITEURL.""; - $search[5] = "{USERNAME}"; + $search[5] = '{USERNAME}'; $replace[5] = $userInfo['user_name']; - $search[6] = "{USERURL}"; + $search[6] = '{USERURL}'; $replace[6] = varsettrue($userInfo['user_website']) ? $userInfo['user_website'] : ""; + /* Inline images now handled automatically - just include in email template with an absolute link $cnt=1; - - foreach($inline_images as $img) + foreach($inlineImages as $img) { - if(is_readable($inline_images[$cnt-1])) + if(is_readable($inlineImages[$cnt-1])) { $cid_search[] = "{IMAGE".$cnt."}"; - $cid_replace[] = "\"".SITENAME."\"\n"; + $cid_replace[] = "\"".SITENAME."\"\n"; $path_search[] = "{IMAGE".$cnt."}"; - $path_replace[] = "\"".SITENAME."\"\n"; + $path_replace[] = "\"".SITENAME."\"\n"; } $cnt++; } + */ $subject = str_replace($search,$replace,$SIGNUPEMAIL_SUBJECT); - $ret['subject'] = $subject; + $ret['mail_subject'] = $subject; + $ret['send_html'] = TRUE; $HEAD = "\n"; $HEAD .= "\n"; @@ -843,9 +848,9 @@ function render_email($userInfo, $preview = FALSE) } $HEAD .= "\n"; - if($SIGNUPEMAIL_BACKGROUNDIMAGE) + if(vartrue($SIGNUPEMAIL_BACKGROUNDIMAGE)) { - $HEAD .= "\n"; + $HEAD .= "\n"; } else { @@ -853,16 +858,14 @@ function render_email($userInfo, $preview = FALSE) } $FOOT = "\n\n\n"; - $SIGNUPEMAIL_TEMPLATE = $HEAD.$SIGNUPEMAIL_TEMPLATE.$FOOT; - $message = str_replace($search,$replace,$SIGNUPEMAIL_TEMPLATE); - - $ret['message'] = str_replace($cid_search,$cid_replace,$message); - $ret['preview'] = str_replace($path_search,$path_replace,$message); + $ret['mail_body'] = str_replace($search,$replace,$HEAD.$SIGNUPEMAIL_TEMPLATE.$FOOT); + $ret['preview'] = $ret['mail_body']; // Non-standard field return $ret; } + function render_after_signup($error_message) { global $pref, $allData, $adviseLoginName, $tp; diff --git a/usersettings.php b/usersettings.php index 07202974a..5dd23fcc2 100644 --- a/usersettings.php +++ b/usersettings.php @@ -9,9 +9,9 @@ * User settings modify * * $Source: /cvs_backup/e107_0.8/usersettings.php,v $ - * $Revision: 1.43 $ - * $Date: 2009-11-18 01:04:24 $ - * $Author: e107coders $ + * $Revision: 1.44 $ + * $Date: 2009-11-18 20:45:20 $ + * $Author: e107steved $ * */ /* @@ -234,7 +234,7 @@ if (isset($_POST['updatesettings'])) $changedEUFData = array(); if (isset($_POST['ue'])) { - $eufVals = $ue->userExtendedValidateAll($_POST['ue'], varset($_POST['hide'],array())); // Validate the extended user fields + $eufVals = $ue->userExtendedValidateAll($_POST['ue'], varset($_POST['hide'],TRUE)); // Validate the extended user fields $changedEUFData['data'] = validatorClass::findChanges($eufVals['data'], $udata,FALSE); }