/** * 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 la representación html de un campo. * Se utiliza en consulta. * @return valor */ function ddlib_visualizarCampo(&$aCampo, $campo, $fila) { $idioma = tIdiomaPorDefecto(); $aParametros = explode(' ', $aCampo["tipo"]); $formato = $aParametros[0]; switch ($formato) { case "adjunto": case "url": if ($campo) { // @TODO verificar otros protocolos if (substr($campo, 0, 4) != "http") { $cTemp = (isset($aParametros[1]) ? $aParametros[1] : "") . $campo; } else { $cTemp = $campo; } return "<a href='{$cTemp}'>" . corta($campo, 25) . "</a>"; } else { return ""; } case "implode": return is_array($campo) ? implode(substr($aCampo["tipo"], 8), $campo) : $campo; case "lista": if (isset($aCampo["lista"])) { return isset($aCampo["lista"][$campo]) ? $aCampo["lista"][$campo] : $campo; } elseif (isset($aParametros[1])) { return mlista($aParametros[1], $campo); } else { return $campo; } case "checkbox": case "SINO": return "<strong>" . ($campo ? tIdiomaLocale("SI") : tIdiomaLocale("NO")) . "</strong>"; case "siNO": return $campo ? tIdiomaLocale("SI") : "<strong>" . tIdiomaLocale("NO") . "</strong>"; case "SIno": return $campo ? "<strong>" . tIdiomaLocale("SI") . "</strong>" : tIdiomaLocale("NO"); case "sino": $campo = $campo ? "SI" : "NO"; return tIdiomaLocale($campo); case "si": $campo = $campo ? "SI" : ""; return tIdiomaLocale($campo); case "no": $campo = $campo ? "" : "NO"; return tIdiomaLocale($campo); case "funcioncampo": return call_user_func($aParametros[1], $campo); case "funcion": case "funcionregistro": return call_user_func($aParametros[1], $fila); case "imagen": case "irudia": if ($campo) { $cTemp = (isset($aParametros[1]) ? $aParametros[1] . "/" : "") . $campo; $atributos = ""; if (isset($aCampo["ancho"])) { $atributos = " width='{$aCampo[ancho]}'"; } if (isset($aCampo["alto"])) { $atributos .= " height='{$aCampo[alto]}'"; } return "<img src='{$cTemp}' alt='{$campo}'{$atributos}>"; } else { return ""; } case "fecha": return fecha_mysql_php($campo, tIdiomaLocale("fecha")); default: return $campo; } return $campo; }