diff options
Diffstat (limited to 'mod/file')
33 files changed, 67 insertions, 15 deletions
| diff --git a/mod/file/actions/file/upload.php b/mod/file/actions/file/upload.php index 3edc87952..d72d04eb7 100644 --- a/mod/file/actions/file/upload.php +++ b/mod/file/actions/file/upload.php @@ -94,8 +94,31 @@ if (isset($_FILES['upload']['name']) && !empty($_FILES['upload']['name'])) {  		$filestorename = elgg_strtolower(time().$_FILES['upload']['name']);  	} -	$mime_type = $file->detectMimeType($_FILES['upload']['tmp_name'], $_FILES['upload']['type']);  	$file->setFilename($prefix . $filestorename); +	$mime_type = ElggFile::detectMimeType($_FILES['upload']['tmp_name'], $_FILES['upload']['type']); + +	// hack for Microsoft zipped formats +	$info = pathinfo($_FILES['upload']['name']); +	$office_formats = array('docx', 'xlsx', 'pptx'); +	if ($mime_type == "application/zip" && in_array($info['extension'], $office_formats)) { +		switch ($info['extension']) { +			case 'docx': +				$mime_type = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; +				break; +			case 'xlsx': +				$mime_type = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; +				break; +			case 'pptx': +				$mime_type = "application/vnd.openxmlformats-officedocument.presentationml.presentation"; +				break; +		} +	} + +	// check for bad ppt detection +	if ($mime_type == "application/vnd.ms-office" && $info['extension'] == "ppt") { +		$mime_type = "application/vnd.ms-powerpoint"; +	} +  	$file->setMimeType($mime_type);  	$file->originalfilename = $_FILES['upload']['name'];  	$file->simpletype = file_get_simple_type($mime_type); @@ -109,7 +132,9 @@ if (isset($_FILES['upload']['name']) && !empty($_FILES['upload']['name'])) {  	// if image, we need to create thumbnails (this should be moved into a function)  	if ($guid && $file->simpletype == "image") { -		$thumbnail = get_resized_image_from_existing_file($file->getFilenameOnFilestore(),60,60, true); +		$file->icontime = time(); +		 +		$thumbnail = get_resized_image_from_existing_file($file->getFilenameOnFilestore(), 60, 60, true);  		if ($thumbnail) {  			$thumb = new ElggFile();  			$thumb->setMimeType($_FILES['upload']['type']); @@ -123,7 +148,7 @@ if (isset($_FILES['upload']['name']) && !empty($_FILES['upload']['name'])) {  			unset($thumbnail);  		} -		$thumbsmall = get_resized_image_from_existing_file($file->getFilenameOnFilestore(),153,153, true); +		$thumbsmall = get_resized_image_from_existing_file($file->getFilenameOnFilestore(), 153, 153, true);  		if ($thumbsmall) {  			$thumb->setFilename($prefix."smallthumb".$filestorename);  			$thumb->open("write"); @@ -133,7 +158,7 @@ if (isset($_FILES['upload']['name']) && !empty($_FILES['upload']['name'])) {  			unset($thumbsmall);  		} -		$thumblarge = get_resized_image_from_existing_file($file->getFilenameOnFilestore(),600,600, false); +		$thumblarge = get_resized_image_from_existing_file($file->getFilenameOnFilestore(), 600, 600, false);  		if ($thumblarge) {  			$thumb->setFilename($prefix."largethumb".$filestorename);  			$thumb->open("write"); diff --git a/mod/file/graphics/icons/application.gif b/mod/file/graphics/icons/application.gifBinary files differ index f78903c0a..bfba76a97 100644 --- a/mod/file/graphics/icons/application.gif +++ b/mod/file/graphics/icons/application.gif diff --git a/mod/file/graphics/icons/application_lrg.gif b/mod/file/graphics/icons/application_lrg.gifBinary files differ index c6955f749..65f8eadb4 100644 --- a/mod/file/graphics/icons/application_lrg.gif +++ b/mod/file/graphics/icons/application_lrg.gif diff --git a/mod/file/graphics/icons/archive.gif b/mod/file/graphics/icons/archive.gifBinary files differ index 044cd042a..2213cdadd 100644 --- a/mod/file/graphics/icons/archive.gif +++ b/mod/file/graphics/icons/archive.gif diff --git a/mod/file/graphics/icons/archive_lrg.gif b/mod/file/graphics/icons/archive_lrg.gifBinary files differ index 0d0856cdd..6e3df3fd4 100644 --- a/mod/file/graphics/icons/archive_lrg.gif +++ b/mod/file/graphics/icons/archive_lrg.gif diff --git a/mod/file/graphics/icons/excel.gif b/mod/file/graphics/icons/excel.gifBinary files differ index f74f74fd7..ecd1d57d2 100644 --- a/mod/file/graphics/icons/excel.gif +++ b/mod/file/graphics/icons/excel.gif diff --git a/mod/file/graphics/icons/excel_lrg.gif b/mod/file/graphics/icons/excel_lrg.gifBinary files differ index 9b53d6dc7..84d1375d5 100644 --- a/mod/file/graphics/icons/excel_lrg.gif +++ b/mod/file/graphics/icons/excel_lrg.gif diff --git a/mod/file/graphics/icons/general.gif b/mod/file/graphics/icons/general.gifBinary files differ index cd5cf467a..20958b9a4 100644 --- a/mod/file/graphics/icons/general.gif +++ b/mod/file/graphics/icons/general.gif diff --git a/mod/file/graphics/icons/general_lrg.gif b/mod/file/graphics/icons/general_lrg.gifBinary files differ index 7c7a3c80a..3458915e5 100644 --- a/mod/file/graphics/icons/general_lrg.gif +++ b/mod/file/graphics/icons/general_lrg.gif diff --git a/mod/file/graphics/icons/music.gif b/mod/file/graphics/icons/music.gifBinary files differ index c44d7c987..5e9df08bc 100644 --- a/mod/file/graphics/icons/music.gif +++ b/mod/file/graphics/icons/music.gif diff --git a/mod/file/graphics/icons/music_lrg.gif b/mod/file/graphics/icons/music_lrg.gifBinary files differ index 780a252d6..1c0792cc3 100644 --- a/mod/file/graphics/icons/music_lrg.gif +++ b/mod/file/graphics/icons/music_lrg.gif diff --git a/mod/file/graphics/icons/openoffice.gif b/mod/file/graphics/icons/openoffice.gifBinary files differ index 3cfdc7196..053ad5bb5 100644 --- a/mod/file/graphics/icons/openoffice.gif +++ b/mod/file/graphics/icons/openoffice.gif diff --git a/mod/file/graphics/icons/openoffice_lrg.gif b/mod/file/graphics/icons/openoffice_lrg.gifBinary files differ index 5cdb13353..da28607fa 100644 --- a/mod/file/graphics/icons/openoffice_lrg.gif +++ b/mod/file/graphics/icons/openoffice_lrg.gif diff --git a/mod/file/graphics/icons/pages.gif b/mod/file/graphics/icons/pages.gifBinary files differ index 2e4ee761a..7efcb7278 100644 --- a/mod/file/graphics/icons/pages.gif +++ b/mod/file/graphics/icons/pages.gif diff --git a/mod/file/graphics/icons/pages_lrg.gif b/mod/file/graphics/icons/pages_lrg.gifBinary files differ index 2e41e4739..234a52672 100644 --- a/mod/file/graphics/icons/pages_lrg.gif +++ b/mod/file/graphics/icons/pages_lrg.gif diff --git a/mod/file/graphics/icons/pdf.gif b/mod/file/graphics/icons/pdf.gifBinary files differ index e7854b1e0..94362a4f0 100644 --- a/mod/file/graphics/icons/pdf.gif +++ b/mod/file/graphics/icons/pdf.gif diff --git a/mod/file/graphics/icons/pdf_lrg.gif b/mod/file/graphics/icons/pdf_lrg.gifBinary files differ index 5cd62b69c..aff869d04 100644 --- a/mod/file/graphics/icons/pdf_lrg.gif +++ b/mod/file/graphics/icons/pdf_lrg.gif diff --git a/mod/file/graphics/icons/ppt.gif b/mod/file/graphics/icons/ppt.gifBinary files differ index 44aef679b..88ab26d5c 100644 --- a/mod/file/graphics/icons/ppt.gif +++ b/mod/file/graphics/icons/ppt.gif diff --git a/mod/file/graphics/icons/ppt_lrg.gif b/mod/file/graphics/icons/ppt_lrg.gifBinary files differ index 71965711d..075590fd8 100644 --- a/mod/file/graphics/icons/ppt_lrg.gif +++ b/mod/file/graphics/icons/ppt_lrg.gif diff --git a/mod/file/graphics/icons/text.gif b/mod/file/graphics/icons/text.gifBinary files differ index 107e7ca37..897aa77f9 100644 --- a/mod/file/graphics/icons/text.gif +++ b/mod/file/graphics/icons/text.gif diff --git a/mod/file/graphics/icons/text_lrg.gif b/mod/file/graphics/icons/text_lrg.gifBinary files differ index 5f7c95519..d42ea4de1 100644 --- a/mod/file/graphics/icons/text_lrg.gif +++ b/mod/file/graphics/icons/text_lrg.gif diff --git a/mod/file/graphics/icons/vcard.gif b/mod/file/graphics/icons/vcard.gifBinary files differ index f7fdda9c0..202df68dd 100644 --- a/mod/file/graphics/icons/vcard.gif +++ b/mod/file/graphics/icons/vcard.gif diff --git a/mod/file/graphics/icons/vcard_lrg.gif b/mod/file/graphics/icons/vcard_lrg.gifBinary files differ index 6cd4c45e0..68ced88d2 100644 --- a/mod/file/graphics/icons/vcard_lrg.gif +++ b/mod/file/graphics/icons/vcard_lrg.gif diff --git a/mod/file/graphics/icons/video.gif b/mod/file/graphics/icons/video.gifBinary files differ index 09abfad3b..56aca7589 100644 --- a/mod/file/graphics/icons/video.gif +++ b/mod/file/graphics/icons/video.gif diff --git a/mod/file/graphics/icons/video_lrg.gif b/mod/file/graphics/icons/video_lrg.gifBinary files differ index b23dbad91..69cc706d9 100644 --- a/mod/file/graphics/icons/video_lrg.gif +++ b/mod/file/graphics/icons/video_lrg.gif diff --git a/mod/file/graphics/icons/word.gif b/mod/file/graphics/icons/word.gifBinary files differ index f906c75bd..6f7dff340 100644 --- a/mod/file/graphics/icons/word.gif +++ b/mod/file/graphics/icons/word.gif diff --git a/mod/file/graphics/icons/word_lrg.gif b/mod/file/graphics/icons/word_lrg.gifBinary files differ index 018c8e334..4c39108de 100644 --- a/mod/file/graphics/icons/word_lrg.gif +++ b/mod/file/graphics/icons/word_lrg.gif diff --git a/mod/file/languages/en.php b/mod/file/languages/en.php index 278076927..b3344cb43 100644 --- a/mod/file/languages/en.php +++ b/mod/file/languages/en.php @@ -22,7 +22,6 @@ $english = array(  	'file:gallery_list' => "Gallery or list view",  	'file:num_files' => "Number of files to display",  	'file:user:gallery'=>'View %s gallery', -	'file:via' => 'via files',  	'file:upload' => "Upload a file",  	'file:replace' => 'Replace file content (leave blank to not change file)',  	'file:list:title' => "%s's %s %s", @@ -79,6 +78,15 @@ $english = array(  	'item:object:file' => 'Files',  	'file:newupload' => 'A new file has been uploaded', +	'file:notification' => +'%s uploaded a new file: + +%s +%s + +View and comment on the new file: +%s +',  	/**  	 * Embed media diff --git a/mod/file/pages/file/download.php b/mod/file/pages/file/download.php index 00e6d500e..76c1f1272 100644 --- a/mod/file/pages/file/download.php +++ b/mod/file/pages/file/download.php @@ -26,7 +26,7 @@ $filename = $file->originalfilename;  header("Pragma: public");  header("Content-type: $mime"); -if (strpos($mime, "image/") !== false) { +if (strpos($mime, "image/") !== false || $mime == "application/pdf") {  	header("Content-Disposition: inline; filename=\"$filename\"");  } else {  	header("Content-Disposition: attachment; filename=\"$filename\""); diff --git a/mod/file/pages/file/view.php b/mod/file/pages/file/view.php index a571c9d68..ec51b30e6 100644 --- a/mod/file/pages/file/view.php +++ b/mod/file/pages/file/view.php @@ -6,6 +6,10 @@   */  $file = get_entity(get_input('guid')); +if (!$file) { +	register_error(elgg_echo('noaccess')); +	forward(''); +}  $owner = elgg_get_page_owner_entity(); diff --git a/mod/file/start.php b/mod/file/start.php index e15a9ad61..172042332 100644 --- a/mod/file/start.php +++ b/mod/file/start.php @@ -122,6 +122,7 @@ function file_page_handler($page) {  			include "$file_dir/friends.php";  			break;  		case 'view': +		case 'read': // Elgg 1.7 compatibility  			set_input('guid', $page[1]);  			include "$file_dir/view.php";  			break; @@ -199,9 +200,13 @@ function file_notify_message($hook, $entity_type, $returnvalue, $params) {  	if (($entity instanceof ElggEntity) && ($entity->getSubtype() == 'file')) {  		$descr = $entity->description;  		$title = $entity->title; -		$url = elgg_get_site_url() . "view/" . $entity->guid;  		$owner = $entity->getOwnerEntity(); -		return $owner->name . ' ' . elgg_echo("file:via") . ': ' . $entity->title . "\n\n" . $descr . "\n\n" . $entity->getURL(); +		return elgg_echo('file:notification', array( +			$owner->name, +			$title, +			$descr, +			$entity->getURL() +		));  	}  	return null;  } @@ -235,11 +240,15 @@ function file_get_simple_type($mimetype) {  	switch ($mimetype) {  		case "application/msword": +		case "application/vnd.openxmlformats-officedocument.wordprocessingml.document":  			return "document";  			break;  		case "application/pdf":  			return "document";  			break; +		case "application/ogg": +			return "audio"; +			break;  	}  	if (substr_count($mimetype, 'text/')) { @@ -345,17 +354,22 @@ function file_icon_url_override($hook, $type, $returnvalue, $params) {  		// thumbnails get first priority  		if ($file->thumbnail) { -			return "mod/file/thumbnail.php?file_guid=$file->guid&size=$size"; +			$ts = (int)$file->icontime; +			return "mod/file/thumbnail.php?file_guid=$file->guid&size=$size&icontime=$ts";  		}  		$mapping = array(  			'application/excel' => 'excel',  			'application/msword' => 'word', +			'application/ogg' => 'music',  			'application/pdf' => 'pdf',  			'application/powerpoint' => 'ppt',  			'application/vnd.ms-excel' => 'excel',  			'application/vnd.ms-powerpoint' => 'ppt',  			'application/vnd.oasis.opendocument.text' => 'openoffice', +			'application/vnd.openxmlformats-officedocument.wordprocessingml.document' => 'word', +			'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' => 'excel', +			'application/vnd.openxmlformats-officedocument.presentationml.presentation' => 'ppt',  			'application/x-gzip' => 'archive',  			'application/x-rar-compressed' => 'archive',  			'application/x-stuffit' => 'archive', diff --git a/mod/file/views/default/file/specialcontent/image/default.php b/mod/file/views/default/file/specialcontent/image/default.php index fbd994a0b..431ac9f4f 100644 --- a/mod/file/views/default/file/specialcontent/image/default.php +++ b/mod/file/views/default/file/specialcontent/image/default.php @@ -1,13 +1,17 @@  <?php  /**   * Display an image + * + * @uses $vars['entity']   */ -$image_url = elgg_get_site_url() . "mod/file/thumbnail.php?file_guid={$vars['entity']->getGUID()}&size=large"; +$file = $vars['entity']; + +$image_url = $file->getIconURL('large');  $image_url = elgg_format_url($image_url); -$download_url = elgg_get_site_url() . "mod/file/download.php?file_guid={$vars['entity']->getGUID()}"; +$download_url = elgg_get_site_url() . "file/download/{$file->getGUID()}"; -if ($vars['full_view'] && $smallthumb = $vars['entity']->smallthumb) { +if ($vars['full_view']) {  	echo <<<HTML  		<div class="file-photo">  			<a href="$download_url"><img class="elgg-photo" src="$image_url" /></a> diff --git a/mod/file/views/default/object/file.php b/mod/file/views/default/object/file.php index 1db9863c9..b3f530183 100644 --- a/mod/file/views/default/object/file.php +++ b/mod/file/views/default/object/file.php @@ -28,7 +28,6 @@ $author_text = elgg_echo('byline', array($owner_link));  $file_icon = elgg_view_entity_icon($file, 'small'); -$tags = elgg_view('output/tags', array('tags' => $file->tags));  $date = elgg_view_friendly_time($file->time_created);  $comments_count = $file->countComments(); @@ -71,7 +70,6 @@ if ($full && !elgg_in_context('gallery')) {  		'entity' => $file,  		'metadata' => $metadata,  		'subtitle' => $subtitle, -		'tags' => $tags,  	);  	$params = $params + $vars;  	$summary = elgg_view('object/elements/summary', $params); @@ -100,7 +98,6 @@ if ($full && !elgg_in_context('gallery')) {  		'entity' => $file,  		'metadata' => $metadata,  		'subtitle' => $subtitle, -		'tags' => $tags,  		'content' => $excerpt,  	);  	$params = $params + $vars; | 
