[Alba-desarrollo] SVN Alba r5306 - prosistem/alba/trunk/alba/apps/principal/modules/informes/actions

commits en pressenter.com.ar commits en pressenter.com.ar
Mie Nov 14 20:05:21 CET 2007


Author: josx
Date: 2007-11-14 16:05:20 -0300 (Wed, 14 Nov 2007)
New Revision: 5306

Modified:
   prosistem/alba/trunk/alba/apps/principal/modules/informes/actions/actions.class.php
Log:
Mejoras al codigo de informes

Modified: prosistem/alba/trunk/alba/apps/principal/modules/informes/actions/actions.class.php
===================================================================
--- prosistem/alba/trunk/alba/apps/principal/modules/informes/actions/actions.class.php	2007-11-14 18:36:59 UTC (rev 5305)
+++ prosistem/alba/trunk/alba/apps/principal/modules/informes/actions/actions.class.php	2007-11-14 19:05:20 UTC (rev 5306)
@@ -418,10 +418,49 @@
         $OOo->NewDocFromTpl(sfConfig::get('sf_informe_dir').'/'.$informe->getAdjunto()->getRuta());
         $OOo->LoadXmlFromDoc('content.xml');
 
-        // Saco del template todas las variables del tipo [sssss.rrrrr] y además 
+        $aVariable = $this->leerTemplate($OOo->Source);
+
+        //busco en las variables encontradas en el template y reemplaza contenido
+        $aDato = array();
+        $aDato = $this->llenarVariables($aVariable);
+        $aDato['informe'] = $informe->toArray(); //agregando datos del registro informe
+
+        // variables adicionales dinamicas de los formulario
+        if($informe->getVariables()) {
+            $aDato['variable'] = array();
+            $variables = explode(";",$informe->getVariables());
+            foreach($variables as $variable) {
+                $aDato['variable'] = array_merge( $aDato['variable'], array ( $variable => $this->getRequestParameter($variable)));
+            }
+        }
+
+        // lleno finalmente de diferente forma si es un array (ciclo) o no (variable comun)
+        if(is_array($aDato)) {
+            foreach($aDato as $idx => $dato) {
+                if($this->isNotAssocArray($dato)) {
+                    $OOo->MergeBlock($idx, "array", $dato);
+                } else {
+                    $OOo->MergeField($idx, $dato);
+                }
+            }
+        }
+
+        $OOo->SaveXmlToDoc();
+        header('Content-type: '.$OOo->GetMimetypeDoc());
+        header('Content-Length: '.filesize($OOo->GetPathnameDoc()));
+        $OOo->FlushDoc();
+        $OOo->RemoveDoc();
+    }
+
+/**
+  * @param array $fuente
+  * @returns array
+  */
+    private function leerTemplate($fuente) {
+        // Saco del template todas las variables del tipo [sssss.rrrrr], tambien las del ciclo y además 
         // evitando las variables del tbs con ;
-        $matches = $result = array();
-       if( preg_match_all("/\[([^];]*\.[^]]*)\]/", $OOo->Source, $matches)) {
+        $matches = $results = array();
+        if( preg_match_all("/\[([^];]*\.[^]]*)\]/", $fuente, $matches)) {
             foreach ($matches[1] as $tag) { // Process each
                 if (sizeof($tag = explode('.', $tag)) > 1) { // Breakdown into components
                     $tail = array_pop($tag);
@@ -441,11 +480,19 @@
                 }
             }
         }
+        return $results;
+    }
 
-        //busco en las variables encontradas en el template y reemplaza contenido
+
+
+/**
+  * @param array $aVariable
+  * @returns array
+  */
+
+    private function llenarVariables($aVariable) {
         $aDato = array();
-        $aDato['informe'] = $informe->toArray();
-        foreach($results as $idx => $result) { //Recorrer las variables
+        foreach($aVariable as $idx => $result) { //Recorrer las variables
             switch($idx) { // me fijo que variables debo enviar al template de resultado
                 case 'alumno':
                     //dependiendo si es una variables de cilcos
@@ -493,36 +540,12 @@
                 default:
             }
         }
+        return $aDato;
+    }
 
-        // variables adicionales dinamicas de los formulario
-        if($informe->getVariables()) {
-            $aDato['variable'] = array();
-            $variables = explode(";",$informe->getVariables());
-            foreach($variables as $variable) {
-                $aDato['variable'] = array_merge( $aDato['variable'], array ( $variable => $this->getRequestParameter($variable)));
-            }
-        }
 
-        // lleno finalmente de diferente forma si es un array (ciclo) o no (variable comun)
-        if(is_array($aDato)) {
-            foreach($aDato as $idx => $dato) {
-                if($this->isNotAssocArray($dato)) {
-                    $OOo->MergeBlock($idx, "array", $dato);
-                } else {
-                    $OOo->MergeField($idx, $dato);
-                }
-            }
-        }
 
-        $OOo->SaveXmlToDoc();
-        header('Content-type: '.$OOo->GetMimetypeDoc());
-        header('Content-Length: '.filesize($OOo->GetPathnameDoc()));
-        $OOo->FlushDoc();
-        $OOo->RemoveDoc();
-    }
 
-
-
 /**
   * @param array $arr
   * @returns boolean




Más información sobre la lista de distribución Alba-desarrollo