2004-11-18 20:01:12 +00:00
< ? php
require_once ( " ../inc/util.inc " );
require_once ( " ../project/project.inc " );
2006-05-09 18:25:15 +00:00
$config = get_config ();
$master_url = parse_config ( $config , " <master_url> " );
2006-06-16 23:53:56 +00:00
// Determine if phpmailer is installed and to be used (defined in project.inc)
2005-10-01 17:34:09 +00:00
if ( isset ( $USE_PHPMAILER )) {
2005-09-30 06:17:43 +00:00
if ( $USE_PHPMAILER ) {
require_once ( " ../inc/phpmailer/class.phpmailer.php " );
}
} else {
$USE_PHPMAILER = false ;
2005-08-29 23:51:38 +00:00
}
2006-06-16 23:53:56 +00:00
/**
* Function sends an email , either using PHPMailer or not .
**/
2005-08-29 23:51:38 +00:00
function send_email ( $user , $subject , $body ) {
global $USE_PHPMAILER ;
global $PHPMAILER_HOST ;
global $PHPMAILER_MAILER ;
if ( $USE_PHPMAILER ) {
$mail = new PHPMailer ();
$mail -> AddAddress ( $user -> email_addr , $user -> name );
$mail -> Subject = $subject ;
$mail -> Body = $body ;
$mail -> From = EMAIL_FROM ;
$mail -> FromName = EMAIL_FROM ;
$mail -> Host = $PHPMAILER_HOST ;
$mail -> Mailer = $PHPMAILER_MAILER ;
return $mail -> Send ();
} else {
if ( defined ( 'EMAIL_FROM' )) {
$headers = " From: " . EMAIL_FROM ;
} else {
$headers = " " ;
}
return mail ( $user -> email_addr , $subject , $body , $headers );
}
}
2005-12-19 07:42:40 +00:00
2006-06-16 23:53:56 +00:00
/**
* Send mail using the new User object style
**/
function re_send_email ( $user , $subject , $body ) {
global $USE_PHPMAILER ;
global $PHPMAILER_HOST ;
global $PHPMAILER_MAILER ;
if ( $USE_PHPMAILER ) {
$mail = new PHPMailer ();
$mail -> AddAddress ( $user -> getEmail (), $user -> getName ());
$mail -> Subject = $subject ;
$mail -> Body = $body ;
$mail -> From = EMAIL_FROM ;
$mail -> FromName = EMAIL_FROM ;
$mail -> Host = $PHPMAILER_HOST ;
$mail -> Mailer = $PHPMAILER_MAILER ;
return $mail -> Send ();
} else {
if ( defined ( 'EMAIL_FROM' )) {
$headers = " From: " . EMAIL_FROM ;
} else {
$headers = " " ;
}
return mail ( $user -> getEmail (), $subject , $body , $headers );
}
}
2005-12-19 07:42:40 +00:00
function send_verify_email ( $old , $new , $user ) {
$x = md5 ( $new . $user -> authenticator );
mail (
$new ,
PROJECT . " account email change " ,
" The email address of your " . PROJECT . " account has been changed from $old to $new .
To validate the new address , visit the URL :
" .URL_BASE. " validate_email . php ? u = $user -> id & x = $x
"
);
}
2006-06-16 23:53:56 +00:00
/**
* Send a link to a user that makes it possible for the user to validate the email address
* This function uses the new User object style
**/
function send_verifier ( $user ) {
$x = md5 ( $user -> getEmail () . $user -> getAuthenticator ());
re_send_email (
$user ,
PROJECT . " email verification " ,
" You have requested to validate the email address you have registered with " . PROJECT .
" .
To validate the address , please visit the URL :
" .URL_BASE. " validate_email . php ? u = " . $user->getID (). " & x = $x
"
);
}
/**
* Send an email describing an account to the user .
* There are a few scenarios :
*
* 1 ) the account was created by user via web .
* In this case they ' re currently looking at the " validate account " page
* ( account_created . php ), although they might have strayed
* so we need to give them a link .
* 2 ) the account was created administratively
* 3 ) the user requested account key for existing account
**/
2005-08-26 22:26:26 +00:00
function send_auth_email ( $user , $is_new ) {
2006-05-09 18:25:15 +00:00
global $master_url ;
2004-12-06 22:41:19 +00:00
$body = " " ;
if ( $is_new ) {
$subject = PROJECT . " account confirmation for $user->name " ;
$body = " Welcome to " . PROJECT . " .
This email confirms your account with " .PROJECT. " :
2006-05-09 18:25:15 +00:00
Project URL : $master_url
2004-12-06 22:41:19 +00:00
Account Key : $user -> authenticator
2004-11-18 20:01:12 +00:00
User name : $user -> name
2004-12-06 22:41:19 +00:00
E - mail : $user -> email_addr
" ;
} else {
$subject = PROJECT . " information for $user->name " ;
$body = " Your " . PROJECT . " account information is:
2006-05-09 18:25:15 +00:00
Project URL : $master_url
2004-12-08 07:03:43 +00:00
Account Key : $user -> authenticator
2004-11-18 20:01:12 +00:00
2004-12-06 22:41:19 +00:00
User name : $user -> name
E - mail : $user -> email_addr
" ;
}
2004-11-18 20:01:12 +00:00
2004-12-06 22:41:19 +00:00
$body .= "
2004-11-18 20:01:12 +00:00
2006-05-09 18:25:15 +00:00
For further information and assistance with " .PROJECT. " go to $master_url
2004-11-18 20:01:12 +00:00
" ;
2005-08-29 23:51:38 +00:00
return send_email ( $user , $subject , $body );
2004-11-18 20:01:12 +00:00
}
2006-06-16 23:53:56 +00:00
/**
* Function simply outputs some text letting the user know
* their authenticator was emailed to them .
**/
2004-11-18 20:01:12 +00:00
function email_sent_message ( $email_addr ) {
if ( defined ( 'EMAIL_FROM' )) {
$email_from = EMAIL_FROM ;
} else {
$email_from = URL_BASE ;
}
echo "
2004-12-06 22:41:19 +00:00
Your Account Key has been emailed to $email_addr .
2004-11-18 20:01:12 +00:00
< p >
If the email doesn ' t arrive in a few minutes ,
your ISP may be blocking it as spam .
In this case please contact your ISP and
ask them to not block email from $email_from .
" ;
}
2006-06-16 23:53:56 +00:00
/** a valid email address is of the form A @ B . C
* where A , B , C are nonempty ,
* A and B don ' t contain @ or . ,
* and C doesn ' t contain @ ( but can contain . )
**/
// TODO: Replace this with some regex. Please.
2004-11-18 20:01:12 +00:00
function is_valid_email_addr ( $addr ) {
$x = strstr ( $addr , " @ " );
if ( ! $x ) return false ;
if ( strlen ( $x ) == strlen ( $addr )) return false ;
$x = substr ( $x , 1 );
if ( strstr ( $x , " @ " )) return false ;
$y = strstr ( $x , " . " );
if ( ! $y ) return false ;
if ( strlen ( $y ) == strlen ( $x )) return false ;
if ( strlen ( $y ) == 1 ) return false ;
return true ;
}
2005-03-24 19:02:27 +00:00
2006-06-16 23:53:56 +00:00
/**
* If a post is hidden , this function emails the author
* to let them know what happened .
**/
function send_moderation_email ( $post , $message ) {
2006-05-09 18:25:15 +00:00
global $master_url ;
2005-01-18 13:00:38 +00:00
$body = " " ;
2006-06-16 23:53:56 +00:00
$thread = $post -> getThread ();
2005-01-18 13:00:38 +00:00
$subject = PROJECT . " forum moderation notice for $user->name " ;
$body = PROJECT . " notification:
This email is sent to inform you that one of your posts in the forum has been affected by moderation in " .PROJECT. " :
2006-06-16 23:53:56 +00:00
Thread : " . $thread->getTitle (). "
Link : " . $master_url . " / forum_thread . php ? id = " . $thread->getID (). "
2005-01-18 13:00:38 +00:00
The moderator gave this explanation to why your post was moderated :
" . $message ;
$body .= "
This was the contents of your post :
2006-06-16 23:53:56 +00:00
" . $post->getContent (). "
2005-01-18 13:00:38 +00:00
2006-06-16 23:53:56 +00:00
For further information and assistance with " .PROJECT. " go to " . $master_url ;
return send_email ( $post -> getOwner (), $subject , $body );
2005-01-18 13:00:38 +00:00
}
2006-06-16 23:53:56 +00:00
/**
* If an entire thread is hidden , this function emails the owner
* to let them know what happened .
*/
function send_thread_moderation_email ( $thread , $message ) {
2006-05-09 18:25:15 +00:00
global $master_url ;
2006-06-16 23:53:56 +00:00
$user = $thread -> getOwner ();
2005-02-12 09:50:13 +00:00
$body = " " ;
$subject = PROJECT . " forum moderation notice for $user->name " ;
$body = PROJECT . " notification:
This email is sent to inform you that one of your threads in the forum has been affected by moderation in " .PROJECT. " :
2006-06-16 23:53:56 +00:00
Thread : " . $thread->getTitle (). "
Link : " . $master_url . " / forum_thread . php ? id = " . $thread->getID (). "
2005-02-12 09:50:13 +00:00
The moderator gave this explanation to why your thread was moderated :
" . $message ;
$body .= "
2006-06-16 23:53:56 +00:00
For further information and assistance with " .PROJECT. " go to " . $master_url ;
2005-08-29 23:51:38 +00:00
return send_email ( $user , $subject , $body );
2005-02-12 09:50:13 +00:00
}
2005-01-18 13:00:38 +00:00
2006-06-16 23:53:56 +00:00
/**
* If a user is subscribed to a thread that is replied to , this
* function sends them an email notifying them of the reply .
**/
function send_reply_notification_email ( $thread , $user ){
$title = PROJECT . " : A user has posted to ' " . stripslashes ( $thread -> getTitle ()) . " ' " ;
$link = URL_BASE . " forum_thread.php?id= " . $thread -> getID ();
$body = " Another " . PROJECT . " user has posted to the thread \" " . stripslashes ( $thread -> getTitle ()) . " \" . \n "
. " To view the updated thread, visit the following URL: \n \n $link " ;
return re_send_email ( $user , $title , $body );
}
/**
* If a user ' s host is identified as causing problems , this email is sent
* to the owner to let them know .
**/
2005-04-18 18:26:14 +00:00
function send_problem_email ( $user , $host ) {
2006-05-09 18:25:15 +00:00
global $master_url ;
2005-04-18 18:26:14 +00:00
$body = " " ;
2006-06-16 23:53:56 +00:00
2005-04-18 18:26:14 +00:00
$host_content = " ID: " . $host -> id . "
Created : " .time_str( $host->create_time ). "
Venue : " . $host->venue . "
Total credit : " . $host->total_credit . "
Average credit : " . $host->expavg_credit . "
Average update time : " .time_str( $host->expavg_time ). "
IP address : $host -> last_ip_addr ( same the last $host -> nsame_ip_addr times )
Domain name : " . $host->domain_name ;
$x = $host -> timezone / 3600 ;
2005-05-05 05:06:16 +00:00
if ( $x >= 0 ) $x = " + $x " ;
2005-04-18 18:26:14 +00:00
$host_content .= "
2005-05-05 05:06:16 +00:00
Local Time = UTC $x hours
2005-04-18 18:26:14 +00:00
Number of CPUs : " . $host->p_ncpus . "
CPU : $host -> p_vendor $host -> p_model
FP ops / sec : " . $host->p_fpops . "
Int ops / sec : " . $host->p_iops . "
memory bandwidth : " . $host->p_membw . "
Operating System : $host -> os_name $host -> os_version " ;
$x = $host -> m_nbytes / ( 1024 * 1024 );
$y = round ( $x , 2 );
$host_content .= "
Memory : $y MB " ;
$x = $host -> m_cache / 1024 ;
$y = round ( $x , 2 );
$host_content .= "
Cache : $y KB " ;
$x = $host -> m_swap / ( 1024 * 1024 );
$y = round ( $x , 2 );
$host_content .= "
Swap Space : $y MB " ;
$x = $host -> d_total / ( 1024 * 1024 * 1024 );
$y = round ( $x , 2 );
$host_content .= "
Total Disk Space : $y GB " ;
$x = $host -> d_free / ( 1024 * 1024 * 1024 );
$y = round ( $x , 2 );
$host_content .= "
Free Disk Space : $y GB
Avg network bandwidth ( upstream ) : $host -> n_bwup bytes / sec
Avg network bandwidth ( downstream ) : $host -> n_bwdown bytes / sec " ;
$x = $host -> avg_turnaround / 86400 ;
$host_content .= "
Average turnaround : " .round( $x , 2). " days
Number of RPCs : $host -> rpc_seqno
Last RPC : " .time_str( $host->rpc_time ). "
% of time client on : " . 100* $host->on_frac . " %
% of time host connected : " . 100* $host->connected_frac . " %
% of time user active : " . 100* $host->active_frac . " %
# of results today: " . $host->nresults_today;
$subject = PROJECT . " notice for $user->name " ;
$body = PROJECT . " notification:
Dear $user -> name
Your machine ( host # $host->id) described below appears to have a misconfigured BOINC
installation . Could you please have a look at it ?
Sincerely ,
2006-06-16 23:53:56 +00:00
The " . PROJECT. " team
2005-04-18 18:26:14 +00:00
" ;
$body .= "
This is the content of our database :
" . $host_content . "
2006-05-09 18:25:15 +00:00
For further information and assistance with " .PROJECT. " go to $master_url " ;
2005-04-18 18:26:14 +00:00
echo nl2br ( $body ) . " <br><br> " ;
2005-08-29 23:51:38 +00:00
return send_email ( $user , $subject , $body );
2005-04-18 18:26:14 +00:00
}
2005-01-18 13:00:38 +00:00
2006-06-16 23:53:56 +00:00
/**
* When a user clicks the red " x " to notify moderators about a post ,
* this function generates the email to let the moderators know about
* it .
**/
2005-10-01 11:11:53 +00:00
function send_report_post_email ( $user , $thread , $post , $message ) {
2006-05-09 18:25:15 +00:00
global $master_url ;
2005-10-01 11:11:53 +00:00
global $forum_post_reporting_admin ;
$body = " " ;
2006-06-16 23:53:56 +00:00
$subject = PROJECT . " post in ' " . $thread -> getTitle () . " ' reported as offensive " ;
2005-10-01 11:11:53 +00:00
$body = PROJECT . " notification:
This email is sent to inform you that one of the posts in the forum was reported as offensive in " .PROJECT. " :
2006-06-16 23:53:56 +00:00
Thread : " . $thread->getTitle (). "
Post : " . $post->getID (). "
Link : $master_url / forum_thread . php ? id = " . $thread->getID (). " #".$post->getID()."
2005-10-01 11:11:53 +00:00
The reporting user gave this explanation to why the post was reported :
" . $message . "
This was the contents of the post :
2006-06-16 23:53:56 +00:00
" . $post->getContent (). "
2005-10-01 11:11:53 +00:00
2006-05-09 18:25:15 +00:00
For further information and assistance with " .PROJECT. " go to $master_url " ;
2005-10-01 11:11:53 +00:00
//Security check, do we have an admin?
if ( ! $forum_post_reporting_admin ) error_page ( " This project has not yet defined an administrator to handle this kind of forum reports. Please contact the project and tell them to add this information in their html/project/project.inc file " );
return send_email ( $forum_post_reporting_admin , $subject , $body );
}
2004-11-18 20:01:12 +00:00
?>