Пример #1
0
 /**
  * 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;
 }
Пример #2
0
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;
}