[ 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\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.2.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 $config_content .= "// @define('PHPBB_DISPLAY_LOAD_TIME', true);\n"; 195 196 if ($environment) 197 { 198 $config_content .= "@define('PHPBB_ENVIRONMENT', 'test');\n"; 199 } 200 else if ($debug) 201 { 202 $config_content .= "@define('PHPBB_ENVIRONMENT', 'development');\n"; 203 } 204 else 205 { 206 $config_content .= "@define('PHPBB_ENVIRONMENT', 'production');\n"; 207 } 208 209 if ($debug_container) 210 { 211 $config_content .= "@define('DEBUG_CONTAINER', true);\n"; 212 } 213 else 214 { 215 $config_content .= "// @define('DEBUG_CONTAINER', true);\n"; 216 } 217 218 if ($environment === 'test') 219 { 220 $config_content .= "@define('DEBUG_TEST', true);\n"; 221 222 // Mandatory for the functional tests, will be removed by PHPBB3-12623 223 $config_content .= "@define('DEBUG', true);\n"; 224 } 225 226 return $config_content; 227 } 228 229 /** 230 * {@inheritdoc} 231 */ 232 static public function get_step_count() 233 { 234 return 1; 235 } 236 237 /** 238 * {@inheritdoc} 239 */ 240 public function get_task_lang_name() 241 { 242 return 'TASK_CREATE_CONFIG_FILE'; 243 } 244 }
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 |