Pman.Gnumeric.js
[Pman.Core] / GnumericToExcel.php
index afe83bb..bcf1a63 100644 (file)
@@ -28,6 +28,10 @@ class Pman_Core_GnumericToExcel extends Pman
         return true;
     }
 
+    function get($v, $opts=array())
+    {
+        
+    }
     function post($fname) {
         
           $ml = (int) ini_get('suhosin.post.max_value_length');
@@ -44,9 +48,9 @@ class Pman_Core_GnumericToExcel extends Pman
         
         $xml = iconv("UTF-8", "UTF-8//IGNORE",  $xml);
         
-        //$xml = str_replace('é', 'e', $xml);
+        //$xml = str_replace('', 'e', $xml);
         //$xml = str_replace("\xA0", ' ', $xml);
-        //$xml = str_replace("Ø", 'dia.',$xml);
+        //$xml = str_replace("", 'dia.',$xml);
         
         //$this->addEvent("DOWNLOAD", false, isset($_REQUEST['title']) ? $_REQUEST['title'] : '???');
         
@@ -81,17 +85,27 @@ class Pman_Core_GnumericToExcel extends Pman
         clearstatcache(); 
         
         if (!file_exists($targetTmp) || !filesize($targetTmp)) {
-            header("HTTP/1.0 400 Internal Server Error");
+            header("HTTP/1.0 400 Internal Server Error - Convert error");
             die("ERROR CONVERTING?:" . $cmd ."\n<BR><BR> OUTPUT:". htmlspecialchars($out));
         }
-        unlink($srcTmp);
-        
-        $fh = fopen($targetTmp, 'r');
+       // unlink($srcTmp);
+        if (empty($fname)) {
+           $fname = basename($targetTmp);
+        }
+        $fname .= preg_match('/\.xls/i', $fname) ? '' :  '.xls'; // make sure it ends in xls..
+       
         header('Content-type: application/vnd.ms-excel');
         header('Content-Disposition: attachment; filename="' .addslashes($fname). '"');
-         
-        // will not work on IE... - needs while/fget..
-        fpassthru($fh);
+        header('Content-length: '. filesize($targetTmp));   
+        header("Content-Transfer-Encoding: binary");
+        if ($file = fopen($targetTmp, 'rb')) {
+            while(!feof($file) and (connection_status()==0)) {
+                print(fread($file, 1024*8));
+                flush();
+            }
+            fclose($file);
+        }
+       
         unlink($targetTmp);
         exit;