Вход Регистрация
Файл: admin/applications/members/modules_admin/bulkmail/bulkmail.php
Строк: 548
<?php
/**
 * <pre>
 * Invision Power Services
 * IP.Board v3.3.3
 * Bulk mail management
 * Last Updated: $Date: 2012-06-07 06:27:31 -0400 (Thu, 07 Jun 2012) $
 * </pre>
 *
 * @author         $Author: AndyMillne $
 * @copyright    (c) 2001 - 2009 Invision Power Services, Inc.
 * @license        http://www.invisionpower.com/company/standards.php#license
 * @package        IP.Board
 * @subpackage    Members
 * @link        http://www.invisionpower.com
 * @version        $Revision: 10886 $
 */

if ( ! defined'IN_ACP' ) )
{
    print 
"<h1>Incorrect access</h1>You cannot access this file directly.";
    exit();
}

class 
admin_members_bulkmail_bulkmail extends ipsCommand
{
    
/**
     * Skin object
     *
     * @var        object            Skin templates
     */
    
protected $html;
    
    
/**
     * Shortcut for url
     *
     * @var        string            URL shortcut
     */
    
protected $form_code;
    
    
/**
     * Shortcut for url (javascript)
     *
     * @var        string            JS URL shortcut
     */
    
protected $form_code_js;
    
    
/**
     * Main class entry point
     *
     * @param    object        ipsRegistry reference
     * @return    @e void        [Outputs to screen]
     */
    
public function doExecuteipsRegistry $registry 
    {
        
//-----------------------------------------
        // Load skin
        //-----------------------------------------
        
        
$this->html            $this->registry->output->loadTemplate('cp_skin_bulkmail');
        
        
//-----------------------------------------
        // Set up stuff
        //-----------------------------------------
        
        
$this->form_code    $this->html->form_code    'module=bulkmail&amp;section=bulkmail';
        
$this->form_code_js    $this->html->form_code_js    'module=bulkmail&section=bulkmail';
        
        
//-----------------------------------------
        // Load lang
        //-----------------------------------------
                
        
ipsRegistry::getClass('class_localization')->loadLanguageFile( array( 'admin_bulkmail' ) );
        
        switch( 
$this->request['do'] )
        {
            case 
'mail_new':
                
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg'bulkmail_addedit' );
                
$this->_mailForm('add');
            break;

            case 
'mail_edit':
                
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg'bulkmail_addedit' );
                
$this->_mailForm('edit');
            break;

            case 
'mail_save':
                
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg'bulkmail_addedit' );
                
$this->_mailSave();
            break;
            
            case 
'mail_preview':
                
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg'bulkmail_view' );
                
$this->_mailPreviewStart();
            break;
            
            case 
'mail_preview_do':
                
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg'bulkmail_view' );
                
$this->_mailPreviewComplete();
            break;
            
            case 
'mail_send_start':
                
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg'bulkmail_send' );
                
$this->_mailSendStart();
            break;
            
            case 
'mail_send_complete':
                
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg'bulkmail_send' );
                
$this->_mailSendComplete();
            break;
            
            case 
'mail_send_cancel':
                
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg'bulkmail_cancel' );
                
$this->_mailSendCancel();
            break;
            
            case 
'mail_delete':
                
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg'bulkmail_delete' );
                
$this->_mailDelete();
            break;

            default:
            case 
'bulk_mail':
                
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg'bulkmail_view' );
                
$this->_mailStart();
            break;
        }

        
//-----------------------------------------
        // Pass to CP output hander
        //-----------------------------------------
        
        
$this->registry->getClass('output')->html_main .= $this->registry->getClass('output')->global_template->global_frame_wrapper();
        
$this->registry->getClass('output')->sendOutput();
    }
    
    
/**
     * Delete a bulk mail
     *
     * @return    @e void        [Outputs to screen]
     */
    
protected function _mailDelete()
    {
        
$id intval$this->request['id'] );
        
        
$active $this->DB->buildAndFetch( array( 'select' => 'mail_id''from' => 'bulk_mail''where' => 'mail_active=1 AND mail_id <>' $id ) );
        
        if( !
$active['mail_id'] )
        {
            
$this->DB->update'task_manager', array( 'task_enabled' => ), "task_key='bulkmail'" );
        }
        
        
$this->DB->delete'bulk_mail''mail_id=' $id );
                                            
        
$this->registry->output->global_message $this->lang->words['b_deleted'];
        
$this->_mailStart();
    }
    
    
/**
     * Cancels a bulk mail
     *
     * @return    @e void        [Outputs to screen]
     */
    
protected function _mailSendCancel()
    {
        
$this->DB->update'bulk_mail', array(    'mail_active'    => 0,
                                                    
'mail_updated'    => time(),
                                                  ), 
"mail_active=1" );
                                            
        
$this->DB->update'task_manager', array( 'task_enabled' => ), "task_key='bulkmail'" );
        
        
$this->registry->output->global_message $this->lang->words['b_cancelled'];
        
$this->_mailStart();
    }
    
    
/**
     * Processes a bulk mail
     *
     * @return    @e void
     */
    
public function mailSendProcess()
    {
        
//-----------------------------------------
        // Set up
        //-----------------------------------------

        
$done    0;
        
$sent    0;
        
        
//-----------------------------------------
        // Get it from the db
        //-----------------------------------------
        
        
$mail $this->DB->buildAndFetch( array( 'select' => '*''from' => 'bulk_mail''where' => 'mail_active=1' ) );
        
        if ( ! 
$mail['mail_subject'] and ! $mail['mail_content'] )
        {
            
/* Just return, if there's nothing to send.  Bug #21494 */
            
return;
            
//$done    = 1;
        
}
        
        
//-----------------------------------------
        // Per go...
        //-----------------------------------------
        
        
$pergo intval($mail['mail_pergo']);
        
        if ( ! 
$pergo or $pergo 1000 )
        {
            
$pergo 50;
        }
        
        
//-----------------------------------------
        // So far...
        //-----------------------------------------
        
        
$sofar intval($mail['mail_sentto']);
        
        
$mail['mail_content']    = IPSText::stripslashes$mail['mail_content'] );
        
$mail['mail_subject']    = IPSText::stripslashes$mail['mail_subject'] );
        
        
//-----------------------------------------
        // Unconvert options
        //-----------------------------------------
        
        
$opts unserializestripslashes$mail['mail_opts'] ) );
        
        foreach( 
$opts as $k => $v )
        {
            
$mail$k ] = $v;
        }

        
//-----------------------------------------
         // Format the query
         //-----------------------------------------
         
         
$query $this->_buildMembersQuery$mail );
         
         
//-----------------------------------------
         // Clear out any other temp headers
         //-----------------------------------------
         
         
IPSText::getTextClass('email')->clearHeaders();

        
//-----------------------------------------
        // Now get members....
        //-----------------------------------------
        
        
$this->DB->build( array( 'select'    => '*',
                                        
'from'    => 'members',
                                        
'where'    => $query,
                                        
'order'    => 'member_id',
                                        
'limit'    => array( $sofar$pergo ) ) );
        
$o $this->DB->execute();
                                      
        while ( 
$r $this->DB->fetch$o ) )
        {
            
$sent++;
            
            
$contents str_replace"rn""n"$this->_convertQuicktags$mail['mail_content'], $r ) );
            
            
/* Clear out previous data */
            
IPSText::getTextClass('email')->clearContent();
        
            
/* Specifically a HTML email */
            
if ( $mail['mail_html_on'] )
            {
                
IPSText::getTextClass('email')->setHtmlEmailtrue );
                
IPSText::getTextClass('email')->setHtmlTemplatestr_replace"n"""$contents ) );
                
IPSText::getTextClass('email')->setHtmlWrapper'<#content#>' );
            }
            else if ( 
$this->settings['email_use_html'] )
            {
                
IPSText::getTextClass('email')->setHtmlEmailtrue );
                
IPSText::getTextClass('email')->setHtmlTemplate$contents );
            }
            else
            {
                
/* We want to parse the plain text emails */
                
IPSText::getTextClass('email')->setPlainTextTemplate$contents );
            }
            
            
/* Build plain/HTML versions */
            
IPSText::getTextClass('email')->buildMessage( array() );
        
            
IPSText::getTextClass('email')->from        $this->settings['email_out'];
            
IPSText::getTextClass('email')->to            $r['email'];
            
IPSText::getTextClass('email')->subject        $mail['mail_subject'];
            
IPSText::getTextClass('email')->setHeader'Precedence''bulk' );
            
IPSText::getTextClass('email')->sendMail();
        }
        
        
//-----------------------------------------
        // Did we send any?
        //-----------------------------------------
        
        
if ( ! $sent )
        {
            
$done    1;
        }

        
//-----------------------------------------
        // Save out..
        //-----------------------------------------
        
        
if ( $done )
        {
            
$this->DB->update'bulk_mail', array(     'mail_active'    => 0,
                                                        
'mail_updated'    => time(),
                                                        
'mail_sentto'    => $sofar $sent 
                                                    
), 'mail_id=' $mail['mail_id'] );
                                                
            
$this->DB->update'task_manager', array( 'task_enabled' => ), "task_key='bulkmail'" );
        }
        else
        {
            
$this->DB->update'bulk_mail', array(    'mail_updated'    => time(),
                                                        
'mail_sentto'    => $sofar $sent 
                                                    
), 'mail_id=' $mail['mail_id'] );
        }            
    }
    
    
/**
     * Complete bulk mail processing
     *
     * @return    @e void
     */
    
protected function _mailSendComplete()
    {
        
$pergo intval$this->request['pergo'] );
        
$id    intval$this->request['id'] );
        
        if ( ! 
$id )
        {
            
$this->registry->output->global_message $this->lang->words['b_norecord'];
            
$this->_mailStart();
            return;
        }
        
        
//-----------------------------------------
        // Get it from the db
        //-----------------------------------------
        
        
$mail $this->DB->buildAndFetch( array( 'select' => '*''from' => 'bulk_mail''where' => 'mail_id=' $id ) );
        
        if ( ! 
$mail['mail_subject'] and ! $mail['mail_content'] )
        {
            
$this->registry->output->global_message $this->lang->words['b_nosend'];
            
$this->_mailStart();
            return;
        }
        
        
//-----------------------------------------
        // Update mail
        //-----------------------------------------
        
        
if ( ! $pergo or $pergo 1000 )
        {
            
$pergo 50;
        }
        
        
$this->DB->update'bulk_mail', array( 'mail_active' => 1'mail_pergo' => $pergo'mail_sentto' => 0'mail_start' => time() ), 'mail_id=' $id );
        
$this->DB->update'bulk_mail', array( 'mail_active' => ) , 'mail_id <> ' $id );
        
        
//-----------------------------------------
        // Wake up task manager
        //-----------------------------------------
        
        
$classToLoad IPSLib::loadLibraryIPS_ROOT_PATH 'sources/classes/class_taskmanager.php''class_taskmanager' );
        
$task        = new $classToLoad$this->registry );

        
$this->DB->update'task_manager', array( 'task_enabled' => ), "task_key='bulkmail'" );
        
        
$this_task $this->DB->buildAndFetch( array( 'select' => '*''from' => 'task_manager''where' => "task_key='bulkmail'" ) );

        
$newdate $task->generateNextRun$this_task );
        
        
$this->DB->update'task_manager', array( 'task_next_run' => $newdate ), "task_id=".$this_task['task_id'] );
            
        
$task->saveNextRunStamp();
        
        
//-----------------------------------------
        // Sit back and watch the show
        //-----------------------------------------
        
        
$this->registry->output->global_message $this->lang->words['b_initiated'];
        
        
$this->_mailStart();
    }

    
/**
     * Start the sending of the bulk mail
     *
     * @return    @e void
     */
    
protected function _mailSendStart()
    {
        
$id intval($this->request['id']);
        
        if ( ! 
$id )
        {
            
$this->registry->output->global_message $this->lang->words['b_noid'];
            
$this->_mailStart();
            return;
        }
        
        
//-----------------------------------------
        // Get it from the db
        //-----------------------------------------
        
        
$mail $this->DB->buildAndFetch( array( 'select' => '*''from' => 'bulk_mail''where' => 'mail_id=' $id ) );
        
        if ( ! 
$mail['mail_subject'] and ! $mail['mail_content'] )
        {
            
$this->registry->output->global_message $this->lang->words['b_nosend'];
            
$this->_mailStart();
            return;
        }
        
        
//-----------------------------------------
        // Unconvert options
        //-----------------------------------------
        
        
$opts unserializestripslashes$mail['mail_opts'] ) );
        
        foreach( 
$opts as $k => $v )
        {
            
$mail$k ] = $v;
        }
        
        
//-----------------------------------------
         // Format the query
         //-----------------------------------------
         
         
$query $this->_buildMembersQuery$mail );
                                
        
//-----------------------------------------
        // Count how many matches
        //-----------------------------------------
        
        
$count $this->DB->buildAndFetch( array( 'select' => 'count(*) as cnt''from' => 'members''where' => $query ) );
        
        
$the_count intval$count['cnt'] );
        
        
//-----------------------------------------
        // Print 'continue' screen
        //-----------------------------------------
        
        
$this->registry->output->html .= $this->html->mailSendStart$mail$the_count );
    }
        
    
/**
     * Process the sending of the bulk mail
     *
     * @return    @e void
     */
    
protected function _mailPreviewComplete()
    {
        
$id            intval($this->request['id']);
        
$content    "";
        
        
//-----------------------------------------
        // Grab content and format it
        //-----------------------------------------
        
        
if( $id )
        {        
            
//-----------------------------------------
            // Get it from the db
            //-----------------------------------------
        
            
$mail        $this->DB->buildAndFetch( array( 'select' => '*''from' => 'bulk_mail''where' => 'mail_id=' $id ) );

            
$content    $this->_convertQuickTagsIPSText::stripslashes($mail['mail_content']), $this->memberData );
            
            
$mailopts    unserialize$mail['mail_opts'] );

            if( 
$mailopts['mail_html_on'] == )
            {
                
$content    nl2brhtmlspecialchars$contentENT_QUOTES ) );
            }
        }
        else
        {
            if( 
$_POST['html'] )
            {
                
$content    $this->_convertQuickTagsIPSText::stripslashes($_POST['text']), $this->memberData );
            }
            else
            {
                
$content    nl2brhtmlspecialchars$this->_convertQuickTagsIPSText::stripslashes($_POST['text']), $this->memberData ), ENT_QUOTES) );
            }
        }
        
        
//-----------------------------------------
        // Print headers and content (to iframe)
        //-----------------------------------------
        
        
header("Content-Disposition: inline");

        
ob_end_clean();

        
$this->registry->output->html .= $this->html->mailIframeContent$content );
        
$this->registry->output->printPopupWindow();

        exit();
    }
    
    
/**
     * Preview the email (javascript popup)
     *
     * @return    @e void
     */
    
protected function _mailPreviewStart()
    {
        
$this->registry->output->html .= $this->html->mailPopupContent();
        
$this->registry->output->printPopupWindow();
        exit();
    }
    
    
/**
     * Save the new or edited bulk mail
     *
     * @return    @e void
     */
    
protected function _mailSave()
    {
        
//-----------------------------------------
        // Set up
        //-----------------------------------------
        
        
$ids    = array();
        
$id        intval($this->request['id']);
        
$type    $this->request['type'];
        
        
//-----------------------------------------
        // Start
        //-----------------------------------------

        
if ( ! $this->request['mail_subject'] or ! $this->request['mail_content'] )
        {
            
$this->registry->output->global_message $this->lang->words['b_entercont'];
            
$this->_mailForm$type );
            return;
        }
        
        
//-----------------------------------------
        // Groups...
        //-----------------------------------------
        
        
foreach( $_POST as $key => $value )
         {
             if( 
preg_match'/^sg_(d+)$/'$key$match ) )
             {                 
                 if( 
$this->request$match[0] ] AND $value )
                 {
                     
$ids[] = $match[1];
                 }
             }
         }

         
$ids IPSLib::cleanIntArray$ids );

         if( ! 
count$ids ) )
         {
             
$this->registry->output->global_message $this->lang->words['b_nogroups'];
             
$this->_mailForm$type );
             return;
         }
         
         
$this->request['mail_groups'] =  implode","$ids  );
         
         
//-----------------------------------------
         // Format the query
         //-----------------------------------------
         
         
$query $this->_buildMembersQuery( array( 'mail_post_ltmt'            => $this->request['mail_post_ltmt'],
                                                    
'mail_filter_post'        => $this->request['mail_filter_post'],
                                                    
'mail_visit_ltmt'        => $this->request['mail_visit_ltmt'],
                                                    
'mail_filter_visit'        => intval($this->request['mail_filter_visit']),
                                                    
'mail_joined_ltmt'        => $this->request['mail_joined_ltmt'],
                                                    
'mail_filter_joined'    => intval($this->request['mail_filter_joined']),
                                                    
'mail_groups'            => $this->request['mail_groups'],
                                            )      );

        
//-----------------------------------------
        // Count how many matches
        //-----------------------------------------
        
        
$count $this->DB->buildAndFetch( array( 'select' => 'count(*) as cnt''from' => 'members''where' => $query ) );
        
        if ( ! 
$count['cnt'] )
        {
            
$this->registry->output->global_message $this->lang->words['b_nonefound'];
            
$this->_mailForm$type );
            return;
        }
        
        
//-----------------------------------------
        // Save
        //-----------------------------------------
        
        
$save_array = array(
                            
'mail_subject'    => IPSText::stripslashes$_POST['mail_subject'] ),
                            
'mail_content'    => IPSText::stripslashes$_POST['mail_content'] ),
                            
'mail_groups'    => $this->request['mail_groups'],
                            
'mail_start'    => time(),
                            
'mail_updated'    => time(),
                            
'mail_sentto'    => 0,
                            
'mail_opts'        => serialize( array( 'mail_post_ltmt'     => $_POST['mail_post_ltmt'],
                                                                 
'mail_filter_post'   => $_POST['mail_filter_post'],
                                                                 
'mail_visit_ltmt'    => $_POST['mail_visit_ltmt'],
                                                                 
'mail_filter_visit'  => $_POST['mail_filter_visit'],
                                                                 
'mail_joined_ltmt'   => $_POST['mail_joined_ltmt'],
                                                                 
'mail_filter_joined' => $_POST['mail_filter_joined'],
                                                                 
'mail_html_on'       => $_POST['mail_html_on'],
                                                        )      )
                         );
                         
        if ( 
$type == 'add' )
        {
            
//-----------------------------------------
            // Save to DB
            //-----------------------------------------
            
            
$this->DB->insert'bulk_mail'$save_array );
            
            
$this->request'id'] =  $this->DB->getInsertId( );

            
ipsRegistry::getClass('adminFunctions')->saveAdminLogsprintf$this->lang->words['b_maillogadd'], $this->request['mail_subject'] ) );
            
$this->_mailSendStart();
            return;
        }
        else
        {
            if ( ! 
$id )
            {
                
$this->registry->output->global_message $this->lang->words['b_norecord'];
                
$this->_mailForm$type );
                return;
            }
            
            
$this->DB->update'bulk_mail'$save_array'mail_id=' $id );
            
            
ipsRegistry::getClass('adminFunctions')->saveAdminLogsprintf$this->lang->words['b_maillogedit'], $this->request['mail_subject'] ) );
            
            
$this->registry->output->global_message $this->lang->words['b_edited'];
            
$this->_mailStart();
            return;
        }
    }
    
    
/**
     * Show the edit bulk mail form
     *
     * @param    string        [add|edit]
     * @return    @e void
     */
    
protected function _mailForm$type='add' )
    {
        
//-----------------------------------------
        // Init some values
        //-----------------------------------------
        
        
$id            intval($this->request['id']);
        
        if ( 
$type == 'add' )
        {
            
$mail            = array();
        }
        else
        {
            
$mail             $this->DB->buildAndFetch( array( 'select' => '*''from' => 'bulk_mail''where' => 'mail_id='.$this->request['id'] ) );
        }
        
        if ( 
$this->request['mail_groups'] )
        {
            
$mail['mail_groups'] = $this->request['mail_groups'];
        }

        
//-----------------------------------------
        // Format mail content
        //-----------------------------------------
        
        
$mail_content    $_POST['mail_content'] ? IPSText::stripslashes($_POST['mail_content']) : $mail['mail_content'];
        
$mail_content    preg_replace"[^r]n""rn"$mail_content );
        
        if ( !
$mail_content and $type == 'add' )
        {
            
$mail_content $this->_getDefaultMailContents();
        }
        
        
$mail_content    htmlspecialchars$mail_contentENT_QUOTES );

        
$this->registry->output->html .= $this->html->mailForm$type$mail$mail_content );
    }
    
    
/**
     * Show the main bulk mail overview screen
     *
     * @return    @e void
     */
    
protected function _mailStart()
    {
        
$content    '';
        
$st            intval$this->request['st'] );
        
$perpage    50;
        
        
/* Get count */
        
$items $this->DB->buildAndFetch( array( 'select' => 'COUNT(*) as cnt',
                                                  
'from'   => 'bulk_mail' ) );
                                                  
        
        
//-----------------------------------------
        // Get mail from DB
        // WHERE clause helps query use index properly
        //-----------------------------------------
        
        
$this->DB->build( array( 'select' => '*''from' => 'bulk_mail''where' => 'mail_start > 0''order' => 'mail_start DESC''limit' => array( $st$perpage ) ) );
        
$this->DB->execute();
        
        while( 
$r $this->DB->fetch() )
        {
            
$r['_mail_start']    = ipsRegistry::getClass'class_localization')->getDate$r['mail_start'], 'SHORT' );
            
$r['_mail_sentto']    = ipsRegistry::getClass('class_localization')->formatNumber$r['mail_sentto'] ) . ' members';

            
$content .= $this->html->mailOverviewRow$r );
        }
        
        
/* Pages */
        
$pages $this->registry->output->generatePagination( array( 'totalItems'            => $items['cnt'],
                                                                     
'itemsPerPage'            => $perpage,
                                                                     
'currentStartValue'    => $st,
                                                                     
'baseUrl'                => $this->settings['base_url'] . 'app=members&amp;module=bulkmail&do=bulk_mail' ) );

        
$this->registry->output->html .= $this->html->mailOverviewWrapper$content$pages );
    }
    
    
/**
     * Build the query to retrieve the members
     *
     * @param    array         Arguments to send to the query
     * @return    string        Formatted query
     */
    
protected function _buildMembersQuery$args = array() )
    {
        
$query = array();
        
        if ( 
is_numeric($args['mail_filter_post']) )
        {
            
$ltmt    $args['mail_post_ltmt'] == 'lt' '<' '>';
            
$query[] = "posts " $ltmt " " intval($args['mail_filter_post']);
        }
        
        if ( 
$args['mail_filter_visit'] )
        {
            
$ltmt    $args['mail_visit_ltmt'] == 'lt' '>' '<';
            
$time    time() - ( $args['mail_filter_visit'] * 86400 );
            
$query[] = "last_visit " $ltmt " " $time;
        }
        
        if ( 
$args['mail_filter_joined'] )
        {
            
$ltmt    $args['mail_joined_ltmt'] == 'lt' '>' '<';
            
$time    time() - ( $args['mail_filter_joined'] * 86400 );
            
$query[] = "joined " $ltmt " " $time;
        }
        
        
$query[] = "allow_admin_mails=1";

        
/* Make sure member is not flagged as banned/spammer. Bug #37748 */
        
$query[] = "member_banned=0";
        
$query[] = "( ! " IPSBWOptions::sql'bw_is_spammer''members_bitoptions''members''global''has' ) . ")";
        
        if ( 
$args['mail_groups'] )
        {
            
$tmp_q '(member_group_id IN (' $args['mail_groups'] . ')';
            
            
$temp  explode','$args['mail_groups'] );
            
            if ( 
is_array$temp ) and count$temp ) )
            {
                
$tmp = array();
                
                foreach( 
$temp as $id )
                {
                    
$tmp[] = $this->DB->buildConcat( array( array( ',''string' ), array( 'mgroup_others' ), array( ',''string' ) ) ) . "LIKE '%,{$id},%'";
                }
                
                
$tmp_q .= " OR ( " implode' OR '$tmp ) . " ) )";
            }
            else
            {
                
$tmp_q .= ")";
            }
            
            
$query[] = $tmp_q;
        }
    
        return 
implode' AND '$query );
    }
    
    
/**
     * Conver the 'quick tags' in the email
     *
     * @param     string        The email contents
     * @param    array         Member information
     * @return    string        The email contents, replaced
     */
    
protected function _convertQuickTags$contents=""$member=array() )
    {
        
$contents str_replace"{board_name}"   str_replace"&#39;""'"$this->settings['board_name'] ) , $contents );
        
$contents str_replace"{board_url}"    $this->settings['board_url'] . "/index." $this->settings['php_ext'] , $contents );
        
$contents str_replace"{reg_total}"    $this->caches['stats']['mem_count'] , $contents );
        
$contents str_replace"{total_posts}"  $this->caches['stats']['total_topics'] + $this->caches['stats']['total_replies'] , $contents );
        
$contents str_replace"{busy_count}"   $this->caches['stats']['most_count'] , $contents );
        
$contents str_replace"{busy_time}"    ipsRegistry::getClass'class_localization')->getDate$this->caches['stats']['most_date'], 'SHORT' ), $contents );
        
$contents str_replace"{member_id}"    $member['member_id'], $contents );
        
$contents str_replace"{member_name}"  $member['members_display_name'], $contents );
        
$contents str_replace"{member_joined}"ipsRegistry::getClass'class_localization')->getDate$member['joined'], 'JOINED' ), $contents );
        
$contents str_replace"{member_posts}" $member['posts'], $contents );
        
        return 
$contents;
    }
    
    
/**
     * Retrieve the 'default' email contents
     *
     * @return    string        Default email contents
     */
    
protected function _getDefaultMailContents()
    {
        
$mail $this->lang->words['b_mailcontents'];
              
        return 
$mail;
    }    
}
Онлайн: 2
Реклама