[ Index ]

PHP Cross Reference of phpBB-3.3.14-deutsch

title

Body

[close]

/phpbb/install/module/install_filesystem/task/ -> create_config_file.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_filesystem\task;
  15  
  16  use phpbb\install\exception\user_interaction_required_exception;
  17  
  18  /**
  19   * Dumps config file
  20   */
  21  class create_config_file extends \phpbb\install\task_base
  22  {
  23      /**
  24       * @var \phpbb\filesystem\filesystem_interface
  25       */
  26      protected $filesystem;
  27  
  28      /**
  29       * @var \phpbb\install\helper\database
  30       */
  31      protected $db_helper;
  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 string
  45       */
  46      protected $phpbb_root_path;
  47  
  48      /**
  49       * @var string
  50       */
  51      protected $php_ext;
  52  
  53      /**
  54       * @var array
  55       */
  56      protected $options;
  57  
  58      /**
  59       * Constructor
  60       *
  61       * @param \phpbb\filesystem\filesystem_interface                $filesystem
  62       * @param \phpbb\install\helper\config                            $install_config
  63       * @param \phpbb\install\helper\database                        $db_helper
  64       * @param \phpbb\install\helper\iohandler\iohandler_interface    $iohandler
  65       * @param string                                                $phpbb_root_path
  66       * @param string                                                $php_ext
  67       * @param array                                                    $options
  68       */
  69  	public function __construct(\phpbb\filesystem\filesystem_interface $filesystem,
  70                                  \phpbb\install\helper\config $install_config,
  71                                  \phpbb\install\helper\database $db_helper,
  72                                  \phpbb\install\helper\iohandler\iohandler_interface $iohandler,
  73                                  $phpbb_root_path,
  74                                  $php_ext,
  75                                  $options = array())
  76      {
  77          $this->install_config    = $install_config;
  78          $this->db_helper        = $db_helper;
  79          $this->filesystem        = $filesystem;
  80          $this->iohandler        = $iohandler;
  81          $this->phpbb_root_path    = $phpbb_root_path;
  82          $this->php_ext            = $php_ext;
  83          $this->options            = array_merge(array(
  84              'debug' => false,
  85              'debug_container' => false,
  86              'environment' => null,
  87          ), $options);
  88  
  89          parent::__construct(true);
  90      }
  91  
  92      /**
  93       * {@inheritdoc}
  94       */
  95  	public function run()
  96      {
  97          $config_written = true;
  98  
  99          // Create config.php
 100          $path_to_config = $this->phpbb_root_path . 'config.' . $this->php_ext;
 101  
 102          $fp = @fopen($path_to_config, 'w');
 103          if (!$fp)
 104          {
 105              $config_written = false;
 106          }
 107  
 108          $config_content = $this->get_config_data($this->options['debug'], $this->options['debug_container'], $this->options['environment']);
 109  
 110          if (!@fwrite($fp, $config_content))
 111          {
 112              $config_written = false;
 113          }
 114  
 115          @fclose($fp);
 116  
 117          // chmod config.php to be only readable
 118          if ($config_written)
 119          {
 120              try
 121              {
 122                  $this->filesystem->phpbb_chmod($path_to_config, \phpbb\filesystem\filesystem_interface::CHMOD_READ);
 123              }
 124              catch (\phpbb\filesystem\exception\filesystem_exception $e)
 125              {
 126                  // Do nothing, the user will get a notice later
 127              }
 128          }
 129          else
 130          {
 131              $this->iohandler->add_error_message('UNABLE_TO_WRITE_CONFIG_FILE');
 132              throw new user_interaction_required_exception();
 133          }
 134  
 135          // Create a lock file to indicate that there is an install in progress
 136          $fp = @fopen($this->phpbb_root_path . 'cache/install_lock', 'wb');
 137          if ($fp === false)
 138          {
 139              // We were unable to create the lock file - abort
 140              $this->iohandler->add_error_message('UNABLE_TO_WRITE_LOCK');
 141              throw new user_interaction_required_exception();
 142          }
 143          @fclose($fp);
 144  
 145          try
 146          {
 147              $this->filesystem->phpbb_chmod($this->phpbb_root_path . 'cache/install_lock', 0777);
 148          }
 149          catch (\phpbb\filesystem\exception\filesystem_exception $e)
 150          {
 151              // Do nothing, the user will get a notice later
 152          }
 153      }
 154  
 155      /**
 156       * Returns the content which should be dumped to config.php
 157       *
 158       * @param bool        $debug                 If the debug constants should be enabled by default or not
 159       * @param bool        $debug_container     If the container should be compiled on
 160       *                                        every page load or not
 161       * @param string    $environment        The environment to use
 162       *
 163       * @return string    content to be written to the config file
 164       */
 165  	protected function get_config_data($debug = false, $debug_container = false, $environment = null)
 166      {
 167          $config_content = "<?php\n";
 168          $config_content .= "// phpBB 3.3.x auto-generated configuration file\n// Do not change anything in this file!\n";
 169  
 170          $dbms = $this->install_config->get('dbms');
 171          $db_driver = $this->db_helper->get_available_dbms($dbms);
 172          $db_driver = $db_driver[$dbms]['DRIVER'];
 173  
 174          $config_data_array = array(
 175              'dbms'            => $db_driver,
 176              'dbhost'        => $this->install_config->get('dbhost'),
 177              'dbport'        => $this->install_config->get('dbport'),
 178              'dbname'        => $this->install_config->get('dbname'),
 179              'dbuser'        => $this->install_config->get('dbuser'),
 180              'dbpasswd'        => $this->install_config->get('dbpasswd'),
 181              'table_prefix'    => $this->install_config->get('table_prefix'),
 182  
 183              'phpbb_adm_relative_path'    => 'adm/',
 184  
 185              'acm_type'        => 'phpbb\cache\driver\file',
 186          );
 187  
 188          foreach ($config_data_array as $key => $value)
 189          {
 190              $config_content .= "\${$key} = '" . str_replace("'", "\\'", str_replace('\\', '\\\\', $value)) . "';\n";
 191          }
 192  
 193          $config_content .= "\n@define('PHPBB_INSTALLED', true);\n";
 194  
 195          if ($environment)
 196          {
 197              $config_content .= "@define('PHPBB_ENVIRONMENT', 'test');\n";
 198          }
 199          else if ($debug)
 200          {
 201              $config_content .= "@define('PHPBB_ENVIRONMENT', 'development');\n";
 202          }
 203          else
 204          {
 205              $config_content .= "@define('PHPBB_ENVIRONMENT', 'production');\n";
 206          }
 207  
 208          if ($debug_container)
 209          {
 210              $config_content .= "@define('DEBUG_CONTAINER', true);\n";
 211          }
 212          else
 213          {
 214              $config_content .= "// @define('DEBUG_CONTAINER', true);\n";
 215          }
 216  
 217          if ($environment === 'test')
 218          {
 219              $config_content .= "@define('DEBUG_TEST', true);\n";
 220  
 221              // Mandatory for the functional tests, will be removed by PHPBB3-12623
 222              $config_content .= "@define('DEBUG', true);\n";
 223          }
 224  
 225          return $config_content;
 226      }
 227  
 228      /**
 229       * {@inheritdoc}
 230       */
 231  	static public function get_step_count()
 232      {
 233          return 1;
 234      }
 235  
 236      /**
 237       * {@inheritdoc}
 238       */
 239  	public function get_task_lang_name()
 240      {
 241          return 'TASK_CREATE_CONFIG_FILE';
 242      }
 243  }


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