--- /dev/null
+<?php /* vim: set binary expandtab tabstop=4 shiftwidth=4 textwidth=80:
+-------------------------------------------------------------------------------
+ Ministerio de Economía
+ YATTA!
+-------------------------------------------------------------------------------
+This file is part of YATTA!.
+
+YATTA! is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2 of the License, or (at your option)
+any later version.
+
+YATTA! is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License; if not,
+write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+Boston, MA 02111-1307 USA
+-------------------------------------------------------------------------------
+Creado: lun dic 1 16:59:29 ART 2003
+Autor: Martin Marrese <mmarre@mecon.gov.ar>
+-------------------------------------------------------------------------------
+$Id$
+-----------------------------------------------------------------------------*/
+
+require_once 'MECON/DBO.php';
+require_once 'PEAR.php';
+require_once 'Date.php';
+
+/**
+ * Clase para el manejo de los procesos.
+ *
+ * @access public
+ */
+class YATTA_Proceso extends MECON_DBO {
+
+ /**
+ * Identificador del proceso.
+ *
+ * @var int $id
+ * @access public
+ */
+ var $id = null;
+
+ /**
+ * Fecha cuando se agrego el proceso.
+ * Formato = DD/MM/YYYY
+ * Puede ser un objeto Date.
+ *
+ * @var string $fecha
+ * @access public
+ */
+ var $fecha = null;
+
+ /**
+ * Proceso a ejecutar.
+ *
+ * @var string $script
+ * @access public
+ */
+ var $script = null;
+
+ /**
+ * Identificador del sistema en el cual se lanzo el proceso.
+ *
+ * @var int $id_sistema
+ * @access public
+ */
+ var $id_sistema = null;
+
+ /**
+ * Nombre del sistema en el cual se lanzo el proceso.
+ *
+ * @var string $nombre_sistema
+ * @access public
+ */
+ var $nombre_sistema = null;
+
+ /**
+ * Descripcion del proceso.
+ *
+ * @var string $descripcion
+ * @access public
+ */
+ var $descripcion = null;
+
+ /**
+ * PID del proceso en el servidor de proceso.
+ *
+ * @var int $pid
+ * @access public
+ */
+ var $pid = null;
+
+ /**
+ * Servidor en donde se ejecuto/a/ara el proceso.
+ *
+ * @var int $server
+ * @access public
+ */
+ var $server = null;
+
+ /**
+ * Estado del proceso.
+ * 0 = En Espera
+ * 1 = Procesando
+ * 2 = Finalizado sin copiar el resultado al tacho
+ * 3 = Finalizado
+ * 4 = Error
+ * 5 = Abortado
+ *
+ * @var int $status
+ * @access public
+ */
+ var $status = null;
+
+ /**
+ * Identificador del usuario responsable por el proceso.
+ *
+ * @var string $owner
+ * @access public
+ */
+ var $owner = null;
+
+ /**
+ * Destinos para el resultado.
+ * array ('mmarre@mecon', 'gmeray@mecon')
+ *
+ * @var array $destinos
+ * @access public
+ */
+ var $destinos = null;
+
+ /**
+ * Prioridad el proceso.
+ *
+ * @var int $prioridad
+ * @access public
+ */
+ var $prioridad = null;
+
+ /**
+ * Fecha de ejecucion fijada.
+ *
+ * @var string $scheduling
+ * @access public
+ */
+ var $scheduling = null;
+
+ /**
+ * Indica si se debe notificar o no al owner sobre el resultado.
+ *
+ * @var int $notificar
+ * @access public
+ */
+ var $notificar = null;
+
+ /**
+ * Nombre del archivo resultado
+ *
+ * @var string $resultado
+ * @access public
+ */
+ var $resultado = null;
+
+ /**
+ * Nota explicativa sobre el error producido o el motivo por el cual se
+ * aborto el proceso.
+ *
+ * @var string $nota
+ * @access public
+ */
+ var $nota = null;
+
+ /**
+ * Carga el objeto con los datos que se pasan por parametro.
+ *
+ * @param DB $db DB o DB_Result a usar para la carga.
+ *
+ * @return mixed
+ * @access public
+ */
+ function cargar($db = null)
+ {
+ // Si es un resultado, obtengo los elemento.
+ if (is_a($db, 'db_result')) {
+ $res = $db->fetchRow(DB_FETCHMODE_ASSOC);
+ // Si hay error lo devuelve.
+ if (DB::isError($res)) {
+ return $res;
+ }
+ elseif (!$res) {
+ return false;
+ }
+ }
+
+ $this->id = $res['id'];
+ $fecha =& new Date ($res['fecha'].' 00:00:00');
+ $this->fecha = $fecha;
+ $this->script = $res['script'];
+ $this->id_sistema = $res['id_sistema'];
+ $this->nombre_sistema = $res['nombre_sistema'];
+ $this->descripcion = $res['descripcion'];
+ $this->pid = $res['pid'];
+ $this->server = $res['server'];
+ $this->status = $res['status'];
+ $this->owner = $res['owner'];
+ $this->destinos = split(',', $res['destinos']);
+ $this->prioridad = $res['prioridad'];
+ $this->scheduling = $res['scheduling'];
+ $this->notificar = $res['notificar'];
+ $this->resultado = $res['resultado'];
+ $this->nota = $res['nota'];
+
+ return true;
+ }
+
+ /**
+ * Borra el objeto de una base de datos.
+ *
+ * @param DB $db Base de datos de donde borrar el objeto.
+ *
+ * @return mixed
+ * @access public
+ */
+ function borrar($db = null)
+ {
+ trigger_error('Not implemented!', E_USER_WARNING);
+ }
+
+ /**
+ * Busca los datos en la base.
+ *
+ * @param DB $db Conexion a la base de datos.
+ * @param string $operador Indica como deben concatenarse las condiciones de busqueda
+ * @param string $orden Indica de que manera deben ordenarse los resultados de la busqueda
+ *
+ * @return mixed
+ * @access public
+ */
+ function buscar($db = null, $operador = MECON_DBO_OR, $orden = null)
+ {
+ // Armo el WHERE.
+ $where = array();
+ if (!is_null($this->id)) {
+ $where[] = 'p.id = '.$this->id;
+ }
+ if (!is_null($this->fecha)) {
+ if (is_object($this->fecha) ) {
+ $fecha = $this->fecha->format("%Y-%m-%d");
+ }
+ else {
+ list ($dia, $mes, $anio) = split ('[/.-]', $this->fecha);
+ $fecha = $anio.'-'.$mes.'-'.$dia;
+ }
+ $where[] = 'p.fecha = '. $db->quote("$fecha");
+ }
+ if (!is_null($this->script)) {
+ $where[] = 'p.script LIKE'. $db->quote("%$this->script%");
+ }
+ if (!is_null($this->id_sistema)) {
+ $where[] = 'p.id_sistema = '. $this->id_sistema;
+ }
+ if (!is_null($this->nombre_sistema)) {
+ $where[] = 's.nombre_sistema LIKE'. $db->quote("%$this->nombre_sistema%");
+ }
+ if (!is_null($this->descripcion)) {
+ $where[] = 'p.descripcion LIKE'. $db->quote("%$this->descripcion%");
+ }
+ if (!is_null($this->pid)) {
+ $where[] = 'p.pid = '.$this->pid;
+ }
+ if (!is_null($this->server)) {
+ $where[] = 'p.server = '.$this->server;
+ }
+ if (!is_null($this->status)) {
+ $where[] = 'p.status = '.$this->status;
+ }
+ if (!is_null($this->owner)) {
+ $where[] = 'p.owner LIKE'. $db->quote("%$this->owner%");
+ }
+ if (!is_null($this->destinos)) {
+ if (is_array($this->destinos)) {
+ foreach ($this->destinos as $destino) {
+ $where[] = 'p.destinos LIKE'. $db->quote("%$destino");
+ }
+ }
+ else {
+ $where[] = 'p.destinos LIKE'. $db->quote("%$this->destinos%");
+ }
+ }
+ if (!is_null($this->prioridad)) {
+ $where[] = 'p.prioridad = '.$this->prioridad;
+ }
+ if (!is_null($this->scheduling)) {
+ $where[] = 'p.scheduling LIKE'. $db->quote("%$this->scheduling%");
+ }
+ if (!is_null($this->notificar)) {
+ $where[] = 'p.notificar ='. $this->notificar;
+ }
+ if (!is_null($this->resultado)) {
+ $where[] = 'p.resultado LIKE'. $db->quote("%$this->resultado%");
+ }
+ if (!is_null($this->nota)) {
+ $where[] = 'p.nota LIKE'. $db->quote("%$this->nota%");
+ }
+ if ($where) {
+ $where = 'WHERE p.id_sistema = s.id_sistema AND ('. join ("$operador
+ ", $where).')';
+ }
+ else {
+ $where = '';
+ }
+ // Armo el ORDER BY.
+ if (is_string($orden))
+ {
+ $orden = array($orden);
+ }
+ if ($orden)
+ {
+ $orden = 'ORDER BY '.join(',',$orden);
+ }
+ else {
+ $orden = '';
+ }
+
+ return $db->query("SELECT p.id AS id, p.fecha AS fecha, p.script AS
+ script, p.id_sistema AS id_sistema, s.nombre_sistema AS
+ nombre_sistema, p.descripcion AS descripcion, p.pid AS pid,
+ p.server AS server, p.status AS status, p.owner AS owner,
+ p.destinos AS destinos, p.prioridad AS prioridad, p.scheduling
+ AS scheduling, p.notificar AS notificar, p.resultado AS
+ resultado, p.nota AS nota
+ FROM yatta.procesos AS p, samurai.sistema AS s
+ $where
+ $orden");
+ }
+
+ /**
+ * @param DB $db Conexion a la base de datos.
+ * @param bool $nuevo Indica si se trata de un nuevo registro en la base.
+ *
+ * @return mixed
+ * @access public
+ */
+ function guardar($db = null, $nuevo = false)
+ {
+ if ($nuevo) {
+ $datos = array (
+ 'fecha' => $this->fecha,
+ 'script' => $this->script,
+ 'id_sistema' => $this->id_sistema,
+ 'descripcion' => $this->descripcion,
+ 'pid' => $this->pid,
+ 'server' => $this->server,
+ 'status' => $this->status,
+ 'owner' => $this->owner,
+ 'destinos' => $this->destinos,
+ 'prioridad' => $this->prioridad,
+ 'scheduling' => $this->scheduling,
+ 'notificar' => $this->notificar,
+ 'resultado' => $this->resultado,
+ 'nota' => $this->nota
+ );
+
+ $res = $db->autoExecute('yatta.procesos', $datos,
+ DB_AUTOQUERY_INSERT);
+ }
+ else {
+ $datos = array (
+ 'fecha' => $this->fecha,
+ 'script' => $this->script,
+ 'id_sistema' => $this->id_sistema,
+ 'descripcion' => $this->descripcion,
+ 'pid' => $this->pid,
+ 'server' => $this->server,
+ 'status' => $this->status,
+ 'owner' => $this->owner,
+ 'destinos' => $this->destinos,
+ 'prioridad' => $this->prioridad,
+ 'scheduling' => $this->scheduling,
+ 'notificar' => $this->notificar,
+ 'resultado' => $this->resultado,
+ 'nota' => $this->nota
+ );
+
+ $res = $db->autoExecute('yatta.procesos', $datos,
+ DB_AUTOQUERY_UPDATE, 'id = '.$this->id);
+
+ }
+ return $res;
+ }
+
+ /**
+ * Hace un reset de los atributos.
+ *
+ * @return void
+ * @access public
+ */
+ function predefinirAtributos() {
+ $this->id = null;
+ $this->fecha = null;
+ $this->script = null;
+ $this->id_sistema = null;
+ $this->nombre_sistema = null;
+ $this->descripcion = null;
+ $this->pid = null;
+ $this->server = null;
+ $this->status = null;
+ $this->owner = null;
+ $this->destinos = null;
+ $this->prioridad = null;
+ $this->scheduling = null;
+ $this->notificar = null;
+ $this->resultado = null;
+ $this->nota = null;
+ }
+}
+?>
\ No newline at end of file
require_once 'MECON/HTML/TablaDB.php';
require_once 'MECON/HTML/QuickForm.php';
require_once 'MECON/HTML/Link.php';
+require_once 'MECON/HTML/Image.php';
//}}}
//Creo el formulario de filtro {{{
),'titulo');
//}}}
- //FIXME Buscar la info en la base de datos
- //Obtengo la info segun los filtros {{{
- $procesos[17]['id_proceso'] = 17;
- $procesos[17]['sistema'] = 'Protocolizacion';
- $procesos[17]['descripcion'] = 'Informe Auditoria - Perez Angel';
- $procesos[17]['status'] = 'En Espera';
- $procesos[17]['fecha'] = '27/11/03 11:52:33';
- $procesos[25]['id_proceso'] = 25;
- $procesos[25]['sistema'] = 'Protocolizacion';
- $procesos[25]['descripcion'] = 'Informe Auditoria - Lavagna Roberto';
- $procesos[25]['status'] = 'Procesando';
- $procesos[25]['fecha'] = '27/11/03 13:25:05';
- $procesos[111]['id_proceso'] = 111;
- $procesos[111]['sistema'] = 'Protocolizacion';
- $procesos[111]['descripcion'] = 'Informe Personal - Lavagna Roberto';
- $procesos[111]['status'] = 'Finalizado';
- $procesos[111]['fecha'] = '27/11/03 19:00:52';
-
- $procesos[123]['id_proceso'] = 123;
- $procesos[123]['sistema'] = 'Protocolizacion';
- $procesos[123]['descripcion'] = 'Informe Personal - Lavagna Roberto';
- $procesos[123]['status'] = 'Error';
- $procesos[123]['fecha'] = '27/11/03 19:00:52';
-
- $procesos[234]['id_proceso'] = 234;
- $procesos[234]['sistema'] = 'Protocolizacion';
- $procesos[234]['descripcion'] = 'Informe Personal - Lavagna Roberto';
- $procesos[234]['status'] = 'Abortado';
- $procesos[234]['fecha'] = '27/11/03 19:00:52';
- //}}}
+ //FIXME Usar YATTA_Proceso
//Agrego la info a la tabla {{{
if (@$procesos) {
foreach ($procesos as $proceso) {
//Switcheo por el status {{{
switch ($proceso['status']) {
- case 'En Espera':
- $clase = "celda_espera";
- break;
- case 'Procesando':
- $clase = "celda_procesando";
+ case '0':
+ $estado = new MECON_HTML_Link (
+ 'procesos_stop',
+ new MECON_HTML_Image
+ ('/sistemas/yatta/images/espera',
+ $proceso['status'])
+ );
break;
- case 'Finalizado':
+ case '1':
+ case '2':
$estado = new MECON_HTML_Link (
- 'popups/procesos',
- $proceso['status'],
- array (),
- array (
- 'OnClick' =>
- "javascript:window.open('popups/procesos','Procesos',"."'width=400,height=300,scrollbars=yes');return false;",
- 'target' => '_blank')
- );
- $clase = "celda_finalizado";
+ 'procesos_stop',
+ new MECON_HTML_Image
+ ('/sistemas/yatta/images/procesando',
+ $proceso['status'])
+ );
break;
- case 'Error':
+ case '3':
+ $estado = new MECON_HTML_Link ('archivos',
+ new MECON_HTML_Image ('/sistemas/yatta/images/fin',
+ $proceso['status']));
+ break;
+ case '4':
$estado = new MECON_HTML_Link (
- 'popups/procesos',
- $proceso['status'],
- array (),
+ 'procesos_info',
+ new MECON_HTML_Image
+ ('/sistemas/yatta/images/error',
+ $proceso['status']),
+ array ('mensaje' => $proceso['nota']),
array (
'OnClick' =>
- "javascript:window.open('popups/procesos','Procesos',"."'width=400,height=300,scrollbars=yes');return false;",
+ "javascript:window.open('popups/procesos','Procesos',".
+ "'width=400,height=300,scrollbars=yes');return false;",
'target' => '_blank')
);
- $clase = "celda_error";
break;
- case 'Abortado':
+ case '5':
$estado = new MECON_HTML_Link (
- 'popups/procesos',
- $proceso['status'],
- array (),
+ 'procesos_info',
+ new MECON_HTML_Image
+ ('/sistemas/yatta/images/abortado',
+ $proceso['status']),
+ array ('mensaje' => $proceso['nota']),
array (
'OnClick' =>
- "javascript:window.open('popups/procesos','Procesos',"."'width=400,height=300,scrollbars=yes');return false;",
+ "javascript:window.open('popups/procesos','Procesos',".
+ "'width=400,height=300,scrollbars=yes');return false;",
'target' => '_blank')
);
- $clase = "celda_abortado";
break;
}
//}}}
$row = $TABLADB->addRow(array(
- $proceso['id_proceso'],
+ $proceso['id'],
$proceso['fecha'],
- $proceso['sistema'],
+ $proceso['nombre_sistema'],
$proceso['descripcion'],
- (@$estado) ? $estado : $proceso['status'],
+ $estado,
));
$estado = null;
-
- $TABLADB->updateCellAttributes($row, 3, 'class="'.$clase.'"');
- $TABLADB->updateCellAttributes($row, 4, 'class="'.$clase.'"');
-
}
}
else {
}
$TABLADB->updateColAttributes(0,'width="8%"');
$TABLADB->updateColAttributes(2,'width="30%"');
- $TABLADB->updateColAttributes(3,'width="35%"');
- $TABLADB->updateColAttributes(4,'width="10%"');
+ $TABLADB->updateColAttributes(3,'width="40%"');
+ $TABLADB->updateColAttributes(4,'width="5%"');
//}}}
}
//}}}