Difference between revisions of "Extension:FormMailer"

From Organic Design wiki
(tested and working)
Line 1: Line 1:
 
<?php
 
<?php
# Extension:FORMMAILER{{php}}{{Category:Extensions}}
+
# Extension:FORMMAILER
 
# - Licenced under LGPL (http://www.gnu.org/copyleft/lesser.html)
 
# - Licenced under LGPL (http://www.gnu.org/copyleft/lesser.html)
 
# - Author:  [http://www.organicdesign.co.nz/nad User:Nad]
 
# - Author:  [http://www.organicdesign.co.nz/nad User:Nad]
Line 8: Line 8:
 
if (!defined('MEDIAWIKI')) die('Not an entry point.');
 
if (!defined('MEDIAWIKI')) die('Not an entry point.');
  
define('FORMMAILER_VERSION','0.0.0, 2007-06-17');
+
define('FORMMAILER_VERSION','1.0.0, 2007-06-17');
  
 
# A list of email addresses which should recieve posted forms
 
# A list of email addresses which should recieve posted forms
Line 17: Line 17:
  
 
# Name of sender of forms
 
# Name of sender of forms
$wgFormMailerFrom      = "wiki@$wgServer";
+
$wgFormMailerFrom      = 'wiki@'.ereg_replace('^.+www.','',$wgServer);
  
 
# Don't post the following posted items
 
# Don't post the following posted items
Line 41: Line 41:
 
function wfSetupFormMailer() {
 
function wfSetupFormMailer() {
 
global $wgFormMailerVarName,$wgFormMailerRecipients,$wgFormMailerMessage,$wgFormMailerSubject,
 
global $wgFormMailerVarName,$wgFormMailerRecipients,$wgFormMailerMessage,$wgFormMailerSubject,
$wgFormMailerFrom,$wgFormMailerDontSend,$wgSimpleFormsRequestPrefix,$wgSiteNotice;
+
$wgFormMailerFrom,$wgFormMailerDontSend,$wgSimpleFormsRequestPrefix,$wgSiteNotice,$wgSitename;
  
 
if (isset($_REQUEST[$wgFormMailerVarName])) {
 
if (isset($_REQUEST[$wgFormMailerVarName])) {
  
 
# Construct the message
 
# Construct the message
$body = "Form posted from ".$_SERVER['REMOTE_ADDR']."\n\n";
+
$body   = "Form posted from ".$_SERVER['REMOTE_ADDR']."\n\n";
 
$message = $wgFormMailerMessage;
 
$message = $wgFormMailerMessage;
 
$subject = $wgFormMailerSubject;
 
$subject = $wgFormMailerSubject;
Line 54: Line 54:
 
elseif ($k == 'formmailer_subject') $subject = $v;
 
elseif ($k == 'formmailer_subject') $subject = $v;
 
else {
 
else {
if ($wgSimpleFormsRequestPrefix) $k = ereg_replace("^$wgSimpleFormsRequestPrefix",'',$k);
+
if ($wgSimpleFormsRequestPrefix) $k = ereg_replace("^$wgSimpleFormsRequestPrefix",'',$k$
 
$body .= "$k: $v\n\n";
 
$body .= "$k: $v\n\n";
 
}
 
}
Line 60: Line 60:
  
 
# Send to recipients using the MediaWiki mailer
 
# Send to recipients using the MediaWiki mailer
$err = '';
+
$err = '';
 +
$user = new User();
 +
$from = "\"$wgSitename\"<$wgFormMailerFrom>";
 
foreach ($wgFormMailerRecipients as $recipient) if (User::isValidEmailAddr($recipient)) {
 
foreach ($wgFormMailerRecipients as $recipient) if (User::isValidEmailAddr($recipient)) {
$err .= userMailer(new MailAddress($recipient),new MailAddress($wgFormMailerFrom),$subject,$body);
+
$user->setName($recipient);
 +
$user->setEmail($recipient);
 +
if ($user->sendMail($subject,$body,$from) !== true) $err = 'Failed to send!';
 
}
 
}
 
$wgSiteNotice .= "<div class='usermessage'>".($err ? $err : $message)."</div>";
 
$wgSiteNotice .= "<div class='usermessage'>".($err ? $err : $message)."</div>";
 
}
 
}
 
}
 
}

Revision as of 08:13, 17 June 2007

<?php

  1. Extension:FORMMAILER
  2. - Licenced under LGPL (http://www.gnu.org/copyleft/lesser.html)
  3. - Author: User:Nad
  4. - Started: 2007-06-17
  5. - See http://www.mediawiki.org/wiki/Extension:FormMailerfor installation and usage details

if (!defined('MEDIAWIKI')) die('Not an entry point.');

define('FORMMAILER_VERSION','1.0.0, 2007-06-17');

  1. A list of email addresses which should recieve posted forms

$wgFormMailerRecipients = array();

  1. If a variable of this name is posted, the data is assumed to be for mailing

$wgFormMailerVarName = "formmailer";

  1. Name of sender of forms

$wgFormMailerFrom = 'wiki@'.ereg_replace('^.+www.',,$wgServer);

  1. Don't post the following posted items

$wgFormMailerDontSend = array('title','action');

  1. Message to display after sending the form (can also be set in the form by posting formmailer_message

$wgFormMailerMessage = "Thanks, your enquiry has been submitted!";

  1. Message to display after sending the form (can also be set in the form by posting formmailer_subject

$wgFormMailerSubject = "Form submitted from $wgSitename";


$wgExtensionFunctions[] = 'wfSetupFormMailer';

$wgExtensionCredits['other'][] = array( 'name' => 'FormMailer', 'author' => 'User:Nad', 'description' => 'Formats and sends posted form fields to email recipients', 'url' => 'http://www.mediawiki.org/wiki/Extension:FormMailer', 'version' => FORMMAILER_VERSION );

function wfSetupFormMailer() { global $wgFormMailerVarName,$wgFormMailerRecipients,$wgFormMailerMessage,$wgFormMailerSubject, $wgFormMailerFrom,$wgFormMailerDontSend,$wgSimpleFormsRequestPrefix,$wgSiteNotice,$wgSitename;

if (isset($_REQUEST[$wgFormMailerVarName])) {

# Construct the message $body = "Form posted from ".$_SERVER['REMOTE_ADDR']."\n\n"; $message = $wgFormMailerMessage; $subject = $wgFormMailerSubject; $wgFormMailerDontSend[] = $wgFormMailerVarName; foreach (array_merge($_GET,$_POST) as $k => $v) if (!in_array($k,$wgFormMailerDontSend)) { if ($k == 'formmailer_message') $message = $v; elseif ($k == 'formmailer_subject') $subject = $v; else { if ($wgSimpleFormsRequestPrefix) $k = ereg_replace("^$wgSimpleFormsRequestPrefix",,$k$ $body .= "$k: $v\n\n"; } }

# Send to recipients using the MediaWiki mailer $err = ; $user = new User(); $from = "\"$wgSitename\"<$wgFormMailerFrom>"; foreach ($wgFormMailerRecipients as $recipient) if (User::isValidEmailAddr($recipient)) { $user->setName($recipient); $user->setEmail($recipient); if ($user->sendMail($subject,$body,$from) !== true) $err = 'Failed to send!'; }

$wgSiteNotice .= "

".($err ? $err : $message)."

";

} }