[ Index ] |
PHP Cross Reference of phpBB-3.2.11-deutsch |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * 4 * This file is part of the phpBB Forum Software package. 5 * 6 * @copyright (c) phpBB Limited <https://www.phpbb.com> 7 * @license GNU General Public License, version 2 (GPL-2.0) 8 * 9 * 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 /** 31 * Update passwords with convert flag to have $CP$ prefix 32 * 33 * @param int $start Limit start value 34 * @return int|void Null if conversion is finished, next start value if not 35 */ 36 public function update_passwords($start) 37 { 38 // Nothing to do if user_pass_convert column doesn't exist 39 if (!$this->db_tools->sql_column_exists($this->table_prefix . 'users', 'user_pass_convert')) 40 { 41 return; 42 } 43 44 $start = (int) $start; 45 $limit = 1000; 46 $converted_users = 0; 47 48 $sql = 'SELECT user_password, user_id 49 FROM ' . $this->table_prefix . 'users 50 WHERE user_pass_convert = 1 51 ORDER BY user_id'; 52 $result = $this->db->sql_query_limit($sql, $limit, $start); 53 54 $update_users = array(); 55 while ($row = $this->db->sql_fetchrow($result)) 56 { 57 $converted_users++; 58 59 $user_id = (int) $row['user_id']; 60 // Prefix all passwords that need to be converted 61 if (!isset($update_users[$user_id])) 62 { 63 // Use $CP$ prefix for passwords that need to 64 // be converted and set pass convert to false. 65 $update_users[$user_id] = '$CP$' . $row['user_password']; 66 } 67 } 68 $this->db->sql_freeresult($result); 69 70 foreach ($update_users as $user_id => $user_password) 71 { 72 $sql = 'UPDATE ' . $this->table_prefix . "users 73 SET user_password = '" . $this->db->sql_escape($user_password) . "' 74 WHERE user_id = $user_id"; 75 $this->sql_query($sql); 76 } 77 78 if ($converted_users < $limit) 79 { 80 // There are no more users to be converted 81 return; 82 } 83 84 // There are still more users to query, return the next start value 85 return $start + $limit; 86 } 87 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Wed Nov 11 20:33:01 2020 | Cross-referenced by PHPXref 0.7.1 |