2014-12-25, 11:53 PM
Is it me or the following piece of code is wrong?
.\mybb\inc\tasks\checktables.php
The last if should only check for $setting_done == true.
if($tables_list)
{
$query = $db->query("CHECK TABLE {$tables_list}CHANGED;");
while($table = $db->fetch_array($query))
{
if(!in_array($table['Msg_text'], $ok))
{
if($table['Table'] != $mybb->config['database']['database'].".".TABLE_PREFIX."settings" && $setting_done != true)
{
$boardclosed = $mybb->settings['boardclosed'];
$boardclosed_reason = $mybb->settings['boardclosed_reason'];
$db->update_query("settings", array('value' => 1), "name='boardclosed'", 1);
$db->update_query("settings", array('value' => $db->escape_string($lang->error_database_repair)), "name='boardclosed_reason'", 1);
rebuild_settings();
$setting_done = true;
}
$db->query("REPAIR TABLE {$table['Table']}");
$repaired[] = $table['Table'];
}
}
if($table['Table'] != $mybb->config['database']['table_prefix'].".".TABLE_PREFIX."settings" && $setting_done == true)
{
$db->update_query("settings", array('value' => (int)$boardclosed), "name='boardclosed'", 1);
$db->update_query("settings", array('value' => $db->escape_string($boardclosed_reason)), "name='boardclosed_reason'", 1);
rebuild_settings();
}
}
.\mybb\inc\tasks\checktables.php
The last if should only check for $setting_done == true.