HEX
Server: Apache
System: Linux iad1-shared-e1-19 6.6.49-grsec-jammy+ #10 SMP Thu Sep 12 23:23:08 UTC 2024 x86_64
User: austral3d (14892361)
PHP: 5.6.40
Disabled: NONE
Upload Files
File: /home/austral3d/fourdplan.com/webservices4.0dev/DBaXML.php
<?php

require_once("comun/conexion_mysqli.php");
require_once("fdp/FdpNode.php");

function fdp_table_to_XML($db, $tags, $sql, $nested = [], $parent_xml = false) {

	$table = fdp_query_all($db, $sql);
	
	$tag_plural = $tags[0];
	if($parent_xml) {
		$xml = $parent_xml->addChild($tag_plural);
	}
	else {
		$xml_tag_plural = "<$tag_plural></$tag_plural>";
		$xml = new SimpleXMLElement($xml_tag_plural);
	}
	$tag_single = $tags[1];
	
	if($table) {
		foreach ($table as $key => $row) {
			$xml_row = $xml->addChild($tag_single);
			foreach ($row as $name => $value) {
				$xml_row->addChild($name, $value);
			}
			foreach ($nested as $function => $id_name) {
				$function($db, $row[$id_name], $xml_row);
			}
		}
	}
	if($parent_xml) {
		return false;
	}
	else {
		return $xml;
	}
}

function fdp_row_to_XML($db, $tag, $sql, $idx, $nested = []) {

	$row = fdp_query_row($db, $sql, $idx);
	
	$xml_tag = "<$tag></$tag>";
	$xml = new SimpleXMLElement($xml_tag);
	
	if($row) {
		foreach ($row as $name => $value) {
			$xml->addChild($name, $value);
		}
		foreach ($nested as $function => $id_name) {
			$function($db, $row[$id_name], $xml);
		}
	}
	
	return $xml;
}

function fdp_allowed_assemblies_to_XML($db, $id_usuario) {
	$sql_permits = "
		SELECT a.id, a.nombre, a.ruta, a.asset
		FROM assembly a, permiso p
		WHERE p.usuario_id = '$id_usuario'
		AND a.proyecto_id = p.proyecto_id";

	return fdp_table_to_XML($db, ["Assemblies", "Assembly"], $sql_permits)->asXML();
}

function fdp_assembly_to_XML($db, $id) {

	$sql_assembly = "
		SELECT a.*, p.rol_id
		FROM assembly a, permiso p
		WHERE a.id = '$id'";

	$xml = fdp_row_to_XML($db, "Assembly", $sql_assembly, 0, [
		"fdp_limites_to_XML"=>"proyecto_id", 
		"fdp_discipline_to_XML"=>"id", 
		"fdp_workpackages_to_XML"=>"id", 
		"fdp_fechasInsercion_to_XML"=>"proyecto_id"]);
	$imagenes = fdp_imagenes_to_XML($db, $id);
	$imagenes->addTo($xml);
	$camaras = fdp_camaras_to_XML($db, $id);
	$camaras->addTo($xml);
	return $xml->asXML();
}

function fdp_limites_to_XML($db, $id_proyecto, $parent_xml) {
	$sql_limites_vol = "
		SELECT fecha_inicio, maximo
		FROM restriccion_volumen
		WHERE id_proyecto = '$id_proyecto'";

	fdp_table_to_XML($db, ["Limites", "Limite"], $sql_limites_vol, [], $parent_xml);
}

function fdp_discipline_to_XML($db, $id_assembly, $parent_xml) {
	$sql_disciplinas = "
		SELECT d.* 
		FROM disciplina as d
		WHERE d.assembly_id = '$id_assembly'";
	fdp_table_to_XML($db, ["Disciplinas", "Disciplina"], $sql_disciplinas, ["fdp_caracter_to_XML" => "id", "fdp_description_to_XML" => "id"], $parent_xml);
}

function fdp_caracter_to_XML($db, $id_disciplina, $parent_xml) {
	$sql_caracteristica = "
		SELECT *
		FROM caracteristica as c
		WHERE c.disciplina_id = '$id_disciplina'";
	fdp_table_to_XML($db, ["Caracteristicas", "Caracteristica"], $sql_caracteristica, ["fdp_estados_to_XML" => "id"], $parent_xml);
}

function fdp_estados_to_XML($db, $id_caracteristica, $parent_xml) {
	$sql_estados = "
		SELECT e.*, m.nombre as modulo, c.nombre as caracteristica
		FROM estado as e, modulo as m, estado_modulo as em, caracteristica as c
		WHERE e.id = em.estado_id
		AND m.id = em.modulo_id
		and e.id_caracteristica = c.id
		AND c.id = '$id_caracteristica'
		ORDER BY e.orden ASC";
	fdp_table_to_XML($db, ["Estados", "Estado"], $sql_estados, [], $parent_xml);
}

function fdp_description_to_XML($db, $id_disciplina, $parent_xml) {
	$sql_descripciones = "
		SELECT id, descripcion, descripcion_corta
		FROM descripcion
		WHERE disciplina_id = '$id_disciplina'";
	fdp_table_to_XML($db, ["Descripciones", "Descripcion"], $sql_descripciones, ["fdp_element_to_XML" => "id"], $parent_xml);
}

function fdp_element_to_XML($db, $id_descripcion, $parent_xml) {
	$sql_elementos = "
		SELECT *
		FROM elemento
		WHERE descripcion_id = '$id_descripcion'";
	fdp_table_to_XML($db, ["Elementos", "Elemento"], $sql_elementos, ["fdp_instance_to_XML" => "id"], $parent_xml);
}

function fdp_instance_to_XML($db, $id_elemento, $parent_xml) {
	$sql_instancias = "
		SELECT *
		FROM instancia
		WHERE elemento_id = '$id_elemento'";
	fdp_table_to_XML($db, ["Instancias", "Instancia"], $sql_instancias, ["fdp_workpackage_to_XML" => "workpackage_id", "fdp_fechaestado_to_XML"=>"id"], $parent_xml);
}

function fdp_fechaestado_to_XML($db, $id_instancia, $parent_xml) {
	$sql_fe = "
		SELECT e.id, e.nombre, m.nombre as modulo, c.nombre as caracteristica, f.fecha
		FROM fechaestado f, estado e, modulo m, caracteristica c, estado_modulo em
		WHERE f.id_instancia = '$id_instancia'
		AND f.id_estado = e.id
		AND e.id = em.estado_id
		AND em.modulo_id = m.id
		AND e.id_caracteristica = c.id
		ORDER by m.id, e.orden ASC";
	fdp_table_to_XML($db, ["Fechas_estado", "Fecha_estado"], $sql_fe, [], $parent_xml);
}

function fdp_workpackage_to_XML($db, $id_workpackage, $parent_xml) {
	$sql_workpackage_nombre = "
		SELECT nombre
		FROM workpackage
		WHERE id = '$id_workpackage'";
	$workpackage_nombre = fdp_query_cell($db, $sql_workpackage_nombre, 0, "nombre");
	if($workpackage_nombre) {
		$parent_xml->addChild("workpackage_nombre", $workpackage_nombre);
	}
	else {
		$parent_xml->addChild("workpackage_nombre", "");
	}
}

function fdp_workpackages_to_XML($db, $id_assembly, $parent_xml)
{
	$sql_workpackages = "
		SELECT id, nombre, assembly_id
		FROM workpackage
		WHERE assembly_id = '$id_assembly'";
	
	fdp_table_to_XML($db, ["WorkPackages", "WorkPackage"], $sql_workpackages, [], $parent_xml);
}

function fdp_fechasInsercion_to_XML($db, $id_proyecto, $parent_xml)
{
	$sql_fechasInsercion = "
		SELECT fecha, tipo
		FROM inserciondatos
		WHERE proyecto_id = '$id_proyecto'";
	
	fdp_table_to_XML($db, ["FechasInsercion", "FechaInsercion"], $sql_fechasInsercion, [], $parent_xml);
}

function fdp_imagenes_to_XML($db, $id_assembly)
{
	$sql_imagenes = "
		SELECT *
		FROM imagen
		WHERE assembly_id = '$id_assembly'
		ORDER BY camara ASC, orden ASC";
	
	$table = fdp_query_all($db, $sql_imagenes);
	$imagenes = new Imagenes();
	$imagenes->fromTable($table);
	return $imagenes;
}

function fdp_camaras_to_XML($db, $id_assembly)
{
	$sql_camaras = "
		SELECT id, camara, posicion_dron, rotacion_dron, rotacion_camara
		FROM camara
		WHERE assembly_id = '$id_assembly'
		ORDER BY camara ASC";

	$table = fdp_query_all($db, $sql_camaras);
	$camaras = new Camaras();
	return $camaras->fromTable($table);
}

?>