X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Fmediafile.php;h=803cbe0a4cd6cece1f9d1e83540138d8912ab2b8;hb=489099ca917d74ee2bdc406cb26f9e3269ade625;hp=be97b1cc17ea8c6241e00679e6fd2ddeec102a72;hpb=1db02d7f367f47703d53f0d730a49f397305961e;p=quix0rs-gnu-social.git diff --git a/lib/mediafile.php b/lib/mediafile.php index be97b1cc17..803cbe0a4c 100644 --- a/lib/mediafile.php +++ b/lib/mediafile.php @@ -34,8 +34,6 @@ if (!defined('GNUSOCIAL')) { exit(1); } class MediaFile { - protected $scoped = null; - var $filename = null; var $fileRecord = null; var $fileurl = null; @@ -236,7 +234,20 @@ class MediaFile try { $file = File::getByHash($filehash); // If no exception is thrown the file exists locally, so we'll use that and just add redirections. - $filename = $file->filename; + // but if the _actual_ locally stored file doesn't exist, getPath will throw FileNotFoundException + $filename = basename($file->getPath()); + $mimetype = $file->mimetype; + + } catch (FileNotFoundException $e) { + // The file does not exist in our local filesystem, so store this upload. + + if (!move_uploaded_file($_FILES[$param]['tmp_name'], $e->path)) { + // TRANS: Client exception thrown when a file upload operation fails because the file could + // TRANS: not be moved from the temporary folder to the permanent file location. + throw new ClientException(_('File could not be moved to destination directory.')); + } + + $filename = basename($file->getPath()); $mimetype = $file->mimetype; } catch (NoResultException $e) { @@ -344,6 +355,7 @@ class MediaFile $unclearTypes = array('application/octet-stream', 'application/vnd.ms-office', 'application/zip', + 'text/plain', 'text/html', // Ironically, Wikimedia Commons' SVG_logo.svg is identified as text/html // TODO: for XML we could do better content-based sniffing too 'text/xml'); @@ -353,10 +365,12 @@ class MediaFile // If we didn't match, or it is an unclear match if ($originalFilename && (!$mimetype || in_array($mimetype, $unclearTypes))) { try { - $type = common_supported_ext_to_mime($originalFilename); + $type = common_supported_filename_to_mime($originalFilename); return $type; + } catch (UnknownExtensionMimeException $e) { + // FIXME: I think we should keep the file extension here (supported should be === true here) } catch (Exception $e) { - // Extension not found, so $mimetype is our best guess + // Extension parsed but no connected mimetype, so $mimetype is our best guess } }