From 798cdd57a6c0e5879e3ad5d9a76900ed27e1d9e0 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roland=20H=C3=A4der?= Date: Tue, 7 Oct 2008 18:50:29 +0000 Subject: [PATCH] More fixes for installation phase. Thanks to AndreasJung --- .gitattributes | 1 + inc/.secret/.htaccess | 1 + inc/databases.php | 2 +- inc/extensions.php | 4 ++-- inc/extensions/ext-sql_patches.php | 1 + inc/functions.php | 13 +++++++++++-- inc/install-inc.php | 2 +- inc/language/de.php | 1 + inc/libs/admins_functions.php | 4 ++-- inc/libs/rallye_functions.php | 26 ++++++++++++++++++-------- inc/modules/admin/admin-inc.php | 9 +++++---- inc/mysql-manager.php | 22 +++++++++++----------- inc/theme-manager.php | 8 ++++---- install/tables.sql | 17 +++++------------ 14 files changed, 64 insertions(+), 47 deletions(-) create mode 100644 inc/.secret/.htaccess diff --git a/.gitattributes b/.gitattributes index f90ab7b1be..4d5e54c0ca 100644 --- a/.gitattributes +++ b/.gitattributes @@ -76,6 +76,7 @@ DOCS/validator.sh -text /doubler.php -text /img.php -text inc/.htaccess -text +inc/.secret/.htaccess -text inc/autopurge.php -text inc/autopurge/.htaccess -text inc/autopurge/purge- -text diff --git a/inc/.secret/.htaccess b/inc/.secret/.htaccess new file mode 100644 index 0000000000..14249c50bd --- /dev/null +++ b/inc/.secret/.htaccess @@ -0,0 +1 @@ +Deny from all \ No newline at end of file diff --git a/inc/databases.php b/inc/databases.php index 798fcef80a..b4f373f964 100644 --- a/inc/databases.php +++ b/inc/databases.php @@ -113,7 +113,7 @@ define('USAGE_BASE', "usage"); define('SERVER_URL', "http://www.mxchange.org"); // This current patch level -define('CURR_SVN_REVISION', "474"); +define('CURR_SVN_REVISION', "475"); // Take a prime number which is long (if you know a longer one please try it out!) define('_PRIME', 591623); diff --git a/inc/extensions.php b/inc/extensions.php index 0b75f56d25..8be7feba10 100644 --- a/inc/extensions.php +++ b/inc/extensions.php @@ -583,7 +583,7 @@ function GET_EXT_NAME ($id) { $ret = $cacheArray['extensions']['ext_name'][$id]; // Count cache hits - $_CONFIG['cache_hits']++; + if (isset($_CONFIG['cache_hits'])) { $_CONFIG['cache_hits']++; } else { $_CONFIG['cache_hits'] = 1; } } elseif (!EXT_IS_ACTIVE("cache")) { // Load from database $result = SQL_QUERY_ESC("SELECT ext_name FROM "._MYSQL_PREFIX."_extensions WHERE id=%s LIMIT 1", @@ -602,7 +602,7 @@ function GET_EXT_ID($name) { $ret = $cacheArray['extensions']['ext_id'][$name]; // Count cache hits - $_CONFIG['cache_hits']++; + if (isset($_CONFIG['cache_hits'])) { $_CONFIG['cache_hits']++; } else { $_CONFIG['cache_hits'] = 1; } } elseif (!EXT_IS_ACTIVE("cache")) { // Load from database $result = SQL_QUERY_ESC("SELECT id FROM "._MYSQL_PREFIX."_extensions WHERE ext_name='%s' LIMIT 1", diff --git a/inc/extensions/ext-sql_patches.php b/inc/extensions/ext-sql_patches.php index 426eb0018b..a177eac414 100644 --- a/inc/extensions/ext-sql_patches.php +++ b/inc/extensions/ext-sql_patches.php @@ -716,6 +716,7 @@ default: // Do stuff when extension is loaded //$_CONFIG['verbose_sql'] = "N"; define('MT_WORD' , DEFAULT_MT_WORD ); define('MT_WORD2', DEFAULT_MT_WORD2); + define('MT_WORD3', DEFAULT_MT_WORD3); define('POINTS' , DEFAULT_POINTS); } break; diff --git a/inc/functions.php b/inc/functions.php index 6ec587a530..9cabe85c61 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -39,11 +39,20 @@ if (!defined('__SECURITY')) { // Check if our config file is writeable or not function is_INCWritable($inc) { - $fp = @fopen(PATH."inc/".$inc.".php", 'a'); + // Generate FQFN + $fqfn = sprintf("%sinc/%s.php", PATH, $inc); + + // Abort by simple test + if ((FILE_READABLE($fqfn)) && (!is_writeable($fqfn))) { + return false; + } // END - if + + // Test if we can append data + $fp = @fopen($fqfn, 'a'); if ($inc == "dummy") { // Remove dummy file @fclose($fp); - return @unlink(PATH."inc/dummy.php"); + return @unlink($fqfn); } else { // Close all other files return @fclose($fp); diff --git a/inc/install-inc.php b/inc/install-inc.php index 552956e9a6..f19cf3a718 100644 --- a/inc/install-inc.php +++ b/inc/install-inc.php @@ -409,7 +409,7 @@ if ((!isBooleanConstantAndTrue('mxchange_installed')) || (!isBooleanConstantAndT } } } - if ((sizeof($FATAL) > 0) || ($FATAL[0] != '')) + if ((sizeof($FATAL) > 0) || ((isset($FATAL[0])) && ($FATAL[0] != ''))) { $OUT = ""; foreach ($FATAL as $value) diff --git a/inc/language/de.php b/inc/language/de.php index 8b90fa8acd..b11ca783cd 100644 --- a/inc/language/de.php +++ b/inc/language/de.php @@ -1073,6 +1073,7 @@ define('ADMIN_SALT_LENGTH_NOTE', "Um für alle Accounts (Mitglieder/Admins d define('LOGIN_FAILED_GENERAL', "Genereller Loginfehler! Bitte kontaktieren Sie den Webmaster!"); define('DEFAULT_MT_WORD', "Mailtausch"); define('DEFAULT_MT_WORD2', "Mailtausches"); +define('DEFAULT_MT_WORD3', "Mailtauscher"); define('DEFAULT_POINTS', "Punkte"); define('EXTENSION_PROBLEM_NOT_INSTALLED', "Erweiterung %s nicht installiert."); define('PROBLEM_POINTS_OVERVIEW_UNAVAILABLE', "{!POINTS!}-Übersicht derzeit nicht verfügbar."); diff --git a/inc/libs/admins_functions.php b/inc/libs/admins_functions.php index 65325e1a69..8bb7c27ad4 100644 --- a/inc/libs/admins_functions.php +++ b/inc/libs/admins_functions.php @@ -53,7 +53,7 @@ function ADMINS_CHECK_ACL($act, $wht) { $default = $cacheArray['admins']['def_acl'][get_session('admin_login')]; // Count cache hits - $_CONFIG['cache_hits']++; + if (isset($_CONFIG['cache_hits'])) { $_CONFIG['cache_hits']++; } else { $_CONFIG['cache_hits'] = 1; } } elseif (!is_object($cacheInstance)) { // Load from database $default = GET_ADMIN_DEFAULT_ACL(get_session('admin_login')); @@ -95,7 +95,7 @@ function ADMINS_CHECK_ACL($act, $wht) { } if ($lines == 1) { // Count cache hits - $_CONFIG['cache_hits']++; + if (isset($_CONFIG['cache_hits'])) { $_CONFIG['cache_hits']++; } else { $_CONFIG['cache_hits'] = 1; } break; } } diff --git a/inc/libs/rallye_functions.php b/inc/libs/rallye_functions.php index 37c25d174f..f18f68df6e 100644 --- a/inc/libs/rallye_functions.php +++ b/inc/libs/rallye_functions.php @@ -745,14 +745,24 @@ function RALLYE_GET_REFCOUNT($uid, $old=0) { foreach ($cacheArray['ref_system']['userid'] as $id => $u_id) { // Do we have a ref for this user? //* DEBUG: */ echo "id={$id},u_id={$u_id},uid={$uid},old={$old},level={$cacheArray['ref_system']['level'][$id]}
\n"; - if (($u_id == $uid) && (($cacheArray['ref_system']['level'][$id] == 1 && GET_EXT_VERSION("refback") != "") || ($cacheArray['ref_system']['level'][$id] == 0 && GET_EXT_VERSION("refback") == ""))) { + if (($u_id == $uid) && ($cacheArray['ref_system']['level'][$id] == 1)) { //* DEBUG: */ echo "uid matches!
\n"; - // Entry found! - $cnt = $cacheArray['ref_system']['counter'][$id]; - break; - } // END - if - } // END - foreach + foreach ($cacheArray['ref_depths']['level'] as $level) { + if (($level == $cacheArray['ref_system']['level'][$id]) && ($level == 1)) { + // Level does exist so abort here + $cnt = $cacheArray['ref_system']['counter'][$id]; + //* DEBUG: */ echo "*".$uid."/".$cnt."*
"; + break; + } elseif ($level > 1) { + // Not interesting here... + break; + } + } + // Abort also here! + if ($cnt > 0) break; + } + } //* DEBUG: */ echo "
";
 		//* DEBUG: */ print_r($cacheArray['ref_system']);
 		//* DEBUG: */ echo "
"; @@ -760,12 +770,12 @@ function RALLYE_GET_REFCOUNT($uid, $old=0) { if ($cnt > 0) { // Count cache hits - $_CONFIG['cache_hits']++; + if (isset($_CONFIG['cache_hits'])) { $_CONFIG['cache_hits']++; } else { $_CONFIG['cache_hits'] = 1; } // Remove old refs //* DEBUG: */ echo "+".$cnt."/".$old."+
"; $cnt -= $old; - } // END - if + } } else { // Load current refs from database $result_ref = SQL_QUERY_ESC("SELECT DISTINCT SUM(s.counter) AS cnt diff --git a/inc/modules/admin/admin-inc.php b/inc/modules/admin/admin-inc.php index 0c7f5bfeee..de735f5f5c 100644 --- a/inc/modules/admin/admin-inc.php +++ b/inc/modules/admin/admin-inc.php @@ -71,7 +71,7 @@ function CHECK_ADMIN_LOGIN ($admin_login, $password) // Get password from cache $data['password'] = $cacheArray['admins']['password'][$admin_login]; $ret = "pass"; - $_CONFIG['cache_hits']++; + if (isset($_CONFIG['cache_hits'])) { $_CONFIG['cache_hits']++; } else { $_CONFIG['cache_hits'] = 1; } // Include more admins data? if (GET_EXT_VERSION("admins") >= "0.7.0") { @@ -79,7 +79,7 @@ function CHECK_ADMIN_LOGIN ($admin_login, $password) $data['login_failtures'] = $cacheArray['admins']['login_failtures'][$admin_login]; $data['last_failture'] = $cacheArray['admins']['last_failture'][$admin_login]; } // END - if - } elseif (EXT_IS_ACTIVE("cache")) { + } elseif (!EXT_IS_ACTIVE("cache")) { $ADD = ""; if (GET_EXT_VERSION("admins") >= "0.7.0") { // Load them here @@ -232,6 +232,7 @@ function admin_WriteData ($file, $comment, $prefix, $suffix, $DATA, $seek=0) { // Initialize some variables $done = false; $seek++; + $next=-1; $found = false; // Is the file there and read-/write-able? @@ -256,7 +257,7 @@ function admin_WriteData ($file, $comment, $prefix, $suffix, $DATA, $seek=0) { if (strpos($line, $search) > -1) { $next = 0; $found = true; } if ($next > -1) { - if ($next == $seek) { + if ($next === $seek) { $next = -1; $line = $prefix . $DATA . $suffix."\n"; } else { @@ -770,7 +771,7 @@ function ADMIN_CHECK_MENU_MODE() { if (isset($cacheArray['admins']['la_mode'][get_session('admin_login')])) { // Load from cache $ADMIN = $cacheArray['admins']['la_mode'][get_session('admin_login')]; - $_CONFIG['cache_hits']++; + if (isset($_CONFIG['cache_hits'])) { $_CONFIG['cache_hits']++; } else { $_CONFIG['cache_hits'] = 1; } } elseif (GET_EXT_VERSION("admins") >= "0.6.7") { // Load from database when version of "admins" is enough $result = SQL_QUERY_ESC("SELECT la_mode FROM "._MYSQL_PREFIX."_admins WHERE login='%s' LIMIT 1", diff --git a/inc/mysql-manager.php b/inc/mysql-manager.php index 70721b8687..0d8f103b96 100644 --- a/inc/mysql-manager.php +++ b/inc/mysql-manager.php @@ -50,7 +50,7 @@ function ADD_MODULE_TITLE($mod) { $name = $cacheArray['modules']['title'][$mod]; // Update cache hits - $_CONFIG['cache_hits']++; + if (isset($_CONFIG['cache_hits'])) { $_CONFIG['cache_hits']++; } else { $_CONFIG['cache_hits'] = 1; } } else { // Load from database $result = SQL_QUERY_ESC("SELECT title FROM "._MYSQL_PREFIX."_mod_reg WHERE module='%s' LIMIT 1", array($mod), __FILE__, __LINE__); @@ -115,7 +115,7 @@ function CHECK_MODULE($mod) { $mem = $cacheArray['modules']['mem_only'][$mod_chk]; // Update cache hits - $_CONFIG['cache_hits']++; + if (isset($_CONFIG['cache_hits'])) { $_CONFIG['cache_hits']++; } else { $_CONFIG['cache_hits'] = 1; } $found = true; } else { // No, then we have to update it! @@ -454,7 +454,7 @@ function IS_ADMIN($admin="") $valPass = $cacheArray['admin_hash']; } elseif ((!empty($passCookie)) && (isset($cacheArray['admins']['password'][$admin])) && (!empty($admin))) { // Count cache hits - $_CONFIG['cache_hits']++; + if (isset($_CONFIG['cache_hits'])) { $_CONFIG['cache_hits']++; } else { $_CONFIG['cache_hits'] = 1; } // Login data is valid or not? $valPass = generatePassString($cacheArray['admins']['password'][$admin]); @@ -1112,7 +1112,7 @@ function GET_REF_LEVEL_PERCENTS ($level) { $per = $cacheArray['ref_depths']['percents'][$key]; // Count cache hit - $_CONFIG['cache_hits']++; + if (isset($_CONFIG['cache_hits'])) { $_CONFIG['cache_hits']++; } else { $_CONFIG['cache_hits'] = 1; } } } else { // Get referal data @@ -1406,7 +1406,7 @@ function GET_ADMIN_ID($login) { $ret = $cacheArray['admins']['aid'][$login]; // Update cache hits - $_CONFIG['cache_hits']++; + if (isset($_CONFIG['cache_hits'])) { $_CONFIG['cache_hits']++; } else { $_CONFIG['cache_hits'] = 1; } } elseif (!EXT_IS_ACTIVE("cache")) { // Load from database $result = SQL_QUERY_ESC("SELECT id FROM "._MYSQL_PREFIX."_admins WHERE login='%s' LIMIT 1", @@ -1431,7 +1431,7 @@ function GET_ADMIN_HASH($login) $ret = $cacheArray['admins']['password'][$login]; // Update cache hits - $_CONFIG['cache_hits']++; + if (isset($_CONFIG['cache_hits'])) { $_CONFIG['cache_hits']++; } else { $_CONFIG['cache_hits'] = 1; } } elseif (!EXT_IS_ACTIVE("cache")) { // Load from database $result = SQL_QUERY_ESC("SELECT password FROM "._MYSQL_PREFIX."_admins WHERE login='%s' LIMIT 1", @@ -1458,7 +1458,7 @@ function GET_ADMIN_LOGIN ($aid) { $ret = $cacheArray['admins']['login'][$aid]; // Update cache hits - $_CONFIG['cache_hits']++; + if (isset($_CONFIG['cache_hits'])) { $_CONFIG['cache_hits']++; } else { $_CONFIG['cache_hits'] = 1; } } elseif (!EXT_IS_ACTIVE("cache")) { // Load from database $result = SQL_QUERY_ESC("SELECT login FROM "._MYSQL_PREFIX."_admins WHERE id=%s LIMIT 1", @@ -1486,7 +1486,7 @@ function GET_ADMIN_EMAIL ($aid) { $ret = $cacheArray['admins']['email'][$aid]; // Update cache hits - $_CONFIG['cache_hits']++; + if (isset($_CONFIG['cache_hits'])) { $_CONFIG['cache_hits']++; } else { $_CONFIG['cache_hits'] = 1; } } elseif (!EXT_IS_ACTIVE("cache")) { // Load from database $result_aid = SQL_QUERY_ESC("SELECT email FROM "._MYSQL_PREFIX."_admins WHERE id=%s LIMIT 1", @@ -1516,7 +1516,7 @@ function GET_ADMIN_DEFAULT_ACL ($aid) { $ret = $cacheArray['admins']['def_acl'][$aid]; // Update cache hits - $_CONFIG['cache_hits']++; + if (isset($_CONFIG['cache_hits'])) { $_CONFIG['cache_hits']++; } else { $_CONFIG['cache_hits'] = 1; } } else { // Load from database $result_aid = SQL_QUERY_ESC("SELECT default_acl FROM "._MYSQL_PREFIX."_admins WHERE id=%s LIMIT 1", @@ -1784,11 +1784,11 @@ function MODULE_HAS_MENU($mod, $forceDb = false) if (isset($cacheArray['modules']['has_menu'][$mod])) { // Check module cache and count hit $ret = ($cacheArray['modules']['has_menu'][$mod] == "Y"); - $_CONFIG['cache_hits']++; + if (isset($_CONFIG['cache_hits'])) { $_CONFIG['cache_hits']++; } else { $_CONFIG['cache_hits'] = 1; } } elseif (isset($cacheArray['extensions']['ext_menu'][$mod])) { // Check cache and count hit $ret = ($cacheArray['extensions']['ext_menu'][$mod] == "Y"); - $_CONFIG['cache_hits']++; + if (isset($_CONFIG['cache_hits'])) { $_CONFIG['cache_hits']++; } else { $_CONFIG['cache_hits'] = 1; } } } elseif ((GET_EXT_VERSION("sql_patches") >= "0.3.6") && ((!EXT_IS_ACTIVE("cache")) || ($forceDb === true))) { // Check database for entry diff --git a/inc/theme-manager.php b/inc/theme-manager.php index ab5cb1dbe6..2ba2d28b77 100644 --- a/inc/theme-manager.php +++ b/inc/theme-manager.php @@ -148,7 +148,7 @@ function THEME_GET_VERSION ($name) { $cver = $cacheArray['themes']['theme_ver'][$name]; // Count up - $_CONFIG['cache_hits']++; + if (isset($_CONFIG['cache_hits'])) { $_CONFIG['cache_hits']++; } else { $_CONFIG['cache_hits'] = 1; } } elseif (GET_EXT_VERSION("cache") != "0.1.8") { // Load version from database $result = SQL_QUERY_ESC("SELECT theme_ver FROM "._MYSQL_PREFIX."_themes WHERE theme_path='%s' LIMIT 1", @@ -181,7 +181,7 @@ function THEME_GET_ID ($name) { $id = $cacheArray['themes']['id'][$name]; // Count up - $_CONFIG['cache_hits']++; + if (isset($_CONFIG['cache_hits'])) { $_CONFIG['cache_hits']++; } else { $_CONFIG['cache_hits'] = 1; } } elseif (GET_EXT_VERSION("cache") != "0.1.8") { // Check if current theme is already imported or not $result = SQL_QUERY_ESC("SELECT id FROM "._MYSQL_PREFIX."_themes WHERE theme_path='%s' LIMIT 1", @@ -220,7 +220,7 @@ function THEME_IS_ACTIVE ($name) { $active = ($cacheArray['themes']['theme_active'][$name] == "Y"); // Count up - $_CONFIG['cache_hits']++; + if (isset($_CONFIG['cache_hits'])) { $_CONFIG['cache_hits']++; } else { $_CONFIG['cache_hits'] = 1; } } elseif (GET_EXT_VERSION("cache") != "0.1.8") { // Check if current theme is already imported or not $result = SQL_QUERY_ESC("SELECT theme_active FROM "._MYSQL_PREFIX."_themes WHERE theme_path='%s' AND theme_active='Y' LIMIT 1", @@ -250,7 +250,7 @@ function GET_CURR_THEME_NAME () { $name = $cacheArray['themes']['theme_name'][$name]; // Count up - $_CONFIG['cache_hits']++; + if (isset($_CONFIG['cache_hits'])) { $_CONFIG['cache_hits']++; } else { $_CONFIG['cache_hits'] = 1; } } elseif (GET_EXT_VERSION("cache") != "0.1.8") { // Check if current theme is already imported or not $result = SQL_QUERY_ESC("SELECT theme_name FROM "._MYSQL_PREFIX."_themes WHERE theme_path='%s' AND theme_name='Y' LIMIT 1", diff --git a/install/tables.sql b/install/tables.sql index 61f7bfb2fa..bbe4e75f4d 100644 --- a/install/tables.sql +++ b/install/tables.sql @@ -2,7 +2,7 @@ DROP TABLE IF EXISTS `mxchange_admin_menu`; CREATE TABLE `mxchange_admin_menu` ( `id` BIGINT(22) NOT NULL AUTO_INCREMENT, `action` VARCHAR(255) NOT NULL DEFAULT '', - `what` VARCHAR(255) NOT NULL DEFAULT '', + `what` VARCHAR(255) NULL DEFAULT NULL, `title` VARCHAR(50) NOT NULL DEFAULT '', `sort` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0, `descr` blob NOT NULL, @@ -49,8 +49,8 @@ INSERT INTO `mxchange_config` VALUES (0,5,2000,200,5,'Y','N','Y',86400,'Y',1000, DROP TABLE IF EXISTS `mxchange_guest_menu`; CREATE TABLE `mxchange_guest_menu` ( `id` BIGINT(22) NOT NULL AUTO_INCREMENT, - `action` VARCHAR(20) NOT NULL DEFAULT '', - `what` VARCHAR(20) NOT NULL DEFAULT '', + `action` VARCHAR(255) NOT NULL DEFAULT '', + `what` VARCHAR(255) NULL DEFAULT NULL, `title` VARCHAR(50) NOT NULL DEFAULT '', `sort` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0, `visible` ENUM('Y','N') NOT NULL DEFAULT 'Y', @@ -70,8 +70,8 @@ CREATE TABLE `mxchange_max_receive` ( DROP TABLE IF EXISTS `mxchange_member_menu`; CREATE TABLE `mxchange_member_menu` ( `id` BIGINT(22) NOT NULL AUTO_INCREMENT, - `action` VARCHAR(20) NOT NULL DEFAULT '', - `what` VARCHAR(20) NOT NULL DEFAULT '', + `action` VARCHAR(255) NOT NULL DEFAULT '', + `what` VARCHAR(255) NULL DEFAULT NULL, `title` VARCHAR(50) NOT NULL DEFAULT '', `sort` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0, `visible` ENUM('Y','N') NOT NULL DEFAULT 'Y', @@ -245,11 +245,6 @@ CREATE TABLE `mxchange_user_stats` ( ALTER TABLE `mxchange_user_data` ADD `joined` VARCHAR(10) NOT NULL DEFAULT 0; ALTER TABLE `mxchange_config` ADD `last_update` VARCHAR(10) NOT NULL DEFAULT 0; -UPDATE `mxchange_member_menu` SET `locked` = 'N' WHERE 'id'='12' OR 'id'='11' LIMIT 1; - -UPDATE `mxchange_guest_menu` SET `counter`=0; -UPDATE `mxchange_member_menu` SET `counter`=0; - INSERT INTO `mxchange_mod_reg` VALUES (NULL,'chk_login','N','N','N','','N',0); ALTER TABLE `mxchange_pool` MODIFY `data_type` ENUM('TEMP','SEND','NEW','ADMIN','ACTIVE') NOT NULL DEFAULT 'TEMP'; ALTER TABLE `mxchange_config` ADD `unconfirmed` BIGINT(20) UNSIGNED NOT NULL DEFAULT '100'; @@ -335,8 +330,6 @@ ALTER TABLE `mxchange_pool` ADD `zip` VARCHAR(6) NOT NULL DEFAULT ''; ALTER TABLE `mxchange_task_system` CHANGE `task_type` `task_type` VARCHAR(255) NOT NULL DEFAULT 'FIRST_USER'; ALTER TABLE `mxchange_user_data` MODIFY `zip` VARCHAR(6) NOT NULL DEFAULT ''; -ALTER TABLE `mxchange_admin_menu` MODIFY `action` VARCHAR(255) NOT NULL DEFAULT ''; -ALTER TABLE `mxchange_admin_menu` MODIFY `what` VARCHAR(255) NOT NULL DEFAULT ''; ALTER TABLE `mxchange_user_data` MODIFY `last_module` VARCHAR(255) NOT NULL DEFAULT ''; ALTER TABLE `mxchange_config` ADD `allow_direct_pay` ENUM('Y','N') NOT NULL DEFAULT 'N'; ALTER TABLE `mxchange_user_data` MODIFY `last_profile_sent` VARCHAR(10) NOT NULL DEFAULT 0; -- 2.39.2