aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/message/form.php
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB/includes/message/form.php')
-rw-r--r--phpBB/includes/message/form.php119
1 files changed, 119 insertions, 0 deletions
diff --git a/phpBB/includes/message/form.php b/phpBB/includes/message/form.php
new file mode 100644
index 0000000000..2da5406a63
--- /dev/null
+++ b/phpBB/includes/message/form.php
@@ -0,0 +1,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['board_contact'], $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) : '',
+ ));
+ }
+}