X-Git-Url: https://git.llucax.com/z.facultad/75.43/tp1.git/blobdiff_plain/c5fcf680548c2cb2b2e0bbdae67d1794cbe78eed..e92b831febcf1737682bfb7aa28c552a0dc8dabb:/src/lib/faq.functions.php diff --git a/src/lib/faq.functions.php b/src/lib/faq.functions.php index 5cf9233..929af47 100644 --- a/src/lib/faq.functions.php +++ b/src/lib/faq.functions.php @@ -9,7 +9,9 @@ // $Id$ require_once 'Pregunta.php'; -require_once 'Respuesta.php'; +require_once 'Respuesta.php'; +require_once 'file.creditos.php'; +require_once 'file.php'; // Levanta las preguntas y respuestas del archivo // Devuelve un array con cada una de las preguntas creadas @@ -19,7 +21,19 @@ function Faq_ObtenerPreguntas() // Si no existe, devuelve un array vacio if ( file_exists ( "data/preguntas.txt" ) ) { - $RespuestasPorPregunta = array(); + // Levanta las puntuaciones de preguntas desde el archivo + // Si existe el archivo + $calificaciones = array(); + if (($fp = fopen('data/calificacion.csv', 'r')) === true) + { + while ($data = fgetcsv ($fp, 4096)) + { + $calificaciones[$data[0]] = $data[1]; + } + fclose ($fp); + } + + $respuestasPorPregunta = array(); if ( file_exists ( "data/respuestas.txt" ) ) { @@ -27,33 +41,43 @@ function Faq_ObtenerPreguntas() // Para luego vincularlas con las preguntas $respuestasPlano = file("data/respuestas.txt"); + $respuestaId = 0; foreach($respuestasPlano as $row) { $objRespuesta = new Respuesta; $rowDiv = explode("|",$row); $objRespuesta->idPregunta = $rowDiv[0]; + $objRespuesta->id = $respuestaId; $objRespuesta->autor = $rowDiv[1]; $objRespuesta->fecha = date('d/m/y H:i:s', $rowDiv[2]); $objRespuesta->texto = $rowDiv[3]; - // La respuesta no fue rankeada - // ToDo: Manejar los rankings de preguntas - $objRespuesta->ranking = -1; + // Agrega la calificacion de la respuesta, si es que esta calificada + if ( array_key_exists($respuestaId, $calificaciones ) ) + { + $objRespuesta->ranking = $calificaciones[$respuestaId]; + } + else + { + $objRespuesta->ranking = -1; + } - if ( array_key_exists($objRespuesta->idPregunta, $RespuestasPorPregunta ) ) + $respuestaId++; + + if ( array_key_exists($objRespuesta->idPregunta, $respuestasPorPregunta ) ) { - $ListaRespuestas = $RespuestasPorPregunta[$objRespuesta->idPregunta]; + $listaRespuestas = $respuestasPorPregunta[$objRespuesta->idPregunta]; } else { - $ListaRespuestas = array(); + $listaRespuestas = array(); } // Agrega la respuesta a la lista de respuestas correspondiente a una pregunta - $ListaRespuestas[] = $objRespuesta; + $listaRespuestas[] = $objRespuesta; // Guarda la lista de respuestas de la pregunta - $RespuestasPorPregunta[$objRespuesta->idPregunta] = $ListaRespuestas; + $respuestasPorPregunta[$objRespuesta->idPregunta] = $listaRespuestas; } } @@ -92,47 +116,65 @@ function Faq_ObtenerPreguntas() } // Busca las respuestas a la pregunta - if ( array_key_exists($objPregunta->id, $RespuestasPorPregunta ) ) + if ( array_key_exists($objPregunta->id, $respuestasPorPregunta ) ) { - $objPregunta->respuestas = $RespuestasPorPregunta[$objPregunta->id]; + $objPregunta->respuestas = $respuestasPorPregunta[$objPregunta->id]; } - $Preguntas[] = $objPregunta; + $preguntas[] = $objPregunta; } - return $Preguntas; + return $preguntas; + } + else + { + return; } - return; } // Ingresa una pregunta en el sistema. // Tiene que haber estado validado que el usuario pueda hacerlo -function Faq_IngresarPregunta($UsrId, $Pregunta) +function Faq_IngresarPregunta($Usuario, $Pregunta) { - $Fecha = time(); + // Valida nuevamente que el usuario tenga los creditos suficientes para + // dar de alta la pregunta + if ( $Usuario->GetCreditos() > 0 ) + { + $Fecha = time(); + // Obtiene la lista de preguntas ya existentes + $Preguntas = Faq_ObtenerPreguntas(); + $CantidadPreguntas = count($Preguntas); - // Obtiene la lista de preguntas ya existentes - $Preguntas = Faq_ObtenerPreguntas(); - $CantidadPreguntas = count($Preguntas); + $NuevoId= 0; + if ( $CantidadPreguntas != 0 ) + { + $PreguntaObj = $Preguntas[$CantidadPreguntas -1]; + $NuevoId = $PreguntaObj->id; + $NuevoId = $NuevoId + 1; + } - $NuevoId= 0; - if ( $CantidadPreguntas != 0 ) - { - $PreguntaObj = $Preguntas[$CantidadPreguntas -1]; - $NuevoId = $PreguntaObj->id; - $NuevoId = $NuevoId + 1; + //Formato: + // PreguntaId | UserId | Fecha | Pregunta + $Linea = $NuevoId."|".$Usuario->getId()."|".$Fecha."|".$Pregunta."\n"; + $fp = fopen("data/preguntas.txt","a"); + if(!$fp) + { + return "Error en el archivo"; + } + fwrite($fp, $Linea); + fclose($fp); + + // Disminuye el credito del usuario, si es que no es asesor y tiene credito infinito + if ( !$Usuario->esAsesor() ) + { + file_creditos_preguntar( $Usuario->getId() ); + } + + return "La pregunta fue dada de alta correctamente"; } - - //Formato: - // PreguntaId | UserId | Fecha | Pregunta - $Linea = $NuevoId."|".$UsrId."|".$Fecha."|".$Pregunta."\n"; - $fp = fopen("data/preguntas.txt","a"); - if(!$fp) + else { - return "Error en el archivo"; + return "La pregunta no fue dada de alta. No dispone de credito suficiente"; } - fwrite($fp, $Linea); - fclose($fp); - return "La pregunta fue dada de alta correctamente"; } // Ingresa una respuesta para una pregunta seleccionada @@ -166,23 +208,19 @@ function Faq_ListarPreguntas($Usuario) if ( $CantidadPreguntas != 0 ) { - ?> -
- activa ) { - $ObjPregunta->Mostrar(); - ?> - Seleccionar Pregunta
- toHTML(); +?> + + + +
+ - - - \ No newline at end of file