Vergleich xmlhttp.php - 1.8.0 - 1.8.36

  Keine Änderungen   Hinzugefügt   Modifiziert   Entfernt
Zeile 28Zeile 28
// Load MyBB core files
require_once dirname(__FILE__)."/inc/init.php";


// Load MyBB core files
require_once dirname(__FILE__)."/inc/init.php";


$shutdown_queries = array();

$shutdown_queries = $shutdown_functions = array();


// Load some of the stock caches we'll be using.
$groupscache = $cache->read("usergroups");


// Load some of the stock caches we'll be using.
$groupscache = $cache->read("usergroups");

Zeile 70Zeile 70
// 1. Check cookies
if(!$mybb->user['uid'] && !empty($mybb->cookies['mybbtheme']))
{

// 1. Check cookies
if(!$mybb->user['uid'] && !empty($mybb->cookies['mybbtheme']))
{

	$mybb->user['style'] = $mybb->cookies['mybbtheme'];

	$mybb->user['style'] = (int)$mybb->cookies['mybbtheme'];

}

// 2. Load style

}

// 2. Load style

Zeile 84Zeile 84
}

// Load basic theme information that we could be needing.

}

// Load basic theme information that we could be needing.

 
if($loadstyle != "def='1'")
{
$query = $db->simple_select('themes', 'name, tid, properties, allowedgroups', $loadstyle, array('limit' => 1));
$theme = $db->fetch_array($query);

if(isset($theme['tid']) && !is_member($theme['allowedgroups']) && $theme['allowedgroups'] != 'all')
{
if(isset($mybb->cookies['mybbtheme']))
{
my_unsetcookie('mybbtheme');
}

$loadstyle = "def='1'";
}
}


if($loadstyle == "def='1'")
{
if(!$cache->read('default_theme'))
{
$cache->update_default_theme();
}

if($loadstyle == "def='1'")
{
if(!$cache->read('default_theme'))
{
$cache->update_default_theme();
}

 


	$theme = $cache->read('default_theme');

	$theme = $cache->read('default_theme');

}
else
{
$query = $db->simple_select("themes", "name, tid, properties", $loadstyle);
$theme = $db->fetch_array($query);

 
}

// No theme was found - we attempt to load the master or any other theme

}

// No theme was found - we attempt to load the master or any other theme

Zeile 112Zeile 124

// Set the appropriate image language directory for this theme.
// Are we linking to a remote theme server?


// Set the appropriate image language directory for this theme.
// Are we linking to a remote theme server?

if(my_substr($theme['imgdir'], 0, 7) == 'http://' || my_substr($theme['imgdir'], 0, 8) == 'https://')

if(my_validate_url($theme['imgdir']))

{
// If a language directory for the current language exists within the theme - we use it
if(!empty($mybb->user['language']))

{
// If a language directory for the current language exists within the theme - we use it
if(!empty($mybb->user['language']))

Zeile 123Zeile 135
	{
// Check if a custom language directory exists for this theme
if(!empty($mybb->settings['bblanguage']))

	{
// Check if a custom language directory exists for this theme
if(!empty($mybb->settings['bblanguage']))

		{
$theme['imglangdir'] = $theme['imgdir'].'/'.$mybb->settings['bblanguage'];
}

		{
$theme['imglangdir'] = $theme['imgdir'].'/'.$mybb->settings['bblanguage'];
}

		// Otherwise, the image language directory is the same as the language directory for the theme
else
{

		// Otherwise, the image language directory is the same as the language directory for the theme
else
{

Zeile 138Zeile 150
	$img_directory = $theme['imgdir'];

if($mybb->settings['usecdn'] && !empty($mybb->settings['cdnpath']))

	$img_directory = $theme['imgdir'];

if($mybb->settings['usecdn'] && !empty($mybb->settings['cdnpath']))

	{

	{

		$img_directory = rtrim($mybb->settings['cdnpath'], '/') . '/' . ltrim($theme['imgdir'], '/');

		$img_directory = rtrim($mybb->settings['cdnpath'], '/') . '/' . ltrim($theme['imgdir'], '/');

	}

	}


if(!@is_dir($img_directory))


if(!@is_dir($img_directory))

	{

	{

		$theme['imgdir'] = 'images';
}


		$theme['imgdir'] = 'images';
}


Zeile 151Zeile 163
	if(!empty($mybb->user['language']) && is_dir($img_directory.'/'.$mybb->user['language']))
{
$theme['imglangdir'] = $theme['imgdir'].'/'.$mybb->user['language'];

	if(!empty($mybb->user['language']) && is_dir($img_directory.'/'.$mybb->user['language']))
{
$theme['imglangdir'] = $theme['imgdir'].'/'.$mybb->user['language'];

	}

	}

	else
{
// Check if a custom language directory exists for this theme
if(is_dir($img_directory.'/'.$mybb->settings['bblanguage']))

	else
{
// Check if a custom language directory exists for this theme
if(is_dir($img_directory.'/'.$mybb->settings['bblanguage']))

		{

		{

			$theme['imglangdir'] = $theme['imgdir'].'/'.$mybb->settings['bblanguage'];

			$theme['imglangdir'] = $theme['imgdir'].'/'.$mybb->settings['bblanguage'];

		}

		}

		// Otherwise, the image language directory is the same as the language directory for the theme
else
{

		// Otherwise, the image language directory is the same as the language directory for the theme
else
{

		$theme['imglangdir'] = $theme['imgdir'];

			$theme['imglangdir'] = $theme['imgdir'];

		}

		}

	}


	}


	$theme['imgdir'] = $mybb->get_asset_url($theme['imgdir']);
$theme['imglangdir'] = $mybb->get_asset_url($theme['imglangdir']);

	$theme['imgdir'] = $mybb->get_asset_url($theme['imgdir']);
$theme['imglangdir'] = $mybb->get_asset_url($theme['imglangdir']);

}

$templatelist = "postbit_editedby,xmlhttp_inline_post_editor,xmlhttp_buddyselect_online,xmlhttp_buddyselect_offline,xmlhttp_buddyselect";

}

$templatelist = "postbit_editedby,xmlhttp_buddyselect_online,xmlhttp_buddyselect_offline,xmlhttp_buddyselect";

$templates->cache($db->escape_string($templatelist));

if($lang->settings['charset'])

$templates->cache($db->escape_string($templatelist));

if($lang->settings['charset'])

Zeile 179Zeile 191
}
// If not, revert to UTF-8
else

}
// If not, revert to UTF-8
else

{

{

	$charset = "UTF-8";

	$charset = "UTF-8";

}

}


$lang->load("global");
$lang->load("xmlhttp");


$lang->load("global");
$lang->load("xmlhttp");

 

$closed_bypass = array("refresh_captcha", "validate_captcha");

$mybb->input['action'] = $mybb->get_input('action');


$plugins->run_hooks("xmlhttp");



$plugins->run_hooks("xmlhttp");


$mybb->input['action'] = $mybb->get_input('action');














// If the board is closed, the user is not an administrator and they're not trying to login, show the board closed message
if($mybb->settings['boardclosed'] == 1 && $mybb->usergroup['canviewboardclosed'] != 1 && !in_array($mybb->input['action'], $closed_bypass))
{
// Show error
if(!$mybb->settings['boardclosed_reason'])
{
$mybb->settings['boardclosed_reason'] = $lang->boardclosed_reason;
}

$lang->error_boardclosed .= "<br /><em>{$mybb->settings['boardclosed_reason']}</em>";

xmlhttp_error($lang->error_boardclosed);
}


// Fetch a list of usernames beginning with a certain string (used for auto completion)
if($mybb->input['action'] == "get_users")

// Fetch a list of usernames beginning with a certain string (used for auto completion)
if($mybb->input['action'] == "get_users")

{

{

	$mybb->input['query'] = ltrim($mybb->get_input('query'));

	$mybb->input['query'] = ltrim($mybb->get_input('query'));

 
	$search_type = $mybb->get_input('search_type', MyBB::INPUT_INT); // 0: starts with, 1: ends with, 2: contains





	// If the string is less than 3 characters, quit.
if(my_strlen($mybb->input['query']) < 3)

	// If the string is less than 2 characters, quit.
if(my_strlen($mybb->input['query']) < 2)

	{
exit;
}


	{
exit;
}


	if($mybb->get_input('getone', 1) == 1)

	if($mybb->get_input('getone', MyBB::INPUT_INT) == 1)

	{
$limit = 1;
}

	{
$limit = 1;
}

Zeile 220Zeile 249
		"limit_start" => 0,
"limit" => $limit
);

		"limit_start" => 0,
"limit" => $limit
);





	$plugins->run_hooks("xmlhttp_get_users_start");


	$plugins->run_hooks("xmlhttp_get_users_start");


	$query = $db->simple_select("users", "uid, username", "username LIKE '".$db->escape_string_like($mybb->input['query'])."%'", $query_options);















	$likestring = $db->escape_string_like($mybb->input['query']);
if($search_type == 1)
{
$likestring = '%'.$likestring;
}
elseif($search_type == 2)
{
$likestring = '%'.$likestring.'%';
}
else
{
$likestring .= '%';
}

$query = $db->simple_select("users", "uid, username", "username LIKE '{$likestring}'", $query_options);

	if($limit == 1)
{
$user = $db->fetch_array($query);

	if($limit == 1)
{
$user = $db->fetch_array($query);

		$user['username'] = htmlspecialchars_uni($user['username']);
$data = array('id' => $user['username'], 'text' => $user['username']);

		$data = array('uid' => $user['uid'], 'id' => $user['username'], 'text' => $user['username']);


	}
else
{
$data = array();
while($user = $db->fetch_array($query))
{

	}
else
{
$data = array();
while($user = $db->fetch_array($query))
{

			$user['username'] = htmlspecialchars_uni($user['username']);
$data[] = array('id' => $user['username'], 'text' => $user['username']);

			$data[] = array('uid' => $user['uid'], 'id' => $user['username'], 'text' => $user['username']);


		}
}


		}
}


Zeile 254Zeile 295
		xmlhttp_error($lang->invalid_post_code);
}


		xmlhttp_error($lang->invalid_post_code);
}


	// Editing a post subject.
if($mybb->get_input('pid', 1))
{
// Fetch the post from the database.
$post = get_post($mybb->get_input('pid', 1));

// No result, die.
if(!$post)
{
xmlhttp_error($lang->post_doesnt_exist);
}

// Fetch the thread associated with this post.
$thread = get_thread($post['tid']);
if(!$thread)
{
xmlhttp_error($lang->thread_doesnt_exist);
}
}
// We're editing a thread subject.
else if($mybb->get_input('tid', 1))

	// We're editing a thread subject.
if($mybb->get_input('tid', MyBB::INPUT_INT))




















	{
// Fetch the thread.

	{
// Fetch the thread.

		$thread = get_thread($mybb->get_input('tid', 1));

		$thread = get_thread($mybb->get_input('tid', MyBB::INPUT_INT));

		if(!$thread)
{
xmlhttp_error($lang->thread_doesnt_exist);

		if(!$thread)
{
xmlhttp_error($lang->thread_doesnt_exist);

Zeile 285Zeile 307

// Fetch some of the information from the first post of this thread.
$query_options = array(


// Fetch some of the information from the first post of this thread.
$query_options = array(

			"order_by" => "dateline",
"order_dir" => "asc",

			"order_by" => "dateline, pid",


		);
$query = $db->simple_select("posts", "pid,uid,dateline", "tid='".$thread['tid']."'", $query_options);
$post = $db->fetch_array($query);

		);
$query = $db->simple_select("posts", "pid,uid,dateline", "tid='".$thread['tid']."'", $query_options);
$post = $db->fetch_array($query);

Zeile 304Zeile 325
	{
xmlhttp_error($lang->thread_doesnt_exist);
}

	{
xmlhttp_error($lang->thread_doesnt_exist);
}





	// Fetch forum permissions.
$forumpermissions = forum_permissions($forum['fid']);

	// Fetch forum permissions.
$forumpermissions = forum_permissions($forum['fid']);





	$plugins->run_hooks("xmlhttp_edit_subject_start");

// If this user is not a moderator with "caneditposts" permissions.

	$plugins->run_hooks("xmlhttp_edit_subject_start");

// If this user is not a moderator with "caneditposts" permissions.

Zeile 317Zeile 338
		if($thread['closed'] == 1)
{
xmlhttp_error($lang->thread_closed_edit_subjects);

		if($thread['closed'] == 1)
{
xmlhttp_error($lang->thread_closed_edit_subjects);

		}

		}

		// Forum is not open, user doesn't have permission to edit, or author doesn't match this user - don't allow editing.
else if($forum['open'] == 0 || $forumpermissions['caneditposts'] == 0 || $mybb->user['uid'] != $post['uid'] || $mybb->user['uid'] == 0)
{
xmlhttp_error($lang->no_permission_edit_subject);

		// Forum is not open, user doesn't have permission to edit, or author doesn't match this user - don't allow editing.
else if($forum['open'] == 0 || $forumpermissions['caneditposts'] == 0 || $mybb->user['uid'] != $post['uid'] || $mybb->user['uid'] == 0)
{
xmlhttp_error($lang->no_permission_edit_subject);

		}

		}

		// If we're past the edit time limit - don't allow editing.
else if($mybb->usergroup['edittimelimit'] != 0 && $post['dateline'] < (TIME_NOW-($mybb->usergroup['edittimelimit']*60)))
{

		// If we're past the edit time limit - don't allow editing.
else if($mybb->usergroup['edittimelimit'] != 0 && $post['dateline'] < (TIME_NOW-($mybb->usergroup['edittimelimit']*60)))
{

Zeile 330Zeile 351
			xmlhttp_error($lang->edit_time_limit);
}
$ismod = false;

			xmlhttp_error($lang->edit_time_limit);
}
$ismod = false;

	}

	}

	else

	else

	{

	{

		$ismod = true;
}
$subject = $mybb->get_input('value');

		$ismod = true;
}
$subject = $mybb->get_input('value');

Zeile 343Zeile 364
			$subject = iconv($charset, "UTF-8//IGNORE", $subject);
}
else if(function_exists("mb_convert_encoding"))

			$subject = iconv($charset, "UTF-8//IGNORE", $subject);
}
else if(function_exists("mb_convert_encoding"))

		{

		{

			$subject = @mb_convert_encoding($subject, $charset, "UTF-8");

			$subject = @mb_convert_encoding($subject, $charset, "UTF-8");

		}

		}

		else if(my_strtolower($charset) == "iso-8859-1")
{
$subject = utf8_decode($subject);

		else if(my_strtolower($charset) == "iso-8859-1")
{
$subject = utf8_decode($subject);

		}
}

// Set up posthandler.
require_once MYBB_ROOT."inc/datahandlers/post.php";
$posthandler = new PostDataHandler("update");
$posthandler->action = "post";

// Set the post data that came from the input to the $post array.
$updatepost = array(
"pid" => $post['pid'],
"tid" => $thread['tid'],
"subject" => $subject,
"edit_uid" => $mybb->user['uid']
);
$posthandler->set_data($updatepost);

// Now let the post handler do all the hard work.
if(!$posthandler->validate_post())
{
$post_errors = $posthandler->get_friendly_errors();
xmlhttp_error($post_errors);
}
// No errors were found, we can call the update method.
else

		}
}

// Only edit subject if subject has actually been changed
if($thread['subject'] != $subject)





















	{

	{

		$posthandler->update_post();
if($ismod == true)























		// Set up posthandler.
require_once MYBB_ROOT."inc/datahandlers/post.php";
$posthandler = new PostDataHandler("update");
$posthandler->action = "post";

// Set the post data that came from the input to the $post array.
$updatepost = array(
"pid" => $post['pid'],
"tid" => $thread['tid'],
"fid" => $forum['fid'],
"prefix" => $thread['prefix'],
"subject" => $subject,
"edit_uid" => $mybb->user['uid']
);
$posthandler->set_data($updatepost);

// Now let the post handler do all the hard work.
if(!$posthandler->validate_post())
{
$post_errors = $posthandler->get_friendly_errors();
xmlhttp_error($post_errors);
}
// No errors were found, we can call the update method.
else

		{

		{

			$modlogdata = array(
"tid" => $thread['tid'],
"fid" => $forum['fid']
);
log_moderator_action($modlogdata, $lang->edited_post);





			$posthandler->update_post();
if($ismod == true)
{
$modlogdata = array(
"tid" => $thread['tid'],
"fid" => $forum['fid']
);
log_moderator_action($modlogdata, $lang->edited_post);
}

		}
}


		}
}


Zeile 398Zeile 425

// Spit the subject back to the browser.
$subject = substr($mybb->input['value'], 0, 120); // 120 is the varchar length for the subject column


// Spit the subject back to the browser.
$subject = substr($mybb->input['value'], 0, 120); // 120 is the varchar length for the subject column

	echo json_encode(array("subject" => htmlspecialchars_uni($subject)));

	echo json_encode(array("subject" => '<a href="'.get_thread_link($thread['tid']).'">'.htmlspecialchars_uni($subject).'</a>'));


// Close the connection.
exit;


// Close the connection.
exit;

Zeile 406Zeile 433
else if($mybb->input['action'] == "edit_post")
{
// Fetch the post from the database.

else if($mybb->input['action'] == "edit_post")
{
// Fetch the post from the database.

	$post = get_post($mybb->get_input('pid', 1));


	$post = get_post($mybb->get_input('pid', MyBB::INPUT_INT));


	// No result, die.

	// No result, die.

	if(!$post)

	if(!$post || $post['visible'] == -1)

	{
xmlhttp_error($lang->post_doesnt_exist);
}

	{
xmlhttp_error($lang->post_doesnt_exist);
}

Zeile 424Zeile 451
	if(!$thread || !$forum || $forum['type'] != "f")
{
xmlhttp_error($lang->thread_doesnt_exist);

	if(!$thread || !$forum || $forum['type'] != "f")
{
xmlhttp_error($lang->thread_doesnt_exist);

 
	}

// Check if this forum is password protected and we have a valid password
if(check_forum_password($forum['fid'], 0, true))
{
xmlhttp_error($lang->wrong_forum_password);

	}

// Fetch forum permissions.

	}

// Fetch forum permissions.

Zeile 445Zeile 478
			xmlhttp_error($lang->no_permission_edit_post);
}
// If we're past the edit time limit - don't allow editing.

			xmlhttp_error($lang->no_permission_edit_post);
}
// If we're past the edit time limit - don't allow editing.

		else if($mybb->settings['edittimelimit'] != 0 && $post['dateline'] < (TIME_NOW-($mybb->settings['edittimelimit']*60)))

		else if($mybb->usergroup['edittimelimit'] != 0 && $post['dateline'] < (TIME_NOW-($mybb->usergroup['edittimelimit']*60)))

		{

		{

			$lang->edit_time_limit = $lang->sprintf($lang->edit_time_limit, $mybb->settings['edittimelimit']);

			$lang->edit_time_limit = $lang->sprintf($lang->edit_time_limit, $mybb->usergroup['edittimelimit']);

			xmlhttp_error($lang->edit_time_limit);

			xmlhttp_error($lang->edit_time_limit);

		}
// User can't edit unapproved post
if($post['visible'] == 0)
{

		}
// User can't edit unapproved post unless permitted for own
if($post['visible'] == 0 && !($mybb->settings['showownunapproved'] && $post['uid'] == $mybb->user['uid']))
{

			xmlhttp_error($lang->post_moderation);

			xmlhttp_error($lang->post_moderation);

		}

// Forum is closed - no editing allowed
if($forum['open'] == 0)
{
xmlhttp_error($lang->no_permission_edit_post);

 
		}
}

		}
}





	$plugins->run_hooks("xmlhttp_edit_post_end");

if($mybb->get_input('do') == "get_post")

	$plugins->run_hooks("xmlhttp_edit_post_end");

if($mybb->get_input('do') == "get_post")

	{

	{

		// Send our headers.

		// Send our headers.

		//header("Content-type: text/xml; charset={$charset}");
header("Content-type: text/html; charset={$charset}");

//$post['message'] = htmlspecialchars_uni($post['message']);

		header("Content-type: application/json; charset={$charset}");





// Send the contents of the post.


// Send the contents of the post.

		/*eval("\$inline_editor = \"".$templates->get("xmlhttp_inline_post_editor")."\";");
echo "<?xml version=\"1.0\" encoding=\"{$charset}\"?".">";
echo "<form>".$inline_editor."</form>";*/
echo $post['message'];

		echo json_encode($post['message']);




		exit;
}
else if($mybb->get_input('do') == "update_post")

		exit;
}
else if($mybb->get_input('do') == "update_post")

Zeile 486Zeile 507
		if(!verify_post_check($mybb->get_input('my_post_key'), true))
{
xmlhttp_error($lang->invalid_post_code);

		if(!verify_post_check($mybb->get_input('my_post_key'), true))
{
xmlhttp_error($lang->invalid_post_code);

		}

		}


$message = $mybb->get_input('value');
$editreason = $mybb->get_input('editreason');


$message = $mybb->get_input('value');
$editreason = $mybb->get_input('editreason');

Zeile 521Zeile 542
			"editreason" => $editreason,
"edit_uid" => $mybb->user['uid']
);

			"editreason" => $editreason,
"edit_uid" => $mybb->user['uid']
);

 

// If this is the first post set the prefix. If a forum requires a prefix the quick edit would throw an error otherwise
if($post['pid'] == $thread['firstpost'])
{
$updatepost['prefix'] = $thread['prefix'];
}


		$posthandler->set_data($updatepost);

// Now let the post handler do all the hard work.
if(!$posthandler->validate_post())

		$posthandler->set_data($updatepost);

// Now let the post handler do all the hard work.
if(!$posthandler->validate_post())

		{

		{

			$post_errors = $posthandler->get_friendly_errors();
xmlhttp_error($post_errors);
}

			$post_errors = $posthandler->get_friendly_errors();
xmlhttp_error($post_errors);
}

Zeile 538Zeile 566
			{
// Is it the first post?
if($thread['firstpost'] == $post['pid'])

			{
// Is it the first post?
if($thread['firstpost'] == $post['pid'])

				{

				{

					echo json_encode(array("moderation_thread" => $lang->thread_moderation, 'url' => $mybb->settings['bburl'].'/'.get_forum_link($thread['fid']), "message" => $post['message']));
exit;
}

					echo json_encode(array("moderation_thread" => $lang->thread_moderation, 'url' => $mybb->settings['bburl'].'/'.get_forum_link($thread['fid']), "message" => $post['message']));
exit;
}

Zeile 562Zeile 590
			"me_username" => $post['username'],
"filter_badwords" => 1
);

			"me_username" => $post['username'],
"filter_badwords" => 1
);

 

$post['username'] = htmlspecialchars_uni($post['username']);


if($post['smilieoff'] == 1)


if($post['smilieoff'] == 1)

		{

		{

			$parser_options['allow_smilies'] = 0;
}

			$parser_options['allow_smilies'] = 0;
}


if($mybb->user['showimages'] != 1 && $mybb->user['uid'] != 0 || $mybb->settings['guestimages'] != 1 && $mybb->user['uid'] == 0)
{
$parser_options['allow_imgcode'] = 0;
}

if($mybb->user['showvideos'] != 1 && $mybb->user['uid'] != 0 || $mybb->settings['guestvideos'] != 1 && $mybb->user['uid'] == 0)


if($mybb->user['uid'] != 0 && $mybb->user['showimages'] != 1 || $mybb->settings['guestimages'] != 1 && $mybb->user['uid'] == 0)
{
$parser_options['allow_imgcode'] = 0;
}

if($mybb->user['uid'] != 0 && $mybb->user['showvideos'] != 1 || $mybb->settings['guestvideos'] != 1 && $mybb->user['uid'] == 0)

		{
$parser_options['allow_videocode'] = 0;

		{
$parser_options['allow_videocode'] = 0;

		}

$post['message'] = $parser->parse_message($message, $parser_options);


		}

$post['message'] = $parser->parse_message($message, $parser_options);


		// Now lets fetch all of the attachments for these posts.
if($mybb->settings['enableattachments'] != 0)
{

		// Now lets fetch all of the attachments for these posts.
if($mybb->settings['enableattachments'] != 0)
{

Zeile 588Zeile 618
			{
$attachcache[$attachment['pid']][$attachment['aid']] = $attachment;
}

			{
$attachcache[$attachment['pid']][$attachment['aid']] = $attachment;
}





			require_once MYBB_ROOT."inc/functions_post.php";

get_post_attachments($post['pid'], $post);

			require_once MYBB_ROOT."inc/functions_post.php";

get_post_attachments($post['pid'], $post);

		}

		}


// Figure out if we need to show an "edited by" message
// Only show if at least one of "showeditedby" or "showeditedbyadmin" is enabled


// Figure out if we need to show an "edited by" message
// Only show if at least one of "showeditedby" or "showeditedbyadmin" is enabled

Zeile 600Zeile 630
		{
$post['editdate'] = my_date('relative', TIME_NOW);
$post['editnote'] = $lang->sprintf($lang->postbit_edited, $post['editdate']);

		{
$post['editdate'] = my_date('relative', TIME_NOW);
$post['editnote'] = $lang->sprintf($lang->postbit_edited, $post['editdate']);

 
			$mybb->user['username'] = htmlspecialchars_uni($mybb->user['username']);

			$post['editedprofilelink'] = build_profile_link($mybb->user['username'], $mybb->user['uid']);

			$post['editedprofilelink'] = build_profile_link($mybb->user['username'], $mybb->user['uid']);

			$post['editreason'] = $editreason;

			$post['editreason'] = trim($editreason);

			$editreason = "";
if($post['editreason'] != "")
{

			$editreason = "";
if($post['editreason'] != "")
{

Zeile 619Zeile 650
		if($editedmsg)
{
$editedmsg_response = str_replace(array("\r", "\n"), "", $editedmsg);

		if($editedmsg)
{
$editedmsg_response = str_replace(array("\r", "\n"), "", $editedmsg);

		}

		}


$plugins->run_hooks("xmlhttp_update_post");



$plugins->run_hooks("xmlhttp_update_post");


Zeile 632Zeile 663
{
// If the cookie does not exist, exit
if(!array_key_exists("multiquote", $mybb->cookies))

{
// If the cookie does not exist, exit
if(!array_key_exists("multiquote", $mybb->cookies))

	{
exit;
}

	{
exit;
}

	// Divide up the cookie using our delimeter
$multiquoted = explode("|", $mybb->cookies['multiquote']);

	// Divide up the cookie using our delimeter
$multiquoted = explode("|", $mybb->cookies['multiquote']);





	$plugins->run_hooks("xmlhttp_get_multiquoted_start");

// No values - exit
if(!is_array($multiquoted))
{
exit;

	$plugins->run_hooks("xmlhttp_get_multiquoted_start");

// No values - exit
if(!is_array($multiquoted))
{
exit;

	}


	}


	// Loop through each post ID and sanitize it before querying
foreach($multiquoted as $post)
{

	// Loop through each post ID and sanitize it before querying
foreach($multiquoted as $post)
{

Zeile 666Zeile 697
	{
$inactiveforums = "AND t.fid NOT IN ({$inactiveforums})";
}

	{
$inactiveforums = "AND t.fid NOT IN ({$inactiveforums})";
}

 

// Check group permissions if we can't view threads not started by us
$group_permissions = forum_permissions();
$onlyusfids = array();
foreach($group_permissions as $gpfid => $forum_permissions)
{
if(isset($forum_permissions['canonlyviewownthreads']) && $forum_permissions['canonlyviewownthreads'] == 1)
{
$onlyusfids[] = $gpfid;
}
}


	$message = '';

// Are we loading all quoted posts or only those not in the current thread?
if(empty($mybb->input['load_all']))

	$message = '';

// Are we loading all quoted posts or only those not in the current thread?
if(empty($mybb->input['load_all']))

	{
$from_tid = "p.tid != '".$mybb->get_input('tid', 1)."' AND ";
}

	{
$from_tid = "p.tid != '".$mybb->get_input('tid', MyBB::INPUT_INT)."' AND ";
}

	else
{
$from_tid = '';

	else
{
$from_tid = '';

Zeile 687Zeile 730

// Query for any posts in the list which are not within the specified thread
$query = $db->query("


// Query for any posts in the list which are not within the specified thread
$query = $db->query("

		SELECT p.subject, p.message, p.pid, p.tid, p.username, p.dateline, t.fid, p.visible, u.username AS userusername

		SELECT p.subject, p.message, p.pid, p.tid, p.username, p.dateline, t.fid, t.uid AS thread_uid, p.visible, u.username AS userusername

		FROM ".TABLE_PREFIX."posts p
LEFT JOIN ".TABLE_PREFIX."threads t ON (t.tid=p.tid)
LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=p.uid)
WHERE {$from_tid}p.pid IN ({$quoted_posts}) {$unviewable_forums} {$inactiveforums}

		FROM ".TABLE_PREFIX."posts p
LEFT JOIN ".TABLE_PREFIX."threads t ON (t.tid=p.tid)
LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=p.uid)
WHERE {$from_tid}p.pid IN ({$quoted_posts}) {$unviewable_forums} {$inactiveforums}

		ORDER BY p.dateline

		ORDER BY p.dateline, p.pid

	");
while($quoted_post = $db->fetch_array($query))
{

	");
while($quoted_post = $db->fetch_array($query))
{

		if(!is_moderator($quoted_post['fid'], "canviewunapprove") && $quoted_post['visible'] == 0)





		if(
(!is_moderator($quoted_post['fid'], "canviewunapprove") && $quoted_post['visible'] == 0) ||
(!is_moderator($quoted_post['fid'], "canviewdeleted") && $quoted_post['visible'] == -1) ||
(in_array($quoted_post['fid'], $onlyusfids) && (!$mybb->user['uid'] || $quoted_post['thread_uid'] != $mybb->user['uid']))
)

		{

		{

			continue;





			// Allow quoting from own unapproved post
if($quoted_post['visible'] == 0 && !($mybb->settings['showownunapproved'] && $quoted_post['uid'] == $mybb->user['uid']))
{
continue;
}

		}

		}





		$message .= parse_quoted_message($quoted_post, false);

		$message .= parse_quoted_message($quoted_post, false);

	}

	}

	if($mybb->settings['maxquotedepth'] != '0')
{
$message = remove_message_quotes($message);
}

// Send our headers.

	if($mybb->settings['maxquotedepth'] != '0')
{
$message = remove_message_quotes($message);
}

// Send our headers.

	header("Content-type: application/json; charset={$charset}");


	header("Content-type: application/json; charset={$charset}");


	$plugins->run_hooks("xmlhttp_get_multiquoted_end");

echo json_encode(array("message" => $message));

	$plugins->run_hooks("xmlhttp_get_multiquoted_end");

echo json_encode(array("message" => $message));

Zeile 720Zeile 771
{
$imagehash = $db->escape_string($mybb->get_input('imagehash'));
$query = $db->simple_select("captcha", "dateline", "imagehash='$imagehash'");

{
$imagehash = $db->escape_string($mybb->get_input('imagehash'));
$query = $db->simple_select("captcha", "dateline", "imagehash='$imagehash'");

	if($db->num_rows($query) == 0)
{

	if($db->num_rows($query) == 0)
{

		xmlhttp_error($lang->captcha_not_exists);
}
$db->delete_query("captcha", "imagehash='$imagehash'");

		xmlhttp_error($lang->captcha_not_exists);
}
$db->delete_query("captcha", "imagehash='$imagehash'");

Zeile 745Zeile 796
	header("Content-type: application/json; charset={$charset}");
$imagehash = $db->escape_string($mybb->get_input('imagehash'));
$query = $db->simple_select("captcha", "imagestring", "imagehash='$imagehash'");

	header("Content-type: application/json; charset={$charset}");
$imagehash = $db->escape_string($mybb->get_input('imagehash'));
$query = $db->simple_select("captcha", "imagestring", "imagehash='$imagehash'");

	if($db->num_rows($query) == 0)
{
echo $lang->captcha_valid_not_exists;
exit;

	if($db->num_rows($query) == 0)
{
echo json_encode($lang->captcha_valid_not_exists);
exit;

	}
$imagestring = $db->fetch_field($query, 'imagestring');

	}
$imagestring = $db->fetch_field($query, 'imagestring');





	$plugins->run_hooks("xmlhttp_validate_captcha");

if(my_strtolower($imagestring) == my_strtolower($mybb->get_input('imagestring')))
{
//echo json_encode(array("success" => $lang->captcha_matches));
echo json_encode("true");

	$plugins->run_hooks("xmlhttp_validate_captcha");

if(my_strtolower($imagestring) == my_strtolower($mybb->get_input('imagestring')))
{
//echo json_encode(array("success" => $lang->captcha_matches));
echo json_encode("true");

		exit;

		exit;

	}
else

	}
else

	{

	{

		echo json_encode($lang->captcha_does_not_match);
exit;

		echo json_encode($lang->captcha_does_not_match);
exit;

	}

	}

}
else if($mybb->input['action'] == "refresh_question" && $mybb->settings['securityquestion'])
{
header("Content-type: application/json; charset={$charset}");

}
else if($mybb->input['action'] == "refresh_question" && $mybb->settings['securityquestion'])
{
header("Content-type: application/json; charset={$charset}");

	



	$sid = $db->escape_string($mybb->get_input('question_id'));

	$sid = $db->escape_string($mybb->get_input('question_id'));

	$query = $db->query("
SELECT q.*, s.sid
FROM ".TABLE_PREFIX."questionsessions s
LEFT JOIN ".TABLE_PREFIX."questions q ON (q.qid=s.qid)
WHERE q.active='1' AND s.sid='{$sid}'
");
if($db->num_rows($query) == 0)
{
xmlhttp_error($lang->answer_valid_not_exists);
}



	$query = $db->query("
SELECT q.qid, s.sid
FROM ".TABLE_PREFIX."questionsessions s
LEFT JOIN ".TABLE_PREFIX."questions q ON (q.qid=s.qid)
WHERE q.active='1' AND s.sid='{$sid}'
");

if($db->num_rows($query) == 0)
{
xmlhttp_error($lang->answer_valid_not_exists);
}


	$qsession = $db->fetch_array($query);

	$qsession = $db->fetch_array($query);

	



	// Delete previous question session
$db->delete_query("questionsessions", "sid='$sid'");

	// Delete previous question session
$db->delete_query("questionsessions", "sid='$sid'");

	



	require_once MYBB_ROOT."inc/functions_user.php";

	require_once MYBB_ROOT."inc/functions_user.php";

	
$sid = generate_question();


$sid = generate_question($qsession['qid']);

	$query = $db->query("
SELECT q.question, s.sid
FROM ".TABLE_PREFIX."questionsessions s
LEFT JOIN ".TABLE_PREFIX."questions q ON (q.qid=s.qid)
WHERE q.active='1' AND s.sid='{$sid}' AND q.qid!='{$qsession['qid']}'

	$query = $db->query("
SELECT q.question, s.sid
FROM ".TABLE_PREFIX."questionsessions s
LEFT JOIN ".TABLE_PREFIX."questions q ON (q.qid=s.qid)
WHERE q.active='1' AND s.sid='{$sid}' AND q.qid!='{$qsession['qid']}'

	");



















	");

$plugins->run_hooks("xmlhttp_refresh_question");

require_once MYBB_ROOT."inc/class_parser.php";
$parser = new postParser;

$parser_options = array(
"allow_html" => 0,
"allow_mycode" => 1,
"allow_smilies" => 1,
"allow_imgcode" => 1,
"allow_videocode" => 1,
"filter_badwords" => 1,
"me_username" => 0,
"shorten_urls" => 0,
"highlight" => 0,
);


	if($db->num_rows($query) > 0)

	if($db->num_rows($query) > 0)

	{

	{

		$question = $db->fetch_array($query);

		$question = $db->fetch_array($query);

	}

$plugins->run_hooks("xmlhttp_refresh_question");

 




	echo json_encode(array("question" => htmlspecialchars_uni($question['question']), 'sid' => htmlspecialchars_uni($question['sid'])));
exit;






		echo json_encode(array("question" => $parser->parse_message($question['question'], $parser_options), 'sid' => htmlspecialchars_uni($question['sid'])));
exit;
}
else
{
xmlhttp_error($lang->answer_valid_not_exists);
}

}
elseif($mybb->input['action'] == "validate_question" && $mybb->settings['securityquestion'])
{
header("Content-type: application/json; charset={$charset}");
$sid = $db->escape_string($mybb->get_input('question'));
$answer = $db->escape_string($mybb->get_input('answer'));

}
elseif($mybb->input['action'] == "validate_question" && $mybb->settings['securityquestion'])
{
header("Content-type: application/json; charset={$charset}");
$sid = $db->escape_string($mybb->get_input('question'));
$answer = $db->escape_string($mybb->get_input('answer'));

	



	$query = $db->query("
SELECT q.*, s.sid
FROM ".TABLE_PREFIX."questionsessions s
LEFT JOIN ".TABLE_PREFIX."questions q ON (q.qid=s.qid)
WHERE q.active='1' AND s.sid='{$sid}'
");

	$query = $db->query("
SELECT q.*, s.sid
FROM ".TABLE_PREFIX."questionsessions s
LEFT JOIN ".TABLE_PREFIX."questions q ON (q.qid=s.qid)
WHERE q.active='1' AND s.sid='{$sid}'
");

 


	if($db->num_rows($query) == 0)
{

	if($db->num_rows($query) == 0)
{

		echo $lang->answer_valid_not_exists;

		echo json_encode($lang->answer_valid_not_exists);

		exit;

		exit;

	}
else

	}
else

	{
$question = $db->fetch_array($query);
$valid_answers = preg_split("/\r\n|\n|\r/", $question['answer']);
$validated = 0;

	{
$question = $db->fetch_array($query);
$valid_answers = preg_split("/\r\n|\n|\r/", $question['answer']);
$validated = 0;





		foreach($valid_answers as $answers)
{
if(my_strtolower($answers) == my_strtolower($answer))

		foreach($valid_answers as $answers)
{
if(my_strtolower($answers) == my_strtolower($answer))

Zeile 836Zeile 909
				$validated = 1;
}
}

				$validated = 1;
}
}

		



		$plugins->run_hooks("xmlhttp_validate_question");

if($validated != 1)

		$plugins->run_hooks("xmlhttp_validate_question");

if($validated != 1)

Zeile 849Zeile 922
			echo json_encode("true");
exit;
}

			echo json_encode("true");
exit;
}

	}


	}


	exit;
}
else if($mybb->input['action'] == "complex_password")

	exit;
}
else if($mybb->input['action'] == "complex_password")

Zeile 858Zeile 931
	$password = trim($mybb->get_input('password'));
$password = str_replace(array(unichr(160), unichr(173), unichr(0xCA), dec_to_utf8(8238), dec_to_utf8(8237), dec_to_utf8(8203)), array(" ", "-", "", "", "", ""), $password);


	$password = trim($mybb->get_input('password'));
$password = str_replace(array(unichr(160), unichr(173), unichr(0xCA), dec_to_utf8(8238), dec_to_utf8(8237), dec_to_utf8(8203)), array(" ", "-", "", "", "", ""), $password);


	header("Content-type: application/json; charset={$charset}");


	header("Content-type: application/json; charset={$charset}");


	$plugins->run_hooks("xmlhttp_complex_password");

if(!preg_match("/^.*(?=.{".$mybb->settings['minpasswordlength'].",})(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*$/", $password))

	$plugins->run_hooks("xmlhttp_complex_password");

if(!preg_match("/^.*(?=.{".$mybb->settings['minpasswordlength'].",})(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*$/", $password))

	{

	{

		echo json_encode($lang->complex_password_fails);
}
else

		echo json_encode($lang->complex_password_fails);
}
else

Zeile 885Zeile 958
	$username = $mybb->get_input('username');

// Fix bad characters

	$username = $mybb->get_input('username');

// Fix bad characters

	$username = trim($username);

	$username = trim_blank_chrs($username);

	$username = str_replace(array(unichr(160), unichr(173), unichr(0xCA), dec_to_utf8(8238), dec_to_utf8(8237), dec_to_utf8(8203)), array(" ", "-", "", "", "", ""), $username);

// Remove multiple spaces from the username
$username = preg_replace("#\s{2,}#", " ", $username);

	$username = str_replace(array(unichr(160), unichr(173), unichr(0xCA), dec_to_utf8(8238), dec_to_utf8(8237), dec_to_utf8(8203)), array(" ", "-", "", "", "", ""), $username);

// Remove multiple spaces from the username
$username = preg_replace("#\s{2,}#", " ", $username);





	header("Content-type: application/json; charset={$charset}");

	header("Content-type: application/json; charset={$charset}");





	if(empty($username))

	if(empty($username))

	{
echo $lang->banned_characters_username;
exit;
}

	{
echo json_encode($lang->banned_characters_username);
exit;
}


// Check if the username belongs to the list of banned usernames.
$banned_username = is_banned_username($username, true);
if($banned_username)


// Check if the username belongs to the list of banned usernames.
$banned_username = is_banned_username($username, true);
if($banned_username)

	{
echo $lang->banned_username;
exit;
}

	{
echo json_encode($lang->banned_username);
exit;
}


// Check for certain characters in username (<, >, &, and slashes)


// Check for certain characters in username (<, >, &, and slashes)

	if(strpos($username, "<") !== false || strpos($username, ">") !== false || strpos($username, "&") !== false || my_strpos($username, "\\") !== false || strpos($username, ";") !== false || !validate_utf8_string($username, false, false))

	if(strpos($username, "<") !== false || strpos($username, ">") !== false || strpos($username, "&") !== false || my_strpos($username, "\\") !== false || strpos($username, ";") !== false || strpos($username, ",") !== false || !validate_utf8_string($username, false, false))

	{

	{

		echo $lang->banned_characters_username;

		echo json_encode($lang->banned_characters_username);

		exit;
}


		exit;
}


Zeile 919Zeile 992

$plugins->run_hooks("xmlhttp_username_availability");



$plugins->run_hooks("xmlhttp_username_availability");


	if($user['uid'])

	if(!empty($user['uid']))

	{
$lang->username_taken = $lang->sprintf($lang->username_taken, htmlspecialchars_uni($username));
echo json_encode($lang->username_taken);

	{
$lang->username_taken = $lang->sprintf($lang->username_taken, htmlspecialchars_uni($username));
echo json_encode($lang->username_taken);

Zeile 932Zeile 1005
		exit;
}
}

		exit;
}
}

else if($mybb->input['action'] == "username_exists")

else if($mybb->input['action'] == "email_availability")

{
if(!verify_post_check($mybb->get_input('my_post_key'), true))

{
if(!verify_post_check($mybb->get_input('my_post_key'), true))

	{

	{

		xmlhttp_error($lang->invalid_post_code);
}


		xmlhttp_error($lang->invalid_post_code);
}


	require_once MYBB_ROOT."inc/functions_user.php";
$username = $mybb->get_input('value');

header("Content-type: application/json; charset={$charset}");

if(!trim($username))
{
echo json_encode(array("success" => 1));
exit;
}

// Check if the username actually exists
$user = get_user_by_username($username);

	require_once MYBB_ROOT."inc/datahandlers/user.php";
$userhandler = new UserDataHandler("insert");

$email = $mybb->get_input('email');














	$plugins->run_hooks("xmlhttp_username_exists");

	header("Content-type: application/json; charset={$charset}");





	if($user['uid'])
{
$lang->valid_username = $lang->sprintf($lang->valid_username, htmlspecialchars_uni($username));
echo json_encode(array("success" => $lang->valid_username));
exit;
}















	$user = array(
'email' => $email
);

$userhandler->set_data($user);

$errors = array();

if(!$userhandler->verify_email())
{
$errors = $userhandler->get_friendly_errors();
}

$plugins->run_hooks("xmlhttp_email_availability");

if(!empty($errors))
{
echo json_encode($errors[0]);
exit;
}

	else
{

	else
{

		$lang->invalid_username = htmlspecialchars_uni($lang->sprintf($lang->invalid_username, htmlspecialchars_uni($username)));
echo $lang->invalid_username;

		echo json_encode("true");


		exit;
}
}
else if($mybb->input['action'] == "get_buddyselect")
{
// Send our headers.

		exit;
}
}
else if($mybb->input['action'] == "get_buddyselect")
{
// Send our headers.

	header("Content-type: text/plain; charset={$charset}");

	header("Content-type: text/plain; charset={$charset}");


if($mybb->user['buddylist'] != "")
{


if($mybb->user['buddylist'] != "")
{

Zeile 988Zeile 1065
		$offline = array();
while($buddy = $db->fetch_array($query))
{

		$offline = array();
while($buddy = $db->fetch_array($query))
{

 
			$buddy['username'] = htmlspecialchars_uni($buddy['username']);

			$buddy_name = format_name($buddy['username'], $buddy['usergroup'], $buddy['displaygroup']);
$profile_link = build_profile_link($buddy_name, $buddy['uid'], '_blank');
if($buddy['lastactive'] > $timecut && ($buddy['invisible'] == 0 || $mybb->user['usergroup'] == 4) && $buddy['lastvisit'] != $buddy['lastactive'])

			$buddy_name = format_name($buddy['username'], $buddy['usergroup'], $buddy['displaygroup']);
$profile_link = build_profile_link($buddy_name, $buddy['uid'], '_blank');
if($buddy['lastactive'] > $timecut && ($buddy['invisible'] == 0 || $mybb->user['usergroup'] == 4) && $buddy['lastvisit'] != $buddy['lastactive'])

Zeile 1011Zeile 1089
	{
xmlhttp_error($lang->buddylist_error);
}

	{
xmlhttp_error($lang->buddylist_error);
}

 
}
else if($mybb->input['action'] == 'get_referrals')
{
$lang->load('member');
$uid = $mybb->get_input('uid', MYBB::INPUT_INT);

if (!$uid) {
xmlhttp_error($lang->referrals_no_user_specified);
}

$referrals = get_user_referrals($uid);

if (empty($referrals)) {
eval("\$referral_rows = \"".$templates->get('member_no_referrals')."\";");
} else {
foreach($referrals as $referral)
{
$bg_color = alt_trow();
// Format user name link
$username = htmlspecialchars_uni($referral['username']);
$username = format_name($username, $referral['usergroup'], $referral['displaygroup']);
$username = build_profile_link($username, $referral['uid']);

$regdate = my_date('normal', $referral['regdate']);

eval("\$referral_rows .= \"".$templates->get('member_referral_row')."\";");
}
}

$plugins->run_hooks('xmlhttp_referrals_end');

eval("\$referrals = \"".$templates->get('member_referrals_popup', 1, 0)."\";");

// Send our headers and output.
header("Content-type: text/plain; charset={$charset}");
echo $referrals;

}

/**
* Spits an XML Http based error message back to the browser
*

}

/**
* Spits an XML Http based error message back to the browser
*

 * @param string The message to send back.

 * @param string $message The message to send back.

 */
function xmlhttp_error($message)
{

 */
function xmlhttp_error($message)
{