summaryrefslogtreecommitdiffstats
path: root/admin/WebConsole/includes/arbol.php
diff options
context:
space:
mode:
Diffstat (limited to 'admin/WebConsole/includes/arbol.php')
-rw-r--r--admin/WebConsole/includes/arbol.php254
1 files changed, 254 insertions, 0 deletions
diff --git a/admin/WebConsole/includes/arbol.php b/admin/WebConsole/includes/arbol.php
new file mode 100644
index 00000000..89166f17
--- /dev/null
+++ b/admin/WebConsole/includes/arbol.php
@@ -0,0 +1,254 @@
+<?php
+/* Funciones auxiliares para pintar árboles de nodos en el frame izquierdo */
+
+// grupos(tipo_nodo)
+// Descripción: Devuelve un array de grupos de imágenes. Ordenados por tipos de imágenes y grupo padre
+// Parámetros:
+// tipo_nodo: str tipo de elemento a mostrar en el árbol (aulas, imagenes, ...)
+// devuelve: array de grupos.
+// Nota: usamos la variable tipo por compatibilidad con grupos de imágenes.
+
+function grupos_arbol($tipo_nodo) {
+ global $cmd;
+ global $idcentro;
+
+ $grupos_hijos=Array();
+ $sql="";
+
+ switch ($tipo_nodo){
+ case 'aulas':
+ global $AMBITO_GRUPOSAULAS;
+ $ambito=$AMBITO_GRUPOSAULAS;
+ break;
+ case 'componenteshardware':
+ global $AMBITO_GRUPOSCOMPONENTESHARD;
+ $ambito=$AMBITO_GRUPOSCOMPONENTESHARD;
+ break;
+ case 'componentessoftware':
+ global $AMBITO_GRUPOSCOMPONENTESSOFT;
+ $ambito=$AMBITO_GRUPOSCOMPONENTESSOFT;
+ break;
+ case 'imagenes':
+ $ambito="70, 71, 72";
+ break;
+ case 'menus':
+ global $AMBITO_GRUPOSMENUS;
+ $ambito=$AMBITO_GRUPOSMENUS;
+ break;
+ case 'ordenadores':
+ $sql="SELECT gruposordenadores.idgrupo AS id, nombregrupoordenador AS nombre,
+ gruposordenadores.idaula AS conjuntoid, gruposordenadores.grupoid AS grupopadre
+ FROM gruposordenadores
+ INNER JOIN aulas
+ WHERE gruposordenadores.idaula=aulas.idaula AND idcentro=$idcentro
+ ORDER BY conjuntoid, gruposordenadores.grupoid;";
+ break;
+ case 'perfileshardware':
+ global $AMBITO_GRUPOSPERFILESHARD;
+ $ambito=$AMBITO_GRUPOSPERFILESHARD;
+ break;
+ case 'perfilessoftware':
+ global $AMBITO_GRUPOSPERFILESSOFT;
+ $ambito=$AMBITO_GRUPOSPERFILESSOFT;
+ break;
+ case 'perfilessoftwareincremental':
+ global $AMBITO_GRUPOSSOFTINCREMENTAL;
+ $ambito=$AMBITO_GRUPOSSOFTINCREMENTAL;
+ break;
+ case 'procedimientos':
+ global $AMBITO_GRUPOSPROCEDIMIENTOS;
+ $ambito=$AMBITO_GRUPOSPROCEDIMIENTOS;
+ break;
+ case 'repositorios':
+ global $AMBITO_GRUPOSREPOSITORIOS;
+ $ambito=$AMBITO_GRUPOSREPOSITORIOS;
+ break;
+ case 'tareas':
+ global $AMBITO_GRUPOSTAREAS;
+ $ambito=$AMBITO_GRUPOSTAREAS;
+ break;
+ }
+ if ($sql == "" && $ambito != "") {
+ $sql="SELECT idgrupo AS id, nombregrupo AS nombre, grupos.grupoid AS grupopadre, tipo AS conjuntoid
+ FROM grupos
+ WHERE idcentro=$idcentro AND tipo IN ($ambito)
+ ORDER BY tipo, grupopadre, grupoid;";
+ }
+ if ($sql == "") return ($grupos_hijos);
+
+ $rs=new Recordset;
+ $cmd->texto=$sql;
+ echo "text: ".$cmd->texto;
+ echo "<br><br>";
+ $rs->Comando=&$cmd;
+ if (!$rs->Abrir()) return($grupos_hijos);
+
+ $rs->Primero();
+ $oldgrupopadre=0;
+ $num=-1;
+ while (!$rs->EOF){
+ $grupopadre=$rs->campos["grupopadre"];
+ $nombre=$rs->campos["nombre"];
+
+ $id=$rs->campos["id"];
+ $conjuntoid=$rs->campos["conjuntoid"];
+ // El tipo de grupo de imagenes son 70, 71 y 72 correspondiendo al tipo de imagen 1, 2 y 3
+ if ($tipo_nodo == "imagenes") $conjuntoid-=69;
+
+ if ($oldgrupopadre != $grupopadre) {
+ $oldgrupopadre=$grupopadre;
+ // Cuando cambio de grupo pongo el orden del array a cero
+ $num=0;
+ } else {
+ $num++;
+ }
+ $grupos_hijos[$conjuntoid][$grupopadre][$num]["id"] = $id;
+ $grupos_hijos[$conjuntoid][$grupopadre][$num]["nombre"] = $nombre;
+
+ $rs->Siguiente();
+ }
+ $rs->Cerrar();
+ return ($grupos_hijos);
+
+}
+/*
+ * Descripción: Devuelve un array de nodos ordenados por el grupo al que pertenecen.
+ * Parámetros:
+ * tipo_nodo: str tipo de elemento a mostrar en el árbol (aulas, imagenes, ...)
+ * Devuelve: array de nodos
+ * Nota: Existen nodos clasificados por tipos. Para los no tienen tipos se usa un único tipo = 1
+ */
+function nodos_arbol($tipo_nodo){
+ global $TbMsg;
+ global $cmd;
+ global $idcentro;
+ //$nodos= Array();
+
+ switch ($tipo_nodo){
+ case 'aulas':
+ $sql="SELECT idaula AS id, nombreaula AS nombre, grupoid, '1' AS conjuntoid
+ FROM aulas
+ WHERE idcentro=$idcentro ORDER BY conjuntoid, grupoid;";
+ break;
+ case 'comandos':
+ $sql="SELECT idcomando AS id, descripcion AS nombre, urlimg,
+ '1' AS conjuntoid, '0' AS grupoid
+ FROM comandos
+ WHERE activo=1 ORDER BY conjuntoid, grupoid;";
+ break;
+ case 'componenteshardware':
+ $sql="SELECT hardwares.idhardware AS id, hardwares.descripcion AS nombre,
+ tipohardwares.urlimg, '2' AS conjuntoid, grupoid
+ FROM hardwares INNER JOIN tipohardwares
+ WHERE hardwares.idtipohardware=tipohardwares.idtipohardware AND idcentro=$idcentro
+ ORDER BY conjuntoid, grupoid;";
+ break;
+ case 'componentessoftware':
+ $sql="SELECT softwares.idsoftware AS id, softwares.descripcion AS nombre,
+ tiposoftwares.urlimg, '2' AS conjuntoid, grupoid
+ FROM softwares INNER JOIN tiposoftwares
+ WHERE softwares.idtiposoftware=tiposoftwares.idtiposoftware AND idcentro=$idcentro
+ ORDER BY conjuntoid, grupoid;";
+ break;
+ case 'imagenes':
+ $sql="SELECT DISTINCT imagenes.idimagen AS id ,imagenes.descripcion AS nombre,
+ imagenes.tipo AS conjuntoid, imagenes.grupoid,
+ IF(imagenes.idrepositorio=0,basica.idrepositorio,imagenes.idrepositorio) AS repo
+ FROM imagenes
+ LEFT JOIN imagenes AS basica ON imagenes.imagenid=basica.idimagen
+ WHERE imagenes.idcentro=$idcentro ORDER BY conjuntoid, grupoid;";
+ break;
+ case 'menus':
+ $sql="SELECT idmenu AS id, descripcion AS nombre, '1' AS conjuntoid, grupoid
+ FROM menus
+ WHERE idcentro=$idcentro ORDER BY conjuntoid, grupoid;";
+ break;
+ case 'ordenadores':
+ $sql="SELECT idordenador AS id, nombreordenador AS nombre,
+ ordenadores.idaula AS conjuntoid, ordenadores.grupoid
+ FROM ordenadores
+ INNER JOIN aulas
+ WHERE ordenadores.idaula=aulas.idaula AND idcentro=$idcentro
+ ORDER BY conjuntoid, grupoid;";
+ break;
+ case 'perfileshardware':
+ $sql="SELECT idperfilhard AS id, descripcion AS nombre,
+ '3' AS conjuntoid, grupoid
+ FROM perfileshard
+ WHERE idcentro=$idcentro
+ ORDER BY conjuntoid, grupoid;";
+ break;
+ case 'perfilessoftware':
+ $sql="SELECT idperfilsoft AS id, descripcion AS nombre,
+ '3' AS conjuntoid, grupoid
+ FROM perfilessoft
+ WHERE idcentro=$idcentro
+ ORDER BY conjuntoid, grupoid;";
+ break;
+ case 'procedimientos':
+ $sql="SELECT idprocedimiento AS id, descripcion AS nombre, '2' AS conjuntoid, grupoid
+ FROM procedimientos
+ WHERE idcentro=$idcentro ORDER BY conjuntoid, grupoid;";
+ break;
+ case 'repositorios':
+ $sql="SELECT idrepositorio AS id, nombrerepositorio AS nombre, '1' AS conjuntoid, grupoid
+ FROM repositorios
+ WHERE idcentro=$idcentro ORDER BY conjuntoid, grupoid;";
+ break;
+ case 'tareas':
+ $sql="SELECT idtarea AS id, descripcion AS nombre, ambito, '3' AS conjuntoid, grupoid
+ FROM tareas
+ WHERE idcentro=$idcentro ORDER BY conjuntoid, grupoid;";
+ break;
+ case 'tiposhardware':
+ $sql="SELECT idtipohardware AS id, descripcion AS nombre, urlimg, nemonico,
+ '1' AS conjuntoid, '0' AS grupoid
+ FROM tipohardwares
+ ORDER BY conjuntoid, grupoid;";
+ break;
+ case 'tipossoftware':
+ $sql="SELECT idtiposoftware AS id, descripcion AS nombre, urlimg,
+ '1' AS conjuntoid, '0' AS grupoid
+ FROM tiposoftwares
+ ORDER BY conjuntoid, grupoid;";
+ break;
+ }
+
+echo "sql: ".$sql;
+echo "<br><br>";
+ $nodos=Array();
+ $grupos_hijos=Array();
+ $rs=new Recordset;
+ $cmd->texto=$sql;
+
+ $rs->Comando=&$cmd;
+ if (!$rs->Abrir()) return(Array($nodos));
+
+ $rs->Primero();
+ $ordenNodo=-1;
+ $oldgrupoid=(isset($rs->campos["grupoid"]))? $rs->campos["grupoid"] : 0;
+ while (!$rs->EOF){
+ $conjuntoid=$rs->campos["conjuntoid"];
+ $id=$rs->campos["id"];
+ $descripcion=$rs->campos["nombre"];
+ // Las nodos de un grupo son un array. Cuando cambio de grupo pongo el orden a cero:
+ $grupoid=(isset($rs->campos["grupoid"]))? $rs->campos["grupoid"] : 0;
+ if ($oldgrupoid != $grupoid) {
+ $oldgrupoid=$grupoid;
+ $ordenNodo=0;
+ } else {
+ $ordenNodo=$ordenNodo+1;
+ }
+
+ $nodos[$conjuntoid][$grupoid][$ordenNodo]["descripcion"]=$descripcion;
+ $nodos[$conjuntoid][$grupoid][$ordenNodo]["id"]=$id;
+ $rs->Siguiente();
+ }
+
+ $rs->Cerrar();
+ return($nodos);
+}
+
+
+
+?>