diff options
author | rub <rub@piwigo.org> | 2007-02-14 22:53:04 +0000 |
---|---|---|
committer | rub <rub@piwigo.org> | 2007-02-14 22:53:04 +0000 |
commit | bb7899060119334c8a6feb2eaa63f6276f2da306 (patch) | |
tree | 94b0106214554f4a38ba86a2fbb167de09d5cc92 | |
parent | aabdb3e9295474760b2d3fd5d76d2c235970fe16 (diff) |
My last improvements before 1.7.0RC1.
Can include Cc & Bcc on mail.
Send mail to all administrators on new comment or new users.
Add validate link on new comment mail.
Try to detect if the NBM complementary content is HTML or plain text. With plain text, this content is convert to readable HTML.
git-svn-id: http://piwigo.org/svn/trunk@1818 68402e56-0260-453c-a942-63ccdbb3a9ee
-rw-r--r-- | admin/notification_by_mail.php | 17 | ||||
-rw-r--r-- | include/functions_mail.inc.php | 79 | ||||
-rw-r--r-- | include/picture_comment.inc.php | 14 | ||||
-rw-r--r-- | register.php | 7 |
4 files changed, 92 insertions, 25 deletions
diff --git a/admin/notification_by_mail.php b/admin/notification_by_mail.php index 33e5f59dd..738623b19 100644 --- a/admin/notification_by_mail.php +++ b/admin/notification_by_mail.php @@ -226,11 +226,6 @@ function do_action_send_mail_notification($action = 'list_to_send', $check_key_l $is_action_send = ($action == 'send'); - if (!isset($customize_mail_content)) - { - $customize_mail_content = $conf['nbm_complementary_mail_content']; - } - // disabled and null mail_address are not selected in the list $data_users = get_user_notifications('send', $check_key_list); @@ -244,6 +239,18 @@ function do_action_send_mail_notification($action = 'list_to_send', $check_key_l { $datas = array(); + if (!isset($customize_mail_content)) + { + $customize_mail_content = $conf['nbm_complementary_mail_content']; + } + + if ($conf['nbm_send_html_mail'] and !(strpos($customize_mail_content, '<') === 0)) + { + // On HTML mail, detects if the content are HTML format. + // If it's plain text format, convert content to readable HTML + $customize_mail_content = nl2br(htmlentities($customize_mail_content)); + } + // Prepare message after change language if ($is_action_send) { diff --git a/include/functions_mail.inc.php b/include/functions_mail.inc.php index d534c073b..f26af9a83 100644 --- a/include/functions_mail.inc.php +++ b/include/functions_mail.inc.php @@ -3,7 +3,7 @@ // | PhpWebGallery - a PHP based picture gallery | // | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net | // | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net | -// | Copyright (C) 2006 Ruben ARNAUD - team@phpwebgallery.net | +// | Copyright (C) 2006-2007 Ruben ARNAUD - team@phpwebgallery.net | // +-----------------------------------------------------------------------+ // | branch : BSF (Best So Far) // | file : $RCSfile$ @@ -26,12 +26,6 @@ // | USA. | // +-----------------------------------------------------------------------+ -/** - * - Extract mail fonctions of password.php - * - Modify pwg_mail (add pararameters + news fonctionnalities) - * - Var conf_mail, function get_mail_configuration, format_email, pwg_mail - */ - // +-----------------------------------------------------------------------+ // | functions | // +-----------------------------------------------------------------------+ @@ -99,7 +93,7 @@ function format_email($name, $email) } /**
- * Return an completed array template/theme
+ * Returns an completed array template/theme
* completed with $conf['default_template']
*
* @params:
@@ -161,12 +155,55 @@ function get_str_email_format($is_html) }
/** + * Returns email of all administrator + * + * @return string + */ +function get_administrators_email() +{ + global $conf; + + $result = array(); + + $query = ' +select + U.'.$conf['user_fields']['username'].' as username, + U.'.$conf['user_fields']['email'].' as mail_address +from + '.USERS_TABLE.' as U, + '.USER_INFOS_TABLE.' as I +where + I.user_id = U.'.$conf['user_fields']['id'].' and + I.status in (\'webmaster\', \'admin\') and + '.$conf['user_fields']['email'].' is not null +order by + username +'; + + $datas = pwg_query($query); + if (!empty($datas)) + { + while ($admin = mysql_fetch_array($datas)) + { + if (!empty($admin['mail_address'])) + { + array_push($result, format_email($admin['username'], $admin['mail_address'])); + } + } + } + + return $result; +} + +/** * sends an email, using PhpWebGallery specific informations * * @param: * - to: Receiver, or receivers of the mail. * - args: function params of mail function: - * o from: sender [default value webmaster email] + * o from: sender [default value webmaster email]
+ * o Cc: array of carbon copy receivers of the mail. [default value empty]
+ * o Bcc: array of blind carbon copy receivers of the mail. [default value empty]
* o subject [default value 'PhpWebGallery'] * o content: content of mail [default value ''] * o content_format: format of mail content [default value 'text/plain'] @@ -174,7 +211,6 @@ function get_str_email_format($is_html) * o template: template to use [default $conf['default_template']]
* o theme: template to use [default $conf['default_template']]
*/
-//function pwg_mail($to, $from = '', $subject = 'PhpWebGallery', $infos = '', $infos_format = 'text/plain', $email_format = null) function pwg_mail($to, $args = array()) { global $conf, $conf_mail, $lang_info, $page; @@ -221,6 +257,11 @@ function pwg_mail($to, $args = array()) { $args['content_format'] = 'text/plain'; } +
+ if ($conf_mail['send_bcc_mail_webmaster'])
+ {
+ $args['Bcc'][] = $conf_mail['formated_email_webmaster'];
+ }
if (($args['content_format'] == 'text/html') and ($args['email_format'] == 'text/plain'))
{
@@ -231,17 +272,23 @@ function pwg_mail($to, $args = array()) $args = array_merge($args, get_array_template_theme($args));
$headers = 'From: '.$args['from']."\n"; - $headers.= 'Reply-To: '.$args['from']."\n"; + $headers.= 'Reply-To: '.$args['from']."\n";
+
+ if (!empty($args['Cc']))
+ {
+ $headers.= 'Cc: '.implode(',', $args['Cc'])."\n";
+ }
+
+ if (!empty($args['Bcc']))
+ {
+ $headers.= 'Bcc: '.implode(',', $args['Bcc'])."\n";
+ }
+ $headers.= 'Content-Type: multipart/alternative;'."\n"; $headers.= ' boundary="---='.$conf_mail['boundary_key'].'";'."\n"; $headers.= ' reply-type=original'."\n";
$headers.= 'MIME-Version: 1.0'."\n";
- if ($conf_mail['send_bcc_mail_webmaster']) - { - $headers.= 'Bcc: '.$conf_mail['formated_email_webmaster']."\n"; - } -
$content = '';
if (!isset($conf_mail[$args['email_format']][$lang_info['charset']][$args['template']][$args['theme']]))
diff --git a/include/picture_comment.inc.php b/include/picture_comment.inc.php index e9bad6f79..eb99f9f64 100644 --- a/include/picture_comment.inc.php +++ b/include/picture_comment.inc.php @@ -209,6 +209,7 @@ if ( $page['show_comments'] and isset( $_POST['content'] ) ) { include_once(PHPWG_ROOT_PATH.'include/functions_mail.inc.php'); + $val_url = get_absolute_root_url().'comments.php?validate='.$comm['id']; $del_url = get_absolute_root_url().'comments.php?delete='.$comm['id']; $content = @@ -216,6 +217,7 @@ if ( $page['show_comments'] and isset( $_POST['content'] ) ) .'Comment: '.$comm['content']."\n" .'IP: '.$comm['ip']."\n" .'Browser: '.$comm['agent']."\n\n" + .'Validate: '.$val_url."\n" .'Delete: '.$del_url."\n"; if ($comment_action!='validate') { @@ -223,8 +225,16 @@ if ( $page['show_comments'] and isset( $_POST['content'] ) ) 'Validate: '.get_absolute_root_url() .'comments.php?validate='.$comm['id']; } - pwg_mail(get_webmaster_mail_address(), - array('subject' => 'PWG comment by '.$comm['author'], 'content' => $content)); + pwg_mail + ( + format_email('administrators', get_webmaster_mail_address()), + array + ( + 'subject' => 'PWG comment by '.$comm['author'], + 'content' => $content, + 'Bcc' => get_administrators_email() + ) + ); } } else diff --git a/register.php b/register.php index 0d42a4795..1aeb6eb1d 100644 --- a/register.php +++ b/register.php @@ -70,11 +70,14 @@ if (isset($_POST['submit'])) .'Browser: '.$_SERVER['HTTP_USER_AGENT']."\n\n" .l10n('admin').': '.$admin_url; - pwg_mail(get_webmaster_mail_address(), + pwg_mail + ( + format_email('administrators', get_webmaster_mail_address()), array ( 'subject' => 'PWG '.l10n('register_title').' '.$username, - 'content' => $content + 'content' => $content, + 'Bcc' => get_administrators_email() ) ); } |