diff -r 4629ad98ee88 -r 9cdfe82c56cd includes/namespaces/file.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/includes/namespaces/file.php Sat Jan 03 18:11:18 2009 -0500 @@ -0,0 +1,176 @@ +add_before_footer($this->show_info()); + $output->add_before_footer($this->display_categories()); + + if ( $this->exists ) + { + $this->send_from_db(); + } + else + { + $output->header(); + $this->error_404(); + $output->footer(); + } + } + + function show_info() + { + global $db, $session, $paths, $template, $plugins; // Common objects + global $lang; + + $local_page_id = $this->page_id; + $local_namespace = $this->namespace; + $html = ''; + + // Prevent unnecessary work + if ( $local_namespace != 'File' ) + return null; + + $selfn = $local_page_id; + if ( substr($paths->cpage['name'], 0, strlen($paths->nslist['File'])) == $paths->nslist['File']) + { + $selfn = substr($local_page_id, strlen($paths->nslist['File']), strlen($local_page_id)); + } + $selfn = $db->escape($selfn); + $q = $db->sql_query('SELECT f.mimetype,f.time_id,f.size,l.log_id FROM ' . table_prefix . "files AS f\n" + . " LEFT JOIN " . table_prefix . "logs AS l\n" + . " ON ( l.time_id = f.time_id AND ( l.action = 'reupload' OR l.action IS NULL ) )\n" + . " WHERE f.page_id = '$selfn'\n" + . " ORDER BY f.time_id DESC;"); + if ( !$q ) + { + $db->_die('The file type could not be fetched.'); + } + + if ( $db->numrows() < 1 ) + { + $html .= '
+

' . $lang->get('onpage_filebox_heading') . '

+

' . $lang->get('onpage_filebox_msg_not_found', array('upload_link' => makeUrlNS('Special', 'UploadFile/'.$local_page_id))) . '

+
+
'; + return $html; + } + $r = $db->fetchrow(); + $mimetype = $r['mimetype']; + $datestring = enano_date('F d, Y h:i a', (int)$r['time_id']); + $html .= '
+

' . $lang->get('onpage_filebox_heading') . '

+

' . $lang->get('onpage_filebox_lbl_type') . ' '.$r['mimetype'].'
'; + + $size = $r['size'] . ' ' . $lang->get('etc_unit_bytes'); + if ( $r['size'] >= 1048576 ) + { + $size .= ' (' . ( round($r['size'] / 1048576, 1) ) . ' ' . $lang->get('etc_unit_megabytes_short') . ')'; + } + else if ( $r['size'] >= 1024 ) + { + $size .= ' (' . ( round($r['size'] / 1024, 1) ) . ' ' . $lang->get('etc_unit_kilobytes_short') . ')'; + } + + $html .= $lang->get('onpage_filebox_lbl_size', array('size' => $size)); + + $html .= '
' . $lang->get('onpage_filebox_lbl_uploaded') . ' ' . $datestring . '

'; + if ( substr($mimetype, 0, 6) != 'image/' && ( substr($mimetype, 0, 5) != 'text/' || $mimetype == 'text/html' || $mimetype == 'text/javascript' ) ) + { + $html .= '
+ ' . $lang->get('onpage_filebox_msg_virus_warning') . ' +
'; + } + if ( substr($mimetype, 0, 6) == 'image/' ) + { + $html .= '

+ + '.$paths->page.' + +

'; + } + $html .= '

+ + ' . $lang->get('onpage_filebox_btn_download') . ' + '; + if(!$paths->page_protected && ( $paths->wiki_mode || $session->get_permissions('upload_new_version') )) + { + $html .= ' | + ' . $lang->get('onpage_filebox_btn_upload_new') . ' + '; + } + $html .= '

'; + if ( $db->numrows() > 1 ) + { + // requery, sql_result_seek() doesn't work on postgres + $db->free_result(); + $q = $db->sql_query('SELECT f.mimetype,f.time_id,f.size,l.log_id FROM ' . table_prefix . "files AS f\n" + . " LEFT JOIN " . table_prefix . "logs AS l\n" + . " ON ( l.time_id = f.time_id AND ( l.action = 'reupload' OR l.action IS NULL ) )\n" + . " WHERE f.page_id = '$selfn'\n" + . " ORDER BY f.time_id DESC;"); + if ( !$q ) + $db->_die(); + + $html .= '

' . $lang->get('onpage_filebox_heading_history') . '

'; + $last_rollback_id = false; + while ( $r = $db->fetchrow() ) + { + $html .= '(' . $lang->get('onpage_filebox_btn_this_version') . ') '; + if ( $session->get_permissions('history_rollback') && $last_rollback_id ) + $html .= ' (' . $lang->get('onpage_filebox_btn_revert') . ') '; + else if ( $session->get_permissions('history_rollback') && !$last_rollback_id ) + $html .= ' (' . $lang->get('onpage_filebox_btn_current') . ') '; + $last_rollback_id = $r['log_id']; + $mimetype = $r['mimetype']; + $datestring = enano_date('F d, Y h:i a', (int)$r['time_id']); + + $html .= $datestring.': '.$r['mimetype'].', '; + + $fs = $r['size']; + $fs = (int)$fs; + + if($fs >= 1048576) + { + $fs = round($fs / 1048576, 1); + $size = $fs . ' ' . $lang->get('etc_unit_megabytes_short'); + } + else + if ( $fs >= 1024 ) + { + $fs = round($fs / 1024, 1); + $size = $fs . ' ' . $lang->get('etc_unit_kilobytes_short'); + } + else + { + $size = $fs . ' ' . $lang->get('etc_unit_bytes'); + } + + $html .= $size; + + $html .= '
'; + } + $html .= '

'; + } + $db->free_result(); + $html .= '

'; + return $html; + } +} +