Title: Email Member Form v1.0

Author: John Briggs

Description:
This modification will provide members with a secure email form to protect against open e-mail address displays.
This modification will provide security regarding access to the form by preventing guests the ability to view or access it.
This modification prevents guests from seeing your email from threads, profile and member list.

Copyright:  2009 John Briggs. All rights reserved.

Compatability: XMB 1.9.8 SP3

Updated for 1.9.8 by: WormHole @ XMB Garage

Install Note: Before adding this modification to your forum you should back up all files related to this modification.

License Note: This modification is released under the GPL License. A copy is provided with this software package.

Author Note:
You downloaded this modification from XMBGarage.com, the #1 source for XMB related downloads.
Please visit http://www.xmbgarage.com/ for support.

=======================================================================================================================================
=======
Step 1:
=======
=================
Edit File: member.php
=================
==========
Find Code:
==========

loadtemplates(

================
Replace Code With:
================

loadtemplates(
'member_email_member',

==========
Find Code:
==========

    case 'coppa':
        nav($lang['textcoppa']);
        break;

==================
Add Code Below:
==================

    // Email Member Form Mod Begin
    case 'email':
       nav($lang['emailmemnav']);
       break;
    // Email Member Form Mod End

=================
Find Code & Delete:
=================

                if (X_MEMBER && $memberinfo['email'] != '' && $memberinfo['showemail'] == 'yes') {
                    $email = $memberinfo['email'];
                } else {
                    $email = '';
                }

==========
Find Code:
==========

                if ($memberinfo['showemail'] == 'yes') {

================
Replace Code With:
================

                if (X_MEMBER && $memberinfo['email'] != '' && $memberinfo['showemail'] == 'yes') {

==========
Find Code:
==========

    default:
        error($lang['textnoaction']);
        break;

===============
Add Code Above:
===============

    // Email Member Form Mod Begin
    case 'email':
        eval('echo "'.template('header').'";');

        if (!X_MEMBER) {
            error($lang['emailmemerror'], false);
        }

        if (!isset($_POST['emailsubmit'])) {
            if (empty($member)) {
                error($lang['emailmemnomem'], false);
            }

            $query = $db->query("SELECT email, username, showemail FROM ".X_PREFIX."members WHERE username='$member'");
            $sendto = $db->fetch_array($query);
            $db->free_result($query);

            if (empty($sendto)) {
                error($lang['emailmemnoexist'], false);
            }

            if ($sendto['showemail'] != 'yes') {
                error($lang['emailmemerror'], false);
            }
            eval('echo stripslashes("'.template('member_email_member').'");');
        }

        if (isset($_POST['emailsubmit'])) {
            $query = $db->query("SELECT email, username, showemail FROM ".X_PREFIX."members WHERE username='$member'");
            $sendto = $db->fetch_array($query);
            $db->free_result($query);

            if (empty($sendto)) {
                error($lang['emailmemnoexist'], false);
            }

            if ($sendto['showemail'] != 'yes') {
                error($lang['emailmemerror'], false);
            }

            if (empty($_POST['name']) || empty($_POST['email']) || empty($_POST['message']) || empty($_POST['subject'])) {
                error($lang['emailmemempty'], false);
            }

            $_POST['name'] = stripslashes($_POST['name']);
            $_POST['email'] = stripslashes($_POST['email']);
            $_POST['subject'] = stripslashes($_POST['subject']);
            $_POST['message'] = stripslashes($_POST['message']);

            $emailmsgurl = $boardurl.'index.php';

            $headers[] = 'From: '.$_POST['name'].' <'.$_POST['email'].'>';
            $headers[] = 'X-Sender: <'.$_POST['email'].'>';
            $headers[] = 'X-Mailer: PHP';
            $headers[] = 'X-AntiAbuse: Board servername - '.$bbname;
            $headers[] = 'X-AntiAbuse: Username - '.$xmbuser;
            $headers[] = 'X-Priority: 2';
            $headers[] = 'Return-Path: <'.$_POST['email'].'>';
            $headers[] = 'Content-Type: text/plain; charset='.$charset;
            $headers = implode("\r\n", $headers);

            $msgbody[] = $lang['emailmemhello'].' '.$sendto['username'];
            $msgbody[] = $lang['emailmemmsg1'].' '.$_POST['name'].' ('.$_POST['email'].') '.$lang['emailmemmsg2'];
            $msgbody[] = '---------------------------------------------';
            $msgbody[] = $lang['emailmemmessage'];
            $msgbody[] = $_POST['message'];
            $msgbody[] = '---------------------------------------------';
            $msgbody[] = $lang['emailmemmsg3'];
            $msgbody[] = $lang['emailmemmsg4'];
            $msgbody[] = $lang['emailmemmsg5'];
            $msgbody[] = $emailmsgurl;
            $msgbody = implode("\n", $msgbody);

            altMail($sendto['email'], $_POST['subject'], $msgbody, $headers);
            echo '<div align="center"><font class="mediumtxt">'.$lang['emailmemsubmitted'].'</font></div>';
            redirect('member.php?action=email&member='.$member, 2, X_REDIRECT_JS);
        }
        break;
    // Email Member Form Mod End

=======================================================================================================================================
=======
Step 2:
=======
===============
Edit File: misc.php
===============
==========
Find Code:
==========

                if (X_MEMBER && $member['email'] != '' && $member['showemail'] == 'yes') {
                    eval('$email = "'.template('misc_mlist_row_email').'";');
                } else {
                    $email = '';
                }

================
Replace Code With:
================

                // Email Member Form Mod Begin
                $email = '';
                if (X_MEMBER && $member['email'] != '' && $member['showemail'] == 'yes') {
                    $memurl = rawurlencode($member['username']);
                    eval('$email = "'.template('misc_mlist_row_email').'";');
                }
                // Email Member Form Mod End

=======================================================================================================================================
=======
Step 3:
=======
=======================
Edit File: include/online.inc.php
=======================
==========
Find Code:
==========

                eval("\$location = \"$lang[onlineviewpro]\";");

===============
Add Code Below:
===============

            // Email Member Form Mod Begin
            } elseif (false !== strpos($url, 'action=email')) {
                $temp = explode('?', $url);
                $urls = explode('&', $temp[1]);
                foreach ($urls as $argument) {
                    if (strpos($argument, 'member') !== false) {
                        $member = str_replace('member=', '', $argument);
                    }
                }
                eval("\$location = \"$lang[emailmemonline]\";");
            // Email Member Form Mod End

=======================================================================================================================================
=======
Step 4:
=======
===================
Edit File: viewthread.php
===================
==========
Find Code:
==========

        if ($post['author'] != 'Anonymous' && $post['username']) {
            if (X_MEMBER && $post['showemail'] == 'yes') {
                eval('$email = "'.template('viewthread_post_email').'";');
            } else {
                $email = '';
            }

==================
Replace Code With:
==================

        // Email Member Form Mod Begin
        $email = '';
        if ($post['author'] != 'Anonymous' && $post['username']) {
            if (X_MEMBER && $post['email'] != '' && $post['showemail'] == 'yes') {
                $encodename = rawurlencode($post['author']);
                eval('$email = "'.template('viewthread_post_email').'";');
            }
            // Email Member Form Mod End

=======================================================================================================================================
=======
Step 4:
=======
=======================
Edit File: lang/English.lang.php
=======================
==================================
Add Code At Very Bottom Of File Above ?>
==================================

// Email Member Form Mod Begin
$lang['emailmemerror'] = "Sorry, you must be registered or logged in to use this feature.";
$lang['emailmemnomem'] = "Sorry, you must select a valid member. Please try again.";
$lang['emailmemnoexist'] = "Sorry! This member does not exist.";
$lang['emailmemsubject'] = "E-mail Subject:";
$lang['emailmemmessage'] = "E-mail Message:";
$lang['emailmemsubmit'] = "Submit E-mail";
$lang['emailmemclear'] = "Clear Form";
$lang['emailmemform'] = "E-mail ";
$lang['emailmemnav'] = "E-mail Form";
$lang['emailmemonline'] = 'Sending e-mail to {$member}';
$lang['emailmemsendpre'] = "Send ";
$lang['emailmemempty'] = "Sorry, you did not fill all of the form correctly. Please try again.";
$lang['emailmemsendsuf'] = " an email message.";
$lang['emailmemsubmitted'] = "Thank you, your email has been sent successfully.";
$lang['emailmemhello'] = "Hello";
$lang['emailmemmsg1'] = "A member by the username";
$lang['emailmemmsg2'] = "has sent you this message using the e-mail form at $SETTINGS[bbname].";
$lang['emailmemmsg3'] = "Please be sure to report all potential e-mail abuse to $SETTINGS[adminemail].";
$lang['emailmemmsg4'] = "If you prefer not to receive e-mails via the board then you may go to your Control Panel/Options and set the option to not accept them.";
$lang['emailmemmsg5'] = "Kind Regards, $SETTINGS[bbname] Management";
// Email Member Form Mod End

=======================================================================================================================================
=======
Step 5:
=======
========================
Go to admin panel -> Templates
========================
===================================
Create New Template: member_email_member
===================================
=====================
Add Code & Click Submit:
=====================

<form method="post" action="member.php?action=email">
<table cellspacing="0" cellpadding="0" border="0" width="$THEME[tablewidth]" align="center">
<tr>
<td bgcolor="$THEME[bordercolor]">
<table border="0" cellspacing="$THEME[borderwidth]" cellpadding="$THEME[tablespace]" width="100%">
<tr class="category">
<td colspan="2"><font color="$THEME[cattext]"><strong>$lang[emailmemform]$member</strong></font></td>
</tr>
<tr class="tablerow">
<td bgcolor="$THEME[altbg1]" width="25%">$lang[emailmemsubject]</td>
<td bgcolor="$THEME[altbg2]" width="75%"><input type="text" name="subject" size="50" /></td>
</tr>
<tr class="tablerow">
<td bgcolor="$THEME[altbg1]" width="25%" valign="top">$lang[emailmemmessage]</td>
<td bgcolor="$THEME[altbg2]" width="75%"><textarea rows="9" cols="60" name="message"></textarea></td>
</tr>
<tr class="ctrtablerow">
<td bgcolor="$THEME[altbg2]" colspan="2">
<input type="hidden" name="name" value="$self[username]" />
<input type="hidden" name="email" value="$self[email]" />
<input type="hidden" name="member" value="$member" />
<input class="submit" type="submit" name="emailsubmit" value="$lang[emailmemsubmit]" />
&nbsp;
<input type="reset" value="$lang[emailmemclear]" />
</td>
</tr>
</table>
</td>
</tr>
</table>
</form>

=======================================================================================================================================
=======
Step 6:
=======
========================
Go to admin panel -> Templates
========================
============================
Edit Template: member_profile_email
============================
==============
Replace All With:
==============

<tr class="tablerow">
<td bgcolor="$THEME[altbg1]">$lang[textemail]</td>
<td bgcolor="$THEME[altbg2]"><a href="mailto:$email">$email</a></td>
</tr>

=======================================================================================================================================
=======
Step 7:
=======
========================
Go to admin panel -> Templates
========================
===========================
Edit Template: misc_mlist_row_email
===========================
==============
Replace All With:
==============

<a href="member.php?action=email&amp;member=$memurl"><img src="$THEME[imgdir]/email.gif" border="0" alt="$lang[altemailuser]" title="$lang[altemailuser]" /></a>

=======================================================================================================================================
=======
Step 8:
=======
========================
Go to admin panel -> Templates
========================
============================
Edit Template: viewthread_post_email
============================
==============
Replace All With:
==============

<a href="member.php?action=email&amp;member=$encodename"><img src="$THEME[imgdir]/email.gif" border="0" alt="$lang[altemailuser]" title="$lang[altemailuser]" /></a>

=======================================================================================================================================
Enjoy!