/** * Save any modified settings, clear the cached settings and return the new settings * * @param array $currentSettings * @return array */ function saveSettings($currentSettings, $log = false) { $newSettings = isset($_POST['configArray']) ? $_POST['configArray'] : ''; if (!empty($newSettings)) { $this->addInfoMessage(_kt('The configuration settings have been updated.')); if ($log) { $comment = array(); } // If the value in the post array is different from the current value, then update the DB foreach ($currentSettings as $setting) { $new = $newSettings[$setting['id']]; if ($setting['value'] != $new) { // Update the value $res = DBUtil::autoUpdate('config_settings', array('value' => $new), $setting['id']); if (PEAR::isError($res)) { $this->addErrorMessage(sprintf(_kt("The setting %s could not be updated: %s"), $setting['display_name'], $res->getMessage())); } if ($log) { $comment[] = sprintf(_kt("%s from %s to %s"), $setting['display_name'], $setting['value'], $new); } } } if ($log) { $this->logTransaction($comment); } // Clear the cached settings $oKTConfig = new KTConfig(); $oKTConfig->clearCache(); // Get the new settings from the DB $currentSettings = $this->getSettings(); } return $currentSettings; }
function performPostUpgradeActions() { // This is just to test and needs to be updated to a more sane and error resistent architrcture if it works. // It should idealy work the same as the upgrades. global $default; // Ensure all plugins are re-registered. $sql = "TRUNCATE plugin_helper"; $res = DBUtil::runQuery($sql); // Clear out all caches and proxies - they need to be regenerated with the new code $proxyDir = $default->proxyCacheDirectory; KTUtil::deleteDirectory($proxyDir); $oKTCache = new KTCache(); $oKTCache->deleteAllCaches(); // Clear the configuration cache, it'll regenerate on next load $oKTConfig = new KTConfig(); $oKTConfig->clearCache(); // Unlock the scheduler $lockFile = $default->cacheDirectory . DIRECTORY_SEPARATOR . 'scheduler.lock'; if (file_exists($lockFile)) { @unlink($lockFile); } return true; }