Add support for renaming config settings
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -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),
|
||||
));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user