<?php
function adjuntaDocumento($bd, $name, $dir_temporal, $ordenador_ext, $user, $name_bd) {
        $clave = get_unico();
		$nombre = $name;
		$entrada = get_unico();
		$imagen_temporal  = $dir_temporal . $name;;
        $tamano = filesize($imagen_temporal);
        $a = explode( '.', $nombre );
        $ext = end( $a );
        $ext = strtoupper( $ext );
		$ambito = "PUB";
		$origen = "AWA";
		$dir_raiz = "AWA INBOX";
        $ordenador = $ordenador_ext;
        $padre = padreINBOX($bd, $user);
        $datos_padre = datosPadreDocumento($bd, $padre);
		$permiso = $datos_padre["ACCESO"];
		$archivo = $datos_padre["ARCHIVO"];
		$acceso_doc = $datos_padre["ACCESO"];
		$ubic_padre_doc = $datos_padre["UBICACION"];
        $ubicacion = $ubic_padre_doc.$padre."/";
		//ACCIONES=======================================================
        $exist_doc = docExist($bd, $nombre, $padre, $ambito);       
		while ( $exist_doc == 1) {
		    $a = explode( '.', $nombre );
		    $nombre_doc = $a[0];
		    $ext_doc = end( $a );
		    $cant_duplicado = numeroDocsDuplicados($bd, $nombre_doc, $padre);
		    $new_num = $cant_duplicado + 1;
		    $nombre = $nombre_doc."(".$new_num.").".$ext_doc;
		    $exist_doc = docExist($bd, $nombre, $padre, $ambito);
        }      
		$fp     = fopen($imagen_temporal, 'r');
		$data = fread($fp, filesize($imagen_temporal));
		fclose($fp);
		$data = mysqli_real_escape_string($bd, $data);
        $max_fichero = maxTamanoFichero($bd);
        $tabla_sufijo = tablaDestDisp($bd, $tamano, $max_fichero, $name_bd);
		if ($tabla_sufijo == "") {
		        $sufijo = substr(get_unico(),0, 14);
		        $tabla_sufijo = "FICHEROS_" . $sufijo;
		        $sql = "CREATE TABLE ". $tabla_sufijo . " LIKE FICHEROS_PATRON";
		        $base = $bd->query(strtoupper($sql));
		}else{
		        $sufijo = substr($tabla_sufijo, 9, 14);
        }      
        $parte = 1;
		if ( $tamano > 16777216 ) {
		        $array = str_split($data, 16777216);
		        foreach ($array as $key => $value) {
		            $fichero_ok = subirContenido($bd, $clave, $entrada, $parte, $sufijo, $value, $tamano, strlen($value));
		            $parte++;
		        }
		}else{
		        $entrada = get_unico();
		        $fichero_ok = subirContenido($bd, $clave, $entrada, $parte, $sufijo, $data, $tamano, strlen($data));
        }
        $partes = ($parte == 1) ? $parte : $parte -1;
        docBibliotecaElementos($bd, $clave, $nombre, $ext, $padre, $tamano, $acceso_doc, $user, $entrada, $ordenador, $partes, $sufijo, $ambito, $permiso, $ubicacion, $origen, $archivo);
        registroHistorialLog($bd, $clave, $user, $nombre, $ordenador, $ambito, $acceso_doc, $tamano);
        return $clave;
}
function registroHistorialLog($bd, $clave, $user, $nombre, $ordenador, $ambito, $acceso_doc, $tamano) {
    mysqli_query($bd, "INSERT INTO BIBLIOTECA_HISTORIAL 
                        (CLAVE, USUARIO, FECHA, ACCION, DOCUMENTO, CARPETA, ORDENADOR, AMBITO, ACCESO, TIPO, TAMANO, CREADOR, CONTROL, AWA) 
                        VALUES 
                        ('$clave', '$user', now(), '1', '$nombre', '$user', '$ordenador', '$ambito', '$acceso_doc', 'D', $tamano, '$user', 0, 1)") ;
}
function docBibliotecaElementos($bd, $clave, $nombre, $ext, $padre, $tamano, $acceso_doc, $user, $entrada, $ordenador, $partes, $sufijo, $ambito, $permiso, $ubicacion, $origen, $archivo) {
    mysqli_query($bd, "INSERT INTO BIBLIOTECA_ELEMENTOS 
                        (CLAVE, NOMBRE, EXTENSION, PADRE, TIPO, FECHA, TAMANO, AMBITO, ACCESO, CREADOR, ENTRADA, ORDENADOR, MODIFICACION, PARTES, VERMIN, SUFIJO, UBICACION, ORIGEN, ARCHIVO) 
                        VALUES 
                        ('$clave', '$nombre', '$ext', '$padre', 'D', now(), $tamano, '$ambito', '$permiso', '$user', '$entrada', '$ordenador', now(), $partes, '1.0', '$sufijo', '$ubicacion', '$origen', $archivo)") ;
}
function datosPadreDocumento($bd, $padre) {
    $sql = "    SELECT ACCESO, ARCHIVO, UBICACION
                FROM BIBLIOTECA_ELEMENTOS
                WHERE CLAVE = '$padre' AND TIPO = 'C' AND PAPELERA = 0";
    $base = $bd->query($sql);
    $row = mysqli_fetch_array($base);
    return $row;
    $base->close();
}
function subirContenido($bd, $clave, $entrada, $parte, $sufijo, $data, $tamano, $size) {
    $fichero_ok = mysqli_query($bd, "INSERT INTO FICHEROS_".$sufijo." 
                                    (CLAVE, PARTE, VERSION, FICHERO, TAMANO, ENTRADA, COMPRIMIDO, TAMANOREAL, ENCRIPTADO) 
                                    VALUES 
                                    ('$clave', $parte, 0, '$data', $tamano, '$entrada', 0, $size, 0)");
    return $fichero_ok;
}
function padreINBOX($bd,$user) {
    $sql = "    SELECT P.VALOR
                FROM PARAMETROS P
                WHERE P.CODIGO = 'CARP_INBOX' AND P.USUARIO = '$user'";
    $base = $bd->query($sql);
    $row = mysqli_fetch_array($base);
    $acceso = $row['VALOR'];
    return $acceso;
    $base->close();
}
function docExist($bd, $nombre, $padre, $ambito) {
    $sql =  "   SELECT COUNT(NOMBRE) AS CUANTOS
                FROM BIBLIOTECA_ELEMENTOS
                WHERE NOMBRE = '$nombre' AND PADRE = '$padre' AND PAPELERA = 0 AND AMBITO = '$ambito'";
    $base = $bd->query($sql);
    $row = mysqli_fetch_array($base);
    $doc_exist = $row['CUANTOS'];
    return $doc_exist;
    $base->close();
}
function numeroDocsDuplicados($bd, $nombre_doc, $padre_Del_doc){
    $sql =  " SELECT COUNT(E.CLAVE) AS TOTAL
              FROM BIBLIOTECA_ELEMENTOS E
              WHERE E.NOMBRE LIKE '$nombre_doc(%%' AND E.PADRE = '$padre_Del_doc'";
    $base = $bd->query($sql);
    $result = mysqli_fetch_array($base);
    $total = $result['TOTAL'];
    $base->close();
    return $total;
}
function maxTamanoFichero($bd) {
    $sql =  "   SELECT VALOR
                FROM PARAMETROS
                WHERE CODIGO = 'TAM_TABLABLOB'
                AND GRUPO = 'PRG'";
    $base = $bd->query($sql);
    $row = mysqli_fetch_array($base);
    $max_fich = $row['VALOR'];
    return $max_fich;
    $base->close();
}
function tablaDestDisp($bd, $tamano, $max_fichero, $name_bd) {
    $sql =  "   SELECT TABLE_NAME,ROUND(DATA_LENGTH/(1024*1024*1024),1) AS GB
                FROM INFORMATION_SCHEMA.TABLES
                WHERE TABLE_SCHEMA = '$name_bd'
                AND TABLE_NAME LIKE 'FICHEROS_2%%'
                AND (ROUND(DATA_LENGTH/(1024*1024*1024),1) + ROUND($tamano/(1024*1024*1024),1)) < (ROUND($max_fichero,1))
                ORDER BY DATA_LENGTH LIMIT 1";
    $base = $bd->query($sql);
    $row = mysqli_fetch_array($base);
    $tabla_sufijo = $row['TABLE_NAME'];
    return $tabla_sufijo;
    $base->close();
}
?>