/** * Update application settings */ function sumo_update_config($name = '', $data = array()) { if (!empty($data)) { global $SUMO; // Server if ($name == 'server') { $xml['config'] = array_merge($SUMO['config'], $data); $xml['config']['server']['version'] = SUMO_VERSION; $xml['config']['server']['updated'] = $SUMO['config']['server']['updated']; $xml['config']['server']['charset'] = $SUMO['config']['server']['charset']; } // Create XML $xml_data = sumo_array_toxml($xml, $SUMO['config']['server']['charset'], FALSE); // Fix: prevent database optimization hits too low if ($name == 'server') { if ($xml['config']['database']['optimize_hits'] < 1000) { $xml['config']['database']['optimize_hits'] = 1000; } } $query = "UPDATE " . SUMO_TABLE_CONFIGS . " \n\t\t\t SET data='" . addcslashes($xml_data, "'") . "'\n\t\t \t WHERE name='" . $name . "'"; $SUMO['DB']->Execute($query); $SUMO['DB']->CacheFlush(); sumo_write_log('I06001X', array($name, $SUMO['user']['user']), 3, 3); return TRUE; } else { return FALSE; } }
/** * Convert PHP array to XML data */ function sumo_array_toxml($array = array(), $charset = 'UTF-8', $header = true, $s = true, $t = "") { $xml = $s ? "<?xml version=\"1.0\" encoding=\"" . $charset . "\"?>\n" : ""; foreach ($array as $key => $value) { if (is_string($key)) { if (is_array($value)) { $xml .= $t . "<" . $key . ">\n" . sumo_array_toxml($value, '', false, false, $t . "\t") . $t . "</" . $key . ">\n"; } else { $xml .= $t . "<" . $key . ">" . $value . "</" . $key . ">\n"; } } } if ($header) { header('Content-type: text/xml; charset=' . $charset); header('Content-length: ' . strlen($xml)); echo $xml; } else { return $xml; } }