Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 8
CRAP
0.00% covered (danger)
0.00%
0 / 60
form
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 8
240.00
0.00% covered (danger)
0.00%
0 / 60
 __construct
0.00% covered (danger)
0.00%
0 / 1
2.00
0.00% covered (danger)
0.00%
0 / 10
 get_page_title
0.00% covered (danger)
0.00%
0 / 1
2.00
0.00% covered (danger)
0.00%
0 / 3
 get_template_file
0.00% covered (danger)
0.00%
0 / 1
2.00
0.00% covered (danger)
0.00%
0 / 3
 check_allow
0.00% covered (danger)
0.00%
0 / 1
12.00
0.00% covered (danger)
0.00%
0 / 11
 get_return_message
0.00% covered (danger)
0.00%
0 / 1
2.00
0.00% covered (danger)
0.00%
0 / 3
 bind
0.00% covered (danger)
0.00%
0 / 1
2.00
0.00% covered (danger)
0.00%
0 / 4
 submit
0.00% covered (danger)
0.00%
0 / 1
30.00
0.00% covered (danger)
0.00%
0 / 20
 render
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
0.00%
0 / 6
<?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 phpbb\message;
/**
* Abstract class form
*/
abstract class form
{
    /** @var \phpbb\auth\auth */
    protected $auth;
    /** @var \phpbb\config\config */
    protected $config;
    /** @var \phpbb\db\driver\driver_interface */
    protected $db;
    /** @var \phpbb\message\message */
    protected $message;
    /** @var \phpbb\user */
    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 \phpbb\auth\auth $auth
    * @param \phpbb\config\config $config
    * @param \phpbb\db\driver\driver_interface $db
    * @param \phpbb\user $user
    * @param string $phpbb_root_path
    * @param string $phpEx
    */
    public function __construct(\phpbb\auth\auth $auth, \phpbb\config\config $config, \phpbb\db\driver\driver_interface $db, \phpbb\user $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 \phpbb\request\request_interface $request
    * @return null
    */
    public function bind(\phpbb\request\request_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[] = $this->user->lang('FORM_INVALID');
        }
        if (!count($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($messenger, phpbb_get_board_contact($this->config, $this->phpEx));
            meta_refresh(3, append_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 \phpbb\template\template $template
    * @return null
    */
    public function render(\phpbb\template\template $template)
    {
        add_form_key('memberlist_email');
        $template->assign_vars(array(
            'ERROR_MESSAGE'        => (count($this->errors)) ? implode('<br />', $this->errors) : '',
        ));
    }
}