Verzeichnisstruktur phpBB-3.3.15


Veröffentlicht
28.08.2024

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.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

(Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

mcp_notes.php

Zuletzt modifiziert: 02.04.2025, 15:02 - Dateigröße: 8.13 KiB


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  /**
015  * @ignore
016  */
017  if (!defined('IN_PHPBB'))
018  {
019      exit;
020  }
021   
022  /**
023  * mcp_notes
024  * Displays notes about a user
025  */
026  class mcp_notes
027  {
028      var $p_master;
029      var $u_action;
030   
031      function __construct($p_master)
032      {
033          $this->p_master = $p_master;
034      }
035   
036      function main($id, $mode)
037      {
038          global $user, $template, $request;
039          global $phpbb_root_path, $phpEx;
040   
041          $action = $request->variable('action', array('' => ''));
042   
043          if (is_array($action))
044          {
045              $action = key($action);
046          }
047   
048          $this->page_title = 'MCP_NOTES';
049   
050          switch ($mode)
051          {
052              case 'front':
053                  $template->assign_vars(array(
054                      'U_FIND_USERNAME'    => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&amp;form=mcp&amp;field=username&amp;select_single=true'),
055                      'U_POST_ACTION'        => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=notes&amp;mode=user_notes'),
056   
057                      'L_TITLE'            => $user->lang['MCP_NOTES'],
058                  ));
059   
060                  $this->tpl_name = 'mcp_notes_front';
061              break;
062   
063              case 'user_notes':
064                  $user->add_lang('acp/common');
065   
066                  $this->mcp_notes_user_view($action);
067                  $this->tpl_name = 'mcp_notes_user';
068              break;
069          }
070      }
071   
072      /**
073      * Display user notes
074      */
075      function mcp_notes_user_view($action)
076      {
077          global $config, $phpbb_log, $request, $phpbb_root_path, $phpEx;
078          global $template, $db, $user, $auth, $phpbb_container;
079   
080          $user_id = $request->variable('u', 0);
081          $username = $request->variable('username', '', true);
082          $start = $request->variable('start', 0);
083          $st    = $request->variable('st', 0);
084          $sk    = $request->variable('sk', 'b');
085          $sd    = $request->variable('sd', 'd');
086   
087          /* @var $pagination \phpbb\pagination */
088          $pagination = $phpbb_container->get('pagination');
089   
090          add_form_key('mcp_notes');
091   
092          $sql_where = ($user_id) ? "user_id = $user_id" : "username_clean = '" . $db->sql_escape(utf8_clean_string($username)) . "'";
093   
094          $sql = 'SELECT *
095              FROM ' . USERS_TABLE . "
096              WHERE $sql_where";
097          $result = $db->sql_query($sql);
098          $userrow = $db->sql_fetchrow($result);
099          $db->sql_freeresult($result);
100   
101          if (!$userrow || (int) $userrow['user_id'] === ANONYMOUS)
102          {
103              trigger_error('NO_USER');
104          }
105   
106          $user_id = $userrow['user_id'];
107   
108          // Populate user id to the currently active module (this module)
109          // The following method is another way of adjusting module urls. It is the easy variant if we want
110          // to directly adjust the current module url based on data retrieved within the same module.
111          if (strpos($this->u_action, "&amp;u=$user_id") === false)
112          {
113              $this->p_master->adjust_url('&amp;u=' . $user_id);
114              $this->u_action .= "&amp;u=$user_id";
115          }
116   
117          $deletemark = ($action == 'del_marked') ? true : false;
118          $deleteall    = ($action == 'del_all') ? true : false;
119          $marked        = $request->variable('marknote', array(0));
120          $usernote    = $request->variable('usernote', '', true);
121   
122          // Handle any actions
123          if (($deletemark || $deleteall) && $auth->acl_get('a_clearlogs'))
124          {
125              $where_sql = '';
126              if ($deletemark && $marked)
127              {
128                  $sql_in = array();
129                  foreach ($marked as $mark)
130                  {
131                      $sql_in[] = $mark;
132                  }
133                  $where_sql = ' AND ' . $db->sql_in_set('log_id', $sql_in);
134                  unset($sql_in);
135              }
136   
137              if ($where_sql || $deleteall)
138              {
139                  if (check_form_key('mcp_notes'))
140                  {
141                      $sql = 'DELETE FROM ' . LOG_TABLE . '
142                          WHERE log_type = ' . LOG_USERS . "
143                              AND reportee_id = $user_id
144                              $where_sql";
145                      $db->sql_query($sql);
146   
147                      $phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_CLEAR_USER', false, array($userrow['username']));
148   
149                      $msg = ($deletemark) ? 'MARKED_NOTES_DELETED' : 'ALL_NOTES_DELETED';
150                  }
151                  else
152                  {
153                      $msg = 'FORM_INVALID';
154                  }
155                  $redirect = $this->u_action . '&amp;u=' . $user_id;
156                  meta_refresh(3, $redirect);
157                  trigger_error($user->lang[$msg] . '<br /><br />' . sprintf($user->lang['RETURN_PAGE'], '<a href="' . $redirect . '">', '</a>'));
158              }
159          }
160   
161          if ($usernote && $action == 'add_feedback')
162          {
163              if (check_form_key('mcp_notes'))
164              {
165                  $phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_USER_FEEDBACK', false, [$userrow['username']]);
166                  $phpbb_log->add('mod', $user->data['user_id'], $user->ip, 'LOG_USER_FEEDBACK', false, [
167                      'forum_id' => 0,
168                      'topic_id' => 0,
169                      $userrow['username']
170                  ]);
171                  $phpbb_log->add('user', $user->data['user_id'], $user->ip, 'LOG_USER_GENERAL', false, [
172                      'reportee_id' => $user_id,
173                      utf8_encode_ucr($usernote)
174                  ]);
175   
176                  $msg = $user->lang['USER_FEEDBACK_ADDED'];
177              }
178              else
179              {
180                  $msg = $user->lang['FORM_INVALID'];
181              }
182              $redirect = $this->u_action;
183              meta_refresh(3, $redirect);
184   
185              trigger_error($msg .  '<br /><br />' . sprintf($user->lang['RETURN_PAGE'], '<a href="' . $redirect . '">', '</a>'));
186          }
187   
188          if (!function_exists('phpbb_get_user_rank'))
189          {
190              include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
191          }
192   
193          // Generate the appropriate user information for the user we are looking at
194          $rank_data = phpbb_get_user_rank($userrow, $userrow['user_posts']);
195          $avatar_img = phpbb_get_user_avatar($userrow);
196   
197          $limit_days = array(0 => $user->lang['ALL_ENTRIES'], 1 => $user->lang['1_DAY'], 7 => $user->lang['7_DAYS'], 14 => $user->lang['2_WEEKS'], 30 => $user->lang['1_MONTH'], 90 => $user->lang['3_MONTHS'], 180 => $user->lang['6_MONTHS'], 365 => $user->lang['1_YEAR']);
198          $sort_by_text = array('a' => $user->lang['SORT_USERNAME'], 'b' => $user->lang['SORT_DATE'], 'c' => $user->lang['SORT_IP'], 'd' => $user->lang['SORT_ACTION']);
199          $sort_by_sql = array('a' => 'u.username_clean', 'b' => 'l.log_time', 'c' => 'l.log_ip', 'd' => 'l.log_operation');
200   
201          $s_limit_days = $s_sort_key = $s_sort_dir = $u_sort_param = '';
202          gen_sort_selects($limit_days, $sort_by_text, $st, $sk, $sd, $s_limit_days, $s_sort_key, $s_sort_dir, $u_sort_param);
203   
204          // Define where and sort sql for use in displaying logs
205          $sql_where = ($st) ? (time() - ($st * 86400)) : 0;
206          $sql_sort = $sort_by_sql[$sk] . ' ' . (($sd == 'd') ? 'DESC' : 'ASC');
207   
208          $keywords = $request->variable('keywords', '', true);
209          $keywords_param = !empty($keywords) ? '&amp;keywords=' . urlencode(html_entity_decode($keywords, ENT_COMPAT)) : '';
210   
211          $log_data = array();
212          $log_count = 0;
213          $start = view_log('user', $log_data, $log_count, $config['topics_per_page'], $start, 0, 0, $user_id, $sql_where, $sql_sort, $keywords);
214   
215          if ($log_count)
216          {
217              $template->assign_var('S_USER_NOTES', true);
218   
219              foreach ($log_data as $row)
220              {
221                  $template->assign_block_vars('usernotes', array(
222                      'REPORT_BY'        => $row['username_full'],
223                      'REPORT_AT'        => $user->format_date($row['time']),
224                      'ACTION'        => $row['action'],
225                      'IP'            => $row['ip'],
226                      'ID'            => $row['id'])
227                  );
228              }
229          }
230   
231          $base_url = $this->u_action . "&amp;$u_sort_param$keywords_param";
232          $pagination->generate_template_pagination($base_url, 'pagination', 'start', $log_count, $config['topics_per_page'], $start);
233   
234          $template->assign_vars(array(
235              'U_POST_ACTION'            => $this->u_action,
236              'S_CLEAR_ALLOWED'        => ($auth->acl_get('a_clearlogs')) ? true : false,
237              'S_SELECT_SORT_DIR'        => $s_sort_dir,
238              'S_SELECT_SORT_KEY'        => $s_sort_key,
239              'S_SELECT_SORT_DAYS'    => $s_limit_days,
240              'S_KEYWORDS'            => $keywords,
241   
242              'L_TITLE'            => $user->lang['MCP_NOTES_USER'],
243   
244              'TOTAL_REPORTS'        => $user->lang('LIST_REPORTS', (int) $log_count),
245   
246              'JOINED'            => $user->format_date($userrow['user_regdate']),
247              'POSTS'                => ($userrow['user_posts']) ? $userrow['user_posts'] : 0,
248              'WARNINGS'            => ($userrow['user_warnings']) ? $userrow['user_warnings'] : 0,
249   
250              'USERNAME_FULL'        => get_username_string('full', $userrow['user_id'], $userrow['username'], $userrow['user_colour']),
251              'USERNAME_COLOUR'    => get_username_string('colour', $userrow['user_id'], $userrow['username'], $userrow['user_colour']),
252              'USERNAME'            => get_username_string('username', $userrow['user_id'], $userrow['username'], $userrow['user_colour']),
253              'U_PROFILE'            => get_username_string('profile', $userrow['user_id'], $userrow['username'], $userrow['user_colour']),
254   
255              'AVATAR_IMG'        => $avatar_img,
256              'RANK_IMG'            => $rank_data['img'],
257              'RANK_TITLE'        => $rank_data['title'],
258          ));
259      }
260   
261  }
262