2 // vim: set binary noeol et sw=4 sts=4 :
5 // Lucarella, Schein, Arena
7 // Creado: Jonathan Schein ( 01/05/2005 )
11 require_once 'Pregunta.php';
12 require_once 'Respuesta.php';
13 require_once 'file.creditos.php';
14 require_once 'file.php';
16 // Levanta las preguntas y respuestas del archivo
17 // Devuelve un array con cada una de las preguntas creadas
18 function Faq_ObtenerPreguntas()
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" ) )
24 $RespuestasPorPregunta = array();
26 if ( file_exists ( "data/respuestas.txt" ) )
28 // Levanta todas las respuestas existentes de un archivo,
29 // Para luego vincularlas con las preguntas
30 $respuestasPlano = file("data/respuestas.txt");
33 foreach($respuestasPlano as $row)
35 $objRespuesta = new Respuesta;
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;
49 if ( array_key_exists($objRespuesta->idPregunta, $RespuestasPorPregunta ) )
51 $ListaRespuestas = $RespuestasPorPregunta[$objRespuesta->idPregunta];
55 $ListaRespuestas = array();
58 // Agrega la respuesta a la lista de respuestas correspondiente a una pregunta
59 $ListaRespuestas[] = $objRespuesta;
61 // Guarda la lista de respuestas de la pregunta
62 $RespuestasPorPregunta[$objRespuesta->idPregunta] = $ListaRespuestas;
66 $preguntasDesactivadas = array();
68 if ( file_exists("data/desactivadas.txt" ) )
70 $desactivadasPlano = file("data/desactivadas.txt");
71 foreach ($desactivadasPlano as $row)
73 $rowDiv = explode("|",$row);
74 $preguntasDesactivadas[$rowDiv[0]] = "0";
78 $preguntasPlano = file("data/preguntas.txt");
80 foreach($preguntasPlano as $row)
82 $objPregunta = new Pregunta;
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];
90 // Verifica si una pregunta esta activa o fue dada de baja
91 if ( array_key_exists($objPregunta->id, $preguntasDesactivadas) )
93 $objPregunta->activa = 0;
97 $objPregunta->activa = 1;
100 // Busca las respuestas a la pregunta
101 if ( array_key_exists($objPregunta->id, $RespuestasPorPregunta ) )
103 $objPregunta->respuestas = $RespuestasPorPregunta[$objPregunta->id];
106 $Preguntas[] = $objPregunta;
113 // Ingresa una pregunta en el sistema.
114 // Tiene que haber estado validado que el usuario pueda hacerlo
115 function Faq_IngresarPregunta($Usuario, $Pregunta)
117 // Valida nuevamente que el usuario tenga los creditos suficientes para
118 // dar de alta la pregunta
119 if ( $Usuario->GetCreditos() > 0 )
122 // Obtiene la lista de preguntas ya existentes
123 $Preguntas = Faq_ObtenerPreguntas();
124 $CantidadPreguntas = count($Preguntas);
127 if ( $CantidadPreguntas != 0 )
129 $PreguntaObj = $Preguntas[$CantidadPreguntas -1];
130 $NuevoId = $PreguntaObj->id;
131 $NuevoId = $NuevoId + 1;
135 // PreguntaId | UserId | Fecha | Pregunta
136 $Linea = $NuevoId."|".$Usuario->getId()."|".$Fecha."|".$Pregunta."\n";
137 $fp = fopen("data/preguntas.txt","a");
140 return "Error en el archivo";
145 // Disminuye el credito del usuario, si es que no es asesor y tiene credito infinito
146 if ( !$Usuario->esAsesor() )
148 file_creditos_preguntar( $Usuario->getId() );
151 return "La pregunta fue dada de alta correctamente";
155 return "La pregunta no fue dada de alta. No dispone de credito suficiente";
159 // Ingresa una respuesta para una pregunta seleccionada
160 // Tienen que estar chequeadas las precondiciones
161 function Faq_IngresarRespuesta($PreguntaId, $UsrId, $Respuesta)
166 // PreguntaRespondidaId| UserId | Fecha | Respuesta
167 $Linea = $PreguntaId."|".$UsrId."|".$Fecha."|".$Respuesta."\n";
168 $fp = fopen("data/respuestas.txt","a");
171 return "Error en el archivo";
175 return "La respuesta fue dada de alta correctamente";
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)
184 $Preguntas = Faq_ObtenerPreguntas();
186 $CantidadPreguntas = count($Preguntas);
188 if ( $CantidadPreguntas != 0 )
190 foreach($Preguntas as $ObjPregunta)
192 if ( $ObjPregunta->activa )
194 $ObjPregunta->toHTML();
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">
206 echo "NO HAY PREGUNTAS PARA MOSTRAR";
208 if ( $Usuario->esAdmin() )
210 echo "<a href='faq.desactivarPregunta.php'>Pasar preguntas a un log historico</a><br/>";
214 // La funcion agrega el id de la pregunta a la lista de preguntas desactivadas
215 function Faq_DesactivarPregunta( $PreguntaId )
217 $fp = fopen("data/desactivadas.txt","a");
220 return "Error en el archivo";
222 fwrite($fp, $PreguntaId."|".time()."\n");
224 return "La pregunta fue dada de baja, no sera listada mas, pero conservada en un historico";
227 // La funcion agrega la calificacion de la respuesta en un log
228 function Faq_CalificarRespuesta( $respuestaId, $calificacion )
230 if( !fappendcsv("data/calificacion.csv", array($respuestaId, $calificacion) ) )
232 return "Error en el archivo";
234 return "La calificacion a la respuesta fue dada de alta";