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 '';
}
};
?>