+<?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: mié dic 3 13:11:15 ART 2003
+Autor: Martin Marrese <mmarre@mecon.gov.ar>
+-------------------------------------------------------------------------------
+$Id$
+-----------------------------------------------------------------------------*/
+
+require_once 'MECON/DBO.php';
+require_once 'PEAR.php';
+
+
+define ('PATH', '/var/www/sistemas/yatta/test/');
+
+/**
+ * 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 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;
+
+ /**
+ * Path del archivo
+ *
+ * @var string $path
+ * @access public
+ */
+ var $path = 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->path = PATH;
+ $this->resultado = $res['resultado'];
+ $this->archivo = $res['archivo'];
+
+ 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);
+ //@TODO Solo permitir que el owner borre sus archivos.
+ //@TODO Borra el registro de la base.
+ //@TODO 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 ($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.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, p.id_sistema AS id_sistema, s.nombre_sistema ".
+ "AS nombre_sistema, p.descripcion AS descripcion, p.resultado ".
+ "AS resultado, p.archivo AS archivo ".
+ "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->path = null;
+ $this->usuario = null;
+ }
+}
+?>
\ No newline at end of file