summaryrefslogtreecommitdiffstats
path: root/modules-available/sysconfig/install.inc.php
diff options
context:
space:
mode:
authorSimon Rettberg2019-03-21 13:48:57 +0100
committerSimon Rettberg2019-03-21 13:48:57 +0100
commit84c110647b84fc29fb8443d088c710ba8ecf42fe (patch)
tree953f30dfbb2fcb0f5ad1ec4c7f68f667bdded94f /modules-available/sysconfig/install.inc.php
parent[serversetup-bwlp-ipxe] Fix stdbootentry edit; fix duplicate id in html (diff)
downloadslx-admin-84c110647b84fc29fb8443d088c710ba8ecf42fe.tar.gz
slx-admin-84c110647b84fc29fb8443d088c710ba8ecf42fe.tar.xz
slx-admin-84c110647b84fc29fb8443d088c710ba8ecf42fe.zip
[sysconfig] Remember last modified date, show as tooltip
Diffstat (limited to 'modules-available/sysconfig/install.inc.php')
-rw-r--r--modules-available/sysconfig/install.inc.php57
1 files changed, 43 insertions, 14 deletions
diff --git a/modules-available/sysconfig/install.inc.php b/modules-available/sysconfig/install.inc.php
index 3e99b777..f402f217 100644
--- a/modules-available/sysconfig/install.inc.php
+++ b/modules-available/sysconfig/install.inc.php
@@ -1,16 +1,17 @@
<?php
-$res = array();
+$update = array();
-$res[] = tableCreate('configtgz', "
+$update[] = tableCreate('configtgz', "
`configid` int(10) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(200) NOT NULL,
`filepath` varchar(255) NOT NULL,
`status` enum('OK','OUTDATED','MISSING') NOT NULL DEFAULT 'MISSING',
+ `dateline` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`configid`)
");
-$res[] = tableCreate('configtgz_module', "
+$update[] = tableCreate('configtgz_module', "
`moduleid` int(10) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(200) NOT NULL,
`moduletype` varchar(16) NOT NULL,
@@ -18,19 +19,20 @@ $res[] = tableCreate('configtgz_module', "
`contents` text NOT NULL,
`version` int(10) unsigned NOT NULL DEFAULT '0',
`status` enum('OK','MISSING','OUTDATED') NOT NULL DEFAULT 'MISSING',
+ `dateline` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`moduleid`),
KEY `title` (`title`),
KEY `moduletype` (`moduletype`,`title`)
");
-$res[] = tableCreate('configtgz_x_module', "
+$update[] = tableCreate('configtgz_x_module', "
`configid` int(10) unsigned NOT NULL,
`moduleid` int(10) unsigned NOT NULL,
PRIMARY KEY (`configid`,`moduleid`),
KEY `moduleid` (`moduleid`)
");
-$res[] = tableCreate('configtgz_location', "
+$update[] = tableCreate('configtgz_location', "
`locationid` int(11) NOT NULL,
`configid` int(10) unsigned NOT NULL,
PRIMARY KEY (`locationid`),
@@ -38,13 +40,13 @@ $res[] = tableCreate('configtgz_location', "
");
// Constraints
-if (in_array(UPDATE_DONE, $res)) {
+if (in_array(UPDATE_DONE, $update)) {
// To self
- $res[] = tableAddConstraint('configtgz_x_module', 'configid', 'configtgz', 'configid',
+ $update[] = tableAddConstraint('configtgz_x_module', 'configid', 'configtgz', 'configid',
'');
- $res[] = tableAddConstraint('configtgz_x_module', 'moduleid', 'configtgz_module', 'moduleid',
+ $update[] = tableAddConstraint('configtgz_x_module', 'moduleid', 'configtgz_module', 'moduleid',
'');
- $res[] = tableAddConstraint('configtgz_location', 'configid', 'configtgz', 'configid',
+ $update[] = tableAddConstraint('configtgz_location', 'configid', 'configtgz', 'configid',
'ON DELETE CASCADE ON UPDATE CASCADE');
}
@@ -65,22 +67,49 @@ if (!tableHasColumn('configtgz_module', 'version')) {
if (Database::exec("ALTER TABLE `configtgz_module` ADD `version` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'") === false) {
finalResponse(UPDATE_FAILED, 'Could not add version to configtgz_module: ' . Database::lastError());
}
- $res[] = UPDATE_DONE;
+ $update[] = UPDATE_DONE;
}
if (!tableHasColumn('configtgz_module', 'status')) {
if (Database::exec("ALTER TABLE `configtgz_module` ADD `status` ENUM( 'OK', 'MISSING', 'OUTDATED' ) NOT NULL DEFAULT 'MISSING'") === false) {
finalResponse(UPDATE_FAILED, 'Could not add status to configtgz_module: ' . Database::lastError());
}
- $res[] = UPDATE_DONE;
+ $update[] = UPDATE_DONE;
}
if (!tableHasColumn('configtgz', 'status')) {
if (Database::exec("ALTER TABLE `configtgz` ADD `status` ENUM( 'OK', 'OUTDATED', 'MISSING' ) NOT NULL DEFAULT 'MISSING'") === false) {
finalResponse(UPDATE_FAILED, 'Could not add status to configtgz: ' . Database::lastError());
}
- $res[] = UPDATE_DONE;
+ $update[] = UPDATE_DONE;
+}
+if (!tableHasColumn('dateline', 'configtgz_module')) {
+ if (Database::exec("ALTER TABLE `configtgz_module` ADD `dateline` int(10) unsigned NOT NULL DEFAULT '0'") === false) {
+ finalResponse(UPDATE_FAILED, 'Could not add dateline to configtgz_module: ' . Database::lastError());
+ }
+ $update[] = UPDATE_DONE;
+ // Infer from module's filemtime
+ $res = Database::simpleQuery('SELECT moduleid, filepath FROM configtgz_module');
+ while ($row = $res->fetch(PDO::FETCH_ASSOC)) {
+ Database::exec('UPDATE configtgz_module SET dateline = :mtime WHERE moduleid = :moduleid',
+ ['moduleid' => $row['moduleid'], 'mtime' => filemtime($row['filepath'])]);
+ }
+}
+if (!tableHasColumn('dateline', 'configtgz')) {
+ if (Database::exec("ALTER TABLE `configtgz` ADD `dateline` int(10) unsigned NOT NULL DEFAULT '0'") === false) {
+ finalResponse(UPDATE_FAILED, 'Could not add dateline to configtgz: ' . Database::lastError());
+ }
+ $update[] = UPDATE_DONE;
+ // Infer from latest module (since module injection by slx-admin modules would alter the timestamp)
+ $res = Database::simpleQuery('SELECT c.configid, Max(m.dateline) AS dateline FROM configtgz c
+ INNER JOIN configtgz_x_module cxm USING (configid)
+ INNER JOIN configtgz_module m USING (moduleid)
+ GROUP BY configid');
+ while ($row = $res->fetch(PDO::FETCH_ASSOC)) {
+ Database::exec('UPDATE configtgz SET dateline = :mtime WHERE configid = :configid',
+ ['configid' => $row['configid'], 'mtime' => $row['dateline']]);
+ }
}
-// ----- rebuild AD configs ------
+// ----- rebuild configs ------
// TEMPORARY HACK; Rebuild configs.. move somewhere else?
Module::isAvailable('sysconfig');
$list = ConfigModule::getAll();
@@ -95,4 +124,4 @@ if ($list === false) {
}
// Create response for browser
-responseFromArray($res);
+responseFromArray($update);