[ Index ]

PHP Cross Reference of phpBB-3.3.14-deutsch

title

Body

[close]

/phpbb/install/module/install_database/task/ -> add_config_settings.php (source)

   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  }


Generated: Mon Nov 25 19:05:08 2024 Cross-referenced by PHPXref 0.7.1