]> git.llucax.com Git - z.facultad/75.43/tp1.git/blobdiff - src/lib/faq.functions.php
Alta de creditos para el usuario que rankea una pregunta
[z.facultad/75.43/tp1.git] / src / lib / faq.functions.php
index 95bf4ffefc9db0397ba6a526149538fd49f2451d..929af479b134aa05f3a62a4e508f409dddb2a406 100644 (file)
-<?php\r
-// vim: set binary noeol et sw=4 sts=4 :\r
-// Grupo 10\r
-//\r
-// Lucarella, Schein, Arena\r
-//\r
-// Creado: Jonathan Schein ( 01/05/2005 )\r
-//\r
-// $Id: faq.functions.php\r
-\r
-require_once 'Pregunta.php';\r
-require_once 'Respuesta.php';  \r
-\r
-function Faq_ObtenerPreguntas()\r
-{\r
- // Verifica que el file que guarda las preguntas exista\r
- // Si no existe, devuelve un array vacio\r
- if ( file_exists ( "data/preguntas.txt" ) )\r
- {\r
-       $RespuestasPorPregunta = array();\r
-       \r
-       if ( file_exists ( "data/respuestas.txt" ) )\r
-       {\r
-        // Levanta todas las respuestas existentes de un archivo,\r
-        // Para luego vincularlas con las preguntas\r
-        $respuestasPlano = file("data/respuestas.txt");\r
-       \r
-        foreach($respuestasPlano as $row)\r
-        {\r
-          $objRespuesta = new Respuesta;\r
-                \r
-                $rowDiv = explode("|",$row);\r
-                $objRespuesta->idPregunta      = $rowDiv[0];\r
-                $objRespuesta->autor                   = $rowDiv[1];\r
-                $objRespuesta->fecha                           = date('d/m/y H:i:s', $rowDiv[2]);\r
-                $objRespuesta->texto                   = $rowDiv[3];\r
-                // La respuesta no fue rankeada\r
-                // ToDo: Manejar los rankings de preguntas\r
-                $objRespuesta->ranking         = -1;\r
-                \r
-                if ( array_key_exists($objRespuesta->idPregunta, $RespuestasPorPregunta ) )\r
-                {\r
-                        $ListaRespuestas = $RespuestasPorPregunta[$objRespuesta->idPregunta];\r
-                }\r
-                else\r
-                {\r
-                                $ListaRespuestas = array();\r
-                }\r
-               \r
-                // Agrega la respuesta a la lista de respuestas correspondiente a una pregunta\r
-                $ListaRespuestas[] = $objRespuesta;\r
-               \r
-                // Guarda la lista de respuestas de la pregunta                \r
-                $RespuestasPorPregunta[$objRespuesta->idPregunta] = $ListaRespuestas;   \r
-         }\r
-       }\r
-       \r
-       $preguntasDesactivadas = array();\r
-       \r
-       if ( file_exists("data/desactivadas.txt" ) )\r
-       {\r
-               $desactivadasPlano = file("data/desactivadas.txt");\r
-               foreach ($desactivadasPlano as $row)\r
-               {\r
-                $rowDiv = explode("|",$row);\r
-                $preguntasDesactivadas[$rowDiv[0]] = "0";\r
-               }\r
-       } \r
-       \r
-       $preguntasPlano = file("data/preguntas.txt");\r
-       \r
-       foreach($preguntasPlano as $row) \r
-       {\r
-         $objPregunta = new Pregunta;\r
-\r
-               $rowDiv = explode("|",$row);\r
-               $objPregunta->id                                        = $rowDiv[0];\r
-               $objPregunta->autor                     = $rowDiv[1];\r
-               $objPregunta->fecha                             = date('d/m/y H:i:s', $rowDiv[2]);\r
-               $objPregunta->texto                     = $rowDiv[3];\r
-               \r
-               // Verifica si una pregunta esta activa o fue dada de baja\r
-               if ( array_key_exists($objPregunta->id, $preguntasDesactivadas) )\r
-               {\r
-                $objPregunta->activa                   = 0;\r
-               }\r
-               else\r
-               {\r
-                $objPregunta->activa                   = 1;\r
-               }\r
-               \r
-               // Busca las respuestas a la pregunta\r
-               if ( array_key_exists($objPregunta->id, $RespuestasPorPregunta ) )\r
-               {\r
-                         $objPregunta->respuestas = $RespuestasPorPregunta[$objPregunta->id];\r
-               }\r
-               \r
-               $Preguntas[] = $objPregunta;\r
-       }\r
-       return $Preguntas;\r
- }\r
- return;\r
-}\r
-\r
-function Faq_IngresarPregunta($UsrId, $Pregunta)\r
-{\r
- $Fecha        = time();\r
-\r
- $Preguntas = Faq_ObtenerPreguntas();\r
- $CantidadPreguntas = count($Preguntas);\r
-\r
- $NuevoId= 0;\r
- if ( $CantidadPreguntas != 0 )\r
- {\r
-   $PreguntaObj = $Preguntas[$CantidadPreguntas -1];\r
-        $NuevoId = $PreguntaObj->id;\r
-        $NuevoId = $NuevoId + 1;\r
- }\r
-\r
- //Formato:\r
- // PreguntaId | UserId | Fecha | Pregunta\r
- $Linea = $NuevoId."|".$UsrId."|".$Fecha."|".$Pregunta."\r\n";\r
- $fp = fopen("data/preguntas.txt","a");\r
- if(!$fp) \r
- {\r
-   return "Error en el archivo";\r
- }\r
- fwrite($fp, $Linea);\r
- fclose($fp);\r
- return "La pregunta fue dada de alta correctamente";\r
-}\r
-\r
-function Faq_IngresarRespuesta($PreguntaId, $UsrId, $Respuesta)\r
-{\r
- $Fecha        = time();\r
-\r
- //Formato:\r
- // PreguntaRespondidaId| UserId | Fecha | Respuesta\r
- $Linea = $PreguntaId."|".$UsrId."|".$Fecha."|".$Respuesta."\r\n";\r
- $fp = fopen("data/respuestas.txt","a");\r
- if(!$fp) \r
- {\r
-   return "Error en el archivo";\r
- }\r
- fwrite($fp, $Linea);\r
- fclose($fp);\r
- return "La respuesta fue dada de alta correctamente";\r
-}\r
-\r
-function Faq_ListarPreguntas($Usuario)\r
-{\r
- echo $Usuario->getId();\r
- $Preguntas = Faq_ObtenerPreguntas();\r
\r
- $CantidadPreguntas = count($Preguntas);\r
-\r
- if ( $CantidadPreguntas != 0 )\r
- {\r
- ?>\r
- <form name="faq_listado_preguntas" action="faq.responderPregunta.php" method="post">\r
- <?php \r
-   foreach($Preguntas as $ObjPregunta)\r
-        {\r
-               if ( $ObjPregunta->activa )\r
-               {\r
-                       $ObjPregunta->Mostrar();\r
-                               ?>\r
-                               <input type="radio" name="PreguntaId" value="<?php echo $ObjPregunta->id ?>"> Seleccionar Pregunta <br/> \r
-                               <?php\r
-               }\r
-        }\r
-        ?>\r
-        <input type=submit value="Responder Pregunta">\r
-   </form>\r
-<?php\r
- }\r
- else\r
- {\r
-       echo "NO HAY PREGUNTAS PARA MOSTRAR";\r
- }\r
- if ( $Usuario->esAdmin() )\r
- {\r
-               //echo "<a href='faq.desactivarPregunta.php'>Pasar preguntas a un log historico</a><br/>";\r
-               include 'faq.desactivarPregunta.php';\r
- }\r
-}\r
-\r
-function Faq_DesactivarPregunta( $PreguntaId )\r
-{\r
- $fp = fopen("data/desactivadas.txt","a");\r
- if(!$fp) \r
- {\r
-   return "Error en el archivo";\r
- }\r
- fwrite($fp, $PreguntaId."|".time()."\r\n");\r
- fclose($fp);\r
- return "La pregunta fue dada de baja, no sera listada mas, pero conservada en un historico";   \r
-}\r
-?>\r
+<?php
+// vim: set binary noeol et sw=4 sts=4 :
+// Grupo 10
+//
+// Lucarella, Schein, Arena
+//
+// Creado: Jonathan Schein ( 01/05/2005 )
+//
+// $Id$
+
+require_once 'Pregunta.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
+function Faq_ObtenerPreguntas()
+{
+ // Verifica que el file que guarda las preguntas exista
+ // Si no existe, devuelve un array vacio
+ if ( file_exists ( "data/preguntas.txt" ) )
+ {
+       // 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" ) )
+       {
+        // Levanta todas las respuestas existentes de un archivo,
+        // 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];
+                // 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;
+                }
+                
+                $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;
+ }
+ else
+ {
+       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();
+?>
+                               <form action="faq.responderPregunta.php" method="post"-->
+                                                       <input type="hidden" name="PreguntaId" value="<?php echo $ObjPregunta->id ?>">
+                                                       <input type=submit value="Responder Pregunta">
+                               </form> 
+<?php
+               }
+        }
+ }
+ else
+ {
+       echo "NO HAY PREGUNTAS PARA MOSTRAR";
+ }
+ if ( $Usuario->esAdmin() )
+ {
+               echo "<a href='faq.desactivarPregunta.php'>Pasar preguntas a un log historico</a><br/>";
+ }
+}
+
+// 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 ( file_exists ( "data/respuestas.txt" ) )
+ {
+        // Levanta todas las respuestas existentes de un archivo,
+        // Para luego vincularlas con las preguntas
+        $respuestasPlano = file("data/respuestas.txt");
+        $row                                           = $respuestasPlano[$RespuestaId];
+        $row                                                   = explode("|",$row);
+        $autorId                               = $row[1];
+ }
+ else
+ {
+       return "No existen respuestas";
+ }
+ if( !fappendcsv("data/calificacion.csv", array($RespuestaId, $Calificacion) ) ) 
+ {
+   return "Error en el archivo";
+ }
+ if ( !file_creditos_add($autorId, $Calificacion ) )
+ {
+               return "Error al computar los creditos al usuario";
+ }
+ return "La calificacion a la respuesta fue dada de alta";      
+}
+?>
\ No newline at end of file