X-Git-Url: https://git.llucax.com/z.facultad/75.43/tp1.git/blobdiff_plain/21a6769f30fc9eb06772273b95062868c9bf2dd8..237c40dc072e4a14ca3ce9c53d0de95c3370eba5:/src/lib/faq.functions.php diff --git a/src/lib/faq.functions.php b/src/lib/faq.functions.php index 95bf4ff..81cd54b 100644 --- a/src/lib/faq.functions.php +++ b/src/lib/faq.functions.php @@ -1,199 +1,236 @@ -idPregunta = $rowDiv[0]; - $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; - - if ( array_key_exists($objRespuesta->idPregunta, $RespuestasPorPregunta ) ) - { - $ListaRespuestas = $RespuestasPorPregunta[$objRespuesta->idPregunta]; - } - else - { - $ListaRespuestas = array(); - } - - // Agrega la respuesta a la lista de respuestas correspondiente a una pregunta - $ListaRespuestas[] = $objRespuesta; - - // Guarda la lista de respuestas de la pregunta - $RespuestasPorPregunta[$objRespuesta->idPregunta] = $ListaRespuestas; - } - } - - $preguntasDesactivadas = array(); - - if ( file_exists("data/desactivadas.txt" ) ) - { - $desactivadasPlano = file("data/desactivadas.txt"); - foreach ($desactivadasPlano as $row) - { - $rowDiv = explode("|",$row); - $preguntasDesactivadas[$rowDiv[0]] = "0"; - } - } - - $preguntasPlano = file("data/preguntas.txt"); - - foreach($preguntasPlano as $row) - { - $objPregunta = new Pregunta; - - $rowDiv = explode("|",$row); - $objPregunta->id = $rowDiv[0]; - $objPregunta->autor = $rowDiv[1]; - $objPregunta->fecha = date('d/m/y H:i:s', $rowDiv[2]); - $objPregunta->texto = $rowDiv[3]; - - // Verifica si una pregunta esta activa o fue dada de baja - if ( array_key_exists($objPregunta->id, $preguntasDesactivadas) ) - { - $objPregunta->activa = 0; - } - else - { - $objPregunta->activa = 1; - } - - // Busca las respuestas a la pregunta - if ( array_key_exists($objPregunta->id, $RespuestasPorPregunta ) ) - { - $objPregunta->respuestas = $RespuestasPorPregunta[$objPregunta->id]; - } - - $Preguntas[] = $objPregunta; - } - return $Preguntas; - } - return; -} - -function Faq_IngresarPregunta($UsrId, $Pregunta) -{ - $Fecha = time(); - - $Preguntas = Faq_ObtenerPreguntas(); - $CantidadPreguntas = count($Preguntas); - - $NuevoId= 0; - if ( $CantidadPreguntas != 0 ) - { - $PreguntaObj = $Preguntas[$CantidadPreguntas -1]; - $NuevoId = $PreguntaObj->id; - $NuevoId = $NuevoId + 1; - } - - //Formato: - // PreguntaId | UserId | Fecha | Pregunta - $Linea = $NuevoId."|".$UsrId."|".$Fecha."|".$Pregunta."\r\n"; - $fp = fopen("data/preguntas.txt","a"); - if(!$fp) - { - return "Error en el archivo"; - } - fwrite($fp, $Linea); - fclose($fp); - return "La pregunta fue dada de alta correctamente"; -} - -function Faq_IngresarRespuesta($PreguntaId, $UsrId, $Respuesta) -{ - $Fecha = time(); - - //Formato: - // PreguntaRespondidaId| UserId | Fecha | Respuesta - $Linea = $PreguntaId."|".$UsrId."|".$Fecha."|".$Respuesta."\r\n"; - $fp = fopen("data/respuestas.txt","a"); - if(!$fp) - { - return "Error en el archivo"; - } - fwrite($fp, $Linea); - fclose($fp); - return "La respuesta fue dada de alta correctamente"; -} - -function Faq_ListarPreguntas($Usuario) -{ - echo $Usuario->getId(); - $Preguntas = Faq_ObtenerPreguntas(); - - $CantidadPreguntas = count($Preguntas); - - if ( $CantidadPreguntas != 0 ) - { - ?> -
- activa ) - { - $ObjPregunta->Mostrar(); - ?> - Seleccionar Pregunta
- - -
-esAdmin() ) - { - //echo "Pasar preguntas a un log historico
"; - include 'faq.desactivarPregunta.php'; - } -} - -function Faq_DesactivarPregunta( $PreguntaId ) -{ - $fp = fopen("data/desactivadas.txt","a"); - if(!$fp) - { - return "Error en el archivo"; - } - fwrite($fp, $PreguntaId."|".time()."\r\n"); - fclose($fp); - return "La pregunta fue dada de baja, no sera listada mas, pero conservada en un historico"; -} -?> +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; + + $respuestaId++; + + if ( array_key_exists($objRespuesta->idPregunta, $RespuestasPorPregunta ) ) + { + $ListaRespuestas = $RespuestasPorPregunta[$objRespuesta->idPregunta]; + } + else + { + $ListaRespuestas = array(); + } + + // Agrega la respuesta a la lista de respuestas correspondiente a una pregunta + $ListaRespuestas[] = $objRespuesta; + + // Guarda la lista de respuestas de la pregunta + $RespuestasPorPregunta[$objRespuesta->idPregunta] = $ListaRespuestas; + } + } + + $preguntasDesactivadas = array(); + + if ( file_exists("data/desactivadas.txt" ) ) + { + $desactivadasPlano = file("data/desactivadas.txt"); + foreach ($desactivadasPlano as $row) + { + $rowDiv = explode("|",$row); + $preguntasDesactivadas[$rowDiv[0]] = "0"; + } + } + + $preguntasPlano = file("data/preguntas.txt"); + + foreach($preguntasPlano as $row) + { + $objPregunta = new Pregunta; + + $rowDiv = explode("|",$row); + $objPregunta->id = $rowDiv[0]; + $objPregunta->autor = $rowDiv[1]; + $objPregunta->fecha = date('d/m/y H:i:s', $rowDiv[2]); + $objPregunta->texto = $rowDiv[3]; + + // Verifica si una pregunta esta activa o fue dada de baja + if ( array_key_exists($objPregunta->id, $preguntasDesactivadas) ) + { + $objPregunta->activa = 0; + } + else + { + $objPregunta->activa = 1; + } + + // Busca las respuestas a la pregunta + if ( array_key_exists($objPregunta->id, $RespuestasPorPregunta ) ) + { + $objPregunta->respuestas = $RespuestasPorPregunta[$objPregunta->id]; + } + + $Preguntas[] = $objPregunta; + } + return $Preguntas; + } + return; +} + +// Ingresa una pregunta en el sistema. +// Tiene que haber estado validado que el usuario pueda hacerlo +function Faq_IngresarPregunta($Usuario, $Pregunta) +{ + // 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); + + $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"; + } + else + { + return "La pregunta no fue dada de alta. No dispone de credito suficiente"; + } +} + +// Ingresa una respuesta para una pregunta seleccionada +// Tienen que estar chequeadas las precondiciones +function Faq_IngresarRespuesta($PreguntaId, $UsrId, $Respuesta) +{ + $Fecha = time(); + + //Formato: + // PreguntaRespondidaId| UserId | Fecha | Respuesta + $Linea = $PreguntaId."|".$UsrId."|".$Fecha."|".$Respuesta."\n"; + $fp = fopen("data/respuestas.txt","a"); + if(!$fp) + { + return "Error en el archivo"; + } + fwrite($fp, $Linea); + fclose($fp); + return "La respuesta fue dada de alta correctamente"; +} + +// Lista las preguntas existentes en el sistema +// Recibe el usuario que esta logueado, para determinar +// que opciones de menu le tiene que brindar ( dar de baja pregunta, +// contestar pregunta, ranquear pregunta ). +function Faq_ListarPreguntas($Usuario) +{ + $Preguntas = Faq_ObtenerPreguntas(); + + $CantidadPreguntas = count($Preguntas); + + if ( $CantidadPreguntas != 0 ) + { + foreach($Preguntas as $ObjPregunta) + { + if ( $ObjPregunta->activa ) + { + $ObjPregunta->toHTML(); +?> +
+ + +
+esAdmin() ) + { + echo "Pasar preguntas a un log historico
"; + } +} + +// La funcion agrega el id de la pregunta a la lista de preguntas desactivadas +function Faq_DesactivarPregunta( $PreguntaId ) +{ + $fp = fopen("data/desactivadas.txt","a"); + if(!$fp) + { + return "Error en el archivo"; + } + fwrite($fp, $PreguntaId."|".time()."\n"); + fclose($fp); + return "La pregunta fue dada de baja, no sera listada mas, pero conservada en un historico"; +} + +// La funcion agrega la calificacion de la respuesta en un log +function Faq_CalificarRespuesta( $respuestaId, $calificacion ) +{ + if( !fappendcsv("data/calificacion.csv", array($respuestaId, $calificacion) ) ) + { + return "Error en el archivo"; + } + return "La calificacion a la respuesta fue dada de alta"; +} +?> \ No newline at end of file