author | Dan |
Tue, 14 Apr 2009 21:02:13 -0400 | |
changeset 909 | 94c1ff984286 |
parent 812 | 68060328e9c6 |
child 1081 | 745200a9cc2a |
permissions | -rw-r--r-- |
<?php /* * Enano - an open-source CMS capable of wiki functions, Drupal-like sidebar blocks, and everything in between * Version 1.1.6 (Caoineag beta 1) * Copyright (C) 2006-2008 Dan Fuhry * Installation package * common.php - Installer common functions * * 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. */ // Our version number. This needs to be changed for any custom releases. $installer_version = array( 'version' => '1.1.6', 'type' => 'beta' // If type is set to "rc", "beta", or "alpha", optionally another version number can be issued with the key 'sub': // 'sub' => '3' will produce Enano 1.1.1a3 / Enano 1.1.1 alpha 3 ); function installer_enano_version($long = false) { global $installer_version; static $keywords = array( 'alpha' => 'a', 'beta' => 'b', 'RC' => 'rc' ); $v = $installer_version['version']; if ( isset($installer_version['sub']) ) { $v .= ( !$long ) ? $keywords[$installer_version['type']] : " {$installer_version['type']} "; $v .= $installer_version['sub']; } return $v; } // Determine Enano root directory if ( !defined('ENANO_ROOT') ) { $enano_root = dirname(dirname(dirname(__FILE__))); if ( preg_match('#/repo$#', $enano_root) && file_exists("$enano_root/../.enanodev") ) { $enano_root = preg_replace('#/repo$#', '', $enano_root); } define('ENANO_ROOT', $enano_root); } chdir(ENANO_ROOT); // Determine our scriptPath if ( isset($_SERVER['REQUEST_URI']) && !defined('scriptPath') ) { // Use reverse-matching to determine where the REQUEST_URI overlaps the Enano root. $requri = $_SERVER['REQUEST_URI']; if ( isset($_SERVER['PATH_INFO']) && !preg_match('/index\.php$/', $_SERVER['PATH_INFO']) ) { $requri = preg_replace(';' . preg_quote($_SERVER['PATH_INFO']) . '$;', '', $requri); } if ( !preg_match('/\.php$/', $requri) ) { // user requested http://foo/enano as opposed to http://foo/enano/index.php $requri .= '/index.php'; } $sp = dirname($_SERVER['REQUEST_URI']); if ( $sp == '/' || $sp == '\\' ) { $sp = ''; } $sp = preg_replace('#/install$#', '', $sp); define('scriptPath', $sp); } // is Enano already installed? @include(ENANO_ROOT . '/config.php'); if ( defined('ENANO_INSTALLED') && defined('ENANO_DANGEROUS') && !isset($_GET['debug_warn_php4']) ) { $title = 'Installation locked'; require('includes/common.php'); $template->header(); echo '<p>The installer has detected that an installation of Enano already exists on your server. You MUST delete config.php if you wish to reinstall Enano.</p>'; $template->footer(); exit(); } if ( !function_exists('microtime_float') ) { function microtime_float() { list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec); } } define('IN_ENANO_INSTALL', 1); require_once(ENANO_ROOT . '/install/includes/ui.php'); require_once(ENANO_ROOT . '/includes/functions.php'); require_once(ENANO_ROOT . '/includes/json.php'); require_once(ENANO_ROOT . '/includes/constants.php'); require_once(ENANO_ROOT . '/includes/rijndael.php'); require_once(ENANO_ROOT . '/includes/hmac.php'); // If we have at least PHP 5, load json2 if ( version_compare(PHP_VERSION, '5.0.0', '>=') ) { require_once(ENANO_ROOT . '/includes/json2.php'); } strip_magic_quotes_gpc(); // Build a list of available languages $dir = @opendir( ENANO_ROOT . '/language' ); if ( !$dir ) die('CRITICAL: could not open language directory'); $languages = array(); // Use the old PHP4-compatible JSON decoder $json = new Services_JSON(SERVICES_JSON_LOOSE_TYPE); while ( $dh = @readdir($dir) ) { if ( $dh == '.' || $dh == '..' ) continue; if ( file_exists( ENANO_ROOT . "/language/$dh/meta.json" ) ) { // Found a language directory, determine metadata $meta = @file_get_contents( ENANO_ROOT . "/language/$dh/meta.json" ); if ( empty($meta) ) // Could not read metadata file, continue silently continue; $meta = $json->decode($meta); if ( isset($meta['lang_name_english']) && isset($meta['lang_name_native']) && isset($meta['lang_code']) ) { $languages[$meta['lang_code']] = array( 'name' => $meta['lang_name_native'], 'name_eng' => $meta['lang_name_english'], 'dir' => $dh ); } } } if ( count($languages) < 1 ) { die('The Enano installer couldn\'t find any languages in the language/ folder. Enano needs at least one language in this folder to load and install properly.'); } // List of available DB drivers $supported_drivers = array('mysql', 'postgresql'); // Divert to CLI loader if running from CLI if ( isset($argc) && isset($argv) ) { if ( is_int($argc) && is_array($argv) && !isset($_SERVER['REQUEST_URI']) ) { define('ENANO_CLI', ''); } } ?>