Project

General

Profile

« Previous | Next » 

Revision 1686

Added by darkviper about 12 years ago

some modifications concerning the new autoloader
Twig Template engine v.1.7.0
some droplets actualisized
unfinished changes in installer

View differences:

save.php
32 32
list($usec,$sec) = explode(' ',microtime());
33 33
srand((float)$sec+((float)$usec*100000));
34 34
$session_rand = rand(1000,9999);
35
if(!class_exists('WbAutoloader', false)) {
36
	include(dirname(dirname(__FILE__)).'/framework/WbAutoloader.php');
37
}
38
WbAutoloader::doRegister(array('admin'=>'a', 'modules'=>'m'));
35 39

  
36 40
// Function to set error
37 41
function set_error($message, $field_name = '') {
......
322 326
define('DB_USERNAME', $database_username);
323 327
define('DB_PASSWORD', $database_password);
324 328
define('TABLE_PREFIX', $table_prefix);
325
define('WB_PATH', str_replace(array('/install','\install'), '',dirname(__FILE__)));
329
define('WB_PATH', dirname(dirname(__FILE__)));
326 330
define('WB_URL', $wb_url);
327
define('ADMIN_PATH', WB_PATH.'/admin');
328
define('ADMIN_URL', $wb_url.'/admin');
331
define('ADMIN_DIRECTORY', 'admin');
332
define('ADMIN_PATH', WB_PATH.'/'.ADMIN_DIRECTORY);
333
define('ADMIN_URL', $wb_url.'/'.ADMIN_DIRECTORY);
329 334

  
330 335
// Check if the user has entered a correct path
331 336
if(!file_exists(WB_PATH.'/framework/class.admin.php')) {
332 337
	set_error('It appears the Absolute path that you entered is incorrect');
333 338
}
339
	$sSqlUrl = DB_TYPE.'://'.DB_USERNAME.':'.DB_PASSWORD.'@'.DB_HOST.'/'.DB_NAME;
340
	$database = WbDatabase::getInstance();
341
	$database->doConnect($sSqlUrl);
334 342

  
335
// Try connecting to database
336
if(!@mysql_connect(DB_HOST, DB_USERNAME, DB_PASSWORD)) {
337
	set_error('Database host name, username and/or password incorrect. MySQL Error:<br />'.mysql_error());
338
}
343
	$sSecMod = (defined('SECURE_FORM_MODULE') && SECURE_FORM_MODULE != '') ? '.'.SECURE_FORM_MODULE : '';
344
	$sSecMod = WB_PATH.'/framework/SecureForm'.$sSecMod.'.php';
345
	require_once($sSecMod);
346
	require_once(WB_PATH.'/framework/class.admin.php');
339 347

  
340
// Try to create the database
341
mysql_query('CREATE DATABASE `'.$database_name.'`');
342

  
343
// Close the mysql connection
344
mysql_close();
345

  
346
$sSecMod = (defined('SECURE_FORM_MODULE') && SECURE_FORM_MODULE != '') ? '.'.SECURE_FORM_MODULE : '';
347
$sSecMod = WB_PATH.'/framework/SecureForm'.$sSecMod.'.php';
348
require_once($sSecMod);
349

  
350
require_once(WB_PATH.'/framework/class.admin.php');
351

  
352 348
// Dummy class to allow modules' install scripts to call $admin->print_error
353
class admin_dummy extends admin
354
{
355
	var $error='';
356
	function print_error($message, $link = 'index.php', $auto_footer = true)
349
	class admin_dummy extends admin
357 350
	{
358
		$this->error=$message;
351
		var $error='';
352
		function print_error($message, $link = 'index.php', $auto_footer = true)
353
		{
354
			$this->error=$message;
355
		}
359 356
	}
360
}
361

  
362 357
// Include WB functions file
363
require_once(WB_PATH.'/framework/functions.php');
364

  
358
	require_once(WB_PATH.'/framework/functions.php');
365 359
// Re-connect to the database, this time using in-build database class
366
require_once(WB_PATH.'/framework/class.login.php');
367

  
368
$database=new database();
369

  
360
	require_once(WB_PATH.'/framework/class.login.php');
370 361
// Check if we should install tables
371
if($install_tables == true) {
372
	if (!defined('WB_INSTALL_PROCESS')) define ('WB_INSTALL_PROCESS', true);
373
	// Remove tables if they exist
374 362

  
375
	// Pages table
376
	$pages = "DROP TABLE IF EXISTS `".TABLE_PREFIX."pages`";
377
	$database->query($pages);
378
	// Sections table
379
	$sections = "DROP TABLE IF EXISTS `".TABLE_PREFIX."sections`";
380
	$database->query($sections);
381
	// Settings table
382
	$settings = "DROP TABLE IF EXISTS `".TABLE_PREFIX."settings`";
383
	$database->query($settings);
384
	// Users table
385
	$users = "DROP TABLE IF EXISTS `".TABLE_PREFIX."users`";
386
	$database->query($users);
387
	// Groups table
388
	$groups = "DROP TABLE IF EXISTS `".TABLE_PREFIX."groups`";
389
	$database->query($groups);
390
	// Search table
391
	$search = "DROP TABLE IF EXISTS `".TABLE_PREFIX."search`";
392
	$database->query($search);
393
	// Addons table
394
	$addons = "DROP TABLE IF EXISTS `".TABLE_PREFIX."addons`";
395
	$database->query($addons);
396

  
363
	$sql = 'SHOW TABLES LIKE \''.str_replace('_', '\_', TABLE_PREFIX).'%';
364
	$aTables = array();
365
	if(($oTables = $database->query($sql))) {
366
		while($aTable = $oTables->fetchRow()) {
367
			$aTables[] = $aTable[0];
368
		}
369
	}
370
	$sTableList = implode(', ', $aTables);
371
	if($sTableList != '') {
372
		$database->query('DROP TABLE '.$sTableList);
373
	}
397 374
	// Try installing tables
398

  
399 375
	// Pages table
400 376
	$pages = 'CREATE TABLE `'.TABLE_PREFIX.'pages` ( `page_id` INT NOT NULL auto_increment,'
401 377
				. ' `parent` INT NOT NULL DEFAULT \'0\','
......
662 638
	$database->query("INSERT INTO `".TABLE_PREFIX."search` (name) VALUES ('template')");
663 639

  
664 640
	require_once(WB_PATH.'/framework/initialize.php');
665

  
666 641
	// Include the PclZip class file (thanks to
667 642
	require_once(WB_PATH.'/include/pclzip/pclzip.lib.php');
668

  
669 643
	// Install add-ons
670 644
	if(file_exists(WB_PATH.'/install/modules')) {
671 645
		// Unpack pre-packaged modules
672

  
673 646
	}
674 647
	if(file_exists(WB_PATH.'/install/templates')) {
675 648
		// Unpack pre-packaged templates
676

  
677 649
	}
678 650
	if(file_exists(WB_PATH.'/install/languages')) {
679 651
		// Unpack pre-packaged languages
680

  
681 652
	}
682

  
683 653
	$admin=new admin_dummy('Start','',false,false);
684

  
685 654
	// Load addons into DB
686 655
	$dirs['modules'] = WB_PATH.'/modules/';
687 656
	$dirs['templates'] = WB_PATH.'/templates/';
688 657
	$dirs['languages'] = WB_PATH.'/languages/';
689 658

  
690 659
	foreach($dirs AS $type => $dir) {
691
		if($handle = opendir($dir)) {
660
		if(($handle = opendir($dir))) {
692 661
			while(false !== ($file = readdir($handle))) {
693 662
				if($file != '' AND substr($file, 0, 1) != '.' AND $file != 'admin.php' AND $file != 'index.php') {
694 663
					// Get addon type
......
706 675
					}
707 676
				}
708 677
			}
709
		closedir($handle);
678
			closedir($handle);
710 679
		}
711 680
	}
712 681

  
......
716 685
	}
717 686

  
718 687
// end of if install_tables
719
} else {
720
	/**
721
	 *	DB - Exists
722
	 *	Tables also?
723
	 *
724
	 */
725
	$requested_tables = array("pages","sections","settings","users","groups","search","addons");
726
	for($i=0;$i<count($requested_tables);$i++) $requested_tables[$i] = $table_prefix.$requested_tables[$i];
727 688

  
728
	$result = mysql_list_tables( DB_NAME );
729
	$all_tables = array();
730
	for($i=0; $i < mysql_num_rows($result); $i++) $all_tables[] = mysql_table_name($result, $i);
731

  
732
	$missing_tables = array();
733
	foreach($requested_tables as $temp_table) {
734
		if (!in_array($temp_table, $all_tables)) {
735
			$missing_tables[] = $temp_table;
736
		}
737
	}
738

  
739
	/**
740
	 *	If one or more needed tables are missing, so
741
	 *	we can't go on and have to display an error
742
	 */
743
	if ( count($missing_tables) > 0 ) {
744
		$error_message  = "One or more tables are missing in the selected database <b><font color='#990000'>".DB_NAME."</font></b>.<br />";
745
		$error_message .= "Please install the missing tables or choose 'install tables' as recommend.<br />";
746
		$error_message .= "Missing tables are: <b>".implode(", ", $missing_tables)."</b>";
747

  
748
		set_error( $error_message );
749
	}
750

  
751
	/**
752
	 *	Try to get some default settings ...
753
	 */
754
	$vars = array(
755
		'DEFAULT_THEME'	=> "wb_theme",
756
		'THEME_URL'		=> WB_URL."/templates/wb_theme",
757
		'THEME_PATH'	=> WB_PATH."/templates/wb_theme",
758
		'LANGUAGE'		=> $_POST['default_language'],
759
		'SERVER_EMAIL'	=> "admin@yourdomain.com",
760
		'SMART_LOGIN'	=> false
761
	);
762
	foreach($vars as $k => $v) if (!defined($k)) define($k, $v);
763

  
764
	if (!isset($MESSAGE)) include (WB_PATH."/languages/".LANGUAGE.".php");
765

  
766
	/**
767
	 *	The important part ...
768
	 *	Is there an valid user?
769
	 */
770
	$result = $database->query("SELECT * from ".$table_prefix."users where username='".$_POST['admin_username']."'");
771
	if ( $database->is_error() ) {
772
		set_error ($database->get_error() );
773
	}
774
	if ($result->numRows() == 0) {
775
		/**
776
		 *	No matches found ... user properly unknown
777
	 	 */
778
	 	set_error ("Unkown user. Please use a valid username.");
779
	} else {
780

  
781
		$data = $result->fetchRow();
782
	 	/**
783
	 	 *	Does the password match
784
	 	 */
785
	 	if ( md5($_POST['admin_password']) != $data['password']) {
786
	 		set_error ("Password didn't match");
787
	 	}
788
	}
789
}
790

  
791 689
$ThemeUrl = WB_URL.$admin->correct_theme_source('warning.html');
792 690
// Setup template object, parse vars to it, then parse it
793 691
$ThemePath = realpath(WB_PATH.$admin->correct_theme_source('login.htt'));

Also available in: Unified diff