function showPresetOptions() { $skipTables = array('custom', 'customSingle', 'customMulti', 'customCategory', 'customTextLink', 'customMenuGroup'); foreach (getSchemaPresets() as $tableName => $menuName) { if (in_array($tableName, $skipTables)) { continue; } $encodedValue = htmlencode($tableName); $encodedLabel = htmlencode($menuName); print "<option value='{$encodedValue}'>{$encodedLabel}</option>\n"; } }
function addTable() { global $TABLE_PREFIX, $APP; $menuType = @$_REQUEST['menuType']; $presetTableName = @$_REQUEST['presetName']; $advancedType = @$_REQUEST['advancedType']; // security_dieUnlessPostForm(); security_dieUnlessInternalReferer(); security_dieOnInvalidCsrfToken(); // disableInDemoMode('', 'ajax'); // error checking $errors = ''; if (!$menuType) { $errors .= "No menu type selected!\n"; } if (!@$_REQUEST['menuName']) { $errors .= "No menu name specified!\n"; } $errors .= getTablenameErrors(@$_REQUEST['tableName']); $newSchema = null; if ($menuType == 'copy') { if ($errors) { die($errors); } $sourceSchemaName = @$_REQUEST['copy']; if (!in_array($sourceSchemaName, getSchemaTables())) { die("Couldn't load source schema"); } $newSchema = loadSchema($sourceSchemaName) or die("Couldn't load source schema"); } else { if ($menuType == 'preset') { $schemaPresets = getSchemaPresets(); $presetFound = array_key_exists(@$_REQUEST['preset'], $schemaPresets); if (!@$_REQUEST['preset']) { $errors .= "You must select a preset from the pulldown!\n"; } elseif (!$presetFound) { $errors .= "No schema preset file found for '" . htmlencode($presetTableName) . "'\n"; } } if ($errors) { die($errors); } // create new schema data if ($menuType == 'single') { $presetTableName = "customSingle"; } elseif ($menuType == 'multi') { $presetTableName = "customMulti"; } elseif ($menuType == 'preset') { $presetTableName = @$_REQUEST['preset']; } elseif ($menuType == 'advanced' && $advancedType == 'category') { $presetTableName = "customCategory"; } elseif ($menuType == 'advanced' && $advancedType == 'textlink') { $presetTableName = "customTextLink"; } elseif ($menuType == 'advanced' && $advancedType == 'menugroup') { $presetTableName = "customMenuGroup"; } else { die("Unable to determine preset table name to load!"); } $schemaPresetDir = DATA_DIR . "/schemaPresets/"; $newSchema = loadSchema($presetTableName, $schemaPresetDir) or die("Couldn't load preset schema"); } $newSchema['menuName'] = @$_REQUEST['menuName']; // change menu name $newSchema['menuOrder'] = time(); // use time to sort to bottom // create mysql table // (this isn't required but done here so we catch get mysql errors creating the table) // createMissingSchemaTablesAndFields() creates if this doesn't. $tableNameWithPrefix = $TABLE_PREFIX . @$_REQUEST['tableName']; $result = mysql_query("CREATE TABLE `" . mysql_escape($tableNameWithPrefix) . "` (\n num int(10) unsigned NOT NULL auto_increment,\n PRIMARY KEY (num)\n ) ENGINE=MyISAM DEFAULT CHARSET=utf8;"); if (!$result) { print "Error creating MySQL table.\n\nMySQL error was: " . htmlencode(mysql_error()) . "\n"; exit; } // save new schema saveSchema(@$_REQUEST['tableName'], $newSchema); // Create schema table and fields in MySQL createMissingSchemaTablesAndFields(); clearAlertsAndNotices(); // don't display alerts about adding new fields exit; // this is called with ajax so returning nothing means success - see: addTable_functions.js - initSubmitFormWithAjax }