CUL Course Visibility Update

Local plugins ::: local_culcourse_visibility
Maintained by Amanda Doughty
Scheduled task to update course visibility based on start and/or end date.
Latest release:
171 sites
29 downloads
25 fans
Current versions available: 4

CUL Course Visibility local plugin

This plugin makes hidden courses visible when the course start date it reached. It also makes visible courses hidden when the course end date is reached. Both options can be enabled/disabled in theplugin settings. It runs daily as a scheduled task.

It will only make visible courses with a start date matching the current day.

Courses which have start dates older than the current date will not be updated.

It will only hide courses with a end date matching the current day.

Courses which have end dates older than the current date will not be updated.


Screenshots

Screenshot #0

Contributors

Amanda Doughty (Lead maintainer)
Tim Gagen
Tim Gagen: Developer
Please login to view contributors details and/or to contact them

Comments

Show comments
  • Jonathan Sánchez Giraldo
    Wed, 23 Sept 2020, 3:23 AM
    Gracias por responder. Tomas una consulta. A ti te funciona correctamente y se ejecuta con el cron el plugin?

    Saludos
  • Tomás TR
    Wed, 23 Sept 2020, 3:40 AM
    A mi si me funciona a la perfección, excepto eso de la hora, pero según comenta Amanda, es debido a que no la tiene en cuenta...
  • Jonathan Sánchez Giraldo
    Wed, 23 Sept 2020, 4:05 AM
    Gracias Tomas por responder. Debo de tener algo presente para que me funcione? Yo tengo instalado Moodle 3.8.
    - Lo instale normal como se instala un plugin y active las dos opciones correspondientes para inicio y final del curso.
    - Pero cuando entro a verificar si el cron se ha ejecutado el sistema me dice que no se ha ejecutado.
    - Puedo ejecutar manualmente el cron para validar si funciona?
    Gracias
  • Tomás TR
    Wed, 23 Sept 2020, 4:15 AM
    El cron es FUNDAMENTAL.
    Tienes que configurarlo en tu servidor. Hay mucha información en internet.
    Para ejecutarlo manualmente tienes que habilitar la opción, ponerle pass y entrar en http://su.sitio.moodle/admin/cron.php

    Pero lo suyo es que se ejecute cada 2 minutos
  • Jonathan Sánchez Giraldo
    Wed, 23 Sept 2020, 4:38 AM
    Tomas ya lo tengo configurado y puedo ponerlo a correr. Pero cuando lo ejecuto lo hace nada relacionado con \local_culcourse_visibility\task\update_course_visibility. Cuando lo ejecuto incluso no genera logs. Será que me falta algo?

    Gracias
  • Jonathan Sánchez Giraldo
    Wed, 23 Sept 2020, 10:08 PM
    Cordial saludo Tomas y Amanda, tengo ya un mes de tener instalado el plugin y esta es la imagen que tengo en la que se informa que no se ha ejecutado.

    https://drive.google.com/file/d/1lpKReHf325R7LTCprGnQ34g_NhgVKRnU/view?usp=sharing

    Adicionalmente, ejecuto el cron por web y no lo actualiza, ejecuto el cron por consola linux y tampoco lo actualiza.

    Pueden ayudarme con alguna orientación.

    Muchas gracias
  • Tomás TR
    Wed, 23 Sept 2020, 10:17 PM
    Yo simplemente lo instalé, activé las opciones de visible y oculto.
    Y posteriormente ejecuto el cron automáticamente cada dos minutos. Pero no es una tarea de moodle, si no del SERVIDOR. Tienes que programar la tarea en el servidor y ya.
    A mi me funciona genial.

    P.D.: Intenté mandarte un mensaje privado pero no lo tienes habilitado, y creo que no es de recibo ensuciar este hilo con un tema personal
  • Jonathan Sánchez Giraldo
    Wed, 23 Sept 2020, 11:01 PM
    Muchas gracias por tus comentarios Tomas, podríamos entrar en contacto? mis datos son estos:

    Email address
    jonshez@gmail.com

    Skype ID
    jonshez

    Feliz día
  • Renee Doehrel Rhodehamel
    Thu, 25 Aug 2022, 9:59 PM
    Hello. Is there an on/off toggle at the course level that an instructor has access to, or is only possible for a site admin to adjust the on/off setting globally?

  • Amanda Doughty
    Mon, 5 Sept 2022, 10:41 PM
    Just globally
  • sofiene JOUINI
    Sat, 20 Apr 2024, 4:00 AM
    We want to see a Moodle 4.1 complaint for this very useful plugin
    Thanks.
  • Kai Niethammer
    Thu, 21 Nov 2024, 9:33 PM
    Is this Plugin going to be maintained in the future and compatible with current and/or future versions?
  • Alberto .
    Thu, 25 Sept 2025, 11:59 PM
    He conseguido hacer que funcione también teniendo en cuenta la hora, no sólo la fecha. Sólo hay que hacer unos pequeños cambios en varios archivos del plugin. Además de estos cambios es necesario asegurarse de que el cron del servidor se ejecute cada minuto, o cada pocos minutos. Si alguien lo quiere con esa mejora que me lo diga.
  • Tomás TR
    Fri, 26 Sept 2025, 12:16 AM
    Un servidor! Si me indicas que cambiaste te lo agradecería
  • Alberto .
    Fri, 26 Sept 2025, 3:22 PM
    En el archivo db/tasks.php, donde pone 'minute' => '00', hay que poner 'minute' => '*/5', y donde pone 'hour' => '01', poner 'hour' => '*',
    En el archivo version.php del raíz cambia $plugin->version por un número superior al que tengas.
    Por último, el cambio más importante es en el archivo classes/task/update_course_visibility.php, donde hay que sustituir toda la función execute actual por esta otra:
    public function execute() {
    global $DB;

    $t0 = microtime(true);

    $now = time();
    $showcourses = [];
    $hidecourses = [];

    $config = get_config('local_culcourse_visibility');

    if (!empty($config->showcourses)) {
    mtrace("\n Searching for courses to make visible ...");
    // Hacer visibles los cursos cuyo startdate YA ha llegado.
    $select = "visible = 0 AND startdate > 0 AND startdate <= :now";
    $showcourses = $DB->get_records_select('course', $select, ['now' => $now], '', 'id, shortname');
    if ($showcourses) {
    $this->show_courses($showcourses);
    }
    }

    if (!empty($config->hidecourses)) {
    mtrace("\n Searching for courses to hide ...");
    // Ocultar los cursos cuyo enddate YA ha llegado.
    $select = "visible = 1 AND enddate > 0 AND enddate <= :now";
    $hidecourses = $DB->get_records_select('course', $select, ['now' => $now], '', 'id, shortname');
    if ($hidecourses) {
    $this->hide_courses($hidecourses);
    }
    }

    if (!$showcourses && !$hidecourses) {
    mtrace(" Nothing to do, except ponder the boundless wonders of the Universe, perhaps. wink\n");
    }

    mtrace(number_format((microtime(true) - $t0) / 60, 3) . ' mins');
    }

    Ya sólo faltaría comprimirlo todo, subirlo e instalarlo. Por si acaso, purga todas las cachés antes de probarlo
1 2 3
Please login to post comments