Proyectos de Subversion Moodle

Rev

Rev 1079 | Rev 1113 | Ir a la última revisión | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 1079 Rev 1084
Línea 359... Línea 359...
359
            if ($category) {
359
            if ($category) {
360
                array_push($categories, ['id' => $category->id, 'name' => $category->name]);
360
                array_push($categories, ['id' => $category->id, 'name' => $category->name]);
361
            }
361
            }
362
        }
362
        }
Línea -... Línea 363...
-
 
363
 
363
 
364
        // Configuración inicial
364
        $total_courses = count($courses);
365
        $total_courses = count($courses); // Total de cursos
-
 
366
        $total_pages = ceil($total_courses / $perpage); // Total de páginas
-
 
367
 
365
        $total_pages = ceil($total_courses / $perpage);
368
        // Validar y calcular la página actual
-
 
369
        $page = isset($page) ? max(1, min($page, $total_pages)) : 1;
-
 
370
 
366
        $page = max(1, min($page, $total_pages)); // Asegúrate de que `page` esté dentro de los límites.
371
        // Calcular el offset
367
        $offset = ($page - 1) * $perpage;
-
 
Línea -... Línea 372...
-
 
372
        $offset = ($page - 1) * $perpage;
-
 
373
 
-
 
374
        // Extraer los cursos correspondientes a la página actual
-
 
375
        $courses_paginated = array_slice($courses, $offset, $perpage);
-
 
376
 
-
 
377
        // Determinar el rango dinámico de páginas para la navegación
-
 
378
        $max_links = 3; // Número máximo de enlaces visibles
-
 
379
        $start_page = max(1, $page - floor($max_links / 2));
-
 
380
        $end_page = min($total_pages, $start_page + $max_links - 1);
-
 
381
 
-
 
382
        // Ajustar el inicio si no hay suficientes páginas al final
-
 
383
        if ($end_page - $start_page + 1 < $max_links) {
-
 
384
            $start_page = max(1, $end_page - $max_links + 1);
-
 
385
        }
368
        $courses = array_slice($courses, $offset, $perpage);
386
 
369
 
387
        // Crear el array de navegación con el rango dinámico
370
        $pagination = [
388
        $pagination = [
371
            'current_page' => $page,
389
            'current_page' => $page,
372
            'total_pages' => $total_pages,
390
            'total_pages' => $total_pages,
373
            'has_previous' => $page > 1,
391
            'has_previous' => $page > 1,
374
            'has_next' => $page < $total_pages,
392
            'has_next' => $page < $total_pages,
-
 
393
            'previous_page' => $page > 1 ? $page - 1 : null,
-
 
394
            'next_page' => $page < $total_pages ? $page + 1 : null,
-
 
395
            'pages' => array_map(function ($p) use ($page) {
-
 
396
                return [
-
 
397
                    'number' => $p,
-
 
398
                    'is_current' => $p === $page
375
            'previous_page' => $page > 1 ? $page - 1 : null,
399
                ];
Línea -... Línea 400...
-
 
400
            }, range($start_page, $end_page))
376
            'next_page' => $page < $total_pages ? $page + 1 : null
401
        ];
377
        ];
402
 
378
 
403
        // Preparar los datos para la plantilla
379
        $data = [
-
 
380
            'courses' => $courses,
404
        $data = [
Línea 381... Línea 405...
381
            'pagination' => $pagination
405
            'courses' => $courses_paginated,
Línea 382... Línea 406...
382
 
406
            'pagination' => $pagination