menus); $menus = array(); foreach( $lines as $line ) { list( $menutype, $ordering, $show ) = explode(',', $line); $menu = new stdclass; $menu->ordering = $ordering; $menu->show = $show; $menus[$menutype] = $menu; } return $menus; } /** Set $menus from an associoative array of menu objects */ function setMenus( &$menus ) { $lines = array(); foreach( $menus as $menutype => $menu ) { $show = $menu->show ? '1' : '0'; $lines[] = $menutype.','.$menu->ordering.','.$show; } $this->menus = implode("\n", $lines); } /** Create the settings table for Joomap and add initial default values */ function create() { global $database; $fields = array(); $vars = get_class_vars('JoomapConfig'); foreach($vars as $name => $value) { switch( gettype( $value ) ) { case 'integer': $fields[] = "`$name` INTEGER NULL"; break; case 'string': if( $name == 'menus') $fields[] = "`$name` TEXT NULL"; else $fields[] = "`$name` VARCHAR(255) NULL"; break; } } $query = "CREATE TABLE #__joomap (". implode(', ', $fields) .")"; $database->setQuery( $query ); if( $database->query() === FALSE ) { echo _JOOMAP_ERR_NO_CREATE . "
\n"; echo mosStripslashes($database->getErrorMsg()); return false; } echo _JOOMAP_MSG_SET_DB_CREATED . "
\n"; // Insert default Settings $fields = array(); foreach($vars as $name => $value) { $fields[] = "`$name`='$value'"; } $query = "INSERT INTO #__joomap SET ". implode(', ', $fields); $database->setQuery( $query ); if( $database->query() === FALSE ) { echo _JOOMAP_ERR_NO_DEFAULT_SET . "
\n"; echo mosStripslashes($database->getErrorMsg()); return false; } echo _JOOMAP_MSG_SET_DEF_INSERT . "
\n"; return true; } /** Create a backup of the settings */ function backup() { global $database; $query = "DROP TABLE IF EXISTS #__joomap_backup"; // remove old backup $database->setQuery( $query ); if( $database->query() === FALSE ) { echo _JOOMAP_ERR_NO_PREV_BU . "
\n"; echo mosStripslashes($database->getErrorMsg()); } $query = "CREATE TABLE #__joomap_backup SELECT * FROM #__joomap"; // backup current settings $database->setQuery( $query ); if( $database->query() === FALSE ) { echo _JOOMAP_ERR_NO_BACKUP . "
\n"; echo mosStripslashes($database->getErrorMsg()); return false; } return true; } /** Restore backup settings */ function restore() { global $database; $query = "SELECT * FROM #__joomap_backup"; // restore backup settings $database->setQuery( $query ); if( $database->loadObject( $backup ) === FALSE ) { return false; } if( isset( $this ) && is_object( $this ) ) { $config = &$this; } else { $config = new JoomapConfig; } $vars = get_class_vars('JoomapConfig'); // assign current settings foreach( $vars as $var => $value ) { if( isset($backup->$var) ) $config->$var = $backup->$var; } return $config->save(); // save current settings } /** Remove the settings table */ function remove() { global $database; $query = "DROP TABLE IF EXISTS #__joomap"; $database->setQuery( $query ); if( $database->query() === FALSE ) { echo _JOOMAP_ERR_NO_DROP_DB . "
\n"; echo mosStripslashes($database->getErrorMsg()); return false; } echo _JOOMAP_MSG_SET_DB_DROPPED . "
\n"; } /** Load settings from the database into this instance */ function load() { global $database; $query = "SELECT * FROM #__joomap"; $database->setQuery( $query ); if( $database->loadObject( $this ) === FALSE ) { return false; // defaults are still set, though } return true; } /** Save current settings to the database */ function save() { global $database; $fields = array(); $vars = get_object_vars( $this ); foreach($vars as $name => $value) { $fields[] = "`{$name}`='{$value}'"; } $query = "UPDATE #__joomap SET ". implode(', ', $fields); $database->setQuery( $query ); if( $database->query() === FALSE ) { echo mosStripslashes($database->getErrorMsg()); return false; } return true; } /** Debug output of current settings */ function dump() { $vars = get_object_vars( $this ); echo '
';
		foreach( $vars as $name => $value ) {
			echo $name.': '.$value."\n";
		}
		echo '
'; } }; ?>