------------------------------------------------------------------------------- $Id$ -----------------------------------------------------------------------------*/ require_once 'MECON/DBO.php'; require_once 'PEAR.php'; define ('PATH_TACHO', '/var/www/yatta/tacho/'); /** * Clase para el manejo de los archivos. * * @access public */ class YATTA_Archivo extends MECON_DBO { /** * Identificador del proceso. * * @var int $id * @access public */ var $id = null; /** * Identificador del sistema en el cual se lanzo el proceso. * * @var int $id_sistema * @access public */ var $id_sistema = null; /** * Nombre del sistema al que pertenece. * * @var string $nombre_sistema * @access public */ var $nombre_sistema = null; /** * Descripcion del proceso. * * @var string $descripcion * @access public */ var $descripcion = null; /** * Identificador del usuario duenio del archivo. * * @var string $owner * @access public */ var $owner = null; /** * Identificador del usuario con el que se esta trabajando. * * @var string $usuario * @access public */ var $usuario = null; /** * Nombre del archivo para el download * * @var string $resultado * @access public */ var $resultado = null; /** * Nombre del archivo en el tacho * * @var string $archivo * @access public */ var $archivo = 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')) { $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->nombre_sistema = $res['nombre_sistema']; $this->descripcion = $res['descripcion']; $this->resultado = $res['resultado']; $this->archivo = PATH_TACHO.$res['archivo']; $this->owner = $res['owner']; 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) { $res = $db->query('DELETE FROM yatta.procesos WHERE id = '. $this->id); if (PEAR::isError($res)) { trigger_error('Error: ' . $res->getMessage() . "\n", E_USER_ERROR); } //Borro el archivo del tacho if (!unlink($this->archivo)) { return new PEAR_Error('No se pudo borrar el archivo del tacho.'); } } /** * 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->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->resultado)) { $where[] = 'p.resultado LIKE '. $db->quote("%$this->resultado%"); } if (!is_null($this->usuario)) { $where[] = ' (p.owner LIKE '. $db->quote("$this->usuario") .' OR '. 'p.destinos LIKE '. $db->quote("%$this->usuario%") .')'; } if (!is_null($this->archivo)) { $where[] = 'p.archivo LIKE '. $db->quote("$this->archivo"); } if ($where) { $where = 'WHERE p.status = 2 AND p.resultado is not null '. 'AND p.id_sistema = s.id_sistema AND ('. join ("$operador ", $where).') '; } else { $where = 'WHERE 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, p.id_sistema AS id_sistema, s.nombre_sistema ". "AS nombre_sistema, p.descripcion AS descripcion, p.resultado ". "AS resultado, p.archivo AS archivo, p.owner AS owner ". "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) { trigger_error('Not implemented!', E_USER_WARNING); } /** * Hace un reset de los atributos. * * @return void * @access public */ function predefinirAtributos() { $this->id = null; $this->id_sistema = null; $this->nombre_sistema = null; $this->descripcion = null; $this->resultado = null; $this->archivo = null; $this->owner = null; //$this->usuario = null; } } ?>