" . ANONYMOUS; break; case 'newestuser': $sql = "SELECT user_id, username FROM " . USERS_TABLE . " WHERE user_id <> " . ANONYMOUS . " ORDER BY user_id DESC LIMIT 1"; break; case 'topiccount': $sql = "SELECT SUM(forum_topics) AS total FROM " . FORUMS_TABLE; break; } if(!$result = $db->sql_query($sql)) { return 'ERROR'; } else { $row = $db->sql_fetchrow($result); if($mode == 'newestuser') { return($row); } else { return($row['total']); } } } function get_userdata_from_id($userid) { global $db; $sql = "SELECT * FROM " . USERS_TABLE . " WHERE user_id = $userid"; if(!$result = $db->sql_query($sql)) { message_die(GENERAL_ERROR, "Couldn't obtain userdata for id", "", __LINE__, __FILE__, $sql); } if( !$db->sql_numrows($result) ) { return false; } $row = $db->sql_fetchrow($result); return($row); } function get_userdata($username) { global $db; $sql = "SELECT * FROM " . USERS_TABLE . " WHERE username = '" . str_replace("\'", "''", $username) . "' AND user_id <> " . ANONYMOUS; if(!$result = $db->sql_query($sql)) { message_die(GENERAL_ERROR, "Tried obtaining data for a non-existent user", "", __LINE__, __FILE__, $sql); } if( !$db->sql_numrows($result) ) { return false; } $row = $db->sql_fetchrow($result); return($row); } function make_jumpbox($match_forum_id = 0) { global $lang, $db, $SID; global $nav_links, $phpEx; $sql = "SELECT c.cat_id, c.cat_title, c.cat_order FROM " . CATEGORIES_TABLE . " c, " . FORUMS_TABLE . " f WHERE f.cat_id = c.cat_id GROUP BY c.cat_id, c.cat_title, c.cat_order ORDER BY c.cat_order"; if(!$q_categories = $db->sql_query($sql)) { message_die(GENERAL_ERROR, "Couldn't obtain category list.", "", __LINE__, __FILE__, $sql); } if( $total_categories = $db->sql_numrows() ) { $category_rows = $db->sql_fetchrowset($q_categories); $sql = "SELECT * FROM " . FORUMS_TABLE . " ORDER BY cat_id, forum_order"; if(!$q_forums = $db->sql_query($sql)) { message_die(GENERAL_ERROR, "Couldn't obtain forums information.", "", __LINE__, __FILE__, $sql); } $total_forums = $db->sql_numrows($q_forums); $forum_rows = $db->sql_fetchrowset($q_forums); $boxstring = ''; } else { $boxstring .= ''; } if( isset($SID) ) { // $boxstring .= ''; } return($boxstring); } // // Simple version of jumpbox, just lists authed forums // function make_forum_select($box_name, $ignore_forum = false) { global $db, $userdata; $is_auth_ary = auth(AUTH_READ, AUTH_LIST_ALL, $userdata); $sql = "SELECT forum_id, forum_name FROM " . FORUMS_TABLE . " ORDER BY cat_id, forum_order"; if( !$q_forums = $db->sql_query($sql) ) { message_die(GENERAL_ERROR, "Couldn't obtain forums information.", "", __LINE__, __FILE__, $sql); } $forum_list = ""; while( $row = $db->sql_fetchrow($q_forums) ) { if( $is_auth_ary[$row['forum_id']]['auth_read'] && $ignore_forum != $row['forum_id'] ) { $forum_list .= ""; } } if( $forum_list == "" ) { $forum_list .= "\n"; } else { $forum_list = ''; } return($forum_list); } // // Initialise user settings on page load function init_userprefs($userdata) { global $board_config, $theme, $images; global $template, $lang, $phpEx, $phpbb_root_path; if( !$board_config['override_user_style'] ) { if( $userdata['user_id'] != ANONYMOUS && isset($userdata['user_style']) ) { $theme = setup_style($userdata['user_style']); if( !$theme ) { $theme = setup_style($board_config['default_style']); } } else { $theme = setup_style($board_config['default_style']); } } else { $theme = setup_style($board_config['default_style']); } if( $userdata['user_id'] != ANONYMOUS ) { if( !empty($userdata['user_lang'])) { $board_config['default_lang'] = $userdata['user_lang']; } if( !empty($userdata['user_dateformat']) ) { $board_config['default_dateformat'] = $userdata['user_dateformat']; } if( isset($userdata['user_timezone']) ) { $board_config['board_timezone'] = $userdata['user_timezone']; } } if( !file_exists($phpbb_root_path . "language/lang_" . $board_config['default_lang'] . "/lang_main.".$phpEx) ) { $board_config['default_lang'] = "english"; } include($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_main.' . $phpEx); if( defined("IN_ADMIN") ) { if( !file_exists($phpbb_root_path . "language/lang_" . $board_config['default_lang'] . "/lang_admin.".$phpEx) ) { $board_config['default_lang'] = "english"; } include($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_admin.' . $phpEx); } while( list($key, $value) = @each($images) ) { if( strstr($value, "_lang") ) { $new_value = str_replace("_lang", "_" . $board_config['default_lang'], $value); $images[$key] = ( file_exists($new_value) ) ? $new_value : str_replace("_lang", "_english", $value); } } return; } function setup_style($style) { global $db, $board_config, $template, $images, $phpbb_root_path; $sql = "SELECT * FROM " . THEMES_TABLE . " WHERE themes_id = $style"; if(!$result = $db->sql_query($sql)) { message_die(CRITICAL_ERROR, "Couldn't query database for theme info."); } if( !$row = $db->sql_fetchrow($result) ) { message_die(CRITICAL_ERROR, "Couldn't get theme data for themes_id=$style."); } $template_path = 'templates/' ; $template_name = $row['template_name'] ; $template = new Template($phpbb_root_path . $template_path . $template_name, $board_config, $db); if( $template ) { $current_template_path = $template_path . $template_name; @include($phpbb_root_path . $template_path . $template_name . '/' . $template_name . '.cfg'); if( !defined("TEMPLATE_CONFIG") ) { message_die(CRITICAL_ERROR, "Couldn't open $template_name template config file"); } } return($row); } function generate_activation_key() { $chars = array( "a","A","b","B","c","C","d","D","e","E","f","F","g","G","h","H","i","I","j","J", "k","K","l","L","m","M","n","N","o","O","p","P","q","Q","r","R","s","S","t","T", "u","U","v","V","w","W","x","X","y","Y","z","Z","1","2","3","4","5","6","7","8", "9","0"); $max_elements = count($chars) - 1; srand((double)microtime()*1000000); $act_key = ''; for($i = 0; $i < 8; $i++) { $act_key .= $chars[rand(0, $max_elements)]; } $act_key_md = md5($act_key); return($act_key_md); } function encode_ip($dotquad_ip) { $ip_sep = explode(".", $dotquad_ip); return (sprintf("%02x%02x%02x%02x", $ip_sep[0], $ip_sep[1], $ip_sep[2], $ip_sep[3])); } function decode_ip($int_ip) { $hexipbang = explode(".",chunk_split($int_ip, 2, ".")); return hexdec($hexipbang[0]).".".hexdec($hexipbang[1]).".".hexdec($hexipbang[2]).".".hexdec($hexipbang[3]); } // // Create date/time from format and timezone // function create_date($format, $gmepoch, $tz) { return (@gmdate($format, $gmepoch + (3600 * $tz))); } // // Pagination routine, generates // page number sequence // function generate_pagination($base_url, $num_items, $per_page, $start_item, $add_prevnext_text = TRUE) { global $lang; $total_pages = ceil($num_items/$per_page); if( $total_pages == 1 ) { return ""; } $on_page = floor($start_item / $per_page) + 1; $page_string = ""; if( $total_pages > 8 ) { $init_page_max = ( $total_pages > 2 ) ? 2 : $total_pages; for($i = 1; $i < $init_page_max + 1; $i++) { $page_string .= ($i == $on_page) ? "$i" : "$i"; if( $i < $init_page_max ) { $page_string .= ", "; } } if( $total_pages > 2 ) { if( $on_page > 1 && $on_page < $total_pages ) { $page_string .= ( $on_page > 4 ) ? " ... " : ", "; $init_page_min = ( $on_page > 3 ) ? $on_page : 4; $init_page_max = ( $on_page < $total_pages - 3 ) ? $on_page : $total_pages - 3; for($i = $init_page_min - 1; $i < $init_page_max + 2; $i++) { $page_string .= ($i == $on_page) ? "$i" : "$i"; if( $i < $init_page_max + 1 ) { $page_string .= ", "; } } $page_string .= ( $on_page < $total_pages - 3 ) ? " ... " : ", "; } else { $page_string .= " ... "; } for($i = $total_pages - 1; $i < $total_pages + 1; $i++) { $page_string .= ($i == $on_page) ? "$i" : "$i"; if( $i < $total_pages ) { $page_string .= ", "; } } } } else { for($i = 1; $i < $total_pages + 1; $i++) { $page_string .= ($i == $on_page) ? "$i" : "$i"; if( $i < $total_pages ) { $page_string .= ", "; } } } if( $add_prevnext_text ) { if($on_page > 1) { $page_string = " " . $lang['Previous'] . "  " . $page_string; } if($on_page < $total_pages) { $page_string .= "  " . $lang['Next'] . ""; } } $page_string = $lang['Goto_page'] . " " . $page_string; return $page_string; } // // Check to see if the username has been taken, or if it is disallowed. // Also checks if it includes the " character, which we don't allow in usernames. // Used for registering, changing names, and posting anonymously with a username // function validate_username($username) { global $db; switch(SQL_LAYER) { case 'mysql': $sql_users = "SELECT u.username, g.group_name FROM " . USERS_TABLE . " u, " . GROUPS_TABLE . " g, " . USER_GROUP_TABLE . " ug WHERE ug.user_id = u.user_id AND g.group_id = ug.group_id AND ( LOWER(u.username) = '" . strtolower(str_replace("\'", "''", $username)) . "' OR LOWER(g.group_name) = '" . strtolower(str_replace("\'", "''", $username)) . "' )"; $sql_disallow = "SELECT disallow_username FROM " . DISALLOW_TABLE . " WHERE '" . str_replace("\'", "''", $username) . "' LIKE disallow_username"; if($result = $db->sql_query($sql_users)) { if($db->sql_numrows($result) > 0) { return(FALSE); } } if($result = $db->sql_query($sql_disallow)) { if($db->sql_numrows($result) > 0) { return(FALSE); } } break; case 'mysql4': $sql_users = "SELECT u.username, g.group_name FROM " . USERS_TABLE . " u, " . GROUPS_TABLE . " g, " . USER_GROUP_TABLE . " ug WHERE ug.user_id = u.user_id AND g.group_id = ug.group_id AND ( LOWER(u.username) = '" . strtolower(str_replace("\'", "''", $username)) . "' OR LOWER(g.group_name) = '" . strtolower(str_replace("\'", "''", $username)) . "' )"; $sql_disallow = "SELECT disallow_username FROM " . DISALLOW_TABLE . " WHERE '" . str_replace("\'", "''", $username) . "' LIKE disallow_username"; if($result = $db->sql_query($sql_users)) { if($db->sql_numrows($result) > 0) { return(FALSE); } } if($result = $db->sql_query($sql_disallow)) { if($db->sql_numrows($result) > 0) { return(FALSE); } } break; default: $sql = "SELECT u.username, g.group_name FROM " . USERS_TABLE . " u, " . GROUPS_TABLE . " g, " . USER_GROUP_TABLE . " ug WHERE ug.user_id = u.user_id AND g.group_id = ug.group_id AND ( LOWER(u.username) = '" . strtolower(str_replace("\'", "''", $username)) . "' OR LOWER(g.group_name) = '" . strtolower(str_replace("\'", "''", $username)) . "' ) UNION SELECT disallow_username, NULL FROM " . DISALLOW_TABLE . " WHERE '" . str_replace("\'", "''", $username) . "' LIKE disallow_username"; if($result = $db->sql_query($sql)) { if($db->sql_numrows($result) > 0) { return(FALSE); } } break; } $sql = "SELECT word FROM " . WORDS_TABLE; if( !$words_result = $db->sql_query($sql) ) { message_die(GENERAL_ERROR, "Couldn't get censored words from database.", "", __LINE__, __FILE__, $sql); } else { $word_list = $db->sql_fetchrowset($words_result); for($i = 0; $i < count($word_list); $i++) { if( preg_match("/\b(" . str_replace("\*", "\w*?", preg_quote($word_list[$i]['word'])) . ")\b/i", $username) ) { return(FALSE); } } } // Don't allow " in username. if ( strstr($username, '"') ) { return FALSE; } return(TRUE); } // // Synchronise functions for forums/topics // function sync($type, $id) { global $db; switch($type) { case 'all forums': $sql = "SELECT forum_id FROM " . FORUMS_TABLE; if( !$result = $db->sql_query($sql) ) { message_die(GENERAL_ERROR, "Could not get forum IDs", "Error", __LINE__, __FILE__, $sql); } $rowset = $db->sql_fetchrowset($result); for($i = 0; $i < count($rowset); $i++) { sync("forum", $row[$i]['forum_id']); } break; case 'all topics': $sql = "SELECT topic_id FROM " . TOPICS_TABLE; if( !$result = $db->sql_query($sql) ) { message_die(GENERAL_ERROR, "Could not get topic ID's", "Error", __LINE__, __FILE__, $sql); } $rowset = $db->sql_fetchrowset($result); for($i = 0; $i < count($rowset); $i++) { sync("topic", $row[$i]['topic_id']); } break; case 'forum': $sql = "SELECT MAX(p.post_id) AS last_post FROM " . POSTS_TABLE . " p, " . TOPICS_TABLE . " t WHERE p.forum_id = $id AND p.topic_id = t.topic_id AND t.topic_status <> " . TOPIC_MOVED; if( !$result = $db->sql_query($sql) ) { message_die(GENERAL_ERROR, "Could not get post ID", "Error", __LINE__, __FILE__, $sql); } if( $row = $db->sql_fetchrow($result) ) { $last_post = ($row['last_post']) ? $row['last_post'] : 0; } else { $last_post = 0; } $sql = "SELECT COUNT(post_id) AS total FROM " . POSTS_TABLE . " WHERE forum_id = $id"; if( !$result = $db->sql_query($sql) ) { message_die(GENERAL_ERROR, "Could not get post count", "Error", __LINE__, __FILE__, $sql); } if( $row = $db->sql_fetchrow($result) ) { $total_posts = ($row['total']) ? $row['total'] : 0; } else { $total_posts = 0; } $sql = "SELECT COUNT(topic_id) AS total FROM " . TOPICS_TABLE . " WHERE forum_id = $id AND topic_status <> " . TOPIC_MOVED; if( !$result = $db->sql_query($sql) ) { message_die(GENERAL_ERROR, "Could not get topic count", "Error", __LINE__, __FILE__, $sql); } if( $row = $db->sql_fetchrow($result) ) { $total_topics = ($row['total']) ? $row['total'] : 0; } else { $total_topics = 0; } $sql = "UPDATE " . FORUMS_TABLE . " SET forum_last_post_id = $last_post, forum_posts = $total_posts, forum_topics = $total_topics WHERE forum_id = $id"; if( !$result = $db->sql_query($sql) ) { message_die(GENERAL_ERROR, "Could not update forum $id", "Error", __LINE__, __FILE__, $sql); } break; case 'topic': $sql = "SELECT MAX(post_id) AS last_post FROM " . POSTS_TABLE . " WHERE topic_id = $id"; if( !$result = $db->sql_query($sql) ) { message_die(GENERAL_ERROR, "Could not get post ID", "Error", __LINE__, __FILE__, $sql); } if( $row = $db->sql_fetchrow($result) ) { $last_post = ($row['last_post']) ? $row['last_post'] : 0; } else { $last_post = 0; } $sql = "SELECT COUNT(post_id) AS total FROM " . POSTS_TABLE . " WHERE topic_id = $id"; if( !$result = $db->sql_query($sql) ) { message_die(GENERAL_ERROR, "Could not get post count", "Error", __LINE__, __FILE__, $sql); } if( $row = $db->sql_fetchrow($result) ) { $total_posts = ($row['total']) ? $row['total'] - 1 : 0; } else { $total_posts = 0; } $sql = "UPDATE " . TOPICS_TABLE . " SET topic_replies = $total_posts, topic_last_post_id = $last_post WHERE topic_id = $id"; if( !$result = $db->sql_query($sql) ) { message_die(GENERAL_ERROR, "Could not update topic $id", "Error", __LINE__, __FILE__, $sql); } break; } return(TRUE); } // // Pick a language, any language ... // function language_select($default, $select_name = "language", $dirname="language/") { global $phpEx; $dir = opendir($dirname); $lang_select = ""; closedir($dir); return $lang_select; } // // Pick a template/theme combo, personally recommend // PSO - Blue but then I would ... // function style_select($default_style, $select_name = "style", $dirname = "templates") { global $db; $sql = "SELECT themes_id, style_name FROM " . THEMES_TABLE . " ORDER BY template_name, themes_id"; if( !$result = $db->sql_query($sql) ) { message_die(GENERAL_ERROR, "Couldn't query themes table", "", __LINE__, __FILE__, $sql); } $template_style = $db->sql_fetchrowset($result); $style_select = ""; return($style_select); } // // Pick a timezone // function tz_select($default, $select_name = 'timezone') { global $sys_timezone, $lang; if( !isset($default) ) { $default == $sys_timezone; } $tz_select = ""; return($tz_select); } // // Smilies code ... would this be better tagged on to the end of bbcode.php? // Probably so and I'll move it before B2 // function smilies_pass($message) { global $db, $board_config; static $smilies; if( empty($smilies) ) { $sql = "SELECT code, smile_url FROM " . SMILIES_TABLE; if( !$result = $db->sql_query($sql) ) { message_die(GENERAL_ERROR, "Couldn't obtain smilies data", "", __LINE__, __FILE__, $sql); } if( !$db->sql_numrows($result) ) { return $message; } $smilies = $db->sql_fetchrowset($result); } usort($smilies, 'smiley_sort'); for($i = 0; $i < count($smilies); $i++) { $orig[] = "/(?<=.\\W|\\W.|^\\W)" . phpbb_preg_quote($smilies[$i]['code'], "/") . "(?=.\\W|\\W.|\\W$)/"; $repl[] = '' . $smilies[$i]['smile_url'] . ''; } if( $i > 0 ) { $message = preg_replace($orig, $repl, ' ' . $message . ' '); $message = substr($message, 1, -1); } return $message; } function smiley_sort($a, $b) { if ( strlen($a['code']) == strlen($b['code']) ) { return 0; } return ( strlen($a['code']) > strlen($b['code']) ) ? -1 : 1; } // // Obtain list of naughty words and build preg style replacement arrays for use by the // calling script, note that the vars are passed as references this just makes it easier // to return both sets of arrays // function obtain_word_list(&$orig_word, &$replacement_word) { global $db; // // Define censored word matches // $sql = "SELECT word, replacement FROM " . WORDS_TABLE; if( !$words_result = $db->sql_query($sql) ) { message_die(GENERAL_ERROR, "Couldn't get censored words from database.", "", __LINE__, __FILE__, $sql); } else { $word_list = $db->sql_fetchrowset($words_result); $orig_word = array(); $replacement_word = array(); for($i = 0; $i < count($word_list); $i++) { $word = str_replace("\*", "\w*?", phpbb_preg_quote($word_list[$i]['word'], "#")); $orig_word[] = "#\b(" . $word . ")\b#i"; $replacement_word[] = $word_list[$i]['replacement']; } } return(TRUE); } // // Username search // function username_search($search_match, $is_inline_review = 0, $default_list = "") { global $db, $board_config, $template, $lang, $images, $theme, $phpEx; global $starttime; $author_list = ""; if( !empty($search_match) ) { $username_search = preg_replace("/\*/", "%", trim(strip_tags($search_match))); $sql = "SELECT username FROM " . USERS_TABLE . " WHERE username LIKE '" . str_replace("\'", "''", $username_search) . "' ORDER BY username"; if( !$result = $db->sql_query($sql) ) { message_die(GENERAL_ERROR, "Couldn't obtain search results", "", __LINE__, __FILE__, $sql); } if( $numrows = $db->sql_numrows($result) ) { $searchset = $db->sql_fetchrowset($result); for($i = 0; $i < $numrows; $i++) { $author_list .= ""; } } else { $author_list = ""; } } if( !$is_inline_review ) { $gen_simple_header = TRUE; $page_title = $lang['Search']; include($phpbb_root_path . 'includes/page_header.'.$phpEx); $template->set_filenames(array( "search_user_body" => "search_username.tpl") ); $template->assign_vars(array( "L_CLOSE_WINDOW" => $lang['Close_window'], "L_SEARCH_USERNAME" => $lang['Find_username'], "L_UPDATE_USERNAME" => $lang['Select_username'], "L_SELECT" => $lang['Select'], "L_SEARCH" => $lang['Search'], "L_SEARCH_EXPLAIN" => $lang['Search_author_explain'], "L_CLOSE_WINDOW" => $lang['Close_window'], "S_AUTHOR_OPTIONS" => $author_list, "S_SEARCH_ACTION" => append_sid("search.$phpEx?mode=searchuser")) ); // // If we have results then dump them out and enable // the appropriate switch block // if( !empty($author_list) ) { $template->assign_block_vars("switch_select_name", array()); } $template->pparse("search_user_body"); include($phpbb_root_path . 'includes/page_tail.'.$phpEx); } return($author_list); } // // This function gets called to output any message or error // that doesn't require additional output from the calling // page. // // $msg_code takes one of four constant values: // // GENERAL_MESSAGE -> Use for any simple text message, eg. // results of an operation, authorisation failures, etc. // // GENERAL ERROR -> Use for any error which occurs _AFTER_ // the common.php include and session code, ie. most errors // in pages/functions // // CRITICAL_MESSAGE -> Only currently used to announce a user // has been banned, can be used where session results cannot // be relied upon to exist but we can and do assume that basic // board configuration data is available // // CRITICAL_ERROR -> Used whenever a DB connection cannot be // guaranteed and/or we've been unable to obtain basic board // configuration data. Shouldn't be used in general // pages/functions (it results in a simple echo'd statement, // no templates are used) // function message_die($msg_code, $msg_text = "", $msg_title = "", $err_line = "", $err_file = "", $sql = "") { global $db, $template, $board_config, $theme, $lang, $phpEx, $phpbb_root_path, $nav_links; global $userdata, $user_ip, $session_length; global $starttime; $sql_store = $sql; if( empty($userdata) && ( $msg_code == GENERAL_MESSAGE || $msg_code == GENERAL_ERROR ) ) { $userdata = session_pagestart($user_ip, PAGE_INDEX, $session_length); init_userprefs($userdata); } // // If the header hasn't been output then do it // if( !defined("HEADER_INC") && $msg_code != CRITICAL_ERROR ) { if( empty($lang) ) { if( !empty($board_config['default_lang']) ) { include($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_main.'.$phpEx); } else { include($phpbb_root_path . 'language/lang_english/lang_main.'.$phpEx); } } if( empty($template) ) { $template = new Template($phpbb_root_path . "templates/" . $board_config['board_template']); } if( empty($theme) ) { $theme = setup_style($board_config['default_style']); } // // Load the Page Header // if( !defined("IN_ADMIN") ) { include($phpbb_root_path . 'includes/page_header.'.$phpEx); } else { include($phpbb_root_path . 'admin/page_header_admin.'.$phpEx); } } switch($msg_code) { case GENERAL_MESSAGE: if($msg_title == "") { $msg_title = $lang['Information']; } break; case CRITICAL_MESSAGE: if($msg_title == "") { $msg_title = $lang['Critical_Information']; } break; case GENERAL_ERROR: if($msg_text == "") { $msg_text = $lang['An_error_occured']; } if($msg_title == "") { $msg_title = $lang['General_Error']; } case CRITICAL_ERROR: // // Critical errors mean we cannot rely on _ANY_ DB information being // available so we're going to dump out a simple echo'd statement // include($phpbb_root_path . 'language/lang_english/lang_main.'.$phpEx); if($msg_text == "") { $msg_text = $lang['A_critical_error']; } if($msg_title == "") { $msg_title = "phpBB : " . $lang['Critical_Error'] . ""; } break; } // // Add on DEBUG info if we've enabled debug mode and this is an error. This // prevents debug info being output for general messages should DEBUG be // set TRUE by accident (preventing confusion for the end user!) // if(DEBUG && ( $msg_code == GENERAL_ERROR || $msg_code == CRITICAL_ERROR ) ) { $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"; } if($err_line != "" && $err_file != "") { $debug_text .= "

Line : " . $err_line . "
File : " . $err_file; } if($debug_text != "") { $msg_text = $msg_text . "

DEBUG MODE" . $debug_text; } } if( $msg_code != CRITICAL_ERROR ) { if( !empty($lang[$msg_text]) ) { $msg_text = $lang[$msg_text]; } if( !defined("IN_ADMIN") ) { $template->set_filenames(array( "message_body" => "message_body.tpl") ); } else { $template->set_filenames(array( "message_body" => "admin/admin_message_body.tpl") ); } $template->assign_vars(array( "MESSAGE_TITLE" => $msg_title, "MESSAGE_TEXT" => $msg_text) ); $template->pparse("message_body"); if( !defined("IN_ADMIN") ) { include($phpbb_root_path . 'includes/page_tail.'.$phpEx); } else { include($phpbb_root_path . 'admin/page_footer_admin.'.$phpEx); } } else { echo "\n\n" . $msg_title . "\n

\n" . $msg_text . "\n"; } exit; } // // this does exactly what preg_quote() does in PHP 4-ish: // http://www.php.net/manual/en/function.preg-quote.php // // This function is here because the 2nd paramter to preg_quote was added in some // version of php 4.0.x.. So we use this in order to maintain compatibility with // earlier versions of PHP. // // If you just need the 1-parameter preg_quote call, then don't bother using this. // function phpbb_preg_quote($str, $delimiter) { $text = preg_quote($str); $text = str_replace($delimiter, "\\" . $delimiter, $text); return $text; } ?>