/** * Consulta de varios registros * @param $cTitulo titulo (h2) * @param $aTable definiciones DD * @param $cSQL consulta SQL sin LIMIT * @param $aNodo información sobre controlador,accion e id. * @param $aOpciones menu para cada registro * @param $aMenu Menu de opciones (puede ser una cadena) */ function tablaConsulta($cTitulo, $aTabla, $cSQL, $aNodo, $aOpciones = "", $aMenu = NULL) { global $aEstado, $hizkuntza; $order = $aEstado["order"]; $orderBy = $aEstado["orderby"]; $lHayOpciones = is_array($aOpciones) and count($aOpciones); if ($cTitulo != "") { $cResul .= "<h2><span>{$cTitulo}</span></h2>\n"; } else { $cResul = ""; } // Ordenar los campos if ($aEstado["order"] != "" and stripos($cSQL, "order by") === false) { $cSQL .= sql_order($aTabla[$aEstado["order"]]["order"], $aEstado["orderby"] == "ASC" ? " ASC" : " DESC"); } // incluir el menu de Opciones if (!is_null($aMenu)) { if (is_array($aMenu)) { foreach ($aMenu as $unaOpcion) { $lista .= "<li>{$unaOpcion}</li>\n"; } } else { $lista .= "<li>{$aMenu}</li>\n"; } $cResul .= "<div id='menuConsulta'>\n<ul>\n{$lista}</ul></div>"; } $aPaginacion = paginacion($cSQL, "leyenda", 20, 10, $hizkuntza, $aNodo); $cResul .= "<table class='consulta'>\n"; /* Dibujar las cabeceras de datos */ $nCont = 0; $lista = ""; foreach ($aTabla as $oCelda) { if ($oCelda["acceso"] !== false) { $lista .= "<th>"; $cNodo = "c={$aNodo[c]}&a={$aNodo[a]}"; if (isset($oCelda["order"])) { if ($nCont == $order) { $lista .= "<a href='?{$cNodo}&orderby=" . ($orderBy == "ASC" ? "DESC" : "ASC") . "&order={$nCont}' class='orden{$orderBy}'>{$oCelda[cabecera]}</a>"; } else { $lista .= "<a href='?{$cNodo}&orderby=ASC&order={$nCont}' class='ordenASC'>" . $oCelda["cabecera"] . "</a>"; } } else { $lista .= $oCelda["cabecera"]; } $lista .= "</th>\n"; $nCont++; } } if ($lHayOpciones) { $lista .= "<th>" . t("Opciones") . "</th>"; } $cResul .= "<thead>\n<tr>\n{$lista}</tr>\n</thead>"; /* Dibujar el pie de la pagina */ $cResul .= "<tfoot><tr><td colspan='" . (count($aTabla) + ($lHayOpciones ? 1 : 0)) . "' >" . $aPaginacion[3] . "</td></tr></tfoot>\n"; $cResul .= "<tbody>\n"; /* dibujar los datos */ $lPar = true; $rsEmaitza = mysql_query($aPaginacion[2]); while ($lerroa = mysql_fetch_array($rsEmaitza)) { $cResul .= "\n<tr" . ($lPar ? "" : " class='impar' ") . ">"; // dibujamos cada celda según su tipo // foreach ($aTabla as $oCelda) { if ($oCelda["acceso"] === false) { continue; } $aParametros = explode(" ", $oCelda["campo"]); // ------- Primero calcular el campo ---------- switch ($aParametros[0]) { case "lista": if (isset($aParametros[2]) and isset($aParametros[1])) { $campo = mlista($aParametros[2], $lerroa[$aParametros[1]]); } else { $campo = ""; } break; case "idioma": case "funcionget": $campo = tCampo($lerroa, $aParametros[1], $aParametros[2]); break; case "funcion": if (isset($aParametros[2])) { $campo = call_user_func($aParametros[1], $lerroa[$aParametros[2]]); } else { $campo = call_user_func($aParametros[1], $lerroa); } break; default: $campo = $lerroa[$aParametros[0]]; } // -------- segundo, calcular su representación ------------ $aParametros = explode(" ", $oCelda["tipo"]); $formato = $aParametros[0]; switch ($formato) { /* Los parametros pueden ser: - el nombre del campo - una función que se denotara funcion NombreFuncion [Campo] - una lista campo cadenalista */ case "adjunto": case "url": $cTempBase = isset($aParametros[1]) ? $aParametros[1] : ""; $visualizar = "<a href='{$cTempBase}/{$campo}'>" . corta($campo, 25) . "</a>"; break; case "lista": if (isset($aParametros[1])) { $visualizar .= mlista($aParametros[1], $campo); } else { $visualizar .= $campo; } break; case "sino": $idiomas = $hizkuntza == "es" ? array("No", "Si") : array("Ez", "Bai"); $visualizar = $idiomas[$campo]; break; case "si": $idiomas = $hizkuntza == "es" ? array("", "Si") : array("", "Bai"); $visualizar = $idiomas[$campo]; break; case "no": $idiomas = $hizkuntza == "es" ? array("No", "") : array("Ez", ""); $visualizar = $idiomas[$campo]; break; case "funcion": $visualizar = call_user_func($aParametros[1], isset($aParametros[2]) ? $campo : $lerroa); break; default: $visualizar = $campo; } $class = isset($oCelda["class"]) ? $oCelda["class"] : $formato; if (isset($oCelda["styling"])) { $cResul .= "<td class='{$class}'>" . call_user_func($oCelda["styling"], $visualizar) . "</td>"; } else { $cResul .= "<td class='{$class}'>{$visualizar}</td>"; } } /* ahorita dibujamos las opciones */ if ($lHayOpciones) { $cResul .= "<td class='opciones'>"; foreach ($aOpciones as $aOpcion) { if (is_array($aOpcion)) { $cResul .= strtr($aOpcion["enlace"], array("%ID%" => $lerroa[$aOpcion["ID"]])) . " "; } else { $cResul .= sprintf($aOpcion, $lerroa[0]); } } $cResul .= "</td>"; } $cResul .= "</tr>"; $lPar = !$lPar; } $cResul .= "</tbody>\n"; $cResul .= "</table>\n"; mysql_free_result($rsEmaitza); return $cResul; }
/** * Obtiene el valor de un campo contenido en un array de datos * Se utiliza en consulta. * @return valor */ function ddlib_obtenerCampo(&$aCampo, $aFila) { if (is_array($aCampo["campos"])) { foreach ($aCampo["campos"] as $campo => $tipo) { $aRet[$campo] = $aFila[$campo]; } return $aRet; } $aParametros = explode(" ", $aCampo["campo"]); switch (strtolower($aParametros[0])) { case "funcionget": // depreceated. Usar tcampo. // depreceated. Usar tcampo. case "tcampo": $idioma = isset($aParametros[2]) ? $aParametros[2] : ""; return tCampo($aFila, $aParametros[1], $idioma); case "serialize": case "serializa": //para castellano return unserialize($aFila[$aParametros[1]]); case "funcion": if (count($aParametros) == 3) { return call_user_func($aParametros[1], $aFila[$aParametros[2]]); } else { return call_user_func($aParametros[1], $aFila); } default: return $aFila[$aParametros[0]]; } return ""; }