_loaded_keys[$group] = array_combine(array_keys($config), array_keys($config)); } return $config; } /** * Writes the passed config for $group * * Returns chainable instance on success or throws * Kohana_Config_Exception on failure * * @param string $group The config group * @param string $key The config key to write to * @param array $config The configuration to write * @return boolean */ public function write($group, $key, $config) { $config = serialize($config); // Check to see if we've loaded the config from the table already if (isset($this->_loaded_keys[$group][$key])) { $this->_update($group, $key, $config); } else { // Attempt to run an insert query // This may fail if the config key already exists in the table // and we don't know about it try { $this->_insert($group, $key, $config); } catch (Database_Exception $e) { // Attempt to run an update instead $this->_update($group, $key, $config); } } return TRUE; } /** * Insert the config values into the table * * @param string $group The config group * @param string $key The config key to write to * @param array $config The serialized configuration to write * @return boolean */ protected function _insert($group, $key, $config) { DB::insert($this->_table_name, array('group_name', 'config_key', 'config_value')) ->values(array($group, $key, $config)) ->execute($this->_db_instance); return $this; } /** * Update the config values in the table * * @param string $group The config group * @param string $key The config key to write to * @param array $config The serialized configuration to write * @return boolean */ protected function _update($group, $key, $config) { DB::update($this->_table_name) ->set(array('config_value' => $config)) ->where('group_name', '=', $group) ->where('config_key', '=', $key) ->execute($this->_db_instance); return $this; } }