c_logasistencia.php 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. /*
  3. * Objeto para leer y escribir datos de log de intentos de asistencia realizadas por el usuario
  4. */
  5. namespace classes;
  6. define("MAX_LINES", 200);
  7. class LogAsistencias
  8. {
  9. //put your code here
  10. private $file, $month, $year;
  11. private $dir;
  12. function __construct($ruta = null)
  13. {
  14. // die ruta
  15. $this->month = date("m");
  16. $this->year = date("Y");
  17. $this->dir = ($ruta ?? '') . "log/";
  18. $this->updateFilename();
  19. }
  20. function setMes(string $mes)
  21. {
  22. $this->month = $mes;
  23. $this->updateFilename();
  24. }
  25. function setAno(string $ano)
  26. {
  27. $this->year = $ano;
  28. $this->updateFilename();
  29. }
  30. private function updateFilename()
  31. {
  32. $this->file = "asistencias_" . $this->year . "_" . $this->month . ".log";
  33. }
  34. private function cleanLog($text)
  35. { //remueve || de los textos
  36. return trim(str_ireplace("||", "", $text));
  37. }
  38. function appendLog($claveULSA, $nombre, $desc)
  39. {
  40. $filename = $this->dir . $this->file;
  41. if (!file_exists($this->dir)) {
  42. echo "$this->dir no existe, creando...";
  43. mkdir($this->dir, 0755, true);
  44. }
  45. if (file_exists($this->dir)) {
  46. $data = date('Y-m-d H:i:s') . "||" . $this->cleanLog($claveULSA) . "||" . $this->cleanLog($desc) . "||" . $this->cleanLog($nombre) . "\n";
  47. /*echo*/
  48. file_put_contents($filename, $data, FILE_APPEND);
  49. }
  50. }
  51. function getLog($mes = "", $ano = "")
  52. {
  53. if ($mes != "") $this->setMes($mes);
  54. if ($ano != "") $this->setAno($ano);
  55. $filename = $this->dir . $this->file;
  56. if (file_exists($filename)) {
  57. //return array_slice(file ($filename , FILE_SKIP_EMPTY_LINES) , -10);
  58. $lines = file($filename, FILE_SKIP_EMPTY_LINES);
  59. //echo "antes: ".count($lines);
  60. if (count($lines) > MAX_LINES) {
  61. $lines = array_slice($lines, MAX_LINES * (-1));
  62. }
  63. //echo "despues: ".count($lines);
  64. return $lines;
  65. } else
  66. return array();
  67. }
  68. }