* Estado del proceso.
* 0 = En Espera
* 1 = Procesando
- * 2 = Finalizado sin copiar el resultado al tacho
- * 3 = Finalizado
- * 4 = Error
- * 5 = Abortado
+ * 2 = Finalizado
+ * 3 = Error
+ * 4 = Abortado
*
* @var int $status
* @access public
*/
var $resultado = null;
+ /**
+ * Nombre del archivo en el tacho
+ *
+ * @var string $archivo
+ * @access public
+ */
+ var $archivo = null;
+
/**
* Nota explicativa sobre el error producido o el motivo por el cual se
* aborto el proceso.
* @access public
*/
var $nota = null;
+
+ /**
+ * Descripcion del estado.
+ *
+ * @var string $icono
+ * @access public
+ */
+ var $icono = null;
/**
* Carga el objeto con los datos que se pasan por parametro.
{
// Si es un resultado, obtengo los elemento.
if (is_a($db, 'db_result')) {
+ $this->predefinirAtributos();
$res = $db->fetchRow(DB_FETCHMODE_ASSOC);
// Si hay error lo devuelve.
if (DB::isError($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->archivo = $res['archivo'];
+ $this->nota = $res['nota'];
+ $this->icono = $res['icono'];
+ return true;
}
-
- $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;
+ return false;
}
/**
function buscar($db = null, $operador = MECON_DBO_OR, $orden = null)
{
// Armo el WHERE.
+ if (is_null($this->owner)) {
+ return new PEAR_Error ('Debe definirse el Owner del proceso.');
+ }
$where = array();
if (!is_null($this->id)) {
$where[] = 'p.id = '.$this->id;
$where[] = 'p.fecha = '. $db->quote("$fecha");
}
if (!is_null($this->script)) {
- $where[] = 'p.script LIKE'. $db->quote("%$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%");
+ $where[] = 's.nombre_sistema LIKE '. $db->quote("%$this->nombre_sistema%");
}
if (!is_null($this->descripcion)) {
- $where[] = 'p.descripcion LIKE'. $db->quote("%$this->descripcion%");
+ $where[] = 'p.descripcion LIKE '. $db->quote("%$this->descripcion%");
}
if (!is_null($this->pid)) {
$where[] = 'p.pid = '.$this->pid;
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");
+ $where[] = 'p.destinos LIKE '. $db->quote("%$destino");
}
}
else {
- $where[] = 'p.destinos LIKE'. $db->quote("%$this->destinos%");
+ $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%");
+ $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%");
+ $where[] = 'p.resultado LIKE '. $db->quote("%$this->resultado%");
}
if (!is_null($this->nota)) {
- $where[] = 'p.nota LIKE'. $db->quote("%$this->nota%");
+ $where[] = 'p.nota LIKE '. $db->quote("%$this->nota%");
}
if ($where) {
- $where = 'WHERE p.id_sistema = s.id_sistema AND ('. join ("$operador
+ $where = 'WHERE p.owner = '. $db->quote("$this->owner").
+ 'AND p.id_sistema = s.id_sistema AND ('. join ("$operador
", $where).')';
}
else {
- $where = '';
+ $where = 'WHERE p.owner = '. $db->quote("$this->owner").
+ 'AND p.id_sistema = s.id_sistema';
}
// Armo el ORDER BY.
if (is_string($orden))
$orden = '';
}
- return $db->query("SELECT p.id AS id, p.fecha AS fecha, p.script AS
+ return $db->query("SELECT p.id AS id,
+ DATE_FORMAT(p.fecha, '%d-%m-%Y') 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
+ resultado, p.nota AS nota, p.archivo AS archivo, ".
+ "IF (p.status = 0, 'El proceso esta en cola. Aun no se ejecuto.".
+ "', ".
+ "IF(p.status = 1, 'El proceso se esta ejecutando en este momento.".
+ "',".
+ "IF(p.status = 2, 'El proceso ha finalizado. ".
+ "',".
+ "IF(p.status = 3, 'Se produjo un error durante la ejecucion".
+ " del proceso.".
+ "',".
+ "'El proceso fue detenido por alguna persona (el responsable o".
+ " el administrador).".
+ "'".
+ ")".
+ ")".
+ ")".
+ ") AS icono
FROM yatta.procesos AS p, samurai.sistema AS s
$where
$orden");
}
/**
+ * Guarda los datos en la base.
+ *
* @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)
+ function guardar($db = null, $nuevo = true)
{
+ //Busco el servidor
+ $res = $db->query('SELECT id, escala * procesos AS ponderacion
+ FROM yatta.servidores
+ ORDER BY ponderacion, escala');
+ $res = $res->fetchRow(DB_FETCHMODE_ASSOC);
+ // Si hay error lo devuelve.
+ if (DB::isError($res)) {
+ return $res;
+ }
+ $this->server = $res['id'];
+ //Asigno la fecha
+ if (@is_null($this->fecha)) {
+ $this->fecha = date ('Y-m-d');
+ }
+
if ($nuevo) {
$datos = array (
'fecha' => $this->fecha,
'scheduling' => $this->scheduling,
'notificar' => $this->notificar,
'resultado' => $this->resultado,
+ 'archivo' => $this->archivo,
'nota' => $this->nota
);
'scheduling' => $this->scheduling,
'notificar' => $this->notificar,
'resultado' => $this->resultado,
+ 'archivo' => $this->archivo,
'nota' => $this->nota
);
DB_AUTOQUERY_UPDATE, 'id = '.$this->id);
}
+
+ if (DB::isError($res)) {
+ return $res;
+ }
+
+ $res = $db->query('
+ UPDATE yatta.servidores
+ SET procesos = procesos + 1
+ WHERE id = '. $this->server);
return $res;
}
$this->scheduling = null;
$this->notificar = null;
$this->resultado = null;
+ $this->archivo = null;
$this->nota = null;
+ $this->icono = null;
}
}
?>
\ No newline at end of file