Newer
Older
<?php
/*********************************************************************
class.setup.php
osTicket setup wizard.
Peter Rotich <peter@osticket.com>
Copyright (c) 2006-2012 osTicket
http://www.osticket.com
Released under the GNU General Public License WITHOUT ANY WARRANTY.
See LICENSE.TXT for details.
vim: expandtab sw=4 ts=4 sts=4:
**********************************************************************/
Class SetupWizard {
//Mimimum requirements
var $prereq = array('php' => '4.3',
'mysql' => '4.4');
//Version info - same as the latest version.
var $version ='1.7-dpr2';
var $version_verbose='1.7 DPR 2';
//Errors
var $errors=array();
function SetupWizard(){
$this->errors=array();
}
function load_sql_file($file, $prefix, $abort=true, $debug=false) {
if(!file_exists($file) || !($schema=file_get_contents($file)))
return $this->abort('Error accessing SQL file '.basename($file));
return $this->load_sql($schema, $prefix, $abort, $debug);
}
/*
load SQL schema - assumes MySQL && existing connection
*/
function load_sql($schema, $prefix, $abort=true, $debug=false) {
# Strip comments and remarks
$schema=preg_replace('%^\s*(#|--).*$%m','',$schema);
# Replace table prefis
$schema = str_replace('%TABLE_PREFIX%',$prefix, $schema);
# Split by semicolons - and cleanup
if(!($statements = array_filter(array_map('trim', @explode(';', $schema)))))
return $this->abort('Error parsing SQL schema');
@mysql_query('SET SESSION SQL_MODE =""');
foreach($statements as $k=>$sql) {
if(!mysql_query($sql)) {
if($debug) echo "[$sql]=>".mysql_error();
if($abort)
return $this->abort("[$sql] - ".mysql_error());
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
}
}
return true;
}
function getVersion() {
return $this->version;
}
function getVersionVerbose() {
return $this->version_verbose;
}
function getPHPVersion() {
return $this->prereq['php'];
}
function getMySQLVersion() {
return $this->prereq['mysql'];
}
function check_php() {
return (version_compare(PHP_VERSION,$this->getPHPVersion())>=0);
}
function check_mysql() {
return (extension_loaded('mysql'));
}
function check_prereq() {
return ($this->check_php() && $this->check_mysql());
}
/*
@error is a mixed var.
*/
function abort($error) {
$this->onError($error);
return false; // Always false... It's an abort.
}
function setError($error) {
if($error && is_array($error))
$this->errors = array_merge($this->errors,$error);
elseif($error)
$this->errors[] = $error;
}
function getErrors(){
return $this->errors;
}
function onError($error) {
return $this->setError($error);