Вход Регистрация
Файл: phpbb/message/form.php
Строк: 117
<?php
/**
*
* This file is part of the phpBB Forum Software package.
*
* @copyright (c) phpBB Limited <https://www.phpbb.com>
* @license GNU General Public License, version 2 (GPL-2.0)
*
* For full copyright and license information, please see
* the docs/CREDITS.txt file.
*
*/

namespace phpbbmessage;

/**
* Abstract class form
*/
abstract class form
{
    
/** @var phpbbauthauth */
    
protected $auth;
    
/** @var phpbbconfigconfig */
    
protected $config;
    
/** @var phpbbdbdriverdriver_interface */
    
protected $db;
    
/** @var phpbbmessagemessage */
    
protected $message;
    
/** @var phpbbuser */
    
protected $user;

    
/** @var string */
    
protected $phpbb_root_path;
    
/** @var string */
    
protected $phpEx;

    
/** @var array */
    
protected $errors = array();
    
/** @var bool */
    
protected $cc_sender;
    
/** @var string */
    
protected $body;

    
/**
    * Construct
    *
    * @param phpbbauthauth $auth
    * @param phpbbconfigconfig $config
    * @param phpbbdbdriverdriver_interface $db
    * @param phpbbuser $user
    * @param string $phpbb_root_path
    * @param string $phpEx
    */
    
public function __construct(phpbbauthauth $authphpbbconfigconfig $configphpbbdbdriverdriver_interface $dbphpbbuser $user$phpbb_root_path$phpEx)
    {
        
$this->phpbb_root_path $phpbb_root_path;
        
$this->phpEx $phpEx;
        
$this->user $user;
        
$this->auth $auth;
        
$this->config $config;
        
$this->db $db;

        
$this->message = new message($config['server_name']);
        
$this->message->set_sender_from_user($this->user);
    }

    
/**
    * Returns the title for the email form page
    *
    * @return string
    */
    
public function get_page_title()
    {
        return 
$this->user->lang['SEND_EMAIL'];
    }

    
/**
    * Returns the file name of the form template
    *
    * @return string
    */
    
public function get_template_file()
    {
        return 
'memberlist_email.html';
    }

    
/**
    * Checks whether the user is allowed to use the form
    *
    * @return false|string    Error string if not allowed, false otherwise
    */
    
public function check_allow()
    {
        if (!
$this->config['email_enable'])
        {
            return 
'EMAIL_DISABLED';
        }

        if (
time() - $this->user->data['user_emailtime'] < $this->config['flood_interval'])
        {
            return 
'FLOOD_EMAIL_LIMIT';
        }

        return 
false;
    }

    
/**
    * Get the return link after the message has been sent
    *
    * @return string
    */
    
public function get_return_message()
    {
        return 
sprintf($this->user->lang['RETURN_INDEX'], '<a href="' append_sid($this->phpbb_root_path 'index.' $this->phpEx) . '">''</a>');
    }

    
/**
    * Bind the values of the request to the form
    *
    * @param phpbbrequestrequest_interface $request
    * @return null
    */
    
public function bind(phpbbrequestrequest_interface $request)
    {
        
$this->cc_sender $request->is_set_post('cc_sender');
        
$this->body $request->variable('message'''true);
    }

    
/**
    * Submit form, generate the email and send it
    *
    * @param messenger $messenger
    * @return null
    */
    
public function submit(messenger $messenger)
    {
        if (!
check_form_key('memberlist_email'))
        {
            
$this->errors[] = 'FORM_INVALID';
        }

        if (!
sizeof($this->errors))
        {
            
$sql 'UPDATE ' USERS_TABLE '
                SET user_emailtime = ' 
time() . '
                WHERE user_id = ' 
$this->user->data['user_id'];
            
$this->db->sql_query($sql);

            if (
$this->cc_sender && $this->user->data['is_registered'])
            {
                
$this->message->cc_sender();
            }

            
$this->message->send($messengerphpbb_get_board_contact($this->config$this->phpEx));

            
meta_refresh(3append_sid($this->phpbb_root_path 'index.' $this->phpEx));
            
trigger_error($this->user->lang['EMAIL_SENT'] . '<br /><br />' $this->get_return_message());
        }
    }

    
/**
    * Render the template of the form
    *
    * @param phpbbtemplatetemplate $template
    * @return null
    */
    
public function render(phpbbtemplatetemplate $template)
    {
        
add_form_key('memberlist_email');

        
$template->assign_vars(array(
            
'ERROR_MESSAGE'        => (sizeof($this->errors)) ? implode('<br />'$this->errors) : '',
        ));
    }
}
Онлайн: 2
Реклама