. * */ /* * * 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() { if( self::$init ) { return true; } if( !file_exists( OC::$SERVERROOT."/config/config.php" )) { return false; } // Include the file, save the data from $CONFIG include OC::$SERVERROOT."/config/config.php"; if( isset( $CONFIG ) && is_array( $CONFIG )) { 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. * */ public static function writeData() { // Create a php file ... $content = "assign('errors', array(1=>array( 'error'=>"Can't write into config directory 'config'", 'hint'=>"You can usually fix this by giving the webserver user write access to the config directory in owncloud"))); $tmpl->printPage(); exit; } // Prevent others not to read the config @chmod($filename, 0640); return true; } }