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';
14 // Levanta las preguntas y respuestas del archivo
15 // Devuelve un array con cada una de las preguntas creadas
16 function Faq_ObtenerPreguntas()
18 // Verifica que el file que guarda las preguntas exista
19 // Si no existe, devuelve un array vacio
20 if ( file_exists ( "data/preguntas.txt" ) )
22 $RespuestasPorPregunta = array();
24 if ( file_exists ( "data/respuestas.txt" ) )
26 // Levanta todas las respuestas existentes de un archivo,
27 // Para luego vincularlas con las preguntas
28 $respuestasPlano = file("data/respuestas.txt");
30 foreach($respuestasPlano as $row)
32 $objRespuesta = new Respuesta;
34 $rowDiv = explode("|",$row);
35 $objRespuesta->idPregunta = $rowDiv[0];
36 $objRespuesta->autor = $rowDiv[1];
37 $objRespuesta->fecha = date('d/m/y H:i:s', $rowDiv[2]);
38 $objRespuesta->texto = $rowDiv[3];
39 // La respuesta no fue rankeada
40 // ToDo: Manejar los rankings de preguntas
41 $objRespuesta->ranking = -1;
43 if ( array_key_exists($objRespuesta->idPregunta, $RespuestasPorPregunta ) )
45 $ListaRespuestas = $RespuestasPorPregunta[$objRespuesta->idPregunta];
49 $ListaRespuestas = array();
52 // Agrega la respuesta a la lista de respuestas correspondiente a una pregunta
53 $ListaRespuestas[] = $objRespuesta;
55 // Guarda la lista de respuestas de la pregunta
56 $RespuestasPorPregunta[$objRespuesta->idPregunta] = $ListaRespuestas;
60 $preguntasDesactivadas = array();
62 if ( file_exists("data/desactivadas.txt" ) )
64 $desactivadasPlano = file("data/desactivadas.txt");
65 foreach ($desactivadasPlano as $row)
67 $rowDiv = explode("|",$row);
68 $preguntasDesactivadas[$rowDiv[0]] = "0";
72 $preguntasPlano = file("data/preguntas.txt");
74 foreach($preguntasPlano as $row)
76 $objPregunta = new Pregunta;
78 $rowDiv = explode("|",$row);
79 $objPregunta->id = $rowDiv[0];
80 $objPregunta->autor = $rowDiv[1];
81 $objPregunta->fecha = date('d/m/y H:i:s', $rowDiv[2]);
82 $objPregunta->texto = $rowDiv[3];
84 // Verifica si una pregunta esta activa o fue dada de baja
85 if ( array_key_exists($objPregunta->id, $preguntasDesactivadas) )
87 $objPregunta->activa = 0;
91 $objPregunta->activa = 1;
94 // Busca las respuestas a la pregunta
95 if ( array_key_exists($objPregunta->id, $RespuestasPorPregunta ) )
97 $objPregunta->respuestas = $RespuestasPorPregunta[$objPregunta->id];
100 $Preguntas[] = $objPregunta;
107 // Ingresa una pregunta en el sistema.
108 // Tiene que haber estado validado que el usuario pueda hacerlo
109 function Faq_IngresarPregunta($UsrId, $Pregunta)
113 // Obtiene la lista de preguntas ya existentes
114 $Preguntas = Faq_ObtenerPreguntas();
115 $CantidadPreguntas = count($Preguntas);
118 if ( $CantidadPreguntas != 0 )
120 $PreguntaObj = $Preguntas[$CantidadPreguntas -1];
121 $NuevoId = $PreguntaObj->id;
122 $NuevoId = $NuevoId + 1;
126 // PreguntaId | UserId | Fecha | Pregunta
127 $Linea = $NuevoId."|".$UsrId."|".$Fecha."|".$Pregunta."\n";
128 $fp = fopen("data/preguntas.txt","a");
131 return "Error en el archivo";
135 return "La pregunta fue dada de alta correctamente";
138 // Ingresa una respuesta para una pregunta seleccionada
139 // Tienen que estar chequeadas las precondiciones
140 function Faq_IngresarRespuesta($PreguntaId, $UsrId, $Respuesta)
145 // PreguntaRespondidaId| UserId | Fecha | Respuesta
146 $Linea = $PreguntaId."|".$UsrId."|".$Fecha."|".$Respuesta."\n";
147 $fp = fopen("data/respuestas.txt","a");
150 return "Error en el archivo";
154 return "La respuesta fue dada de alta correctamente";
157 // Lista las preguntas existentes en el sistema
158 // Recibe el usuario que esta logueado, para determinar
159 // que opciones de menu le tiene que brindar ( dar de baja pregunta,
160 // contestar pregunta, ranquear pregunta ).
161 function Faq_ListarPreguntas($Usuario)
163 $Preguntas = Faq_ObtenerPreguntas();
165 $CantidadPreguntas = count($Preguntas);
167 if ( $CantidadPreguntas != 0 )
170 <form name="faq_listado_preguntas" action="faq.responderPregunta.php" method="post">
172 foreach($Preguntas as $ObjPregunta)
174 if ( $ObjPregunta->activa )
176 $ObjPregunta->Mostrar();
178 <input type="radio" name="PreguntaId" value="<?php echo $ObjPregunta->id ?>"> Seleccionar Pregunta <br/>
183 <input type=submit value="Responder Pregunta">
189 echo "NO HAY PREGUNTAS PARA MOSTRAR";
191 if ( $Usuario->esAdmin() )
193 echo "<a href='faq.desactivarPregunta.php'>Pasar preguntas a un log historico</a><br/>";
197 // La funcion agrega el id de la pregunta a la lista de preguntas desactivadas
198 function Faq_DesactivarPregunta( $PreguntaId )
200 $fp = fopen("data/desactivadas.txt","a");
203 return "Error en el archivo";
205 fwrite($fp, $PreguntaId."|".time()."\n");
207 return "La pregunta fue dada de baja, no sera listada mas, pero conservada en un historico";