File: /home/austral3d/fourdplan.com/webservices_0_4_10/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 '$id_usuario' = P.id_usuario
AND P.id_proyecto = A.id_proyecto";
return fdp_table_to_XML($db, ["Assemblies", "Assembly"], $sql_permits)->asXML();
}
function fdp_assembly_to_XML($db, $id) {
$sql_assembly = "
SELECT A.*, P.id_rol
FROM assembly A, permiso P
WHERE '$id' = A.id";
$xml = fdp_row_to_XML($db, "Assembly", $sql_assembly, 0, [
"fdp_limites_to_XML"=>"id",
"fdp_estados_to_XML" => "id",
"fdp_discipline_to_XML"=>"id",
"fdp_workpackages_to_XML"=>"id",
"fdp_fechasInsercion_to_XML"=>"id_proyecto"]);
$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_assembly, $parent_xml) {
$sql_limites_vol = "
SELECT R.fecha_inicio, R.maximo
FROM restriccion_volumen as R
WHERE R.id_assembly = '$id_assembly'";
fdp_table_to_XML($db, ["Limites", "Limite"], $sql_limites_vol, [], $parent_xml);
}
function fdp_estados_to_XML($db, $id_assembly, $parent_xml) {
$sql_estados = "
SELECT E.*, M.nombre as modulo, C.nombre as caracteristica, C.id as id_caracteristica
FROM estado as E, modulo as M, caracteristica as C
WHERE '$id_assembly' = E.id_assembly
AND E.id_modulo = M.id
AND E.id_caracteristica = C.id
ORDER BY M.id, C.id, E.orden ASC";
fdp_table_to_XML($db, ["Estados", "Estado"], $sql_estados, [], $parent_xml);
}
function fdp_discipline_to_XML($db, $id_assembly, $parent_xml) {
$sql_disciplinas = "
SELECT D.* , AD.id as id_ad
FROM disciplina as D, assembly_disciplina as AD
WHERE '$id_assembly' = AD.id_assembly
AND AD.id_disciplina = D.id
";
fdp_table_to_XML($db, ["Disciplinas", "Disciplina"], $sql_disciplinas, ["fdp_caracter_to_XML" => "id", "fdp_description_to_XML" => "id_ad"], $parent_xml);
}
function fdp_caracter_to_XML($db, $id_disciplina, $parent_xml) {
$sql_caracteristica = "
SELECT C.*
FROM caracteristica as C
WHERE C.id_disciplina = '$id_disciplina'";
fdp_table_to_XML($db, ["Caracteristicas", "Caracteristica"], $sql_caracteristica, [], $parent_xml);
}
function fdp_description_to_XML($db, $id_assembly_disciplina, $parent_xml) {
$sql_descripciones = "
SELECT D.id, D.descripcion, D.descripcion_corta
FROM descripcion as D
WHERE D.id_assembly_disciplina = '$id_assembly_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 E.*
FROM elemento as E
WHERE E.id_descripcion = '$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 I.*
FROM instancia as I
WHERE I.id_elemento = '$id_elemento'";
fdp_table_to_XML($db, ["Instancias", "Instancia"], $sql_instancias, ["fdp_workpackage_to_XML" => "id_workpackage", "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 fecha_estado as F, estado as E, modulo as M, caracteristica as C
WHERE F.id_instancia = '$id_instancia'
AND F.id_estado = E.id
AND E.id_modulo = M.id
AND E.id_caracteristica = C.id
ORDER by 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 W.nombre
FROM workpackage as W
WHERE W.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 W.id, W.nombre, W.id_assembly
FROM workpackage as W
WHERE W.id_assembly = '$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 I.fecha, I.tipo
FROM insercion_datos as I
WHERE I.id_proyecto = '$id_proyecto'";
fdp_table_to_XML($db, ["FechasInsercion", "FechaInsercion"], $sql_fechasInsercion, [], $parent_xml);
}
function fdp_imagenes_to_XML($db, $id_assembly)
{
$sql_imagenes = "
SELECT I.*
FROM imagen as I
WHERE I.id_assembly = '$id_assembly'
ORDER BY I.camara ASC, I.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 C.id, C.camara, C.posicion_dron, C.rotacion_dron, C.rotacion_camara
FROM camara as C
WHERE C.id_assembly = '$id_assembly'
ORDER BY C.camara ASC";
$table = fdp_query_all($db, $sql_camaras);
$camaras = new Camaras();
return $camaras->fromTable($table);
}
?>