| | |
| | | class rcube_install |
| | | { |
| | | var $step; |
| | | var $is_post = false; |
| | | var $failures = 0; |
| | | var $config = array(); |
| | | var $configured = false; |
| | | var $last_error = null; |
| | | var $email_pattern = '([a-z0-9][a-z0-9\-\.\+\_]*@[a-z0-9]([a-z0-9\-][.]?)*[a-z0-9])'; |
| | | var $config_props = array(); |
| | | |
| | | /** |
| | | * Constructor |
| | |
| | | function rcube_install() |
| | | { |
| | | $this->step = intval($_REQUEST['_step']); |
| | | $this->is_post = $_SERVER['REQUEST_METHOD'] == 'POST'; |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | function load_config() |
| | | { |
| | | $this->config = array(); |
| | | $this->_load_config('.php'); |
| | | $this->configured = !empty($this->config); |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | function _load_config($suffix) |
| | | { |
| | | include '../config/main.inc' . $suffix; |
| | | @include '../config/main.inc' . $suffix; |
| | | if (is_array($rcmail_config)) { |
| | | $this->config += $rcmail_config; |
| | | } |
| | |
| | | * @param string Default value |
| | | * @return string The property value |
| | | */ |
| | | function getprop($name, $default = null) |
| | | function getprop($name, $default = '') |
| | | { |
| | | $value = isset($_REQUEST["_$name"]) ? $_REQUEST["_$name"] : $this->config[$name]; |
| | | $value = $this->is_post && (isset($_POST["_$name"]) || $this->config_props[$name]) ? $_POST["_$name"] : $this->config[$name]; |
| | | |
| | | if ($name == 'des_key' && !isset($_REQUEST["_$name"])) |
| | | $value = self::random_key(24); |
| | | $value = rcube_install::random_key(24); |
| | | |
| | | return $value !== null ? $value : $default; |
| | | return $value !== null && $value !== '' ? $value : $default; |
| | | } |
| | | |
| | | |
| | |
| | | return '[Warning: could not read the template file]'; |
| | | |
| | | foreach ($this->config as $prop => $default) { |
| | | $value = $_POST["_$prop"] ? $_POST["_$prop"] : $default; |
| | | $value = (isset($_POST["_$prop"]) || $this->config_props[$prop]) ? $_POST["_$prop"] : $default; |
| | | |
| | | // convert some form data |
| | | if ($prop == 'debug_level' && is_array($value)) { |
| | |
| | | $value = $val; |
| | | } |
| | | else if ($prop == 'db_dsnw' && !empty($_POST['_dbtype'])) { |
| | | $value = sprintf('%s://%s:%s@%s/%s', $_POST['_dbtype'], $_POST['_dbuser'], $_POST['_dbpass'], $_POST['_dbhost'], $_POST['_dbname']); |
| | | if ($_POST['_dbtype'] == 'sqlite') |
| | | $value = sprintf('%s://%s?mode=0646', $_POST['_dbtype'], $_POST['_dbname']{0} == '/' ? '/' . $_POST['_dbname'] : $_POST['_dbname']); |
| | | else |
| | | $value = sprintf('%s://%s:%s@%s/%s', $_POST['_dbtype'], $_POST['_dbuser'], $_POST['_dbpass'], $_POST['_dbhost'], $_POST['_dbname']); |
| | | } |
| | | else if ($prop == 'smtp_auth_type' && $value == '0') { |
| | | $value = ''; |
| | | } |
| | | else if ($prop == 'default_host' && is_array($value)) { |
| | | $value = self::_clean_array($value); |
| | | $value = rcube_install::_clean_array($value); |
| | | if (count($value) <= 1) |
| | | $value = $value[0]; |
| | | } |
| | |
| | | $value = '%p'; |
| | | } |
| | | else if (is_bool($default)) { |
| | | $value = is_numeric($value) ? (bool)$value : $value; |
| | | $value = (bool)$value; |
| | | } |
| | | else if (is_numeric($value)) { |
| | | $value = intval($value); |
| | | } |
| | | |
| | | // skip this property |
| | |
| | | $out); |
| | | } |
| | | |
| | | return $out; |
| | | return trim($out); |
| | | } |
| | | |
| | | |
| | |
| | | |
| | | |
| | | /** |
| | | * Return a list with all imap hosts configured |
| | | * |
| | | * @return array Clean list with imap hosts |
| | | */ |
| | | function get_hostlist() |
| | | { |
| | | $default_hosts = (array)$this->getprop('default_host'); |
| | | $out = array(); |
| | | |
| | | foreach ($default_hosts as $key => $name) { |
| | | if (!empty($name)) |
| | | $out[] = is_numeric($key) ? $name : $key; |
| | | } |
| | | |
| | | return $out; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * Display OK status |
| | | * |
| | | * @param string Test name |