From: Leandro Lucarella Date: Fri, 17 Oct 2003 22:58:52 +0000 (+0000) Subject: Se agregan los primeros metodos para agregar campos arbitrarios a cada fila usando... X-Git-Tag: svn_import~221 X-Git-Url: https://git.llucax.com/mecon/meconlib.git/commitdiff_plain/5c082848cbffbb80629be640288fa243684bf645?ds=sidebyside Se agregan los primeros metodos para agregar campos arbitrarios a cada fila usando los resultados de la DB. --- diff --git a/lib/MECON/HTML/TablaDB.php b/lib/MECON/HTML/TablaDB.php index 35b4bba..0b8e90e 100644 --- a/lib/MECON/HTML/TablaDB.php +++ b/lib/MECON/HTML/TablaDB.php @@ -42,6 +42,20 @@ class MECON_HTML_TablaDB extends MECON_HTML_Tabla { */ var $_desc = 'resultados'; + /** + * Datos a agregar delante de cada fila que se agregue desde una base de datos. + * Cada elemento del array es a su vez un array cuyo primer elemento es el + * formato del texto a agregar (tipo printf()) y el segundo es un array con los + * campos de la DB a utilizar para ese formato en una fila dada. + */ + var $_prependRowsData = array(); + + /** + * Datos a agregar al final de cada fila que se agregue desde una base de datos. + * El formato es el mismo que el de _prependRowsData. + */ + var $_appendRowsData = array(); + /** * Constructor. * Puede recibir como parametro un string con los atributos que se @@ -199,9 +213,15 @@ class MECON_HTML_TablaDB extends MECON_HTML_Tabla { function addRowsResult($result, $campos) { while ($row = $result->fetchRow(DB_FETCHMODE_ASSOC)) { $datos = array(); + if ($this->_prependRowsData) { + $datos = $this->_buildRowsData($datos, $row, $this->_prependRowsData); + } foreach ($campos as $campo) { $datos[] = $row[$campo]; } + if ($this->_appendRowsData) { + $datos = $this->_buildRowsData($datos, $row, $this->_appendRowsData); + } $this->addRow($datos); } } @@ -235,6 +255,42 @@ class MECON_HTML_TablaDB extends MECON_HTML_Tabla { } } + function prependRowsData($format, $campos = array()) { + if (!is_array($campos)) { + $campos = array($campos); + } + $this->_prependRowsData[] = array($format, $campos); + } + + function appendRowsData($format, $campos = array()) { + if (!is_array($campos)) { + $campos = array($campos); + } + $this->_appendRowsData[] = array($format, $campos); + } + + function _buildRowsData($datos, $row, $array) { + if ($array) { + foreach ($array as $data) { + list($format, $fields) = $data; + if ($fields) { + $args = array($format); + foreach ($fields as $field) { + if (is_array($row)) { + $args[] = $row[$field]; + } else { + $args[] = $row->$field; + } + } + $datos[] = call_user_func_array('sprintf', $args); + } else { + $datos[] = $format; + } + } + } + return $datos; + } + } ?>