From ffffab643e031524b6fdfe0c39adae1f6c8e9c4d Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Wed, 8 Jun 2016 18:33:30 +0200 Subject: [install] Implement install scripts for most modules --- apis/update.inc.php | 273 ---------------------------------------------------- 1 file changed, 273 deletions(-) (limited to 'apis') diff --git a/apis/update.inc.php b/apis/update.inc.php index e7ecc6bd..d3262eb3 100644 --- a/apis/update.inc.php +++ b/apis/update.inc.php @@ -56,277 +56,4 @@ if ($list === false) { Message::addSuccess('db-update-done'); if (tableExists('eventlog')) EventLog::info("Database updated to version $currentVersion"); -DefaultData::populate(); Util::redirect('index.php?do=Main'); - -//////////////// - -function tableHasColumn($table, $column) -{ - $table = preg_replace('/\W/', '', $table); - $column = preg_replace('/\W/', '', $column); - $res = Database::simpleQuery("DESCRIBE `$table`", array(), true); - if ($res !== false) { - while ($row = $res->fetch(PDO::FETCH_ASSOC)) { - if ((is_array($column) && in_array($row['Field'], $column)) || (is_string($column) && $row['Field'] === $column)) - return true; - } - } - return false; -} - -function tableDropColumn($table, $column) -{ - $table = preg_replace('/\W/', '', $table); - $column = preg_replace('/\W/', '', $column); - $res = Database::simpleQuery("DESCRIBE `$table`", array(), true); - if ($res !== false) { - while ($row = $res->fetch(PDO::FETCH_ASSOC)) { - if ((is_array($column) && in_array($row['Field'], $column)) || (is_string($column) && $row['Field'] === $column)) - Database::exec("ALTER TABLE `$table` DROP `{$row['Field']}`"); - } - } -} - -function tableExists($table) -{ - $res = Database::simpleQuery("SHOW TABLES", array(), true); - while ($row = $res->fetch(PDO::FETCH_ASSOC)) { - if ($row['Tables_in_openslx'] === $table) - return true; - } - return false; -} - -// The update functions. Number at the end refers to current version, the function will update to the next version -// ####################### -// ##### 2014-05-28 -// Add dateline field to property table - -function update_1() -{ - if (!tableHasColumn('property', 'dateline')) { - Database::exec("ALTER TABLE `property` ADD `dateline` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0' AFTER `name` , ADD INDEX ( `dateline` )"); - } else { - Database::exec("ALTER TABLE `property` CHANGE `dateline` `dateline` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'"); - } - return true; -} - -// ####################### -// ##### 2014-06-05 -// Add 'news' table to database schema -function update_2() -{ - if (!tableExists('news')) { - // create table - Database::exec("CREATE TABLE IF NOT EXISTS `news` ( - `newsid` int(10) unsigned NOT NULL AUTO_INCREMENT, - `dateline` int(10) unsigned NOT NULL, - `title` varchar(200) DEFAULT NULL, - `content` text, - PRIMARY KEY (`newsid`), - KEY `dateline` (`dateline`) - ) ENGINE=InnoDB DEFAULT CHARSET=utf8 - "); - } - return true; -} - -// ####################### -// ##### 2014-08-18 -// Remove setting descriptions from DB, put into json files now -function update_3() -{ - tableDropColumn('setting', array('de', 'en', 'pt', 'description')); - tableDropColumn('cat_setting', array('de', 'en', 'pt', 'name')); - return true; -} - -// ####################### -// ##### 2014-08-18 -// Remove description column from permission table, add eventlog table -function update_4() -{ - tableDropColumn('permission', 'description'); - if (!tableExists('eventlog')) { - // create table - Database::exec("CREATE TABLE IF NOT EXISTS `eventlog` ( - `logid` int(10) unsigned NOT NULL AUTO_INCREMENT, - `dateline` int(10) unsigned NOT NULL, - `logtypeid` varchar(30) NOT NULL, - `description` varchar(255) NOT NULL, - PRIMARY KEY (`logid`), - KEY `dateline` (`dateline`), - KEY `logtypeid` (`logtypeid`,`dateline`) - ) ENGINE=InnoDB DEFAULT CHARSET=utf8; - "); - } - return true; -} - -// ####################### -// ##### 2014-08-18 -// Add details column to eventlog table, add callback table -function update_5() -{ - if (!tableHasColumn('eventlog', 'extra')) - Database::exec("ALTER TABLE `eventlog` ADD `extra` TEXT NOT NULL"); - if (!tableHasColumn('user', 'lasteventid')) - Database::exec("ALTER TABLE `user` ADD `lasteventid` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'"); - if (!tableExists('callback')) { - Database::exec("CREATE TABLE IF NOT EXISTS `callback` ( - `taskid` varchar(40) CHARACTER SET ascii COLLATE ascii_bin NOT NULL, - `dateline` int(10) unsigned NOT NULL, - `cbfunction` varchar(16) CHARACTER SET ascii COLLATE ascii_bin NOT NULL, - PRIMARY KEY (`taskid`,`cbfunction`), - KEY `dateline` (`dateline`) - ) ENGINE=InnoDB DEFAULT CHARSET=utf8 - "); - } - return true; -} - -// ####################### -// ##### 2014-12-04 -// Add displayvalue column to setting_* -function update_6() -{ - foreach (array('setting_global', 'setting_distro') as $table) { - if (!tableHasColumn($table, 'displayvalue')) { - Database::exec("ALTER TABLE $table ADD `displayvalue` TEXT NOT NULL"); - Database::exec("UPDATE $table SET displayvalue = value"); - } - } - return true; -} - -// ####################### -// ##### 2014-12-12 -// Rename config modules -function update_7() -{ - Database::exec("UPDATE configtgz_module SET moduletype = 'Branding' WHERE moduletype = 'BRANDING'"); - Database::exec("UPDATE configtgz_module SET moduletype = 'AdAuth' WHERE moduletype = 'AD_AUTH'"); - Database::exec("UPDATE configtgz_module SET moduletype = 'CustomModule' WHERE moduletype = 'custom'"); - return true; -} - -// ####################### -// ##### 2015-01-16 -// Extend config module db table, add argument feature to callbacks -function update_8() -{ - tableDropColumn('configtgz_module', 'haschanged'); - if (!tableHasColumn('configtgz_module', 'version')) - Database::exec("ALTER TABLE `configtgz_module` ADD `version` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'"); - if (!tableHasColumn('configtgz_module', 'status')) - Database::exec("ALTER TABLE `configtgz_module` ADD `status` ENUM( 'OK', 'MISSING', 'OUTDATED' ) NOT NULL DEFAULT 'MISSING'"); - if (!tableHasColumn('callback', 'args')) - Database::exec("ALTER TABLE `callback` ADD `args` TEXT NOT NULL DEFAULT ''"); - if (!tableHasColumn('configtgz', 'status')) - Database::exec("ALTER TABLE `configtgz` ADD `status` ENUM( 'OK', 'OUTDATED', 'MISSING' ) NOT NULL DEFAULT 'MISSING'"); - return true; -} - -// ####################### -// ##### 2015-05-21 -// Add statistics table, for logging of session length and idle times -function update_9() -{ - Database::exec("CREATE TABLE IF NOT EXISTS `statistic` ( - `logid` int(10) unsigned NOT NULL AUTO_INCREMENT, - `dateline` int(10) unsigned NOT NULL, - `typeid` varchar(30) NOT NULL, - `clientip` varchar(40) NOT NULL, - `username` varchar(30) NOT NULL, - `data` varchar(255) NOT NULL, - PRIMARY KEY (`logid`), - KEY `dateline` (`dateline`), - KEY `logtypeid` (`typeid`,`dateline`), - KEY `clientip` (`clientip`,`dateline`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8"); - return true; -} - -// ####################### -// ##### 2015-12-21 -// Add machine uuid column to statistics table -function update_10() -{ - if (!tableHasColumn('statistic', 'machineuuid')) { - Database::exec('ALTER TABLE statistic' - . ' ADD COLUMN `machineuuid` varchar(36) CHARACTER SET ascii DEFAULT NULL AFTER clientip,' - . ' ADD INDEX `machineuuid` (`machineuuid`,`dateline`)'); - } - Database::exec("CREATE TABLE IF NOT EXISTS `machine` ( - `machineuuid` char(36) CHARACTER SET ascii NOT NULL, - `locationid` int(11) DEFAULT NULL, - `macaddr` char(17) CHARACTER SET ascii NOT NULL, - `clientip` varchar(45) CHARACTER SET ascii NOT NULL, - `firstseen` int(10) unsigned NOT NULL, - `lastseen` int(10) unsigned NOT NULL, - `logintime` int(10) unsigned NOT NULL, - `position` varchar(40) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, - `lastboot` int(10) unsigned NOT NULL, - `realcores` smallint(5) unsigned NOT NULL, - `mbram` int(10) unsigned NOT NULL, - `kvmstate` enum('UNKNOWN','UNSUPPORTED','DISABLED','ENABLED') NOT NULL, - `cpumodel` varchar(120) NOT NULL, - `systemmodel` varchar(120) NOT NULL DEFAULT '', - `id44mb` int(10) unsigned NOT NULL, - `badsectors` int(10) unsigned NOT NULL, - `data` mediumtext NOT NULL, - `hostname` varchar(200) NOT NULL DEFAULT '', - `notes` text, - PRIMARY KEY (`machineuuid`), - KEY `macaddr` (`macaddr`), - KEY `clientip` (`clientip`), - KEY `realcores` (`realcores`), - KEY `mbram` (`mbram`), - KEY `kvmstate` (`kvmstate`), - KEY `id44mb` (`id44mb`), - KEY `locationid` (`locationid`), - KEY `lastseen` (`lastseen`), - KEY `cpumodel` (`cpumodel`), - KEY `systemmodel` (`systemmodel`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8"); - return true; -} - -function update_11() -{ - if (tableHasColumn('machine', 'roomid')) { - Database::exec("ALTER TABLE `machine` CHANGE `roomid` `locationid` INT(11) DEFAULT NULL"); - } - Database::exec("CREATE TABLE IF NOT EXISTS `setting_location` ( - `locationid` int(11) NOT NULL, - `setting` varchar(28) NOT NULL, - `value` text NOT NULL, - `displayvalue` text NOT NULL, - PRIMARY KEY (`locationid`,`setting`), - KEY `setting` (`setting`) - ) ENGINE=InnoDB DEFAULT CHARSET=utf8"); - Database::exec("CREATE TABLE IF NOT EXISTS `location` ( - `locationid` int(11) NOT NULL AUTO_INCREMENT, - `parentlocationid` int(11) NOT NULL, - `locationname` varchar(100) NOT NULL, - PRIMARY KEY (`locationid`), - KEY `locationname` (`locationname`), - KEY `parentlocationid` (`parentlocationid`) - ) ENGINE=InnoDB DEFAULT CHARSET=utf8;"); - Database::exec("CREATE TABLE IF NOT EXISTS `subnet` ( - `subnetid` int(11) NOT NULL AUTO_INCREMENT, - `startaddr` decimal(39,0) unsigned NOT NULL, - `endaddr` decimal(39,0) unsigned NOT NULL, - `locationid` int(11) NOT NULL, - PRIMARY KEY (`subnetid`), - KEY `startaddr` (`startaddr`,`endaddr`), - KEY `locationid` (`locationid`) - ) ENGINE=InnoDB DEFAULT CHARSET=utf8;"); - return true; -} - -// TODO: Remove setting_distro, setting, cat_setting -// TODO: Add toggle column to setting_global -// TODO: Add pciid table \ No newline at end of file -- cgit v1.2.3-55-g7522