| // +--------------------------------------------------------------------+ // // $Id$ // require_once 'AI/Error.php'; // +X2C Class 413 :AI_Servicio /** * Servicio. * * @package AI * @access public */ class AI_Servicio { /** * ID del servicio. * * @var int $servicio * @access public */ var $servicio = 0; /** * @var int $servicio_padre * @access public */ var $servicio_padre = 0; /** * Servicios hijos. * * @var array $hijos * @access protected */ var $_hijos = array(); /** * Nombre del servicio. * * @var string $nombre * @access public */ var $nombre = ''; /** * Descripcin del servicio. * * @var string $descripcion * @access public */ var $descripcion = ''; /** * ?ono del servicio. * * @var HTML_Imagen $icono * @access public */ var $icono = null; /** * Enlace a donde el este servicio. * * @var string $link * @access public */ var $link = ''; /** * Enlace a donde se encuentra la ayuda del servicio. * * @var string $link_ayuda * @access public */ var $link_ayuda = ''; /** * True si es necesario que el usuario se loguee para usar el servicio. * * @var bool $necesita_logueo * @access public */ var $necesita_logueo = false; /** * Indica si esta habilitado. * * @var bool $habilitado * @access public */ var $habilitado = true; /** * Gets Hijos. * * @return array * @access public */ function getHijos() { return $this->_hijos; } // ~X2C // +X2C Operation 465 /** * @param int $servicio ID del servicio. * * @return void * @access public */ function AI_Servicio($servicio = 0) // ~X2C { $this->servicio = $servicio; } // -X2C // +X2C Operation 457 /** * @param mixed $db Base de datos o Resultado a utilizar. * * @return PEAR_Error * @access public */ function cargar($db) // ~X2C { $servicio = intval($this->servicio); if (is_a($db, 'db_result')) { $result = $db; // Si no es un resultado, hago el query. } else { $result = $db->query( "SELECT * FROM servicio WHERE servicio = $servicio" ); if (DB::isError($result)) { return $result; } } // Obtengo la fila. $row = $result->fetchRow(DB_FETCHMODE_ASSOC); if (!$row) { return new AI_Error(AI_ERROR_NO_RESULTADOS, "No hay más resultados en la DB [servicio=$servicio]"); } // Asigno valores al objeto. extract($row); $this->servicio = $servicio; $this->servicio_padre = $servicio_padre; $this->nombre = $nombre; $this->descripcion = $descripcion; $this->icono = $icono; # FIXME - new HTML_Icono (o no?) $this->link = $link; $this->link_ayuda = $link_ayuda; $this->necesita_logueo = $necesita_logueo; $this->habilitado = $habilitado; return true; } // -X2C // +X2C Operation 458 /** * @param DB $db DB donde guardar. * @param bool $nuevo Si es true, se fuerza a guardar el Servicio como nuevo. * * @return PEAR_Error * @access public */ function guardar($db, $nuevo = false) // ~X2C { $servicio = intval($this->servicio); $where = ''; $datos = array( 'servicio_padre' => intval($this->servicio_padre), 'nombre' => $this->nombre, 'descripcion' => $this->descripcion, 'icono' => $this->icono, 'link' => $this->link, 'link_ayuda' => $this->link_ayuda, 'necesita_logueo' => $this->necesita_logueo ? 1 : 0, 'habilitado' => $this->habilitado ? 1 : 0, ); if ($servicio and !$nuevo) { $accion = DB_AUTOQUERY_UPDATE; $where = "servicio = $servicio"; } else { $accion = DB_AUTOQUERY_INSERT; // Si no tiene ID, le asigno uno nuevo. if (!$servicio) { $servicio = $db->nextId('servicio'); if (DB::isError($servicio)) { return $servicio; } $this->servicio = $servicio; } $datos['servicio'] = $servicio; } $res = $db->autoExecute('servicio', $datos, $accion, $where); if (DB::isError($res)) { return $res; } return true; } // -X2C // +X2C Operation 456 /** * @param DB $db DB de donde borrar. * * @return PEAR_Error * @access public */ function borrar($db) // ~X2C { $servicio = intval($this->servicio); if ($servicio) { $res = $db->query( "DELETE FROM servicio WHERE servicio = $servicio"); if (DB::isError($res)) { return $res; } return true; } return PEAR::raiseError("No hay un servicio válido para borrar"); } // -X2C // +X2C Operation 463 /** * @param DB $db DB de donde cargar los hijos. * * @return PEAR_Error * @access public */ function cargarHijos($db) // ~X2C { $servicio = intval($this->servicio); $result = $db->query("SELECT * FROM servicio WHERE servicio_padre = $servicio"); if (DB::isError($result)) { return $result; } $this->_hijos = array(); $hijo = new Servicio; $err = $hijo->cargar($result); while (!PEAR::isError($err)) { $this->_hijos[] = $hijo->__clone(); $err = $hijo->cargar($result); } // Si no hay mas resultados, entonces terminó bien. if (AI_Error::isError($err) and $err->getCode() == AIERROR_NO_RESULTADOS) { return true; } // Si no, se devuelve el error. return $err; } // -X2C // +X2C Operation 501 /** * @return Servicio * @access public */ function __clone() // ~X2C { return $this; } // -X2C } // -X2C Class :AI_Servicio ?>