Author: Nick Sagona, III (nick@popphp.org)
Beispiel #1
0
 /**
  * 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();
 }
Beispiel #2
0
 /**
  * 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");
 }
Beispiel #3
0
 /**
  * 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();
     }
 }