/**
 * Función que construye la SQL para insertar o actualizar los datos y los guarda.
*/
function datuakGorde($cTabla, $cWhere, $aEdicion, $aMensajes = NULL)
{
    $cError = "";
    $aRet = "";
    //  Primero verificamos las condiciones de cada campo
    foreach ($aEdicion as $aDatos) {
        $cError .= isset($aDatos["verifica"]) ? dd_verificaCampo($aDatos) : "";
    }
    // Revisar los errores
    if ($cError != "") {
        if (!is_null($aMensajes) and isset($aMensajes["gaizki"])) {
            return mensajes($cError, "gaizki");
        }
        return FALSE;
    }
    $aSQL = sql_crear($cWhere ? "update" : "insert", $cTabla, $cWhere);
    // al terminar la verificación revisar los errores
    foreach ($aEdicion as $aDatos) {
        $aParametros = explode(" ", $aDatos["tipo"]);
        switch (strtolower($aParametros[0])) {
            case "hidden":
            case "info":
            case "codigodirecto":
            case "infofuncion":
            case "separador":
            case "verificapassword":
            case "readonly":
                // case "html":  quitado por Roger...PELMA!!
                break;
            case "adjunto":
                $lPendiente = true;
                break;
            case "imagen":
            case "irudia":
                if ($_REQUEST[$aDatos["campo"] . "_EZABATU"] == '1') {
                    sql_add($aSQL, $aDatos["campo"], "", "cadena");
                } else {
                    $lPendiente = true;
                }
                break;
            case "nuevopassword":
                if ($_REQUEST[$aDatos["campo"]] != "") {
                    if (isset($aParametros[3]) and $aParametros[3] == "md5") {
                        sql_add($aSQL, $aDatos["campo"], md5($_REQUEST[$aDatos["campo"]]), "cadena");
                    } else {
                        sql_add_request($aSQL, $aDatos["campo"], "cadena");
                    }
                }
                break;
            case "fijo":
                sql_add($aSQL, $aDatos["campo"], $aDatos["valor"], $aParametros[1]);
                break;
            case "listafuncion":
                sql_add_request($aSQL, $aDatos["campo"], $aParametros[2]);
                break;
            case "html":
                // añadido por RO 05/05/2010
                if (isset($aDatos["campo"])) {
                    sql_add_request($aSQL, $aDatos["campo"], $aParametros[0]);
                } elseif (isset($aDatos["campos"])) {
                    foreach ($aDatos["campos"] as $tcampo => $tipo) {
                        sql_add_request($aSQL, $tcampo, $tipo);
                    }
                }
                break;
            default:
                sql_add_request($aSQL, $aDatos["campo"], $aParametros[0]);
        }
    }
    // si hemos recogido campos, salvamos (puede ser un caso de solo imágenes )
    if (sql_esvacia($aSQL)) {
        $lResul = true;
    } else {
        $lResul = mysql_query(sql_sql($aSQL));
    }
    if ($lResul and $lPendiente) {
        // hacemos una seguna pasada para la imágenes, los adjuntos y demás.
        // preparamos la nueva ID
        if ($cWhere == "") {
            $mID = mysql_insert_id();
            $campoID = mysql_campoClave($cTabla);
            $aSQL = sql_crear("update", $cTabla, "{$campoID}={$mID}");
        } else {
            $campoID = mysql_campoClave($cTabla);
            $mID = mysql_mlookup("SELECT {$campoID} FROM {$cTabla} WHERE {$cWhere}");
            $aSQL = sql_crear("update", $cTabla, $cWhere);
        }
        // ahorita buscamos imágenes y demás
        foreach ($aEdicion as $aDatos) {
            $aParametros = explode(" ", $aDatos["tipo"]);
            $cTipo = strtolower($aParametros[0]);
            $cFile = $aDatos["campo"];
            if (($cTipo == "adjunto" or $cTipo == "imagen" or $cTipo == "irudia") and isset($_FILES[$cFile]) and $_FILES[$cFile]["name"] and isset($aParametros[1])) {
                if (isset($aParametros[2])) {
                    $aTempFile = extrae_ExtensionNombre($_FILES[$cFile]["name"]);
                    $cNuevoNombre = strtr($aParametros[2], array("%i" => $mID, "%n" => $aTempFile["nombre"], "%e" => $aTempFile["ext"]));
                } else {
                    $cNuevoNombre = $_FILES[$cFile]["name"];
                }
                if (!move_uploaded_file($_FILES[$cFile]["tmp_name"], $aParametros[1] . "/" . $cNuevoNombre)) {
                    echo sprintf("<div class='gaizkiTxiki'>Error al subir el fichero (campo %s). ¿tiene más de %sbytes?</div>\n", $aDatos["campo"], ini_get("upload_max_filesize"));
                } else {
                    sql_add($aSQL, $aDatos["campo"], $cNuevoNombre, "cadena");
                    // ahora vemos si hay que hacer thumbnail
                    if (($cTipo == "imagen" or $cTipo == "irudia") and isset($aDatos["thumbnail"])) {
                        $aThumb = explode(" ", $aDatos["thumb"]);
                        switch (count($aThumb)) {
                            case "0":
                                break;
                            case "1":
                                $aThumb[1] = $aThumb[0];
                            case "2":
                                $aThumb[2] = 75;
                            case "3":
                                $aThumb[3] = "thumb";
                            case "4":
                                $aThumb[4] = "nocrop";
                            default:
                                crearThumbnail($aParametros[1], $cNuevoNombre, $aThumb[3], $aThumb[0], $aThumb[1], $aThumb[2], $aThumb[4]);
                        }
                    }
                    // ahora vermos si hay que ajustar la imagen
                    if (($cTipo == "imagen" or $cTipo == "irudia") and isset($aDatos["ajustar"])) {
                        $aThumb[0] = (int) $aDatos["ajustar"];
                        mImageResize($aParametros[1] . "/" . $cNuevoNombre, $aParametros[1] . "/" . $cNuevoNombre, "KEEP_PROPORTIONS_ON_BIGGEST", $aThumb[0]);
                    }
                }
            }
        }
        // grabamos si es que hemos podido mover
        if (!sql_esvacia($aSQL)) {
            mysql_query(sql_sql($aSQL));
        }
    }
    // DEBUG
    if (!$lResul) {
        echo "<h3>Error</h3>" . sql_sql($aSQL) . "<br>" . mysql_error();
    }
    if (!is_null($aMensajes)) {
        if ($lResul) {
            echo "<div class='ondo'>" . $aMensajes["ondo"] . "</div>\n";
        } else {
            echo "<div class='gaizki'>" . $aMensajes["gaizki"] . "<p>SQL:" . sql_sql($aSQL) . "</p><p>MYSQL:" . mysql_error() . "</p></div>\n";
        }
    }
    return $lResul;
}
Beispiel #2
0
function ddlib_guardarAdjuntos($cTabla, $cWhere, $aEdicion)
{
    // hacemos una seguna pasada para la imágenes, los adjuntos y demás.
    // preparamos la nueva ID
    if ($cWhere == "") {
        $mID = mysql_insert_id();
        $campoID = mysql_campoClave($cTabla);
        $aSQL = sql_crear("update", $cTabla, "{$campoID}={$mID}");
    } else {
        $campoID = mysql_campoClave($cTabla);
        $mID = mysql_mlookup("SELECT {$campoID} FROM {$cTabla} WHERE {$cWhere}");
        $aSQL = sql_crear("update", $cTabla, $cWhere);
    }
    // ahorita buscamos imágenes y demás
    foreach ($aEdicion as $aDatos) {
        $aParametros = explode(" ", $aDatos["tipo"]);
        $cTipo = strtolower($aParametros[0]);
        $cFile = $aDatos["campo"];
        if ($cTipo == "adjunto" || $cTipo == "imagen" || $cTipo == "irudia" and isset($_FILES[$cFile]) and $_FILES[$cFile]["name"] and isset($aParametros[1])) {
            if (isset($aParametros[2])) {
                // mascara para guardar el nombre del nuevo fichero
                $aTempFile = extrae_ExtensionNombre($_FILES[$cFile]["name"]);
                $cNuevoNombre = strtr($aParametros[2], array("%i" => $mID, "%n" => $aTempFile["nombre"], "%e" => $aTempFile["ext"]));
            } else {
                $cNuevoNombre = $_FILES[$cFile]["name"];
            }
            if (!move_uploaded_file($_FILES[$cFile]["tmp_name"], $aParametros[1] . "/" . $cNuevoNombre)) {
                echo sprintf("<div class='gaizkiTxiki'>Error al subir el fichero (campo %s). ¿tiene más de %sbytes?</div>\n", $aDatos["campo"], ini_get("upload_max_filesize"));
            } else {
                sql_add($aSQL, $aDatos["campo"], $cNuevoNombre, "cadena");
                // ahora vemos si hay que hacer thumbnail
                if ($cTipo == "imagen" || $cTipo == "irudia") {
                    if (isset($aDatos["thumbnail"])) {
                        $aThumb = explode(" ", $aDatos["thumbnail"]);
                        switch (count($aThumb)) {
                            case "0":
                                break;
                            case "1":
                                $aThumb[1] = $aThumb[0];
                            case "2":
                                $aThumb[2] = 75;
                            case "3":
                                $aThumb[3] = "thumb";
                            case "4":
                                $aThumb[4] = "nocrop";
                            default:
                                crearThumbnail($aParametros[1], $cNuevoNombre, $aThumb[3], $aThumb[0], $aThumb[1], $aThumb[2], $aThumb[4]);
                        }
                    }
                    // ahora vermos si hay que ajustar la imagen
                    if (isset($aDatos["ajustar"])) {
                        $aThumb[0] = (int) $aDatos["ajustar"];
                        mImageResize($aParametros[1] . "/" . $cNuevoNombre, $aParametros[1] . "/" . $cNuevoNombre, "KEEP_PROPORTIONS_ON_BIGGEST", $aThumb[0]);
                    }
                }
            }
        }
    }
    // grabamos si es que hemos podido mover
    if (!sql_esvacia($aSQL)) {
        mysql_query(sql_sql($aSQL));
    }
}