Moodle 2.7.1+ Redirección de un curso

Moodle 2.7.1+ Redirección de un curso

de Josep Vargas -
Número de respuestas: 15

Buenas tardes compañeros;
Tengo un pequeño problema que no consigo solucionar. Estoy intentando redirigir un curso a una página externa de Moodle, es decir que al acceder al curso:

midominio.com/moodle/view.php?id=32

de forma automática me rediriga a midominio.com/formulario.php

He intentado varias opciones modificando el código de view.php y externservercourse.php pero de momento sin éxito. Si tenéis alguna idea de cómo poder redirigirlo os lo agradeceré.

Gracias de antemano sonrisa

Promedio de valoraciones: -
En respuesta a Josep Vargas

Re: Moodle 2.7.1+ Redirección de un curso

de Franco Pantoja -
Imagen de Moodlers de gran ayuda

Hola Josep,

parece que deberías tocar el view.php, aunque si sólo deseas que lo haga con el course id = 32, tendrías que de alguna manera discriminarlo.

$id          = optional_param('id', 0, PARAM_INT);

De esta manera podrías recuperarlo simplemente mediante el envío GET

Después, puedes utilizar las funciones Moodle para redirigir la navegación

$url = 'www.myweb.com';
$mymessage = 'Estás siendo redirigido... no sabemos muy bien por qué :)'
$time = 10 // integer in seconds
redirect($url, $mymessage e', $time);

Espero que pueda serte útil.

Saludos!!

En respuesta a Franco Pantoja

Re: Moodle 2.7.1+ Redirección de un curso

de Josep Vargas -

Hola Paco,

Millones de gracias por tu respuesta, no obstante, no logro encontrar la fórmula para redirigir solamente el curso con una ID específica.

¿Alguna idea? De momento todo lo que he probado modificando el view.php no me ha dado resultado.


Gracias nuevamente por toda tu ayuda.

En respuesta a Josep Vargas

Re: Moodle 2.7.1+ Redirección de un curso

de Franco Pantoja -
Imagen de Moodlers de gran ayuda

A ver si te podemos ayudar Josep

la variable id del Curso se debe encontrar en el propio view.php, prueba pej. en este mismo archivo con un 

var_dump($course->id);

Obtendrás algo parecido a string(1) "7" (este 7 es, en este caso, el id del curso que también se encuentra en la url)

Con estos datos hacemos la condición de manera sencilla

if ($course->id == 7 ) { redirecciono a la página que deseo; }

Saludos!!

En respuesta a Franco Pantoja

Re: Moodle 2.7.1+ Redirección de un curso

de Josep Vargas -

Buenos días Paco

Gracias nuevamente por el esfuerzo. He hecho lo que indicas y he probado alguna otra función, parece que la reconoce pero no redirige a la página externa, se queda la página del curso al que hago referencia completamente en blanco.


Lo reconoce pero no redirige a la página externa:

if ($course->id == 8 ) { http://moodle.midominio.com/course/view.php?id=14; }


Lo reconoce pero no funciona:

}
            if ($course->id == 8) {
                redirect(http://moodle.midominio.com/course/view.php?id=14);
            } else if (!empty($return)) {
                redirect($CFG->wwwroot . $return);
        }



¿Alguna idea sobre qué debo hacer incorrecto?

Gracias nuevamente.

En respuesta a Josep Vargas

Re: Moodle 2.7.1+ Redirección de un curso

de Josep Vargas -

Buenas noches,

He conseguido solucionar la redirección en el view.php

No obstante, al activar la edición de cada curso me redirecciona también a la que he creado en la ID del curso.

¿Hay algo raro en el código? No lo localizo...

Gracias de antemano

   // Redireccion del Curso a Otro Directorio
   if( isset($_GET['id']) )
   {

   $id = (int) $_GET['id'];

     if( $id == 32 )
     {
        redirect("http://midominio.com/moodle/sec2/externo.php");
        exit;  
     }

   }  
   else
   {
   redirect("http://midominio.com/moodle/sec2/externo.php");
    exit;
   }
En respuesta a Josep Vargas

Re: Moodle 2.7.1+ Redirección de un curso

de Franco Pantoja -
Imagen de Moodlers de gran ayuda

Hola Josep, 

nos es algo complicado ver que puede estar pasando al  no tener todo el código, aunque como opción si te redirige y no persigues eso, cuando estás en modo edición trata de utilizar esta variable para impedirlo.

Trato de explicarme

if (!$PAGE->user_is_editing()) { // si no se está en modo edición del Curso
//  opera la lógica del redirect
}

A ver si ahora,


Saludos!!

En respuesta a Franco Pantoja

Re: Moodle 2.7.1+ Redirección de un curso

de Josep Vargas -

Hola Paco,

He probado lo que indicas insertándolo en el código, pero parece ser que evita la visualización de todos los cursos.

Adjunto el código de view.php a ver si así es más sencillo de discriminar la opción o lo ves mejor, yo no veo nada extraño.


Ver código


Muchísimas gracias por tu ayuda.

¡Un saludo!

En respuesta a Josep Vargas

Re: Moodle 2.7.1+ Redirección de un curso

de Franco Pantoja -
Imagen de Moodlers de gran ayuda

Hola,

a ver si conseguimos resolverlo.

En view.php aproximadamente por la línea 40

...
  $course = $DB->get_record('course', $params, '*', MUST_EXIST);
    $urlparams = array('id' => $course->id);
    if ($id == 8 ){ // este es el código para redireccionar si el curso es id=8
        $url = 'www.myweb.com';
        $mymessage = 'Estás siendo redirigido... no sabemos muy bien por qué :)';
        $time = 10;  // integer in seconds (a los 10 segundos se producirá la redirección)
        redirect($url, $mymessage, $time);
    } // aquí termina el script para la redirección
    // Sectionid should get priority over section number
    if ($sectionid) {
        $section = $DB->get_field('course_sections', 'section', array('id' => $sectionid, 'course' => $course->id), MUST_EXIST);
    }
    if ($section) {
        $urlparams['section'] = $section;
    }
    $PAGE->set_url('/course/view.php', $urlparams); // Defined here to avoid notices on errors etc
...

Lo hemos probado y parece que funciona


Saludos!!

En respuesta a Franco Pantoja

Re: Moodle 2.7.1+ Redirección de un curso

de Oscar Cossio -

Buenas tardes Paco, inclui lo que explicas en la parte del codigo del View.php pero a pesar de que redirecciona no reconoce cuando esta en modo de edicion y me genera un conflicto PHP que no me deja cargar la vista del curso.

Este es el codigo:


 $course = $DB->get_record('course', $params, '*', MUST_EXIST);

    $urlparams = array('id' => $course->id);
	
if ($id == 26 ){ // este es el código para redireccionar si el curso es id=8 
//if (!$PAGE->user_is_editing()) { // si no se está en modo edición del Curso
//  opera la lógica del redirect
	$url = 'http://www.idencorp.net/lms/mod/page/view.php?id=164';
	$mymessage = 'Estás siendo redirigido...';
        $time = 10;  // integer in seconds (a los 10 segundos se producirá la redirección)
		        redirect($url, $mymessage, $time);
	    	} // aquí termina el script para la redirección
	    }

		        
	
    // Sectionid should get priority over section number
    if ($sectionid) {
        $section = $DB->get_field('course_sections', 'section', array('id' => $sectionid, 'course' => $course->id), MUST_EXIST);
    }
    if ($section) {
        $urlparams['section'] = $section;
    }

Lo que esta en negrilla fue lo que inclui para la redireccion, pero como puedes ver  tengo comentada la parte que valida si esta en modo edicion, pero no pude lograr que funcionara. Probe con el IF por fuera y por dentro, se supone la logica es: primero valida pagina y luego si esta en modo de edicion. Pero en cualquiera de los dos casos no funciona. Me gustaria pudises ayudarme.

En respuesta a Oscar Cossio

Re: Moodle 2.7.1+ Redirección de un curso

de Franco Pantoja -
Imagen de Moodlers de gran ayuda

Hola Oscar

El conflicto PHP debe referirse a que hay algún error en el código.

Revisa por favor este, a priori y por lo que nos muestras,  un if está comentado aunque no parece que esté comentado el cierre de su propia llave

} // aquí termina el script para la redirección

Tal vez eso te genere el error


Saludos!!

En respuesta a Franco Pantoja

Re: Moodle 2.7.1+ Redirección de un curso

de Oscar Cossio -

Buenas tardes Paco,


Efectivamente no tengo comentada la linea de la llave porque era a modo de ejemplo que quería mostrarte. En el codigo que tengo actualmente no existe ni el IF comentando, ni la llave. Solo es la dirección ya que así me funcionó. Suponiendo que el IF no esta comentado en la linea donde se validasi esta en modo de edición el curso o no, es ahí cuando ya no funciona. Me gustaría por favor me pudieses explicar que tengo de malo en el código, solo quita el comentario del IF, no entiendo porque no valida si el curso esta en modo de edición. Este proceso también lo intente con un ELSE pero no funciona, es como si no la función que se evalúa no funcionase. 


Agradezco tu ayuda.


En respuesta a Oscar Cossio

Re: Moodle 2.7.1+ Redirección de un curso

de Franco Pantoja -
Imagen de Moodlers de gran ayuda

Hola Oscar

Trata de introducir el código en el formato de curso en concreto, pej, en el topics en course/format/topics/format.php

Ahí, aproximadamente líneas 50 y ss, puedes introducir tu código

if ($id == 26 ){ // este es el código para redireccionar si el curso es id=26
if (!$PAGE->user_is_editing()) { // si no se está en modo edición del Curso
  $url = 'http://myweb.com';
       $mymessage = 'Estás siendo redirigido...';
       $time = 1;  // integer in seconds (a los 10 segundos se producirá la redirección)
       redirect($url, $mymessage, $time);
   }
} // aquí termina el script para la redirección

Saludos!!

En respuesta a Franco Pantoja

Re: Moodle 2.7.1+ Redirección de un curso

de Oscar Cossio -

Gracias franco por tu ayuda, me fue muy útil la respuesta. Aprendí bastante con el tema.

Feliz tarde.

En respuesta a Oscar Cossio

Re: Moodle 2.7.1+ Redirección de un curso

de Lorenzo sin -

Hola, si, el redireccionamiento funciona y te lleva a la url que necesites, pero de lo que yo trato es de aplicar la redirección SOLO al salir del curso. Y lo tengo incrustado en joomla con Joomdle

Es decir, que accedo al curso, de forma inmediata me lleva a la url indicada, pero eso me causa dos problemas.

1.- No me deja acceder al curso (Lo tengo en una ventana emergente para la visualización), ya que nada mas acceder al id del curso me salta la redirección.

2.- Al estar incrustado en joomla con joomdle, la redirección me incrusta la url redirigida dentro de joomla, por lo que tengo repetido la vista del joomla.

Si me indican como proceder estare muy agradecido.


Saludos