[ 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\install\module\obtain_data\task; 15 16 use phpbb\install\exception\user_interaction_required_exception; 17 18 /** 19 * This class requests and validates admin account data from the user 20 */ 21 class obtain_admin_data extends \phpbb\install\task_base implements \phpbb\install\task_interface 22 { 23 /** 24 * @var \phpbb\install\helper\config 25 */ 26 protected $install_config; 27 28 /** 29 * @var \phpbb\install\helper\iohandler\iohandler_interface 30 */ 31 protected $io_handler; 32 33 /** 34 * Constructor 35 * 36 * @param \phpbb\install\helper\config $install_config Installer's config helper 37 * @param \phpbb\install\helper\iohandler\iohandler_interface $iohandler Installer's input-output handler 38 */ 39 public function __construct(\phpbb\install\helper\config $install_config, 40 \phpbb\install\helper\iohandler\iohandler_interface $iohandler) 41 { 42 $this->install_config = $install_config; 43 $this->io_handler = $iohandler; 44 45 parent::__construct(true); 46 } 47 48 /** 49 * {@inheritdoc} 50 */ 51 public function run() 52 { 53 // Check if data is sent 54 if ($this->io_handler->get_input('submit_admin', false)) 55 { 56 $this->process_form(); 57 } 58 else 59 { 60 $this->request_form_data(); 61 } 62 } 63 64 /** 65 * Process form data 66 */ 67 protected function process_form() 68 { 69 // Admin data 70 $admin_name = $this->io_handler->get_input('admin_name', '', true); 71 $admin_pass1 = $this->io_handler->get_input('admin_pass1', '', true); 72 $admin_pass2 = $this->io_handler->get_input('admin_pass2', '', true); 73 $board_email = $this->io_handler->get_input('board_email', '', true); 74 75 $admin_data_valid = $this->check_admin_data($admin_name, $admin_pass1, $admin_pass2, $board_email); 76 77 if ($admin_data_valid) 78 { 79 $this->install_config->set('admin_name', $admin_name); 80 $this->install_config->set('admin_passwd', $admin_pass1); 81 $this->install_config->set('board_email', $board_email); 82 } 83 else 84 { 85 $this->request_form_data(true); 86 } 87 } 88 89 /** 90 * Request data from the user 91 * 92 * @param bool $use_request_data Whether to use submited data 93 * 94 * @throws \phpbb\install\exception\user_interaction_required_exception When the user is required to provide data 95 */ 96 protected function request_form_data($use_request_data = false) 97 { 98 if ($use_request_data) 99 { 100 $admin_username = $this->io_handler->get_input('admin_name', '', true); 101 $admin_email = $this->io_handler->get_input('board_email', '', true); 102 } 103 else 104 { 105 $admin_username = ''; 106 $admin_email = ''; 107 } 108 109 $admin_form = array( 110 'admin_name' => array( 111 'label' => 'ADMIN_USERNAME', 112 'description' => 'ADMIN_USERNAME_EXPLAIN', 113 'type' => 'text', 114 'default' => $admin_username, 115 ), 116 'board_email' => array( 117 'label' => 'CONTACT_EMAIL', 118 'type' => 'email', 119 'default' => $admin_email, 120 ), 121 'admin_pass1' => array( 122 'label' => 'ADMIN_PASSWORD', 123 'description' => 'ADMIN_PASSWORD_EXPLAIN', 124 'type' => 'password', 125 ), 126 'admin_pass2' => array( 127 'label' => 'ADMIN_PASSWORD_CONFIRM', 128 'type' => 'password', 129 ), 130 'submit_admin' => array( 131 'label' => 'SUBMIT', 132 'type' => 'submit', 133 ), 134 ); 135 136 $this->io_handler->add_user_form_group('ADMIN_CONFIG', $admin_form); 137 138 // Require user interaction 139 throw new user_interaction_required_exception(); 140 } 141 142 /** 143 * Check admin data 144 * 145 * @param string $username Admin username 146 * @param string $pass1 Admin password 147 * @param string $pass2 Admin password confirmation 148 * @param string $email Admin e-mail address 149 * 150 * @return bool True if data is valid, false otherwise 151 */ 152 protected function check_admin_data($username, $pass1, $pass2, $email) 153 { 154 $data_valid = true; 155 156 // Check if none of admin data is empty 157 if (in_array('', array($username, $pass1, $pass2, $email), true)) 158 { 159 $this->io_handler->add_error_message('INST_ERR_MISSING_DATA'); 160 $data_valid = false; 161 } 162 163 if (utf8_strlen($username) < 3) 164 { 165 $this->io_handler->add_error_message('INST_ERR_USER_TOO_SHORT'); 166 $data_valid = false; 167 } 168 169 if (utf8_strlen($username) > 20) 170 { 171 $this->io_handler->add_error_message('INST_ERR_USER_TOO_LONG'); 172 $data_valid = false; 173 } 174 175 if ($pass1 !== $pass2 && $pass1 !== '') 176 { 177 $this->io_handler->add_error_message('INST_ERR_PASSWORD_MISMATCH'); 178 $data_valid = false; 179 } 180 181 // Test against the default password rules 182 if (utf8_strlen($pass1) < 6) 183 { 184 $this->io_handler->add_error_message('INST_ERR_PASSWORD_TOO_SHORT'); 185 $data_valid = false; 186 } 187 188 if (utf8_strlen($pass1) > 30) 189 { 190 $this->io_handler->add_error_message('INST_ERR_PASSWORD_TOO_LONG'); 191 $data_valid = false; 192 } 193 194 if (!preg_match('/^' . get_preg_expression('email') . '$/i', $email)) 195 { 196 $this->io_handler->add_error_message('INST_ERR_EMAIL_INVALID'); 197 $data_valid = false; 198 } 199 200 return $data_valid; 201 } 202 203 /** 204 * {@inheritdoc} 205 */ 206 static public function get_step_count() 207 { 208 return 0; 209 } 210 211 /** 212 * {@inheritdoc} 213 */ 214 public function get_task_lang_name() 215 { 216 return ''; 217 } 218 }
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 |