gema.php 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. require_once "{$_SERVER['DOCUMENT_ROOT']}/dependencies.php";
  3. // Exportar a archivo separado por comas
  4. // Must receive from POST associative array with keys and values
  5. use Respect\Validation\Validator as v;
  6. $query = json_decode(file_get_contents('php://input'), true);
  7. // method must be POST
  8. if (!isset($_SESSION['user'], $moodle_db)) {
  9. serverError(title: 'Error de conexión', message: 'No se ha iniciado sesión o no se ha establecido una conexión con la base de datos de Moodle');
  10. exit();
  11. }
  12. $data = $sgi_db->query(
  13. <<<SQL
  14. SELECT
  15. "Usuario_claveULSA" as "Clave ULSA",
  16. "Usuario_apellidos" as "Apellidos",
  17. "Usuario_nombre" as "Nombre",
  18. "Materia_desc" as "Materia",
  19. "Materia_semestre" as "Semestre",
  20. "Area_desc" as "Área",
  21. "PlanEstudio_desc" as "Plan de Estudio",
  22. CONCAT("Grupo_desc", "Carrera_prefijo") as "Grupo",
  23. "electiva" as "Electiva",
  24. "total_campos_llenos"::FLOAT / 13 AS "Promedio Syllabus",
  25. "promedio_sesiones_semana" as "Promedio Sesiones",
  26. "Materia_shortname"
  27. FROM FS_REPORTE_SYLLABUS_PLAN(:periodo_id)
  28. SQL,
  29. ['periodo_id' => $query['periodo_id']]
  30. );
  31. switch ($query['query']) {
  32. case 'cursos':
  33. // Get all courses from the database
  34. $courses = array_column($moodle_db
  35. ->where('visible', 1)
  36. ->get(tableName: 'mdl_course', columns: ['shortname']), 'shortname');
  37. // Check if the shortname exists in the courses array (case-insensitive)
  38. $data = array_map(function ($row) use ($courses) {
  39. $shortname = $row['Materia_shortname'];
  40. $row['Moodle'] = in_array(strtolower($shortname), array_map('strtolower', $courses)) ? 'Existe' : 'No existe';
  41. return $row;
  42. }, $data);
  43. break;
  44. }
  45. $filename = 'test.csv';
  46. header('Content-Type: text/csv; charset=UTF-8');
  47. header('Content-Disposition: attachment; filename="' . $filename . '"');
  48. echo "\xEF\xBB\xBF"; // Añade el BOM de UTF-8 al inicio del archivo para indicar su codificación
  49. $fp = fopen('php://output', 'w'); // 'wb' también es válido en este contexto
  50. // insert header
  51. $headers = array_keys($data[0]);
  52. // todos los headers en Mayúsculas incluyendo los acentos
  53. fputcsv($fp, $headers);
  54. // insert data
  55. foreach ($data as $line) {
  56. fputcsv($fp, $line);
  57. }
  58. fclose($fp);
  59. exit();