sfBrowserBase::doClick() によるファイルアップロード時に MIME-type を指定できるようにするパッチを送った

sfBrowserBase::doClick() によるファイルアップロード時に MIME-type を指定できるようにするパッチを symfony に送った。いやまあ MIME-type 使うとかないわーって話かもしれないけど、空文字列でハードコーディングして POST するほうがもっとないわーって思ったので、かっとなって作った。

http://trac.symfony-project.org/ticket/5748

Index: lib/util/sfBrowserBase.class.php
===================================================================
--- lib/util/sfBrowserBase.class.php	(リビジョン 14901)
+++ lib/util/sfBrowserBase.class.php	(作業コピー)
@@ -746,7 +746,17 @@
       }
       else if ($nodeName == 'input' && $element->getAttribute('type') == 'file')
       {
-        $filename = array_key_exists($elementName, $arguments) ? $arguments[$elementName] : sfToolkit::getArrayValueForPath($arguments, $elementName, '');
+        $file = array_key_exists($elementName, $arguments) ? $arguments[$elementName] : sfToolkit::getArrayValueForPath($arguments, $elementName, '');
+        if (is_array($file))
+        {
+          $filename = isset($file['name']) ? $file['name'] : '';
+          $filetype = isset($file['type']) ? $file['type'] : '';
+        }
+        else
+        {
+          $filename = $file;
+          $filetype = '';
+        }
 
         if (is_readable($filename))
         {
@@ -761,7 +771,7 @@
 
         unset($arguments[$elementName]);
 
-        $this->parseArgumentAsArray($elementName, array('name' => basename($filename), 'type' => '', 'tmp_name' => $filename, 'error' => $fileError, 'size' => $fileSize), $this->files);
+        $this->parseArgumentAsArray($elementName, array('name' => basename($filename), 'type' => $filetype, 'tmp_name' => $filename, 'error' => $fileError, 'size' => $fileSize), $this->files);
       }
       else if (
         $nodeName == 'input'


さすがにチケット作るの 4 回目、パッチ作るの 3 回目ともなるとお手の物ですねもう。英語力は相変わらずだけど!(てか英語間違ってるの気づいて修正したいけど Description 変更権限与えられていないのね><)