Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 8 |
CRAP | |
0.00% |
0 / 60 |
form | |
0.00% |
0 / 1 |
|
0.00% |
0 / 8 |
240 | |
0.00% |
0 / 60 |
__construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 10 |
|||
get_page_title | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
get_template_file | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
check_allow | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 11 |
|||
get_return_message | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
bind | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
submit | |
0.00% |
0 / 1 |
30 | |
0.00% |
0 / 20 |
|||
render | |
0.00% |
0 / 1 |
6 | |
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) : '', | |
)); | |
} | |
} |