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

      (Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

ucp.php

Zuletzt modifiziert: 09.10.2024, 12:50 - Dateigröße: 10.60 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  define('IN_PHPBB', true);
 018  $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
 019  $phpEx = substr(strrchr(__FILE__, '.'), 1);
 020  require($phpbb_root_path . 'common.' . $phpEx);
 021  require($phpbb_root_path . 'includes/functions_user.' . $phpEx);
 022  require($phpbb_root_path . 'includes/functions_module.' . $phpEx);
 023   
 024  // Basic parameter data
 025  $id     = $request->variable('i', '');
 026  $mode    = $request->variable('mode', '');
 027   
 028  if (in_array($mode, array('login', 'login_link', 'logout', 'confirm', 'sendpassword', 'activate')))
 029  {
 030      define('IN_LOGIN', true);
 031  }
 032   
 033  // Start session management
 034  $user->session_begin();
 035  $auth->acl($user->data);
 036  $user->setup('ucp');
 037   
 038  // Setting a variable to let the style designer know where he is...
 039  $template->assign_var('S_IN_UCP', true);
 040   
 041  $module = new p_master();
 042  $default = false;
 043   
 044  // Basic "global" modes
 045  switch ($mode)
 046  {
 047      case 'activate':
 048          $module->load('ucp', 'activate');
 049          $module->display($user->lang['UCP_ACTIVATE']);
 050   
 051          redirect(append_sid("{$phpbb_root_path}index.$phpEx"));
 052      break;
 053   
 054      case 'resend_act':
 055          $module->load('ucp', 'resend');
 056          $module->display($user->lang['UCP_RESEND']);
 057      break;
 058   
 059      case 'sendpassword':
 060          $module->load('ucp', 'remind');
 061          $module->display($user->lang['UCP_REMIND']);
 062      break;
 063   
 064      case 'register':
 065          if ($user->data['is_registered'] || isset($_REQUEST['not_agreed']))
 066          {
 067              redirect(append_sid("{$phpbb_root_path}index.$phpEx"));
 068          }
 069   
 070          $module->load('ucp', 'register');
 071          $module->display($user->lang['REGISTER']);
 072      break;
 073   
 074      case 'confirm':
 075          $module->load('ucp', 'confirm');
 076      break;
 077   
 078      case 'login':
 079          if ($user->data['is_registered'])
 080          {
 081              redirect(append_sid("{$phpbb_root_path}index.$phpEx"));
 082          }
 083   
 084          login_box($request->variable('redirect', "index.$phpEx"));
 085      break;
 086   
 087      case 'login_link':
 088          if ($user->data['is_registered'])
 089          {
 090              redirect(append_sid("{$phpbb_root_path}index.$phpEx"));
 091          }
 092   
 093          $module->load('ucp', 'login_link');
 094          $module->display($user->lang['UCP_LOGIN_LINK']);
 095      break;
 096   
 097      case 'logout':
 098          if ($user->data['user_id'] != ANONYMOUS && $request->is_set('sid') && $request->variable('sid', '') === $user->session_id)
 099          {
 100              $user->session_kill();
 101          }
 102          else if ($user->data['user_id'] != ANONYMOUS)
 103          {
 104              meta_refresh(3, append_sid("{$phpbb_root_path}index.$phpEx"));
 105   
 106              $message = $user->lang['LOGOUT_FAILED'] . '<br /><br />' . sprintf($user->lang['RETURN_INDEX'], '<a href="' . append_sid("{$phpbb_root_path}index.$phpEx") . '">', '</a> ');
 107              trigger_error($message);
 108          }
 109   
 110          redirect(append_sid("{$phpbb_root_path}index.$phpEx"));
 111      break;
 112   
 113      case 'terms':
 114      case 'privacy':
 115   
 116          $message = ($mode == 'terms') ? 'TERMS_OF_USE_CONTENT' : 'PRIVACY_POLICY';
 117          $title = ($mode == 'terms') ? 'TERMS_USE' : 'PRIVACY';
 118   
 119          if (empty($user->lang[$message]))
 120          {
 121              if ($user->data['is_registered'])
 122              {
 123                  redirect(append_sid("{$phpbb_root_path}index.$phpEx"));
 124              }
 125   
 126              login_box();
 127          }
 128   
 129          $template->set_filenames(array(
 130              'body'        => 'ucp_agreement.html')
 131          );
 132   
 133          // Disable online list
 134          page_header($user->lang[$title]);
 135   
 136          $template->assign_vars(array(
 137              'S_AGREEMENT'            => true,
 138              'AGREEMENT_TITLE'        => $user->lang[$title],
 139              'AGREEMENT_TEXT'        => sprintf($user->lang[$message], $config['sitename'], generate_board_url()),
 140              'U_BACK'                => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=login'),
 141              'L_BACK'                => $user->lang['BACK_TO_LOGIN'],
 142          ));
 143   
 144          page_footer();
 145   
 146      break;
 147   
 148      case 'delete_cookies':
 149   
 150          // Delete Cookies with dynamic names (do NOT delete poll cookies)
 151          if (confirm_box(true))
 152          {
 153              $set_time = time() - 31536000;
 154   
 155              foreach ($request->variable_names(\phpbb\request\request_interface::COOKIE) as $cookie_name)
 156              {
 157                  $cookie_data = $request->variable($cookie_name, '', true, \phpbb\request\request_interface::COOKIE);
 158   
 159                  // Only delete board cookies, no other ones...
 160                  if (strpos($cookie_name, $config['cookie_name'] . '_') !== 0)
 161                  {
 162                      continue;
 163                  }
 164   
 165                  $cookie_name = str_replace($config['cookie_name'] . '_', '', $cookie_name);
 166   
 167                  /**
 168                  * Event to save custom cookies from deletion
 169                  *
 170                  * @event core.ucp_delete_cookies
 171                  * @var    string    cookie_name        Cookie name to checking
 172                  * @var    bool    retain_cookie    Do we retain our cookie or not, true if retain
 173                  * @since 3.1.3-RC1
 174                  */
 175                  $retain_cookie = false;
 176                  $vars = array('cookie_name', 'retain_cookie');
 177                  extract($phpbb_dispatcher->trigger_event('core.ucp_delete_cookies', compact($vars)));
 178                  if ($retain_cookie)
 179                  {
 180                      continue;
 181                  }
 182   
 183                  // Polls are stored as {cookie_name}_poll_{topic_id}, cookie_name_ got removed, therefore checking for poll_
 184                  if (strpos($cookie_name, 'poll_') !== 0)
 185                  {
 186                      $user->set_cookie($cookie_name, '', $set_time);
 187                  }
 188              }
 189   
 190              $user->set_cookie('track', '', $set_time);
 191              $user->set_cookie('u', '', $set_time);
 192              $user->set_cookie('k', '', $set_time);
 193              $user->set_cookie('sid', '', $set_time);
 194   
 195              // We destroy the session here, the user will be logged out nevertheless
 196              $user->session_kill();
 197              $user->session_begin();
 198   
 199              meta_refresh(3, append_sid("{$phpbb_root_path}index.$phpEx"));
 200   
 201              $message = $user->lang['COOKIES_DELETED'] . '<br /><br />' . sprintf($user->lang['RETURN_INDEX'], '<a href="' . append_sid("{$phpbb_root_path}index.$phpEx") . '">', '</a>');
 202              trigger_error($message);
 203          }
 204          else
 205          {
 206              confirm_box(false, 'DELETE_COOKIES', '');
 207          }
 208   
 209          redirect(append_sid("{$phpbb_root_path}index.$phpEx"));
 210   
 211      break;
 212   
 213      case 'switch_perm':
 214   
 215          $user_id = $request->variable('u', 0);
 216   
 217          $sql = 'SELECT *
 218              FROM ' . USERS_TABLE . '
 219              WHERE user_id = ' . (int) $user_id;
 220          $result = $db->sql_query($sql);
 221          $user_row = $db->sql_fetchrow($result);
 222          $db->sql_freeresult($result);
 223   
 224          if (!$auth->acl_get('a_switchperm') || !$user_row || $user_id == $user->data['user_id'] || !check_link_hash($request->variable('hash', ''), 'switchperm'))
 225          {
 226              redirect(append_sid("{$phpbb_root_path}index.$phpEx"));
 227          }
 228   
 229          include($phpbb_root_path . 'includes/acp/auth.' . $phpEx);
 230   
 231          $auth_admin = new auth_admin();
 232          if (!$auth_admin->ghost_permissions($user_id, $user->data['user_id']))
 233          {
 234              redirect(append_sid("{$phpbb_root_path}index.$phpEx"));
 235          }
 236   
 237          $phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_ACL_TRANSFER_PERMISSIONS', false, array($user_row['username']));
 238   
 239          $message = sprintf($user->lang['PERMISSIONS_TRANSFERRED'], $user_row['username']) . '<br /><br />' . sprintf($user->lang['RETURN_INDEX'], '<a href="' . append_sid("{$phpbb_root_path}index.$phpEx") . '">', '</a>');
 240          trigger_error($message);
 241   
 242      break;
 243   
 244      case 'restore_perm':
 245   
 246          if (!$user->data['user_perm_from'] || !$auth->acl_get('a_switchperm'))
 247          {
 248              redirect(append_sid("{$phpbb_root_path}index.$phpEx"));
 249          }
 250   
 251          $auth->acl_cache($user->data);
 252   
 253          $sql = 'SELECT username
 254              FROM ' . USERS_TABLE . '
 255              WHERE user_id = ' . $user->data['user_perm_from'];
 256          $result = $db->sql_query($sql);
 257          $username = $db->sql_fetchfield('username');
 258          $db->sql_freeresult($result);
 259   
 260          $phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_ACL_RESTORE_PERMISSIONS', false, array($username));
 261   
 262          $message = $user->lang['PERMISSIONS_RESTORED'] . '<br /><br />' . sprintf($user->lang['RETURN_INDEX'], '<a href="' . append_sid("{$phpbb_root_path}index.$phpEx") . '">', '</a>');
 263          trigger_error($message);
 264   
 265      break;
 266   
 267      default:
 268          $default = true;
 269      break;
 270  }
 271   
 272  // We use this approach because it does not impose large code changes
 273  if (!$default)
 274  {
 275      return true;
 276  }
 277   
 278  // Only registered users can go beyond this point
 279  if (!$user->data['is_registered'])
 280  {
 281      if ($user->data['is_bot'])
 282      {
 283          redirect(append_sid("{$phpbb_root_path}index.$phpEx"));
 284      }
 285   
 286      if ($id == 'pm' && $mode == 'view' && isset($_GET['p']))
 287      {
 288          $redirect_url = append_sid("{$phpbb_root_path}ucp.$phpEx?i=pm&p=" . $request->variable('p', 0));
 289          login_box($redirect_url, $user->lang['LOGIN_EXPLAIN_UCP']);
 290      }
 291   
 292      login_box('', $user->lang['LOGIN_EXPLAIN_UCP']);
 293  }
 294   
 295  // Instantiate module system and generate list of available modules
 296  $module->list_modules('ucp');
 297   
 298  // Check if the zebra module is set
 299  if ($module->is_active('zebra', 'friends'))
 300  {
 301      // Output listing of friends online
 302      $update_time = $config['load_online_time'] * 60;
 303   
 304      $sql_ary = array(
 305          'SELECT'    => 'u.user_id, u.username, u.username_clean, u.user_colour, MAX(s.session_time) as online_time, MIN(s.session_viewonline) AS viewonline',
 306   
 307          'FROM'        => array(
 308              USERS_TABLE        => 'u',
 309              ZEBRA_TABLE        => 'z',
 310          ),
 311   
 312          'LEFT_JOIN'    => array(
 313              array(
 314                  'FROM'    => array(SESSIONS_TABLE => 's'),
 315                  'ON'    => 's.session_user_id = z.zebra_id',
 316              ),
 317          ),
 318   
 319          'WHERE'        => 'z.user_id = ' . $user->data['user_id'] . '
 320              AND z.friend = 1
 321              AND u.user_id = z.zebra_id',
 322   
 323          'GROUP_BY'    => 'z.zebra_id, u.user_id, u.username_clean, u.user_colour, u.username',
 324   
 325          'ORDER_BY'    => 'u.username_clean ASC',
 326      );
 327   
 328      $sql = $db->sql_build_query('SELECT_DISTINCT', $sql_ary);
 329      $result = $db->sql_query($sql);
 330   
 331      while ($row = $db->sql_fetchrow($result))
 332      {
 333          $which = (time() - $update_time < $row['online_time'] && ($row['viewonline'] || $auth->acl_get('u_viewonline'))) ? 'online' : 'offline';
 334   
 335          $template->assign_block_vars("friends_{$which}", array(
 336              'USER_ID'        => $row['user_id'],
 337   
 338              'U_PROFILE'        => get_username_string('profile', $row['user_id'], $row['username'], $row['user_colour']),
 339              'USER_COLOUR'    => get_username_string('colour', $row['user_id'], $row['username'], $row['user_colour']),
 340              'USERNAME'        => get_username_string('username', $row['user_id'], $row['username'], $row['user_colour']),
 341              'USERNAME_FULL'    => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']))
 342          );
 343      }
 344      $db->sql_freeresult($result);
 345  }
 346   
 347  // Do not display subscribed topics/forums if not allowed
 348  if (!$config['allow_topic_notify'] && !$config['allow_forum_notify'])
 349  {
 350      $module->set_display('main', 'subscribed', false);
 351  }
 352   
 353  /**
 354  * Use this event to enable and disable additional UCP modules
 355  *
 356  * @event core.ucp_display_module_before
 357  * @var    p_master    module    Object holding all modules and their status
 358  * @var    mixed        id        Active module category (can be the int or string)
 359  * @var    string        mode    Active module
 360  * @since 3.1.0-a1
 361  */
 362  $vars = array('module', 'id', 'mode');
 363  extract($phpbb_dispatcher->trigger_event('core.ucp_display_module_before', compact($vars)));
 364   
 365  // Select the active module
 366  $module->set_active($id, $mode);
 367   
 368  // Load and execute the relevant module
 369  $module->load_active();
 370   
 371  // Assign data to the template engine for the list of modules
 372  $module->assign_tpl_vars(append_sid("{$phpbb_root_path}ucp.$phpEx"));
 373   
 374  // Generate the page, do not display/query online list
 375  $module->display($module->get_page_title());
 376