소스 검색

[ZF-6408, ZF-6819, ZF-6851] Zend_File_Transfer:

 - allow to use Rename filter without set target
 - allow to use Rename filter only with filename set by using path from http adapter

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@16009 44c647ce-9c0f-0410-b52a-842ac1e357ba
thomas 16 년 전
부모
커밋
f985c6a8f5
2개의 변경된 파일18개의 추가작업 그리고 2개의 파일을 삭제
  1. 10 2
      library/Zend/File/Transfer/Adapter/Http.php
  2. 8 0
      tests/Zend/File/Transfer/Adapter/HttpTest.php

+ 10 - 2
library/Zend/File/Transfer/Adapter/Http.php

@@ -160,8 +160,16 @@ class Zend_File_Transfer_Adapter_Http extends Zend_File_Transfer_Adapter_Abstrac
                 $filename = $directory . $content['name'];
                 $rename   = $this->getFilter('Rename');
                 if ($rename !== null) {
-                    $filename = $rename->getNewName($content['tmp_name']);
-                    $key      = array_search(get_class($rename), $this->_files[$file]['filters']);
+                    $tmp = $rename->getNewName($content['tmp_name']);
+                    if ($tmp != $content['tmp_name']) {
+                        $filename = $tmp;
+                    }
+
+                    if (dirname($filename) == '.') {
+                        $filename = $directory . $filename;
+                    }
+
+                    $key = array_search(get_class($rename), $this->_files[$file]['filters']);
                     unset($this->_files[$file]['filters'][$key]);
                 }
 

+ 8 - 0
tests/Zend/File/Transfer/Adapter/HttpTest.php

@@ -140,6 +140,14 @@ class Zend_File_Transfer_Adapter_HttpTest extends PHPUnit_Framework_TestCase
         $this->assertTrue($this->adapter->receive());
     }
 
+    public function testReceiveWithRenameFilterButWithoutDirectory()
+    {
+        $this->adapter->setDestination(dirname(__FILE__));
+        $this->adapter->addFilter('Rename', array('overwrite' => false));
+        $this->adapter->setOptions(array('ignoreNoFile' => true));
+        $this->assertTrue($this->adapter->receive());
+    }
+
     public function testMultiFiles()
     {
         $_FILES = array(