/** * Writes the config file. * * @return boolean Returns true if successful; false otherwise. */ public function writeConfig() { $written = false; $configTpl = MODX_CORE_PATH . 'docs/config.inc.tpl'; $configFile = MODX_CORE_PATH . 'config/' . MODX_CONFIG_KEY . '.inc.php'; /** * Sanitize MySQL Password before writing to config, escaping ' * I'm sure there's a better way to do this, but this works for now. * Otherwise, we risk fatal PHP errors if the entered Password * contains any single quotes as they would escape the string. * See GitHub issue 12502 for more information. https://github.com/modxcms/revolution/issues/12502 */ $this->install->settings->settings['database_password'] = addslashes($this->install->settings->settings['database_password']); $settings = $this->install->settings->fetch(); $settings['last_install_time'] = time(); $settings['site_id'] = uniqid('modx', true); /* make UUID if not set */ if (empty($settings['uuid'])) { $settings['uuid'] = $this->install->generateUUID(); } if (file_exists($configTpl)) { if ($tplHandle = @fopen($configTpl, 'rb')) { $content = @fread($tplHandle, filesize($configTpl)); @fclose($tplHandle); if ($content) { $replace = array(); while (list($key, $value) = each($settings)) { if (is_scalar($value)) { $replace['{' . $key . '}'] = "{$value}"; } elseif (is_array($value)) { $replace['{' . $key . '}'] = var_export($value, true); } } $content = str_replace(array_keys($replace), array_values($replace), $content); if ($configHandle = @fopen($configFile, 'wb')) { $written = @fwrite($configHandle, $content); @fclose($configHandle); } } } } $perms = $this->install->settings->get('new_file_permissions', sprintf("%04o", 0666 & 0666 - umask())); if (is_string($perms)) { $perms = octdec($perms); } $chmodSuccess = @chmod($configFile, $perms); if ($written) { $this->addResult(modInstallRunner::RESULT_SUCCESS, '<p class="ok">' . $this->install->lexicon('config_file_written') . '</p>'); } else { $this->addResult(modInstallRunner::RESULT_FAILURE, '<p class="notok">' . $this->install->lexicon('config_file_err_w') . '</p>'); } if ($chmodSuccess) { $this->addResult(modInstallRunner::RESULT_SUCCESS, '<p class="ok">' . $this->install->lexicon('config_file_perms_set') . '</p>'); } else { $this->addResult(modInstallRunner::RESULT_WARNING, '<p>' . $this->install->lexicon('config_file_perms_notset') . '</p>'); } return $written; }
/** * Writes the config file. * * @return boolean Returns true if successful; false otherwise. */ public function writeConfig() { $written = false; $configTpl = MODX_CORE_PATH . 'docs/config.inc.tpl'; $configFile = MODX_CORE_PATH . 'config/' . MODX_CONFIG_KEY . '.inc.php'; $settings = $this->install->settings->fetch(); $settings['last_install_time'] = time(); $settings['site_id'] = uniqid('modx', true); /* make UUID if not set */ if (empty($settings['uuid'])) { $settings['uuid'] = $this->install->generateUUID(); } if (file_exists($configTpl)) { if ($tplHandle = @fopen($configTpl, 'rb')) { $content = @fread($tplHandle, filesize($configTpl)); @fclose($tplHandle); if ($content) { $replace = array(); while (list($key, $value) = each($settings)) { if (is_scalar($value)) { $replace['{' . $key . '}'] = "{$value}"; } elseif (is_array($value)) { $replace['{' . $key . '}'] = var_export($value, true); } } $content = str_replace(array_keys($replace), array_values($replace), $content); if ($configHandle = @fopen($configFile, 'wb')) { $written = @fwrite($configHandle, $content); @fclose($configHandle); } } } } $perms = $this->install->settings->get('new_file_permissions', sprintf("%04o", 0666 & 0666 - umask())); if (is_string($perms)) { $perms = octdec($perms); } $chmodSuccess = @chmod($configFile, $perms); if ($written) { $this->addResult(modInstallRunner::RESULT_SUCCESS, '<p class="ok">' . $this->install->lexicon('config_file_written') . '</p>'); } else { $this->addResult(modInstallRunner::RESULT_FAILURE, '<p class="notok">' . $this->install->lexicon('config_file_err_w') . '</p>'); } if ($chmodSuccess) { $this->addResult(modInstallRunner::RESULT_SUCCESS, '<p class="ok">' . $this->install->lexicon('config_file_perms_set') . '</p>'); } else { $this->addResult(modInstallRunner::RESULT_WARNING, '<p>' . $this->install->lexicon('config_file_perms_notset') . '</p>'); } return $written; }