c_logasistencia.php 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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. mkdir($this->dir, 0755, true);
  43. }
  44. if (file_exists($this->dir)) {
  45. $data = date('Y-m-d H:i:s') . "||" . $this->cleanLog($claveULSA) . "||" . $this->cleanLog($desc) . "||" . $this->cleanLog($nombre) . "\n";
  46. /*echo*/
  47. file_put_contents($filename, $data, FILE_APPEND);
  48. }
  49. }
  50. function getLog($mes = "", $ano = "")
  51. {
  52. if ($mes != "") $this->setMes($mes);
  53. if ($ano != "") $this->setAno($ano);
  54. $filename = $this->dir . $this->file;
  55. if (file_exists($filename)) {
  56. //return array_slice(file ($filename , FILE_SKIP_EMPTY_LINES) , -10);
  57. $lines = file($filename, FILE_SKIP_EMPTY_LINES);
  58. //echo "antes: ".count($lines);
  59. if (count($lines) > MAX_LINES) {
  60. $lines = array_slice($lines, MAX_LINES * (-1));
  61. }
  62. //echo "despues: ".count($lines);
  63. return $lines;
  64. } else
  65. return array();
  66. }
  67. }