Zeile 28 | Zeile 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 70 | Zeile 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 84 | Zeile 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 112 | Zeile 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 123 | Zeile 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 138 | Zeile 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 151 | Zeile 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 179 | Zeile 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 220 | Zeile 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 254 | Zeile 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 285 | Zeile 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 304 | Zeile 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 317 | Zeile 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 330 | Zeile 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 343 | Zeile 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 398 | Zeile 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 406 | Zeile 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 424 | Zeile 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 445 | Zeile 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 486 | Zeile 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 521 | Zeile 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 538 | Zeile 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 562 | Zeile 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 588 | Zeile 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 600 | Zeile 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 619 | Zeile 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 632 | Zeile 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 666 | Zeile 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 687 | Zeile 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 720 | Zeile 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 745 | Zeile 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 836 | Zeile 909 |
---|
$validated = 1; } }
|
$validated = 1; } }
|
|
|
$plugins->run_hooks("xmlhttp_validate_question");
if($validated != 1)
| $plugins->run_hooks("xmlhttp_validate_question");
if($validated != 1)
|
Zeile 849 | Zeile 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 858 | Zeile 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 885 | Zeile 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 919 | Zeile 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 932 | Zeile 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 988 | Zeile 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 1011 | Zeile 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) {
|