From: Leandro Lucarella Date: Fri, 17 Oct 2003 20:27:51 +0000 (+0000) Subject: Se pone el nuevo metodo addPager() en una subclase. X-Git-Tag: svn_import~226 X-Git-Url: https://git.llucax.com/mecon/meconlib.git/commitdiff_plain/b6ce5f0536503a2dc458c2b7a857dea6b324d97e?ds=inline Se pone el nuevo metodo addPager() en una subclase. --- diff --git a/lib/MECON/HTML/Tabla.php b/lib/MECON/HTML/Tabla.php index e6010a7..e85c06c 100644 --- a/lib/MECON/HTML/Tabla.php +++ b/lib/MECON/HTML/Tabla.php @@ -26,7 +26,6 @@ $Id$ require_once 'HTML/Table.php'; require_once 'MECON/HTML/Image.php'; -require_once 'MECON/DB/Pager.php'; /** * Libreria para le manejo de las tablas de los sistemas de intranet. @@ -603,112 +602,6 @@ class MECON_HTML_Tabla extends HTML_Table { } } - /** - * Agrega un páginador a la tabla, basado en un resultado de una base de datos. - * Ejemplo: - * @code - * $tabla = new MECON_HTML_Tabla(); - * $result = $db->query('SELECT * FROM tabla'); - * if (DB::isError($result)) { - * die('Error'); - * } - * $pager = $tabla->addPager($result); - * $tabla->addRow(array('Nombre', 'Apellido'), 'cabecera'); - * if ($pager->numRows()) { - * while ($row = $pager->fetchRow(DB_FETCHMODE_ASSOC)) { - * $tabla->addRow(array($row['nombre'], $row['apellido'])); - * } - * } else { - * $tabla->addRow(array(new MECON_HTML_Error('No se encontraron agentes.')), - * array('colspan' => 2)); - * } - * $tabla->display(); - * @endcode - * - * @param DB_Result $result Resultado de una consulta de base de datos. - * @param mixed $tipo Tipo de link(s) a agregar. Puede ser: - * - * Puede pasarse uno solo como un string o varios como un - * array. Si se pasa 'todo', se incluyen todos. - * Si se pasa null, se incluyen 'anterior', - * 'siguiente' y 'paginas'. - * @param mixed $link Dirección a la que apuntan los links generados. Puede - * ser un MECON_HTML_Link (para poder pasar variables por - * GET) o un string. - * @param int $limit Parámetro usado para crear el MECON_DB_Pager. - * @param int $maxpages Parámetro usado para crear el MECON_DB_Pager. - * - * @return MECON_DB_Pager Pager que se puede usar para realizar los fetch de - * los resultados de la página actual. - * - * @see MECON_DB_Pager - */ - function addPager($result, $tipo = null, $link = null, $limit = 10, $maxpages = 21) { - // Creo el pager con el resultado. - $pager = new MECON_DB_Pager($result, @$_GET['pager_from'], $limit, $maxpages); - // Obtengo un link válido. - if (!$link) { - $link = @$_SERVER['PHP_SELF']; - } - if (is_string($link)) { - $link = new MECON_HTML_Link($link, ''); - } - // Si es el tipo por defecto pone paginador nada más. - if (!$tipo) { - $tipo = array('anterior', 'paginas', 'siguiente'); - } - // Convierte tipo a array. - if (!is_array($tipo)) { - $tipo = array($tipo); - } - // Si se quiere mostrar todas las decoraciones del paginador. - if (in_array('todo', $tipo)) { - $tipo = array('anterior', 'paginas', 'siguiente', 'total', 'info'); - } - // Me fijo si tiene cada uno de los elementos y los agrego. - if (in_array('anterior', $tipo) and $pager->numRows() and $pager->currentpage != 1) { - $link->setGetVar('pager_from', $pager->prev); - $this->addLink('anterior', $link); - } - if (in_array('siguiente', $tipo) and $pager->numRows() and $pager->currentpage != $pager->numpages) { - $link->setGetVar('pager_from', $pager->next); - $this->addLink('siguiente', $link); - } - if (in_array('paginas', $tipo) and $pager->numRows() and $pager->numpages > 1) { - $from = @$_GET['pager_from']; - $pags = ''; - $lnk = $link->getContents(); - foreach ($pager->pages as $page => $start_row) { - if ($start_row == $from) { - $pags .= $page; - } else { - $link->setGetVar('pager_from', $start_row); - $link->setContents($page); - $pags .= $link->toHtml(); - } - if ($page != $pager->lastpage) { - $pags .= ' | '; - } - } - $link->setContents($lnk); - $this->updatePie($pags, 'centro'); - } - if (in_array('total', $tipo) and $pager->numRows()) { - $this->updateCabecera('Se encontraron ' . $pager->numrows . ' resultados.', 'izquierda'); - } - if (in_array('info', $tipo) and $pager->numRows()) { - $this->updateCabecera('Página ' . $pager->currentpage . ' de ' . $pager->numpages - . ' - ' . $pager->limit . ' resultados por página.', 'derecha'); - } - return $pager; - } - } ?> diff --git a/lib/MECON/HTML/TablaDB.php b/lib/MECON/HTML/TablaDB.php new file mode 100644 index 0000000..9a0d15e --- /dev/null +++ b/lib/MECON/HTML/TablaDB.php @@ -0,0 +1,144 @@ + +------------------------------------------------------------------------------- +$Id$ +-----------------------------------------------------------------------------*/ + +require_once 'MECON/DB/Pager.php'; +require_once 'MECON/HTML/Tabla.php'; + +/** + * Libreria para le manejo de las tablas de los sistemas de intranet. + * + */ +class MECON_HTML_TablaDB extends MECON_HTML_Tabla { + + /** + * Agrega un páginador a la tabla, basado en un resultado de una base de datos. + * Ejemplo: + * @code + * $tabla = new MECON_HTML_Tabla(); + * $result = $db->query('SELECT * FROM tabla'); + * if (DB::isError($result)) { + * die('Error'); + * } + * $pager = $tabla->addPager($result); + * $tabla->addRow(array('Nombre', 'Apellido'), 'cabecera'); + * if ($pager->numRows()) { + * while ($row = $pager->fetchRow(DB_FETCHMODE_ASSOC)) { + * $tabla->addRow(array($row['nombre'], $row['apellido'])); + * } + * } else { + * $tabla->addRow(array(new MECON_HTML_Error('No se encontraron agentes.')), + * array('colspan' => 2)); + * } + * $tabla->display(); + * @endcode + * + * @param DB_Result $result Resultado de una consulta de base de datos. + * @param mixed $tipo Tipo de link(s) a agregar. Puede ser: + * + * Puede pasarse uno solo como un string o varios como un + * array. Si se pasa 'todo', se incluyen todos. + * Si se pasa null, se incluyen 'anterior', + * 'siguiente' y 'paginas'. + * @param mixed $link Dirección a la que apuntan los links generados. Puede + * ser un MECON_HTML_Link (para poder pasar variables por + * GET) o un string. + * @param int $limit Parámetro usado para crear el MECON_DB_Pager. + * @param int $maxpages Parámetro usado para crear el MECON_DB_Pager. + * + * @return MECON_DB_Pager Pager que se puede usar para realizar los fetch de + * los resultados de la página actual. + * + * @see MECON_DB_Pager + */ + function addPager($result, $tipo = null, $link = null, $limit = 10, $maxpages = 21) { + // Creo el pager con el resultado. + $pager = new MECON_DB_Pager($result, @$_GET['pager_from'], $limit, $maxpages); + // Obtengo un link válido. + if (!$link) { + $link = @$_SERVER['PHP_SELF']; + } + if (is_string($link)) { + $link = new MECON_HTML_Link($link, ''); + } + // Si es el tipo por defecto pone paginador nada más. + if (!$tipo) { + $tipo = array('anterior', 'paginas', 'siguiente'); + } + // Convierte tipo a array. + if (!is_array($tipo)) { + $tipo = array($tipo); + } + // Si se quiere mostrar todas las decoraciones del paginador. + if (in_array('todo', $tipo)) { + $tipo = array('anterior', 'paginas', 'siguiente', 'total', 'info'); + } + // Me fijo si tiene cada uno de los elementos y los agrego. + if (in_array('anterior', $tipo) and $pager->numRows() and $pager->currentpage != 1) { + $link->setGetVar('pager_from', $pager->prev); + $this->addLink('anterior', $link); + } + if (in_array('siguiente', $tipo) and $pager->numRows() and $pager->currentpage != $pager->numpages) { + $link->setGetVar('pager_from', $pager->next); + $this->addLink('siguiente', $link); + } + if (in_array('paginas', $tipo) and $pager->numRows() and $pager->numpages > 1) { + $from = @$_GET['pager_from']; + $pags = ''; + $lnk = $link->getContents(); + foreach ($pager->pages as $page => $start_row) { + if ($start_row == $from) { + $pags .= $page; + } else { + $link->setGetVar('pager_from', $start_row); + $link->setContents($page); + $pags .= $link->toHtml(); + } + if ($page != $pager->lastpage) { + $pags .= ' | '; + } + } + $link->setContents($lnk); + $this->updatePie($pags, 'centro'); + } + if (in_array('total', $tipo) and $pager->numRows()) { + $this->updateCabecera('Se encontraron ' . $pager->numrows . ' resultados.', 'izquierda'); + } + if (in_array('info', $tipo) and $pager->numRows()) { + $this->updateCabecera('Página ' . $pager->currentpage . ' de ' . $pager->numpages + . ' - ' . $pager->limit . ' resultados por página.', 'derecha'); + } + return $pager; + } + +} + +?>