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_remind.php

Zuletzt modifiziert: 09.10.2024, 12:52 - Dateigröße: 4.51 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  * ucp_remind
 024  * Sending password reminders
 025  */
 026  class ucp_remind
 027  {
 028      var $u_action;
 029   
 030      function main($id, $mode)
 031      {
 032          global $config, $phpbb_root_path, $phpEx, $request;
 033          global $db, $user, $template, $phpbb_container, $phpbb_dispatcher;
 034   
 035          if (!$config['allow_password_reset'])
 036          {
 037              trigger_error($user->lang('UCP_PASSWORD_RESET_DISABLED', '<a href="mailto:' . htmlspecialchars($config['board_contact']) . '">', '</a>'));
 038          }
 039   
 040          $username    = $request->variable('username', '', true);
 041          $email        = strtolower($request->variable('email', ''));
 042          $submit        = (isset($_POST['submit'])) ? true : false;
 043   
 044          if ($submit)
 045          {
 046              $sql_array = array(
 047                  'SELECT'    => 'user_id, username, user_permissions, user_email, user_jabber, user_notify_type, user_type, user_lang, user_inactive_reason',
 048                  'FROM'        => array(USERS_TABLE => 'u'),
 049                  'WHERE'        => "user_email_hash = '" . $db->sql_escape(phpbb_email_hash($email)) . "'
 050                                      AND username_clean = '" . $db->sql_escape(utf8_clean_string($username)) . "'"
 051              );
 052   
 053              /**
 054              * Change SQL query for fetching user data
 055              *
 056              * @event core.ucp_remind_modify_select_sql
 057              * @var    string    email        User's email from the form
 058              * @var    string    username    User's username from the form
 059              * @var    array    sql_array    Fully assembled SQL query with keys SELECT, FROM, WHERE
 060              * @since 3.1.11-RC1
 061              */
 062              $vars = array(
 063                  'email',
 064                  'username',
 065                  'sql_array',
 066              );
 067              extract($phpbb_dispatcher->trigger_event('core.ucp_remind_modify_select_sql', compact($vars)));
 068   
 069              $sql = $db->sql_build_query('SELECT', $sql_array);
 070              $result = $db->sql_query($sql);
 071              $user_row = $db->sql_fetchrow($result);
 072              $db->sql_freeresult($result);
 073   
 074              if (!$user_row)
 075              {
 076                  trigger_error('NO_EMAIL_USER');
 077              }
 078   
 079              if ($user_row['user_type'] == USER_IGNORE)
 080              {
 081                  trigger_error('NO_USER');
 082              }
 083   
 084              if ($user_row['user_type'] == USER_INACTIVE)
 085              {
 086                  if ($user_row['user_inactive_reason'] == INACTIVE_MANUAL)
 087                  {
 088                      trigger_error('ACCOUNT_DEACTIVATED');
 089                  }
 090                  else
 091                  {
 092                      trigger_error('ACCOUNT_NOT_ACTIVATED');
 093                  }
 094              }
 095   
 096              // Check users permissions
 097              $auth2 = new \phpbb\auth\auth();
 098              $auth2->acl($user_row);
 099   
 100              if (!$auth2->acl_get('u_chgpasswd'))
 101              {
 102                  send_status_line(403, 'Forbidden');
 103                  trigger_error('NO_AUTH_PASSWORD_REMINDER');
 104              }
 105   
 106              $server_url = generate_board_url();
 107   
 108              // Make password at least 8 characters long, make it longer if admin wants to.
 109              // gen_rand_string() however has a limit of 12 or 13.
 110              $user_password = gen_rand_string_friendly(max(8, mt_rand((int) $config['min_pass_chars'], (int) $config['max_pass_chars'])));
 111   
 112              // For the activation key a random length between 6 and 10 will do.
 113              $user_actkey = gen_rand_string(mt_rand(6, 10));
 114   
 115              // Instantiate passwords manager
 116              /* @var $manager \phpbb\passwords\manager */
 117              $passwords_manager = $phpbb_container->get('passwords.manager');
 118   
 119              $sql = 'UPDATE ' . USERS_TABLE . "
 120                  SET user_newpasswd = '" . $db->sql_escape($passwords_manager->hash($user_password)) . "', user_actkey = '" . $db->sql_escape($user_actkey) . "'
 121                  WHERE user_id = " . $user_row['user_id'];
 122              $db->sql_query($sql);
 123   
 124              include_once($phpbb_root_path . 'includes/functions_messenger.' . $phpEx);
 125   
 126              $messenger = new messenger(false);
 127   
 128              $messenger->template('user_activate_passwd', $user_row['user_lang']);
 129   
 130              $messenger->set_addresses($user_row);
 131   
 132              $messenger->anti_abuse_headers($config, $user);
 133   
 134              $messenger->assign_vars(array(
 135                  'USERNAME'        => htmlspecialchars_decode($user_row['username']),
 136                  'PASSWORD'        => htmlspecialchars_decode($user_password),
 137                  'U_ACTIVATE'    => "$server_url/ucp.$phpEx?mode=activate&u={$user_row['user_id']}&k=$user_actkey")
 138              );
 139   
 140              $messenger->send($user_row['user_notify_type']);
 141   
 142              meta_refresh(3, append_sid("{$phpbb_root_path}index.$phpEx"));
 143   
 144              $message = $user->lang['PASSWORD_UPDATED'] . '<br /><br />' . sprintf($user->lang['RETURN_INDEX'], '<a href="' . append_sid("{$phpbb_root_path}index.$phpEx") . '">', '</a>');
 145              trigger_error($message);
 146          }
 147   
 148          $template->assign_vars(array(
 149              'USERNAME'            => $username,
 150              'EMAIL'                => $email,
 151              'S_PROFILE_ACTION'    => append_sid($phpbb_root_path . 'ucp.' . $phpEx, 'mode=sendpassword'))
 152          );
 153   
 154          $this->tpl_name = 'ucp_remind';
 155          $this->page_title = 'UCP_REMIND';
 156      }
 157  }
 158