phpgroupware-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Phpgroupware-cvs] [20960] New feature: Generic support for jasper repor


From: Sigurd Nes
Subject: [Phpgroupware-cvs] [20960] New feature: Generic support for jasper report
Date: Wed, 13 Jan 2010 19:17:03 +0000

Revision: 20960
          
http://svn.sv.gnu.org/viewvc/?view=rev&root=phpgroupware&revision=20960
Author:   sigurdne
Date:     2010-01-13 19:17:03 +0000 (Wed, 13 Jan 2010)
Log Message:
-----------
New feature: Generic support for jasper report

Modified Paths:
--------------
    people/sigurdne/modules/property/trunk/inc/class.bofiles.inc.php

Modified: people/sigurdne/modules/property/trunk/inc/class.bofiles.inc.php
===================================================================
--- people/sigurdne/modules/property/trunk/inc/class.bofiles.inc.php    
2010-01-13 19:15:51 UTC (rev 20959)
+++ people/sigurdne/modules/property/trunk/inc/class.bofiles.inc.php    
2010-01-13 19:17:03 UTC (rev 20960)
@@ -8,7 +8,7 @@
         * @package phpgroupware
         * @subpackage property
         * @category core
-        * @version $Id: class.bofiles.inc.php 4058 2009-11-06 14:50:54Z sigurd 
$
+        * @version $Id: class.bofiles.inc.php 4490 2010-01-13 14:49:18Z sigurd 
$
         */
 
        /*
@@ -224,8 +224,6 @@
                                                'nofiles'               => true
                                        ));
 
-                               $browser = CreateObject('phpgwapi.browser');
-
                                if(!$jasper)
                                {
                                $this->vfs->override_acl = 1;
@@ -236,53 +234,64 @@
 
                                $this->vfs->override_acl = 0;
 
+                                       $browser = 
CreateObject('phpgwapi.browser');
                                
$browser->content_header($ls_array[0]['name'],$ls_array[0]['mime_type'],$ls_array[0]['size']);
                                echo $document;
                        }
                                else //Execute the jasper report
                                {
-                                       //class_path
-                               //      $dirname = PHPGW_API_INC . 
'/jasper/lib';
-                                       $dirname = 'phpgwapi/inc/jasper/lib';
-                                       $file_list = array();
-                               //      $file_list[] = PHPGW_API_INC . 
'/jasper/bin';
-                                       $file_list[] = 
'phpgwapi/inc/jasper/bin';
-                                       $dir = new DirectoryIterator($dirname); 
-                                       if ( is_object($dir) )
-                                       {
-                                               foreach ( $dir as $_file )
-                                               {
-                                                       if ( $_file->isDot()
-                                                               || 
!$_file->isFile()
-                                                               || 
!$_file->isReadable()
-                                                               || 
mime_content_type($_file->getPathname()) == 'text/xml')
-                                                       {
-                                                               continue;
-                                                       }
+                                       $output_type = 'PDF';
 
-                                                       $file_list[] = (string) 
"{$dirname}/{$_file}";
-                                               }
-                                       }
-                                       
-                                       if (stristr(PHP_OS, 'WIN')) 
-                                       { 
-                                               $sep = ';';// Win 
-                                       }
-                                       else
-                                       { 
-                                               $sep = ':';// Other
-                                       }
+                                       /**
+                                       * 'parameters' will be in the following 
format:
+                                       * 'key1|value1;key2|value2;key3|value3' 
where key1, key2 ... keyX are
+                                       *  unique
+                                       */
+/*
+                                       $jasper_parameters = 
sprintf("\"BK_DATE_FROM|%s;BK_DATE_TO|%s;BK_BUILDINGS|%s\"",
+                                               1,//$from,
+                                               1,//$to,
+                                               1);//implode(",", 
$building_list));
 
-                                       $class_path = implode($sep, $file_list);
-                                       $type = 'pdf';
-                                       $select_criteria = '//Record';
-                                       $template = "{$this->rootdir}/{$file}";
+*/
+                                       $jasper_parameters = '"DUMMY|1"';
 
-                                       $cmd = "java -Djava.awt.headless=true 
-cp {$class_path} XmlJasperInterface -o{$type} -f{$template} 
-x{$select_criteria} < " . PHPGW_SERVER_ROOT . 
"/catch/test_data/jasper/tilstand.xml";
 
-                                       
$browser->content_header('report.pdf','application/pdf');
+                                       // DEBUG
+                                       //print_r($jasper_parameters);die();
+                                       //exit(0);
 
-                                       passthru($cmd);
+                                       $info                           = 
pathinfo($file);
+                                       $report_name            =  'report_' . 
basename($file,'.'.$info['extension']);
+                                       $report_source          = 
"{$this->rootdir}{$file}";
+                                       $memory = xmlwriter_open_memory();
+                                       
xmlwriter_start_document($memory,'1.0','UTF-8');
+
+                                       xmlwriter_start_element 
($memory,'JasperConfig'); // <JasperConfig>
+                                               xmlwriter_start_element 
($memory,'Reports'); // <Reports>       
+                                                       xmlwriter_start_element 
($memory,'Report'); // <Report>                 
+                                                               
xmlwriter_write_attribute( $memory, 'name', $report_name);
+                                                               
xmlwriter_write_attribute( $memory, 'source', $report_source);
+                                                       
xmlwriter_end_element($memory); // </Report>
+                                               xmlwriter_end_element($memory); 
// </Reports>
+                                       xmlwriter_end_element($memory); // 
</JasperConfig>
+       
+                                       $xml = 
xmlwriter_output_memory($memory,true);
+
+                                       $jasper_config = 
$GLOBALS['phpgw_info']['server']['temp_dir'] . '/config_' . basename($file);
+                                       $file_written = false;
+                                       $fp = fopen($jasper_config, "wb");
+                                       fwrite($fp,$xml);
+                               
+                                       if(fclose($fp))
+                                       {
+                                               $file_written=true;
+                                       }
+
+                                       $jasper_wrapper = 
CreateObject('phpgwapi.jasper_wrapper');
+                                       $jasper_wrapper->jasper_config = 
$jasper_config;
+                                       
$jasper_wrapper->execute($jasper_parameters, $output_type, $report_name, 
$errors);     
+                                       unlink($jasper_config);
                                }
                        }
                }





reply via email to

[Prev in Thread] Current Thread [Next in Thread]