Zeile 38 | Zeile 38 |
---|
}
$plugins->run_hooks("admin_forum_attachments_begin");
|
}
$plugins->run_hooks("admin_forum_attachments_begin");
|
| $uploadspath_abs = mk_path_abs($mybb->settings['uploadspath']);
$default_perpage = 20; $perpage = $mybb->get_input('perpage', MyBB::INPUT_INT); if(!$perpage) { $perpage = $default_perpage; }
|
if($mybb->input['action'] == "delete") { $plugins->run_hooks("admin_forum_attachments_delete");
|
if($mybb->input['action'] == "delete") { $plugins->run_hooks("admin_forum_attachments_delete");
|
if(!is_array($mybb->input['aids'])) { $mybb->input['aids'] = array($mybb->get_input('aid', MyBB::INPUT_INT)); } else { $mybb->input['aids'] = array_map("intval", $mybb->input['aids']); }
if(count($mybb->input['aids']) < 1) {
| if(isset($mybb->input['aids'])) { if(!is_array($mybb->input['aids'])) { $mybb->input['aids'] = array($mybb->get_input('aid', MyBB::INPUT_INT)); } else { $mybb->input['aids'] = array_map("intval", $mybb->input['aids']); } } else { $mybb->input['aids'] = array(); }
if(count($mybb->input['aids']) < 1) {
|
flash_message($lang->error_nothing_selected, 'error'); admin_redirect("index.php?module=forum-attachments"); }
| flash_message($lang->error_nothing_selected, 'error'); admin_redirect("index.php?module=forum-attachments"); }
|
Zeile 62 | Zeile 78 |
---|
{ require_once MYBB_ROOT."inc/functions_upload.php";
|
{ require_once MYBB_ROOT."inc/functions_upload.php";
|
$query = $db->simple_select("attachments", "aid,pid,posthash, filename", "aid IN (".implode(",", $mybb->input['aids']).")");
| $query = $db->simple_select("attachments", "aid,pid,posthash,filename", "aid IN (".implode(",", $mybb->input['aids']).")");
|
while($attachment = $db->fetch_array($query)) { if(!$attachment['pid'])
| while($attachment = $db->fetch_array($query)) { if(!$attachment['pid'])
|
Zeile 120 | Zeile 136 |
---|
$table->construct_cell(my_number_format($attachment_stats['total_attachments']), array('width' => '25%')); $table->construct_cell($lang->space_used, array('width' => '200')); $table->construct_cell(get_friendly_size($attachment_stats['disk_usage']), array('width' => '200'));
|
$table->construct_cell(my_number_format($attachment_stats['total_attachments']), array('width' => '25%')); $table->construct_cell($lang->space_used, array('width' => '200')); $table->construct_cell(get_friendly_size($attachment_stats['disk_usage']), array('width' => '200'));
|
$table->construct_row();
| $table->construct_row();
|
$table->construct_cell($lang->bandwidth_used, array('width' => '25%')); $table->construct_cell(get_friendly_size(round($attachment_stats['bandwidthused'])), array('width' => '25%')); $table->construct_cell($lang->average_size, array('width' => '25%')); $table->construct_cell(get_friendly_size(round($attachment_stats['disk_usage']/$attachment_stats['total_attachments'])), array('width' => '25%')); $table->construct_row();
|
$table->construct_cell($lang->bandwidth_used, array('width' => '25%')); $table->construct_cell(get_friendly_size(round($attachment_stats['bandwidthused'])), array('width' => '25%')); $table->construct_cell($lang->average_size, array('width' => '25%')); $table->construct_cell(get_friendly_size(round($attachment_stats['disk_usage']/$attachment_stats['total_attachments'])), array('width' => '25%')); $table->construct_row();
|
|
|
$table->output($lang->general_stats);
// Fetch the most popular attachments
|
$table->output($lang->general_stats);
// Fetch the most popular attachments
|
$table = new Table; $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->thread, array('width' => '25%', 'class' => 'align_center')); $table->construct_header($lang->downloads, array('width' => '10%', 'class' => 'align_center')); $table->construct_header($lang->date_uploaded, array("class" => "align_center"));
$query = $db->query(" SELECT a.*, p.tid, p.fid, t.subject, p.uid, p.username, u.username AS user_username FROM ".TABLE_PREFIX."attachments a LEFT JOIN ".TABLE_PREFIX."posts p ON (p.pid=a.pid) LEFT JOIN ".TABLE_PREFIX."threads t ON (t.tid=p.tid) LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=a.uid)
| $table = new Table; $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->thread, array('width' => '25%', 'class' => 'align_center')); $table->construct_header($lang->downloads, array('width' => '10%', 'class' => 'align_center')); $table->construct_header($lang->date_uploaded, array("class" => "align_center"));
$query = $db->query(" SELECT a.*, p.tid, p.fid, t.subject, p.uid, p.username, u.username AS user_username FROM ".TABLE_PREFIX."attachments a LEFT JOIN ".TABLE_PREFIX."posts p ON (p.pid=a.pid) LEFT JOIN ".TABLE_PREFIX."threads t ON (t.tid=p.tid) LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=a.uid)
|
ORDER BY a.downloads DESC LIMIT 5 ");
| ORDER BY a.downloads DESC LIMIT 5 ");
|
Zeile 155 | Zeile 171 |
---|
$table->output($lang->popular_attachments);
// Fetch the largest attachments
|
$table->output($lang->popular_attachments);
// Fetch the largest attachments
|
$table = new Table;
| $table = new Table;
|
$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 177 | Zeile 193 |
---|
build_attachment_row($attachment, $table); } $table->output($lang->largest_attachments);
|
build_attachment_row($attachment, $table); } $table->output($lang->largest_attachments);
|
|
|
// Fetch users who've uploaded the most attachments $table = new Table; $table->construct_header($lang->username);
| // Fetch users who've uploaded the most attachments $table = new Table; $table->construct_header($lang->username);
|
Zeile 186 | Zeile 202 |
---|
switch($db->type) { case "pgsql":
|
switch($db->type) { case "pgsql":
|
$query = $db->query(" SELECT a.*, u.uid AS useruid, 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 ".$db->build_fields_string("attachments", "a.").",u.uid,u.username
| $query = $db->query(" 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, 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 207 | Zeile 223 |
---|
} 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&results=1&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&results=1&username=".urlencode($user['username'])."\" target=\"_blank\">".get_friendly_size($user['totalsize'])."</a>", array('class' => 'align_center')); $table->construct_row(); }
|
Zeile 223 | Zeile 239 |
---|
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) {
|
foreach($mybb->input['orphaned_files'] as $file) {
|
if(!@unlink(MYBB_ROOT.$mybb->settings['uploadspath']."/".$file))
| $file = str_replace('..', '', $file); $path = $uploadspath_abs."/".$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_count++; continue; }
if(!@unlink($uploadspath_abs."/".$file)) { $error_count++; } else
|
{
|
{
|
$error = true;
| $success_count++;
|
} } }
// Deleting physical attachments which exist in database if(is_array($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";
| $mybb->input['orphaned_attachments'] = array_map("intval", $mybb->input['orphaned_attachments']); require_once MYBB_ROOT."inc/functions_upload.php";
|
Zeile 258 | Zeile 285 |
---|
{ remove_attachment($attachment['pid'], null, $attachment['aid']); }
|
{ remove_attachment($attachment['pid'], null, $attachment['aid']); }
|
| $success_count++;
|
} }
| } }
|
Zeile 265 | Zeile 293 |
---|
// Log admin action log_admin_action();
|
// Log admin action log_admin_action();
|
if($error == true)
| $message = ''; $status = 'success'; if($error_count > 0) { $status = 'error'; $message = $lang->sprintf($lang->error_count, $error_count); }
if($success_count > 0)
|
{
|
{
|
flash_message($lang->error_not_all_removed, 'error');
| if($error_count > 0) { $message .= '<br />'.$lang->sprintf($lang->success_count, $success_count); } else { $message = $lang->success_orphan_deleted; }
|
}
|
}
|
else { flash_message($lang->success_orphan_deleted, 'success'); } 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 // - Attachments for which the thread or post has been deleted // - Files uploaded > 24h ago not attached to a real post
|
// 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 // - Attachments for which the thread or post has been deleted // - Files uploaded > 24h ago not attached to a real post
|
|
|
// This process is quite intensive so we split it up in to 2 steps, one which scans the file system and the other which scans the database.
|
// This process is quite intensive so we split it up in to 2 steps, one which scans the file system and the other which scans the database.
|
| $mybb->input['step'] = $mybb->get_input('step', MyBB::INPUT_INT);
|
// Finished second step, show results if($mybb->input['step'] == 3)
| // Finished second step, show results if($mybb->input['step'] == 3)
|
Zeile 296 | Zeile 338 |
---|
$reults = 0; // Incoming attachments which exist as files but not in database
|
$reults = 0; // Incoming attachments which exist as files but not in database
|
if($mybb->input['bad_attachments'])
| if(!empty($mybb->input['bad_attachments']))
|
{ $bad_attachments = my_unserialize($mybb->input['bad_attachments']); $results = count($bad_attachments); }
$aids = array();
|
{ $bad_attachments = my_unserialize($mybb->input['bad_attachments']); $results = count($bad_attachments); }
$aids = array();
|
if($mybb->input['missing_attachment_files']) {
| if(!empty($mybb->input['missing_attachment_files'])) {
|
$missing_attachment_files = my_unserialize($mybb->input['missing_attachment_files']); $aids = array_merge($aids, $missing_attachment_files); }
|
$missing_attachment_files = my_unserialize($mybb->input['missing_attachment_files']); $aids = array_merge($aids, $missing_attachment_files); }
|
if($mybb->input['missing_threads'])
| if(!empty($mybb->input['missing_threads']))
|
{ $missing_threads = my_unserialize($mybb->input['missing_threads']); $aids = array_merge($aids, $missing_threads); }
|
{ $missing_threads = my_unserialize($mybb->input['missing_threads']); $aids = array_merge($aids, $missing_threads); }
|
if($mybb->input['incomplete_attachments'])
| if(!empty($mybb->input['incomplete_attachments']))
|
{ $incomplete_attachments = my_unserialize($mybb->input['incomplete_attachments']); $aids = array_merge($aids, $incomplete_attachments);
| { $incomplete_attachments = my_unserialize($mybb->input['incomplete_attachments']); $aids = array_merge($aids, $incomplete_attachments);
|
Zeile 326 | Zeile 368 |
---|
$aids[$key] = (int)$aid; }
|
$aids[$key] = (int)$aid; }
|
$results += count($aids);
| $results = count($aids);
|
if($results == 0)
|
if($results == 0)
|
{
| {
|
flash_message($lang->success_no_orphans, 'success'); admin_redirect("index.php?module=forum-attachments"); }
| flash_message($lang->success_no_orphans, 'success'); admin_redirect("index.php?module=forum-attachments"); }
|
Zeile 340 | Zeile 382 |
---|
$form = new Form("index.php?module=forum-attachments&action=delete_orphans", "post");
$table = new Table;
|
$form = new Form("index.php?module=forum-attachments&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 349 | Zeile 391 |
---|
{ foreach($bad_attachments as $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();
| $file_path = $uploadspath_abs."/".$file;
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 381 | Zeile 428 |
---|
} $table->construct_cell($form->generate_check_box('orphaned_attachments[]', $attachment['aid'], '', array('checked' => true))); $table->construct_cell(get_attachment_icon(get_extension($attachment['filename'])), array('width' => 1));
|
} $table->construct_cell($form->generate_check_box('orphaned_attachments[]', $attachment['aid'], '', array('checked' => true))); $table->construct_cell(get_attachment_icon(get_extension($attachment['filename'])), array('width' => 1));
|
$table->construct_cell("<span class=\"float_right\">".get_friendly_size($attachment['filesize'])."</span>{$attachment['filename']}", array('class' => $cell_class));
| $table->construct_cell("<span class=\"float_right\">".get_friendly_size($attachment['filesize'])."</span>{$attachment['filename']}");
|
$table->construct_cell($reason, array('class' => 'align_center')); if($attachment['dateuploaded']) {
| $table->construct_cell($reason, array('class' => 'align_center')); if($attachment['dateuploaded']) {
|
Zeile 431 | Zeile 478 |
---|
while($attachment = $db->fetch_array($query)) { // Check if the attachment exists in the file system
|
while($attachment = $db->fetch_array($query)) { // Check if the attachment exists in the file system
|
if(!file_exists(MYBB_ROOT.$mybb->settings['uploadspath']."/{$attachment['attachname']}"))
| if(!file_exists($uploadspath_abs."/{$attachment['attachname']}"))
|
{ $missing_attachment_files[$attachment['aid']] = $attachment['aid']; }
| { $missing_attachment_files[$attachment['aid']] = $attachment['aid']; }
|
Zeile 450 | Zeile 497 |
---|
// Now send the user to the final page $form = new Form("index.php?module=forum-attachments&action=orphans&step=3", "post", "redirect_form", 0, ""); // Scan complete
|
// Now send the user to the final page $form = new Form("index.php?module=forum-attachments&action=orphans&step=3", "post", "redirect_form", 0, ""); // Scan complete
|
if($mybb->input['bad_attachments'])
| if($mybb->get_input('bad_attachments'))
|
{ echo $form->generate_hidden_field("bad_attachments", $mybb->input['bad_attachments']); }
| { echo $form->generate_hidden_field("bad_attachments", $mybb->input['bad_attachments']); }
|
Zeile 473 | Zeile 520 |
---|
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 484 | Zeile 531 |
---|
{ $plugins->run_hooks("admin_forum_attachments_orphans_step1");
|
{ $plugins->run_hooks("admin_forum_attachments_orphans_step1");
|
| /** * @param string $dir */
|
function scan_attachments_directory($dir="") {
|
function scan_attachments_directory($dir="") {
|
global $db, $mybb, $bad_attachments, $attachments_to_check;
| global $db, $mybb, $bad_attachments, $attachments_to_check, $uploadspath_abs;
|
|
|
$real_dir = MYBB_ROOT.$mybb->settings['uploadspath'];
| $real_dir = $uploadspath_abs;
|
$false_dir = ""; if($dir) {
| $false_dir = ""; if($dir) {
|
Zeile 541 | Zeile 591 |
---|
} closedir($dh); // Any reamining to check?
|
} closedir($dh); // Any reamining to check?
|
if(count($attachments_to_check) > 0)
| if(!empty($attachments_to_check))
|
{ $attachments_to_check = array_map(array($db, "escape_string"), $attachments_to_check); $attachment_names = "'".implode("','", $attachments_to_check)."'";
| { $attachments_to_check = array_map(array($db, "escape_string"), $attachments_to_check); $attachment_names = "'".implode("','", $attachments_to_check)."'";
|
Zeile 593 | Zeile 643 |
---|
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 605 | Zeile 655 |
---|
{ $plugins->run_hooks("admin_forum_attachments_start");
|
{ $plugins->run_hooks("admin_forum_attachments_start");
|
if($mybb->request_method == "post" || $mybb->input['results'] == 1)
| if($mybb->request_method == "post" || $mybb->get_input('results', MyBB::INPUT_INT) == 1)
|
{ $search_sql = '1=1';
|
{ $search_sql = '1=1';
|
| $plugins->run_hooks("admin_forum_attachments_commit_start");
|
// Build the search SQL for users
| // Build the search SQL for users
|
Zeile 615 | Zeile 667 |
---|
$user_like_fields = array("filename", "filetype"); foreach($user_like_fields as $search_field) {
|
$user_like_fields = array("filename", "filetype"); foreach($user_like_fields as $search_field) {
|
if($mybb->input[$search_field])
| if($mybb->get_input($search_field))
|
{ $search_sql .= " AND a.{$search_field} LIKE '%".$db->escape_string_like($mybb->input[$search_field])."%'"; } }
$errors = array();
|
{ $search_sql .= " AND a.{$search_field} LIKE '%".$db->escape_string_like($mybb->input[$search_field])."%'"; } }
$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']) { $errors[] = $lang->error_invalid_username; } else { $search_sql .= " AND a.uid='{$user['uid']}'";
| if(!$user) { 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 { $search_sql .= " AND a.uid='{$user['uid']}'";
|
} }
$forum_cache = cache_forums();
// Searching for attachments in a specific forum, we need to fetch all child forums too
|
} }
$forum_cache = cache_forums();
// Searching for attachments in a specific forum, we need to fetch all child forums too
|
if($mybb->input['forum'])
| if(!empty($mybb->input['forum']))
|
{ if(!is_array($mybb->input['forum'])) {
| { if(!is_array($mybb->input['forum'])) {
|
Zeile 655 | Zeile 733 |
---|
{ $errors[] = $lang->error_invalid_forums; break;
|
{ $errors[] = $lang->error_invalid_forums; break;
|
}
| }
|
$child_forums = get_child_list($fid); $child_forums[] = $fid; $fid_in = array_merge($fid_in, $child_forums);
|
$child_forums = get_child_list($fid); $child_forums[] = $fid; $fid_in = array_merge($fid_in, $child_forums);
|
}
| }
|
if(count($fid_in) > 0) { $search_sql .= " AND p.fid IN (".implode(",", $fid_in).")";
|
if(count($fid_in) > 0) { $search_sql .= " AND p.fid IN (".implode(",", $fid_in).")";
|
} }
| } }
|
// LESS THAN or GREATER THAN $direction_fields = array(
| // LESS THAN or GREATER THAN $direction_fields = array(
|
Zeile 674 | Zeile 752 |
---|
"downloads" => $mybb->get_input('downloads', MyBB::INPUT_INT) );
|
"downloads" => $mybb->get_input('downloads', MyBB::INPUT_INT) );
|
if($mybb->input['dateuploaded'] && $mybb->request_method == "post")
| if(!empty($mybb->input['dateuploaded']) && $mybb->request_method == "post")
|
{ $direction_fields['dateuploaded'] = TIME_NOW-$direction_fields['dateuploaded']*60*60*24; }
|
{ $direction_fields['dateuploaded'] = TIME_NOW-$direction_fields['dateuploaded']*60*60*24; }
|
if($mybb->input['filesize'] && $mybb->request_method == "post")
| if(!empty($mybb->input['filesize']) && $mybb->request_method == "post")
|
{ $direction_fields['filesize'] *= 1024; }
| { $direction_fields['filesize'] *= 1024; }
|
Zeile 686 | Zeile 764 |
---|
foreach($direction_fields as $field_name => $field_content) { $direction_field = $field_name."_dir";
|
foreach($direction_fields as $field_name => $field_content) { $direction_field = $field_name."_dir";
|
if($mybb->input[$field_name] && $mybb->input[$direction_field])
| if(!empty($mybb->input[$field_name]) && !empty($mybb->input[$direction_field]))
|
{ switch($mybb->input[$direction_field]) {
| { switch($mybb->input[$direction_field]) {
|
Zeile 707 | Zeile 785 |
---|
// Lets fetch out how many results we have $query = $db->query(" SELECT COUNT(a.aid) AS num_results
|
// Lets fetch out how many results we have $query = $db->query(" SELECT COUNT(a.aid) AS num_results
|
FROM ".TABLE_PREFIX."attachments a LEFT JOIN ".TABLE_PREFIX."posts p ON (p.pid=a.pid)
| FROM ".TABLE_PREFIX."attachments a LEFT JOIN ".TABLE_PREFIX."posts p ON (p.pid=a.pid)
|
WHERE {$search_sql} "); $num_results = $db->fetch_field($query, "num_results");
| WHERE {$search_sql} "); $num_results = $db->fetch_field($query, "num_results");
|
Zeile 723 | Zeile 801 |
---|
// Now we fetch the results if there were 100% no errors if(!$errors) {
|
// Now we fetch the results if there were 100% no errors if(!$errors) {
|
$mybb->input['perpage'] = $mybb->get_input('perpage', MyBB::INPUT_INT); if(!$mybb->input['perpage']) { $mybb->input['perpage'] = 20; }
| |
$mybb->input['page'] = $mybb->get_input('page', MyBB::INPUT_INT); if($mybb->input['page'])
|
$mybb->input['page'] = $mybb->get_input('page', MyBB::INPUT_INT); if($mybb->input['page'])
|
{ $start = ($mybb->input['page'] - 1) * $mybb->input['perpage'];
| { $start = ($mybb->input['page'] - 1) * $perpage;
|
} else
|
} else
|
{
| {
|
$start = 0; $mybb->input['page'] = 1; }
| $start = 0; $mybb->input['page'] = 1; }
|
Zeile 757 | Zeile 829 |
---|
default: $sort_field = "a.filename"; $mybb->input['sortby'] = "filename";
|
default: $sort_field = "a.filename"; $mybb->input['sortby'] = "filename";
|
}
| }
|
if($mybb->input['order'] != "desc") { $mybb->input['order'] = "asc"; }
|
if($mybb->input['order'] != "desc") { $mybb->input['order'] = "asc"; }
|
| $plugins->run_hooks("admin_forum_attachments_commit");
|
$page->add_breadcrumb_item($lang->results); $page->output_header($lang->index_find_attachments);
$page->output_nav_tabs($sub_tabs, 'find_attachments');
|
$page->add_breadcrumb_item($lang->results); $page->output_header($lang->index_find_attachments);
$page->output_nav_tabs($sub_tabs, 'find_attachments');
|
|
|
$form = new Form("index.php?module=forum-attachments&action=delete", "post");
$table = new Table;
|
$form = new Form("index.php?module=forum-attachments&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 789 | Zeile 863 |
---|
LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=a.uid) WHERE {$search_sql} ORDER BY {$sort_field} {$mybb->input['order']}
|
LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=a.uid) WHERE {$search_sql} ORDER BY {$sort_field} {$mybb->input['order']}
|
LIMIT {$start}, {$mybb->input['perpage']}
| LIMIT {$start}, {$perpage}
|
"); while($attachment = $db->fetch_array($query))
|
"); while($attachment = $db->fetch_array($query))
|
{
| {
|
build_attachment_row($attachment, $table, true); }
// Need to draw pagination for this result set
|
build_attachment_row($attachment, $table, true); }
// Need to draw pagination for this result set
|
if($num_results > $mybb->input['perpage'])
| $pagination = ''; if($num_results > $perpage)
|
{ $pagination_url = "index.php?module=forum-attachments&results=1";
|
{ $pagination_url = "index.php?module=forum-attachments&results=1";
|
$pagination_vars = array('perpage', 'sortby', 'order', 'filename', 'mimetype', 'username', 'fid', 'downloads', 'downloads_dir', 'dateuploaded', 'dateuploaded_dir', 'filesize', 'filesize_dir');
| $pagination_vars = array('perpage', 'sortby', 'order', 'filename', 'mimetype', 'username', 'downloads', 'downloads_dir', 'dateuploaded', 'dateuploaded_dir', 'filesize', 'filesize_dir');
|
foreach($pagination_vars as $var) { if($mybb->input[$var])
|
foreach($pagination_vars as $var) { if($mybb->input[$var])
|
{
| {
|
$pagination_url .= "&{$var}=".urlencode($mybb->input[$var]); } }
|
$pagination_url .= "&{$var}=".urlencode($mybb->input[$var]); } }
|
$pagination = draw_admin_pagination($mybb->input['page'], $mybb->input['perpage'], $num_results, $pagination_url);
| if(!empty($mybb->input['forum']) && is_array($mybb->input['forum'])) { foreach($mybb->input['forum'] as $fid) { $pagination_url .= "&forum[]=".(int)$fid; } } $pagination = draw_admin_pagination($mybb->input['page'], $perpage, $num_results, $pagination_url);
|
}
echo $pagination;
| }
echo $pagination;
|
Zeile 837 | Zeile 919 |
---|
$form = new Form("index.php?module=forum-attachments", "post");
$form_container = new FormContainer($lang->find_where);
|
$form = new Form("index.php?module=forum-attachments", "post");
$form_container = new FormContainer($lang->find_where);
|
$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->name_contains, $lang->name_contains_desc, $form->generate_text_box('filename', $mybb->get_input('filename'), array('id' => 'filename')), 'filename'); $form_container->output_row($lang->type_contains, "", $form->generate_text_box('mimetype', $mybb->get_input('mimetype'), array('id' => 'mimetype')), 'mimetype'); $form_container->output_row($lang->forum_is, "", $form->generate_forum_select('forum[]', $mybb->get_input('forum', MyBB::INPUT_INT), array('multiple' => true, 'size' => 5, 'id' => 'forum')), 'forum'); $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 853 | Zeile 936 |
---|
"less_than" => $lang->less_than );
|
"less_than" => $lang->less_than );
|
$form_container->output_row($lang->date_posted_is, "", $form->generate_select_box('dateuploaded_dir', $more_options, $mybb->input['dateuploaded_dir'], array('id' => 'dateuploaded_dir'))." ".$form->generate_numeric_field('dateuploaded', $mybb->input['dateuploaded'], array('id' => 'dateuploaded', 'min' => 0))." {$lang->days_ago}", 'dateuploaded'); $form_container->output_row($lang->file_size_is, "", $form->generate_select_box('filesize_dir', $greater_options, $mybb->input['filesize_dir'], array('id' => 'filesize_dir'))." ".$form->generate_numeric_field('filesize', $mybb->input['filesize'], array('id' => 'filesize', 'min' => 0))." {$lang->kb}", 'dateuploaded'); $form_container->output_row($lang->download_count_is, "", $form->generate_select_box('downloads_dir', $greater_options, $mybb->input['downloads_dir'], array('id' => 'downloads_dir'))." ".$form->generate_numeric_field('downloads', $mybb->input['downloads'], array('id' => 'downloads', 'min' => 0))."", 'dateuploaded');
| $form_container->output_row($lang->date_posted_is, "", $form->generate_select_box('dateuploaded_dir', $more_options, $mybb->get_input('dateuploaded_dir'), array('id' => 'dateuploaded_dir'))." ".$form->generate_numeric_field('dateuploaded', $mybb->get_input('dateuploaded', MyBB::INPUT_INT), array('id' => 'dateuploaded', 'min' => 0))." {$lang->days_ago}", 'dateuploaded'); $form_container->output_row($lang->file_size_is, "", $form->generate_select_box('filesize_dir', $greater_options, $mybb->get_input('filesize_dir'), array('id' => 'filesize_dir'))." ".$form->generate_numeric_field('filesize', $mybb->get_input('filesize', MyBB::INPUT_INT), array('id' => 'filesize', 'min' => 0))." {$lang->kb}", 'dateuploaded'); $form_container->output_row($lang->download_count_is, "", $form->generate_select_box('downloads_dir', $greater_options, $mybb->get_input('downloads_dir'), array('id' => 'downloads_dir'))." ".$form->generate_numeric_field('downloads', $mybb->get_input('downloads', MyBB::INPUT_INT), array('id' => 'downloads', 'min' => 0))."", 'dateuploaded');
|
$form_container->end();
$form_container = new FormContainer($lang->display_options);
| $form_container->end();
$form_container = new FormContainer($lang->display_options);
|
Zeile 870 | Zeile 953 |
---|
"asc" => $lang->asc, "desc" => $lang->desc );
|
"asc" => $lang->asc, "desc" => $lang->desc );
|
$form_container->output_row($lang->sort_results_by, "", $form->generate_select_box('sortby', $sort_options, $mybb->input['sortby'], array('id' => 'sortby'))." {$lang->in} ".$form->generate_select_box('order', $sort_directions, $mybb->input['order'], array('id' => 'order')), 'sortby'); $form_container->output_row($lang->results_per_page, "", $form->generate_numeric_field('perpage', $mybb->input['perpage'], array('id' => 'perpage', 'min' => 1)), 'perpage');
| $form_container->output_row($lang->sort_results_by, "", $form->generate_select_box('sortby', $sort_options, $mybb->get_input('sortby'), array('id' => 'sortby'))." {$lang->in} ".$form->generate_select_box('order', $sort_directions, $mybb->get_input('order'), array('id' => 'order')), 'sortby'); $form_container->output_row($lang->results_per_page, "", $form->generate_numeric_field('perpage', $perpage, array('id' => 'perpage', 'min' => 1)), 'perpage');
|
$form_container->end();
$buttons[] = $form->generate_submit_button($lang->button_find_attachments);
| $form_container->end();
$buttons[] = $form->generate_submit_button($lang->button_find_attachments);
|
Zeile 881 | Zeile 964 |
---|
$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 // Check if the attachment exists in the file system $checked = false; $title = $cell_class = '';
|
$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 // Check if the attachment exists in the file system $checked = false; $title = $cell_class = '';
|
if(!file_exists(MYBB_ROOT.$mybb->settings['uploadspath']."/{$attachment['attachname']}"))
| if(!file_exists(mk_path_abs($mybb->settings['uploadspath'])."/{$attachment['attachname']}"))
|
{ $cell_class = "bad_attachment"; $title = $lang->error_not_found;
| { $cell_class = "bad_attachment"; $title = $lang->error_not_found;
|
Zeile 932 | Zeile 1020 |
---|
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)
|