Subversion Repositories Applications.papyrus

Compare Revisions

Ignore whitespace Rev 1976 → Rev 1977

/tags/v2.0-narmer/client/phorum/bibliotheque/phorum/include/email_functions.php
New file
0,0 → 1,236
<?php
 
////////////////////////////////////////////////////////////////////////////////
// //
// Copyright (C) 2006 Phorum Development Team //
// http://www.phorum.org //
// //
// This program is free software. You can redistribute it and/or modify //
// it under the terms of either the current Phorum License (viewable at //
// phorum.org) or the Phorum License that was distributed with this file //
// //
// This program is distributed in the hope that it will be useful, //
// but WITHOUT ANY WARRANTY, without even the implied warranty of //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. //
// //
// You should have received a copy of the Phorum License //
// along with this program. //
////////////////////////////////////////////////////////////////////////////////
 
if(!defined("PHORUM")) return;
 
function phorum_valid_email($email){
$PHORUM = $GLOBALS["PHORUM"];
 
$ret = false;
 
$email = trim($email);
 
if(preg_match('/^([a-z0-9\!\#\$\%\&\'\*\+\-\/\=\?\^\_\`\{\|\}\~]+(\.[a-z0-9\!\#\$\%\&\'\*\+\-\/\=\?\^\_\`\{\|\}\~]+)*)@(((([-a-z0-9]*[a-z0-9])?)|(#[0-9]+)|(\[((([01]?[0-9]{0,2})|(2(([0-4][0-9])|(5[0-5]))))\.){3}(([01]?[0-9]{0,2})|(2(([0-4][0-9])|(5[0-5]))))\]))\.)*((([-a-z0-9]*[a-z0-9])?)|(#[0-9]+)|(\[((([01]?[0-9]{0,2})|(2(([0-4][0-9])|(5[0-5]))))\.){3}(([01]?[0-9]{0,2})|(2(([0-4][0-9])|(5[0-5]))))\]))$/i', $email)){
if(!$PHORUM["dns_lookup"]){
// format is valid
// don't look up mail server
$ret = true;
}else{
// get the domain name from the mail address
$fulldomain = substr(strstr($email, "@"), 1).".";
 
// check if a mailserver exists for the domain
if(function_exists('checkdnsrr') && checkdnsrr($fulldomain, "MX")) {
$ret = true;
}
 
// some hosts don't have an MX record, but accept mail themselves
if(!$ret){
// default timeout of 60 seconds makes the user way too long
// in case of problems.
ini_set('default_socket_timeout', 10);
if(@fsockopen($fulldomain, 25)){
$ret = true;
}
}
}
}
 
return $ret;
}
 
/**
* function for sending email to users, gets addresses-array and data-array
*/
function phorum_email_user($addresses, $data)
{
$PHORUM = $GLOBALS['PHORUM'];
 
$mailmessage = $data['mailmessage'];
unset($data['mailmessage']);
$mailsubject = $data['mailsubject'];
unset($data['mailsubject']);
 
if(is_array($data) && count($data)) {
foreach(array_keys($data) as $key){
$mailmessage = str_replace("%$key%", $data[$key], $mailmessage);
$mailsubject = str_replace("%$key%", $data[$key], $mailsubject);
}
}
 
$num_addresses = count($addresses);
$from_address = "\"".$PHORUM['system_email_from_name']."\" <".$PHORUM['system_email_from_address'].">";
 
$hook_data = array(
'addresses' => $addresses,
'from' => $from_address,
'subject' => $mailsubject,
'body' => $mailmessage,
'bcc' => $PHORUM['use_bcc']
);
 
$send_messages = phorum_hook("send_mail", $hook_data);
 
if(isset($data["msgid"])){
$msgid="\nMessage-ID: {$data['msgid']}";
} else {
$msgid="";
}
 
if($send_messages != 0 && $num_addresses > 0){
$phorum_major_version = substr(PHORUM, 0, strpos(PHORUM, '.'));
$mailer = "Phorum" . $phorum_major_version;
$mailheader ="Content-Type: text/plain; charset={$PHORUM["DATA"]["CHARSET"]}\nContent-Transfer-Encoding: {$PHORUM["DATA"]["MAILENCODING"]}\nX-Mailer: $mailer$msgid\n";
 
if(isset($PHORUM['use_bcc']) && $PHORUM['use_bcc'] && $num_addresses > 3){
mail(" ", $mailsubject, $mailmessage, $mailheader."From: $from_address\nBCC: " . implode(",", $addresses));
} else {
foreach($addresses as $address){
mail($address, $mailsubject, $mailmessage, $mailheader."From: $from_address");
}
}
}
 
return $num_addresses;
}
 
function phorum_email_pm_notice($message, $langusers)
{
$mail_data = array(
"pm_message_id" => $message["pm_message_id"],
"author" => $message["from_username"],
"subject" => $message["subject"],
"full_body" => $message["message"],
"plain_body" => wordwrap(phorum_strip_body($message["message"]),72),
"read_url" => phorum_get_url(PHORUM_PM_URL, "page=read", "pm_id=" . $message["pm_message_id"]),
);
 
if (isset($_POST[PHORUM_SESSION_LONG_TERM])) {
// strip any auth info from the read url
$mail_data["read_url"] = preg_replace("!,{0,1}" . PHORUM_SESSION_LONG_TERM . "=" . urlencode($_POST[PHORUM_SESSION_LONG_TERM]) . "!", "", $mail_data["read_url"]);
}
 
foreach ($langusers as $language => $users)
{
$PHORUM = $GLOBALS["PHORUM"];
 
if ( file_exists( "./include/lang/$language.php" ) ) {
include( "./include/lang/$language.php" );
} else {
include("./include/lang/{$PHORUM['language']}.php");
}
 
$mail_data["mailmessage"] = $PHORUM["DATA"]["LANG"]['PMNotifyMessage'];
$mail_data["mailsubject"] = $PHORUM["DATA"]["LANG"]['PMNotifySubject'];
 
$addresses = array();
foreach ($users as $user) {
$addresses[] = $user["email"];
}
 
phorum_email_user($addresses, $mail_data);
}
}
 
function phorum_email_notice($message)
{
$PHORUM=$GLOBALS["PHORUM"];
 
// do we allow email-notification for that forum?
if(!$PHORUM['allow_email_notify']) {
return;
}
 
include_once("./include/format_functions.php");
 
$mail_users_full = phorum_db_get_subscribed_users($PHORUM['forum_id'], $message['thread'], PHORUM_SUBSCRIPTION_MESSAGE);
 
if (count($mail_users_full)) {
$mail_data = array(
"forumname" => strip_tags($PHORUM["DATA"]["NAME"]),
"forum_id" => $PHORUM['forum_id'],
"message_id" => $message['message_id'],
"author" => $message['author'],
"subject" => $message['subject'],
"full_body" => $message['body'],
"plain_body" => phorum_strip_body($message['body']),
"read_url" => phorum_get_url(PHORUM_READ_URL, $message['thread'], $message['message_id']),
"remove_url" => phorum_get_url(PHORUM_FOLLOW_URL, $message['thread'], "remove=1"),
"noemail_url" => phorum_get_url(PHORUM_FOLLOW_URL, $message['thread'], "noemail=1"),
"followed_threads_url" => phorum_get_url(PHORUM_CONTROLCENTER_URL, "panel=" . PHORUM_CC_SUBSCRIPTION_THREADS),
"msgid" => $message["msgid"]
);
if (isset($_POST[PHORUM_SESSION_LONG_TERM])) {
// strip any auth info from the read url
$mail_data["read_url"] = preg_replace("!,{0,1}" . PHORUM_SESSION_LONG_TERM . "=" . urlencode($_POST[PHORUM_SESSION_LONG_TERM]) . "!", "", $mail_data["read_url"]);
$mail_data["remove_url"] = preg_replace("!,{0,1}" . PHORUM_SESSION_LONG_TERM . "=" . urlencode($_POST[PHORUM_SESSION_LONG_TERM]) . "!", "", $mail_data["remove_url"]);
$mail_data["noemail_url"] = preg_replace("!,{0,1}" . PHORUM_SESSION_LONG_TERM . "=" . urlencode($_POST[PHORUM_SESSION_LONG_TERM]) . "!", "", $mail_data["noemail_url"]);
$mail_data["followed_threads_url"] = preg_replace("!,{0,1}" . PHORUM_SESSION_LONG_TERM . "=" . urlencode($_POST[PHORUM_SESSION_LONG_TERM]) . "!", "", $mail_data["followed_threads_url"]);
}
// go through the user-languages and send mail with their set lang
foreach($mail_users_full as $language => $mail_users) {
if ( file_exists( "./include/lang/$language.php" ) ) {
include( "./include/lang/$language.php" );
} else {
include("./include/lang/{$PHORUM['language']}.php");
}
$mail_data["mailmessage"] = $PHORUM["DATA"]["LANG"]['NewReplyMessage'];
$mail_data["mailsubject"] = $PHORUM["DATA"]["LANG"]['NewReplySubject'];
phorum_email_user($mail_users, $mail_data);
 
}
}
}
 
function phorum_email_moderators($message)
{
$PHORUM=$GLOBALS["PHORUM"];
 
$mail_users = phorum_user_get_moderators($PHORUM['forum_id'],false,true);
 
if (count($mail_users)) {
include_once("./include/format_functions.php");
if($message["status"] > 0) { // just notification of a new message
$mailtext = $PHORUM["DATA"]["LANG"]['NewUnModeratedMessage'];
} else { // posts needing approval
$mailtext = $PHORUM["DATA"]["LANG"]['NewModeratedMessage'];
}
$mail_data = array(
"mailmessage" => $mailtext,
"mailsubject" => $PHORUM["DATA"]["LANG"]['NewModeratedSubject'],
"forumname" => strip_tags($PHORUM["DATA"]["NAME"]),
"forum_id" => $PHORUM['forum_id'],
"message_id" => $message['message_id'],
"author" => $message['author'],
"subject" => $message['subject'],
"full_body" => $message['body'],
"plain_body" => phorum_strip_body($message['body']),
"approve_url" => phorum_get_url(PHORUM_PREPOST_URL),
"read_url" => phorum_get_url(PHORUM_READ_URL, $message['thread'], $message['message_id'])
);
if (isset($_POST[PHORUM_SESSION_LONG_TERM])) {
// strip any auth info from the read url
$mail_data["read_url"] = preg_replace("!,{0,1}" . PHORUM_SESSION_LONG_TERM . "=" . urlencode($_POST[PHORUM_SESSION_LONG_TERM]) . "!", "", $mail_data["read_url"]);
$mail_data["approve_url"] = preg_replace("!,{0,1}" . PHORUM_SESSION_LONG_TERM . "=" . urlencode($_POST[PHORUM_SESSION_LONG_TERM]) . "!", "", $mail_data["approve_url"]);
}
phorum_email_user($mail_users, $mail_data);
}
}
 
?>