source: admin/WebConsole/propiedades/propiedades_repositorios.php

qndtest
Last change on this file was 560358b, checked in by Irina Gómez <irinagomez@…>, 4 years ago

#914 Fix error in repository properties when list images of organization unit with subdirectory separated.

  • Property mode set to 100644
File size: 11.9 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ónn: Año 2009-2010
6// Fecha Última modificación: Agosto-2010
7// Nombre del fichero: propiedades_repositorios.php
8// Descripción :
9//               Presenta el formulario de captura de datos de un repositorio para insertar,modificar y eliminar
10// Version 1.1.1: Si las OU están separadas por directorios, sólo muestra las imágenes del subdir definido
11// **********************************************************************************************************
12include_once("../includes/ctrlacc.php");
13include_once("../includes/opciones.php");
14include_once("../includes/comunes.php");
15include_once("../includes/CreaComando.php");
16include_once("../clases/AdoPhp.php");
17include_once("../idiomas/php/".$idioma."/propiedades_repositorios_".$idioma.".php");
18// Fichero con funciones para trabajar con el webservice
19include_once("../includes/restfunctions.php");
20//________________________________________________________________________________________________________
21$opcion=0;
22$opciones=array($TbMsg[0],$TbMsg[1],$TbMsg[2],$TbMsg[3]);
23//________________________________________________________________________________________________________
24$idrepositorio=0;
25$nombrerepositorio="";
26$ip="";
27$apiKeyRepo="";
28$grupoid=0;
29$comentarios="";
30$ordenadores=0; // Número de ordenador a los que da servicio
31$numordenadores=0; // Número de ordenador a los que da servicio
32$dirOU=""; // Directorio de la unidad organizativa
33
34if (isset($_GET["opcion"])) $opcion=$_GET["opcion"]; // Recoge parametros
35if (isset($_GET["idrepositorio"])) $idrepositorio=$_GET["idrepositorio"];
36if (isset($_GET["grupoid"])) $grupoid=$_GET["grupoid"];
37if (isset($_GET["identificador"])) $idrepositorio=$_GET["identificador"];
38$idcentro = (isset($_SESSION["widcentro"])) ? $_SESSION["widcentro"] : "";
39
40//________________________________________________________________________________________________________
41$cmd=CreaComando($cadenaconexion); // Crea objeto comando
42if (!$cmd)
43        Header('Location: '.$pagerror.'?herror=2'); // Error de conexión con repositorio B.D.
44if  ($opcion!=$op_alta){
45        $resul=TomaPropiedades($cmd,$idrepositorio);
46        if (!$resul)
47                Header('Location: '.$pagerror.'?herror=3'); // Error de recuperaci�n de datos.
48}
49// Obtenemos directorio de la Unidad Organizativa
50if ($idcentro != "") TomaDirectorioOU($cmd,$idcentro);
51
52//________________________________________________________________________________________________________
53//#########################################################################
54
55// Si tenemos un apiKey podemos obtener la información desde el webservice en el repositorio
56if($apiKeyRepo != ""){
57        $repo[0]['url'] = "https://$ip/opengnsys/rest/repository/images";
58        $repo[0]['header'] = array('Authorization: '.$apiKeyRepo);
59        $result = multiRequest($repo);
60        if ($result[0]['code'] === 200) {
61                $result = json_decode($result[0]['data']);
62                $repodir = $result->directory;
63                $totalrepo = humanSize($result->disk->total);
64                $librerepo = humanSize($result->disk->free);
65                $ocupadorepo = humanSize($result->disk->total - $result->disk->free);
66                $porcentajerepo = 100 - floor(100 * $result->disk->free / $result->disk->total);
67                $repoOus = $result->ous;
68                $repoImages = $result->images;
69                $repoWithApi = true;
70        } else {
71                // Error de acceso a la API REST.
72                $repoWithApi = false;
73                $repoImages = null;
74        }
75} else {
76        // Error de acceso a la API REST.
77        $repoWithApi = false;
78        $repoImages = null;
79}
80
81//#########################################################################
82?>
83<HTML>
84<HEAD>
85    <TITLE>Administración web de aulas</TITLE>
86        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
87        <LINK rel="stylesheet" type="text/css" href="../estilos.css">
88        <SCRIPT language="javascript" src="../jscripts/validators.js"></SCRIPT>
89        <SCRIPT language="javascript" src="../jscripts/propiedades_repositorios.js"></SCRIPT>
90        <SCRIPT language="javascript" src="../jscripts/opciones.js"></SCRIPT>
91        <?php echo '<SCRIPT language="javascript" src="../idiomas/javascripts/'.$idioma.'/propiedades_repositorios_'.$idioma.'.js"></SCRIPT>'?>
92</HEAD>
93<BODY>
94<DIV  align=center>
95<FORM  name="fdatos" action="../gestores/gestor_repositorios.php" method="post">
96        <INPUT type=hidden name=opcion value="<?php echo $opcion?>">
97        <INPUT type=hidden name=idrepositorio value="<?php echo $idrepositorio?>">
98        <INPUT type=hidden name=grupoid value="<?php echo $grupoid?>">
99        <INPUT type=hidden name=ordenadores value="<?php echo $ordenadores?>">
100
101        <P align=center class=cabeceras><?php echo $TbMsg[4]?><BR>
102        <SPAN class=subcabeceras><?php echo $opciones[$opcion]?></SPAN></P>
103        <TABLE  align=center border=0 cellPadding=1 cellSpacing=1 class=tabla_datos >
104<!----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -->
105                <TR>
106                        <TH align="center">&nbsp;<?php echo $TbMsg[5]?>&nbsp;</TH>
107                        <?php
108                                if ($opcion==$op_eliminacion)
109                                        echo '<TD>'.$nombrerepositorio.'</TD>';
110                                else
111                                        echo '<TD><INPUT  class="formulariodatos" name="nombrerepositorio" style="width:200px" type="text" value="'.$nombrerepositorio.'"></TD>';
112                        ?>
113                        <TD valign="top" align="center" rowspan="4">
114                                <IMG border="3" style="border-color:#63676b" src="../images/aula.jpg">
115                                <BR>&nbsp;Ordenadores:&nbsp;<?php echo $ordenadores?></TD>
116                </TR>
117<!----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -->
118                <TR>
119                        <TH align=center>&nbsp;<?php echo $TbMsg[6]?>&nbsp;</TH>
120                        <?php
121                        if ($opcion==$op_eliminacion)
122                                        echo '<TD>'.$ip.'</TD>';
123                        else
124                                echo'<TD><INPUT  class="formulariodatos" name="ip" type="text" style="width:200px" value="'.$ip.'"></TD>';
125                        ?>
126                </TR>
127<!----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -->
128                <TR>
129                        <TH align=center>&nbsp;<?php echo $TbMsg[17]?>&nbsp;</TH>
130                        <?php
131                                if ($opcion==$op_eliminacion)
132                                        echo '<TD>********</TD>';
133                                else
134                                        echo'<TD><INPUT  class="formulariodatos" name="apiKeyRepo" type="text" style="width:200px" value="'.$apiKeyRepo.'"></TD>';
135                        ?>
136                </TR>
137<!----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -->
138                <TR>
139                        <TH align=center>&nbsp;<?php echo $TbMsg[7]?>&nbsp;</TH>
140                        <?php
141                                if ($opcion==$op_eliminacion)
142                                        echo '<TD colspan="2">'.$comentarios.'</TD>';
143                                else
144                                        echo '<TD colspan="2"><TEXTAREA   class="formulariodatos" name="comentarios" rows=2 cols=50>'.$comentarios.'</TEXTAREA></TD>';
145                        ?>
146                </TR>
147
148<!----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -->
149
150        </TABLE>
151                <?php   if ( $opcion == 1 ){} else { ?>
152
153        <TABLE  align=center border=0 cellPadding=2 cellSpacing=2 class=tabla_datos >
154    <!----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -->
155
156                <?php  if ($repoWithApi) { ?>
157                <TR>
158                        <TH align=center width=125>&nbsp;<?php echo $TbMsg[11]?>&nbsp;</TH>
159                        <TH align=center width=120>&nbsp;<?php echo $TbMsg[12]?>&nbsp;</TH>
160                        <TH align=center width=120>&nbsp;<?php echo $TbMsg[13]?>&nbsp;</TH>
161                        <TH align=center width=101>&nbsp;<?php echo $TbMsg[14]?>&nbsp;</TH>
162                </TR>
163                <TR>
164                        <TD align=center width=125>&nbsp;<?php echo $totalrepo?>&nbsp;</TD>
165                        <TD align=center width=120>&nbsp;<?php echo $ocupadorepo?>&nbsp;</TD>
166                        <TD align=center width=120>&nbsp;<?php echo $librerepo?>&nbsp;</TD>
167                        <TD align=center width=101>&nbsp;<?php echo "$porcentajerepo %" ?>&nbsp;</TD>
168                </TR>
169                <?php
170                                // Si tenemos informacion del repositorio remoto, mostramos las imagenes
171                                if ($repoWithApi == true) {
172                                        $cabeceraTabla= "<tr class='tabla_listados_sin'><th colspan='4'>".$TbMsg['MSG_CONTENT']." $repodir</th></tr>\n".
173                                                        "<tr><td>".$TbMsg['MSG_IMAGE']." (".$TbMsg['MSG_TYPE'].")</td><td>".$TbMsg['MSG_SIZE']."</td><td>".$TbMsg['MSG_MODIFIED']."</td><td>".$TbMsg['MSG_PERMISSIONS']."</td></tr>\n";
174
175                                    if ($dirOU == "" && is_array($repoImages) && !empty($repoImages)) {
176                                        echo $cabeceraTabla;
177                                        $cabeceraTabla = "";
178                                        foreach($repoImages as $image){
179                                                echo "<tr class='tabla_listados_sin'>";
180                                                echo "<td>".$image->name." (".$image->type.")</td>";
181                                                echo "<td>".humanSize($image->size)."</td>";
182                                                echo "<td>".$image->modified."</td>";
183                                                echo "<td>".$image->mode."</td>";
184                                                echo "</tr>\n";
185                                        }
186                                    }
187                                    foreach($repoOus as $ou) {
188                                                if ($dirOU != "" && $ou->subdir != $dirOU) continue;
189                                                echo $cabeceraTabla;
190                                                $cabeceraTabla = "";
191                                                foreach($ou->images as $image) {
192                                                        echo "<tr class='tabla_listados_sin'>";
193                                                        echo "<td>".$ou->subdir." / ".$image->name." (".$image->type.")</td>";
194                                                        echo "<td>".humanSize($image->size)."</td>";
195                                                        echo "<td>".$image->modified."</td>";
196                                                        echo "<td>".$image->mode."</td>";
197                                                        echo "</tr>\n";
198                                                }
199                                    }
200                                }
201                        ?>
202                <?php }else { ?>
203                <tr>
204                        <th align="center">&nbsp;<?php echo '<strong>'.$TbMsg[15].'</strong></br>'.$TbMsg[16] ?></th>
205                </tr>
206                        <?php } ?>
207                <?php } ?>
208<!----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -->
209
210        </TABLE>
211</FORM>
212</DIV>
213<?php
214//________________________________________________________________________________________________________
215include_once("../includes/opcionesbotonesop.php");
216//________________________________________________________________________________________________________
217?>
218</BODY>
219</HTML>
220<?php
221//________________________________________________________________________________________________________
222//      Recupera los datos de un repositorio
223//              Parametros:
224//              - cmd: Una comando ya operativo (con conexión abierta)
225//              - id: El identificador del repositorio
226//________________________________________________________________________________________________________
227function TomaPropiedades($cmd,$id){
228        global $nombrerepositorio;
229        global $ip;
230        global $comentarios;
231        global $apiKeyRepo;
232        global $ordenadores;
233
234        $cmd->texto=<<<EOT
235SELECT repositorios.*, COUNT(ordenadores.idordenador) AS numordenadores
236  FROM repositorios
237  LEFT JOIN ordenadores USING(idrepositorio)
238 WHERE repositorios.idrepositorio='$id';
239EOT;
240        $rs=new Recordset;
241        $rs->Comando=&$cmd;
242        if (!$rs->Abrir()) return(true); // Error al abrir recordset
243        $rs->Primero();
244        if (!$rs->EOF){
245                $nombrerepositorio=$rs->campos["nombrerepositorio"];
246                $ip=$rs->campos["ip"];
247                $comentarios=$rs->campos["comentarios"];
248                $apiKeyRepo=$rs->campos["apikey"];
249                $ordenadores=$rs->campos["numordenadores"];
250        }
251        $rs->Cerrar();
252        return(true);
253}
254
255//______________________________________________________________________________
256//      Recupera directorio de la unidad organizativa (si no están separados '')
257//              Parametros:
258//              - cmd: Una comando ya operativo (con conexión abierta)
259//              - id: El identificador del repositorio
260//________________________________________________________________________________________________________
261function TomaDirectorioOU($cmd,$idOU){
262        global $dirOU;
263        $cmd->texto=<<<EOT
264SELECT if(ogunit=1, directorio, "") AS dirOU
265  FROM entidades, centros
266 WHERE idcentro='$idOU';
267EOT;
268        $rs=new Recordset;
269        $rs->Comando=&$cmd;
270        if (!$rs->Abrir()) return(true); // Error al abrir recordset
271        $rs->Primero();
272        if (!$rs->EOF){
273                $dirOU=$rs->campos["dirOU"];
274        }
275        $rs->Cerrar();
276        return(true);
277}
Note: See TracBrowser for help on using the repository browser.