--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/install/install.php Wed Jan 16 13:55:49 2008 -0500
@@ -0,0 +1,275 @@
+<?php
+
+/*
+ * Enano - an open-source CMS capable of wiki functions, Drupal-like sidebar blocks, and everything in between
+ * Version 1.1.1
+ * Copyright (C) 2006-2007 Dan Fuhry
+ * Installation package
+ * install.php - Main installation interface
+ *
+ * This program is Free Software; you can redistribute and/or modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for details.
+ */
+
+define('IN_ENANO', 1);
+// DEFINE THIS BEFORE RELEASE!
+define('ENANO_DANGEROUS', 1);
+
+require_once('includes/common.php');
+
+$stages = array('language', 'license', 'sysreqs', 'database', 'website', 'login', 'confirm', 'install', 'finish');
+$stage_ids = array();
+
+if ( isset($_POST['language']) )
+{
+ // Include language lib and additional PHP5-only JSON functions
+ require_once( ENANO_ROOT . '/includes/json2.php' );
+ require_once( ENANO_ROOT . '/includes/lang.php' );
+
+ // We have a language ID - init language
+ $lang_id = $_POST['language'];
+ if ( !isset($languages[$lang_id]) )
+ {
+ die('Invalid language selection - can\'t load metadata');
+ }
+
+ $language_dir = $languages[$lang_id]['dir'];
+
+ // Initialize language support
+ $lang = new Language($lang_id);
+ $lang->load_file(ENANO_ROOT . '/language/' . $language_dir . '/install.json');
+ $lang_uri = 'install.php?do=lang_js&language=%s';
+
+ // Init UI
+ $ui = new Enano_Installer_UI($lang->get('meta_site_name'), false);
+
+ // Add stages
+ foreach ( $stages as $stage )
+ {
+ $stage_ids[$stage] = $ui->add_stage($lang->get("{$stage}_modetitle"), true);
+ }
+
+ // Determine stage
+ if ( isset($_REQUEST['stage']) && isset($stage_ids[$_REQUEST['stage']]) )
+ {
+ $ui->set_visible_stage($stage_ids[$_REQUEST['stage']]);
+ $stage = $_REQUEST['stage'];
+ }
+ else
+ {
+ $stage = 'license';
+ }
+
+ $stage_num = array_search($stage, $stages);
+ if ( $stage_num )
+ {
+ $stage_num++;
+ $ui->step = $lang->get('meta_step', array('step' => $stage_num, 'title' => $lang->get("{$stage}_modetitle_long")));
+ }
+}
+else
+{
+ $ui = new Enano_Installer_UI('Enano installation', false);
+
+ if ( version_compare(PHP_VERSION, '5.0.0', '<') )
+ {
+ $ui->__construct('Enano installation', false);
+ }
+
+ $ui->step = 'Step 1: Choose language';
+
+ $stage = 'language';
+ $stage_ids['language'] = $ui->add_stage('Language', true);
+ $stage_ids['license'] = $ui->add_stage('License', true);
+ $stage_ids['sysreqs'] = $ui->add_stage('Requirements', true);
+ $stage_ids['database'] = $ui->add_stage('Database', true);
+ $stage_ids['website'] = $ui->add_stage('Site info', true);
+ $stage_ids['login'] = $ui->add_stage('Admin login', true);
+ $stage_ids['confirm'] = $ui->add_stage('Review', true);
+ $stage_ids['install'] = $ui->add_stage('Install', true);
+ $stage_ids['finish'] = $ui->add_stage('Finish', true);
+}
+
+// If we don't have PHP 5, show a friendly error message and bail out
+if ( version_compare(PHP_VERSION, '5.0.0', '<') || isset($_GET['debug_warn_php4']) )
+{
+ $ui->set_visible_stage(
+ $ui->add_stage('PHP compatibility notice', false)
+ );
+ $ui->step = '';
+ $ui->show_header();
+
+ // This isn't localized because all localization code is dependent on
+ // PHP 5 (loading lang.php will throw a parser error under PHP4). This
+ // one message probably doesn't need to be localized anyway.
+
+ ?>
+ <h2 class="heading-error">
+ Your server doesn't have support for PHP 5.
+ </h2>
+ <p>
+ PHP 5 is the latest version of the language on which Enano was built. Its many new features have been available since early 2004, yet
+ many web hosts have not migrated to it because of the work involved. In 2007, Zend Corporation announced that support for the aging
+ PHP 4.x would be discontinued at the end of the year. An initiative called <a href="http://gophp5.org/">GoPHP5</a> was started to
+ encourage web hosts to migrate to PHP 5.
+ </p>
+ <p>
+ Because of the industry's decision to not support PHP 4 any longer, the Enano team decided that it was time to begin using the powerful
+ features of PHP 5 at the expense of PHP 4 compatibility. Therefore, this version of Enano cannot be installed on your server until it
+ is upgraded to at least PHP 5.0.0, and preferably the latest available version.
+ <!-- No, not even removing the check in this installer script will help. As soon as the PHP4 check is passed, the installer shows the
+ language selection page, after which the language code is loaded. The language code and libjson2 will trigger parse errors under
+ PHP <5.0.0. -->
+ </p>
+ <p>
+ If you need to use Enano but can't upgrade your PHP because you're on a shared or reseller hosting service, you can use the
+ <a href="http://enanocms.org/download?series=1.0">1.0.x series of Enano</a> on your site. While the Enano team attempts to make this
+ older series work on PHP 4, official support is not provided for installations of Enano on PHP 4.
+ </p>
+ <?php
+
+ $ui->show_footer();
+ exit();
+}
+
+if ( isset($_SERVER['PATH_INFO']) && !isset($_GET['str']) && isset($_GET['do']) )
+{
+ $_GET['str'] = substr($_SERVER['PATH_INFO'], 1);
+}
+
+if ( isset($_GET['do']) )
+{
+ switch ( $_GET['do'] )
+ {
+ case 'lang_js':
+ if ( !isset($_GET['language']) )
+ die();
+ $lang_id = $_GET['language'];
+ header('Content-type: text/javascript');
+ if ( !isset($languages[$lang_id]) )
+ {
+ die('// Bad language ID');
+ }
+ $language_dir = $languages[$lang_id]['dir'];
+
+ // Include language lib and additional PHP5-only JSON functions
+ require_once( ENANO_ROOT . '/includes/json2.php' );
+ require_once( ENANO_ROOT . '/includes/lang.php' );
+
+ // Initialize language support
+ $lang = new Language($lang_id);
+ $lang->load_file(ENANO_ROOT . '/language/' . $language_dir . '/install.json');
+ $lang->load_file(ENANO_ROOT . '/language/' . $language_dir . '/core.json');
+
+ $time_now = microtime_float();
+ $test = "if ( typeof(enano_lang) != 'object' )
+{
+ var enano_lang = new Object();
+ var enano_lang_code = new Object();
+}
+
+enano_lang[{$lang->lang_id}] = " . enano_json_encode($lang->strings) . ";
+enano_lang_code[{$lang->lang_id}] = '{$lang->lang_code}';";
+ $time_total = round(microtime_float() - $time_now, 4);
+ echo "// Generated in $time_total seconds\n";
+ echo $test;
+
+ exit();
+ case 'modrewrite_test':
+ // Include language lib and additional PHP5-only JSON functions
+ require_once( ENANO_ROOT . '/includes/json2.php' );
+
+ if ( isset($_GET['str']) && in_array($_GET['str'], array('standard', 'shortened', 'rewrite')) )
+ {
+ echo 'good_' . $_GET['str'];
+ }
+ else
+ {
+ echo 'bad';
+ }
+ exit();
+ }
+}
+
+switch ( $stage )
+{
+ default:
+ $ui->show_header();
+ echo '<p>Invalid stage.</p>';
+ break;
+ case 'language':
+ $ui->show_header();
+ ?>
+ <h2>Welcome to Enano.</h2>
+ <h3>Bienvenido a Enano /
+ Wilkommen in Enano /
+ Bienvenue à Enano /
+ Benvenuti a Enano /
+ 欢迎 Enano /
+ Enano へようこそ。
+ </h3>
+ <p>
+ <b>Please select a language:</b> /
+ Por favor, seleccione un idioma: /
+ Bitte wählen Sie eine Sprache: /
+ S’il vous plaît choisir une langue: /
+ Selezionare una lingua: /
+ 请选择一种语言: /
+ 言語を選択してください:</p>
+ <form action="install.php?stage=license" method="post">
+ <select name="language" style="width: 200px;" tabindex="1">
+ <?php
+ foreach ( $languages as $code => $meta )
+ {
+ $sel = ( $code == 'eng' ) ? ' selected="selected"' : '';
+ echo '<option value="' . $code . '"' . $sel . '>' . $meta['name'] . '</option>';
+ }
+ ?>
+ </select>
+ <input tabindex="2" type="submit" value=">>" />
+ </form>
+ <?php
+ break;
+ case 'license':
+ $ui->show_header();
+ require( ENANO_ROOT . '/includes/wikiformat.php' );
+ require( ENANO_ROOT . '/install/includes/stages/license.php' );
+ break;
+ case 'sysreqs':
+ $ui->show_header();
+ require( ENANO_ROOT . '/install/includes/stages/sysreqs.php' );
+ break;
+ case 'database':
+ if ( isset($_POST['driver']) && in_array($_POST['driver'], $supported_drivers) )
+ {
+ // This is SAFE! It's validated against the array in in_array() above.
+ $driver = $_POST['driver'];
+ require( ENANO_ROOT . "/install/includes/stages/database_{$driver}.php" );
+ }
+ else
+ {
+ $ui->show_header();
+ // No driver selected - give the DB drive selection page
+ require( ENANO_ROOT . '/install/includes/stages/database.php' );
+ }
+ break;
+ case 'website':
+ require( ENANO_ROOT . '/install/includes/stages/website.php' );
+ break;
+ case 'login':
+ require( ENANO_ROOT . '/install/includes/stages/login.php' );
+ break;
+ case 'confirm':
+ require( ENANO_ROOT . '/install/includes/stages/confirm.php' );
+ break;
+ case 'install':
+ require( ENANO_ROOT . '/install/includes/stages/install.php' );
+ break;
+}
+
+$ui->show_footer();
+
+?>