texto=$sql; //echo "text: ".$cmd->texto; //echo "

"; $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); } /** * Construye la parte del árbol correspondiente a un grupo de nodos: lista sus nodos y sus grupos hijos. * * @param[tipo_nodo] str tipo de elemento que muestra el árbol * @param[idgrupo] int identificados del grupo que se está listando * @param[nivel] int nivel de profundidad del árbol * @param[orden] int orden dentro del nivel del árbol * @param[nodos] array nodos * @param[grupos] array grupos de nodos * @return orden de la lista del último elemento listado */ function lista_grupo_arbol($tipo_nodo, $tipo, $idgrupo, $nivel, $orden, $nodos, $grupos){ /* Al cargar la página sólo se muestra el primer nivel del árbol. */ $class=($nivel==1)? "": 'class="interior"'; $nivel=$nivel+1; if ($tipo_nodo == "aulas") { global $ordenadores; global $grp_ordenadores; global $idaulas; } echo "\n".' "."\n"; return($orden); } /** * Devuelve un array de grupos de nodos. Ordenados por tipos de nodos y grupo * @param[tipo_nodo] str tipo de elemento a mostrar en el árbol (aulas, imagenes, ...) * @param[nodos] array nodos a mostrar * @param[grupos] array grupos de nodos a mostrar * @return Escribe la raíz del árbol de nodos y el primer nivel. */ function lista_raiz_arbol ($tipo_nodo, $nodos, $grupos){ global $TbMsg; global $NUM_TIPOS_IMAGENES; $orden=0; if ($tipo_nodo == "aulas") { // Definimos variables para mostrar ordenadores global $ordenadores; global $grp_ordenadores; $ordenadores=nodos_arbol("ordenadores"); $grp_ordenadores=grupos_arbol("ordenadores"); } echo '"."\n"; } /* * 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': global $AMBITO_GRUPOSAULAS; $sql="SELECT idaula AS id, nombreaula AS nombre, grupoid, '$AMBITO_GRUPOSAULAS' 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': global $AMBITO_GRUPOSCOMPONENTESHARD; $sql="SELECT hardwares.idhardware AS id, hardwares.descripcion AS nombre, tipohardwares.urlimg, '$AMBITO_GRUPOSCOMPONENTESHARD' AS conjuntoid, grupoid FROM hardwares INNER JOIN tipohardwares WHERE hardwares.idtipohardware=tipohardwares.idtipohardware AND idcentro=$idcentro ORDER BY conjuntoid, grupoid;"; break; case 'componentessoftware': global $AMBITO_GRUPOSCOMPONENTESSOFT; $sql="SELECT softwares.idsoftware AS id, softwares.descripcion AS nombre, tiposoftwares.urlimg, '$AMBITO_GRUPOSCOMPONENTESSOFT' 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': global $AMBITO_GRUPOSMENUS; $sql="SELECT idmenu AS id, descripcion AS nombre, '$AMBITO_GRUPOSMENUS' 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': global $AMBITO_GRUPOSPERFILESHARD; $sql="SELECT idperfilhard AS id, descripcion AS nombre, '$AMBITO_GRUPOSPERFILESHARD' AS conjuntoid, grupoid FROM perfileshard WHERE idcentro=$idcentro ORDER BY conjuntoid, grupoid;"; break; case 'perfilessoftware': global $AMBITO_GRUPOSPERFILESSOFT; $sql="SELECT idperfilsoft AS id, descripcion AS nombre, '$AMBITO_GRUPOSPERFILESSOFT' AS conjuntoid, grupoid FROM perfilessoft WHERE idcentro=$idcentro ORDER BY conjuntoid, grupoid;"; break; case 'procedimientos': global $AMBITO_GRUPOSPROCEDIMIENTOS; $sql="SELECT idprocedimiento AS id, descripcion AS nombre, '$AMBITO_GRUPOSPROCEDIMIENTOS' AS conjuntoid, grupoid FROM procedimientos WHERE idcentro=$idcentro ORDER BY conjuntoid, grupoid;"; break; case 'repositorios': global $AMBITO_GRUPOSREPOSITORIOS; $sql="SELECT idrepositorio AS id, nombrerepositorio AS nombre, '$AMBITO_GRUPOSREPOSITORIOS' AS conjuntoid, grupoid FROM repositorios WHERE idcentro=$idcentro ORDER BY conjuntoid, grupoid;"; break; case 'tareas': global $AMBITO_GRUPOSTAREAS; $sql="SELECT idtarea AS id, descripcion AS nombre, ambito, '$AMBITO_GRUPOSTAREAS' 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 "

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