. * */ /* * * An example of config.php * * "mysql", * "firstrun" => false, * "pi" => 3.14 * ); * ?> * */ /** * This class is responsible for reading and writing config.php, the very basic * configuration file of owncloud. */ class OC_CONFIG{ // associative array key => value private static $cache = array(); // Is the cache filled? private static $init = false; /** * @brief Lists all available config keys * @returns array with key names * * This function returns all keys saved in config.php. Please note that it * does not return the values. */ public static function getKeys(){ self::readData(); return array_keys( self::$cache ); } /** * @brief Gets a value from config.php * @param $key key * @param $default = null default value * @returns the value or $default * * This function gets the value from config.php. If it does not exist, * $default will be returned. */ public static function getValue( $key, $default = null ){ self::readData(); if( array_key_exists( $key, self::$cache )){ return self::$cache[$key]; } return $default; } /** * @brief Sets a value * @param $key key * @param $value value * @returns true/false * * This function sets the value and writes the config.php. If the file can * not be written, false will be returned. */ public static function setValue( $key, $value ){ self::readData(); // Add change self::$cache[$key] = $value; // Write changes self::writeData(); return true; } /** * @brief Removes a key from the config * @param $key key * @returns true/false * * This function removes a key from the config.php. If owncloud has no * write access to config.php, the function will return false. */ public static function deleteKey( $key ){ self::readData(); if( array_key_exists( $key, self::$cache )){ // Delete key from cache unset( self::$cache[$key] ); // Write changes self::writeData(); } return true; } /** * @brief Loads the config file * @returns true/false * * Reads the config file and saves it to the cache */ private static function readData( $key ){ if( !self::$init ){ return true; } global $SERVERROOT; if( !file_exists( "$SERVERROOT/config/config.php" )){ return false; } // Include the file, save the data from $CONFIG include( "$SERVERROOT/config/config.php" ); self::$cache = $CONFIG; // We cached everything self::$init = true; return true; } /** * @brief Writes the config file * @returns true/false * * Saves the config to the config file. * * Known flaws: Strings are not escaped properly */ public static function writeData( $key ){ // We need the serverroot path global $SERVERROOT; // Create a php file ... $content = " $value ){ if( is_bool( $value )){ $value = $value ? 'true' : 'false'; $content .= "\"$key\" => $value,\n"; } elseif( is_numeric( $value )){ $content .= "\"$key\" => $value,\n"; } else{ $value = str_replace( "'", "\\'", $value ); $configContent .= "\"$key\" => '$value',\n"; } } $content .= ");\n?>\n"; // Write the file file_put_contents( "$SERVERROOT/config/config.php", $content ); return true; } } ?>