"Missing", 'user_group' => "Missing", 'groups' => "Missing", 'banlist' => "Missing", 'categories' => "Missing",
'config' => "Missing", 'confirm' => "Missing", 'disallow' => "Missing", 'forum_prune' => "Missing", 'forums' => "Missing", 'posts' => "Missing",
'posts_text' => "Missing", 'privmsgs' => "Missing", 'privmsgs_text' => "Missing", 'ranks' => "Missing", 'search_results' => "Missing",
'search_wordlist' => "Missing", 'search_wordmatch' => "Missing", 'sessions' => "Missing", 'sessions_keys' => "Missing",
'smilies' => "Missing", 'themes' => "Missing", 'themes_name' => "Missing", 'topics' => "Missing", 'topics_watch' => "Missing",
'users' => "Missing", 'vote_desc' => "Missing", 'vote_results' => "Missing", 'vote_voters' => "Missing", 'words' => "Missing");
$table_fields = array(
'auth_access' => array(
'group_id' => "Missing",'forum_id' => "Missing",'auth_view' => "Missing",'auth_read' => "Missing",
'auth_post' => "Missing",'auth_reply' => "Missing",'auth_edit' => "Missing",'auth_delete' => "Missing",'auth_sticky' => "Missing",
'auth_announce' => "Missing",'auth_vote' => "Missing",'auth_pollcreate' => "Missing",'auth_attachments' => "Missing",
'auth_mod' => "Missing"),
'user_group' => array(
'group_id' => "Missing",'user_id' => "Missing",'user_pending' => "Missing"),
'groups' => array(
'group_id' => "Missing",'group_type' => "Missing",'group_name' => "Missing",'group_description' => "Missing",
'group_moderator' => "Missing",'group_single_user' => "Missing"),
'banlist' => array(
'ban_id' => "Missing", 'ban_userid' => "Missing", 'ban_ip' => "Missing", 'ban_email'),
'categories' => array(
'cat_id' => "Missing", 'cat_title' => "Missing", 'cat_order' => "Missing"),
'config' => array(
'config_name' => "Missing", 'config_value' => "Missing"),
'confirm' => array(
'confirm_id' => "Missing", 'session_id' => "Missing", 'code' => "Missing"),
'disallow' => array(
'disallow_id' => "Missing", 'disallow_username' => "Missing"),
'forum_prune' => array(
'prune_id' => "Missing", 'forum_id' => "Missing", 'prune_days' => "Missing", 'prune_freq' => "Missing"),
'forums' => array(
'forum_id' => "Missing", 'cat_id' => "Missing", 'forum_name' => "Missing", 'forum_desc' => "Missing",
'forum_status' => "Missing", 'forum_order' => "Missing", 'forum_posts' => "Missing", 'forum_topics' => "Missing",
'forum_last_post_id' => "Missing", 'prune_next' => "Missing", 'prune_enable' => "Missing", 'auth_view' => "Missing",
'auth_read' => "Missing", 'auth_post' => "Missing", 'auth_reply' => "Missing", 'auth_edit' => "Missing", 'auth_delete' => "Missing",
'auth_sticky' => "Missing", 'auth_announce' => "Missing", 'auth_vote' => "Missing", 'auth_pollcreate' => "Missing",
'auth_attachments' => "Missing"),
'posts' => array(
'post_id' => "Missing", 'topic_id' => "Missing", 'forum_id' => "Missing", 'poster_id' => "Missing", 'post_time' => "Missing",
'poster_ip' => "Missing", 'post_username' => "Missing", 'enable_bbcode' => "Missing", 'enable_html' => "Missing", 'enable_smilies' => "Missing",
'enable_sig' => "Missing", 'post_edit_time' => "Missing", 'post_edit_count' => "Missing"),
'posts_text' => array(
'post_id' => "Missing", 'bbcode_uid' => "Missing", 'post_subject' => "Missing", 'post_text' => "Missing"),
'privmsgs' => array(
'privmsgs_id' => "Missing", 'privmsgs_type' => "Missing", 'privmsgs_subject' => "Missing",
'privmsgs_from_userid' => "Missing", 'privmsgs_to_userid' => "Missing", 'privmsgs_date' => "Missing", 'privmsgs_ip' => "Missing",
'privmsgs_enable_bbcode' => "Missing", 'privmsgs_enable_html' => "Missing", 'privmsgs_enable_smilies' => "Missing",
'privmsgs_attach_sig' => "Missing"),
'privmsgs_text' => array(
'privmsgs_text_id' => "Missing", 'privmsgs_bbcode_uid' => "Missing", 'privmsgs_text' => "Missing"),
'ranks' => array(
'rank_id' => "Missing", 'rank_title' => "Missing", 'rank_min' => "Missing", 'rank_special' => "Missing", 'rank_image' => "Missing"),
'search_results' => array(
'search_id' => "Missing", 'session_id' => "Missing", 'search_array' => "Missing", 'search_time' => "Missing"),
'search_wordlist' => array(
'word_text' => "Missing", 'word_id' => "Missing", 'word_common' => "Missing"),
'search_wordmatch' => array(
'post_id' => "Missing", 'word_id' => "Missing", 'title_match' => "Missing"),
'sessions' => array(
'session_id' => "Missing", 'session_user_id' => "Missing", 'session_start' => "Missing", 'session_time' => "Missing",
'session_ip' => "Missing", 'session_page' => "Missing", 'session_logged_in' => "Missing", 'session_admin' => "Missing"),
'sessions_keys' => array(
'key_id' => "Missing", 'user_id' => "Missing", 'last_ip' => "Missing", 'last_login' => "Missing"),
'smilies' => array(
'smilies_id' => "Missing", 'code' => "Missing", 'smile_url' => "Missing", 'emoticon' => "Missing"),
'themes' => array(
'themes_id' => "Missing", 'template_name' => "Missing", 'style_name' => "Missing", 'head_stylesheet' => "Missing",
'body_background' => "Missing", 'body_bgcolor' => "Missing", 'body_text' => "Missing", 'body_link' => "Missing", 'body_vlink' => "Missing",
'body_alink' => "Missing", 'body_hlink' => "Missing", 'tr_color1' => "Missing", 'tr_color2' => "Missing", 'tr_color3' => "Missing",
'tr_class1' => "Missing", 'tr_class2' => "Missing", 'tr_class3' => "Missing", 'th_color1' => "Missing", 'th_color2' => "Missing",
'th_color3' => "Missing", 'th_class1' => "Missing", 'th_class2' => "Missing", 'th_class3' => "Missing", 'td_color1' => "Missing",
'td_color2' => "Missing", 'td_color3' => "Missing", 'td_class1' => "Missing", 'td_class2' => "Missing", 'td_class3' => "Missing",
'fontface1' => "Missing", 'fontface2' => "Missing", 'fontface3' => "Missing", 'fontsize1' => "Missing", 'fontsize2' => "Missing",
'fontsize3' => "Missing", 'fontcolor1' => "Missing", 'fontcolor2' => "Missing", 'fontcolor3' => "Missing", 'span_class1' => "Missing",
'span_class2' => "Missing", 'span_class3' => "Missing", 'img_size_poll' => "Missing", 'img_size_privmsg' => "Missing"),
'themes_name' => array(
'themes_id' => "Missing", 'tr_color1_name' => "Missing", 'tr_color2_name' => "Missing", 'tr_color3_name' => "Missing",
'tr_class1_name' => "Missing", 'tr_class2_name' => "Missing", 'tr_class3_name' => "Missing", 'th_color1_name' => "Missing",
'th_color2_name' => "Missing", 'th_color3_name' => "Missing", 'th_class1_name' => "Missing", 'th_class2_name' => "Missing",
'th_class3_name' => "Missing", 'td_color1_name' => "Missing", 'td_color2_name' => "Missing", 'td_color3_name' => "Missing",
'td_class1_name' => "Missing", 'td_class2_name' => "Missing", 'td_class3_name' => "Missing", 'fontface1_name' => "Missing",
'fontface2_name' => "Missing", 'fontface3_name' => "Missing", 'fontsize1_name' => "Missing", 'fontsize2_name' => "Missing",
'fontsize3_name' => "Missing", 'fontcolor1_name' => "Missing", 'fontcolor2_name' => "Missing", 'fontcolor3_name' => "Missing",
'span_class1_name' => "Missing", 'span_class2_name' => "Missing", 'span_class3_name' => "Missing"),
'topics' => array(
'topic_id' => "Missing", 'forum_id' => "Missing", 'topic_title' => "Missing", 'topic_poster' => "Missing",
'topic_time' => "Missing", 'topic_views' => "Missing", 'topic_replies' => "Missing", 'topic_status' => "Missing", 'topic_vote' => "Missing",
'topic_type' => "Missing", 'topic_first_post_id' => "Missing", 'topic_last_post_id' => "Missing", 'topic_moved_id' => "Missing"),
'topics_watch' => array(
'topic_id' => "Missing", 'user_id' => "Missing", 'notify_status' => "Missing"),
'users' => array(
'user_id' => "Missing", 'user_active' => "Missing", 'username' => "Missing", 'user_password' => "Missing",
'user_session_time' => "Missing", 'user_session_page' => "Missing", 'user_lastvisit' => "Missing", 'user_regdate' => "Missing",
'user_level' => "Missing", 'user_posts' => "Missing", 'user_timezone' => "Missing", 'user_style' => "Missing", 'user_lang' => "Missing",
'user_dateformat' => "Missing", 'user_new_privmsg' => "Missing", 'user_unread_privmsg' => "Missing", 'user_last_privmsg' => "Missing",
'user_emailtime' => "Missing", 'user_viewemail' => "Missing", 'user_attachsig' => "Missing", 'user_allowhtml' => "Missing",
'user_allowbbcode' => "Missing", 'user_allowsmile' => "Missing", 'user_allowavatar' => "Missing", 'user_allow_pm' => "Missing",
'user_allow_viewonline' => "Missing", 'user_notify' => "Missing", 'user_notify_pm' => "Missing", 'user_popup_pm' => "Missing",
'user_rank' => "Missing", 'user_avatar' => "Missing", 'user_avatar_type' => "Missing", 'user_email' => "Missing", 'user_icq' => "Missing",
'user_website' => "Missing", 'user_from' => "Missing", 'user_sig' => "Missing", 'user_sig_bbcode_uid' => "Missing",
'user_aim' => "Missing", 'user_yim' => "Missing", 'user_msnm' => "Missing", 'user_occ' => "Missing", 'user_interests' => "Missing",
'user_actkey' => "Missing", 'user_newpasswd' => "Missing", 'user_login_tries' => "Missing", 'user_last_login_try' => "Missing"),
'vote_desc' => array(
'vote_id' => "Missing", 'topic_id' => "Missing", 'vote_text' => "Missing", 'vote_start' => "Missing", 'vote_length' => "Missing"),
'vote_results' => array(
'vote_id' => "Missing", 'vote_option_id' => "Missing", 'vote_option_text' => "Missing", 'vote_result' => "Missing"),
'vote_voters' => array(
'vote_id' => "Missing", 'vote_user_id' => "Missing", 'vote_user_ip' => "Missing"),
'words' => array(
'word_id' => "Missing", 'word' => "Missing", 'replacement' => "Missing"),
);
$config_names = array(
'config_id' => "Missing", 'board_disable' => "Missing", 'sitename' => "Missing", 'site_desc' => "Missing",
'cookie_name' => "Missing", 'cookie_path' => "Missing", 'cookie_domain' => "Missing", 'cookie_secure' => "Missing", 'session_length' => "Missing",
'allow_html' => "Missing", 'allow_html_tags' => "Missing", 'allow_bbcode' => "Missing", 'allow_smilies' => "Missing", 'allow_sig' => "Missing",
'allow_namechange' => "Missing", 'allow_theme_create' => "Missing", 'allow_avatar_local' => "Missing", 'allow_avatar_remote' => "Missing",
'allow_avatar_upload' => "Missing", 'enable_confirm' => "Missing", 'allow_autologin' => "Missing", 'max_autologin_time' => "Missing",
'override_user_style' => "Missing", 'posts_per_page' => "Missing", 'topics_per_page' => "Missing", 'hot_threshold' => "Missing",
'max_poll_options' => "Missing", 'max_sig_chars' => "Missing", 'max_inbox_privmsgs' => "Missing", 'max_sentbox_privmsgs' => "Missing",
'max_savebox_privmsgs' => "Missing", 'board_email_sig' => "Missing", 'board_email' => "Missing", 'smtp_delivery' => "Missing",
'smtp_host' => "Missing", 'smtp_username' => "Missing", 'smtp_password' => "Missing", 'sendmail_fix' => "Missing",
'require_activation' => "Missing", 'flood_interval' => "Missing", 'board_email_form' => "Missing", 'avatar_filesize' => "Missing",
'avatar_max_width' => "Missing", 'avatar_max_height' => "Missing", 'avatar_path' => "Missing", 'avatar_gallery_path' => "Missing",
'smilies_path' => "Missing", 'default_style' => "Missing", 'default_dateformat' => "Missing", 'board_timezone' => "Missing",
'prune_enable' => "Missing", 'privmsg_disable' => "Missing", 'gzip_compress' => "Missing", 'coppa_fax' => "Missing", 'coppa_mail' => "Missing",
'record_online_users' => "Missing", 'record_online_date' => "Missing", 'server_name' => "Missing", 'server_port' => "Missing",
'script_path' => "Missing", 'version' => "Missing", 'allow_autologin' => "Missing", 'max_autologin_time' => "Missing",
'max_login_attempts' => "Missing", 'login_reset_time' => "Missing", 'search_flood_interval' => "Missing", 'rand_seed' => "Missing",
'search_min_chars' => "Missing", 'default_lang' => "Missing", 'board_startdate' => "Missing");
// Program starts working here!
// read config file
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
$template_path= $phpbb_root_path . "templates/";
include($phpbb_root_path . 'common.'.$phpEx);
$sql="SHOW TABLES LIKE '$table_prefix%'";
if( !($result = $db->sql_query($sql)) )
{
die ("Unable to locate any PHPBB tables in your database!
");
}
else
{
$tablefield = $db->sql_fieldname(0,$result);
while ( $row = $db->sql_fetchrow($result) )
{
// set found table names to something recognizable
$index = (substr($row[$tablefield],strlen($table_prefix)));
$tables["$index"] = 'Found
';
}
}
while ($chktable = each($tables))
{
$a = $chktable['key'];
// find out if table has defined fields
if ((!empty($table_fields[$a])) && ($chktable['value'] != "Missing"))
{
$sql = "SHOW FIELDS IN $table_prefix$a";
if( !($result = $db->sql_query($sql)) )
{
$sql_store = $sql;
$sql_error = $db->sql_error();
$debug_text = '';
if ( $sql_error['message'] != '' )
{
$debug_text .= '
SQL Error : ' . $sql_error['code'] . ' ' . $sql_error['message'];
}
if ( $sql_store != '' )
{
$debug_text .= "
$sql_store";
}
}
$fieldname = $db->sql_fieldname(0);
while ( $row = $db->sql_fetchrow($result) )
{
$index = $row[$fieldname];
if ($table_fields[$a][$index]== "Missing")
{
$table_fields[$a][$index]= "Found
";
}
else
{
$table_fields[$a][$index]= "Mod related
";
}
}
}
else if ($chktable['value'] != "Missing")
{
$tables[$a] = "Mod related
";
}
}
// we've now got an inventory of tables and fields
while ($chktable = each($table_fields))
{
if ($tables[$chktable['key']] == "Missing")
{ // table isn't there
$output_raw .= "Required table $table_prefix$chktable[key] is missing!
";
}
else
{
$missing_count = 0;
$output_raw .= "Required table $table_prefix$chktable[key] ";
while($chkfield = each($table_fields[$chktable['key']]))
{ // check for required fields
if ($chkfield['value'] == "Missing")
{ // required field missing
if ($missing_count == 0)
$output_raw .= "is missing ";
else
$output_raw .= ", ";
$output_raw .= $chkfield['key'];
++$missing_count;
}
}
if ($missing_count == 0)
$output_raw .= "has all required fields
";
else
$output_raw .= "
";
}
}
// now check for required config items
$sql = "SELECT config_name,config_value FROM ".$table_prefix."config";
if( !($result = $db->sql_query($sql)) )
die("Unable to retrieve configuration values!");
$fieldname = $db->sql_fieldname(0,$result);
while ( $row = $db->sql_fetchrow($result) )
{
$chkname = $row[$fieldname];
if (!empty($config_names[$chkname]))
{
$config_names[$chkname] = "Found";
}
if ($chkname == 'version')
$dbver = "Database reports it is version 2$row[config_value].
";
}
// we've now got an inventory of configuration items
$output_raw .= "
";
$output_raw .= $dbver;
$output_raw .= "Required configuration key";
$missing_count = 0;
$missing_keys = "";
while ($chkkey = each($config_names))
{
if ($chkkey['value'] == "Missing")
{ // required field missing
if ($missing_count == 0)
$missing_keys .= " ";
else
$missing_keys .= ",";
$missing_keys .= " $chkkey[key]";
++$missing_count;
}
}
if ($missing_count == 0)
$output_raw .= "s are all present
";
else
$output_raw .= ($missing_count == 1 ? "" : "s") . $missing_keys . ($missing_count == 1 ? " is" : " are")." missing!
";
// Now check templates for required fields
$sql = "SELECT template_name, style_name FROM ".$table_prefix."themes";
if( !($result = $db->sql_query($sql)) )
die("No styles found!");
$fieldname = $db->sql_fieldname(0,$result);
while ( $row = $db->sql_fetchrow($result) )
{
if ($row['template_name'] =='')
{
$output_raw .= "
Theme $row[themes_id] has a blank name, and is invalid"; continue; } $check_path1 = $template_path . $row['template_name'] . "/profile_add_body.tpl"; $check_path2 = $template_path . $row['template_name'] . "/admin/board_config_body.tpl"; $user_text = file_get_contents($check_path1); $user = strpos(strtolower($user_text),"switch_confirm"); $config_text = file_get_contents($check_path2); $config = strpos(strtolower($config_text),"l_visual_confirm"); $autolog = strpos($config_text,"ALLOW_AUTOLOGIN"); $limitlog = strpos($config_text,"MAX_LOGIN_ATTEMPTS"); $output_raw .= "
Style '".$row['style_name']."' supports" : "ff0000'>does not support";
$output_raw .= " Visual Confirmation for registration, supports" : "ff0000'>does not support";
$output_raw .= " Visual Confirmation configuration option,
supports" : "ff0000'>does not support";
$output_raw .= " Auto Logon configuration option, supports" : "ff0000'>does not support";
$output_raw .= " Maximum login count configuration option.
";
}
// check for optional extensions that would be helpful
$output_raw .= "
";
$output_raw .= "Extension Zlib, which will enhance the security of the standard Visual Confirmation image, is " : "ff0000'>not ")."available.
";
$output_raw .= "Extension GD, necessary for the FREECAP replacement for the Visual Confirmation image, is " : "ff0000'>not ")."available.
";
$output_raw .= "Extension Multibyte String is " : "00ff00'>not ")."installed.
";
echo "
Checking list of tables for required fields...
"; echo $output_raw; echo "
If errors are noted above, please highlight the following, and use your browser's copy and paste functions to post these results on phpbb.com:
\n"; echo ""; ?>