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