- * @return mixed
- * @access public
- */
- function cargar($db = null)
- {
- // 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)) {
- return $res;
- }
- elseif (!$res) {
- return false;
- }
- $this->id = $res['id'];
- $this->fecha = $res['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;
- }
- return false;
- }
-
- /**
- * 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.
- 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;
- }
- 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->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.owner = '. $db->quote("$this->owner").
- 'AND p.id_sistema = s.id_sistema AND ('. join ("$operador
- ", $where).')';
- }
- else {
- $where = 'WHERE p.owner = '. $db->quote("$this->owner").
- 'AND p.id_sistema = s.id_sistema';
- }
- // 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,
- 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, 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 = true)
- {
-/*
- //@TODO PASAR ESTO A UNA CLASE SERVIDOR
- //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,
- '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,
- 'archivo' => $this->archivo,
- '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,
- 'archivo' => $this->archivo,
- 'nota' => $this->nota
- );
-
- $res = $db->autoExecute('yatta.procesos', $datos,
- DB_AUTOQUERY_UPDATE, 'id = '.$this->id);
-
- }
-
- if (DB::isError($res)) {
- return $res;
- }
-
- return $db->query('
- UPDATE yatta.servidores
- SET procesos = procesos + 1
- WHERE id = '. $this->server);
-*/
- }
-
- /**
- * Hace un reset de los atributos.
- *