[Alba-desarrollo] SVN Alba r5305 -
prosistem/alba/trunk/alba/apps/principal/modules/informes/actions
commits en pressenter.com.ar
commits en pressenter.com.ar
Mie Nov 14 19:36:59 CET 2007
Author: josx
Date: 2007-11-14 15:36:59 -0300 (Wed, 14 Nov 2007)
New Revision: 5305
Modified:
prosistem/alba/trunk/alba/apps/principal/modules/informes/actions/actions.class.php
Log:
El sistema de informes ahora lee directamente las variables a mostrar desde el template (ya no dependen si tienen algun tipo determinado)
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 14:05:28 UTC (rev 5304)
+++ prosistem/alba/trunk/alba/apps/principal/modules/informes/actions/actions.class.php 2007-11-14 18:36:59 UTC (rev 5305)
@@ -326,71 +326,14 @@
public function executeMostrar() {
$informe = InformePeer::retrieveByPk($this->getRequestParameter('id'));
-
$this->forward404Unless($informe);
- $establecimiento_id = $this->getUser()->getAttribute('fk_establecimiento_id');
if($informe->getVariables() AND $this->getRequestParameter('v')!= 1) {
$this->redirect('informes/variables?id='.$informe->getId().'&alumno_id='.$this->getRequestParameter('alumno_id'));
} else {
- $aDato = array();
- switch($informe->getTipoInforme()->getNombre()) {
- case 'Alumnos':
-
- if($informe->getListado() == 1) {
-
- $division_id = $this->getRequestParameter('division_id');
- $d = DivisionPeer::retrieveByPK($division_id);
- $aDato['division'] = $d->toArrayInforme();
-
- // buscando alumnos
- $criteria = new Criteria();
- $criteria->add(DivisionPeer::ID, $division_id);
- $criteria->addJoin(RelAlumnoDivisionPeer::FK_ALUMNO_ID, AlumnoPeer::ID);
- $criteria->addJoin(RelAlumnoDivisionPeer::FK_DIVISION_ID, DivisionPeer::ID);
- $criteria->addAscendingOrderByColumn(AlumnoPeer::APELLIDO);
- $alumnos = AlumnoPeer::doSelect($criteria);
-
- foreach($alumnos as $alumno) {
- $aDato['alumno'][] = $alumno->toArrayInforme();
- }
- } else {
-
- $alumno = AlumnoPeer::retrieveByPk($this->getRequestParameter('alumno_id'));
- $aDato['alumno'] = $alumno->toArrayInforme();
-
- $establecimiento = EstablecimientoPeer::retrieveByPk($establecimiento_id);
- $aDato['establecimiento'] = $establecimiento->toArrayInforme();
-
- $c = new Criteria();
- $c->add(RelAlumnoDivisionPeer::FK_ALUMNO_ID, $alumno->getId());
- $relAlumnoDivision = RelAlumnoDivisionPeer::doSelectOne($c);
- $d = $relAlumnoDivision->getDivision();
- $aDato['division'] = $d->toArrayInforme();
-
- $aDato['informe'] = $informe->toArray();
-
- $ciclolectivo_id = $this->getUser()->getAttribute('fk_ciclolectivo_id');
- $ciclolectivo = CiclolectivoPeer::retrieveByPk($ciclolectivo_id);
- $aDato['ciclolectivo'] = $ciclolectivo->toArray();
-
- }
-
- 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)));
- }
- }
-
- break;
-
- default: $this->forward404();
- }
+ $this->reporteTBSOO($informe);
}
- $this->reporteTBSOO($informe->getAdjunto()->getRuta(), $informe->getTipoInforme()->getNombre(), $aDato);
return sfview::NONE;
}
@@ -462,7 +405,7 @@
}
- private function reporteTBSOO($archivo, $tipoinforme, $aDato) {
+ private function reporteTBSOO($informe) {
define('BASE',sfConfig::get('sf_app_module_dir') .'/informes/' .sfConfig::get('sf_app_module_lib_dir_name').'/');
require_once(BASE.'tbs_class_php5.php');
require_once(BASE.'tbsooo_class.php');
@@ -472,7 +415,7 @@
$OOo->SetUnzipBinary('unzip');
$OOo->SetProcessDir(sfConfig::get('sf_informe_dir'));
$OOo->SetDataCharset('UTF8');
- $OOo->NewDocFromTpl(sfConfig::get('sf_informe_dir').'/'.$archivo);
+ $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
@@ -490,16 +433,77 @@
$pos = strpos($tail, ';block'); // posicion de block
if($pos !== false) { // es un listado
$tail = substr($tail, 0, $pos);
- $result[$tag[0]]['loop'] = 1;
+ $results[$tag[0]]['loop'] = 1;
}
- eval('$result[\''.implode("']['", $tag)."'][] = '$tail';"); // Add to $result
+ eval('$results[\''.implode("']['", $tag)."'][] = '$tail';"); // Add to $result
} else {
- $result[] = $tag[0]; // Add to $result
+ $results[] = $tag[0]; // Add to $result
}
}
}
- //en result tengo las variables que deberias rellenar dinamicamente
+ //busco en las variables encontradas en el template y reemplaza contenido
+ $aDato = array();
+ $aDato['informe'] = $informe->toArray();
+ foreach($results 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
+ if( array_key_exists('loop', $result) AND $result['loop'] == 1) {
+ $criteria = new Criteria();
+ if($this->getRequestParameter('division_id')) {
+ $criteria->add(DivisionPeer::ID, $this->getRequestParameter('division_id'));
+ }
+ $criteria->addJoin(RelAlumnoDivisionPeer::FK_ALUMNO_ID, AlumnoPeer::ID);
+ $criteria->addJoin(RelAlumnoDivisionPeer::FK_DIVISION_ID, DivisionPeer::ID);
+ $criteria->addAscendingOrderByColumn(AlumnoPeer::APELLIDO);
+ $alumnos = AlumnoPeer::doSelect($criteria);
+ foreach($alumnos as $alumno) {
+ $aDato['alumno'][] = $alumno->toArrayInforme();
+ }
+ } else {
+ $alumno = AlumnoPeer::retrieveByPk($this->getRequestParameter('alumno_id'));
+ $aDato['alumno'] = $alumno->toArrayInforme();
+ }
+ break;
+
+ case 'division':
+ if($this->getRequestParameter('division_id')) {
+ $d = DivisionPeer::retrieveByPK($this->getRequestParameter('division_id'));
+ } else {
+ $c = new Criteria();
+ $c->add(RelAlumnoDivisionPeer::FK_ALUMNO_ID, $this->getRequestParameter('alumno_id'));
+ $relAlumnoDivision = RelAlumnoDivisionPeer::doSelectOne($c);
+ $d = $relAlumnoDivision->getDivision();
+ }
+ $aDato['division'] = $d->toArrayInforme();
+ break;
+
+ case 'establecimiento':
+ $establecimiento = EstablecimientoPeer::retrieveByPk($this->getUser()->getAttribute('fk_establecimiento_id'));
+ $aDato['establecimiento'] = $establecimiento->toArrayInforme();
+ break;
+
+ case 'ciclolectivo':
+ $ciclolectivo_id = $this->getUser()->getAttribute('fk_ciclolectivo_id');
+ $ciclolectivo = CiclolectivoPeer::retrieveByPk($ciclolectivo_id);
+ $aDato['ciclolectivo'] = $ciclolectivo->toArray();
+ break;
+
+ default:
+ }
+ }
+
+ // 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)) {
Más información sobre la lista de distribución Alba-desarrollo