source: admin/WebConsole/gestores/gestor_ordenadores.php @ 1de0d12d

Last change on this file since 1de0d12d was 7da63e81, checked in by Ramón M. Gómez <ramongomez@…>, 5 years ago

#944: Add location selection boxes in the computer properties form.

  • Property mode set to 100644
File size: 13.7 KB
Line 
1<?php
2// *************************************************************************************************************************************************
3// Aplicación WEB: ogAdmWebCon
4// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
5// Fecha Creación: Año 2009-2010
6// Fecha Última modificación: Agosto-2010
7// Nombre del fichero: gestor_ordenadores.php
8// Descripción :
9//              Gestiona el mantenimiento de la tabla de ordenadores
10// Versión 1.1.0: Al insertar ordenador se comprueba que no existen duplicados nombre, ip y mac
11// Autor: Irina Gómez  - ETSII, Universidad de Sevilla
12// Fecha: 2016-03-04
13// *************************************************************************************************************************************************
14include_once("../includes/ctrlacc.php");
15include_once("../clases/AdoPhp.php");
16include_once("../clases/XmlPhp.php");
17include_once("../clases/ArbolVistaXML.php");
18include_once("../includes/CreaComando.php");
19include_once("../includes/constantes.php");
20include_once("./relaciones/ordenadores_eliminacion.php");
21include_once("../includes/tftputils.php");
22include_once("../includes/opciones.php");
23include_once("../idiomas/php/".$idioma."/gestor_ordenadores_".$idioma.".php");
24
25//________________________________________________________________________________________________________
26$opcion=0; // Inicializa parametros
27
28$fotoordenador="";
29$grupoid=0;
30$idaula=0;
31$idordenador=0;
32$nombreordenador="";
33$numserie="";
34$n_row=0;
35$n_col=0;
36$ip="";
37$mac="";
38$idperfilhard=0;
39$idrepositorio=0;
40### AGP
41$oglive="ogLive";
42$idmenu=0;
43$idprocedimiento=0;
44$idimagen=0;
45$colocar="";
46#### ADV
47$netiface="";
48$netdriver="";
49### UHU
50$validacion="";
51$paginalogin="";
52$paginavalidacion="";
53### Ramón
54$arranque="";
55### Irina
56$datosduplicados="";
57
58//##agp
59if (isset($_FILES['archivo'])) {
60        if($_FILES['archivo']['type']=="image/gif" || $_FILES['archivo']['type']=="image/jpeg" || $_FILES['archivo']['type']=="image/jpg" || $_FILES['archivo']['type']=="image/png" || $_FILES['archivo']['type']=="image/JPG") {
61                $uploaddir ="../images/fotos/";
62                $uploadfile = $uploaddir.$_FILES['archivo']['name'];
63                move_uploaded_file($_FILES['archivo']['tmp_name'], $uploadfile);
64                #copy($_FILES['archivo']['tmp_name'], $uploadfile);
65        }
66}
67//##agp
68if (isset($_POST["fotoordenador"])) $fotoordenador=$_POST["fotoordenador"];
69if (isset($_POST["opcion"])) $opcion=$_POST["opcion"]; // Recoge parametros
70if (isset($_POST["grupoid"])) $grupoid=$_POST["grupoid"];
71if (isset($_POST["idaula"])) $idaula=$_POST["idaula"];
72if (isset($_POST["idordenador"])) $idordenador=$_POST["idordenador"];
73if (isset($_POST["identificador"])) $idordenador=$_POST["identificador"];
74if (isset($_POST["nombreordenador"])) $nombreordenador=$_POST["nombreordenador"];
75if (isset($_POST["numserie"])) $numserie=$_POST["numserie"];
76$n_row=$_POST["n_row"]??0;
77$n_col=$_POST["n_col"]??0;
78if (isset($_POST["ip"])) $ip=$_POST["ip"];
79if (isset($_POST["mac"])) $mac=str_replace(":","",$_POST["mac"]);
80if (isset($_POST["idperfilhard"])) $idperfilhard=$_POST["idperfilhard"];
81if (isset($_POST["idrepositorio"])) $idrepositorio=$_POST["idrepositorio"];
82if (isset($_POST["seleoglive"])) $oglive=$_POST["seleoglive"];
83if (isset($_POST["idmenu"])) $idmenu=$_POST["idmenu"];
84if (isset($_POST["idprocedimiento"])) $idprocedimiento=$_POST["idprocedimiento"];
85
86if (isset($_POST["netiface"])) $netiface=$_POST["netiface"];
87if (isset($_POST["netdriver"])) $netdriver=$_POST["netdriver"];
88######## UHU
89if (isset($_POST["validacion"])) $validacion=$_POST["validacion"];
90if (isset($_POST["paginalogin"])) $paginalogin=$_POST["paginalogin"];
91if (isset($_POST["paginavalidacion"])) $paginavalidacion=$_POST["paginavalidacion"];
92######## Ramón
93if (isset($_POST["arranque"])) $arranque=$_POST["arranque"];
94######## AGP
95if (isset($_POST["coloc"])) $colocar=$_POST["coloc"];
96        if ($colocar=="s"){
97               
98                $cmd=CreaComando($cadenaconexion); // Crea objeto comando
99                $rs=new Recordset;
100                $cmd->texto="SELECT * FROM ordenadores WHERE idordenador=".$idordenador;
101                $rs->Comando=&$cmd;
102                if (!$rs->Abrir()) return(false); // Error al abrir recordset
103                $rs->Primero();
104                if (!$rs->EOF){
105                        $arranque=$rs->campos["arranque"];
106                $rs->Cerrar();
107                }
108        }
109######## AGP
110               
111$tablanodo=""; // Arbol para nodos insertados
112//________________________________________________________________________________________________________
113$cmd=CreaComando($cadenaconexion); // Crea objeto comando
114$resul=false;
115if ($cmd){
116        if ($idaula==0)
117                $idaula=toma_aula($cmd,$grupoid);
118        $resul=Gestiona();
119        $cmd->Conexion->Cerrar();
120}
121if($opcion!=$op_movida){
122        echo '<HTML>';
123        echo '<HEAD>';
124        echo '  <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">';
125        echo '<BODY>';
126        echo '<P><SPAN style="visibility:hidden" id="arbol_nodo">'.$tablanodo.'</SPAN></P>';
127        echo '  <SCRIPT language="javascript" src="../jscripts/propiedades_ordenadores.js"></SCRIPT>';
128        echo '<SCRIPT language="javascript">'.chr(13);
129        if ($resul){
130                echo 'var oHTML'.chr(13);
131                echo 'var cTBODY=document.getElementsByTagName("TBODY");'.chr(13);
132                echo 'o=cTBODY.item(1);'.chr(13);
133        }
134}
135//________________________________________________________________________________________________________
136        $literal="";
137        switch($opcion){
138                case $op_alta :
139                        $literal="resultado_insertar_ordenadores";
140                        break;
141                case $op_modificacion:
142                        $literal="resultado_modificar_ordenadores";
143                        break;
144                case $op_eliminacion :
145                        $literal="resultado_eliminar_ordenadores";
146                        break;
147                case $op_movida :
148                        $literal="resultado_cambiar_ordenadores";
149                        break;
150                default:
151                        break;
152        }
153if ($resul){
154        if ($opcion == $op_alta) {
155            if ( $datosduplicados != '') {
156                echo $literal."(0,'".$TbMsg["DUPLICADO"].$datosduplicados." ',".$idordenador.",o.innerHTML);".chr(13);
157            } else {
158                echo $literal."(1,'".$cmd->DescripUltimoError()." ',".$idordenador.",o.innerHTML);".chr(13);
159            }
160    } elseif ($opcion == $op_modificacion) {
161            if ( $datosduplicados != '') {
162                echo $literal."(0,'".$TbMsg["DUPLICADO"].$datosduplicados." ','".$nombreordenador."');".chr(13);
163            } else {
164                echo $literal."(1,'".$cmd->DescripUltimoError()." ','".$nombreordenador."');".chr(13);
165            }
166    }
167        else
168                echo $literal."(1,'".$cmd->DescripUltimoError()." ','".$nombreordenador."');".chr(13);
169}
170else
171        echo $literal."(0,'".$cmd->DescripUltimoError()."',".$idordenador.")";
172
173if($opcion!=$op_movida){
174        echo '  </SCRIPT>';
175        echo '</BODY>   ';
176        echo '</HTML>';
177}
178?>
179<script>
180        // Capturar el iframe donde se muestra el arbol de aulas,
181        // Al estar dentro del iframe de contenido, debemos acceder al padre y desde ahi acceder al iframe del arbol para recargarlo
182        var iframe = this.parent.document.getElementsByName("frame_arbol")[0];
183        // recargar iframe
184        iframe.src = iframe.src;
185</script>
186<?php
187/**************************************************************************************************************************************************
188        Busca identificador del aula de un grupo de ordenador .Devuelve el identificador del aula a la que pertenece el grupo
189                Parametros:
190                - cmd:Una comando ya operativo (con conexión abierta) 
191________________________________________________________________________________________________________*/
192function toma_aula($cmd,$idgrupo){
193        $rs=new Recordset;
194        $cmd->texto="SELECT idaula FROM gruposordenadores WHERE idgrupo=".$idgrupo;
195        $rs->Comando=&$cmd;
196        if (!$rs->Abrir()) return(0); // Error al abrir recordset
197        $rs->Primero();
198        if (!$rs->EOF)
199                return($rs->campos["idaula"]);
200        else
201                return(0);
202}
203/*________________________________________________________________________________________________________
204        Inserta, modifica o elimina datos en la tabla ordenadores
205________________________________________________________________________________________________________*/
206function Gestiona(){
207        global $cmd;
208        global $opcion;
209        global $fotoordenador;
210        global $grupoid;
211        global $idordenador;
212        global $nombreordenador;
213        global $numserie;
214        global $n_row;
215        global $n_col;
216        global $ip;
217        global $mac;
218        global $idaula;
219        global $idperfilhard;
220        global $idrepositorio;
221        global $oglive;
222        global $idmenu;
223        global $idprocedimiento;
224        global $netiface;
225        global $netdriver;
226######################## UHU
227        global $validacion;
228        global $paginalogin;
229        global $paginavalidacion;
230######################## Ramón
231        global $arranque;
232        global $idioma;
233
234        global $op_alta;
235        global $op_modificacion;
236        global $op_eliminacion;
237        global $op_movida;
238        global $tablanodo;
239
240####################### Irina
241        global $datosduplicados;
242
243       
244        $cmd->CreaParametro("@grupoid",$grupoid,1);
245        $cmd->CreaParametro("@idaula",$idaula,1);
246        $cmd->CreaParametro("@idordenador",$idordenador,1);
247        $cmd->CreaParametro("@nombreordenador",$nombreordenador,0);
248        $cmd->CreaParametro("@numserie",$numserie,0);
249        $cmd->CreaParametro("@n_row",$n_row,1);
250        $cmd->CreaParametro("@n_col",$n_col,1);
251        $cmd->CreaParametro("@ip",$ip,0);
252        $cmd->CreaParametro("@mac",$mac,0);
253        $cmd->CreaParametro("@idperfilhard",$idperfilhard,1);
254        $cmd->CreaParametro("@idrepositorio",$idrepositorio,1);
255        $cmd->CreaParametro("@oglivedir",$oglive,0);
256        $cmd->CreaParametro("@idmenu",$idmenu,1);
257        $cmd->CreaParametro("@idprocedimiento",$idprocedimiento,1);
258        $cmd->CreaParametro("@netiface",$netiface,0);
259        $cmd->CreaParametro("@netdriver",$netdriver,0);
260        $cmd->CreaParametro("@fotoordenador",$fotoordenador,0);
261######################################################### UHU
262        $cmd->CreaParametro("@validacion",$validacion,0);
263        $cmd->CreaParametro("@paginalogin",$paginalogin,0);
264        $cmd->CreaParametro("@paginavalidacion",$paginavalidacion,0);
265######################################################### UHU
266
267
268        switch($opcion){
269                case $op_alta :
270            $duplicates = checkDuplicates($cmd, $datosduplicados, $idordenador, $nombreordenador, $ip, $mac);
271            // Si no hay datos duplicados insertamos el ordenador;
272            if (!$duplicates) {
273                $cmd->texto="INSERT INTO ordenadores(nombreordenador,numserie,n_row,n_col,ip,mac,idperfilhard,idrepositorio,oglivedir,
274                    idmenu,idproautoexec,idaula,grupoid,netiface,netdriver,fotoord,validacion,paginalogin,paginavalidacion) VALUES (@nombreordenador,@numserie,@n_row,@n_col,@ip,@mac,@idperfilhard,@idrepositorio,@oglivedir,
275                    @idmenu,@idprocedimiento,@idaula,@grupoid,@netiface,@netdriver,@fotoordenador,@validacion,@paginalogin,@paginavalidacion)";
276             }
277            $resul=$cmd->Ejecutar();
278                        if ($resul){ // Crea una tabla nodo para devolver a la página que llamó ésta
279                            $idordenador=$cmd->Autonumerico();
280                            // Crear fichero TFTP/PXE por defecto para el nuevo ordenador.
281                            createBootMode ($cmd, "", $nombreordenador, $idioma);
282                            // Insertar datos en el árbol de configuración.
283                            $arbolXML=SubarbolXML_ordenadores($idordenador,$nombreordenador);
284                            $baseurlimg="../images/signos"; // Url de las imagenes de signo
285                            $clasedefault="texto_arbol"; // Hoja de estilo (Clase por defecto) del árbol
286                            $arbol=new ArbolVistaXML($arbolXML,0,$baseurlimg,$clasedefault);
287                            $tablanodo=$arbol->CreaArbolVistaXML();
288                        }
289                        break;
290        case $op_modificacion:
291            $duplicates = checkDuplicates($cmd, $datosduplicados, $idordenador, $nombreordenador, $ip, $mac);
292            if (!$duplicates) {
293                $cmd->texto="UPDATE ordenadores SET nombreordenador=@nombreordenador,numserie=@numserie,n_row=@n_row,n_col=@n_col,ip=@ip,mac=@mac,idperfilhard=@idperfilhard,
294                idrepositorio=@idrepositorio,oglivedir=@oglivedir,idmenu=@idmenu,idproautoexec=@idprocedimiento,netiface=@netiface,netdriver=@netdriver,fotoord=@fotoordenador,validacion=@validacion,paginalogin=@paginalogin,paginavalidacion=@paginavalidacion
295                WHERE idordenador=@idordenador";
296            }
297                        $resul=$cmd->Ejecutar();
298                        // Actualizar fichero TFTP/PXE a partir de la plantilla asociada.
299                        createBootMode ($cmd, $arranque, $nombreordenador, $idioma);
300                        break;
301                case $op_eliminacion :
302                        $resul=EliminaOrdenadores($cmd,$idordenador,"idordenador");// Eliminación en cascada
303                        // Borrar fichero PXE.
304                        deleteBootFile ($mac);
305                        break;
306                case $op_movida :
307                        $cmd->texto="UPDATE ordenadores SET idaula=@idaula, grupoid=@grupoid WHERE idordenador=@idordenador";
308                        $resul=$cmd->Ejecutar();
309                        // Actualizar fichero TFTP/PXE a partir de la plantilla asociada.
310                        createBootMode ($cmd, $arranque, $nombreordenador, $idioma);
311                        break;
312                default:
313                        break;
314        }
315        return($resul);
316}
317
318function checkDuplicates(&$cmd, &$duplicate_data, $computer_id, $computer_name, $ip, $mac){
319        $cmd->texto="SELECT idordenador,nombreordenador,ip,mac FROM  ordenadores
320                WHERE nombreordenador=@nombreordenador OR ip=@ip OR mac=@mac";
321        $rs = new Recordset;
322        $rs->Comando=&$cmd;
323        if (!$rs->Abrir()) return(0);
324        $rs->Primero();
325        while (!$rs->EOF) {
326                if ($computer_id != $rs->campos["idordenador"]) {
327                        if ( $computer_name == $rs->campos["nombreordenador"])
328                                $duplicate_data ="nombre: $computer_name,";
329                        if ( $ip == $rs->campos["ip"])
330                                $duplicate_data .=" ip: $ip,";
331                        if (strtoupper($mac) == strtoupper($rs->campos["mac"]))
332                                $duplicate_data .=" mac: $mac,";
333           }
334           $rs->Siguiente();
335        }
336        $rs->Cerrar();
337        $duplicate_data = trim($duplicate_data, ',');
338        $ret = !empty($duplicate_data);
339        return($ret);
340}
341
342/*________________________________________________________________________________________________________
343        Crea un arbol XML para el nuevo nodo insertado
344________________________________________________________________________________________________________*/
345function SubarbolXML_ordenadores($idordenador,$nombreordenador){
346                global $LITAMBITO_ORDENADORES;
347                $cadenaXML='<ORDENADOR';
348                // Atributos                   
349                $cadenaXML.=' clickcontextualnodo="menu_contextual(this,' ."'flo_".$LITAMBITO_ORDENADORES."'" .')"';
350                $cadenaXML.=' imagenodo="../images/iconos/ordenador.gif"';
351                $cadenaXML.=' infonodo="'.$nombreordenador.'"';
352                $cadenaXML.=' nodoid='.$LITAMBITO_ORDENADORES.'-'.$idordenador;
353                $cadenaXML.='></ORDENADOR>';
354                return($cadenaXML);
355}
356?>
357
Note: See TracBrowser for help on using the repository browser.