1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
<?php
/**
*
* @package message
* @copyright (c) 2011 phpBB Group
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
/**
* @ignore
*/
if (!defined('IN_PHPBB'))
{
exit;
}
abstract class phpbb_message_form
{
protected $phpbb_root_path;
protected $phpEx;
protected $user;
protected $auth;
protected $config;
protected $db;
protected $errors;
protected $message;
protected $cc_sender;
protected $body;
public function __construct($phpbb_root_path, $phpEx, $user, $auth, $config, $db)
{
$this->phpbb_root_path = $phpbb_root_path;
$this->phpEx = $phpEx;
$this->user = $user;
$this->auth = $auth;
$this->config = $config;
$this->db = $db;
$this->errors = array();
$this->message = new phpbb_message($config['server_name']);
$this->message->set_sender_from_user($this->user);
}
/**
* Returns the title for the email form page
*/
public function get_page_title()
{
$this->user->lang['SEND_EMAIL'];
}
public function get_template_file()
{
return 'memberlist_email.html';
}
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;
}
public function get_return_message()
{
return sprintf($this->user->lang['RETURN_INDEX'], '<a href="' . append_sid($this->phpbb_root_path . 'index.' . $this->phpEx) . '">', '</a>');
}
public function bind(phpbb_request_interface $request)
{
$this->cc_sender = $request->is_set_post('cc_sender');
$this->body = $request->variable('message', '', true);
}
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'];
$result = $this->db->sql_query($sql);
if ($this->cc_sender)
{
$this->message->cc_sender();
}
$this->message->send($messenger);
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());
}
}
public function render($template)
{
add_form_key('memberlist_email');
$template->assign_vars(array(
'ERROR_MESSAGE' => (sizeof($this->errors)) ? implode('<br />', $this->errors) : '',
));
}
}
|