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);
}
?>