Page 1 of 1

Cannot execute query: Please help

Posted: Mon Sep 19, 2011 2:13 pm
by nodnarb123
Okay I am using a wordpess plugin to integrate a third part program. None the less everytime I create a new user in wordpress this sql error comes up:

Code: Select all

Cannot execute query: SELECT MAX(0+SUBSTRING(gedcom,5)) as oldID FROM tng_trees WHERE gedcom LIKE "tree%"
I got it to work once but then it stopped working. I don't know much about sql or php but it seems there is something wrong with my plugin code. I copy of my code is pasted below. Is there anything I can add or change to make this error stop?

Code: Select all

/************************************************
*                                               *
*           ADD ACTIONS AND INITIALISE          *
*                                               *
* mbtng_serve_static_files                      *
* mbtng_initialise                              *
************************************************/

add_action('plugins_loaded', 'mbtng_serve_static_files');				// Serves static files (.jpg, .css, etc.) as soon as possible

// Serves static files, if requested. Runs initialisation if not.
function mbtng_serve_static_files () {
	session_start();
	if (isset($_REQUEST['update_globals'])) {
		mbtng_rewrite_globals();
		header('Location: '.get_bloginfo('wpurl').'/wp-admin/admin.php?page=tng-wordpress-plugin/tng.php&updated=globals');
		die();
	}
	if (isset($_REQUEST['tng_search'])) {
		mbtng_search_for_tng (dirname(__FILE__));
	}
	if (mbtng_display_page()) {
		$tng_folder = get_option('mbtng_path');
		$filename = mbtng_filename();
		if (mbtng_extension() != 'php') {
			chdir ($tng_folder);
			$code = @file_get_contents ($filename);
            if ($code == '') {
                if (php_sapi_name()=='CGI') {
                    Header("Status: 404 Not Found");
                } else {
                    Header("HTTP/1.0 404 Not Found");
                }
                die();
            }
			header("Content-Length: ".filesize($filename));
			if (mbtng_extension() == 'css') {
				header("Content-type: text/css");
				$lines = explode("\n",$code);
				$newcode = '';
				foreach ($lines as $line) {
					if (strpos($line, '{' ) !== FALSE && isset($_REQUEST['frontend']) && stripos($line, '.LB_') === FALSE)
						$newcode .= '#tng_main '.str_ireplace('body {', '{', $line)."\n";
					else
						$newcode .= $line."\n";
				}
				$code = $newcode;
			} else
				header("Content-type: ". mime_content_type($filename));
			$lastModifiedDate = filemtime($filename);
            header ("Content-Length: ".strlen($code));
			if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) >= $lastModifiedDate) {
				if (php_sapi_name()=='CGI') {
					Header("Status: 304 Not Modified");
				} else {
					Header("HTTP/1.0 304 Not Modified");
				}
			} else {
				$gmtDate = gmdate("D, d M Y H:i:s\G\M\T",$lastModifiedDate);
				header('Last-Modified: '.$gmtDate);
				header('HTTP/1.1 200 OK');
			}
			echo $code;
			die();
		}
	}
	add_action('init', 'mbtng_initialise');
	add_action('widgets_init', 'mbtng_widget_init');						// Initialise the widgets
	add_action('admin_menu', 'mbtng_add_admin_page');						// Adds TNG menu to Wordpress admin
	add_action('admin_notices', 'mbtng_options_reminder');					// Adds reminder to set TNG page
	add_action('generate_rewrite_rules', 'mbtng_update_tng_url');			// Updates the URL of the TNG page in wp_options
}


// Add additional actions only if required
function mbtng_initialise () {
	global $wp_query;
	if (get_option('mbtng_url') == '' && get_option('mbtng_wordpress_page') != '')
		mbtng_update_tng_url(); // Remove these two lines when out of beta
	if (get_option('mbtng_redirect_login'))
		add_filter('login_redirect','mbtng_redirect_login', 10, 3);     // Redirects user back to referrer page, not dashboard
  	if (get_option('mbtng_integrate_logins')) {							// Adds integration actions only if needed
		add_action('login_head', 'mbtng_login_head');					// Adds styles to login header
		add_action('register_form', 'mbtng_register_form');				// Adds additional fields to Wordpress registration form
		add_action('register_post', 'mbtng_check_fields', 10, 3);		// Checks required fields are completed during registration
		add_action('user_register', 'mbtng_register_user', 10, 1);		// Adds a new user to the TNG database when a user is created in Wordpress
		add_action('delete_user', 'mbtng_delete_user', 10, 1);			// Deletes TNG users when deleted from Wordpress
		add_action('wp_authenticate', 'mbtng_intercept_login', 10, 1);	// Checks if a TNG user exists if Wordpress login unsuccessful
	}
	if (mbtng_display_page()) {
 		add_filter('the_posts','mbtng_fake_post');						// Return the Wordpress TNG page if any TNG page is requested
		add_action('template_redirect', 'mbtng_buffer_start');			// Intercept front-end to buffer output
		add_action('wp_head', 'mbtng_frontend_header');					// Adds TNG template <head> to WordPress <head>
		add_action('loop_start', 'mbtng_output_page');					// Outputs the TNG page when required
		add_action('loop_end', 'mbtng_discard_output');					// Discards post contents if TNG is displayed
		add_action('wp_footer', 'mbtng_frontend_footer');				// Adds TNG template footer to Wordpress footer
		add_action('shutdown', 'mbtng_buffer_end');						// Flushes output buffer
		if (get_option('mbtng_integrate_logins'))
 			if (is_user_logged_in()) 
				mbtng_login();											// Ensures user is logged into TNG
			else
				mbtng_logout();											// Ensures user is logged out of TNG
	}
}

/************************************************
*                                               *
*               ADMIN FUNCTIONS                 *
*                                               *
* mbtng_add_admin_page                          *
* mbtng_options_reminder                        *
* mbtng_search_for_tng                          *
* mbtng_rewrite_globals                         *
* mbtng_options                                 *
* mbtng_display_tng_admin                       *
************************************************/

//Adds the TNG menu to Wordpress admin
//Icon from FamFamFam: http://www.famfamfam.com/lab/icons/silk/
function mbtng_add_admin_page () {
	add_menu_page('TNG', 'TNG', 'manage_options', __FILE__, 'mbtng_options', plugins_url('tng-wordpress-plugin/icon.png'));
	add_submenu_page (__FILE__, 'Options', 'Options', 'manage_options', __FILE__, 'mbtng_options');
	add_submenu_page (__FILE__, 'Admin', 'Admin', 'manage_options', 'tng-wordpress-plugin/admin.php', 'mbtng_display_tng_admin');
}

// Adds reminder to set TNG page in options
function mbtng_options_reminder() {
	if (isset($_REQUEST['updated']) && $_REQUEST['updated'] == 'true') {
		update_option('mbtng_path', mbtng_folder_<span style='color:blue' title='I&#39;m naughty, are you naughty?'>smurf</span>(get_option('mbtng_path')));
		mbtng_update_tng_url();
		mbtng_rewrite_globals();
	}
	if (get_option('mbtng_wordpress_page')=='')
		echo '<div id="message" class="updated"><p><b>In order to make TNG visible, you must go to <a href="'.get_bloginfo('wpurl').'/wp-admin/admin.php?page=tng-wordpress-plugin/tng.php">TNG options</a>, and specify a page where TNG will be displayed on your site.</b></div>';
	if (!mbtng_correct_path())
		echo '<div id="message" class="error"><p><b>Warning:</b> TNG cannot be found in '.get_option('mbtng_path').' - please <a href="'.get_bloginfo('wpurl').'/wp-admin/admin.php?page=tng-wordpress-plugin/tng.php">specify the full (absolute) path</a> to your TNG installation, or <a href="'.get_bloginfo('wpurl').'?tng_search">automatically search for the correct folder</a>.</p></div>';
}

//Searches server for TNG files
function mbtng_search_for_tng ($path = '', $go_back = true) {
	global $countit;
	if ($path == '..')
		$oldpath = basename(getcwd());
	else
		$oldpath = '';
	if ($path != '')
		if (!@chdir($path)) {
			header('Location: '.get_bloginfo('wpurl').'/wp-admin/admin.php?page=tng-wordpress-plugin/tng.php&updated=notfound');
			die();
		}
	$path=getcwd();
	$dir = @opendir($path);
    if ($dir) {
		$element=readdir($dir);
        while ($element !== false) {
            if (is_dir(mbtng_folder_<span style='color:blue' title='I&#39;m naughty, are you naughty?'>smurf</span>($path).$element) && $element != "." && $element != ".." && $element != $oldpath) {
                mbtng_search_for_tng(mbtng_folder_<span style='color:blue' title='I&#39;m naughty, are you naughty?'>smurf</span>($path).$element, FALSE);
				chdir($path);
			}
            elseif ($element != "." && $element != "..") {
				if ($element == 'ahnentafel.php' && mbtng_correct_path($path)) {
					update_option('mbtng_path', mbtng_folder_<span style='color:blue' title='I&#39;m naughty, are you naughty?'>smurf</span>($path));
					header('Location: '.get_bloginfo('wpurl').'/wp-admin/admin.php?page=tng-wordpress-plugin/tng.php&updated=search');
					die();
				}
			}
		$element=readdir($dir);
        }
        closedir($dir);
    }
	if ($go_back)
		mbtng_search_for_tng('..', TRUE);
    return;
}

//Searches TNG code for global variables ready to be passed to mbtng_eval_php
function mbtng_rewrite_globals() {

	function mbtng_trim (&$item, $key) {
		$item = trim ($item);
	}

	$folders[0] = mbtng_folder_<span style='color:blue' title='I&#39;m naughty, are you naughty?'>smurf</span>(get_option('mbtng_path'));
	$folders[1] = mbtng_folder_<span style='color:blue' title='I&#39;m naughty, are you naughty?'>smurf</span>($folders[0].'templates');
	$folders[2] = mbtng_folder_<span style='color:blue' title='I&#39;m naughty, are you naughty?'>smurf</span>($folders[1].'template1');
	$folders[3] = mbtng_folder_<span style='color:blue' title='I&#39;m naughty, are you naughty?'>smurf</span>($folders[1].'template2');
	$folders[4] = mbtng_folder_<span style='color:blue' title='I&#39;m naughty, are you naughty?'>smurf</span>($folders[1].'template3');
	$folders[5] = mbtng_folder_<span style='color:blue' title='I&#39;m naughty, are you naughty?'>smurf</span>($folders[1].'template4');
	$folders[6] = mbtng_folder_<span style='color:blue' title='I&#39;m naughty, are you naughty?'>smurf</span>($folders[1].'template5');
	$folders[7] = mbtng_folder_<span style='color:blue' title='I&#39;m naughty, are you naughty?'>smurf</span>($folders[1].'template6');
	$folders[8] = mbtng_folder_<span style='color:blue' title='I&#39;m naughty, are you naughty?'>smurf</span>($folders[1].'template7');
	$folders[9] = mbtng_folder_<span style='color:blue' title='I&#39;m naughty, are you naughty?'>smurf</span>($folders[1].'template8');
	$bnn = $keep = array();
	foreach ($folders as $folder) {
		if ($dh = @opendir($folder)) {
			while (false !== ($file = readdir($dh))) {
		    	if (substr($file, -4) == ".php" && !is_dir($folder.$file) && !in_array($file, $bnn) && $file != "tng.php") {
		    		$lines=file($folder.$file);
					foreach ($lines as $line)
						if (stripos($line, 'global $') !== FALSE) {
							$start = stripos($line, 'global $')+7;
							$end = strpos($line, ';', $start);
							$these = explode (',', substr($line, $start, $end-$start));
							$keep = array_merge ($keep, $these);
						}
		       	}	
			}
		   	closedir($dh);
		}
	}
	array_walk ($keep, 'mbtng_trim');
	$keep = array_unique($keep);
	if (is_array($keep))
		update_option('mbtng_globals', '<?php GLOBAL '.implode (', ', $keep).'; ?>'); //Think about BASE64
}

// Displays options page
function mbtng_options () {
	global $wp_version;
	echo "<div class=\"wrap\">\n";
	echo "<h2>TNG / Wordpress integration</h2>\n";
	if (isset($_REQUEST['updated']) && $_REQUEST['updated'] == 'globals')
		echo '<div id="message" class="updated fade"><p>TNG variables updated.</p></div>';
	if (isset($_REQUEST['updated']) && $_REQUEST['updated'] == 'search')
		echo '<div id="message" class="updated fade"><p>TNG path found as '.get_option('mbtng_path').'.</p></div>';
	if (isset($_REQUEST['updated']) && $_REQUEST['updated'] == 'notfound')
		echo '<div id="message" class="error"><p>Could not find TNG path.</p></div>';
	if (isset($_REQUEST['updated']) && $_REQUEST['updated'] == 'true') {
		echo '<div id="message" class="updated fade"><p>TNG settings saved.</p></div>';
		update_option('mbtng_timestamp', strtotime('now'));
	}
	if (get_option('permalink_structure')=='')
		echo '<div id="message" class="error"><p>Sorry, you cannot use the default <a href="options-permalink.php">permalink structure</a> with this plugin</p></div>';
	if (!isset($_SERVER['REQUEST_URI']))
		echo '<div id="message" class="error"><p>Sorry, this site appears to be running on a Windows server, which is not currently compatible with the TNG plugin. Please <a href="http://www.4-14.org.uk/contact">contact the developer</a> if you would like to test a Windows version.</p></div>';
	$pages = get_pages('sort_column=menu_order');
	echo "<h3>TNG Options</h3>\n";
	echo "<form method=\"post\" action=\"options.php\">\n";
	echo "\t<table>\n";
	echo "\t\t<tr>\n";
	echo "\t\t\t<td style=\"padding: 0.5em 0\">Show TNG on:</td>\n";
	echo "\t\t\t<td style=\"padding: 0.5em 0\"><select name=\"mbtng_wordpress_page\">";
	foreach ($pages as $page) {
		if (get_bloginfo('wpurl') != get_permalink($page->ID)) { // Don't allow homepage to be selected
			if ($page->ID == get_option('mbtng_wordpress_page'))
				$selected = ' selected="selected"';
			else
				$selected='';
			echo "<option value=\"{$page->ID}\"{$selected}>{$page->post_title}</option>";
		}
	}
	echo "</select></td>\n";
	echo "\t\t</tr>\n";
	echo "\t\t<tr>\n";
	echo "\t\t\t<td  style=\"padding: 0.5em 0\"valign=\"top\">Path to TNG files:&nbsp;</td>\n";
	echo "\t\t\t<td style=\"padding: 0.5em 0\"><input type=\"text\" name=\"mbtng_path\" value=\"".get_option('mbtng_path')."\" size=\"50\" \><br/>It is best if this folder is <b>publically inaccessible</b>. On many webservers, this means outside the public_html folder.<br/>You should set \$rootpath to the same value in your TNG config.php or customconfig.php file.</td>\n";
	echo "\t\t</tr>\n";
	echo "\t\t<tr>\n";
	echo "\t\t\t<td  style=\"padding: 0.5em 0\"valign=\"top\">Integrate TNG/Wordpress logins:&nbsp;</td>\n";
	echo "\t\t\t<td style=\"padding: 0.5em 0\"><input type=\"checkbox\" name=\"mbtng_integrate_logins\"";
	if (get_option('mbtng_integrate_logins')) echo "checked='checked'";
	echo "\></td>\n";
	echo "\t\t</tr>\n";
	if (version_compare($wp_version, '2.6.1', '>')) {
		echo "\t\t<tr>\n";
		echo "\t\t\t<td  style=\"padding: 0.5em 0\"valign=\"top\">Redirect successful login to referrer page:&nbsp;</td>\n";
		echo "\t\t\t<td style=\"padding: 0.5em 0\"><input type=\"checkbox\" name=\"mbtng_redirect_login\"";
		if (get_option('mbtng_redirect_login')) echo "checked='checked'";
		echo "\></td>\n";
		echo "\t\t</tr>\n";
	}
	echo "\t\t<tr>\n";
	echo "\t\t\t<td  style=\"padding: 0.5em 0\"valign=\"top\">Replace TNG homepage with Wordpress page:&nbsp;</td>\n";
	echo "\t\t\t<td style=\"padding: 0.5em 0\"><input type=\"checkbox\" name=\"mbtng_use_wordpress_homepage\"";
	if (get_option('mbtng_use_wordpress_homepage')) echo "checked='checked'";
	echo "\></td>\n";
	echo "\t\t</tr>\n";
	echo "\t\t<tr>\n";
	echo "\t\t\t<td>&nbsp;</td>\n";
	echo "\t\t\t<td><p class=\"submit\" style=\"padding:0\"><input type=\"submit\" name=\"Submit\" value=\"Save Changes\" /></p></td>\n";
	echo "\t\t</tr>\n";
	wp_nonce_field('update-options');
	echo "<input type=\"hidden\" name=\"action\" value=\"update\" />";
	echo "<input type=\"hidden\" name=\"page_options\" value=\"mbtng_wordpress_page, mbtng_path, mbtng_integrate_logins, mbtng_redirect_login, mbtng_use_wordpress_homepage\" />";
	echo "</form>\n";
	echo "\t</table>\n";
	echo "<h3>Advanced</h3>\n";
	echo "<form method=\"post\">\n";
	echo "<table>\n";
	echo "<tr>\n";
	echo "<td><p class=\"submit\" style=\"padding:0\"><input type=\"submit\" name=\"tng_search\" value=\"Search for TNG installation\" style=\"margin-right:1em\"/></p></td>\n";
	echo "<td>Click here to attempt to automatically find your TNG installation folder.</td>\n";
	echo "</tr><tr>\n";
	echo "<td><p class=\"submit\" style=\"padding:0\"><input type=\"submit\" name=\"update_globals\" value=\"Update TNG variables\" /></p></td>\n";
	echo "<td>You should press this button if you upgrade your TNG version, or if pages display incorrectly.</td>\n";
	echo "</tr>\n";
	echo "</table>\n";
	echo "</form>\n";
	echo "</div>\n";
}

//Displays TNG admin in an iframe
//Should consider javascript to set iframe height
function mbtng_display_tng_admin ($echo='') {
	$iframe = '<iframe name="tng" id="tng" src ="'.<span style='color:blue' title='I&#39;m naughty, are you naughty?'>smurf</span>(get_option('mbtng_url')).'admin/index.php?true" height = 2000 width="100%"></iframe>';
	if ($echo === false)
		return $iframe;
	else
		echo $iframe;
}

/************************************************
*                                               *
*           LOG-IN/REGISTER FUNCTIONS           *
*                                               *
* mbtng_login_head                              *
* mbtng_register_form                           *
* mbtng_check_fields                            *
* mbtng_intercept_login                         *
* mbtng_register_user                           *
* mbtng_login                                   *
* mbtng_logout                                  *
* mbtng_redirect_login                          *
************************************************/

// Adds styles to login header
function mbtng_login_head() {
	echo "<style type=\"text/css\">#realname, #tree { font-size: 24px; width: 97%; padding: 3px; margin-top: 2px; margin-right: 6px; margin-bottom: 16px; border: 1px solid #e5e5e5; background: #fbfbfb; }</style>\n";
}

// Adds additional fields to Wordpress registration form
function mbtng_register_form() {
	$tng_folder = get_option('mbtng_path');
	chdir($tng_folder);
	include('begin.php');
	include_once($cms['tngpath'] . "genlib.php");
	include($cms['tngpath'] . "getlang.php");
	$textpart = "login";
	include($cms['tngpath'] . "{$mylanguage}/text.php");
	mbtng_db_connect() or exit;
	$query = "SELECT gedcom, treename FROM {$trees_table} ORDER BY treename";
	$treeresult = mysql_query($query) or die ("{$admtext['cannotexecutequery']}: {$query}");
	$numtrees = mysql_num_rows( $treeresult );
	echo "<p><label>{$text['realname']}<br/><input id =\"realname\" class=\"input\" size=\"25\" name=\"realname\"></label>\n";
	echo "<p><label>{$text['tree']}<br/><select id=\"tree\" style=\"margin-bottom: 5px\" name=\"tree\"><option value=\"\"></option>";
	while($treerow = mysql_fetch_assoc($treeresult))
			echo "<option value=\"{$treerow['gedcom']}\">{$treerow['treename']}</option>\n";
	echo"</select><br/>{$text['leaveblank']}</label></p><br/>";
	mbtng_close_tng_table();
}

// Checks required fields are completed during registration
function mbtng_check_fields($login, $email, $errors) {
	global $mbtng_realname, $mbtng_tree, $mbtng_password;
	if ($_POST['realname'] == '') {
		$tng_folder = get_option('mbtng_path');
		chdir($tng_folder);
		include('begin.php');
		include_once($cms['tngpath'] . "genlib.php");
		include($cms['tngpath'] . "getlang.php");
		$textpart = "login";
		include($cms['tngpath'] . "{$mylanguage}/text.php");
		$errors->add('empty_realname', "<strong>ERROR</strong>: {$text['enterrealname']}");
	} else {
		$mbtng_realname = $_POST['realname'];
		$mbtng_tree = $_POST['tree'];
	}
}

// Handles unsuccesful Wordpress login (checks to see if log-in would be successful in TNG)
function mbtng_intercept_login($username) {
	global $wpdb, $users_table;
    $tng_folder = get_option('mbtng_path');
    chdir($tng_folder);
    include_once('pwdlib.php');
	if ($username) {
		$userdata = get_userdatabylogin($username);
		if ($userdata === FALSE) { // Username not in WP user list
			$link = mbtng_db_connect() or exit;
			$query = "SELECT * FROM $users_table WHERE username='{$username}'";
			$result = mysql_query($query) or die ("Cannot execute query: $query");
			$row = mysql_fetch_assoc($result);
			mbtng_close_tng_table();
			if ($row){ // Username IS in TNG userlist
				$tng_password_hash = $row['password'];
				$tng_admin = $row['allow_edit'] && $row['allow_add'] && $row['allow_delete'];
				$tng_email = $row['email'];
				$tng_nickname = $row['description'];
				$tng_id = $row['userID'];
				if($wpdb->get_var("select ID from {$wpdb->prefix}users WHERE user_email='{$tng_email}'")) // TNG user already in WP userlist, but with a different username.
					wp_die ('You have logged in with your TNG username, which in your case is different from your Wordpress username. Click back to try again, or use your email address to <a href="?action=lostpassword">retrieve your password</a>.');
				else {
					$password_supplied = $_POST['pwd'];
					if (PasswordCheck( $password_supplied, $tng_password_hash, $row['password_type'] ) == 1 || $password_supplied === $tng_password_hash) { // User has attempted to login to WP with correct TNG credentials
						include_once(ABSPATH . 'wp-admin/includes/admin.php');
						$wp_id = wp_create_user($username, $password_supplied, $tng_email);
						update_usermeta($wp_id, 'tng_user_id', $tng_id);
						update_usermeta($wp_id, 'nickname', $tng_nickname);
						if ($tng_admin) {
							update_usermeta($wp_id, 'wp_user_level', '10');
							update_usermeta($wp_id, 'wp_capabilities', 'a:1:{s:13:"administrator";b:1;}');
						} else {
							update_usermeta($wp_id, 'wp_capabilities', 'a:1:{s:10:"subscriber";b:1;}');
						}
					}
					else
						wp_die ('You have attempted to log in with your incorrect TNG credentials. You cannot reset your TNG password, so either click back to try again, or contact your system administrator.');
				}
			}
		}
		else { // Username IS in WP userlist, so sync TNG password with Wordpress password
			if (user_pass_ok($username, $_POST['pwd'])) {
				$userdata = get_userdatabylogin($username);
				$tng_user_name = mbtng_check_user($userdata->ID);
				$password_type = PasswordType();   // the current encryption setting
	    		$password_hash = PasswordEncode($_POST['pwd'], $password_type);  // encrypt with the current encryption setting
				$link = mbtng_db_connect() or exit;
				$query = "UPDATE {$users_table} SET password='{$password_hash}' WHERE username='{$tng_user_name}'";
				$result = mysql_query($query) or die ("Cannot execute query: $query");
				mbtng_close_tng_table();
			}
		}
	}
}

// Adds a new user to the TNG database when a user registers on WP
function mbtng_register_user ($user_ID) {
	global $mbtng_realname, $mbtng_tree;
	mbtng_create_user($user_ID, trim($mbtng_realname), $mbtng_tree);
}

// Logs a user into TNG
// Replicates the functionality of processlogin.php
function mbtng_login() {
	global $current_user, $rootpath, $users_table;
    get_currentuserinfo();
	$tng_user_name = mbtng_check_user($current_user->ID);
	if (isset($_SESSION['currentuser']) && $tng_user_name == $_SESSION['currentuser'])
		return $tng_user_name;
	else {
		if (isset($_SESSION['currentuser']))
			mbtng_logout();
		$tng_folder = get_option('mbtng_path');
		chdir($tng_folder);
		include("begin.php");
		$textpart = "login";
		include($cms['tngpath'] . "getlang.php");
		$tngconfig['maint'] = "";
		include_once($cms['tngpath'] . "genlib.php");
		mbtng_db_connect() or exit;
		$query = "SELECT * FROM $users_table WHERE username='{$tng_user_name}'";
		$result = mysql_query($query) or die ("Cannot execute query: $query");
		$row = mysql_fetch_assoc( $result );
		mysql_free_result($result);
		$newdate = date ("Y-m-d H:i:s", time() + ( 3600 * $time_offset ) );
		$query = "UPDATE $users_table SET lastlogin=\"$newdate\" WHERE userID=\"{$row['userID']}\"";
		$uresult = mysql_query($query) or die ("{$admtext['cannotexecutequery']}: {$query}");
		$newroot = ereg_replace( "/", "", $rootpath );
		$newroot = ereg_replace( " ", "", $newroot );
		$newroot = ereg_replace( "\.", "", $newroot );
		setcookie("tnguser_$newroot", $tngusername, time()+31536000, "/");
		setcookie("tngpass_$newroot", $row['password'], time()+31536000, "/");
		setcookie("tngpasstype_$newroot", $row['password_type'], time()+31536000, "/");
		include_once("session_register.php");

		$logged_in = $_SESSION['logged_in'] = 1;

		$allow_edit_db = $_SESSION['allow_edit_db'] = ($row['allow_edit'] == 1 ? 1 : 0);
		$allow_add_db = $_SESSION['allow_add_db'] = ($row['allow_add'] == 1 ? 1 : 0);
		$tentative_edit_db = $_SESSION['tentative_edit_db'] = $row['tentative_edit'];
		$allow_delete_db = $_SESSION['allow_delete_db'] = ($row['allow_delete'] == 1 ? 1 : 0);

		$allow_media_edit_db = $_SESSION['allow_media_edit_db'] = ($row['allow_edit'] ? 1 : 0);
		$allow_media_add_db = $_SESSION['allow_media_add_db'] = ($row['allow_add'] ? 1 : 0);
		$allow_media_delete_db = $_SESSION['allow_media_delete_db'] = ($row['allow_delete'] ? 1 : 0);

		$_SESSION['mygedcom'] = $row['mygedcom'];
		$_SESSION['mypersonID'] = $row['personID'];
		if( $allow_admin )
			$allow_admin_db = $_SESSION['allow_admin_db'] = 1;
		else
			$allow_admin_db = $_SESSION['allow_admin_db'] = 0;
		if( !$livedefault ) //depends on permissions
			$allow_living_db = $_SESSION['allow_living_db'] = $row['allow_living'];
		elseif( $livedefault == 2 ) //always do living
			$allow_living_db = $_SESSION['allow_living_db'] = 1;
		else //never do living
			$allow_living_db = $_SESSION['allow_living_db'] = 0;
		$allow_ged_db = $_SESSION['allow_ged_db'] = $row['allow_ged'];
		if( !$ldsdefault ) //always do lds
			$allow_lds_db = $_SESSION['allow_lds_db'] = 1;
		elseif( $ldsdefault == 2 )  //depends on permissions
			$allow_lds_db = $_SESSION['allow_lds_db'] = $row['allow_lds'];
		else  //never do lds
			$allow_lds_db = $_SESSION['allow_lds_db'] = 0;
		$assignedtree = $_SESSION['assignedtree'] = $row['gedcom'];
		$assignedbranch = $_SESSION['assignedbranch'] = $row['branch'];
		$currentuser = $_SESSION['currentuser'] = $row['username'];
		$currentuserdesc = $_SESSION['currentuserdesc'] = $row['description'];
		$session_rp = $_SESSION['session_rp'] = $rootpath;
		mbtng_close_tng_table();
		return $tngusername;
	}
}

// Logs a user out of TNG
function mbtng_logout() {
	global $rootpath;
	$tng_folder = get_option('mbtng_path');
	chdir($tng_folder);
	include("begin.php");
	if ($_SESSION['currentuser'] != '')
		include('logout.php');
}

// Redirects the user back to the referrer page, rather than the dashboard
function mbtng_redirect_login ($link, $request_link, $user) {
	if (isset($_SERVER['HTTP_REFERER']) && strtolower(substr($_SERVER['HTTP_REFERER'], -12)) != 'wp-login.php')
		return $_SERVER['HTTP_REFERER'];
	else
		return $link;
}

/************************************************
*                                               *
*                USER FUNCTIONS                 *
*                                               *
* mbtng_create_user                             *
* mbtng_check_user                              *
* mbtng_delete_user                             *
************************************************/

// Adds a new TNG user and returns the username
function mbtng_create_user($user_ID, $realname='', $tree='') {
	global $users_table, $trees_table, $tngconfig;
	$tng_folder = get_option('mbtng_path');
    chdir($tng_folder);
    include_once('pwdlib.php');
	$user_info = get_userdata($user_ID);
	$link = mbtng_db_connect() or exit;
	$query = "SELECT userID FROM $users_table WHERE email='{$user_info->user_email}'";
	$result = mysql_query($query) or die ("Cannot execute query: $query");
	$found = mysql_num_rows($result);
	if ($found == 0) {
		mbtng_close_tng_table();
		if ($realname == '')
			$realname = trim(get_user_meta($user_ID, 'nickname', true));
		$password_type = PasswordType();   // the current encryption setting
		$password = wp_generate_password();

		//$password = md5(wp_generate_password());
		$email = $user_info->user_email;
		$username = $user_info->user_login;
		$time_offset = get_option('gmt_offset');
		if (get_magic_quotes_gpc() == 0) {
			$username = addslashes($username);
			$password = addslashes($password);
			$realname = addslashes($realname);
			$email = addslashes($email);
		}

		if(!$tree && $tngconfig['autotree']) {
			$query = "SELECT MAX(0+SUBSTRING(gedcom,5)) as oldID FROM $trees_table WHERE gedcom LIKE \"tree%\"";
			$result = mysql_query($query) or die ("Cannot execute query: $query");
			if(mysql_num_rows) {
				$maxrow = mysql_fetch_array( $result );
				$gedcom = "tree" . ($maxrow['oldID'] + 1);
			}
			else
				$gedcom = "tree1";
			mysql_free_result($result);

			$query = "INSERT IGNORE INTO $trees_table (gedcom,treename,description,owner,email,address,city,state,country,zip,phone,secret,disallowgedcreate) VALUES (\"$gedcom\",\"$realname\",\"\",\"$realname\",\"$email\",\"\",\"\",\"\",\"\",\"\",\"\",\"0\",\"0\")";
			$result = mysql_query($query) or die ("Cannot execute query: $query");
		}
		else
			$gedcom = $assignedtree ? $assignedtree : $tree;

		$today = date("Y-m-d H:i:s", time() + (3600*$time_offset));
		$i=0;
		$found=1;
		$link = mbtng_db_connect() or exit;
		while ($found !=0) {
			if ($i !=0)
				$username = $username.$i;
			$query = "SELECT username FROM $users_table WHERE username='{$username}'";
			$result = mysql_query($query) or die ("Cannot execute query: $query");
			$found = mysql_num_rows($result);
			$i++;
		}
		if (isset($user_info->user_level) && $user_info->user_level == 10) {
	    	$password = PasswordEncode($password, $password_type);  // encrypt with the current encryption setting
			$query = "INSERT INTO $users_table (description,username,password,password_type,realname,email,gedcom,allow_edit,allow_add,allow_delete,allow_lds,allow_ged,allow_living,dt_registered) VALUES (\"$realname\",\"$username\",\"$password\",\"$password_type\",\"$realname\",\"$email\",\"$gedcom\",1,1,1,1,1,1,\"$today\")";
		}
		else {
			if($tngconfig['autoapp']) {
				$allow_living_val = 0;
				$password = PasswordEncode($password, $password_type);
			}
			else {
				$allow_living_val = -1;
			}
			$query = "INSERT INTO $users_table (description,username,password,password_type,realname,email,gedcom,allow_living,dt_registered) VALUES (\"$realname\",\"$username\",\"$password\",\"$password_type\",\"$realname\",\"$email\",\"$gedcom\",$allow_living_val,\"$today\")";
		}
		$result = mysql_query($query) or die (mysql_errno($link) . ": " . mysql_error($link). "\n Query:\n".$query);
		$success = mysql_insert_id($link);
		mbtng_close_tng_table();
		update_usermeta($user_ID, 'tng_user_id', $success);
		return mbtng_login();
	}
	elseif ($found == 1) {
		$row = mysql_fetch_assoc($result);
		mbtng_close_tng_table();
		update_usermeta($user_ID, 'tng_user_id', $row['userID']);
		return $row['userID'];
	}
	else
		wp_die('There is more than one user with that email address in TNG. Wordpress only supports one account per e-mail address.');
}

// Checks to see if user exists in TNG. If it does, returns the username.
function mbtng_check_user($user_ID) {
	if(!$user_ID)
		return "";
	global $users_table;
	$tng_user_ID = get_user_meta($user_ID, 'tng_user_id', true);
	if ($tng_user_ID == '')
		return mbtng_create_user($user_ID); //User doesn't exist, or link not created
	else {
		$link = mbtng_db_connect() or exit;
		$query = "SELECT username FROM $users_table WHERE userID='{$tng_user_ID}'";
		$result = mysql_query($query) or die ("Cannot execute query: $query");
		$row = mysql_fetch_assoc($result);
		$found = mysql_num_rows($result);
		mbtng_close_tng_table();
		if($found == 0) {
			delete_usermeta($user_ID, 'tng_user_id'); // Link is invalid
			return mbtng_create_user($user_ID);
		}
		else
			return $row['username']; // Link is correct
	}
}

// Deletes TNG users when deleted from Wordpress
function mbtng_delete_user($user_ID) {
	global $users_table;
	$tng_user_id = get_user_meta($user_ID, 'tng_user_id', true);
	if ($tng_user_id != '') {
		$tng_folder = get_option('mbtng_path');
		chdir($tng_folder);
		$link = mbtng_db_connect() or exit;
		$query = "DELETE FROM $users_table WHERE userID='{$tng_user_id}'";
		$result = mysql_query($query) or die ("Cannot execute query: $query");
		mbtng_close_tng_table();
	}
}

/************************************************
*                                               *
*             OUTPUT THE TNG PAGE               *
*                                               *
* mbtng_use_tng_homepage                        *
* mbtng_frontend_header                         *
* mbtng_frontend_footer                         *
* mbtng_fake_post                               *
* mbtng_output_page                             *
* mbtng_buffer_start                            *
* mbtng_buffer_end                              *
* mbtng_discard_output                          *
* mbtng_eval_php                                *
************************************************/

function mbtng_use_tng_homepage() {
	if (get_option('mbtng_use_wordpress_homepage')==TRUE && mbtng_requested_url() == get_option('mbtng_url'))
		return false;
	else
		return true;
}

//Adds TNG header to Wordpress header
function mbtng_frontend_header() {
	global $tng_head;
    $tng_head = "<style type=\"text/css\">
    #tng_main {line-height: 1.4em}
    #tng_main tr td {padding: 2px 4px; margin:0; border-top: none}
    </style>\r\n".$tng_head;
	if (strpos(mbtng_filename(), 'admin') !== FALSE)
		$tng_head .= '<base href = "'.get_permalink(get_option('mbtng_wordpress_page')).'"/>';
	$tng_head .= "<style type=\"text/css\">#tng_main td.menuback, #tng_main td.spacercol, #tng_main table.page td.section td.fieldname {display:none}</style>";
	if ($tng_head != '')
		echo $tng_head;
}

//Adds TNG footer to Wordpress footer
function mbtng_frontend_footer() {
	global $tng_footer;
	if ($tng_footer != '')
		echo $tng_footer;
}

// Returns the TNG Wordpress post whenever a TNG page is requested
function mbtng_fake_post($posts){
	if (mbtng_display_page()){
		$posts = get_pages('include='.get_option('mbtng_wordpress_page'));
		add_filter('user_<span style='color:blue' title='I&#39;m naughty, are you naughty?'>smurf</span>', 'mbtng_smart_<span style='color:blue' title='I&#39;m naughty, are you naughty?'>smurf</span>');
	}
	return $posts;
}

//Outputs the TNG code (outside the loop to minimise CSS conflicts)
function mbtng_output_page() {
	global $tng_output;
	if (mbtng_display_page() && mbtng_use_tng_homepage()) {
		echo $tng_output;
		ob_start();
	}
}

// Buffers Wordpress and TNG code to allow for correct merging of HTML
function mbtng_buffer_start() {
	global $tng_output, $tng_head, $tng_footer;
	$query = mbtng_requested('query');
	if (mbtng_display_page()) {
		$tng_folder = get_option('mbtng_path');
		$filename = mbtng_filename();
		if (mbtng_extension() == 'php') {
 			if ($filename == 'newacctform.php' && get_option('mbtng_integrate_logins')) {
				header("Location: ".<span style='color:blue' title='I&#39;m naughty, are you naughty?'>smurf</span>(get_bloginfo('wpurl'))."wp-login.php?action=register");
				die();
			}
 			if ($filename == 'login.php' && get_option('mbtng_integrate_logins')) {
				header("Location: ".<span style='color:blue' title='I&#39;m naughty, are you naughty?'>smurf</span>(get_bloginfo('wpurl'))."wp-login.php");
				die();
			}
 			if ($filename == 'logout.php' && get_option('mbtng_integrate_logins')) {
				if (function_exists('wp_logout_url'))
					header("Location: ".html_entity_decode(wp_logout_url()));
				else
					header("Location: ".<span style='color:blue' title='I&#39;m naughty, are you naughty?'>smurf</span>(get_bloginfo('wpurl'))."wp-login.php?action=logout");
				die();
			}
			$tng_output = mbtng_eval_php($filename);
			$non_template_files = array ('tngrss.php', 'addbookmark.php', 'fpdf.php', 'ufpdf.php');
			if (in_array($filename, $non_template_files) || (isset($_REQUEST['tngprint']) && $_REQUEST['tngprint']==1) || stripos($filename, 'admin') !== FALSE || stripos($filename, 'ajx_') !== FALSE || stripos($filename, 'img_') !== FALSE || stripos($filename, 'find') !== FALSE || stripos($filename, 'rpt_') !== FALSE || stripos($tng_output, '<!-- The Next Generation of Genealogy Sitebuilding') === FALSE) {
				echo $tng_output;
				die();
			} else {
				if ($filename == 'admin/index.php') {
					$tng_output = '<div id="tng_main">'.mbtng_display_tng_admin(false).'</div>';
				}
				else {
					$head_start = stripos ($tng_output, '<head>')+6;
					$head_end = stripos ($tng_output, '</head>');
					$tng_head = substr ($tng_output, $head_start, $head_end-$head_start);
					$tng_head = str_replace('.css?', '.css?frontend&', $tng_head);
                    $tng_head = str_replace('.css" rel', '.css?frontend" rel', $tng_head);
					$footer_start = stripos ($tng_output, '</body>')+7;
					$footer_end = stripos ($tng_output, '</html>');
					$tng_footer = substr ($tng_output, $footer_start, $footer_end-$footer_start);
					$output_start = stripos($tng_output, '>', stripos ($tng_output, '<body'))+1;
					$output_end = $footer_start-8;
					$tng_output = '<div id="tng_main">'.substr ($tng_output, $output_start, $output_end-$output_start).'</div>';
				}
				ob_start('');
			}
		}
	}
}
 
//Flushes the output buffer
function mbtng_buffer_end() {
	@ob_end_flush();
}
 
// Discards contents of page if TNG is displayed
function mbtng_discard_output() {
	if (mbtng_display_page() && mbtng_use_tng_homepage()) {
		ob_clean();
		// Remove actions in case loop used elsewhere (e.g. in sidebar)
		remove_action('loop_start', 'mbtng_output_page');
		remove_action('loop_end', 'mbtng_discard_output');
	}

}

//Runs the TNG PHP code and returns the HTML
function mbtng_eval_php($filename) {
	global $tng_output;
	if ($tng_output == '') {
		$tng_folder = get_option('mbtng_path');
		if (stripos($filename, 'admin') !== FALSE) {
			//$filename = substr ($filename, 6);
			$admin = true;
			//$tng_folder .= 'admin';
		} else {
			ini_set('include_path', ini_get('include_path').PATH_SEPARATOR.$tng_folder);
			$admin = false;
		}
		eval('?>'.get_option('mbtng_globals').'<?php ');
		ob_start();
		$code = file_get_contents(mbtng_folder_<span style='color:blue' title='I&#39;m naughty, are you naughty?'>smurf</span>($tng_folder).$filename);
		if ($admin || $filename == 'pdfform.php')
			chdir($tng_folder);
		eval("?>$code<?php ");
		$output = ob_get_contents();
		ob_end_clean();
		$tng_output = $output;
	}
	mbtng_close_tng_table();
	return $tng_output;
}

/************************************************
*                                               *
*        DETERMINE WHICH PAGE TO DISPLAY        *
*                                               *
* mbtng_requested                               *
* mbtng_extension                               *
* mbtng_filename                                *
************************************************/

// Returns the requested TNG page or query
function mbtng_requested ($type = 'url') {
	$requested = mbtng_requested_url();
	$query_pos = strrpos($requested, '?')+1;
	$query = '';
	if ($query_pos !== 1) {
		$query = substr($requested, $query_pos);
		$requested = substr($requested, 0, $query_pos-1);
		$query_pos = strrpos($query, 'tng_template='); // Check
		if ($query_pos !== FALSE)
			$query = substr($query, 0, $query_pos);
	}
	if ($type == 'query')
		return $query;
	elseif ($type='url') {
		$requested = substr($requested, strlen(get_option('mbtng_url')));
		if (substr($requested, 0, 1) != '/')
			$requested = '/'.$requested;
		if (substr($requested, -1) == '/')
			$requested .= 'index.php';
		return $requested;
	}
}

// Returns the file extension of the requested page
function mbtng_extension () {
	$requested = mbtng_requested();
	if (mbtng_display_page())
		return strtolower(substr($requested, strrpos($requested, '.') + 1));
}

// Returns the filename of the requested page
function mbtng_filename () {
	return substr(mbtng_requested(),1);
}

/************************************************
*                                               *
*               WIDGET FUNCTIONS                *
*                                               *
* mbtng_widget_init                             *
* mbtng_check_parent                            *
* mbtng_display_widget                          *
* mbtng_output_search                           *
* mbtng_output_menu                             *
* mbtng_output_template_menu                    *
* mbtng_base_url                                *
************************************************/

// Initialise the widget
function mbtng_widget_init() {
	wp_register_sidebar_widget('mbtng_output_search', 'TNG search', 'mbtng_output_search', array('classname' => 'mbtng_output_search', 'description' => 'Displays the TNG search in the sidebar.'));
	wp_register_sidebar_widget('mbtng_output_menu', 'TNG menu', 'mbtng_output_menu', array('classname' => 'mbtng_output_menu', 'description' => 'Displays the TNG menu in the sidebar.'));
}

// Returns true if page is descendant of TNG page
function mbtng_check_parent($check_id = -10) {
	global $post, $wpdb;
	if ($check_id == -10)
		$check_id = $post->ID;
	if ($check_id == get_option('mbtng_wordpress_page'))
		return true;
	elseif ($check_id == 0)
		return false;
	else {
		$parent = $wpdb->get_var("SELECT post_parent FROM {$wpdb->prefix}posts WHERE id='{$check_id}'");
		return mbtng_check_parent($parent);
	}
}

// Returns true if the widgets should be displayed
function mbtng_display_widget() {
	if (mbtng_display_page())
		return true;
	else
		return mbtng_check_parent();
}

//Outputs the TNG search in the sidebar
function mbtng_output_search ($args) {
	if (mbtng_display_widget()) {
		extract($args);
		$tng_folder = get_option('mbtng_path');
		chdir($tng_folder);
		include('begin.php');
		include_once($cms['tngpath'] . "genlib.php");
		include($cms['tngpath'] . "getlang.php");
		include($cms['tngpath'] . "{$mylanguage}/text.php");
		echo $before_widget;
		echo $before_title.'People Search'.$after_title;
		$base_url = mbtng_base_url();
		echo "<form action=\"{$base_url}search.php\" method=\"post\">\n";
		echo "<table class=\"menuback\">\n";
		echo "<tr><td><span class=\"fieldname\">{$text['mnulastname']}:<br /><input type=\"text\" name=\"mylastname\" class=\"searchbox\" size=\"14\" /></span></td></tr>\n";
		echo "<tr><td><span class=\"fieldname\">{$text['mnufirstname']}:<br /><input type=\"text\" name=\"myfirstname\" class=\"searchbox\" size=\"14\" /></span></td></tr>\n";
		echo "<tr><td><input type=\"hidden\" name=\"mybool\" value=\"AND\" /><input type=\"submit\" name=\"search\" value=\"{$text['mnusearchfornames']}\" class=\"small\" /></td></tr>\n";
		echo "</table>\n";
		echo "</form>\n";
		echo "<ul>\n";
		echo "<li style=\"font-weight:bold\"><a href=\"{$base_url}searchform.php\">{$text['mnuadvancedsearch']}</a></li>\n";
		echo "</ul>\n";
		echo $after_widget;
	}
}

//Outputs the TNG menu in the sidebar
function mbtng_output_menu ($args) {
	global $allow_admin;
	if (mbtng_display_widget()) {
		extract($args);
		$tng_folder = get_option('mbtng_path');
		chdir($tng_folder);
		include('begin.php');
		include_once($cms['tngpath'] . "genlib.php");
		include($cms['tngpath'] . "getlang.php");
		include($cms['tngpath'] . "{$mylanguage}/text.php");
		echo $before_widget;
		echo $before_title.'Genealogy Menu'.$after_title;
		$base_url = mbtng_base_url();
		echo "<ul>\n";
		echo "<li class=\"surnames\" style=\"font-weight:bold\"><a href=\"{$base_url}surnames.php\">{$text['mnulastnames']}</a></li>\n";
		echo "</ul>\n";
		echo "<ul style=\"margin-top:0.75em\">\n";
		echo "<li class=\"whatsnew\"><a href=\"{$base_url}whatsnew.php\">{$text['mnuwhatsnew']}</a></li>\n";
		echo "<li class=\"mostwanted\"><a href=\"{$base_url}mostwanted.php\">{$text['mostwanted']}</a></li>\n";
		echo "<li class=\"media\"><a href=\"{$base_url}browsemedia.php\">{$text['allmedia']}</a>\n";
			echo "<ul>\n";
			echo "<li class=\"photos\"><a href=\"{$base_url}browsemedia.php?mediatypeID=photos\">{$text['mnuphotos']}</a></li>\n";
			echo "<li class=\"histories\"><a href=\"{$base_url}browsemedia.php?mediatypeID=histories\">{$text['mnuhistories']}</a></li>\n";
			echo "<li class=\"documents\"><a href=\"{$base_url}browsemedia.php?mediatypeID=documents\">{$text['documents']}</a></li>\n";
			echo "<li class=\"videos\"><a href=\"{$base_url}browsemedia.php?mediatypeID=videos\">{$text['videos']}</a></li>\n";
			echo "<li class=\"recordings\"><a href=\"{$base_url}browsemedia.php?mediatypeID=recordings\">{$text['recordings']}</a></li>\n";
			echo "</ul></li>";
		echo "<li class=\"albums\"><a href=\"{$base_url}browsealbums.php\">{$text['albums']}</a></li>\n";
		echo "<li class=\"cemeteries\"><a href=\"{$base_url}cemeteries.php\">{$text['mnucemeteries']}</a></li>\n";
		echo "<li class=\"heastones\"><a href=\"{$base_url}browsemedia.php?mediatypeID=headstones\">{$text['mnutombstones']}</a></li>\n";
		echo "<li class=\"places\"><a href=\"{$base_url}places.php\">{$text['places']}</a></li>\n";
		echo "<li class=\"notes\"><a href=\"{$base_url}browsenotes.php\">{$text['notes']}</a></li>\n";
		echo "<li class=\"anniversaries\"><a href=\"{$base_url}anniversaries.php\">{$text['anniversaries']}</a></li>\n";
		echo "<li class=\"reports\"><a href=\"{$base_url}reports.php\">{$text['mnureports']}</a></li>\n";
		echo "<li class=\"sources\"><a href=\"{$base_url}browsesources.php\">{$text['mnusources']}</a></li>\n";
		echo "<li class=\"repos\"><a href=\"{$base_url}browserepos.php\">{$text['repositories']}</a></li>\n";
		echo "<li class=\"trees\"><a href=\"{$base_url}browsetrees.php\">{$text['mnustatistics']}</a></li>\n";
		echo "<li class=\"language\"><a href=\"{$base_url}changelanguage.php\">{$text['mnulanguage']}</a></li>\n";
		if ($allow_admin) {
			echo "<li class=\"showlog\"><a href=\"{$base_url}showlog.php\">{$text['mnushowlog']}</a></li>\n";
			echo "<li class=\"admin\"><a href=\"{$base_url}admin/index.php\">{$text['mnuadmin']}</a></li>\n";
		}
		echo "<li class=\"bookmarks\"><a href=\"{$base_url}bookmarks.php\">{$text['bookmarks']}</a></li>\n";
		echo "<li class=\"suggest\"><a href=\"{$base_url}suggest.php\">{$text['contactus']}</a></li>\n";
		echo "</ul>\n";
		echo "<ul style=\"margin-top:0.75em\">\n";
		if (!is_user_logged_in()) {
			echo "<li class=\"register\" style=\"font-weight:bold\"><a href=\"{$base_url}newacctform.php\">{$text['mnuregister']}</a></li>\n";
			echo "<li class=\"login\" style=\"font-weight:bold\"><a href=\"{$base_url}login.php\">{$text['mnulogon']}</a></li>\n";
		} else {
			if (function_exists('wp_logout_url'))
				echo "<li class=\"logout\" style=\"font-weight:bold\"><a href=\"".html_entity_decode(wp_logout_url())."\">{$text['logout']}</a></li>\n";
			else
				echo "<li class=\"logout\" style=\"font-weight:bold\"><a href=\"".<span style='color:blue' title='I&#39;m naughty, are you naughty?'>smurf</span>(get_bloginfo('wpurl'))."wp-login.php?action=logout"."\">{$text['logout']}</a></li>\n";
		}
		echo "</ul>";
		echo $after_widget;
	}
}

//Returns a full URL only if required
function mbtng_base_url () {
	if (!mbtng_display_page())
		return get_permalink(get_option('mbtng_wordpress_page'));
	else
		return '';
}

/************************************************
*                                               *
*                'HELPER' FUNCTIONS             *
*                                               *
* mbtng_db_connect                              *
* mbtng_close_tng_table                         *
* mbtng_requested_url                           *
* mbtng_is_windows                              *
* mbtng_correct_path                            *
* mbtng_display_page                            *
* mbtng_get_template_list                       *
* mbtng_get_template                            *
* mbtng_smart_<span style='color:blue' title='I&#39;m naughty, are you naughty?'>smurf</span>                   *
* mbtng_folder_<span style='color:blue' title='I&#39;m naughty, are you naughty?'>smurf</span>                  *
* mime_content_type                             *
************************************************/

//Replicates tng_db_connect
function mbtng_db_connect() {
	global $textpart, $session_charset;
	$tng_folder = get_option('mbtng_path');
	chdir($tng_folder);
	$config = file_get_contents ('config.php');
	$config .= file_get_contents ('customconfig.php');
	$configlines = explode("\n",$config);
	$config = '';
	$globals = 'global $tngconfig';
	foreach ($configlines as $line) {
		if (substr(trim($line), 0, 10) == '$database_')
			$config .= trim($line)."\n";
		if (stripos($line, '_table') !== FALSE) {
			$globals .= ', '.substr(trim($line), 0, stripos($line, '_table')+6);
			$config .= trim($line)."\n";
		}
		else if(strpos($line, 'tngconfig') !== FALSE) {
			$config .= trim($line)."\n";
		}
	}
	eval($globals.';'.$config);
	$link = @mysql_connect($database_host, $database_username, $database_password);
	if ($session_charset == 'UTF-8')
		@mysql_query("SET NAMES 'utf8'");
	if( $link && mysql_select_db($database_name, $link))
		return $link;
	else {
		echo "Error: TNG is not communicating with your database. Please check your database settings and try again.";
		exit;
	}
	return( FALSE );
}

// Reselects the Wordpress database table
function mbtng_close_tng_table () {
	mysql_select_db (DB_NAME);
}

//Returns the full URL requested. May need modifying for IIS.
function mbtng_requested_url () {
	return "http://".$_SERVER['SERVER_NAME'].urldecode($_SERVER['REQUEST_URI']);
}

//Returns TRUE if running on Windows
function mbtng_is_windows () {
	if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN')
		return true;
	else
		return false;
}

//Returns true if mbtng_path option is correct
function mbtng_correct_path($path='') {
	$current_folder = getcwd();
	if ($path == '')
		$path = get_option('mbtng_path');
	@chdir($path);
	if (file_exists('begin.php') && file_exists('admin.php') && file_exists('genlib.php')) {
		chdir($current_folder);
		return true;
	} else {
		chdir($current_folder);
		return false;
	}
}

// Returns true if TNG page requested
function mbtng_display_page () {
	if (get_option('mbtng_wordpress_page')=='' | !mbtng_correct_path())
		return false;
	else {
		$requested = mbtng_requested_url();
		$query_pos = strrpos($requested, '?')+1;
		if ($query_pos !== 1)
			$requested = substr($requested, 0, $query_pos-1);
		if (stripos ($requested, get_option('mbtng_url')) !== FALSE) {
			$tng_folder = get_option('mbtng_path');
			$filename = mbtng_filename();
			if (file_exists("{$tng_folder}/{$filename}")) {
				return true;
			}
		}
		else
			return false;
	}
}

// Updates the TNG URL in wp_options
function mbtng_update_tng_url() {
	update_option('mbtng_url', get_permalink(get_option('mbtng_wordpress_page')));
}

//Removes the trailing slash from the URL
function mbtng_smart_<span style='color:blue' title='I&#39;m naughty, are you naughty?'>smurf</span> ($url) {
	$url = rtrim($url, '/') . '/';
	if ( 0 < preg_match("#\.[^/]+/$#", $url) )
		$url = rtrim($url, '/');
	return $url;
}

//Adds a server-specific slash for folders
function mbtng_folder_<span style='color:blue' title='I&#39;m naughty, are you naughty?'>smurf</span> ($folder) {
	if (mbtng_is_windows())
		return rtrim($folder, '\\').'\\';
	else
		return <span style='color:blue' title='I&#39;m naughty, are you naughty?'>smurf</span>($folder);
}

//Replacement mime_content_type_function if required
if(!function_exists('mime_content_type')) {
	function mime_content_type($filename) {
		$mime_types = array(
			'txt' => 'text/plain',
			'htm' => 'text/html',
			'html' => 'text/html',
			'php' => 'text/html',
			'css' => 'text/css',
			'js' => 'application/javascript',
			'json' => 'application/json',
			'xml' => 'application/xml',
			'swf' => 'application/x-shockwave-flash',
			'flv' => 'video/x-flv',
			'png' => 'image/png',
			'jpe' => 'image/jpeg',
			'jpeg' => 'image/jpeg',
			'jpg' => 'image/jpeg',
			'gif' => 'image/gif',
			'bmp' => 'image/bmp',
			'ico' => 'image/vnd.microsoft.icon',
			'tiff' => 'image/tiff',
			'tif' => 'image/tiff',
			'svg' => 'image/svg+xml',
			'svgz' => 'image/svg+xml',
			'zip' => 'application/zip',
			'rar' => 'application/x-rar-compressed',
			'exe' => 'application/x-msdownload',
			'msi' => 'application/x-msdownload',
			'cab' => 'application/vnd.ms-cab-compressed',
			'mp3' => 'audio/mpeg',
			'qt' => 'video/quicktime',
			'mov' => 'video/quicktime',
			'pdf' => 'application/pdf',
			'psd' => 'image/vnd.adobe.photoshop',
			'ai' => 'application/postscript',
			'eps' => 'application/postscript',
			'ps' => 'application/postscript',
			'doc' => 'application/msword',
			'rtf' => 'application/rtf',
			'xls' => 'application/vnd.ms-excel',
			'ppt' => 'application/vnd.ms-powerpoint',
			'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
			'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
			'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
			'odt' => 'application/vnd.oasis.opendocument.text',
			'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
			'ged' => 'application/x-gedcom',
		);
		$ext = strtolower(array_pop(explode('.',$filename)));
		if (array_key_exists($ext, $mime_types)) {
			return $mime_types[$ext];
		} elseif (function_exists('finfo_open')) {
			$finfo = finfo_open(FILEINFO_MIME);
			$mimetype = finfo_file($finfo, $filename);
			finfo_close($finfo);
			return $mimetype;
		} else {
			return 'application/octet-stream';
		}
	}
}

//Compatibility for WP 2.9
if (!function_exists('get_user_meta')) {
    function get_user_meta ($user_id, $key, $single) {
        return get_metadata('user', $user_id, $key, $single);
    }
}

/* TO DO
========
Get it working with non-pretty permalinks
Find error in cemeteries page
Make it work with the home page
*/
?>

Re: Cannot execute query: Please help

Posted: Mon Sep 19, 2011 2:47 pm
by twinedev
What message do you get when you manually run that SQL directly on the server?

Re: Cannot execute query: Please help

Posted: Mon Sep 19, 2011 3:45 pm
by nodnarb123
Works great if I run it right on the server. It's acting like the plugin isn't accessing it somehow..... any suggestions?