[ Index ] |
PHP Cross Reference of phpBB-3.1.12-deutsch |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * 4 * This file is part of the phpBB Forum Software package. 5 * 6 * @copyright (c) phpBB Limited <https://www.phpbb.com> 7 * @license GNU General Public License, version 2 (GPL-2.0) 8 * 9 * For full copyright and license information, please see 10 * the docs/CREDITS.txt file. 11 * 12 */ 13 14 namespace phpbb\message; 15 16 /** 17 * Class user_form 18 * Allows users to send emails to other users 19 */ 20 class user_form extends form 21 { 22 /** @var int */ 23 protected $recipient_id; 24 /** @var array */ 25 protected $recipient_row; 26 /** @var string */ 27 protected $subject; 28 29 /** 30 * Get the data of the recipient 31 * 32 * @param int $user_id 33 * @return false|array false if the user does not exist, array otherwise 34 */ 35 protected function get_user_row($user_id) 36 { 37 $sql = 'SELECT user_id, username, user_colour, user_email, user_allow_viewemail, user_lang, user_jabber, user_notify_type 38 FROM ' . USERS_TABLE . ' 39 WHERE user_id = ' . (int) $user_id . ' 40 AND user_type IN (' . USER_NORMAL . ', ' . USER_FOUNDER . ')'; 41 $result = $this->db->sql_query($sql); 42 $row = $this->db->sql_fetchrow($result); 43 $this->db->sql_freeresult($result); 44 45 return $row; 46 } 47 48 /** 49 * {inheritDoc} 50 */ 51 public function check_allow() 52 { 53 $error = parent::check_allow(); 54 if ($error) 55 { 56 return $error; 57 } 58 59 if (!$this->auth->acl_get('u_sendemail')) 60 { 61 return 'NO_EMAIL'; 62 } 63 64 if ($this->recipient_id == ANONYMOUS || !$this->config['board_email_form']) 65 { 66 return 'NO_EMAIL'; 67 } 68 69 if (!$this->recipient_row) 70 { 71 return 'NO_USER'; 72 } 73 74 // Can we send email to this user? 75 if (!$this->recipient_row['user_allow_viewemail'] && !$this->auth->acl_get('a_user')) 76 { 77 return 'NO_EMAIL'; 78 } 79 80 return false; 81 } 82 83 /** 84 * {inheritDoc} 85 */ 86 public function bind(\phpbb\request\request_interface $request) 87 { 88 parent::bind($request); 89 90 $this->recipient_id = $request->variable('u', 0); 91 $this->subject = $request->variable('subject', '', true); 92 93 $this->recipient_row = $this->get_user_row($this->recipient_id); 94 } 95 96 /** 97 * {inheritDoc} 98 */ 99 public function submit(\messenger $messenger) 100 { 101 if (!$this->subject) 102 { 103 $this->errors[] = $this->user->lang['EMPTY_SUBJECT_EMAIL']; 104 } 105 106 if (!$this->body) 107 { 108 $this->errors[] = $this->user->lang['EMPTY_MESSAGE_EMAIL']; 109 } 110 111 $this->message->set_template('profile_send_email'); 112 $this->message->set_subject($this->subject); 113 $this->message->set_body($this->body); 114 $this->message->add_recipient_from_user_row($this->recipient_row); 115 116 parent::submit($messenger); 117 } 118 119 /** 120 * {inheritDoc} 121 */ 122 public function render(\phpbb\template\template $template) 123 { 124 parent::render($template); 125 126 $template->assign_vars(array( 127 'S_SEND_USER' => true, 128 'S_POST_ACTION' => append_sid($this->phpbb_root_path . 'memberlist.' . $this->phpEx, 'mode=email&u=' . $this->recipient_id), 129 130 'L_SEND_EMAIL_USER' => $this->user->lang('SEND_EMAIL_USER', $this->recipient_row['username']), 131 'USERNAME_FULL' => get_username_string('full', $this->recipient_row['user_id'], $this->recipient_row['username'], $this->recipient_row['user_colour']), 132 'SUBJECT' => $this->subject, 133 'MESSAGE' => $this->body, 134 )); 135 } 136 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Thu Jan 11 00:25:41 2018 | Cross-referenced by PHPXref 0.7.1 |