Pardon hocam ben anlamamışım.buyur.

<?php
/*======================================================================*\
|| #################################################################### ||
|| # vBulletin 3.6.3 - Licence Number xxxxxxxxxx
|| # ---------------------------------------------------------------- # ||
|| # All PHP code in this file is ©2000-2006 Jelsoft Enterprises Ltd. # ||
|| # This file may not be redistributed in whole or significant part. # ||
|| # ---------------- VBULLETIN IS NOT FREE SOFTWARE ---------------- # ||
|| # http://www.vbulletin.com | http://www.vbulletin.com/liceNse.html # ||
|| #################################################################### ||
\*======================================================================*/

define('MAIL_INCLUDED', true);

// Attempt to load XML extension if we don't have the XML functions
// already loaded. It is needed for utf8_encode()
if (!function_exists('xml_set_element_handler'))
{
    $extension_dir = ini_get('extension_dir');
    if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN'))
    {
        $extension_file = 'php_xml.dll';
    }
    else
    {
        $extension_file = 'xml.so';
    }
    if ($extension_dir AND file_exists($extension_dir . '/' . $extension_file))
    {
        ini_set('display_errors', true);
        dl($extension_file);
    }
}

/**
* Standard Mail Sending Object
*
* This class sends email from vBulletin using the PHP mail() function
*
* @package         vBulletin
* @version        $Revision: 1.30 $
* @date         $Date: 2006/07/26 11:14:36 $
* @copyright     http://www.vbulletin.com/license.html
*
*/
class vB_Mail
{
    /**
    * Destination address
    *
    * @var    string
    */
    var $toemail = '';

    /**
    * Subject
    *
    * @var    string
    */
    var $subject = '';

    /**
    * Message
    *
    * @var    string
    */
    var $message = '';

    /**
    * All headers to be sent with the message
    *
    * @var    string
    */
    var $headers = '';

    /**
    * Sender email
    *
    * @var    string
    */
    var $fromemail = '';

    /**
    * Line delimiter
    *
    * @var    string
    */
    var $delimiter = "\r\n";

    /**
    * Registry object for any options we need
    *
    * @var    vB_Registry
    */
    var $registry = null;

    /**
    * Switch to enable/disable debugging. When enabled, warnings are not suppressed
    *
    * @var    boolean
    */
    var $debug = false;

    /**
    * Message to log if logging is enabled
    *
    * @var    string
    */
    var $log = '';

    /**
    * Constructor
    *
    * @param    vB_Registry    vBulletin registry object
    */
    function vB_Mail(&$registry)
    {
        if (is_object($registry))
        {
            $this->registry =& $registry;
        }
        else
        {
            trigger_error('Registry object is not an object', E_USER_ERROR);
        }

        $sendmail_path = @ini_get('sendmail_path');
        if (!$sendmail_path OR $this->registry->options['use_smtp'] OR defined('FORCE_MAIL_CRLF'))
        {
            // no sendmail, so we're using SMTP or a server that lines CRLF to send mail // the use_smtp part is for the MailQueue extension
            $this->delimiter = "\r\n";
        }
        else
        {
            $this->delimiter = "\n";
        }
    }

    /**
    * Starts the process of sending an email - preps it so it's fully ready to send.
    * Call send() to actually send it.
    *
    * @param    string    Destination email address
    * @param    string    Email message subject
    * @param    string    Email message body
    * @param    string    Optional name/email to use in 'From' header
    * @param    string    Additional headers
    * @param    string    Username of person sending the email
    *
    * @param    boolean    True on success, false on failure
    */
    function start($toemail, $subject, $message, $from = '', $uheaders = '', $username = '')
    {
        $toemail = $this->fetch_first_line($toemail);

        if (empty($toemail))
        {
            return false;
        }

        $delimiter =& $this->delimiter;
        $vbulletin =& $this->registry;

        $toemail = unhtmlspecialchars($toemail);
        $subject = $this->fetch_first_line($subject);
        $message = preg_replace("#(\r\n|\r|\n)#s", $delimiter, trim($message));

        global $stylevar;
        if ((strtolower($stylevar['charset']) == 'iso-8859-1' OR $stylevar['charset'] == '') AND preg_match('/&[a-z0-9#]+;/i', $message))
        {
            $message = utf8_encode($message);
            $subject = utf8_encode($subject);
            $username = utf8_encode($username);

            $encoding = 'UTF-8';
            $unicode_decode = true;
        }
        else
        {
            // we know nothing about the message's encoding in relation to UTF-8,
            // so we can't modify the message at all; just set the encoding
            $encoding = $stylevar['charset'];
            $unicode_decode = false;
        }

        // theses lines may need to call convert_int_to_utf8 directly
        $message = unhtmlspecialchars($message, $unicode_decode);
        $subject = $this->encode_email_header(unhtmlspecialchars($subject, $unicode_decode), $encoding, false, false);

        $from = $this->fetch_first_line($from);
        if (empty($from))
        {
            global $vbphrase;
            if (isset($vbphrase['x_mailer']))
            {
                $mailfromname = construct_phrase($this->fetch_first_line($vbphrase['x_mailer']), $vbulletin->options['bbtitle']);
            }
            else
            {
                $mailfromname = $vbulletin->options['bbtitle'];
            }

            if ($unicode_decode == true)
            {
                $mailfromname = utf8_encode($mailfromname);
            }
            $mailfromname = $this->encode_email_header(unhtmlspecialchars($mailfromname, $unicode_decode), $encoding);

            $fromemail = $vbulletin->options['webmasteremail'];
            $headers .= "From: $mailfromname <" . $vbulletin->options['webmasteremail'] . '>' . $delimiter;
            $headers .= 'Return-Path: ' . $vbulletin->options['webmasteremail'] . $delimiter;
            $headers .= 'Auto-Submitted: auto-generated' . $delimiter;
        }
        else
        {
            if ($username)
            {
                $mailfromname = "$username @ " . $vbulletin->options['bbtitle'];
            }
            else
            {
                $mailfromname = $from;
            }

            if ($unicode_decode == true)
            {
                $mailfromname = utf8_encode($mailfromname);
            }
            $mailfromname = $this->encode_email_header(unhtmlspecialchars($mailfromname, $unicode_decode), $encoding);

            $fromemail = $from;
            $headers .= "From: $mailfromname <$from>" . $delimiter;
            $headers .= 'Return-Path: ' . $from . $delimiter;
        }

        if ($_SERVER['HTTP_HOST'] OR $_ENV['HTTP_HOST'])
        {
            $http_host = iif($_SERVER['HTTP_HOST'], $_SERVER['HTTP_HOST'], $_ENV['HTTP_HOST']);
        }
        else if ($_SERVER['SERVER_NAME'] OR $_ENV['SERVER_NAME'])
        {
            $http_host = iif($_SERVER['SERVER_NAME'], $_SERVER['SERVER_NAME'], $_ENV['SERVER_NAME']);
        }
        $http_host = trim($http_host);
        if (!$http_host)
        {
            $http_host = substr(md5($message), 6, 12) . '.vb_unknown.unknown';
        }
        $msgid = '<' . gmdate('YmdHs') . '.' . substr(md5($message . microtime()), 0, 6) . vbrand(100000, 999999) . '@' . $http_host . '>';
        $headers .= 'Message-ID: ' . $msgid . $delimiter;

        $headers .= preg_replace("#(\r\n|\r|\n)#s", $delimiter, $uheaders);
        unset($uheaders);

        $headers .= 'MIME-Version: 1.0' . $delimiter;
            $headers .= 'Content-Type: text/plain' . iif($encoding, "; charset=\"$encoding\"") . $delimiter;
        $headers .= 'Content-Transfer-Encoding: 8bit' . $delimiter;
        $headers .= 'X-Priority: 3' . $delimiter;
        $headers .= 'X-Mailer: vBulletin Mail via PHP' . $delimiter;

        ($hook = vBulletinHook::fetch_hook('mail_send')) ? eval($hook) : false;

        $this->toemail = $toemail;
        $this->subject = $subject;
        $this->message = $message;
        $this->headers = $headers;
        $this->fromemail = $fromemail;

        return true;
    }

    /**
    * Set all the necessary variables for sending a message.
    *
    * @param    string    Destination address
    * @param    string    Subject
    * @param    string    Message
    * @param    string    All headers to be sent with the message
    * @param    string    Sender email
    */
    function quick_set($toemail, $subject, $message, $headers, $fromemail)
    {
        $this->toemail = $toemail;
        $this->subject = $subject;
        $this->message = $message;
        $this->headers = $headers;
        $this->fromemail = $fromemail;
    }

    /**
    * Actually send the message.
    *
    * @return    boolean    True on success, false on failure
    */
    function send()
    {
        if (!$this->toemail)
        {
            return false;
        }

        @ini_set('sendmail_from', $this->fromemail);

        if ($this->registry->options['needfromemail'])
        {
            $result =  @mail($this->toemail, $this->subject, $this->message, trim($this->headers), '-f ' . $this->fromemail);
        }
        else
        {
            $result = @mail($this->toemail, $this->subject, $this->message, trim($this->headers));
        }

        $this->log_email($result);
        return $result;
    }

    /**
    * Returns the first line of a string -- good to prevent errors when sending emails (above)
    *
    * @param    string    String to be trimmed
    *
    * @return    string
    */
    function fetch_first_line($text)
    {
        $text = preg_replace("/(\r\n|\r|\n)/s", "\r\n", trim($text));
        $pos = strpos($text, "\r\n");
        if ($pos !== false)
        {
            return substr($text, 0, $pos);
        }
        return $text;
    }

    /**
    * Encodes a mail header to be RFC 2047 compliant. This allows for support
    * of non-ASCII character sets via the quoted-printable encoding.
    *
    * @param    string    The text to encode
    * @param    string    The character set of the text
    * @param    bool    Whether to force encoding into quoted-printable even if not necessary
    * @param    bool    Whether to quote the string; applies only if encoding is not done
    *
    * @return    string    The encoded header
    */
    function encode_email_header($text, $charset = 'utf-8', $force_encode = false, $quoted_string = true)
    {
        $text = trim($text);

        if (!$charset)
        {
            // don't know how to encode, so we can't
            return $text;
        }

        if ($force_encode == true)
        {
            $qp_encode = true;
        }
        else
        {
            $qp_encode = false;

            for ($i = 0; $i < strlen($text); $i++)
            {
                if (ord($text{$i}) > 127)
                {
                    // we have a non ascii character
                    $qp_encode = true;
                    break;
                }
            }
        }

        if ($qp_encode == true)
        {
            // see rfc 2047; not including _ as allowed here, as I'm encoding spaces with it
            $outtext = preg_replace('#([^a-zA-Z0-9!*+\-/= ])#e', "'=' . strtoupper(dechex(ord(str_replace('\\\"', '\"', '\\1'))))", $text);
            $outtext = str_replace(' ', '_', $outtext);
            $outtext = "=?$charset?q?$outtext?=";
            return $outtext;
        }
        else
        {
            if ($quoted_string)
            {
                $text = str_replace(array('"', '(', ')'), array('\"', '\(', '\)'), $text);
                return "\"$text\"";
            }
            else
            {
                return preg_replace('#(\r\n|\n|\r)+#', ' ', $text);
            }
        }
    }

    /**
    * Sets the debug member
    *
    * @param    boolean
    */
    function set_debug($debug)
    {
        $this->debug = $debug;
    }

    /**
    * Logs email to file
    *
    */
    function log_email($status = true)
    {
        if (!empty($this->registry->options['errorlogemail']))
        {
            $errfile =& $this->registry->options['errorlogemail'];
            if ($this->registry->options['errorlogmaxsize'] != 0 AND $filesize = @filesize("$errfile.log") AND $filesize >= $this->registry->options['errorlogmaxsize'])
            {
                @copy("$errfile.log", $errfile . TIMENOW . '.log');
                @unlink("$errfile.log");
            }

            $timenow = date('r', TIMENOW);

            $is_admin = ($this->registry->userinfo['permissions']['adminpermissions'] & $this->registry->bf_ugp_adminpermissions['cancontrolpanel']);

            $fp = @fopen("$errfile.log", 'a+b');

            if ($fp)
            {
                if ($status === true)
                {
                    $output = "SUCCESS\r\n";
                }
                else
                {
                    $output = "FAILED";
                    if ($status !== false)
                    {
                        $output .= ": $status";
                    }
                    $output .= "\r\n";
                }
                if ($this->delimiter == "\n")
                {
                    $append = "$timenow\r\nTo: " . $this->toemail . "\r\nSubject: " . $this->subject . "\r\n" . $this->headers . "\r\n\r\n" . $this->message . "\r\n=====================================================\r\n\r\n";
                    @fwrite($fp, $output . $append);
                }
                else
                {
                    $append = preg_replace("#(\r\n|\r|\n)#s", "\r\n", "$timenow\r\nTo: " . $this->toemail . "\r\nSubject: " . $this->subject . "\r\n" . $this->headers . "\r\n\r\n" . $this->message . "\r\n=====================================================\r\n\r\n");

                    @fwrite($fp, $output . $append);
                }
                fclose($fp);
            }
        }
    }
}

/**
* SMTP Mail Sending Object
*
* This class sends email from vBulletin using an SMTP wrapper
*
* @package         vBulletin
* @version        $Revision: 1.30 $
* @date         $Date: 2006/07/26 11:14:36 $
* @copyright     http://www.vbulletin.com/license.html
*
*/
class vB_SmtpMail extends vB_Mail
{
    /**
    * SMTP host
    *
    * @var    string
    */
    var $smtpHost;

    /**
    * SMTP port
    *
    * @var    integer
    */
    var $smtpPort;

    /**
    * SMTP username
    *
    * @var    string
    */
    var $smtpUser;

    /**
    * SMTP password
    *
    * @var    string
    */
    var $smtpPass;

    /**
    * Raw SMTP socket
    *
    * @var    resource
    */
    var $smtpSocket = null;

    /**
    * Return code from SMTP server
    *
    * @var    integer
    */
    var $smtpReturn = 0;

    /**
    * Constructor
    *
    * @param    vB_Registry    vBulletin registry object
    */
    function vB_SmtpMail(&$registry)
    {
        if (is_object($registry))
        {
            $this->registry =& $registry;
        }
        else
        {
            trigger_error('Registry object is not an object', E_USER_ERROR);
        }

        $this->smtpHost = (!empty($this->registry->options['smtp_tls']) ? 'tls://' : '') . $this->registry->options['smtp_host'];
        $this->smtpPort = (!empty($this->registry->options['smtp_port']) ? intval($this->registry->options['smtp_port']) : 25);
        $this->smtpUser =& $this->registry->options['smtp_user'];
        $this->smtpPass =& $this->registry->options['smtp_pass'];

        $this->delimiter = "\r\n";
    }

    /**
    * Sends instruction to SMTP server
    *
    * @param    string    Message to be sent to server
    * @param    mixed    Message code expected to be returned or false if non expected
    *
    * @return    boolean    Returns false on error
    */
    function sendMessage($msg, $expectedResult = false)
    {
        if ($msg !== false && !empty($msg))
        {
            fputs($this->smtpSocket, $msg . "\r\n");
        }
        if ($expectedResult !== false)
        {
            $result = '';
            while ($line = @fgets($this->smtpSocket, 1024))
            {
                $result .= $line;
                if (preg_match('#^(\d{3}) #', $line, $matches))
                {
                    break;
                }
            }
            $this->smtpReturn = intval($matches[1]);
            return ($this->smtpReturn == $expectedResult);
        }
        return true;
    }

    /**
    * Triggers PHP warning on error
    *
    * @param    string    Error message to be shown
    *
    * @return    boolean    Always returns false (error)
    */
    function errorMessage($msg)
    {
        if ($this->debug)
        {
            trigger_error($msg, E_USER_WARNING);
        }
        $this->log_email($msg);
        return false;
    }

    /**
    * Attempts to send email based on parameters passed into start()/quick_set()
    *
    * @return    boolean    Returns false on error
    */
    function send()
    {
        if (!$this->toemail)
        {
            return false;
        }

        $this->smtpSocket = fsockopen($this->smtpHost, $this->smtpPort, $errno, $errstr, 30);

        if ($this->smtpSocket)
        {
            if (!$this->sendMessage(false, 220))
            {
                return $this->errorMessage('Unexpected response when connecting to SMTP server');
            }

            if ($this->smtpUser AND $this->smtpPass)
            {
                if (!$this->sendMessage('EHLO ' . $this->smtpHost, 250))
                {
                    return $this->errorMessage('Unexpected response from SMTP server during handshake');
                }
                if ($this->sendMessage('AUTH LOGIN', 334))
                {
                    if (!$this->sendMessage(base64_encode($this->smtpUser), 334) OR !$this->sendMessage(base64_encode($this->smtpPass), 235))
                    {
                        return $this->errorMessage('Authorization to the SMTP server failed');
                    }
                }
            }
            else if (!$this->sendMessage('HELO ' . $this->smtpHost, 250))
            {
                return $this->errorMessage('Unexpected response from SMTP server during handshake');
            }

            if (!$this->sendMessage('MAIL FROM:<' . $this->fromemail . '>', 250))
            {
                return $this->errorMessage('Unexpected response from SMTP server during FROM address transmission');
            }

            // we could have multiple addresses since a few people might expect this to be the same as PHP
            $addresses = explode(',', $this->toemail);
            foreach ($addresses AS $address)
            {
                if (!$this->sendMessage('RCPT TO:<' . trim($address) . '>', 250))
                {
                    return $this->errorMessage('Unexpected response from SMTP server during TO address transmission');
                }
            }
            if ($this->sendMessage('DATA', 354))
            {
                $this->sendMessage('Date: ' . gmdate('r'), false);
                $this->sendMessage('To: ' . $this->toemail, false);
                $this->sendMessage(trim($this->headers), false); // trim to prevent double \r\n
                $this->sendMessage('Subject: ' . $this->subject, false);
                $this->sendMessage("\r\n", false); // this makes a double \r\n
                // catch any single dots on their own
                $this->message = preg_replace('#^\.' . $this->delimiter . '#m', '..' . $this->delimiter, $this->message);
                $this->sendMessage($this->message, false);
            }
            else
            {
                return $this->errorMessage('Unexpected response from SMTP server during data transmission');
            }

            if (!$this->sendMessage('.', 250))
            {
                return $this->errorMessage('Unexpected response from SMTP server when ending transmission');
            }

            // Don't check that QUIT returns a valid result as some servers just kill the connection e.g. smtp.gmail.com
            $this->sendMessage('QUIT', 221);

            fclose($this->smtpSocket);
            $this->log_email();
            return true;
        }
        else
        {
            return $this->errorMessage('Unable to connect to SMTP server');
        }
    }
}


/**
* Mail queueing class. This class should be accessed as a singleton via fetch_instance()!
* This class does not actually send emails, but rather queues them to be sent later in a batch.
*
* @package         vBulletin
* @version        $Revision: 1.30 $
* @date         $Date: 2006/07/26 11:14:36 $
* @copyright     http://www.vbulletin.com/license.html
*
*/
class vB_QueueMail extends vB_Mail
{
    /**
    * The SQL to insert into the mail queue
    *
    * @var    string
    */
    var $mailsql = '';

    /**
    * The number of mails being inserted into the queue
    *
    * @var    string
    */
    var $mailcounter = '';

    /**
    * Whether to do bulk inserts into the database.
    * Never set this option directly!
    *
    * @var    boolean
    */
    var $bulk = false;

    /**
    * Inserts the message into the queue instead of sending it.
    *
    * @return    string    True on success, false on failure
    */
    function send()
    {
        if (!$this->toemail)
        {
            return false;
        }

        $vbulletin =& $this->registry;

        $data = "
            (" . TIMENOW . ",
            '" . $vbulletin->db->escape_string($this->toemail) . "',
            '" . $vbulletin->db->escape_string($this->fromemail) . "',
            '" . $vbulletin->db->escape_string($this->subject) . "',
            '" . $vbulletin->db->escape_string($this->message) . "',
            '" . $vbulletin->db->escape_string($this->headers) . "')
        ";

        if ($this->bulk)
        {
            if (!empty($this->mailsql))
            {
                $this->mailsql .= ',';
            }

            $this->mailsql .= $data;
            $this->mailcounter++;

            // current insert exceeds half megabyte, insert it and start over
            if (strlen($this->mailsql) > 524288)
            {
                $this->set_bulk(false);
                $this->set_bulk(true);
            }
        }
        else
        {
            /*insert query*/
            $vbulletin->db->query_write("
                INSERT INTO " . TABLE_PREFIX . "mailqueue
                    (dateline, toemail, fromemail, subject, message, header)
                VALUES
                " . $data
            );

            $vbulletin->db->query_write("
                UPDATE " . TABLE_PREFIX . "datastore SET
                    data = data + 1
                WHERE title = 'mailqueue'
            ");

            // if we're using a alternate datastore, we need to give it an integer value
            // this may not be atomic
            if (method_exists($vbulletin->datastore, 'build'))
            {
                $mailqueue_db = $vbulletin->db->query_first("
                    SELECT data
                    FROM " . TABLE_PREFIX . "datastore
                    WHERE title = 'mailqueue'
                ");
                $vbulletin->datastore->build('mailqueue', intval($mailqueue_db['data']));
            }
        }

        return true;
    }

    /**
    * Sets the bulk option. If disabling the option, this also flushes
    * the cache into the database.
    *
    * @param    boolean
    */
    function set_bulk($bulk)
    {
        if ($bulk)
        {
            $this->bulk = true;
            $this->mailcounter = 0;
            $this->mailsql = '';
        }
        else if ($this->mailcounter AND $this->mailsql)
        {
            // turning off bulk sending, so save all the mails
            $vbulletin =& $this->registry;

            /*insert query*/
            $vbulletin->db->query_write("
                INSERT INTO " . TABLE_PREFIX . "mailqueue
                (dateline, toemail, fromemail, subject, message, header)
                VALUES
                " . $this->mailsql
            );
            $vbulletin->db->query_write("
                UPDATE " . TABLE_PREFIX . "datastore
                SET data = data + " . intval($this->mailcounter) . "
                WHERE title = 'mailqueue'
            ");

            // if we're using a alternate datastore, we need to give it an integer value
            // this may not be atomic
            if (method_exists($vbulletin->datastore, 'build'))
            {
                $mailqueue_db = $vbulletin->db->query_first("
                    SELECT data
                    FROM " . TABLE_PREFIX . "datastore
                    WHERE title = 'mailqueue'
                ");
                $vbulletin->datastore->build('mailqueue', intval($mailqueue_db['data']));
            }
        }

        $this->bulk = true;
        $this->mailsql = '';
        $this->mailcounter = 0;
    }

    /**
    * Singleton emulator. Fetches the instance if it doesn't exist.
    * Be sure to accept a reference if using this function!
    *
    * @return    vB_QueueMail    Reference to the instance
    */
    function &fetch_instance()
    {
        static $instance = null;

        if ($instance === null)
        {
            global $vbulletin;
            $instance =& new vB_QueueMail($vbulletin);
        }

        return $instance;
    }

    /**
    * The only part of this class which actually sends an email.
    * Sends mail from the queue.
    */
    function exec_queue()
    {
        $vbulletin =& $this->registry;

        if ($vbulletin->options['usemailqueue'] == 2)
        {
            // Lock mailqueue table so that only one process can
            // send a batch of emails and then delete them
            $vbulletin->db->lock_tables(array('mailqueue' => 'WRITE'));
        }

        $emails = $vbulletin->db->query_read("
            SELECT *
            FROM " . TABLE_PREFIX . "mailqueue
            ORDER BY mailqueueid
            LIMIT " . intval($vbulletin->options['emailsendnum'])
        );

        $mailqueueids = '';
        $newmail = 0;
        $emailarray = array();
        while ($email = $vbulletin->db->fetch_array($emails))
        {
            // count up number of mails about to send
            $mailqueueids .= ',' . $email['mailqueueid'];
            $newmail++;
            $emailarray[] = $email;
        }
        if (!empty($mailqueueids))
        {
            // remove mails from queue - to stop duplicates being sent
            $vbulletin->db->query_write("
                DELETE FROM " . TABLE_PREFIX . "mailqueue
                WHERE mailqueueid IN (0 $mailqueueids)
            ");

            if ($vbulletin->options['usemailqueue'] == 2)
            {
                $vbulletin->db->unlock_tables();
            }

            if ($vbulletin->options['use_smtp'])
            {
                $prototype =& new vB_SmtpMail($vbulletin);
            }
            else
            {
                $prototype =& new vB_Mail($vbulletin);
            }

            foreach ($emailarray AS $index => $email)
            {
                // send those mails
                $mail = (phpversion() < '5' ? $prototype : clone($prototype)); // avoid ctor overhead
                $mail->quick_set($email['toemail'], $email['subject'], $email['message'], $email['header'], $email['fromemail']);
                $mail->send();
            }

            $newmail = 'data - ' . intval($newmail);
        }
        else
        {
            if ($vbulletin->options['usemailqueue'] == 2)
            {
                $vbulletin->db->unlock_tables();
            }

            $newmail = 0;
        }

        // update number of mails remaining
        $vbulletin->db->query_write("
            UPDATE " . TABLE_PREFIX . "datastore SET
                data = " . $newmail . ",
                data = IF(data < 0, 0, data)
            WHERE title = 'mailqueue'
        ");

        // if we're using a alternate datastore, we need to give it an integer value
        // this may not be atomic
        if (method_exists($vbulletin->datastore, 'build'))
        {
            $mailqueue_db = $vbulletin->db->query_first("
                SELECT data
                FROM " . TABLE_PREFIX . "datastore
                WHERE title = 'mailqueue'
            ");
            $vbulletin->datastore->build('mailqueue', intval($mailqueue_db['data']));
        }
    }
}

/*======================================================================*\
|| ####################################################################
|| # Downloaded: 07:39, Thu Nov 9th 2006
|| # CVS: $RCSfile: class_mail.php,v $ - $Revision: 1.30 $
|| ####################################################################
\*======================================================================*/
?>