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';
15 // Levanta las preguntas y respuestas del archivo
16 // Devuelve un array con cada una de las preguntas creadas
17 function Faq_ObtenerPreguntas()
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" ) )
23 $RespuestasPorPregunta = array();
25 if ( file_exists ( "data/respuestas.txt" ) )
27 // Levanta todas las respuestas existentes de un archivo,
28 // Para luego vincularlas con las preguntas
29 $respuestasPlano = file("data/respuestas.txt");
31 foreach($respuestasPlano as $row)
33 $objRespuesta = new Respuesta;
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;
44 if ( array_key_exists($objRespuesta->idPregunta, $RespuestasPorPregunta ) )
46 $ListaRespuestas = $RespuestasPorPregunta[$objRespuesta->idPregunta];
50 $ListaRespuestas = array();
53 // Agrega la respuesta a la lista de respuestas correspondiente a una pregunta
54 $ListaRespuestas[] = $objRespuesta;
56 // Guarda la lista de respuestas de la pregunta
57 $RespuestasPorPregunta[$objRespuesta->idPregunta] = $ListaRespuestas;
61 $preguntasDesactivadas = array();
63 if ( file_exists("data/desactivadas.txt" ) )
65 $desactivadasPlano = file("data/desactivadas.txt");
66 foreach ($desactivadasPlano as $row)
68 $rowDiv = explode("|",$row);
69 $preguntasDesactivadas[$rowDiv[0]] = "0";
73 $preguntasPlano = file("data/preguntas.txt");
75 foreach($preguntasPlano as $row)
77 $objPregunta = new Pregunta;
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];
85 // Verifica si una pregunta esta activa o fue dada de baja
86 if ( array_key_exists($objPregunta->id, $preguntasDesactivadas) )
88 $objPregunta->activa = 0;
92 $objPregunta->activa = 1;
95 // Busca las respuestas a la pregunta
96 if ( array_key_exists($objPregunta->id, $RespuestasPorPregunta ) )
98 $objPregunta->respuestas = $RespuestasPorPregunta[$objPregunta->id];
101 $Preguntas[] = $objPregunta;
108 // Ingresa una pregunta en el sistema.
109 // Tiene que haber estado validado que el usuario pueda hacerlo
110 function Faq_IngresarPregunta($Usuario, $Pregunta)
112 // Valida nuevamente que el usuario tenga los creditos suficientes para
113 // dar de alta la pregunta
114 if ( $Usuario->GetCreditos() > 0 )
117 // Obtiene la lista de preguntas ya existentes
118 $Preguntas = Faq_ObtenerPreguntas();
119 $CantidadPreguntas = count($Preguntas);
122 if ( $CantidadPreguntas != 0 )
124 $PreguntaObj = $Preguntas[$CantidadPreguntas -1];
125 $NuevoId = $PreguntaObj->id;
126 $NuevoId = $NuevoId + 1;
130 // PreguntaId | UserId | Fecha | Pregunta
131 $Linea = $NuevoId."|".$Usuario->getId()."|".$Fecha."|".$Pregunta."\n";
132 $fp = fopen("data/preguntas.txt","a");
135 return "Error en el archivo";
140 // Disminuye el credito del usuario, si es que no es asesor y tiene credito infinito
141 if ( !$Usuario->esAsesor() )
143 file_creditos_preguntar( $Usuario->getId() );
146 return "La pregunta fue dada de alta correctamente";
150 return "La pregunta no fue dada de alta. No dispone de credito suficiente";
154 // Ingresa una respuesta para una pregunta seleccionada
155 // Tienen que estar chequeadas las precondiciones
156 function Faq_IngresarRespuesta($PreguntaId, $UsrId, $Respuesta)
161 // PreguntaRespondidaId| UserId | Fecha | Respuesta
162 $Linea = $PreguntaId."|".$UsrId."|".$Fecha."|".$Respuesta."\n";
163 $fp = fopen("data/respuestas.txt","a");
166 return "Error en el archivo";
170 return "La respuesta fue dada de alta correctamente";
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)
179 $Preguntas = Faq_ObtenerPreguntas();
181 $CantidadPreguntas = count($Preguntas);
183 if ( $CantidadPreguntas != 0 )
186 <form name="faq_listado_preguntas" action="faq.responderPregunta.php" method="post">
188 foreach($Preguntas as $ObjPregunta)
190 if ( $ObjPregunta->activa )
192 $ObjPregunta->toHTML();
194 <input type="radio" name="PreguntaId" value="<?php echo $ObjPregunta->id ?>"> Seleccionar Pregunta <br/>
199 <input type=submit value="Responder Pregunta">
205 echo "NO HAY PREGUNTAS PARA MOSTRAR";
207 if ( $Usuario->esAdmin() )
209 echo "<a href='faq.desactivarPregunta.php'>Pasar preguntas a un log historico</a><br/>";
213 // La funcion agrega el id de la pregunta a la lista de preguntas desactivadas
214 function Faq_DesactivarPregunta( $PreguntaId )
216 $fp = fopen("data/desactivadas.txt","a");
219 return "Error en el archivo";
221 fwrite($fp, $PreguntaId."|".time()."\n");
223 return "La pregunta fue dada de baja, no sera listada mas, pero conservada en un historico";