Vergleich admin/modules/forum/attachments.php - 1.8.4 - 1.8.22

  Keine Änderungen   Hinzugefügt   Modifiziert   Entfernt
Zeile 187Zeile 187
	{
case "pgsql":
$query = $db->query("

	{
case "pgsql":
$query = $db->query("

				SELECT a.*, u.uid AS useruid, u.username, SUM(a.filesize) as totalsize

				SELECT a.uid, u.username, SUM(a.filesize) as totalsize

				FROM ".TABLE_PREFIX."attachments a
LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=a.uid)

				FROM ".TABLE_PREFIX."attachments a
LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=a.uid)

				GROUP BY ".$db->build_fields_string("attachments", "a.").",u.uid,u.username

				GROUP BY a.uid, u.username

				ORDER BY totalsize DESC
LIMIT 5
");
break;
default:
$query = $db->query("

				ORDER BY totalsize DESC
LIMIT 5
");
break;
default:
$query = $db->query("

				SELECT a.*, u.uid AS useruid, u.username, SUM(a.filesize) as totalsize

				SELECT a.uid, u.username, SUM(a.filesize) as totalsize

				FROM ".TABLE_PREFIX."attachments a
LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=a.uid)
GROUP BY a.uid

				FROM ".TABLE_PREFIX."attachments a
LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=a.uid)
GROUP BY a.uid

Zeile 207Zeile 207
	}
while($user = $db->fetch_array($query))
{

	}
while($user = $db->fetch_array($query))
{

		if(!$user['useruid'])

		if(!$user['uid'])

		{
$user['username'] = $lang->na;
}

		{
$user['username'] = $lang->na;
}

		$table->construct_cell(build_profile_link($user['username'], $user['useruid'], "_blank"));

		$table->construct_cell(build_profile_link(htmlspecialchars_uni($user['username']), $user['uid'], "_blank"));

		$table->construct_cell("<a href=\"index.php?module=forum-attachments&amp;results=1&amp;username=".urlencode($user['username'])."\" target=\"_blank\">".get_friendly_size($user['totalsize'])."</a>", array('class' => 'align_center'));
$table->construct_row();
}

		$table->construct_cell("<a href=\"index.php?module=forum-attachments&amp;results=1&amp;username=".urlencode($user['username'])."\" target=\"_blank\">".get_friendly_size($user['totalsize'])."</a>", array('class' => 'align_center'));
$table->construct_row();
}

Zeile 223Zeile 223
if($mybb->input['action'] == "delete_orphans" && $mybb->request_method == "post")
{
$plugins->run_hooks("admin_forum_attachments_delete_orphans");

if($mybb->input['action'] == "delete_orphans" && $mybb->request_method == "post")
{
$plugins->run_hooks("admin_forum_attachments_delete_orphans");

 

$success_count = $error_count = 0;


// Deleting specific attachments from uploads directory
if(is_array($mybb->input['orphaned_files']))


// Deleting specific attachments from uploads directory
if(is_array($mybb->input['orphaned_files']))

	{
function clean_filename($string)
{
return str_replace(array(".."), "", $string);
}
$mybb->input['orphaned_files'] = array_map("clean_filename", $mybb->input['orphaned_files']);
foreach($mybb->input['orphaned_files'] as $file)
{
if(!@unlink(MYBB_ROOT.$mybb->settings['uploadspath']."/".$file))

	{
foreach($mybb->input['orphaned_files'] as $file)
{
$file = str_replace('..', '', $file);
$path = MYBB_ROOT.$mybb->settings['uploadspath']."/".$file;
$real_path = realpath($path);

if($real_path === false || strpos(str_replace('\\', '/', $real_path), str_replace('\\', '/', realpath(MYBB_ROOT)).'/') !== 0 || $real_path == realpath(MYBB_ROOT.'install/lock'))


			{

			{

				$error = true;


				$error_count++;
continue;

			}

			}

		}
}











if(!@unlink(MYBB_ROOT.$mybb->settings['uploadspath']."/".$file))
{
$error_count++;
}
else
{
$success_count++;
}
}
}


// Deleting physical attachments which exist in database
if(is_array($mybb->input['orphaned_attachments']))
{
$mybb->input['orphaned_attachments'] = array_map("intval", $mybb->input['orphaned_attachments']);


// Deleting physical attachments which exist in database
if(is_array($mybb->input['orphaned_attachments']))
{
$mybb->input['orphaned_attachments'] = array_map("intval", $mybb->input['orphaned_attachments']);

		require_once MYBB_ROOT."inc/functions_upload.php";


		require_once MYBB_ROOT."inc/functions_upload.php";


		$query = $db->simple_select("attachments", "aid,pid,posthash", "aid IN (".implode(",", $mybb->input['orphaned_attachments']).")");
while($attachment = $db->fetch_array($query))
{

		$query = $db->simple_select("attachments", "aid,pid,posthash", "aid IN (".implode(",", $mybb->input['orphaned_attachments']).")");
while($attachment = $db->fetch_array($query))
{

Zeile 258Zeile 269
			{
remove_attachment($attachment['pid'], null, $attachment['aid']);
}

			{
remove_attachment($attachment['pid'], null, $attachment['aid']);
}

		}


			$success_count++;
}

	}

$plugins->run_hooks("admin_forum_attachments_delete_orphans_commit");

	}

$plugins->run_hooks("admin_forum_attachments_delete_orphans_commit");

Zeile 266Zeile 278
	// Log admin action
log_admin_action();


	// Log admin action
log_admin_action();


	if($error == true)



	$message = '';
$status = 'success';
if($error_count > 0)

	{

	{

		flash_message($lang->error_not_all_removed, 'error');


		$status = 'error';
$message = $lang->sprintf($lang->error_count, $error_count);

	}

	}

	else



if($success_count > 0)

	{

	{

		flash_message($lang->success_orphan_deleted, 'success');








		if($error_count > 0)
{
$message .= '<br />'.$lang->sprintf($lang->success_count, $success_count);
}
else
{
$message = $lang->success_orphan_deleted;
}

	}

	}

	admin_redirect("index.php?module=forum-attachments");


	flash_message($message, $status);
admin_redirect('index.php?module=forum-attachments');

}

if($mybb->input['action'] == "orphans")
{
$plugins->run_hooks("admin_forum_attachments_orphans");

}

if($mybb->input['action'] == "orphans")
{
$plugins->run_hooks("admin_forum_attachments_orphans");





	// Oprhans are defined as:
// - Uploaded files in the uploads directory that don't exist in the database
// - Attachments for which the uploaded file is missing

	// Oprhans are defined as:
// - Uploaded files in the uploads directory that don't exist in the database
// - Attachments for which the uploaded file is missing

Zeile 293Zeile 317
	if($mybb->input['step'] == 3)
{
$plugins->run_hooks("admin_forum_attachments_step3");

	if($mybb->input['step'] == 3)
{
$plugins->run_hooks("admin_forum_attachments_step3");





		$reults = 0;
// Incoming attachments which exist as files but not in database
if($mybb->input['bad_attachments'])

		$reults = 0;
// Incoming attachments which exist as files but not in database
if($mybb->input['bad_attachments'])

Zeile 329Zeile 353
		$results += count($aids);

if($results == 0)

		$results += count($aids);

if($results == 0)

		{

		{

			flash_message($lang->success_no_orphans, 'success');
admin_redirect("index.php?module=forum-attachments");
}

$page->output_header($lang->orphan_results);
$page->output_nav_tabs($sub_tabs, 'find_orphans');

			flash_message($lang->success_no_orphans, 'success');
admin_redirect("index.php?module=forum-attachments");
}

$page->output_header($lang->orphan_results);
$page->output_nav_tabs($sub_tabs, 'find_orphans');





		$form = new Form("index.php?module=forum-attachments&amp;action=delete_orphans", "post");

$table = new Table;

		$form = new Form("index.php?module=forum-attachments&amp;action=delete_orphans", "post");

$table = new Table;

		$table->construct_header($form->generate_check_box('checkall', '1', '', array('class' => 'checkall')), array( 'width' => 1));

		$table->construct_header($form->generate_check_box('allbox', '1', '', array('class' => 'checkall')), array( 'width' => 1));

		$table->construct_header($lang->size_attachments, array('colspan' => 2));
$table->construct_header($lang->reason_orphaned, array('width' => '20%', 'class' => 'align_center'));
$table->construct_header($lang->date_uploaded, array("class" => "align_center"));

		$table->construct_header($lang->size_attachments, array('colspan' => 2));
$table->construct_header($lang->reason_orphaned, array('width' => '20%', 'class' => 'align_center'));
$table->construct_header($lang->date_uploaded, array("class" => "align_center"));

Zeile 350Zeile 374
			foreach($bad_attachments as $file)
{
$file_path = MYBB_ROOT.$mybb->settings['uploadspath']."/".$file;

			foreach($bad_attachments as $file)
{
$file_path = MYBB_ROOT.$mybb->settings['uploadspath']."/".$file;

				$filesize = get_friendly_size(filesize($file_path));
$table->construct_cell($form->generate_check_box('orphaned_files[]', $file, '', array('checked' => true)));
$table->construct_cell(get_attachment_icon(get_extension($attachment['filename'])), array('width' => 1));
$table->construct_cell("<span class=\"float_right\">{$filesize}</span>{$file}");
$table->construct_cell($lang->reason_not_in_table, array('class' => 'align_center'));
$table->construct_cell(my_date('relative', filemtime($file_path)), array('class' => 'align_center'));
$table->construct_row();







if(file_exists($file_path))
{
$filename = htmlspecialchars_uni($file);
$filesize = get_friendly_size(filesize($file_path));
$table->construct_cell($form->generate_check_box('orphaned_files[]', $file, '', array('checked' => true)));
$table->construct_cell(get_attachment_icon(get_extension($attachment['filename'])), array('width' => 1));
$table->construct_cell("<span class=\"float_right\">{$filesize}</span>{$filename}");
$table->construct_cell($lang->reason_not_in_table, array('class' => 'align_center'));
$table->construct_cell(my_date('relative', filemtime($file_path)), array('class' => 'align_center'));
$table->construct_row();
}

			}
}


			}
}


Zeile 372Zeile 401
					$reason = $lang->reason_file_missing;
}
else if($missing_threads[$attachment['aid']])

					$reason = $lang->reason_file_missing;
}
else if($missing_threads[$attachment['aid']])

				{

				{

					$reason = $lang->reason_thread_deleted;
}
else if($incomplete_attachments[$attachment['aid']])

					$reason = $lang->reason_thread_deleted;
}
else if($incomplete_attachments[$attachment['aid']])

Zeile 384Zeile 413
				$table->construct_cell("<span class=\"float_right\">".get_friendly_size($attachment['filesize'])."</span>{$attachment['filename']}", array('class' => $cell_class));
$table->construct_cell($reason, array('class' => 'align_center'));
if($attachment['dateuploaded'])

				$table->construct_cell("<span class=\"float_right\">".get_friendly_size($attachment['filesize'])."</span>{$attachment['filename']}", array('class' => $cell_class));
$table->construct_cell($reason, array('class' => 'align_center'));
if($attachment['dateuploaded'])

				{

				{

					$table->construct_cell(my_date('relative', $attachment['dateuploaded']), array('class' => 'align_center'));
}
else

					$table->construct_cell(my_date('relative', $attachment['dateuploaded']), array('class' => 'align_center'));
}
else

Zeile 396Zeile 425
		}

$table->output("{$lang->orphan_attachments_search} - {$results} {$lang->results}");

		}

$table->output("{$lang->orphan_attachments_search} - {$results} {$lang->results}");





		$buttons[] = $form->generate_submit_button($lang->button_delete_orphans);
$form->output_submit_wrapper($buttons);
$form->end();
$page->output_footer();
}

		$buttons[] = $form->generate_submit_button($lang->button_delete_orphans);
$form->output_submit_wrapper($buttons);
$form->end();
$page->output_footer();
}





	// Running second step - scan the database
else if($mybb->input['step'] == 2)
{

	// Running second step - scan the database
else if($mybb->input['step'] == 2)
{

Zeile 432Zeile 461
		{
// Check if the attachment exists in the file system
if(!file_exists(MYBB_ROOT.$mybb->settings['uploadspath']."/{$attachment['attachname']}"))

		{
// Check if the attachment exists in the file system
if(!file_exists(MYBB_ROOT.$mybb->settings['uploadspath']."/{$attachment['attachname']}"))

			{

			{

				$missing_attachment_files[$attachment['aid']] = $attachment['aid'];
}
// Check if the thread/post for this attachment is missing

				$missing_attachment_files[$attachment['aid']] = $attachment['aid'];
}
// Check if the thread/post for this attachment is missing

Zeile 473Zeile 502
		echo "<script type=\"text/javascript\">$(function() {
window.setTimeout(
function() {

		echo "<script type=\"text/javascript\">$(function() {
window.setTimeout(
function() {

						$(\"#redirect_form\").submit();

						$(\"#redirect_form\").trigger('submit');

					}, 100
);
});</script>";

					}, 100
);
});</script>";

Zeile 484Zeile 513
	{
$plugins->run_hooks("admin_forum_attachments_orphans_step1");


	{
$plugins->run_hooks("admin_forum_attachments_orphans_step1");


 
		/**
* @param string $dir
*/

		function scan_attachments_directory($dir="")
{
global $db, $mybb, $bad_attachments, $attachments_to_check;

		function scan_attachments_directory($dir="")
{
global $db, $mybb, $bad_attachments, $attachments_to_check;

Zeile 593Zeile 625
		echo "<script type=\"text/javascript\">$(function() {
window.setTimeout(
function() {

		echo "<script type=\"text/javascript\">$(function() {
window.setTimeout(
function() {

						$(\"#redirect_form\").submit();

						$(\"#redirect_form\").trigger('submit');

					}, 100
);
});</script>";

					}, 100
);
});</script>";

Zeile 622Zeile 654
		}

$errors = array();

		}

$errors = array();

 

// Normal users only
if($mybb->get_input('user_types', MyBB::INPUT_INT) == 1)
{
$user_types = 1;
}
// Guests only
elseif($mybb->get_input('user_types', MyBB::INPUT_INT) == -1)
{
$user_types = -1;
$search_sql .= " AND a.uid='0'";
}
// Users & Guests
else
{
$user_types = 0;
}


// Username matching
if($mybb->input['username'])
{
$user = get_user_by_username($mybb->input['username']);


// Username matching
if($mybb->input['username'])
{
$user = get_user_by_username($mybb->input['username']);





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

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

				$errors[] = $lang->error_invalid_username;










				if($user_types == 1)
{
$errors[] = $lang->error_invalid_username;
}
else
{
// Don't error if we are searching for guests or users & guests
$search_sql .= " AND p.username LIKE '%".$db->escape_string_like($mybb->input['username'])."%'";
}


			}
else
{

			}
else
{

Zeile 772Zeile 830
			$form = new Form("index.php?module=forum-attachments&amp;action=delete", "post");

$table = new Table;

			$form = new Form("index.php?module=forum-attachments&amp;action=delete", "post");

$table = new Table;

			$table->construct_header($form->generate_check_box('checkall', '1', '', array('class' => 'checkall')), array( 'width' => 1));

			$table->construct_header($form->generate_check_box('allbox', '1', '', array('class' => 'checkall')), array( 'width' => 1));

			$table->construct_header($lang->attachments, array('colspan' => 2));
$table->construct_header($lang->size, array('width' => '10%', 'class' => 'align_center'));
$table->construct_header($lang->posted_by, array('width' => '20%', 'class' => 'align_center'));

			$table->construct_header($lang->attachments, array('colspan' => 2));
$table->construct_header($lang->size, array('width' => '10%', 'class' => 'align_center'));
$table->construct_header($lang->posted_by, array('width' => '20%', 'class' => 'align_center'));

Zeile 840Zeile 898
	$form_container->output_row($lang->name_contains, $lang->name_contains_desc, $form->generate_text_box('filename', $mybb->input['filename'], array('id' => 'filename')), 'filename');
$form_container->output_row($lang->type_contains, "", $form->generate_text_box('mimetype', $mybb->input['mimetype'], array('id' => 'mimetype')), 'mimetype');
$form_container->output_row($lang->forum_is, "", $form->generate_forum_select('forum[]', $mybb->input['forum'], array('multiple' => true, 'size' => 5, 'id' => 'forum')), 'forum');

	$form_container->output_row($lang->name_contains, $lang->name_contains_desc, $form->generate_text_box('filename', $mybb->input['filename'], array('id' => 'filename')), 'filename');
$form_container->output_row($lang->type_contains, "", $form->generate_text_box('mimetype', $mybb->input['mimetype'], array('id' => 'mimetype')), 'mimetype');
$form_container->output_row($lang->forum_is, "", $form->generate_forum_select('forum[]', $mybb->input['forum'], array('multiple' => true, 'size' => 5, 'id' => 'forum')), 'forum');

	$form_container->output_row($lang->username_is, "", $form->generate_text_box('username', $mybb->input['username'], array('id' => 'username')), 'username');


	$form_container->output_row($lang->username_is, "", $form->generate_text_box('username', htmlspecialchars_uni($mybb->get_input('username')), array('id' => 'username')), 'username');
$form_container->output_row($lang->poster_is, "", $form->generate_select_box('user_types', array('0' => $lang->poster_is_either, '1' => $lang->poster_is_user, '-1' => $lang->poster_is_guest), $mybb->get_input('user_types', MyBB::INPUT_INT), array('id' => 'guests')), 'user_types');


$more_options = array(
"less_than" => $lang->more_than,


$more_options = array(
"less_than" => $lang->more_than,

Zeile 881Zeile 940
	$page->output_footer();
}


	$page->output_footer();
}


 
/**
* @param array $attachment
* @param DefaultTable $table
* @param bool $use_form
*/

function build_attachment_row($attachment, &$table, $use_form=false)
{

function build_attachment_row($attachment, &$table, $use_form=false)
{

	global $mybb, $form;

	global $mybb, $form, $lang;

	$attachment['filename'] = htmlspecialchars_uni($attachment['filename']);

// Here we do a bit of detection, we want to automatically check for removal any missing attachments and any not assigned to a post uploaded > 24hours ago

	$attachment['filename'] = htmlspecialchars_uni($attachment['filename']);

// Here we do a bit of detection, we want to automatically check for removal any missing attachments and any not assigned to a post uploaded > 24hours ago

Zeile 932Zeile 996

if($attachment['user_username'])
{


if($attachment['user_username'])
{

		$attachment['username'] = $attachment['username'];

		$attachment['username'] = $attachment['user_username'];

	}

	}

	$table->construct_cell(build_profile_link($attachment['username'], $attachment['uid'], "_blank"), array("class" => "align_center"));

	$table->construct_cell(build_profile_link(htmlspecialchars_uni($attachment['username']), $attachment['uid'], "_blank"), array("class" => "align_center"));

	$table->construct_cell("<a href=\"../".get_post_link($attachment['pid'])."\" target=\"_blank\">".htmlspecialchars_uni($attachment['subject'])."</a>", array("class" => "align_center"));
$table->construct_cell(my_number_format($attachment['downloads']), array("class" => "align_center"));
if($attachment['dateuploaded'] > 0)

	$table->construct_cell("<a href=\"../".get_post_link($attachment['pid'])."\" target=\"_blank\">".htmlspecialchars_uni($attachment['subject'])."</a>", array("class" => "align_center"));
$table->construct_cell(my_number_format($attachment['downloads']), array("class" => "align_center"));
if($attachment['dateuploaded'] > 0)