]> git.llucax.com Git - z.facultad/75.43/tp1.git/blobdiff - src/lib/faq.functions.php
Bugfix del bugfix del query string =)
[z.facultad/75.43/tp1.git] / src / lib / faq.functions.php
index 88879dd9f1d0f6e0a0590f73f305fb0854ba1ce8..3ce9649471f622b07a3a034c771e1bf3eeb74f2e 100644 (file)
@@ -15,15 +15,11 @@ require_once 'file.php';
 require_once 'pagina.php';
 require_once 'file.log.php';
 
 require_once 'pagina.php';
 require_once 'file.log.php';
 
-// Levanta las preguntas y respuestas del archivo
-// Devuelve un array con cada una de las preguntas creadas
-function Faq_ObtenerPreguntas()
+// Levanta las respuestas del archivo, y devuelve
+// todas las respuestas para una pregunta determinada
+function Faq_ObtenerRespuestas($PreguntaId)
 {
 {
- // Verifica que el file que guarda las preguntas exista
- // Si no existe, devuelve un array vacio
- if ( file_exists ( "data/preguntas.csv" ) )
- {
-       // Levanta las puntuaciones de preguntas desde el archivo
+ // Levanta las puntuaciones de respuestas desde el archivo
        // Si existe el archivo
        $calificaciones = array();
        if ( file_exists ( "data/calificacion.csv" ) )
        // Si existe el archivo
        $calificaciones = array();
        if ( file_exists ( "data/calificacion.csv" ) )
@@ -51,9 +47,10 @@ function Faq_ObtenerPreguntas()
                 
                 $objRespuesta->idPregunta      = $rowDiv[0];
                 $objRespuesta->id                                      = $respuestaId;
                 
                 $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];
+                $objRespuesta->autorPregunta = $rowDiv[1];
+                $objRespuesta->autor                   = $rowDiv[2];
+                $objRespuesta->fecha                           = date('d/m/y H:i:s', $rowDiv[3]);
+                $objRespuesta->texto                   = $rowDiv[4];
                 // Agrega la calificacion de la respuesta, si es que esta calificada
                 if ( array_key_exists($respuestaId, $calificaciones ) )
                 {
                 // Agrega la calificacion de la respuesta, si es que esta calificada
                 if ( array_key_exists($respuestaId, $calificaciones ) )
                 {
@@ -83,7 +80,23 @@ function Faq_ObtenerPreguntas()
          }
                fclose($respuestasPlano);
        }
          }
                fclose($respuestasPlano);
        }
-       
+       if ( array_key_exists ( $PreguntaId, $respuestasPorPregunta  ) )
+       {
+        return Faq_SortRespuestasByRanking($respuestasPorPregunta[$PreguntaId]);
+       }
+       else
+       {
+        return;
+       }
+}
+// Levanta las preguntas 
+// 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.csv" ) )
+ {
        $preguntasDesactivadas = array();
        
        if ( file_exists("data/desactivadas.csv" ) )
        $preguntasDesactivadas = array();
        
        if ( file_exists("data/desactivadas.csv" ) )
@@ -117,7 +130,7 @@ function Faq_ObtenerPreguntas()
                 $objPregunta->activa                   = 1;
                }
                
                 $objPregunta->activa                   = 1;
                }
                
-               // Busca las respuestas a la pregunta
+/*             // Busca las respuestas a la pregunta
                if ( array_key_exists($objPregunta->id, $respuestasPorPregunta ) )
                {
                          // Ordena las respuestas por ranking
                if ( array_key_exists($objPregunta->id, $respuestasPorPregunta ) )
                {
                          // Ordena las respuestas por ranking
@@ -125,8 +138,12 @@ function Faq_ObtenerPreguntas()
                                                                                                                                 Faq_SortRespuestasByRanking($respuestasPorPregunta[$objPregunta->id]);
                                                                
                }
                                                                                                                                 Faq_SortRespuestasByRanking($respuestasPorPregunta[$objPregunta->id]);
                                                                
                }
-               
-               $preguntas[] = $objPregunta;
+*/             
+               // Si la pregunta esta activa, la incluye en la lista de preguntas
+               if ( $objPregunta->activa )
+               {
+                $preguntas[] = $objPregunta;
+               }
        }
        fclose($preguntasPlano);
        return $preguntas;
        }
        fclose($preguntasPlano);
        return $preguntas;
@@ -170,7 +187,7 @@ function Faq_IngresarPregunta($Usuario, $Pregunta)
   // PreguntaId | UserId | Fecha | Pregunta
   if( !fappendcsv("data/preguntas.csv", array($NuevoId,$Usuario->getId(),$fecha,$Pregunta) ) ) 
        {
   // PreguntaId | UserId | Fecha | Pregunta
   if( !fappendcsv("data/preguntas.csv", array($NuevoId,$Usuario->getId(),$fecha,$Pregunta) ) ) 
        {
-               return "Error en el archivo";
+               return error("Error en el archivo");
        }
                 
        // Disminuye el credito del usuario, si es que no es asesor y tiene credito infinito
        }
                 
        // Disminuye el credito del usuario, si es que no es asesor y tiene credito infinito
@@ -180,81 +197,58 @@ function Faq_IngresarPregunta($Usuario, $Pregunta)
        }
        // Loguea la accion
        file_log_add($Usuario->getId(), "Da de alta de una pregunta");
        }
        // Loguea la accion
        file_log_add($Usuario->getId(), "Da de alta de una pregunta");
-       return "La pregunta fue dada de alta correctamente";
+       return ok("La pregunta fue dada de alta correctamente");
  }
  else
  {
  }
  else
  {
-       return "La pregunta no fue dada de alta. No dispone de credito suficiente";
+       return error("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
  }
 }
 
 // Ingresa una respuesta para una pregunta seleccionada
 // Tienen que estar chequeadas las precondiciones
-function Faq_IngresarRespuesta($PreguntaId, $UsrId, $Respuesta)
+function Faq_IngresarRespuesta($PreguntaId, $AutorPreguntaId, $UsrId, $Respuesta)
 {
  $Fecha        = time();
 
  //Formato:
 {
  $Fecha        = time();
 
  //Formato:
- // PreguntaRespondidaId| UserId | Fecha | Respuesta
- if( !fappendcsv("data/respuestas.csv", array($PreguntaId,$UsrId,$Fecha,$Respuesta) ) ) 
+ // PreguntaRespondidaId| AutorDePreguntaId | UserId | Fecha | Respuesta
+ if( !fappendcsv("data/respuestas.csv", array($PreguntaId,$AutorPreguntaId,$UsrId,$Fecha,$Respuesta) ) ) 
  {
  {
-               return "Error en el archivo";
+               return error("Error en el archivo");
  }
  
  // Loguea la accion
  file_log_add($UsrId, "Da de alta de una respuesta");
  }
  
  // Loguea la accion
  file_log_add($UsrId, "Da de alta de una respuesta");
- return "La respuesta fue dada de alta correctamente";
+ return ok("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)
 {
 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() )
- {
+       Faq_Listador ( Faq_ObtenerPreguntas() );
+       if ( $Usuario->esAdmin() )
+       {
                echo "<a href='faq.desactivarPregunta.php'>Pasar preguntas a un log historico</a><br/>";
                echo "<a href='faq.desactivarPregunta.php'>Pasar preguntas a un log historico</a><br/>";
- }
 }
 }
 
 }
 
+function Faq_ListarRespuestas( $PreguntaId, $Pagina )
+{
+       Faq_Listador ( Faq_ObtenerRespuestas($PreguntaId) , $Pagina);
+}
 // La funcion agrega el id de la pregunta a la lista de preguntas desactivadas
 function Faq_DesactivarPregunta( $PreguntaId , $UsrId)
 {
  // Formato PreguntaID,fechaYHora
  if( !fappendcsv("data/desactivadas.csv", array($PreguntaId, time()) ) ) 
  {
 // La funcion agrega el id de la pregunta a la lista de preguntas desactivadas
 function Faq_DesactivarPregunta( $PreguntaId , $UsrId)
 {
  // Formato PreguntaID,fechaYHora
  if( !fappendcsv("data/desactivadas.csv", array($PreguntaId, time()) ) ) 
  {
-   return "Error en el archivo";
+   return error("Error en el archivo");
  }
  
  // Loguea la accion
  }
  
  // Loguea la accion
- file_log_add($UsrId, "Pasa una respuesta a log historico");
+ file_log_add($UsrId, "Desactiva una pregunta");
 
 
- return "La pregunta fue dada de baja, no sera listada mas, pero conservada en un historico";   
+ return ok("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
 }
 
 // La funcion agrega la calificacion de la respuesta en un log
@@ -269,25 +263,30 @@ function Faq_CalificarRespuesta( $RespuestaId, $Calificacion , $UsrId)
         {
                $countRespuesta ++;
         }
         {
                $countRespuesta ++;
         }
-        $autorId = $row[1];
+        $autorId = $row[2];
         fclose($respuestasPlano);
  }
  else
  {
         fclose($respuestasPlano);
  }
  else
  {
-       return "No existen respuestas";
+       return warn("No existen respuestas");
  }
  if( !fappendcsv("data/calificacion.csv", array($RespuestaId, $Calificacion) ) ) 
  {
  }
  if( !fappendcsv("data/calificacion.csv", array($RespuestaId, $Calificacion) ) ) 
  {
-   return "Error en el archivo";
+   return error("Error en el archivo");
  }
  }
- if ( !file_creditos_add($autorId, $Calificacion ) )
+ $autorPregunta = new Usuario($autorId);
+ // da de alta los creditos, solo si no es asesor
+ if ( !$autorPregunta->esAsesor() )
  {
  {
-               return "Error al computar los creditos al usuario";
+       if ( !file_creditos_add($autorId, $Calificacion ) )
+       {
+               return error("Error al computar los creditos al usuario");
+       }
  }
  
  // Loguea la accion
  file_log_add($UsrId, "Califica una respuesta con $Calificacion puntos");
  }
  
  // Loguea la accion
  file_log_add($UsrId, "Califica una respuesta con $Calificacion puntos");
- return "La calificacion a la respuesta fue dada de alta";      
+ return ok("La calificacion a la respuesta fue dada de alta");  
 }
 
 function Faq_SortRespuestasByRanking($respuestas)
 }
 
 function Faq_SortRespuestasByRanking($respuestas)
@@ -305,4 +304,57 @@ function Faq_SortRespuestasByRanking($respuestas)
        }
        return $respuestas;
 }
        }
        return $respuestas;
 }
+function printfl()
+{
+    $args = func_get_args();
+    $args[0] .= "\n";
+    call_user_func_array('printf', $args);
+}
+
+function Faq_Listador($ObjetosAListar,$link = '', $cant = 2)
+{
+                // Calculo posiciones
+    $total = count($ObjetosAListar);
+    if (!$total)
+    {
+        echo error('No se encontraron Items');
+        return;
+    }
+    $from = intval(@$_GET["lista_from"]);
+    $c = min($total - $from, $cant);
+               
+               while ( $c-- )
+    {
+        if ( array_key_exists($from, $ObjetosAListar) )
+                               {
+                               $obj = $ObjetosAListar[$from++];
+                               $obj->toHTML();
+                               }
+    }
+               
+               $pags = ceil($total / $cant);
+    if ($pags == 1) return; 
+    printfl('<table summary="Paginador" border="0"><tr>');
+               // Arrastro query string, si corresponde
+    if ( isset($_SERVER['QUERY_STRING'] ) )
+               {
+                $query = $_SERVER['QUERY_STRING'];
+               }
+               else
+               {
+                $query = '';
+               }
+    if (($pos = strpos($query, 'lista_from=')) !== false)
+    {
+        if ($pos) $query = substr($query, 0, --$pos);
+        else      $query = '';
+    }
+    for ($i = 0; $i < $pags; ++$i)
+    {
+        $from = $i * $cant;
+        $q = $query ? "$query&lista_from=$from" : "lista_from=$from";
+        printfl('<td><a href="%s?%s">%s</a></td>', $link, $q, $i + 1);
+    }
+               printfl('</tr></table>');
+}
 ?>
\ No newline at end of file
 ?>
\ No newline at end of file