<?php 
//=====================================================================================
//INICIO LA SESION---------------------------------------------------------------------
//=====================================================================================
session_start();
//=====================================================================================
//CONEXION-----------------------------------------------------------------------------
//=====================================================================================
require_once '../conn/conn.php';
$bd_conn = new connexion();
$bd_conn->query("SET NAMES 'utf8'");
setlocale(LC_TIME,"es_ES");
//=====================================================================================
//VARIABLES----------------------------------------------------------------------------
//=====================================================================================
require_once '../core/config.php';
$file = $_FILES;
$clave = "20" . $_GET["id_doc"];
//=====================================================================================
//CODE---------------------------------------------------------------------------------
//=====================================================================================
$storeFolder = '../../assets/temp/';
$dir = opendir('../../assets/temp/');
while($f = readdir($dir))
{
if((time()-filemtime('../../assets/temp/'.$f) > 5) and !(is_dir('../../assets/temp/'.$f)))
unlink('../../assets/temp/'.$f);
}
if (!empty($_FILES)) {
    $tempFile = $_FILES['file']['tmp_name'];      
    $targetFile = $storeFolder . $_FILES['file']['name'];  //5
    move_uploaded_file($tempFile,$targetFile); //6
    $entrada = get_id_unico();
    $nombre = $_FILES['file']['name'];
    $nombre = trim($nombre);
    $imagen_temporal  = "../../assets/temp/".$nombre;
    $tamano = filesize($imagen_temporal);
    $ext = get_extension($nombre);
    $ambito = "PUB";
    $origen = "EXT";
    $user = "EXT";
    $ordenador = "EXTERNO";
    $contacto = 0;
    $nombre_previo = nombreDocumento($bd_conn,$clave);
    $nombre_doc_new = $nombre_previo . '.' . $ext;
    $fp     = fopen($imagen_temporal, 'r');
    $data = fread($fp, filesize($imagen_temporal));
    fclose($fp);
    $data = mysqli_real_escape_string($bd_conn, $data);
    $max_fichero = maxTamanoFichero($bd_conn);
    $tabla_sufijo = tablaDestDisp($bd_conn, $tamano, $max_fichero);
    if ($tabla_sufijo == "") {
            $sufijo = substr(get_id_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_conn, $parte, $sufijo, $value, $tamano, strlen($value));
                $parte++;
            }
    }else{
            $entrada = get_id_unico();
            $fichero_ok = subirContenido($bd_conn, $parte, $sufijo, $data, $tamano, strlen($data));
    }
    if ($parte == 1) {
            $partes = $parte;
    }else{
            $partes = $parte -1;
    }
    docBibliotecaElementos($bd_conn, $clave, $nombre_doc_new, $ext, $tamano, $user, $entrada, $ordenador, $partes, $sufijo, $origen, DOCS_APORTADOS);
    historialLog($bd_conn);   
}
//=====================================================================================
//FUNCIONES----------------------------------------------------------------------------
//=====================================================================================
function docBibliotecaElementos($bd, $clave, $nombre, $ext, $tamano, $user, $entrada, $ordenador, $partes, $sufijo, $origen, $estado_new) {
	$query = "	UPDATE BIBLIOTECA_ELEMENTOS 
				SET NOMBRE = '$nombre', EXTENSION = '$ext', TAMANO = $tamano, ORIGEN = 'AWA', CREADOR = '$user', ENTRADA = '$entrada', ORDENADOR = '$ordenador', MODIFICACION = now(), ACCION = '', PARTES = $partes, SUFIJO = '$sufijo', ESTADO_PC = $estado_new
				WHERE CLAVE = '$clave'";
    mysqli_query($bd, $query);
	
}
function nombreDocumento($bd,$clave) {
	$sql = "	SELECT NOMBRE
				FROM BIBLIOTECA_ELEMENTOS
				WHERE CLAVE = '$clave'";
	$base = $bd->query($sql);
	$row = mysqli_fetch_array($base);
	$result = $row['NOMBRE'];
	return $result;
	$base->close();
}
function get_id_unico() {
	return date( "YmdHis" ) . sprintf( "%04d", rand( 0, 9999 ) );
}
function get_extension($nombre) {
	// Convierto la cadena en un arreglo
	$a = explode( '.', $nombre );
	$ext = end( $a );
	$ext = strtoupper( $ext );
	return $ext;
}
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) {
	$sql =  " 	SELECT TABLE_NAME,ROUND(DATA_LENGTH/(1024*1024*1024),1) AS GB
				FROM INFORMATION_SCHEMA.TABLES
				WHERE TABLE_SCHEMA = '".NAME."'
				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();
}
function subirContenido($bd, $parte, $sufijo, $data, $tamano, $size) {
	global $clave, $entrada;
	$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 historialLog($bd) {
	global $clave, $user, $nombre, $ordenador, $ambito, $acceso_doc, $tamano, $user;
	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(), '44', '$nombre', '$user', '$ordenador', '$ambito', '$acceso_doc', 'D', $tamano, '$user', 0, 1)") ;
}
?>