]> git.llucax.com Git - mecon/meconlib.git/commitdiff
Se agregan los primeros metodos para agregar campos arbitrarios a cada fila usando...
authorLeandro Lucarella <llucax@gmail.com>
Fri, 17 Oct 2003 22:58:52 +0000 (22:58 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Fri, 17 Oct 2003 22:58:52 +0000 (22:58 +0000)
lib/MECON/HTML/TablaDB.php

index 35b4bba053e1ee3c9ed6e98d65541fa4a02d6f00..0b8e90ed0e5712163bee5b22a5ef2207e74a9ee0 100644 (file)
@@ -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;
+    }
+
 }
 
 ?>