DataObjects/core.sql
[Pman.Core] / SimpleExcel.php
index 92bb0bb..c94c45f 100644 (file)
@@ -100,12 +100,17 @@ class Pman_Core_SimpleExcel extends Pman
              
         }
         $start_row++;
+        $hasRender  = false;
            //     DB_DataObject::debugLevel(1);
-        foreach($data as $r=>$cl) {
+        foreach($data as $r=>$clo) {
+            $cl = $clo;
+            if (is_object($clo)) {
+                $cl = (array)$clo; // lossless converstion..
+            }
             
             if (isset($cfg['row_height'])) {
                 $worksheet->setRow($start_row +$r, $cfg['row_height']);
-               }
+            }
             
             foreach($cfg['cols']  as $c=>$col_cfg) {
                 $v = isset($cl[$col_cfg['dataIndex']]) ? $cl[$col_cfg['dataIndex']] : '';
@@ -114,13 +119,14 @@ class Pman_Core_SimpleExcel extends Pman
                 }
                 if (isset($col_cfg['txtrenderer'])) {
                     $v = call_user_func($col_cfg['txtrenderer'], 
-                            $cl[$col_cfg['dataIndex']], $worksheet, $r+1, $c, $cl);
+                            $cl[$col_cfg['dataIndex']], $worksheet, $r+1, $c, $clo);
                     if ($v === false) {
                         continue;
                     }
                   //  var_dump($v);
                 }
                 if (isset($col_cfg['renderer'])) {
+                    $hasRender = true;
                     continue;
                 }
                 
@@ -131,23 +137,42 @@ class Pman_Core_SimpleExcel extends Pman
                 $worksheet->write($start_row+$r, $c, $v, $format);
             }
         }
-        
-        foreach($data as $r=>$cl) {
-        
-            foreach($cfg['cols']   as $c=>$col_cfg) {
-                $v = isset($cl[$col_cfg['dataIndex']]) ? $cl[$col_cfg['dataIndex']] : '';
-                if (empty($cl[$col_cfg['dataIndex']])) {
-                    continue;
+        /// call user render on any that are defined..
+        if ($hasRender) {
+            foreach($data as $r=>$cl) {
+            
+                foreach($cfg['cols']   as $c=>$col_cfg) {
+                    $v = isset($cl[$col_cfg['dataIndex']]) ? $cl[$col_cfg['dataIndex']] : '';
+                    if (empty($cl[$col_cfg['dataIndex']])) {
+                        continue;
+                    }
+                    if (isset($col_cfg['renderer'])) {
+                        call_user_func($col_cfg['renderer'], $cl[$col_cfg['dataIndex']], $worksheet, $r+1, $c, $cl);
+                        
+                    }
+                  //  echo "<PRE>WRITE: ". htmlspecialchars(print_r(array($r+1, $c, $cl[$col_cfg['dataIndex']]), true));
+             
                 }
-                if (isset($col_cfg['renderer'])) {
-                    call_user_func($col_cfg['renderer'], $cl[$col_cfg['dataIndex']], $worksheet, $r+1, $c, $cl);
+            }
+        }
+        $start_row += count($data);
+        
+        if (!empty($cfg['foot'])) {
+            foreach($cfg['foot'] as $row) { 
+                foreach($row as $c => $col) {
+                    // if it's an array? - formated ???
+                    $worksheet->write($start_row, $c, $col);
                     
                 }
-              //  echo "<PRE>WRITE: ". htmlspecialchars(print_r(array($r+1, $c, $cl[$col_cfg['dataIndex']]), true));
-         
+                $start_row++;
             }
+            // add a spacer..
+            $start_row++;
         }
-           $workbook->close();
+            
+        
+        
+        $workbook->close();
         $this->outfile2 = $outfile2;
          
     }