aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/phpbb/message
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB/phpbb/message')
-rw-r--r--phpBB/phpbb/message/admin_form.php21
-rw-r--r--phpBB/phpbb/message/form.php64
-rw-r--r--phpBB/phpbb/message/message.php101
-rw-r--r--phpBB/phpbb/message/topic_form.php33
-rw-r--r--phpBB/phpbb/message/user_form.php55
5 files changed, 251 insertions, 23 deletions
diff --git a/phpBB/phpbb/message/admin_form.php b/phpBB/phpbb/message/admin_form.php
index dc995062a0..5201994c73 100644
--- a/phpBB/phpbb/message/admin_form.php
+++ b/phpBB/phpbb/message/admin_form.php
@@ -9,12 +9,24 @@
namespace phpbb\message;
+/**
+* Class admin_form
+* Displays a message to the user and allows him to send an email
+*
+* @package phpbb\message
+*/
class admin_form extends form
{
+ /** @var string */
protected $subject;
+ /** @var string */
protected $sender_name;
+ /** @var string */
protected $sender_address;
+ /**
+ * {inheritDoc}
+ */
public function check_allow()
{
$error = parent::check_allow();
@@ -31,6 +43,9 @@ class admin_form extends form
return false;
}
+ /**
+ * {inheritDoc}
+ */
public function bind(\phpbb\request\request_interface $request)
{
parent::bind($request);
@@ -40,6 +55,9 @@ class admin_form extends form
$this->sender_name = $request->variable('name', '', true);
}
+ /**
+ * {inheritDoc}
+ */
public function submit(\messenger $messenger)
{
if (!$this->subject)
@@ -93,6 +111,9 @@ class admin_form extends form
parent::submit($messenger);
}
+ /**
+ * {inheritDoc}
+ */
public function render(\phpbb\template\template $template)
{
$template->assign_vars(array(
diff --git a/phpBB/phpbb/message/form.php b/phpBB/phpbb/message/form.php
index 91da2d69b5..205999e5f2 100644
--- a/phpBB/phpbb/message/form.php
+++ b/phpBB/phpbb/message/form.php
@@ -9,6 +9,11 @@
namespace phpbb\message;
+/**
+* Abstract class form
+*
+* @package phpbb\message
+*/
abstract class form
{
/** @var \phpbb\auth\auth */
@@ -17,6 +22,8 @@ abstract class form
protected $config;
/** @var \phpbb\db\driver\driver_interface */
protected $db;
+ /** @var \phpbb\message\message */
+ protected $message;
/** @var \phpbb\user */
protected $user;
@@ -25,11 +32,23 @@ abstract class form
/** @var string */
protected $phpEx;
- protected $errors;
- protected $message;
+ /** @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;
@@ -39,25 +58,35 @@ abstract class form
$this->config = $config;
$this->db = $db;
- $this->errors = array();
-
- $this->message = new \phpbb\message\message($config['server_name']);
+ $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()
{
- $this->user->lang['SEND_EMAIL'];
+ 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'])
@@ -73,17 +102,34 @@ abstract class form
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'))
@@ -110,6 +156,12 @@ abstract class form
}
}
+ /**
+ * 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');
diff --git a/phpBB/phpbb/message/message.php b/phpBB/phpbb/message/message.php
index 899d553a6d..332604cc8e 100644
--- a/phpBB/phpbb/message/message.php
+++ b/phpBB/phpbb/message/message.php
@@ -9,63 +9,129 @@
namespace phpbb\message;
+/**
+* Class message
+* Holds all information for an email and sends it in the end
+*
+* @package phpbb\message
+*/
class message
{
+ /** @var string */
protected $server_name;
+ /** @var string */
protected $subject = '';
+ /** @var string */
protected $body = '';
+ /** @var string */
protected $template = '';
+ /** @var array */
protected $template_vars = array();
+ /** @var string */
protected $sender_ip = '';
+ /** @var string */
protected $sender_name = '';
+ /** @var string */
protected $sender_address = '';
+ /** @var string */
protected $sender_lang = '';
+ /** @var string */
protected $sender_id = '';
+ /** @var string */
protected $sender_username = '';
+ /** @var string */
protected $sender_jabber = '';
+ /** @var int */
protected $sender_notify_type = NOTIFY_EMAIL;
+ /** @var array */
protected $recipients;
+ /**
+ * Construct
+ *
+ * @param string $server_name Used for AntiAbuse header
+ */
public function __construct($server_name)
{
$this->server_name = $server_name;
}
+ /**
+ * Set the subject of the email
+ *
+ * @param string $subject
+ * @return null
+ */
public function set_subject($subject)
{
$this->subject = $subject;
}
+ /**
+ * Set the body of the email text
+ *
+ * @param string $body
+ * @return null
+ */
public function set_body($body)
{
$this->body = $body;
}
+ /**
+ * Set the name of the email template to use
+ *
+ * @param string $template
+ * @return null
+ */
public function set_template($template)
{
$this->template = $template;
}
+ /**
+ * Set the array with the "template" data for the email
+ *
+ * @param array $template_vars
+ * @return null
+ */
public function set_template_vars($template_vars)
{
$this->template_vars = $template_vars;
}
+ /**
+ * Add a recipient from \phpbb\user
+ *
+ * @param \phpbb\user $user
+ * @return null
+ */
public function add_recipient_from_user_row(array $user)
{
$this->add_recipient(
$user['username'],
$user['user_email'],
$user['user_lang'],
+ $user['user_notify_type'],
$user['username'],
- $user['user_jabber'],
- $user['user_notify_type']
+ $user['user_jabber']
);
}
+ /**
+ * Add a recipient
+ *
+ * @param string $recipient_name Displayed sender name
+ * @param string $recipient_address Email address
+ * @param string $recipient_lang
+ * @param int $recipient_notify_type Used notification methods (Jabber, Email, ...)
+ * @param string $recipient_username User Name (used for AntiAbuse header)
+ * @param string $recipient_jabber
+ * @return null
+ */
public function add_recipient($recipient_name, $recipient_address, $recipient_lang, $recipient_notify_type = NOTIFY_EMAIL, $recipient_username = '', $recipient_jabber = '')
{
$this->recipients[] = array(
@@ -79,6 +145,12 @@ class message
);
}
+ /**
+ * Set the senders data from \phpbb\user object
+ *
+ * @param \phpbb\user $user
+ * @return null
+ */
public function set_sender_from_user($user)
{
$this->set_sender(
@@ -94,6 +166,18 @@ class message
$this->set_sender_notify_type($user->data['user_notify_type']);
}
+ /**
+ * Set the senders data
+ *
+ * @param string $sender_ip
+ * @param string $sender_name Displayed sender name
+ * @param string $sender_address Email address
+ * @param string $sender_lang
+ * @param int $sender_id User ID
+ * @param string $sender_username User Name (used for AntiAbuse header)
+ * @param string $sender_jabber
+ * @return null
+ */
public function set_sender($sender_ip, $sender_name, $sender_address, $sender_lang = '', $sender_id = 0, $sender_username = '', $sender_jabber = '')
{
$this->sender_ip = $sender_ip;
@@ -105,6 +189,12 @@ class message
$this->sender_jabber = $sender_jabber;
}
+ /**
+ * Which notification type should be used? Jabber, Email, ...?
+ *
+ * @param int $sender_notify_type
+ * @return null
+ */
public function set_sender_notify_type($sender_notify_type)
{
$this->sender_notify_type = $sender_notify_type;
@@ -137,6 +227,13 @@ class message
);
}
+ /**
+ * Send the email
+ *
+ * @param \messenger $messenger
+ * @param string $phpEx
+ * @return null
+ */
public function send(\messenger $messenger, $phpEx)
{
if (!sizeof($this->recipients))
diff --git a/phpBB/phpbb/message/topic_form.php b/phpBB/phpbb/message/topic_form.php
index 5a5d090017..988028c301 100644
--- a/phpBB/phpbb/message/topic_form.php
+++ b/phpBB/phpbb/message/topic_form.php
@@ -9,15 +9,31 @@
namespace phpbb\message;
+/**
+* Class topic_form
+* Form used to send topics as notification emails
+*
+* @package phpbb\message
+*/
class topic_form extends form
{
+ /** @var int */
protected $topic_id;
-
+ /** @var array */
protected $topic_row;
+ /** @var string */
protected $recipient_address;
+ /** @var string */
protected $recipient_name;
+ /** @var string */
protected $recipient_lang;
+ /**
+ * Get the data of the topic
+ *
+ * @param int $topic_id
+ * @return false|array false if the topic does not exist, array otherwise
+ */
protected function get_topic_row($topic_id)
{
$sql = 'SELECT forum_id, topic_title
@@ -30,6 +46,9 @@ class topic_form extends form
return $row;
}
+ /**
+ * {inheritDoc}
+ */
public function check_allow()
{
$error = parent::check_allow();
@@ -61,6 +80,9 @@ class topic_form extends form
return false;
}
+ /**
+ * {inheritDoc}
+ */
public function bind(\phpbb\request\request_interface $request)
{
parent::bind($request);
@@ -73,6 +95,9 @@ class topic_form extends form
$this->topic_row = $this->get_topic_row($this->topic_id);
}
+ /**
+ * {inheritDoc}
+ */
public function submit(\messenger $messenger)
{
if (!$this->recipient_address || !preg_match('/^' . get_preg_expression('email') . '$/i', $this->recipient_address))
@@ -102,11 +127,17 @@ class topic_form extends form
parent::submit($messenger);
}
+ /**
+ * {inheritDoc}
+ */
public function get_return_message()
{
return sprintf($this->user->lang['RETURN_TOPIC'], '<a href="' . append_sid($this->phpbb_root_path . 'viewtopic.' . $this->phpEx, 'f=' . $this->topic_row['forum_id'] . '&amp;t=' . $this->topic_id) . '">', '</a>');
}
+ /**
+ * {inheritDoc}
+ */
public function render(\phpbb\template\template $template)
{
parent::render($template);
diff --git a/phpBB/phpbb/message/user_form.php b/phpBB/phpbb/message/user_form.php
index a76d553b7c..5e98590c58 100644
--- a/phpBB/phpbb/message/user_form.php
+++ b/phpBB/phpbb/message/user_form.php
@@ -9,12 +9,43 @@
namespace phpbb\message;
+/**
+* Class user_form
+* Allows users to send emails to other users
+*
+* @package phpbb\message
+*/
class user_form extends form
{
+ /** @var int */
protected $recipient_id;
- protected $subject;
+ /** @var array */
protected $recipient_row;
+ /** @var string */
+ protected $subject;
+ /**
+ * Get the data of the recipient
+ *
+ * @param int $user_id
+ * @return false|array false if the user does not exist, array otherwise
+ */
+ protected function get_user_row($user_id)
+ {
+ $sql = 'SELECT username, user_email, user_allow_viewemail, user_lang, user_jabber, user_notify_type
+ FROM ' . USERS_TABLE . '
+ WHERE user_id = ' . (int) $user_id . '
+ AND user_type IN (' . USER_NORMAL . ', ' . USER_FOUNDER . ')';
+ $result = $this->db->sql_query($sql);
+ $row = $this->db->sql_fetchrow($result);
+ $this->db->sql_freeresult($result);
+
+ return $row;
+ }
+
+ /**
+ * {inheritDoc}
+ */
public function check_allow()
{
$error = parent::check_allow();
@@ -47,19 +78,9 @@ class user_form extends form
return false;
}
- protected function get_user_row($user_id)
- {
- $sql = 'SELECT username, user_email, user_allow_viewemail, user_lang, user_jabber, user_notify_type
- FROM ' . USERS_TABLE . '
- WHERE user_id = ' . ((int) $user_id) . '
- AND user_type IN (' . USER_NORMAL . ', ' . USER_FOUNDER . ')';
- $result = $this->db->sql_query($sql);
- $row = $this->db->sql_fetchrow($result);
- $this->db->sql_freeresult($result);
-
- return $row;
- }
-
+ /**
+ * {inheritDoc}
+ */
public function bind(\phpbb\request\request_interface $request)
{
parent::bind($request);
@@ -70,6 +91,9 @@ class user_form extends form
$this->recipient_row = $this->get_user_row($this->recipient_id);
}
+ /**
+ * {inheritDoc}
+ */
public function submit(\messenger $messenger)
{
if (!$this->subject)
@@ -90,6 +114,9 @@ class user_form extends form
parent::submit($messenger);
}
+ /**
+ * {inheritDoc}
+ */
public function render(\phpbb\template\template $template)
{
parent::render($template);