예제 #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;
}
예제 #2
0
/**
 * 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 "";
}