Add support for renaming config settings

This commit is contained in:
2011-08-29 19:19:29 +01:00
parent 01d97bface
commit b8dfca3aa5
3 changed files with 32 additions and 0 deletions

View File

@@ -167,6 +167,22 @@ class SihnonFramework_Config {
// Persist the change into the backend
return $this->backend->remove($key);
}
public function rename($key, $new_key) {
if ( ! ($this->backend instanceof Sihnon_Config_IUpdateable)) {
throw new Sihnon_Exception_ReadOnlyConfigBackend();
}
if (!isset($this->settings[$key])) {
throw new Sihnon_Exception_UnknownSetting($key);
}
// Rename the setting for this run
$this->settings[$new_key] = $this->settings[$key];
unset($this->settings[$key]);
// Persist the change into the backend
return $this->backend->rename($key, $new_key);
}
};

View File

@@ -29,6 +29,15 @@ interface SihnonFramework_Config_IUpdateable {
*/
public function remove($key);
/**
*
* Rename a setting
* @param string $key
* @param string $new_key
* @return bool
*/
public function rename($key, $new_key);
}
?>

View File

@@ -49,6 +49,13 @@ class SihnonFramework_Config_Plugin_Database extends Sihnon_PluginBase implement
));
}
public function rename($key, $new_key) {
return $this->database->update("UPDATE `{$this->table}` SET `name`=:new_name WHERE `name`=:name LIMIT 1", array(
array('name' => 'new_name', 'value' => $new_key, 'type' => PDO::PARAM_STR),
array('name' => 'name', 'value' => $key, 'type' => PDO::PARAM_STR),
));
}
}
?>