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