I am looking for a more elegant way to save Codeigniter config data in a MySql database.
This is my Way:
./application/hooks/load_config.php
PHP Code:
function load_config() {
$CI =& get_instance();
foreach($CI->siteconfig->get_config()->result() as $site_config) {
$CI->config->set_item($site_config->key, $site_config->value);
}
}
./application/config/hooks.php
PHP Code:
$hook['post_controller_constructor'] = array(
'class' => '',
'function' => 'load_config',
'filename' => 'my_config.php',
'filepath' => 'hooks'
);
./application/config/config.php
PHP Code:
$config['enable_hooks'] = TRUE;
./application/models/Siteconfig.php
PHP Code:
public function get_config() {
return $this->db->get('config')->resulr_array();
}
public function set_config($key, $value) {
$config_data = array('key' => $key, 'value' => serialize($value));
return $this->db->update('config', $config_data);
}
The config-items are normaly stored in an config-array like this:
PHP Code:
$config["default"] = array('key' => 'value');
If I call get_config(), I get an array with another strukture:
PHP Code:
Array
(
[0] => Array(
[key] => ...,
[value] => ...
)
)
I am correcting this by using a foreach-loop:
PHP Code:
$result = $this->siteconfig->get_config();
foreach($result as $item => $value){
$this->config_vars[$value['key']] = $value['value'];
}
Is there a more elegant, performant way?
Thanks
Tom