2012-02-27 21:45:36 +01:00
< ? php
/***************************************************************
* Copyright notice
*
* ( c ) 2012 Jérôme Schneider < mail @ jeromeschneider . fr >
* All rights reserved
*
* http :// baikal . codr . fr
*
* This script is part of the Baïkal Server project . The Baïkal
* Server project is free software ; you can redistribute it
* 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 .
*
* The GNU General Public License can be found at
* http :// www . gnu . org / copyleft / gpl . html .
*
* This script 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 more details .
*
* This copyright notice MUST APPEAR in all copies of the script !
***************************************************************/
if ( ! defined ( " BAIKAL_CONTEXT " ) || BAIKAL_CONTEXT !== TRUE ) {
die ( " Bootstrap.php may not be included outside the Baikal context " );
}
if ( version_compare ( PHP_VERSION , '5.2.0' , '<' )) {
die ( 'Baikal Fatal Error: Baikal requires PHP 5.2.0+ to run properly. You version is: ' . PHP_VERSION . '.' );
}
if ( ! defined ( 'PDO::ATTR_DRIVER_NAME' )) {
die ( 'Baikal Fatal Error: PDO is unavailable. It\'s required by Baikal.' );
}
if ( ! in_array ( 'sqlite' , PDO :: getAvailableDrivers ())) {
die ( 'Baikal Fatal Error: PDO::sqlite is unavailable. It\'s required by Baikal.' );
}
# determine Baïkal install root path
# adaptive, either ../../ or ../ relative to the Bootstrap
# not using realpath here as it resolves symlinks
$sTemp = dirname ( dirname ( __FILE__ )) . " / " ; #../ if Baïkal distrib is at the same level than "Core" symlink
if ( @ file_exists ( $sTemp ) && ( @ is_dir ( $sTemp . " Core " ) || @ is_link ( $sTemp . " Core " ))) {
define ( " BAIKAL_PATH_ROOT " , $sTemp ); # ../
} else {
$sTemp = dirname ( $sTemp ) . " / " ; # ../../ relative to bootstrap
if ( @ file_exists ( $sTemp ) && ( @ is_dir ( $sTemp . " Core " ) || @ is_link ( $sTemp . " Core " ))) {
define ( " BAIKAL_PATH_ROOT " , $sTemp ); # ../../
} else {
die ( 'Baikal Fatal Error: Unable to determine Baikal root path.' );
}
}
define ( " BAIKAL_PATH_CORE " , BAIKAL_PATH_ROOT . " Core/ " );
define ( " BAIKAL_PATH_SPECIFIC " , BAIKAL_PATH_ROOT . " Specific/ " );
2012-03-12 13:20:49 +01:00
define ( " BAIKAL_PATH_FRAMEWORKS " , BAIKAL_PATH_CORE . " Frameworks/ " );
2012-03-20 13:33:57 +01:00
define ( " BAIKAL_PATH_WWWROOT " , BAIKAL_PATH_CORE . " WWWRoot/ " );
2012-02-27 21:45:36 +01:00
require_once ( BAIKAL_PATH_SPECIFIC . " config.php " );
date_default_timezone_set ( BAIKAL_TIMEZONE );
# Check if DB exists
if ( ! file_exists ( BAIKAL_SQLITE_FILE )) {
die ( " DB file does not exist.<br />To create it, please copy '<b>Core/Resources/baikal.empty.sqlite</b>' to '<b>Specific/db/baikal.sqlite</b>'.<br /><span style='color: red; font-weight: bold'>Please note the change in the file name while doing so</span> (from 'baikal.empty.sqlite' to 'baikal.sqlite'). " );
}
# Database
$pdo = new PDO ( 'sqlite:' . BAIKAL_SQLITE_FILE );
$pdo -> setAttribute ( PDO :: ATTR_ERRMODE , PDO :: ERRMODE_EXCEPTION );
2012-03-12 13:20:49 +01:00
$bShouldCheckEnv = (( ! defined ( " BAIKAL_CONTEXT_CLI " ) || BAIKAL_CONTEXT_CLI === FALSE ) && ( ! defined ( " BAIKAL_CONTEXT_ADMIN " ) || BAIKAL_CONTEXT_ADMIN === FALSE ));
2012-02-27 21:45:36 +01:00
# Check if at least one user exists
2012-03-12 13:20:49 +01:00
if ( $bShouldCheckEnv === TRUE ) {
2012-02-27 21:45:36 +01:00
if (( $iNbUsers = intval ( $pdo -> query ( 'SELECT count(*) FROM users' ) -> fetchColumn ())) === 0 ) {
die ( " No users are defined.<br />To create a user, you can use the helper <b>Core/Scripts/adduser.php</b> (requires command line access) " );
}
}
2012-03-12 13:20:49 +01:00
if ( $bShouldCheckEnv === TRUE ) {
2012-02-27 21:45:36 +01:00
# Mapping PHP errors to exceptions
function exception_error_handler ( $errno , $errstr , $errfile , $errline ) {
throw new ErrorException ( $errstr , 0 , $errno , $errfile , $errline );
}
set_error_handler ( " exception_error_handler " );
} else {
error_reporting ( E_ALL ^ E_NOTICE );
}
// Autoloader
require_once ( BAIKAL_PATH_SABREDAV . 'autoload.php' );