/** * Create a new config model object * * @param array $data * @return Config */ public function __construct(array $data = []) { parent::__construct($data); $server = new Server(); $config = Table\Config::getConfig(); $distro = $server->getDistro(); $this->data['overview'] = ['version' => \Phire\Module::VERSION, 'domain' => $config['domain'], 'document_root' => $config['document_root'], 'base_path' => BASE_PATH == '' ? ' ' : BASE_PATH, 'application_path' => APP_PATH == '' ? ' ' : APP_PATH, 'content_path' => CONTENT_PATH, 'modules_path' => MODULES_PATH, 'operating_system' => $server->getOs() . (!empty($distro) ? ' (' . $distro . ')' : null), 'software' => $server->getServer() . ' ' . $server->getServerVersion(), 'database_version' => Table\Config::db()->version(), 'php_version' => $server->getPhp(), 'installed_on' => $config['installed_on'] != '0000-00-00 00:00:00' ? date($config['datetime_format'], strtotime($config['installed_on'])) : '', 'updated_on' => $config['updated_on'] != '0000-00-00 00:00:00' ? date($config['datetime_format'], strtotime($config['updated_on'])) : '']; $config['datetime_formats'] = ['M j Y', 'F d, Y', 'm/d/Y', 'Y/m/d', 'F d, Y g:i A', 'M j Y g:i A', 'm/d/Y g:i A', 'Y/m/d g:i A']; $config['system_themes'] = []; $config['custom_system_themes'] = []; $dir = new Dir(__DIR__ . '/../../data/themes'); foreach ($dir->getFiles() as $file) { if ($file != 'index.html') { $config['system_themes'][$file] = $file; } } if (isset($_SERVER['DOCUMENT_ROOT'])) { $dir = new Dir($_SERVER['DOCUMENT_ROOT'] . BASE_PATH . CONTENT_PATH . '/phire/themes'); foreach ($dir->getFiles() as $file) { if ($file != 'index.html') { $config['custom_system_themes'][$file] = $file; } } } sort($config['system_themes']); sort($config['custom_system_themes']); $this->data['config'] = $config; $this->data['modules'] = Table\Modules::findAll(['order' => 'id DESC', 'limit' => 5])->rows(); }
/** * Install config method * * @param mixed $form * @param string $docRoot * @return void */ public function config($form, $docRoot = null) { if (null === $docRoot) { $docRoot = $_SERVER['DOCUMENT_ROOT'] . BASE_PATH; } // Get config file contents $cfgFile = new File($docRoot . '/config.php'); $config = $cfgFile->read(); // Get DB interface and type if (strpos($form->db_adapter, 'Pdo') !== false) { $dbInterface = 'Pdo'; $dbType = strtolower(substr($form->db_adapter, strrpos($form->db_adapter, '\\') + 1)); } else { $dbInterface = html_entity_decode($form->db_adapter, ENT_QUOTES, 'UTF-8'); $dbType = null; } // If DB is SQLite if (strpos($form->db_adapter, 'Sqlite') !== false) { touch($docRoot . $form->content_path . '/.htphire.sqlite'); $relativeDbName = "__DIR__ . '" . $form->content_path . '/.htphire.sqlite'; $dbName = realpath($docRoot . $form->content_path . '/.htphire.sqlite'); $dbUser = null; $dbPassword = null; $dbHost = null; $installFile = $dbName; chmod($dbName, 0777); } else { $relativeDbName = null; $dbName = $form->db_name; $dbUser = $form->db_username; $dbPassword = $form->db_password; $dbHost = $form->db_host; $installFile = null; } $dbPrefix = $form->db_prefix; // Set config values $config = str_replace("define('CONTENT_PATH', '/phire-content');", "define('CONTENT_PATH', '" . $form->content_path . "');", $config); $config = str_replace("define('APP_URI', '/phire');", "define('APP_URI', '" . $form->app_uri . "');", $config); $config = str_replace("define('DB_INTERFACE', '');", "define('DB_INTERFACE', '" . $dbInterface . "');", $config); $config = str_replace("define('DB_TYPE', '');", "define('DB_TYPE', '" . $dbType . "');", $config); $config = str_replace("define('DB_NAME', '');", "define('DB_NAME', " . (null !== $relativeDbName ? $relativeDbName : "'" . $dbName) . "');", $config); $config = str_replace("define('DB_USER', '');", "define('DB_USER', '" . $dbUser . "');", $config); $config = str_replace("define('DB_PASS', '');", "define('DB_PASS', '" . $dbPassword . "');", $config); $config = str_replace("define('DB_HOST', '');", "define('DB_HOST', '" . $dbHost . "');", $config); $config = str_replace("define('DB_PREFIX', '');", "define('DB_PREFIX', '" . $dbPrefix . "');", $config); $this->data['configWritable'] = is_writable($docRoot . '/config.php'); if ($form instanceof \Pop\Form\Form) { // Store the config values in session in case config file is not writable. $sess = Session::getInstance(); $sess->config = serialize(htmlentities($config, ENT_QUOTES, 'UTF-8')); $sess->app_uri = $form->app_uri; } if ($this->data['configWritable']) { $cfgFile->write($config)->save(); } // Install the database $sqlFile = __DIR__ . '/../../../data/phire.' . str_replace(array('pdo\\', 'mysqli'), array('', 'mysql'), strtolower($form->db_adapter)) . '.sql'; $db = array('database' => $dbName, 'username' => $dbUser, 'password' => $dbPassword, 'host' => $dbHost, 'prefix' => $dbPrefix, 'type' => str_replace('\\', '_', $form->db_adapter)); Dbs::install($dbName, $db, $sqlFile, $installFile, true); if (stripos($form->db_adapter, 'Pdo\\') !== false) { $adapter = 'Pdo'; $type = strtolower(substr($form->db_adapter, strpos($form->db_adapter, '\\') + 1)); } else { $adapter = $form->db_adapter; $type = null; } // Set the default system config $db = Db::factory($adapter, array('database' => $dbName, 'username' => $dbUser, 'password' => $dbPassword, 'host' => $dbHost, 'type' => $type)); // Get server info if (isset($_SERVER) && isset($_SERVER['SERVER_SOFTWARE'])) { $server = new Server(); $os = $server->getOs() . ' (' . $server->getDistro() . ')'; $srv = $server->getServer() . ' ' . $server->getServerVersion(); $domain = $_SERVER['HTTP_HOST']; $doc = $_SERVER['DOCUMENT_ROOT']; } else { $os = ''; $srv = ''; $domain = ''; $doc = ''; } // Set the system configuration $db->adapter()->query("UPDATE " . $db->adapter()->escape($dbPrefix) . "config SET value = '" . \Phire\Project::VERSION . "' WHERE setting = 'system_version'"); $db->adapter()->query("UPDATE " . $db->adapter()->escape($dbPrefix) . "config SET value = '" . $db->adapter()->escape($domain) . "' WHERE setting = 'system_domain'"); $db->adapter()->query("UPDATE " . $db->adapter()->escape($dbPrefix) . "config SET value = '" . $db->adapter()->escape($doc) . "' WHERE setting = 'system_document_root'"); $db->adapter()->query("UPDATE " . $db->adapter()->escape($dbPrefix) . "config SET value = '" . $db->adapter()->escape($os) . "' WHERE setting = 'server_operating_system'"); $db->adapter()->query("UPDATE " . $db->adapter()->escape($dbPrefix) . "config SET value = '" . $db->adapter()->escape($srv) . "' WHERE setting = 'server_software'"); $db->adapter()->query("UPDATE " . $db->adapter()->escape($dbPrefix) . "config SET value = '" . $db->adapter()->version() . "' WHERE setting = 'database_version'"); $db->adapter()->query("UPDATE " . $db->adapter()->escape($dbPrefix) . "config SET value = '" . PHP_VERSION . "' WHERE setting = 'php_version'"); $db->adapter()->query("UPDATE " . $db->adapter()->escape($dbPrefix) . "config SET value = '" . date('Y-m-d H:i:s') . "' WHERE setting = 'installed_on'"); $db->adapter()->query("UPDATE " . $db->adapter()->escape($dbPrefix) . "config SET value = '" . $db->adapter()->escape($form->language) . "' WHERE setting = 'default_language'"); $db->adapter()->query("UPDATE " . $db->adapter()->escape($dbPrefix) . "user_types SET password_encryption = '" . $db->adapter()->escape((int) $form->password_encryption) . "' WHERE id = 2001"); }
/** * Static method to get all configuration values * * @return array */ public static function setConfig() { if (isset($_SERVER) && isset($_SERVER['SERVER_SOFTWARE'])) { $server = new Server(); $cfg = static::findById('system_domain'); $cfg->value = $_SERVER['HTTP_HOST']; $cfg->update(); $cfg = static::findById('system_document_root'); $cfg->value = $_SERVER['DOCUMENT_ROOT']; $cfg->update(); $cfg = static::findById('server_operating_system'); $cfg->value = $server->getOs() . ' (' . $server->getDistro() . ')'; $cfg->update(); $cfg = static::findById('server_software'); $cfg->value = $server->getServer() . ' ' . $server->getServerVersion(); $cfg->update(); $cfg = static::findById('database_version'); $cfg->value = static::getDb()->adapter()->version(); $cfg->update(); $cfg = static::findById('php_version'); $cfg->value = $server->getPhp(); $cfg->update(); $cfg = static::findById('reply_email'); $cfg->value = 'noreply@' . str_replace('www.', '', $_SERVER['HTTP_HOST']); $cfg->update(); } }