follow-up r61355 a bit more, still have several bits to fix (e.g. json handling)
authorMark A. Hershberger <mah@users.mediawiki.org>
Tue, 9 Feb 2010 09:41:15 +0000 (09:41 +0000)
committerMark A. Hershberger <mah@users.mediawiki.org>
Tue, 9 Feb 2010 09:41:15 +0000 (09:41 +0000)
includes/upload/UploadFromChunks.php
maintenance/tests/UploadFromChunksTest.php

index 713ba13..d235710 100644 (file)
@@ -40,6 +40,8 @@ class UploadFromChunks extends UploadBase {
        public function initialize( $done, $filename, $sessionKey, $path,
                $fileSize, $sessionData )
        {
+               $this->status = new Status;
+
                $this->initFromSessionKey( $sessionKey, $sessionData );
 
                if ( !$this->sessionKey && !$done ) {
@@ -127,7 +129,6 @@ class UploadFromChunks extends UploadBase {
                        // b) should only happen over POST
                        // c) we need the token to validate chunks are coming from a non-xss request
                        $token = urlencode( $wgUser->editToken() );
-                       ob_clean();
                        echo FormatJson::encode( array(
                                'uploadUrl' => wfExpandUrl( wfScript( 'api' ) ) . "?action=upload&" .
                                "token={$token}&format=json&enablechunks=true&chunksessionkey=" .
@@ -141,7 +142,6 @@ class UploadFromChunks extends UploadBase {
                        // return success:
                        // firefogg expects a specific result
                        // http://www.firefogg.org/dev/chunk_post.html
-                       ob_clean();
                        echo FormatJson::encode(
                                array( 'result' => 1, 'filesize' => $this->fileSize )
                        );
@@ -164,7 +164,6 @@ class UploadFromChunks extends UploadBase {
 
                        // firefogg expects a specific result
                        // http://www.firefogg.org/dev/chunk_post.html
-                       ob_clean();
                        echo FormatJson::encode( array(
                                'result' => 1,
                                'done' => 1,
@@ -172,6 +171,8 @@ class UploadFromChunks extends UploadBase {
                        );
                        $wgOut->disable();
                }
+
+               return Status::newGood();
        }
 
        /**
@@ -215,7 +216,7 @@ class UploadFromChunks extends UploadBase {
 
        public function verifyUpload() {
                if ( $this->chunkMode != self::DONE ) {
-                       return Status::newGood();
+                       return array('status' => UploadBase::OK);
                }
                return parent::verifyUpload();
        }
index 09a212a..2b8a293 100644 (file)
@@ -11,6 +11,17 @@ class UploadFromChunksTest extends ApiSetup {
                ini_set('file_loads', true);
        }
 
+       function testGetTitle() {
+               $filename = tempnam( wfTempDir(), "" );
+               $c = new UploadFromChunks();
+               $c->initialize(false, "temp.txt", null, $filename, 0, null);
+               $this->assertEquals(null, $c->getTitle());
+
+               $c = new UploadFromChunks();
+               $c->initialize(false, "temp.png", null, $filename, 0, null);
+               $this->assertEquals(Title::makeTitleSafe(NS_FILE, "Temp.png"), $c->getTitle());
+       }
+
        function testGetEditToken() {
        }
 
@@ -58,7 +69,7 @@ class UploadFromChunksTest extends ApiSetup {
                $req = new FauxRequest(
                        array('action' => 'upload',
                                  'enablechunks' => '1',
-                                 'filename' => 'test.txt',
+                                 'filename' => 'test.png',
                                  'token' => $token,
                        ));
                $module = new ApiMain($req, true);
@@ -75,7 +86,7 @@ class UploadFromChunksTest extends ApiSetup {
                $req = new FauxRequest(
                        array('action' => 'upload',
                                  'enablechunks' => '1',
-                                 'filename' => 'test.txt',
+                                 'filename' => 'test.png',
                                  'token' => $token,
                        ));
                $module = new ApiMain($req, true);