]> git.llucax.com Git - z.facultad/75.43/tp1.git/blob - src/lib/faq.functions.php
Agrega el manejo de creditos para el alta de preguntas
[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
141         file_creditos_preguntar( $Usuario->getId() );
142         
143         return "La pregunta fue dada de alta correctamente";
144  }
145  else
146  {
147         return "La pregunta no fue dada de alta. No dispone de credito suficiente";
148  }
149 }
150
151 // Ingresa una respuesta para una pregunta seleccionada
152 // Tienen que estar chequeadas las precondiciones
153 function Faq_IngresarRespuesta($PreguntaId, $UsrId, $Respuesta)
154 {
155  $Fecha = time();
156
157  //Formato:
158  // PreguntaRespondidaId| UserId | Fecha | Respuesta
159  $Linea = $PreguntaId."|".$UsrId."|".$Fecha."|".$Respuesta."\n";
160  $fp = fopen("data/respuestas.txt","a");
161  if(!$fp) 
162  {
163    return "Error en el archivo";
164  }
165  fwrite($fp, $Linea);
166  fclose($fp);
167  return "La respuesta fue dada de alta correctamente";
168 }
169
170 // Lista las preguntas existentes en el sistema
171 // Recibe el usuario que esta logueado, para determinar 
172 // que opciones de menu le tiene que brindar ( dar de baja pregunta,
173 // contestar pregunta, ranquear pregunta ).
174 function Faq_ListarPreguntas($Usuario)
175 {
176  $Preguntas = Faq_ObtenerPreguntas();
177  
178  $CantidadPreguntas = count($Preguntas);
179
180  if ( $CantidadPreguntas != 0 )
181  {
182  ?>
183  <form name="faq_listado_preguntas" action="faq.responderPregunta.php" method="post">
184  <?php 
185    foreach($Preguntas as $ObjPregunta)
186          {
187                 if ( $ObjPregunta->activa )
188                 {
189                         $ObjPregunta->Mostrar();
190                                 ?>
191                                 <input type="radio" name="PreguntaId" value="<?php echo $ObjPregunta->id ?>"> Seleccionar Pregunta <br/> 
192                                 <?php
193                 }
194          }
195          ?>
196          <input type=submit value="Responder Pregunta">
197    </form>
198 <?php
199  }
200  else
201  {
202         echo "NO HAY PREGUNTAS PARA MOSTRAR";
203  }
204  if ( $Usuario->esAdmin() )
205  {
206                 echo "<a href='faq.desactivarPregunta.php'>Pasar preguntas a un log historico</a><br/>";
207  }
208 }
209
210 // La funcion agrega el id de la pregunta a la lista de preguntas desactivadas
211 function Faq_DesactivarPregunta( $PreguntaId )
212 {
213  $fp = fopen("data/desactivadas.txt","a");
214  if(!$fp) 
215  {
216    return "Error en el archivo";
217  }
218  fwrite($fp, $PreguntaId."|".time()."\n");
219  fclose($fp);
220  return "La pregunta fue dada de baja, no sera listada mas, pero conservada en un historico";    
221 }
222 ?>