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 |
report_post.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\notification\type;
015
016 /**
017 * Reported post notifications class
018 * This class handles notifications for reported posts
019 */
020 class report_post extends \phpbb\notification\type\post_in_queue
021 {
022 /**
023 * Get notification type name
024 *
025 * @return string
026 */
027 public function get_type()
028 {
029 return 'notification.type.report_post';
030 }
031
032 /**
033 * Get the CSS style class of the notification
034 *
035 * @return string
036 */
037 public function get_style_class()
038 {
039 return 'notification-reported';
040 }
041
042 /**
043 * Language key used to output the text
044 *
045 * @var string
046 */
047 protected $language_key = 'NOTIFICATION_REPORT_POST';
048
049 /**
050 * Inherit notification read status from post.
051 *
052 * @var bool
053 */
054 protected $inherit_read_status = false;
055
056 /**
057 * Permission to check for (in find_users_for_notification)
058 *
059 * @var string Permission name
060 */
061 protected $permission = 'm_report';
062
063 /**
064 * Notification option data (for outputting to the user)
065 *
066 * @var bool|array False if the service should use it's default data
067 * Array of data (including keys 'id' and 'lang')
068 */
069 static public $notification_option = array(
070 'id' => 'notification.type.report',
071 'lang' => 'NOTIFICATION_TYPE_REPORT',
072 'group' => 'NOTIFICATION_GROUP_MODERATION',
073 );
074
075 /**
076 * Find the users who want to receive notifications
077 *
078 * @param array $post Data from the post
079 * @param array $options Options for finding users for notification
080 *
081 * @return array
082 */
083 public function find_users_for_notification($post, $options = array())
084 {
085 $notify_users = parent::find_users_for_notification($post, $options);
086
087 // never notify reporter
088 unset($notify_users[$this->user->data['user_id']]);
089
090 return $notify_users;
091 }
092
093 /**
094 * Get email template
095 *
096 * @return string|bool
097 */
098 public function get_email_template()
099 {
100 return 'report_post';
101 }
102
103 /**
104 * Get email template variables
105 *
106 * @return array
107 */
108 public function get_email_template_variables()
109 {
110 $board_url = generate_board_url();
111
112 return array(
113 'POST_SUBJECT' => htmlspecialchars_decode(censor_text($this->get_data('post_subject'))),
114 'TOPIC_TITLE' => htmlspecialchars_decode(censor_text($this->get_data('topic_title'))),
115
116 'U_VIEW_REPORT' => "{$board_url}/mcp.{$this->php_ext}?f={$this->get_data('forum_id')}&p={$this->item_id}&i=reports&mode=report_details#reports",
117 'U_VIEW_POST' => "{$board_url}/viewtopic.{$this->php_ext}?p={$this->item_id}#p{$this->item_id}",
118 'U_NEWEST_POST' => "{$board_url}/viewtopic.{$this->php_ext}?f={$this->get_data('forum_id')}&t={$this->item_parent_id}&view=unread#unread",
119 'U_TOPIC' => "{$board_url}/viewtopic.{$this->php_ext}?f={$this->get_data('forum_id')}&t={$this->item_parent_id}",
120 'U_VIEW_TOPIC' => "{$board_url}/viewtopic.{$this->php_ext}?f={$this->get_data('forum_id')}&t={$this->item_parent_id}",
121 'U_FORUM' => "{$board_url}/viewforum.{$this->php_ext}?f={$this->get_data('forum_id')}",
122 );
123 }
124
125 /**
126 * Get the url to this item
127 *
128 * @return string URL
129 */
130 public function get_url()
131 {
132 return append_sid($this->phpbb_root_path . 'mcp.' . $this->php_ext, "f={$this->get_data('forum_id')}&p={$this->item_id}&i=reports&mode=report_details#reports");
133 }
134
135 /**
136 * Get the HTML formatted title of this notification
137 *
138 * @return string
139 */
140 public function get_title()
141 {
142 $this->language->add_lang('mcp');
143
144 $username = $this->user_loader->get_username($this->get_data('reporter_id'), 'no_profile');
145
146 return $this->language->lang(
147 $this->language_key,
148 $username
149 );
150 }
151
152 /**
153 * Get the HTML formatted reference of the notification
154 *
155 * @return string
156 */
157 public function get_reference()
158 {
159 return $this->language->lang(
160 'NOTIFICATION_REFERENCE',
161 censor_text($this->get_data('post_subject'))
162 );
163 }
164
165 /**
166 * Get the reason for the notification
167 *
168 * @return string
169 */
170 public function get_reason()
171 {
172 if ($this->get_data('report_text'))
173 {
174 return $this->language->lang(
175 'NOTIFICATION_REASON',
176 $this->get_data('report_text')
177 );
178 }
179
180 if ($this->language->is_set($this->get_data('reason_title')))
181 {
182 return $this->language->lang(
183 'NOTIFICATION_REASON',
184 $this->language->lang($this->get_data('reason_title'))
185 );
186 }
187
188 return $this->language->lang(
189 'NOTIFICATION_REASON',
190 $this->get_data('reason_description')
191 );
192 }
193
194 /**
195 * Get the user's avatar
196 */
197 public function get_avatar()
198 {
199 return $this->user_loader->get_avatar($this->get_data('reporter_id'), false, true);
200 }
201
202 /**
203 * Users needed to query before this notification can be displayed
204 *
205 * @return array Array of user_ids
206 */
207 public function users_to_query()
208 {
209 return array($this->get_data('reporter_id'));
210 }
211
212 /**
213 * {@inheritdoc}
214 */
215 public function create_insert_array($post, $pre_create_data = array())
216 {
217 $this->set_data('reporter_id', $this->user->data['user_id']);
218 $this->set_data('reason_title', strtoupper($post['reason_title']));
219 $this->set_data('reason_description', $post['reason_description']);
220 $this->set_data('report_text', $post['report_text']);
221
222 parent::create_insert_array($post, $pre_create_data);
223 }
224 }
225