diff --git a/include/class.migrater.php b/include/class.migrater.php index b6bce93cc2293159ee6e83973cd6f2f4c61b964f..f3d6c775dc50240deaf460b7586d961770422aed 100644 --- a/include/class.migrater.php +++ b/include/class.migrater.php @@ -81,10 +81,13 @@ class DatabaseMigrater { * update is triggered and the patches in the stream folder are used to * upgrade the database. */ - /* static */ function getUpgradeStreams($basedir) { + /* static */ + function getUpgradeStreams($basedir) { static $streams = array(); if ($streams) return $streams; + // TODO: Make the hash algo configurable in the streams + // configuration ( core : md5 ) $config = @file_get_contents($basedir.'/streams.cfg'); if (!$config) $config = 'core'; foreach (explode("\n", $config) as $line) { diff --git a/setup/inc/class.installer.php b/setup/inc/class.installer.php index d0741fe72503dd80cc454b41ba7eb9c06fd6773a..5562f33ab120196550aff8690984b4d610d27309 100644 --- a/setup/inc/class.installer.php +++ b/setup/inc/class.installer.php @@ -13,6 +13,7 @@ vim: expandtab sw=4 ts=4 sts=4: **********************************************************************/ +require_once INCLUDE_DIR.'class.migrater.php'; require_once INCLUDE_DIR.'class.setup.php'; class Installer extends SetupWizard { @@ -109,24 +110,34 @@ class Installer extends SetupWizard { define('ADMIN_EMAIL',$vars['admin_email']); //Needed to report SQL errors during install. define('PREFIX',$vars['prefix']); //Table prefix - $schemaFile =INC_DIR.'sql/osTicket-mysql.sql'; //DB dump. - $debug = true; //XXX:Change it to true to show SQL errors. + $debug = true; // Change it to false to squelch SQL errors. //Last minute checks. - if(!file_exists($schemaFile) || !($fp = fopen($schemaFile, 'rb'))) - $this->errors['err']='Internal Error - please make sure your download is the latest (#1)'; - elseif( - !($signature=trim(file_get_contents("$schemaFile.sig"))) - || !($hash=md5(fread($fp, filesize($schemaFile)))) - || strcasecmp($signature, $hash)) - $this->errors['err']='Unknown or invalid schema signature (' - .$signature.' .. '.$hash.')'; - elseif(!file_exists($this->getConfigFile()) || !($configFile=file_get_contents($this->getConfigFile()))) + if(!file_exists($this->getConfigFile()) || !($configFile=file_get_contents($this->getConfigFile()))) $this->errors['err']='Unable to read config file. Permission denied! (#2)'; elseif(!($fp = @fopen($this->getConfigFile(),'r+'))) $this->errors['err']='Unable to open config file for writing. Permission denied! (#3)'; - elseif(!$this->load_sql_file($schemaFile,$vars['prefix'], true, $debug)) - $this->errors['err']='Error parsing SQL schema! Get help from developers (#4)'; + + else { + foreach (DatabaseMigrater::getUpgradeStreams(INCLUDE_DIR.'upgrader/streams/') + as $stream=>$signature) { + $schemaFile = INC_DIR."streams/$stream/install-mysql.sql"; + if (!file_exists($schemaFile) || !($fp2 = fopen($schemaFile, 'rb'))) + $this->errors['err'] = $stream + . ': Internal Error - please make sure your download is the latest (#1)'; + elseif ( + // TODO: Make the hash algo configurable in the streams + // configuration ( core : md5 ) + !($hash = md5(fread($fp2, filesize($schemaFile)))) + || strcasecmp($signature, $hash)) + $this->errors['err'] = $stream + .': Unknown or invalid schema signature (' + .$signature.' .. '.$hash.')'; + elseif (!$this->load_sql_file($schemaFile, $vars['prefix'], true, $debug)) + $this->errors['err'] = $stream + .': Error parsing SQL schema! Get help from developers (#4)'; + } + } $sql='SELECT `id` FROM '.PREFIX.'sla ORDER BY `id` LIMIT 1'; $sla_id_1 = db_result(db_query($sql, false), 0); @@ -173,6 +184,7 @@ class Installer extends SetupWizard { //Create config settings---default settings! //XXX: rename ostversion helpdesk_* ?? + // XXX: Some of this can go to the core install file $defaults = array('isonline'=>'0', 'default_email_id'=>$support_email_id, 'alert_email_id'=>$alert_email_id, 'default_dept_id'=>$dept_id_1, 'default_sla_id'=>$sla_id_1, 'default_timezone_id'=>$eastern_timezone, 'default_template_id'=>$template_id_1, diff --git a/setup/inc/sql/osTicket-mysql.sql.sig b/setup/inc/sql/osTicket-mysql.sql.sig deleted file mode 100644 index 12c25dcccc83eb603a0367e9d41b434cfadd5617..0000000000000000000000000000000000000000 --- a/setup/inc/sql/osTicket-mysql.sql.sig +++ /dev/null @@ -1 +0,0 @@ -740428f9986da6ad85f88ec841b57bfe diff --git a/setup/inc/sql/osTicket-mysql.sql b/setup/inc/streams/core/install-mysql.sql similarity index 100% rename from setup/inc/sql/osTicket-mysql.sql rename to setup/inc/streams/core/install-mysql.sql