Title: Member Approval v1.0

Author: huskysgrl

Description:
This modification will not allow members to login until their status has been approved by a Super Administrator or Administrator.
This modification will send a u2u to your choice of members informing them of the new registration and enable Super Administrator or Administrator to approve through the U2U.
This modification will e-mail the user when they are approved.

Compatability: XMB 1.9.11

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.

=======================================================================================================================================
=======
Step 1:
=======
===================================
Go To Administration Panel -> Insert Raw SQL
===================================

Upload provided file named "SQL.txt" and submit.

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

        $self['status'] = ($count1 != 0) ? 'Member' : 'Super Administrator';

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

        // Member Approval Mod Begin
        if ($count1 != 0) {
            if ($SETTINGS['approval'] == 'on') {
                $self['status'] = 'Not Approved';
            } else {
                $self['status'] = 'Member';
            }
        } else {
            $self['status'] = 'Super Administrator';
        }
        // Member Approval Mod End

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

            if ($SETTINGS['notifyonreg'] != 'off') {

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

            // Member Approval Mod Begin
            if ($SETTINGS['approval'] == 'on') {
                require_once('include/u2u.inc.php');
                $dbboardname = $db->escape_var($bbname);
                $adminmessage = "$username has just registered on $dbboardname.\r\n\r\n[b]Registration Details:[/b]\r\n\r\nUsername: $username\r\nE-mail: $email\r\nLocation: $locationnew\r\nSite: $site\r\nAIM: $aim\r\nICQ: $icq\r\nMSN: $msn\r\nYahoo: $yahoo\r\nBio: $bio\r\nSig: $sig\r\n\r\n[url=cp.php?action=approve&member=".recodeOut($username)."]Approve this user account[/url]";
                $admin = explode(",", $SETTINGS['appmesslist']);
                if (count($admin > 0)) {
                    foreach($admin as $key=>$val) {
                        $admin[$key] = $db->escape(trim($val));
                    }
                    $dbadmin = implode("', '", $admin);
                    $adminquery = $db->query("SELECT * FROM ".X_PREFIX."members WHERE username IN ('$dbadmin')");
                    while($adminname = $db->fetch_array($adminquery)) {
                        $dbadmin = $db->escape_var($adminname['username']);
                        db_u2u_insert($dbadmin, $dbboardname, 'incoming', $dbadmin, 'inbox', $lang[newu2u_adminsubject], $adminmessage, 'no', 'no');
                    }
                }
            }
            // Member Approval Mod End

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

                altMail($rawemail, '['.$bbname.'] '.$translate['textyourpw'], "{$translate['textyourpwis']} \n\n{$translate['textusername']} $username\n{$translate['textpassword']} $password2\n\n$full_url", $headers);
            } else {

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

                altMail($rawemail, '['.$bbname.'] '.$translate['textyourpw'], "{$translate['textyourpwis']} \n\n{$translate['textusername']} $username\n{$translate['textpassword']} $password2\n\n$full_url", $headers);
            } else if ($SETTINGS['approval'] == 'off') {

=======================================================================================================================================
=======
Step 3:
=======
===============
Edit File: post.php
===============
=================
Find Code (2 Times):
=================

                        if ($self['status'] == "Banned") {
                            $errors .= softerror($lang['bannedmessage']);
                            $replyvalid = FALSE;

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

                        // Member Approval Mod Begin
                        } else if ($self['status'] == 'Not Approved') {
                            $errors .= softerror($lang['notapprovedmessage']);
                            $replyvalid = FALSE;
                        // Member Approval Mod End

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

        $echeckon = $echeckoff = '';
        settingHTML('emailcheck', $echeckon, $echeckoff);

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

        // Member Approval Mod Begin
        $mapproveon = $mapproveoff = '';
        settingHTML('approval', $mapproveon, $mapproveoff);
        // Member Approval Mod End

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

        printsetting1($lang['doublee'], 'doubleenew', $doubleeon, $doubleeoff);
        printsetting2($lang['pruneusers'], 'pruneusersnew', ((int)$SETTINGS['pruneusers']), 3);
        ?>

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

        printsetting1($lang['doublee'], 'doubleenew', $doubleeon, $doubleeoff);
        printsetting2($lang['pruneusers'], 'pruneusersnew', ((int)$SETTINGS['pruneusers']), 3);
        // Member Approval Mod Begin
        printsetting1($lang['memberapproval'], 'approvalnew', $mapproveon, $mapproveoff);
        ?>
        <tr class="tablerow">
        <td bgcolor="<?php echo $altbg1?>"><?php echo $lang['appuserlist']?></td>
        <td bgcolor="<?php echo $altbg2?>"><textarea rows="4" cols="30" name="appuserlist"><?php echo $SETTINGS['appmesslist']?></textarea></td>
        </tr>
        <!-- Member Approval Mod End -->

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

        $doubleenew = formOnOff('doubleenew');
        $pruneusersnew = formInt('pruneusersnew');

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

        // Member Approval Mod Begin
        $approvalnew = formOnOff('approvalnew');
        $appuserlist = postedVar('appuserlist');
        // Member Approval Mod End

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

        $sql = "UPDATE ".X_PREFIX."settings SET

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

        $sql = "UPDATE ".X_PREFIX."settings SET
            approval='$approvalnew',
            appmesslist='$appuserlist',

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


            <option value="Member"><?php echo $lang['textmem']?></option>

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

            <!-- Member Approval Mod Begin -->
            <option value="Not Approved"><?php echo $lang['textapproveselect']?></option>
            <!-- Member Approval Mod End -->

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

                $modselect = $memselect = $banselect = '';

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

                // Member Approval Mod Begin
                $modselect = $memselect = $appselect = $banselect = '';
                // Member Approval Mod End

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

                    case 'Member':
                        $memselect = $selHTML;
                        break;

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

                    // Member Approval Mod Begin
                    case 'Not Approved':
                        $appselect = $selHTML;
                        break;
                    // Member Approval Mod End

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

                <option value="Member" <?php echo $memselect?>><?php echo $lang['textmem']?></option>

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

                <!-- Member Approval Mod Begin -->
                <option value="Not Approved" <?php echo $appselect; ?>><?php echo $lang['textapproveselect']; ?></option>
                <!-- Member Approval Mod End -->

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

if ($action == "deleteposts") {

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

// Member Approval Mod Begin
if ($action == 'approve') {
    $dbmember = postedVar('member');
    $query = $db->query("SELECT * FROM ".X_PREFIX."members WHERE username='$dbmember'");
    if ($db->num_rows($query) != 1) {
        error($lang['nomember'], FALSE, '', '', FALSE, TRUE, FALSE, FALSE);
    }
    $mem = $db->fetch_array($query);
    if ($mem['status'] != 'Not Approved') {
        echo "<tr bgcolor=\"$altbg2\" class=\"ctrtablerow\"><td>$lang[alreadyapproved]</td></tr>";
        exit();
    } else {
        $subject = 'Your registration has been approved!';
        $message = "Your registration at $bbname has been approved. You may now view and post in the forums! Look forward to seeing you there!";
        altmail($mem['email'], $subject, $message, "From: $bbname <$adminemail>");
        $db->query("UPDATE ".X_PREFIX."members SET status='Member' WHERE username='$dbmember'");
        echo "<tr bgcolor=\"$altbg2\" class=\"ctrtablerow\"><td>$lang[textapprovalsuccess]</td></tr>";
        exit();
    }
}
// Member Approval Mod End

=======================================================================================================================================
=======
Step 5:
=======
=========================
Edit File: include/functions.inc.php
=========================
==========
Find Code:
==========

        if ($self['status'] == 'Banned') {
            $xmbuser = '';
            $self = array();
            $self['status'] = 'Banned';

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

        if ($self['status'] == 'Banned' Or $self['status'] == 'Not Approved') {
            $status = $self['status'];
            $xmbuser = '';
            $self = array();
            $self['status'] = $status;

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

            if ($self['status'] == "Banned") {
                error($lang['bannedmessage']);

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

            // Member Approval Mod Begin
            } elseif ($self['status'] == "Not Approved") {
                error($lang['notapprovedmessage']);
            // Member Approval Mod End

=======================================================================================================================================
=======
Step 7:
=======
=================
Edit File: header.php
=================
==========
Find Code:
==========

'Banned'              => (1 << 30)

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

'Not Approved'        => (1 << 29),

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

(1 << 30) => 'textbanned'

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

(1 << 29) => 'textapproveselect',

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

/* Set Up HTML Templates and Themes */

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

// Member Approval Mod Begin
if (!isset($lang['textapprovalsuccess'])) {
    require_once(ROOT.'include/translation.inc.php');
    $phrases = array();
    $phrases['alreadyapproved'] = 'This member has already been approved';
    $phrases['appuserlist'] = 'Users that receive u2u with approval details: (separate with commas!)';
    $phrases['memberapproval'] = 'Require new members to be approved?';
    $phrases['newu2u_adminsubject'] = 'New Registration';
    $phrases['notapprovedmessage'] = 'Your status has not yet been approved, or your approved status has been revoked';
    $phrases['textapproveselect'] = 'Not Approved';
    $phrases['textapprovalsuccess'] = 'Approval Successful!';
    setManyLangValues($phrases, $langfile);
    loadLang($langfile);
}
// Member Approval Mod End

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