Exemplo n.º 1
0
/**
 * 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]}&amp;a={$aNodo[a]}";
            if (isset($oCelda["order"])) {
                if ($nCont == $order) {
                    $lista .= "<a href='?{$cNodo}&amp;orderby=" . ($orderBy == "ASC" ? "DESC" : "ASC") . "&amp;order={$nCont}' class='orden{$orderBy}'>{$oCelda[cabecera]}</a>";
                } else {
                    $lista .= "<a href='?{$cNodo}&amp;orderby=ASC&amp;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;
}
Exemplo n.º 2
0
/**
 * 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;
}