[ Index ] |
PHP Cross Reference of phpBB-3.3.14-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\install_database\task; 15 16 use phpbb\install\exception\resource_limit_reached_exception; 17 18 /** 19 * Create database schema 20 */ 21 class add_config_settings extends \phpbb\install\task_base 22 { 23 /** 24 * @var \phpbb\db\driver\driver_interface 25 */ 26 protected $db; 27 28 /** 29 * @var \phpbb\filesystem\filesystem_interface 30 */ 31 protected $filesystem; 32 33 /** 34 * @var \phpbb\install\helper\config 35 */ 36 protected $install_config; 37 38 /** 39 * @var \phpbb\install\helper\iohandler\iohandler_interface 40 */ 41 protected $iohandler; 42 43 /** 44 * @var \phpbb\language\language 45 */ 46 protected $language; 47 48 /** 49 * @var \phpbb\passwords\manager 50 */ 51 protected $password_manager; 52 53 /** 54 * @var string 55 */ 56 protected $phpbb_root_path; 57 58 /** 59 * @var string 60 */ 61 protected $config_table; 62 63 /** 64 * @var string 65 */ 66 protected $user_table; 67 68 /** 69 * @var string 70 */ 71 protected $topics_table; 72 73 /** 74 * @var string 75 */ 76 protected $forums_table; 77 78 /** 79 * @var string 80 */ 81 protected $posts_table; 82 83 /** 84 * @var string 85 */ 86 protected $moderator_cache_table; 87 88 /** 89 * Constructor 90 * 91 * @param \phpbb\filesystem\filesystem_interface $filesystem Filesystem service 92 * @param \phpbb\install\helper\config $install_config Installer's config helper 93 * @param \phpbb\install\helper\iohandler\iohandler_interface $iohandler Installer's input-output handler 94 * @param \phpbb\install\helper\container_factory $container Installer's DI container 95 * @param \phpbb\language\language $language Language service 96 * @param string $phpbb_root_path Path to phpBB's root 97 */ 98 public function __construct(\phpbb\filesystem\filesystem_interface $filesystem, 99 \phpbb\install\helper\config $install_config, 100 \phpbb\install\helper\iohandler\iohandler_interface $iohandler, 101 \phpbb\install\helper\container_factory $container, 102 \phpbb\language\language $language, 103 $phpbb_root_path) 104 { 105 $this->db = $container->get('dbal.conn'); 106 $this->filesystem = $filesystem; 107 $this->install_config = $install_config; 108 $this->iohandler = $iohandler; 109 $this->language = $language; 110 $this->password_manager = $container->get('passwords.manager'); 111 $this->phpbb_root_path = $phpbb_root_path; 112 113 // Table names 114 $this->config_table = $container->get_parameter('tables.config'); 115 $this->forums_table = $container->get_parameter('tables.forums'); 116 $this->topics_table = $container->get_parameter('tables.topics'); 117 $this->user_table = $container->get_parameter('tables.users'); 118 $this->moderator_cache_table = $container->get_parameter('tables.moderator_cache'); 119 $this->posts_table = $container->get_parameter('tables.posts'); 120 121 parent::__construct(true); 122 } 123 124 /** 125 * {@inheritdoc} 126 */ 127 public function run() 128 { 129 $this->db->sql_return_on_error(true); 130 131 $server_name = $this->install_config->get('server_name'); 132 $current_time = time(); 133 $user_ip = phpbb_ip_normalise($this->iohandler->get_server_variable('REMOTE_ADDR')); 134 $user_ip = ($user_ip === false) ? '' : $user_ip; 135 $referer = $this->iohandler->get_server_variable('REFERER'); 136 137 // Calculate cookie domain 138 $cookie_domain = $server_name; 139 140 if (strpos($cookie_domain, 'www.') === 0) 141 { 142 $cookie_domain = substr($cookie_domain, 3); 143 } 144 145 // Set default config and post data, this applies to all DB's 146 $sql_ary = array( 147 'INSERT INTO ' . $this->config_table . " (config_name, config_value) 148 VALUES ('board_startdate', '$current_time')", 149 150 'INSERT INTO ' . $this->config_table . " (config_name, config_value) 151 VALUES ('default_lang', '" . $this->db->sql_escape($this->install_config->get('default_lang')) . "')", 152 153 'UPDATE ' . $this->config_table . " 154 SET config_value = '" . $this->db->sql_escape($this->install_config->get('server_name')) . "' 155 WHERE config_name = 'server_name'", 156 157 'UPDATE ' . $this->config_table . " 158 SET config_value = '" . $this->db->sql_escape($this->install_config->get('server_port')) . "' 159 WHERE config_name = 'server_port'", 160 161 'UPDATE ' . $this->config_table . " 162 SET config_value = '" . $this->db->sql_escape($this->install_config->get('board_email')) . "' 163 WHERE config_name = 'board_email'", 164 165 'UPDATE ' . $this->config_table . " 166 SET config_value = '" . $this->db->sql_escape($this->install_config->get('board_email')) . "' 167 WHERE config_name = 'board_contact'", 168 169 'UPDATE ' . $this->config_table . " 170 SET config_value = '" . $this->db->sql_escape($cookie_domain) . "' 171 WHERE config_name = 'cookie_domain'", 172 173 'UPDATE ' . $this->config_table . " 174 SET config_value = '" . $this->db->sql_escape($this->language->lang('default_dateformat')) . "' 175 WHERE config_name = 'default_dateformat'", 176 177 'UPDATE ' . $this->config_table . " 178 SET config_value = '" . $this->db->sql_escape($this->install_config->get('email_enable')) . "' 179 WHERE config_name = 'email_enable'", 180 181 'UPDATE ' . $this->config_table . " 182 SET config_value = '" . $this->db->sql_escape($this->install_config->get('smtp_delivery')) . "' 183 WHERE config_name = 'smtp_delivery'", 184 185 'UPDATE ' . $this->config_table . " 186 SET config_value = '" . $this->db->sql_escape($this->install_config->get('smtp_host')) . "' 187 WHERE config_name = 'smtp_host'", 188 189 'UPDATE ' . $this->config_table . " 190 SET config_value = '" . $this->db->sql_escape($this->install_config->get('smtp_port')) . "' 191 WHERE config_name = 'smtp_port'", 192 193 'UPDATE ' . $this->config_table . " 194 SET config_value = '" . $this->db->sql_escape($this->install_config->get('smtp_auth')) . "' 195 WHERE config_name = 'smtp_auth_method'", 196 197 'UPDATE ' . $this->config_table . " 198 SET config_value = '" . $this->db->sql_escape($this->install_config->get('smtp_user')) . "' 199 WHERE config_name = 'smtp_username'", 200 201 'UPDATE ' . $this->config_table . " 202 SET config_value = '" . $this->db->sql_escape($this->install_config->get('smtp_pass')) . "' 203 WHERE config_name = 'smtp_password'", 204 205 'UPDATE ' . $this->config_table . " 206 SET config_value = '" . $this->db->sql_escape($this->install_config->get('cookie_secure')) . "' 207 WHERE config_name = 'cookie_secure'", 208 209 'UPDATE ' . $this->config_table . " 210 SET config_value = '" . $this->db->sql_escape($this->install_config->get('force_server_vars')) . "' 211 WHERE config_name = 'force_server_vars'", 212 213 'UPDATE ' . $this->config_table . " 214 SET config_value = '" . $this->db->sql_escape($this->install_config->get('script_path')) . "' 215 WHERE config_name = 'script_path'", 216 217 'UPDATE ' . $this->config_table . " 218 SET config_value = '" . $this->db->sql_escape($this->install_config->get('server_protocol')) . "' 219 WHERE config_name = 'server_protocol'", 220 221 'UPDATE ' . $this->config_table . " 222 SET config_value = '" . $this->db->sql_escape($this->install_config->get('admin_name')) . "' 223 WHERE config_name = 'newest_username'", 224 225 'UPDATE ' . $this->config_table . " 226 SET config_value = '" . md5(mt_rand()) . "' 227 WHERE config_name = 'avatar_salt'", 228 229 'UPDATE ' . $this->config_table . " 230 SET config_value = '" . md5(mt_rand()) . "' 231 WHERE config_name = 'plupload_salt'", 232 233 'UPDATE ' . $this->config_table . " 234 SET config_value = '" . $this->db->sql_escape($this->install_config->get('board_name')) . "' 235 WHERE config_name = 'sitename'", 236 237 'UPDATE ' . $this->config_table . " 238 SET config_value = '" . $this->db->sql_escape($this->install_config->get('board_description')) . "' 239 WHERE config_name = 'site_desc'", 240 241 'UPDATE ' . $this->user_table . " 242 SET username = '" . $this->db->sql_escape($this->install_config->get('admin_name')) . "', 243 user_password='" . $this->password_manager->hash($this->install_config->get('admin_passwd')) . "', 244 user_ip = '" . $this->db->sql_escape($user_ip) . "', 245 user_lang = '" . $this->db->sql_escape($this->install_config->get('user_language', 'en')) . "', 246 user_email='" . $this->db->sql_escape($this->install_config->get('board_email')) . "', 247 user_dateformat='" . $this->db->sql_escape($this->language->lang('default_dateformat')) . "', 248 username_clean = '" . $this->db->sql_escape(utf8_clean_string($this->install_config->get('admin_name'))) . "' 249 WHERE username = 'Admin'", 250 251 'UPDATE ' . $this->moderator_cache_table . " 252 SET username = '" . $this->db->sql_escape($this->install_config->get('admin_name')) . "' 253 WHERE username = 'Admin'", 254 255 'UPDATE ' . $this->forums_table . " 256 SET forum_last_poster_name = '" . $this->db->sql_escape($this->install_config->get('admin_name')) . "' 257 WHERE forum_last_poster_name = 'Admin'", 258 259 'UPDATE ' . $this->topics_table . " 260 SET topic_first_poster_name = '" . $this->db->sql_escape($this->install_config->get('admin_name')) . "', 261 topic_last_poster_name = '" . $this->db->sql_escape($this->install_config->get('admin_name')) . "' 262 WHERE topic_first_poster_name = 'Admin' 263 OR topic_last_poster_name = 'Admin'", 264 265 'UPDATE ' . $this->user_table . " 266 SET user_regdate = $current_time", 267 268 'UPDATE ' . $this->posts_table . " 269 SET post_time = $current_time, poster_ip = '" . $this->db->sql_escape($user_ip) . "'", 270 271 'UPDATE ' . $this->topics_table . " 272 SET topic_time = $current_time, topic_last_post_time = $current_time", 273 274 'UPDATE ' . $this->forums_table . " 275 SET forum_last_post_time = $current_time", 276 277 'UPDATE ' . $this->config_table . " 278 SET config_value = '" . $this->db->sql_escape($this->db->sql_server_info(true)) . "' 279 WHERE config_name = 'dbms_version'", 280 ); 281 282 if (@extension_loaded('gd')) 283 { 284 $sql_ary[] = 'UPDATE ' . $this->config_table . " 285 SET config_value = 'core.captcha.plugins.gd' 286 WHERE config_name = 'captcha_plugin'"; 287 288 $sql_ary[] = 'UPDATE ' . $this->config_table . " 289 SET config_value = '1' 290 WHERE config_name = 'captcha_gd'"; 291 } 292 293 $ref = substr($referer, strpos($referer, '://') + 3); 294 if (!(stripos($ref, $server_name) === 0)) 295 { 296 $sql_ary[] = 'UPDATE ' . $this->config_table . " 297 SET config_value = '0' 298 WHERE config_name = 'referer_validation'"; 299 } 300 301 // We set a (semi-)unique cookie name to bypass login issues related to the cookie name. 302 $cookie_name = 'phpbb3_'; 303 $rand_str = md5(mt_rand()); 304 $rand_str = str_replace('0', 'z', base_convert($rand_str, 16, 35)); 305 $rand_str = substr($rand_str, 0, 5); 306 $cookie_name .= strtolower($rand_str); 307 308 $sql_ary[] = 'UPDATE ' . $this->config_table . " 309 SET config_value = '" . $this->db->sql_escape($cookie_name) . "' 310 WHERE config_name = 'cookie_name'"; 311 312 // Disable avatars if upload directory is not writable 313 if (!$this->filesystem->is_writable($this->phpbb_root_path . 'images/avatars/upload/')) 314 { 315 $sql_ary[] = 'UPDATE ' . $this->config_table . " 316 SET config_value = '0' 317 WHERE config_name = 'allow_avatar'"; 318 319 $sql_ary[] = 'UPDATE ' . $this->config_table . " 320 SET config_value = '0' 321 WHERE config_name = 'allow_avatar_upload'"; 322 } 323 324 $i = $this->install_config->get('add_config_settings_index', 0); 325 $total = count($sql_ary); 326 $sql_ary = array_slice($sql_ary, $i); 327 328 foreach ($sql_ary as $sql) 329 { 330 if (!$this->db->sql_query($sql)) 331 { 332 $error = $this->db->sql_error($this->db->get_sql_error_sql()); 333 $this->iohandler->add_error_message('INST_ERR_DB', $error['message']); 334 } 335 336 $i++; 337 338 // Stop execution if resource limit is reached 339 if ($this->install_config->get_time_remaining() <= 0 || $this->install_config->get_memory_remaining() <= 0) 340 { 341 break; 342 } 343 } 344 345 if ($i < $total) 346 { 347 $this->install_config->set('add_config_settings_index', $i); 348 throw new resource_limit_reached_exception(); 349 } 350 } 351 352 /** 353 * {@inheritdoc} 354 */ 355 static public function get_step_count() 356 { 357 return 1; 358 } 359 360 /** 361 * {@inheritdoc} 362 */ 363 public function get_task_lang_name() 364 { 365 return 'TASK_ADD_CONFIG_SETTINGS'; 366 } 367 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Mon Nov 25 19:05:08 2024 | Cross-referenced by PHPXref 0.7.1 |