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

passwords_convert_p1.php

Zuletzt modifiziert: 09.10.2024, 12:57 - Dateigröße: 2.01 KiB


01  <?php
02  /**
03  *
04  * This file is part of the phpBB Forum Software package.
05  *
06  * @copyright (c) phpBB Limited <https://www.phpbb.com>
07  * @license GNU General Public License, version 2 (GPL-2.0)
08  *
09  * For full copyright and license information, please see
10  * the docs/CREDITS.txt file.
11  *
12  */
13   
14  namespace phpbb\db\migration\data\v310;
15   
16  class passwords_convert_p1 extends \phpbb\db\migration\migration
17  {
18      static public function depends_on()
19      {
20          return array('\phpbb\db\migration\data\v310\passwords_p2');
21      }
22   
23      public function update_data()
24      {
25          return array(
26              array('custom', array(array($this, 'update_passwords'))),
27          );
28      }
29   
30      public function update_passwords($start)
31      {
32          // Nothing to do if user_pass_convert column doesn't exist
33          if (!$this->db_tools->sql_column_exists($this->table_prefix . 'users', 'user_pass_convert'))
34          {
35              return;
36          }
37   
38          $start = (int) $start;
39          $limit = 1000;
40          $converted_users = 0;
41   
42          $sql = 'SELECT user_password, user_id
43              FROM ' . $this->table_prefix . 'users
44              WHERE user_pass_convert = 1
45              ORDER BY user_id';
46          $result = $this->db->sql_query_limit($sql, $limit, $start);
47   
48          $update_users = array();
49          while ($row = $this->db->sql_fetchrow($result))
50          {
51              $converted_users++;
52   
53              $user_id = (int) $row['user_id'];
54              // Only prefix passwords without proper prefix
55              if (!isset($update_users[$user_id]) && !preg_match('#^\$([a-zA-Z0-9\\\]*?)\$#', $row['user_password']))
56              {
57                  // Use $CP$ prefix for passwords that need to
58                  // be converted and set pass convert to false.
59                  $update_users[$user_id] = '$CP$' . $row['user_password'];
60              }
61          }
62          $this->db->sql_freeresult($result);
63   
64          foreach ($update_users as $user_id => $user_password)
65          {
66              $sql = 'UPDATE ' . $this->table_prefix . "users
67                  SET user_password = '" . $this->db->sql_escape($user_password) . "'
68                  WHERE user_id = $user_id";
69              $this->sql_query($sql);
70          }
71   
72          if ($converted_users < $limit)
73          {
74              // There are no more users to be converted
75              return;
76          }
77   
78          // There are still more users to query, return the next start value
79          return $start + $limit;
80      }
81  }
82