1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- <?php
- require_once "{$_SERVER['DOCUMENT_ROOT']}/dependencies.php";
- // Exportar a archivo separado por comas
- // Must receive from POST associative array with keys and values
- use Respect\Validation\Validator as v;
- $query = json_decode(file_get_contents('php://input'), true);
- // method must be POST
- if (!isset($_SESSION['user'], $moodle_db)) {
- 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');
- exit();
- }
- $data = $sgi_db->query(
- <<<SQL
- SELECT
- "Usuario_claveULSA" as "Clave ULSA",
- "Usuario_apellidos" as "Apellidos",
- "Usuario_nombre" as "Nombre",
- "Materia_desc" as "Materia",
- "Materia_semestre" as "Semestre",
- "Area_desc" as "Área",
- "PlanEstudio_desc" as "Plan de Estudio",
- CONCAT("Grupo_desc", "Carrera_prefijo") as "Grupo",
- "electiva" as "Electiva",
- "total_campos_llenos"::FLOAT / 13 AS "Promedio Syllabus",
- "promedio_sesiones_semana" as "Promedio Sesiones",
- "Materia_shortname"
- FROM FS_REPORTE_SYLLABUS_PLAN(:periodo_id)
- SQL,
- ['periodo_id' => $query['periodo_id']]
- );
- switch ($query['query']) {
- case 'cursos':
- // Get all courses from the database
- $courses = array_column($moodle_db
- ->where('visible', 1)
- ->get(tableName: 'mdl_course', columns: ['shortname']), 'shortname');
- // Check if the shortname exists in the courses array (case-insensitive)
- $data = array_map(function ($row) use ($courses) {
- $shortname = $row['Materia_shortname'];
- $row['Moodle'] = in_array(strtolower($shortname), array_map('strtolower', $courses)) ? 'Existe' : 'No existe';
- return $row;
- }, $data);
- break;
- }
- $filename = 'test.csv';
- header('Content-Type: text/csv; charset=UTF-8');
- header('Content-Disposition: attachment; filename="' . $filename . '"');
- echo "\xEF\xBB\xBF"; // Añade el BOM de UTF-8 al inicio del archivo para indicar su codificación
- $fp = fopen('php://output', 'w'); // 'wb' también es válido en este contexto
- // insert header
- $headers = array_keys($data[0]);
- // todos los headers en Mayúsculas incluyendo los acentos
- fputcsv($fp, $headers);
- // insert data
- foreach ($data as $line) {
- fputcsv($fp, $line);
- }
- fclose($fp);
- exit();
|