summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrion Vibber <brion@pobox.com>2010-11-03 17:05:26 -0700
committerBrion Vibber <brion@pobox.com>2010-11-03 17:05:26 -0700
commit2692b5fc8400d04f25823e5bc00e3d4f98100a3b (patch)
tree1dca60d7902ff9fb5f008e38f3c655f5569cf6d0
parent28e009898f6ce6dd72471a5ae4abbc91e6b00193 (diff)
Fix for ticket #2853: fix for some unknown MIME type error cases by adjusting the PEAR error handling temporarily around MIME_Type_Extension usage.
-rw-r--r--classes/File.php13
-rw-r--r--lib/mediafile.php7
2 files changed, 17 insertions, 3 deletions
diff --git a/classes/File.php b/classes/File.php
index da029e39b..c7c765802 100644
--- a/classes/File.php
+++ b/classes/File.php
@@ -217,12 +217,19 @@ class File extends Memcached_DataObject
static function filename($profile, $basename, $mimetype)
{
require_once 'MIME/Type/Extension.php';
+
+ // We have to temporarily disable auto handling of PEAR errors...
+ PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN);
+
$mte = new MIME_Type_Extension();
- try {
- $ext = $mte->getExtension($mimetype);
- } catch ( Exception $e) {
+ $ext = $mte->getExtension($mimetype);
+ if (PEAR::isError($ext)) {
$ext = strtolower(preg_replace('/\W/', '', $mimetype));
}
+
+ // Restore error handling.
+ PEAR::staticPopErrorHandling();
+
$nickname = $profile->nickname;
$datestamp = strftime('%Y%m%dT%H%M%S', time());
$random = strtolower(common_confirmation_code(32));
diff --git a/lib/mediafile.php b/lib/mediafile.php
index 23338cc0e..aad3575d7 100644
--- a/lib/mediafile.php
+++ b/lib/mediafile.php
@@ -278,6 +278,9 @@ class MediaFile
static function getUploadedFileType($f, $originalFilename=false) {
require_once 'MIME/Type.php';
require_once 'MIME/Type/Extension.php';
+
+ // We have to disable auto handling of PEAR errors
+ PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN);
$mte = new MIME_Type_Extension();
$cmd = &PEAR::getStaticProperty('MIME_Type', 'fileCmd');
@@ -330,6 +333,8 @@ class MediaFile
}
}
if ($supported === true || in_array($filetype, $supported)) {
+ // Restore PEAR error handlers for our DB code...
+ PEAR::staticPopErrorHandling();
return $filetype;
}
$media = MIME_Type::getMedia($filetype);
@@ -344,6 +349,8 @@ class MediaFile
// TRANS: %s is the file type that was denied.
$hint = sprintf(_('"%s" is not a supported file type on this server.'), $filetype);
}
+ // Restore PEAR error handlers for our DB code...
+ PEAR::staticPopErrorHandling();
throw new ClientException($hint);
}