Ocultación automática de cursos por fecha de finalización. [Solucion]

Ocultación automática de cursos por fecha de finalización. [Solucion]

de Roberto P -
Número de respuestas: 1
Empiezo con el agradecimento por su ayuda y sus aportes incondicionales a:

Xavier Paz

Ocultación automática de cursos por fecha de finalización.

Recomendaciones:

· No apto para personas poco familiarizadas con moodle, SQL y php.

· No apto para moodle’s que se tenga previsto actualizar.

Nota del desarrollador:

El que detalla este documento, no se hace responsable del fin de esta modificación, ya que es una petición a medida de un moodle, que cumple con las recomendaciones.

Estos cambios son sensibles, por la modificación de archivos php de moodle y una tabla. El cambio de esta tabla, no impide actualizar moodle, si no que con la nueva actualización es posible que modifique dicha tabla y borre nuestras modificaciones.

Pasos:

1. Modificaciones php.

a. Edit_form.php

b. Cron.php

c. Moodle.php

2. Creación HTML.

a. Courseenddate.html

3. Modificación de la tabla mdl_course.

1 Modificaciones php.

a. Edit_form.php.

Este php se encuentra en vuestro directorio de moodle, con la siguiente ruta.

C:\www\moodle\course\edit_form.php

(Esto puede variar según vosotros hayáis configurado la instalación).

La errónea manipulación de este archivo, hace que no funcione moodle.

¿Por qué edit_form.php?

Esto es debido a un requerimiento, de que este dato se inserte en el formulario de creación de cursos de moodle.

¿Qué cambios tengo que hacer?

Una vez abierto este archivo con vuestro editor (cada uno el que prefiera), nos dirigimos a la línea 125 o buscamos:

$mform->addElement('date_selector', 'startdate', get_string('startdate'));

$mform->setHelpButton('startdate', array('coursestartdate', get_string('startdate')), true);

$mform->setDefault('startdate', time() + 3600 * 24);

Ahora añadiremos el control de fecha de fin.

//Añade un control de combos de fecha (date_selector), nombre del campo en la tabla //(enddate) y getstring, que añade nuestro texto al control ‘Fecha finalización’.

$mform->addElement('date_selector', 'enddate', get_string('enddate'));

//Botón de ayuda, que se añade a la izquierda del control y busca el HTML de ayuda, //para mostrar el texto.

$mform->setHelpButton('enddate', array('courseenddate', get_string('enddate')), true);

//Esto es el valor por defecto del control, en concreto esto suma 2 días a la fecha //actual.

$mform->setDefault('enddate', time() + 3600 * 48);

//estas líneas se pueden copiar y pegar.

b. Cron.php

Tras romperme la cabecita, sobre el cron y sus múltiples ayudas en internet, de ¿cómo modificarlo? ,¿Cómo usarlo?, ¿Qué es?

Lo mejor prueba ,(fallo, fallo, fallo, fallo, fallo, fallo, fallo, fallo, fallo)ensayo, y aprendes a usarlo.

Este es un php que se ejecuta con una frecuencia ¿Cual? – no lo sé, pero se ejecuta y es lo que me interesa. A veces en la vida es mejor no preguntar…

Lo hace secuencial mente.

¿Dónde se encuentra este php?

Al igual que antes, esto depende de donde lo hayáis instalado. En mi caso:

C:\www\moodle\admin\cron.php

La errónea manipulación de este archivo, hace que no funcione moodle.

¿En donde lo pongo? ¿Qué tengo que hacer aquí?

Buscamos la línea 523 o buscamos:

// run any customized cronjobs, if any

// looking for functions in lib/local/cron.php

Y añadimos las siguientes líneas encima de las que hemos buscado.

// QUERY OCULTA CURSOS

//muestra en el log el mensaje entre paréntesis, se pueden visualizar variables.

mtrace('Inicio fecha fin ');

// Esta query modifica los campos visible a valor 0 de todos los cursos, cuya fecha de //finalización (campo enddate), sea menor o igual a hoy.

execute_sql("Update mdl_course set visible=0 where enddate <".$timenow);

mtrace('Fin fecha fin');

//estas líneas se pueden copiar y pegar.

¿Cómo pruebo esto?

http://localhost/moodle/admin/cron.php

hace que se ejecute nuestro cron

¿Por qué no me funciona?

-Lo tendrás instalado en otro sitio.

-El moodle se llamara de otra manea.

c. Moodle.php

Este php es un rompe cabezas, el encontrarlo , modificarlo cosa de niños.

¿Dónde se encuentra?

c\moodledata\lang\es_utf8\moodle.php

Dependerá de en donde hayáis instalado el moodledata y el idioma o paquete de estos.

2 Creación HTML.

a. Courseenddate.html

¿Qué es esto?

¿Habéis visto alguna vez un círculo amarillo con una interrogación dentro?

-Si, pues este archivo es el que se muestra cuando, se pulsa ese botón.

¿Dónde está?

Otra panacea…

C:\moodledata\lang\es_utf8\help\

¿Por qué no le encuentro?

Obviamente no existe ya que es la ayuda de nuestro nuevo control, puedes copiar Coursestartdate.html y modificarlo. (¡ Ojo, COPIA y PEGA!)

Cambia el nombre a Courseenddate.html, dentro es código HTML, yo puse lo siguiente:

<h1>Fecha de finalización de curso</h1>

<P>Aquí es donde se especifica la fecha de finalización del curso (en su propia zona horaria).</P>

<P>Si Ud. está utilizando el formato 'semanal', esto afectará a la finalización, ya que respetara la fecha de finalización

antes que la duración.</P>

<P>Como regla general: Si está creando un curso que tiene una fecha real de

finalización, este es el único sitio donde la puede fijar.</P>

//estas líneas se pueden copiar y pegar.

3 Modificación de la tabla mdl_course.

La modificación de esta tabla es sensible (Muy sensible).

El cómo lo hagáis no lo sé, depende de cada uno, yo utilizo phpmyadmin.

Pasos a seguir:

i. backup de la base de datos completa.

ii. Copia de la tabal mdl_course (mdl_course_copia)

iii. Modificar la tabla md_course, añadiendo un campo ‘enddate’ , después de startdate, de tipo Bigint, de 10 de largo, con un valor 0 de inicio, no nulo y undefined.

PRECAUCIONES

Los cursos, que estén en la tabla (no nuevos) y que estén activos (en mi caso visibles = activos), tendrán un valor 0 en el campo ’endate’ de la tabla.

¡SI SE EJECUTA CRON NO SERAN VISIBLES NINGUNO!

MODIFICAR ESTE CAMPO PARA QUE NO SE OCULTEN.

¿Cómo?

-Abre moodle, dirígete al curso, y en edición debe aparecer este nuevo control, dale una fecha de finalización y guárdalo, así con todos.

¿Permite el cambio en la edición del curso?

-Si.

¿Y si quiero reutilizar un curso oculto?

-Actualmente, se esta extendiendo este apartado para hacerlo más completo.

En principio es añadirle lógica al archivo Cron.php, en donde ejecutamos nuestra Query, ya lo tengo hecho pero está en beta.

Actual solución, visualizarlo con el ojito y editar la información del curso añadiéndole otra fecha de finalización.


Espero os ayude.


Promedio de valoraciones:Útil (1)