*/
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
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);
}
}
}
}
+ 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;
+ }
+
}
?>