]> git.llucax.com Git - z.facultad/75.43/tp1.git/blob - src/lib/faq.functions.php
bugfix.
[z.facultad/75.43/tp1.git] / src / lib / faq.functions.php
1 <?php
2 // vim: set binary noeol et sw=4 sts=4 :
3 // Grupo 10
4 //
5 // Lucarella, Schein, Arena
6 //
7 // Creado: Jonathan Schein ( 01/05/2005 )
8 //
9 // $Id$
10
11 require_once 'Pregunta.php';
12 require_once 'Respuesta.php';  
13
14 // Levanta las preguntas y respuestas del archivo
15 // Devuelve un array con cada una de las preguntas creadas
16 function Faq_ObtenerPreguntas()
17 {
18  // Verifica que el file que guarda las preguntas exista
19  // Si no existe, devuelve un array vacio
20  if ( file_exists ( "data/preguntas.txt" ) )
21  {
22         $RespuestasPorPregunta = array();
23         
24         if ( file_exists ( "data/respuestas.txt" ) )
25         {
26          // Levanta todas las respuestas existentes de un archivo,
27          // Para luego vincularlas con las preguntas
28          $respuestasPlano = file("data/respuestas.txt");
29         
30          foreach($respuestasPlano as $row)
31          {
32            $objRespuesta = new Respuesta;
33                  
34                  $rowDiv = explode("|",$row);
35                  $objRespuesta->idPregunta      = $rowDiv[0];
36                  $objRespuesta->autor                   = $rowDiv[1];
37                  $objRespuesta->fecha                           = date('d/m/y H:i:s', $rowDiv[2]);
38                  $objRespuesta->texto                   = $rowDiv[3];
39                  // La respuesta no fue rankeada
40                  // ToDo: Manejar los rankings de preguntas
41                  $objRespuesta->ranking         = -1;
42                  
43                  if ( array_key_exists($objRespuesta->idPregunta, $RespuestasPorPregunta ) )
44                  {
45                          $ListaRespuestas = $RespuestasPorPregunta[$objRespuesta->idPregunta];
46                  }
47                  else
48                  {
49                                  $ListaRespuestas = array();
50                  }
51                 
52                  // Agrega la respuesta a la lista de respuestas correspondiente a una pregunta
53                  $ListaRespuestas[] = $objRespuesta;
54                 
55                  // Guarda la lista de respuestas de la pregunta                
56                  $RespuestasPorPregunta[$objRespuesta->idPregunta] = $ListaRespuestas;   
57           }
58         }
59         
60         $preguntasDesactivadas = array();
61         
62         if ( file_exists("data/desactivadas.txt" ) )
63         {
64                 $desactivadasPlano = file("data/desactivadas.txt");
65                 foreach ($desactivadasPlano as $row)
66                 {
67                  $rowDiv = explode("|",$row);
68                  $preguntasDesactivadas[$rowDiv[0]] = "0";
69                 }
70         } 
71         
72         $preguntasPlano = file("data/preguntas.txt");
73         
74         foreach($preguntasPlano as $row) 
75         {
76           $objPregunta = new Pregunta;
77
78                 $rowDiv = explode("|",$row);
79                 $objPregunta->id                                        = $rowDiv[0];
80                 $objPregunta->autor                     = $rowDiv[1];
81                 $objPregunta->fecha                             = date('d/m/y H:i:s', $rowDiv[2]);
82                 $objPregunta->texto                     = $rowDiv[3];
83                 
84                 // Verifica si una pregunta esta activa o fue dada de baja
85                 if ( array_key_exists($objPregunta->id, $preguntasDesactivadas) )
86                 {
87                  $objPregunta->activa                   = 0;
88                 }
89                 else
90                 {
91                  $objPregunta->activa                   = 1;
92                 }
93                 
94                 // Busca las respuestas a la pregunta
95                 if ( array_key_exists($objPregunta->id, $RespuestasPorPregunta ) )
96                 {
97                           $objPregunta->respuestas = $RespuestasPorPregunta[$objPregunta->id];
98                 }
99                 
100                 $Preguntas[] = $objPregunta;
101         }
102         return $Preguntas;
103  }
104  return;
105 }
106
107 // Ingresa una pregunta en el sistema. 
108 // Tiene que haber estado validado que el usuario pueda hacerlo
109 function Faq_IngresarPregunta($UsrId, $Pregunta)
110 {
111  $Fecha = time();
112
113  // Obtiene la lista de preguntas ya existentes
114  $Preguntas = Faq_ObtenerPreguntas();
115  $CantidadPreguntas = count($Preguntas);
116
117  $NuevoId= 0;
118  if ( $CantidadPreguntas != 0 )
119  {
120    $PreguntaObj = $Preguntas[$CantidadPreguntas -1];
121          $NuevoId = $PreguntaObj->id;
122          $NuevoId = $NuevoId + 1;
123  }
124
125  //Formato:
126  // PreguntaId | UserId | Fecha | Pregunta
127  $Linea = $NuevoId."|".$UsrId."|".$Fecha."|".$Pregunta."\n";
128  $fp = fopen("data/preguntas.txt","a");
129  if(!$fp) 
130  {
131    return "Error en el archivo";
132  }
133  fwrite($fp, $Linea);
134  fclose($fp);
135  return "La pregunta fue dada de alta correctamente";
136 }
137
138 // Ingresa una respuesta para una pregunta seleccionada
139 // Tienen que estar chequeadas las precondiciones
140 function Faq_IngresarRespuesta($PreguntaId, $UsrId, $Respuesta)
141 {
142  $Fecha = time();
143
144  //Formato:
145  // PreguntaRespondidaId| UserId | Fecha | Respuesta
146  $Linea = $PreguntaId."|".$UsrId."|".$Fecha."|".$Respuesta."\n";
147  $fp = fopen("data/respuestas.txt","a");
148  if(!$fp) 
149  {
150    return "Error en el archivo";
151  }
152  fwrite($fp, $Linea);
153  fclose($fp);
154  return "La respuesta fue dada de alta correctamente";
155 }
156
157 // Lista las preguntas existentes en el sistema
158 // Recibe el usuario que esta logueado, para determinar 
159 // que opciones de menu le tiene que brindar ( dar de baja pregunta,
160 // contestar pregunta, ranquear pregunta ).
161 function Faq_ListarPreguntas($Usuario)
162 {
163  $Preguntas = Faq_ObtenerPreguntas();
164  
165  $CantidadPreguntas = count($Preguntas);
166
167  if ( $CantidadPreguntas != 0 )
168  {
169  ?>
170  <form name="faq_listado_preguntas" action="faq.responderPregunta.php" method="post">
171  <?php 
172    foreach($Preguntas as $ObjPregunta)
173          {
174                 if ( $ObjPregunta->activa )
175                 {
176                         $ObjPregunta->Mostrar();
177                                 ?>
178                                 <input type="radio" name="PreguntaId" value="<?php echo $ObjPregunta->id ?>"> Seleccionar Pregunta <br/> 
179                                 <?php
180                 }
181          }
182          ?>
183          <input type=submit value="Responder Pregunta">
184    </form>
185 <?php
186  }
187  else
188  {
189         echo "NO HAY PREGUNTAS PARA MOSTRAR";
190  }
191  if ( $Usuario->esAdmin() )
192  {
193                 echo "<a href='faq.desactivarPregunta.php'>Pasar preguntas a un log historico</a><br/>";
194  }
195 }
196
197 // La funcion agrega el id de la pregunta a la lista de preguntas desactivadas
198 function Faq_DesactivarPregunta( $PreguntaId )
199 {
200  $fp = fopen("data/desactivadas.txt","a");
201  if(!$fp) 
202  {
203    return "Error en el archivo";
204  }
205  fwrite($fp, $PreguntaId."|".time()."\n");
206  fclose($fp);
207  return "La pregunta fue dada de baja, no sera listada mas, pero conservada en un historico";    
208 }
209 ?>