Verzeichnisstruktur phpBB-3.2.0
- Veröffentlicht
- 06.01.2017
So funktioniert es
|
Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück |
Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis. |
|
(Beispiel Datei-Icons)
|
Auf das Icon klicken um den Quellcode anzuzeigen |
message.php
001 <?php
002 /**
003 *
004 * This file is part of the phpBB Forum Software package.
005 *
006 * @copyright (c) phpBB Limited <https://www.phpbb.com>
007 * @license GNU General Public License, version 2 (GPL-2.0)
008 *
009 * For full copyright and license information, please see
010 * the docs/CREDITS.txt file.
011 *
012 */
013
014 namespace phpbb\message;
015
016 /**
017 * Class message
018 * Holds all information for an email and sends it in the end
019 */
020 class message
021 {
022 /** @var string */
023 protected $server_name;
024
025 /** @var string */
026 protected $subject = '';
027 /** @var string */
028 protected $body = '';
029 /** @var string */
030 protected $template = '';
031 /** @var array */
032 protected $template_vars = array();
033
034 /** @var string */
035 protected $sender_ip = '';
036 /** @var string */
037 protected $sender_name = '';
038 /** @var string */
039 protected $sender_address = '';
040 /** @var string */
041 protected $sender_lang = '';
042 /** @var string */
043 protected $sender_id = '';
044 /** @var string */
045 protected $sender_username = '';
046 /** @var string */
047 protected $sender_jabber = '';
048 /** @var int */
049 protected $sender_notify_type = NOTIFY_EMAIL;
050
051 /** @var array */
052 protected $recipients;
053
054 /**
055 * Construct
056 *
057 * @param string $server_name Used for AntiAbuse header
058 */
059 public function __construct($server_name)
060 {
061 $this->server_name = $server_name;
062 }
063
064 /**
065 * Set the subject of the email
066 *
067 * @param string $subject
068 * @return null
069 */
070 public function set_subject($subject)
071 {
072 $this->subject = $subject;
073 }
074
075 /**
076 * Set the body of the email text
077 *
078 * @param string $body
079 * @return null
080 */
081 public function set_body($body)
082 {
083 $this->body = $body;
084 }
085
086 /**
087 * Set the name of the email template to use
088 *
089 * @param string $template
090 * @return null
091 */
092 public function set_template($template)
093 {
094 $this->template = $template;
095 }
096
097 /**
098 * Set the array with the "template" data for the email
099 *
100 * @param array $template_vars
101 * @return null
102 */
103 public function set_template_vars($template_vars)
104 {
105 $this->template_vars = $template_vars;
106 }
107
108 /**
109 * Add a recipient from \phpbb\user
110 *
111 * @param array $user
112 * @return null
113 */
114 public function add_recipient_from_user_row(array $user)
115 {
116 $this->add_recipient(
117 $user['username'],
118 $user['user_email'],
119 $user['user_lang'],
120 $user['user_notify_type'],
121 $user['username'],
122 $user['user_jabber']
123 );
124 }
125
126 /**
127 * Add a recipient
128 *
129 * @param string $recipient_name Displayed sender name
130 * @param string $recipient_address Email address
131 * @param string $recipient_lang
132 * @param int $recipient_notify_type Used notification methods (Jabber, Email, ...)
133 * @param string $recipient_username User Name (used for AntiAbuse header)
134 * @param string $recipient_jabber
135 * @return null
136 */
137 public function add_recipient($recipient_name, $recipient_address, $recipient_lang, $recipient_notify_type = NOTIFY_EMAIL, $recipient_username = '', $recipient_jabber = '')
138 {
139 $this->recipients[] = array(
140 'name' => $recipient_name,
141 'address' => $recipient_address,
142 'lang' => $recipient_lang,
143 'username' => $recipient_username,
144 'jabber' => $recipient_jabber,
145 'notify_type' => $recipient_notify_type,
146 'to_name' => $recipient_name,
147 );
148 }
149
150 /**
151 * Set the senders data from \phpbb\user object
152 *
153 * @param \phpbb\user $user
154 * @return null
155 */
156 public function set_sender_from_user($user)
157 {
158 $this->set_sender(
159 $user->ip,
160 $user->data['username'],
161 $user->data['user_email'],
162 $user->lang_name,
163 $user->data['user_id'],
164 $user->data['username'],
165 $user->data['user_jabber']
166 );
167
168 $this->set_sender_notify_type($user->data['user_notify_type']);
169 }
170
171 /**
172 * Set the senders data
173 *
174 * @param string $sender_ip
175 * @param string $sender_name Displayed sender name
176 * @param string $sender_address Email address
177 * @param string $sender_lang
178 * @param int $sender_id User ID
179 * @param string $sender_username User Name (used for AntiAbuse header)
180 * @param string $sender_jabber
181 * @return null
182 */
183 public function set_sender($sender_ip, $sender_name, $sender_address, $sender_lang = '', $sender_id = 0, $sender_username = '', $sender_jabber = '')
184 {
185 $this->sender_ip = $sender_ip;
186 $this->sender_name = $sender_name;
187 $this->sender_address = $sender_address;
188 $this->sender_lang = $sender_lang;
189 $this->sender_id = $sender_id;
190 $this->sender_username = $sender_username;
191 $this->sender_jabber = $sender_jabber;
192 }
193
194 /**
195 * Which notification type should be used? Jabber, Email, ...?
196 *
197 * @param int $sender_notify_type
198 * @return null
199 */
200 public function set_sender_notify_type($sender_notify_type)
201 {
202 $this->sender_notify_type = $sender_notify_type;
203 }
204
205 /**
206 * Ok, now the same email if CC specified, but without exposing the user's email address
207 *
208 * @return null
209 */
210 public function cc_sender()
211 {
212 if (!sizeof($this->recipients))
213 {
214 trigger_error('No email recipients specified');
215 }
216 if (!$this->sender_address)
217 {
218 trigger_error('No email sender specified');
219 }
220
221 $this->recipients[] = array(
222 'lang' => $this->sender_lang,
223 'address' => $this->sender_address,
224 'name' => $this->sender_name,
225 'username' => $this->sender_username,
226 'jabber' => $this->sender_jabber,
227 'notify_type' => $this->sender_notify_type,
228 'to_name' => $this->recipients[0]['to_name'],
229 );
230 }
231
232 /**
233 * Send the email
234 *
235 * @param \messenger $messenger
236 * @param string $contact
237 * @return null
238 */
239 public function send(\messenger $messenger, $contact)
240 {
241 if (!sizeof($this->recipients))
242 {
243 return;
244 }
245
246 foreach ($this->recipients as $recipient)
247 {
248 $messenger->template($this->template, $recipient['lang']);
249 $messenger->replyto($this->sender_address);
250 $messenger->to($recipient['address'], $recipient['name']);
251 $messenger->im($recipient['jabber'], $recipient['username']);
252
253 $messenger->headers('X-AntiAbuse: Board servername - ' . $this->server_name);
254 $messenger->headers('X-AntiAbuse: User IP - ' . $this->sender_ip);
255
256 if ($this->sender_id)
257 {
258 $messenger->headers('X-AntiAbuse: User_id - ' . $this->sender_id);
259 }
260 if ($this->sender_username)
261 {
262 $messenger->headers('X-AntiAbuse: Username - ' . $this->sender_username);
263 }
264
265 $messenger->subject(htmlspecialchars_decode($this->subject));
266
267 $messenger->assign_vars(array(
268 'BOARD_CONTACT' => $contact,
269 'TO_USERNAME' => htmlspecialchars_decode($recipient['to_name']),
270 'FROM_USERNAME' => htmlspecialchars_decode($this->sender_name),
271 'MESSAGE' => htmlspecialchars_decode($this->body))
272 );
273
274 if (sizeof($this->template_vars))
275 {
276 $messenger->assign_vars($this->template_vars);
277 }
278
279 $messenger->send($recipient['notify_type']);
280 }
281 }
282 }
283