<?php 

	include './include/headers.inc';

require_once './include/dbconn.inc';
require_once 'pdf.php';
require_once 'evento.php';
require_once 'imagick.php';

$data = json_decode(file_get_contents("php://input"));

if (empty($_POST)){
	//$data = json_decode(file_get_contents("php://input"));
	$vaccion=$data->accion;
	//$vaccion="listado";
	
}
else{
	$vaccion=$_POST["accion"];
	//$vaccion="listado";
}

switch ($vaccion) {
	case "preview":
		$vidpagina=$data->jidpagina;
		$dbconn=conectardb();
		Preview ($dbconn,$vidpagina);
        break;
	case "alta":
		$vidpagina=$data->jidpagina;
		Alta ($dbconn,$vidpagina);
        break;
	case "listado":
		$videdicion=$data->jidedicion;
		$vestadopagina=$data->jestadopagina;
		$vusuario=$data->jidusuario;
		//$videdicion=94;
		ConsultaPaginaporidEdicion($videdicion,$vestadopagina,$vusuario);
        break;
	case "listadoFiltro":
		$videdicion=$data->jidedicion;
		$vestadopagina=$data->jestadopagina;
		$vusuario=$data->jidusuario;
		$vfolios=$data->jfolios;
		$vensenyas=$data->jensenyas;
		//$videdicion=94;
		ConsultaPaginaporidEdicionFiltro($videdicion,$vestadopagina,$vusuario,$vfolios,$vensenyas);
        break;

	case "actualizaestado":
		$vidpaginas=explode(',',$data->jidpaginas);
		$vestadopagina=$data->jestadopagina;
		$vfechaestado=$data->jfechaestado;
		$vusuario=$data->jidusuario;
		$vcliente=$data->jidcliente;
		CambiaEstadoPagina($vidpaginas,$vestadopagina,$vfechaestado,$vusuario,$vcliente);//control de permisos
        break;
	case "elimina":
		$vidpaginas=explode(',',$data->jidpaginas);
		$vusuario=$data->jidusuario;
		EliminaPagina($vidpaginas,$vusuario);
        break;		
	case "upload":
		$vidusuario=$_POST["jidusuario"];
		$videdicion=$_POST["jidedicion"];
		$vidcliente=$_POST["jidcliente"];
		//EscribeJsonPagina(upload($vidusuario,$videdicion));
		upload($vidusuario,$videdicion,$vidcliente);
        break;
	case "consultaversionesdepagina":
		$vidpagina=$data->jidpagina;
		ConsultaVersionesdePagina($vidpagina);
        break;
	case "pasaraold":
		$vidpaginas=explode(',',$data->jidpaginas);
		$vidusuario=$data->jidusuario;
		//$vidpaginas=[900,901];
		PasaraOld($vidpaginas,$vidusuario);
        break;
	case "retornar":
		$vidpaginas=explode(',',$data->jidpaginas);
		$vidusuario=$data->jidusuario;
		//$vidpaginas=[935,903];
		Retornar($vidpaginas,$vidusuario);
        break;
	case "lupaSuperalta":
		$vidpagina=$data->jidpagina;
		$vidusuario=$data->jidusuario;
		//$vidusuario=2330;
		//$vidpagina=169;
		lupa($vidpagina,$vidusuario);
        break;
		
}

function upload($vidusuario,$videdicion,$vidcliente){ //control de permisos
$allowed = array('pdf');
chdir ("../");
$vraiz=getcwd();
$pathuser="frontend/users/". $vidusuario;
$target_path ="frontend/users/". $vidusuario."/upload/";

if (!file_exists ($target_path)){
	mkdir ($target_path,0777,true);
	chmod($target_path, 0777);     
   }
$target_path=$target_path."/";   
//$vpathtotal=$vraiz."/".$target_path;
$vpathtotal=$target_path;
$vraiz=$vraiz.$pathuser;

if(  strtolower( $_SERVER[ 'REQUEST_METHOD' ] ) == 'post' && !empty( $_FILES ) ){
	$narchivos=[];
	$narchivos["recibidos"]=count($_FILES['images']['tmp_name']);
	$narchivos["ok"]=[];
	$narchivos["error"]=[];
	$narchivos["duplicados"]=[];
	$narchivos["numduplicados"]=[];
	$narchivos["numok"]=[];
	$iok=0;
	$ierror=0;
	$iduplicados=0;
    foreach($_FILES['images']['tmp_name'] as $key => $tmp_name){
		$file_name = $_FILES['images']['name'][$key];

		$extension = pathinfo($file_name, PATHINFO_EXTENSION);
		if(in_array(strtolower($extension), $allowed)){
			$file_size =$_FILES['images']['size'][$key];
			$file_tmp =$_FILES['images']['tmp_name'][$key];
			$file_type=$_FILES['images']['type'][$key]; 
			
			if (!RevisaRepeticionesPagina($file_name)){

				move_uploaded_file($file_tmp,$target_path.$file_name);
				$narchivos["ok"][$iok]=$file_name;
				$iok++;
			}
			else {
				$narchivos["duplicados"][$iduplicados]=$file_name;
				$vtabla="edicion";
				$tipo="upload";
				$categoria="err";
				$mensaje=$narchivos["duplicados"][$iduplicados]. " ya existe y no ha sido registrado";
				InsertaEvento($mensaje,$vidusuario,$vtabla,$videdicion,$videdicion,$tipo,$categoria);
				$iduplicados ++;
			}
		}
		else{
			$narchivos["error"][$ierror]=$file_name;
			$ierror++;
			}
		}
	$vtabla="edicion";
	$tipo="upload";
	$categoria="log";
	for ($i=0;$i<count($narchivos["ok"]);$i++){
		$mensaje=$narchivos["ok"][$i]. " subido correctamente";
		InsertaEvento($mensaje,$vidusuario,$vtabla,$videdicion,$videdicion,$tipo,$categoria);
	}
	PasaInsertaPdf($vidusuario,$narchivos["ok"],$videdicion,$target_path,$vpathtotal,$pathuser,$vraiz,$vidcliente);//control de permisos
	$narchivos["numduplicados"]=count($narchivos["duplicados"]);
	$narchivos["numok"]=count($narchivos["ok"]);
	
	//return($narchivos);
	EscribeJsonPagina($narchivos);
	}
}

function EscribeJsonPagina ($myArray){
	header("Content-Type: application/json"); 
	echo json_encode($myArray); 
}

function PasaInsertaPdf($usr,$listadearchivos,$edi,$target_path,$vpathtotal,$pathuser,$vraiz,$vidcliente){//control de permisos
	for ($i=0;$i<count($listadearchivos);$i++){
		$idpdf=InsertaPdf($usr,$listadearchivos[$i],$edi,$pathuser);
		PasaImagick($usr,$listadearchivos[$i],$edi,$idpdf,$target_path,$pathuser,$vraiz,$vidcliente);//control de permisos
		unlink ($target_path.$listadearchivos[$i]);
	}
}

//function InsertaPagina($baja,$alta,$vpdf,$edi,$vpagina_pdf,$usr,$indice,$vraiz,$vidcliente){


function InsertaPagina($baja,$alta,$vpdf,$edi,$vpagina_pdf,$usr,$vraiz,$vidcliente){
	$dbconn=conectardb();
	
	//miro quin és l'estat inicial de pàgina per aquell client
	$query = "SELECT estadoinicialpagina FROM cliente WHERE idcliente=$1";
	$result = pg_prepare($dbconn,"buscaestadoinicialpagina",$query);
	$result = pg_execute($dbconn,"buscaestadoinicialpagina",array($vidcliente));
	$row = pg_fetch_assoc($result);
	$vestado=$row['estadoinicialpagina'];
	
	$path=getcwd(); 
	$fbaja="/mnt/nfs/".$baja;
	$falta="/mnt/nfs/".$alta;
	
	$nombresinextension=explode (".",$vpdf);
	$npag=explode("_",$nombresinextension[0]);
	
	if(substr($npag[0],0,2)=='KW'){
		$paginainicial=substr($npag[1],1,strlen($npag[1])-1);
		$parteversion=explode(".",$npag[4]);
		$numversion=substr($parteversion[0],1,strlen($parteversion[0])-1);
		$nombreversion=substr($parteversion[0],0,strlen($parteversion[0]));
		$poblacion=substr($npag[3],0,strlen($npag[3]));
	}
	else{
		$paginainicial=substr($npag[0],0,strlen($npag[0]));
		$parteversion=explode(".",$npag[4]);
		$numversion=substr($parteversion[0],1,strlen($parteversion[0])-1);
		$nombreversion=substr($parteversion[0],0,strlen($parteversion[0]));
		$poblacion=substr($npag[3],0,strlen($npag[3]));
	}
	/*
		COMENTADO PORQUE AFECTA EN LIDL LAS PAGINAS CON -
	*/
	$indice=0;
	if (strripos(basename($baja),"-",strripos(basename($baja),"_"))!=0)
	{
		$staux=explode("-",basename($baja));
		$sindice=explode(".",$staux[count($staux)-1]);
		$indice=$sindice[0];

	}
	else
	{
		$indice=0;
	}	
	
	$folio=$paginainicial+$indice;
	$pos=$indice+1;
	
	if ($folio<10)
	{
		$sdepag="P0".$folio;
	}
	else {
		$sdepag="P".$folio;
	}
	
		
	
	if(substr($npag[0],0,2)=='KW'){
		$vnombreainsertar=$npag[0]."_".$sdepag."_".$npag[2]."_".$npag[3]."_".$npag[4];
	}
	else{
		$vnombreainsertar=$sdepag."_".$npag[1]."_".$npag[2]."_".$npag[3]."_".$npag[4];
	}
	
	//FALTA AQUESTA

	$query = "INSERT INTO pagina(nombrepagina,imgbajapagina,imgaltapagina,pagina_edicion,pagina_pdf,pagina_usuario,posicionpagina,foliopagina,numeroversion,nombreversion,poblacion,estadopagina,old) VALUES ('$vnombreainsertar',lo_import('$fbaja'),lo_import('$falta'),$edi,$vpagina_pdf,$usr,$pos,$folio,$numversion,'$nombreversion','$poblacion',$vestado,(select idold from directorio where iddirectorio=$edi)) RETURNING idpagina";
	$result = pg_query($query);
	error_log($query,0);

	$row = pg_fetch_row($result);
	$new_id = $row['0'];
		//$mensaje="pagina ".$nombreainsertar. " insertada";
	$vtabla="pagina";
	$tipoevento="inspag";
	//InsertaEvento($mensaje,$usr,$vtabla,$edi,$new_id,$tipoevento,$categoria);

	
	unlink ($path."/".$baja);
	unlink ($path."/".$alta);

	
	if (!empty($row['0'])){
		$categoria="log";
		$mensaje="Pagina ".$vnombreainsertar. " insertada";
	}
	else{
		$mensaje="PDF ".$vpdf. " no insertado. Error al crear registros.";
		$categoria="err";
		$vtabla="eliminar";
		$new_id = "";
		$query = "DELETE FROM evento WHERE evento_pdf in (SELECT idpdf FROM pdf WHERE nombrepdf=$1)"; //evento pdf
		$result = pg_prepare($dbconn,"queryborraeventopdf",$query);
		$result = pg_execute($dbconn,"queryborraeventopdf",array($vpdf));	
		
		$query = "DELETE FROM pdf WHERE nombrepdf=$1"; //pdf
		$result = pg_prepare($dbconn,"queryborrapdf",$query);
		$result = pg_execute($dbconn,"queryborrapdf",array($vpdf));	
		
	}
	
	InsertaEvento($mensaje,$usr,$vtabla,$edi,$new_id,$tipoevento,$categoria);
}


function InsertaPagina_old($baja,$alta,$vpdf,$edi,$vpagina_pdf,$usr,$indice,$vraiz,$vidcliente){ //control de permisos
	$dbconn=conectardb();
	
	//miro quin és l'estat inicial de pàgina per aquell client
	$query = "SELECT estadoinicialpagina FROM cliente WHERE idcliente=$1";
	$result = pg_prepare($dbconn,"buscaestadoinicialpagina",$query);
	$result = pg_execute($dbconn,"buscaestadoinicialpagina",array($vidcliente));
	$row = pg_fetch_assoc($result);
	$vestado=$row['estadoinicialpagina'];
	
	$path=getcwd(); 
	$fbaja="/mnt/nfs/".$baja;
	$falta="/mnt/nfs/".$alta;
	$pos=$indice+1;
	$nombresinextension=explode (".",$vpdf);
	$nombreainsertar=$nombresinextension[0];
	$nomjpg=substr_replace($vpdf, 'jpg',strlen($vpdf)-3, strlen($vpdf));
	$npag=explode("_",$nomjpg);
	$folio=substr($npag[1],1,strlen($npag[1]));

	$parteversion=explode(".",$npag[4]);
	$numversion=substr($parteversion[0],1,strlen($parteversion[0]));
	$nombreversion=substr($parteversion[0],0,strlen($parteversion[0]));
	$poblacion=substr($npag[3],0,strlen($npag[3]));

	//FALTA MODIFICAR EL QUERY			
	$query = "INSERT INTO pagina(nombrepagina,imgbajapagina,imgaltapagina,pagina_edicion,pagina_pdf,pagina_usuario,posicionpagina,foliopagina,numeroversion,nombreversion,poblacion,estadopagina) VALUES ('$nombreainsertar',lo_import('$fbaja'),lo_import('$falta'),$edi,$vpagina_pdf,$usr,$pos,$folio,$numversion,'$nombreversion','$poblacion',$vestado) RETURNING idpagina";//control de permisos
	$result = pg_query($query);
	$row = pg_fetch_row($result);
	$new_id = $row['0'];
	//$mensaje="pagina ".$nombreainsertar. " insertada";
	$vtabla="pagina";
	$tipoevento="inspag";
	//InsertaEvento($mensaje,$usr,$vtabla,$edi,$new_id,$tipoevento,$categoria);
	$fbaja="/mnt/nfs/".$baja;
	$falta="/mnt/nfs/".$alta;

	if (!empty($row['0'])){
		$categoria="log";
		$mensaje="Pagina ".$nombreainsertar. " insertada";
	}
	else{
		$mensaje="PDF ".$vpdf. " no insertado. Error al crear registros.";
		$categoria="err";
		$vtabla="eliminar";
		$new_id = "";
		$query = "DELETE FROM evento WHERE evento_pdf in (SELECT idpdf FROM pdf WHERE nombrepdf=$1)"; //evento pdf
		$result = pg_prepare($dbconn,"queryborraeventopdf",$query);
		$result = pg_execute($dbconn,"queryborraeventopdf",array($vpdf));	
		
		$query = "DELETE FROM pdf WHERE nombrepdf=$1"; //pdf
		$result = pg_prepare($dbconn,"queryborrapdf",$query);
		$result = pg_execute($dbconn,"queryborrapdf",array($vpdf));	
		
	}
	InsertaEvento($mensaje,$usr,$vtabla,$edi,$new_id,$tipoevento,$categoria);
}

function PasaImagick($usr,$archivo,$videdicion,$vpagina_pdf,$target_path,$pathuser,$vraiz,$vidcliente){//control de permisos
	$tipo="baja";
	Imagick($usr,$archivo,$tipo,$target_path,$pathuser);
	$mensaje="Imagick ".$tipo." pdf id=".$vpagina_pdf." nombre: ".$archivo;
	$vtabla="edicion";
	$tipoevento="imagik";
	$categoria="log";
	InsertaEvento($mensaje,$usr,$vtabla,$videdicion,$videdicion,$tipoevento,$categoria);
	$imgsbaja=glob($pathuser."/jpgbaja/*.jpg");
	foreach($imgsbaja as $image){
		$imgsalta[]=$pathuser."/jpgalta/".basename($image);
	}
	$tipo="alta";
	$mensaje="Imagick ".$tipo." pdf id=".$vpagina_pdf." nombre: ".$archivo;
	Imagick($usr,$archivo,$tipo,$target_path,$pathuser);
	InsertaEvento($mensaje,$usr,$vtabla,$videdicion,$videdicion,$tipoevento,$categoria);
	//$imgsalta=glob($pathuser."/jpgalta/*.jpg");
	for ($j=0;$j<count($imgsbaja);$j++){ 
		InsertaPagina($imgsbaja[$j],$imgsalta[$j],$archivo,$videdicion,$vpagina_pdf,$usr,$vraiz,$vidcliente);	//control de permisos
		//InsertaPagina($imgsbaja[$j],$imgsalta[$j],$archivo,$videdicion,$vpagina_pdf,$usr,$j,$vraiz,$vidcliente);	//control de permisos
	}
}

function pg_lo_size ($dbconn,$file_oid) {
	pg_query($dbconn, "begin");
	$handle = pg_lo_open($dbconn, $file_oid, "r");
	pg_lo_seek ($handle, 0, PGSQL_SEEK_END);
	$size = pg_lo_tell ($handle);
	pg_lo_seek ($handle, 0, PGSQL_SEEK_SET);
	pg_query($dbconn, "commit");
	return $size;
}

function Preview ($dbconn,$vidpagina) {	
	$query = "SELECT imgbajapagina,BTRIM(nombrepagina) AS nombrepagina FROM pagina WHERE idpagina = $1";
	$result = pg_prepare($dbconn,"preview",$query);
	$result = pg_execute($dbconn,"preview",array($vidpagina));
	$row = pg_fetch_assoc($result);
	$image_oid=$row['imgbajapagina'];
	$nombrepagina=$row['nombrepagina'].'.jpg';
	$nsize=pg_lo_size($dbconn,$image_oid);	
	pg_query($dbconn, "begin");
	$handle = pg_lo_open($dbconn, $image_oid, "r");

	$imagen=pg_lo_read($handle,$nsize);
	pg_query($dbconn, "commit");
	$extension=substr($nombrepagina,strlen($nombrepagina)-3,strlen($nombrepagina));

	switch ($extension){
	case "jpg":
		$type="image/jpg";
		break;
	case "png":
		$type="image/png";
		break;
	case "pdf":
		$type="application/pdf";
		break;
	}
	$base64 = 'data:' . $type . ';base64,' . base64_encode($imagen);
	echo ($base64);  
}

function Alta ($dbconn,$vidpagina) {
	$query="SELECT imgaltapagina,BTRIM(nombrepagina) AS nombrepagina FROM pagina WHERE idpagina = $1";
	$result = pg_prepare($dbconn,"alta",$query);
	$result = pg_execute($dbconn,"alta",array($vidpagina));
	$row = pg_fetch_assoc($result);
	$image_oid=$row['imgaltapagina'];
	$nombrepagina=$row['nombrepagina'].'.jpg';
	$nsize=pg_lo_size($dbconn,$image_oid);	
	pg_query($dbconn, "begin");
	$handle = pg_lo_open($dbconn, $image_oid, "r");

	$imagen=pg_lo_read($handle,$nsize);
	pg_query($dbconn, "commit");
	$extension=substr($nombrepagina,strlen($nombrepagina)-3,strlen($nombrepagina));

	switch ($extension){
	case "jpg":
		$type="image/jpg";
		break;
	case "png":
		$type="image/png";
		break;
	case "pdf":
		$type="application/pdf";
		break;
	}
	$base64 = 'data:' . $type . ';base64,' . base64_encode($imagen);
	echo ($base64);  
}

function ConsultaPaginaporidEdicion($videdicion,$vestadopagina,$vusuario){	
	$dbconn=conectardb();
	$myArray=array();
	
	if($vestadopagina>98){	
		$query="SELECT pagina.idpagina,BTRIM(pagina.nombrepagina) AS nombrepagina, pagina.fechaestado,  CONCAT(BTRIM (usuario.firstname),' ',BTRIM (usuario.lastname)) AS nombreusuario, pagina.fechacreacion, pagina.fechamodificacion, pagina.estadopagina FROM pagina INNER JOIN usuario ON pagina.pagina_usuario=usuario.iduser inner join (select distinct ce.estadoinicial from usuario u join usuario_grupo ug on u.iduser=ug.idusuario join cambiosestado ce on ug.idgrupo=ce.idgrupo where u.iduser=$1) as mias on pagina.estadopagina=mias.estadoinicial WHERE pagina.pagina_edicion=$2 ORDER BY pagina.nombrepagina;";
		
		$result = pg_prepare($dbconn,"paginaporedicion",$query);
		$result = pg_execute($dbconn,"paginaporedicion",array($vusuario,$videdicion));	
	}
	else{
		if($vestadopagina>-1){
			$query="SELECT pagina.idpagina,BTRIM(pagina.nombrepagina) AS nombrepagina, pagina.fechaestado,  CONCAT(BTRIM (usuario.firstname),' ',BTRIM (usuario.lastname)) AS nombreusuario, pagina.fechacreacion, pagina.fechamodificacion, pagina.estadopagina FROM pagina INNER JOIN usuario ON pagina.pagina_usuario=usuario.iduser WHERE pagina.pagina_edicion=$1 AND pagina.estadopagina=$2 ORDER BY pagina.nombrepagina";
			
			$result = pg_prepare($dbconn,"paginaporedicion",$query);
			$result = pg_execute($dbconn,"paginaporedicion",array($videdicion,$vestadopagina));		
			
		}
		else{
			$query="SELECT pagina.idpagina,BTRIM(pagina.nombrepagina) AS nombrepagina, pagina.fechaestado,  CONCAT(BTRIM (usuario.firstname),' ',BTRIM (usuario.lastname)) AS nombreusuario, pagina.fechacreacion, pagina.estadopagina, pagina.fechamodificacion FROM pagina INNER JOIN usuario ON pagina.pagina_usuario=usuario.iduser WHERE pagina.pagina_edicion=$1 ORDER BY pagina.nombrepagina";
			$result = pg_prepare($dbconn,"paginaporedicion",$query);
			$result = pg_execute($dbconn,"paginaporedicion",array($videdicion));			
		}			
	}
		
	//$result = pg_query($query);
    while($row = pg_fetch_assoc($result)) {
		$myArray[]= $row;
    }

	EscribeJsonPagina($myArray);
}


function ConsultaPaginaporidEdicionFiltro($videdicion,$vestadopagina,$vusuario,$vfolios,$vensenyas){	
	$dbconn=conectardb();
	$myArray=array();
	$filtroFolios=' ';
	if($vfolios!=''){
		$filtroFolios.='AND pagina.foliopagina in ('.$vfolios.') ';
	}
	
	$filtroEnsenyas=' ';
	if($vensenyas!=''){
		$vArrensenyas=explode(',',$vensenyas);
		$filtroEnsenyas.='AND (';
															   
		for ($i=0;$i<count ($vArrensenyas);$i++){
			if($i>0){
				$filtroEnsenyas.=' OR ';
			}
			$filtroEnsenyas.='(pagina.poblacion=\''.$vArrensenyas[$i].'\' or pagina.poblacion like(\''.$vArrensenyas[$i].'-%\') or btrim(pagina.poblacion) like(\'%-'.$vArrensenyas[$i].'\') or pagina.poblacion like(\'%-'.$vArrensenyas[$i].'-%\'))';
		}
		$filtroEnsenyas.=') ';
	}
	
	if($vestadopagina>98){	
		$query="SELECT pagina.idpagina,BTRIM(pagina.nombrepagina) AS nombrepagina, pagina.fechaestado, CONCAT(BTRIM (usuario.firstname),' ',BTRIM (usuario.lastname)) AS nombreusuario, pagina.fechacreacion, pagina.fechamodificacion, pagina.estadopagina FROM pagina INNER JOIN usuario ON pagina.pagina_usuario=usuario.iduser inner join (select distinct ce.estadoinicial from usuario u join usuario_grupo ug on u.iduser=ug.idusuario join cambiosestado ce on ug.idgrupo=ce.idgrupo where u.iduser=$1) as mias on pagina.estadopagina=mias.estadoinicial WHERE pagina.pagina_edicion=$2".$filtroFolios.$filtroEnsenyas." ORDER BY pagina.nombrepagina;";
		
		$result = pg_prepare($dbconn,"paginaporedicion",$query);
		$result = pg_execute($dbconn,"paginaporedicion",array($vusuario,$videdicion));	
	}
	else{
		if($vestadopagina>-1){
			$query="SELECT pagina.idpagina,BTRIM(pagina.nombrepagina) AS nombrepagina, pagina.fechaestado, CONCAT(BTRIM (usuario.firstname),' ',BTRIM (usuario.lastname)) AS nombreusuario, pagina.fechacreacion, pagina.fechamodificacion, pagina.estadopagina FROM pagina INNER JOIN usuario ON pagina.pagina_usuario=usuario.iduser WHERE pagina.pagina_edicion=$1 AND pagina.estadopagina=$2".$filtroFolios.$filtroEnsenyas." ORDER BY pagina.nombrepagina;";
			
			$result = pg_prepare($dbconn,"paginaporedicion",$query);
			$result = pg_execute($dbconn,"paginaporedicion",array($videdicion,$vestadopagina));		
			
		}
		else{
			$query="SELECT pagina.idpagina,BTRIM(pagina.nombrepagina) AS nombrepagina, pagina.fechaestado, CONCAT(BTRIM (usuario.firstname),' ',BTRIM (usuario.lastname)) AS nombreusuario, pagina.fechacreacion, pagina.estadopagina, pagina.fechamodificacion FROM pagina INNER JOIN usuario ON pagina.pagina_usuario=usuario.iduser WHERE pagina.pagina_edicion=$1".$filtroFolios.$filtroEnsenyas." ORDER BY pagina.nombrepagina;";
			$result = pg_prepare($dbconn,"paginaporedicion",$query);
			$result = pg_execute($dbconn,"paginaporedicion",array($videdicion));			
		}			
	}
		
	//$result = pg_query($query);
    while($row = pg_fetch_assoc($result)) {
		$myArray[]= $row;
    }

	EscribeJsonPagina($myArray);
}


function EliminaPagina($vidpaginas,$vusuario){
	$dbconn=conectardb();

	$query = "DELETE FROM evento WHERE evento_adjunto in (SELECT idadjunto FROM adjunto WHERE adjunto_comentario in (SELECT idcomentario FROM comentario WHERE comentario_pagina=$1))"; //evento adjunto
	$result = pg_prepare($dbconn,"queryborraeventoadjunto",$query);
	
	$query = "DELETE FROM evento WHERE evento_comentario in (SELECT idcomentario FROM comentario WHERE comentario_pagina=$1)"; //evento comentario
	$result = pg_prepare($dbconn,"queryborraeventocomentario",$query);
	
	$query = "DELETE FROM evento WHERE evento_pagina=$1";// evento pagina 
	$result = pg_prepare($dbconn,"queryborraeventopagina",$query);
	
	$query = "DELETE FROM evento WHERE evento_pdf in (SELECT pagina_pdf FROM pagina WHERE idpagina=$1)"; //evento pdf
	$result = pg_prepare($dbconn,"queryborraeventopdf",$query);
	
	$query = "DELETE FROM adjunto WHERE adjunto_comentario in (SELECT idcomentario FROM comentario WHERE comentario_pagina=$1)"; //adjunto
	$result = pg_prepare($dbconn,"queryborraadjunto",$query);
	
	$query = "DELETE FROM comentario WHERE comentario_pagina=$1";//comentario 
	$result = pg_prepare($dbconn,"queryborracomentario",$query);
	
	$query = "SELECT pagina_edicion, nombrepagina FROM pagina WHERE idpagina=$1";
	$result = pg_prepare($dbconn,"obtenedicionynombre",$query);
	
	$query = "DELETE FROM pagina WHERE idpagina=$1 RETURNING pagina_pdf"; //pagina
	$result = pg_prepare($dbconn,"borrapagina",$query);
	
	$query = "SELECT * FROM pagina WHERE pagina_pdf=$1";
	$result = pg_prepare($dbconn,"haymaspaginasconestepdf",$query);
	
	$query = "SELECT nombrepdf FROM pdf WHERE idpdf=$1"; 
	$result = pg_prepare($dbconn,"nombrepdf",$query);
	
	$query = "DELETE FROM pdf WHERE idpdf=$1"; //pdf
	$result = pg_prepare($dbconn,"borrapdf",$query);

	for($i=0;$i<count($vidpaginas);$i++){	
		$result = pg_execute($dbconn,"queryborraeventoadjunto",array($vidpaginas[$i]));	
		$result = pg_execute($dbconn,"queryborraeventocomentario",array($vidpaginas[$i]));	
		$result = pg_execute($dbconn,"queryborraeventopagina",array($vidpaginas[$i]));
		$result = pg_execute($dbconn,"queryborraeventopdf",array($vidpaginas[$i]));
		$result = pg_execute($dbconn,"queryborraadjunto",array($vidpaginas[$i]));
		$result = pg_execute($dbconn,"queryborraadjunto",array($vidpaginas[$i]));
		$result = pg_execute($dbconn,"queryborracomentario",array($vidpaginas[$i]));
	
		$result = pg_execute($dbconn,"obtenedicionynombre",array($vidpaginas[$i]));	
		$row = pg_fetch_row($result);
		$edicion=$row['0'];
		$nombre=rtrim($row['1']);
		
		$result = pg_execute($dbconn,"borrapagina",array($vidpaginas[$i]));
		$row = pg_fetch_row($result);
		$idpdf = $row['0'];
		
		$vtabla="eliminar";
		$mensaje="pagina ".$nombre." con id : ".$vidpaginas[$i]." de la edicion ".$edicion." eliminada por el usuario ".$vusuario;
		$vtipoevento="delete";
		$vcategoria="log";
		
		InsertaEvento($mensaje,$vusuario,$vtabla,$edicion,$vidpaginas[$i],$vtipoevento,$vcategoria);
		
		$result = pg_execute($dbconn,"haymaspaginasconestepdf",array($idpdf));
		$rows = pg_num_rows($result);
		
		if ($rows==0){ //si ja no queden pàgines asociades a aquest pdf
			$result = pg_execute($dbconn,"nombrepdf",array($idpdf));
			$row = pg_fetch_row($result);
			$nompdf=rtrim($row['0']);
			
			$result = pg_execute($dbconn,"borrapdf",array($idpdf));
			
			$mensaje="pdf ".$nompdf." con id : ".$idpdf." de la edicion ".$edicion." eliminado por el usuario ".$vusuario;
			InsertaEvento($mensaje,$vusuario,$vtabla,$edicion,$vidpaginas[$i],$vtipoevento,$vcategoria);
		}

		echo($vidpaginas[$i]);
	}
}

function CambiaEstadoPagina($vidpaginas,$vestadopagina,$vfechaestado,$vusuario,$vcliente){
	$dbconn=conectardb();
	$actualiza=false;
	// primero miro si pertenece a un cliente con politica de grupos
	$query="SELECT * FROM grupos WHERE idcliente=$1";
	$result = pg_prepare($dbconn,"clienteestaengrupos",$query);
	$result = pg_execute($dbconn,"clienteestaengrupos",array($vcliente));
	$rows = pg_num_rows($result);
	
	$mensaje="";
	if ($rows!=0){
		
		//$query = "SELECT * FROM cambiosestado WHERE idgrupo =(SELECT usuario_grupo.idgrupo FROM usuario_grupo WHERE usuario_grupo.idusuario=$1) AND estadofinal=$2 AND estadoinicial=(SELECT pagina.estadopagina FROM pagina WHERE pagina.idpagina=$3)";
		$query = "SELECT * FROM cambiosestado WHERE idgrupo =(SELECT usuario_grupo.idgrupo FROM usuario_grupo WHERE usuario_grupo.idusuario=$1) AND (estadofinal=$2 or estadoinicial=$2) AND estadoinicial=(SELECT pagina.estadopagina FROM pagina WHERE pagina.idpagina=$3)";
		$result = pg_prepare($dbconn,"revisaworkflow",$query);
		$paginasacambiar=0;
			for($i=0;$i<count($vidpaginas);$i++){
				$result = pg_execute($dbconn,"revisaworkflow",array($vusuario,$vestadopagina,$vidpaginas[$i]));
				$rows = pg_num_rows($result);
				if ($rows!=0){
					$paginasacambiar++;
				}
			}
			if ($paginasacambiar==count($vidpaginas)){
				$actualiza=true;
			}
			else{
				$mensaje="Error en la selección o cambio de estado. Revise la operación";
			}
		
	}
	else {
		$actualiza=true;
	}
		
	if ($actualiza){			 
	$query = "UPDATE pagina SET estadopagina=$1, fechaestado=$2, pagina_usuario=$3 WHERE idpagina=$4 and NOT estadopagina=$1";
	$result = pg_prepare($dbconn,"cambiaestadopagina",$query);
		for($i=0;$i<count($vidpaginas);$i++){
			$result = pg_execute($dbconn,"cambiaestadopagina",array($vestadopagina,$vfechaestado,$vusuario,$vidpaginas[$i]));
			//echo($vidpaginas[$i]);
		}
	}
}


function PasaraOld($vidpaginas,$vidusuario){
	$dbconn=conectardb();
	$query = "update pagina set old=pagina_edicion,pagina_edicion=old where idpagina=$1;";
	$result =pg_prepare($dbconn,"cambiaold",$query);
														
	for ($i=0;$i<count ($vidpaginas);$i++){
		$result = pg_execute($dbconn,"cambiaold",array($vidpaginas[$i]));
	}
}


function PasaraOld_OLD($vidpaginas,$vidusuario){
	$dbconn=conectardb();
	//primer busco el id de old
	$old='old';

	$query = "select idedicion from edicion where nombreedicion='old' and agrupacion=(select agrupacion from edicion where idedicion=(select pagina.pagina_edicion from pagina where pagina.idpagina=$1)) and anyo=(select anyo from edicion where idedicion=(select pagina.pagina_edicion from pagina where pagina.idpagina=$1))";
	$result = pg_prepare($dbconn,"buscaidold",$query);
	$result = pg_execute($dbconn,"buscaidold",array($vidpaginas[0]));
	$row = pg_fetch_assoc($result);
	$voldidedicion=$row['idedicion'];

	$vtabla="pagina";
	$tipoevento="oldpag";
	$categoria="log";
	
	$query = "SELECT pagina_edicion FROM pagina WHERE idpagina=$1";
	$result = pg_prepare($dbconn,"buscaedicionpagina",$query);
	
	$query = "UPDATE pagina SET old=$1, pagina_edicion=$2 WHERE idpagina=$3";
	$result = pg_prepare($dbconn,"pasapaginaaold",$query);															
	for ($i=0;$i<count ($vidpaginas);$i++){
		$result = pg_execute($dbconn,"buscaedicionpagina",array($vidpaginas[$i]));
							
		$row = pg_fetch_assoc($result);
		$vpagina_edicion=$row['pagina_edicion'];
		$result = pg_execute($dbconn,"pasapaginaaold",array($vpagina_edicion,$voldidedicion,$vidpaginas[$i]));
		
		$mensaje="pagina con id:".$vidpaginas[$i]. " de la edicion ".$vpagina_edicion. " movida a la edicion old ".$voldidedicion;
		InsertaEvento($mensaje,$vidusuario,$vtabla,$vpagina_edicion,$vidpaginas[$i],$tipoevento,$categoria);
	}	
}

function Retornar($vidpaginas,$vidusuario){
	$dbconn=conectardb();
	$iniold=0;
	$vtabla="pagina";
	$tipoevento="oldpag";
	$categoria="log";
	$query = "SELECT idpagina, old FROM pagina WHERE idpagina=$1";
	$result = pg_prepare($dbconn,"seleccionaidpagenold",$query);
	
	$query = "UPDATE pagina SET pagina_edicion=$1, old=$2 WHERE idpagina=$3";
	$result = pg_prepare($dbconn,"retornadeold",$query);														   
	for ($i=0;$i<count ($vidpaginas);$i++){
		$result = pg_execute($dbconn,"seleccionaidpagenold",array($vidpaginas[$i]));
		$row = pg_fetch_assoc($result);
		$vidpagina=$row['idpagina'];
		$vold=$row['old'];
	
		$result = pg_execute($dbconn,"retornadeold",array($vold,0,$vidpagina));
		
		$mensaje="pagina con id:".$vidpagina. " retornada a la edicion ".$vold;
		InsertaEvento($mensaje,$vidusuario,$vtabla,$vold,$vidpagina,$tipoevento,$categoria);
	}
}

function ConsultaVersionesdePagina($vidpagina){	
	$dbconn=conectardb();
	$myArray=array();
	$query="SELECT pagina_edicion,foliopagina,BTRIM (poblacion)as poblacion FROM pagina WHERE idpagina=$1";
	$result = pg_prepare($dbconn,"paginaversionreferencia",$query);
	$result = pg_execute($dbconn,"paginaversionreferencia",array($vidpagina));
	$row = pg_fetch_assoc($result);
	$vedicion=$row['pagina_edicion'];
	$vfolio=$row['foliopagina'];
	$vpoblacion= rtrim($row['poblacion']);
	
	$query = "SELECT idpagina, BTRIM (nombrepagina) as nombrepagina,numeroversion FROM pagina WHERE (pagina_edicion = $1 or old = $1) AND foliopagina=$2 AND poblacion=$3 ORDER BY numeroversion desc";
	$result = pg_prepare($dbconn,"versionesdepagina",$query);
	$result = pg_execute($dbconn,"versionesdepagina",array($vedicion,$vfolio,$vpoblacion));
	
    while($row = pg_fetch_assoc($result)) {
	$myArray[]= $row;
    }
	EscribeJsonPagina($myArray);
}

function lupa($vidpagina,$vidusuario){
	$dbconn=conectardb();
	
	$query="SELECT posicionpagina,BTRIM (nombrepagina) as nombrepagina FROM pagina WHERE idpagina=$1";
	$result = pg_prepare($dbconn,"paginaposicion",$query);
	$result = pg_execute($dbconn,"paginaposicion",array($vidpagina));
	$row = pg_fetch_assoc($result);
	$vpospag=$row['posicionpagina']-1;
	$vnompdf=$row['nombrepagina'].".pdf";
	
	$subdir="descargas";

	chdir ("../");
	$workdir=getcwd();
	$workdir="frontend/users/".$vidusuario."/".$subdir;

	if (!file_exists ($workdir)){
			mkdir ($workdir,0777,true);
			chmod($workdir, 0777);  
		}
	else 
		{
		$files = glob($workdir."/*.*");
		for($i=0; $i<count($files); $i++){
			unlink($files[$i]);
			}
		rmdir($workdir);
		mkdir ($workdir,0777,true);
		chmod($workdir, 0777);
		}
		
	chdir($workdir);
	$path=getcwd();
	
	$final="/mnt/nfs/".$workdir."/". $vnompdf;

	$query="SELECT lo_export(ficheropdf,'$final') FROM pdf WHERE idpdf=(SELECT pagina_pdf FROM pagina WHERE idpagina=$vidpagina)";
	$result = pg_query($query);
	//$fpdf="/var/www/".$workdir."/". $vnompdf; //20220329 REVISAR DIRECTORIO COMPLETO DESDE RAIZ
	$fpdf="/var/www/be.quinteam.com/".$workdir."/". $vnompdf; //20220329 REVISAR DIRECTORIO COMPLETO DESDE RAIZ
	Imagick_SuperAlta ($fpdf,$vpospag);
}									  
?>