Como obtener el nombre y id del curso actual

Como obtener el nombre y id del curso actual

de Carlos Ramirez -
Número de respuestas: 19

Buenos dias,

Trabajo con moodle 2.6 y he creado un pequeno formulario dentro de un bloque HTML que aparece en cada curso

************ El pequeno formulario es *******

<form action="obtener.php" method="get" name = "form_miembro">

<label> Justificacion de la solicitud de inscription </label><br />
<textarea style="width:308px;" name = "bd_inscripcion"> </textarea><br />

<Input type = "submit" value ="Enviar" />

</form>

**********************

Ahora bien, suponiendo que el usuario se llama Rodrigo y el curso donde esta navegando actualmente es "matematicas I"; deseo que el archivo obtener.php me de dicho nombre del usuario, el id y nombre del curso donde esta posicionado.

He probado con esto:

******obtener.php********************

<?php

require_once('../config.php');
require_once('../course/lib.php');

global $USER;
global $COURSE;

$nom=$USER->username;
$razon = $_POST["bd_inscripcion"];

$cours = $course->id;
$coursn = $course->fullname;

 

echo "El usuario es : " . $nom . "</br>";

echo "El nombre del curso :  " . $coursn . "</br>";

echo "La razon del pedido " . $razon . "</br>";

?> 

*********************

El resultado: Obtengo el nombre del usuario y la variable razon pero lo que no obtengo es el nombre del curso.

Alguien mas experimentado podria darme una mano por favor?

 

Muchas gracias

 

Carlos Ramirez

Promedio de valoraciones: -
En respuesta a Carlos Ramirez

Re: Como obtener el nombre y id del curso actual

de David Hernández -

Hola Carlos,

Adjunto un script que, espero, te pueda ayudar en algo.

Está diseñado para correr desde la raíz de Moodle.

Saludos

En respuesta a David Hernández

Re: Como obtener el nombre y id del curso actual

de Carlos Ramirez -

Hola:

Gracias por la respuesta, he analizado tu script y en la esencia contiene la misma logica que mi codigo. En la raiz de moodle corre pero el desafio es obtener el id y el nombre del curso al nivel de un bloque que esta al interior de ese curso.  Por ejemplo si un usuario navega al interior del curso "Historia I" yo debo encontrar la manera de guardar el nombre "Historia I" dentro de una variable que yo utilizo dentro de un bloque HTML

Alguien me podria dar una pista de como hacer ello?

Gracias de antemano

Carlos Ramirez

 

 

En respuesta a Carlos Ramirez

Re: Como obtener el nombre y id del curso actual

de Carlos Ramirez -

Hola:

Por obtener el id del curso dentro del bloque debo ver temas como "web service" "get_course" o similiares?

Por favor alguien podria orientarme si estoy en el buen camino o por donde debo buscar en todo caso?

No les pido la solucion pero al menos una orientacion de donde buscar pues llevo ya 2 dias en esta busqueda sin resultado positivo

 

Gracias

Carlos Ramirez

 

En respuesta a Carlos Ramirez

Re: Como obtener el nombre y id del curso actual

de Laura Guirao -

Una vez has llamado a las variables globales $USER y $COURSE, es bien sencillo:

$USER->id  te da el id del usuario

$COURSE->fullname  te da el nombre completo del curso

En respuesta a Laura Guirao

Re: Como obtener el nombre y id del curso actual

de Carlos Ramirez -

Gracias Laura por la respuesta.

Si tienes razon no es complicado salvo que no sé porque la variable global $course no funciona cuando se la llama dentro de un bloque (en mi caso html) y $course-.id no retorna nada; es precisamente en ello donde solicito la ayuda

Alguien puede orientarme por favor?

 

Gracias

Carlos

 

En respuesta a Carlos Ramirez

Re: Como obtener el nombre y id del curso actual

de David Hernández -

Hola Carlos,

Creo que estamos hablando ya de muchas cosas y nos estamos perdiendo.

En este sentido, me gustaría que puntualizáramos lo siguiente:

1) Estás creando un formulario y necesitas que los alumnos lo llenen. Cuando éstos lo envían, necesitas captar el nombre de la persona y el curso, pero usando las variables de la propia plataforma. ¿Es esto correcto?

2) ¿Dónde está el formulario?

3) Parece que en un bloque. ¿A qué le llamas bloque?

¿Has creado un plugin y colocas el bloque correspondiente en los cursos?

¿Estás usando un bloque HTML (el que trae Moodle por default) y colocando ahí código PHP?

4) ¿Estás usando una página Web creada por ti, pero que debe aparecer como "incorporada" en la plataforma?

5) ¿Podrías colocar una imagen de cómo se ve tu formulario dentro de la plataforma?

Saludos

En respuesta a David Hernández

Re: Como obtener el nombre y id del curso actual

de Carlos Ramirez -

Primero gracias por tu tiempo.

Si es un pequeno formulario que coloco dentro del bloque HTML (block_html) que moodle tiene por defecto.  Este bloque aparece en cada curso de la plataforma moodle 2.6

********

El formulario de 5 lineas es un simple textarea donde el usuario entra un texto. Es este:

<form action="obtener.php" method="get" name = "form_miembro">
<label> Justificacion de la solicitud de inscription </label><br />
<textarea style="width:308px;" name = "bd_inscripcion"> </textarea><br />

<Input type = "submit" value ="Enviar" />

</form>

*******

Al hacer submit el formulario llama el archivo obtener.php. Es dicho archivo obtener.php que debe obtener el nombre de usuario y el id del curso.

El nombre de usuario lo obtengo con la variable global $user->username pero cuando intento hacer lo mismo con $course->id no entengo nada (es alli donde deseo vuestra ayuda)

 

<?php

require_once('../config.php');
require_once('../course/lib.php');

global $USER;
global $COURSE;

$nom=$USER->username;
$razon = $_POST["bd_inscripcion"];

$cours = $course->id;
$coursn = $course->fullname;

 

echo "El usuario es : " . $nom . "</br>";

echo "El nombre del curso :  " . $coursn . "</br>";

echo "La razon del pedido " . $razon . "</br>";

?>

 

Gracias por tu ayuda

En respuesta a Carlos Ramirez

Re: Como obtener el nombre y id del curso actual

de Laura Guirao -

La variable global es en mayúscula, y luego siempre tienes que llamarla igual, si no lo haces no te mostrará el valor. En los bloques y módulos que yo he hecho no tengo problemas en que me devuelva estos valores. Ten en cuenta que php es case-sensitive y $COURSE y $course no son por tanto la misma variable. Fíjate que en $USER si la estás llamado en mayúsculas.

En respuesta a Laura Guirao

Re: Como obtener el nombre y id del curso actual

de Gerard A. -

Hola, recién he instalado moodle 2.6 y tengo poca experiencia en moodle, y estaba intentando crear una página php, para recoger una serie de datos.

Mi problema es que no quiero que esta sea accesible des de fuera, es decir, que solo accedan los alumnos del curso en cuestión. Para evitar este problema he puesto el archivo dentro de "moodledata"->"repository" y aquí dentro una carpeta con la web.

Me encuentro que al linkarlo dentro de moodle, me muestra el código de la web sin interpretar el código. ¿Alguna sugerencia?

Disculpad si este mensaje no va aquí, pero al hablar de archivos php, quizá me podeis ayudar.

En respuesta a Laura Guirao

Re: Como obtener el nombre y id del curso actual

de 180tic SAS - Harvert Vanegas -

Gracias Laura

Se que ha pasado tiempo, pero, estaba cometiendo justo el mismo error, ahora se que debo escribir $COURSE en mayúscula siempre. 

¿Sabes donde puedo encontrar más documentación para diseñar un formato de curso o un bloque?

De nuevo muchas gracias.

En respuesta a 180tic SAS - Harvert Vanegas

Re: Como obtener el nombre y id del curso actual

de Jhon Elvis Cadenillas -
COMO SOLUCIONASTES EL ERROR; ME PUEDES PASAR TU CODIGO DE  MOSTRAR EL ID Y NOMBRE DEL CURSO, YA QUE DE MI SIEMPRE SALE ID: 1 Y NOMBRE EL DE LA PAGINA DEL AULA VIRTUAL
En respuesta a Jhon Elvis Cadenillas

Re: Como obtener el nombre y id del curso actual

de Tulix Velásquez -


Si te aparece el id 1 y el nombre del sitio, todo esta bien, solo significa que no has entrado en un curso especifico, y te muestra la información del curso base que es el mismo sitio

En respuesta a Tulix Velásquez

Re: Como obtener el nombre y id del curso actual

de Jhon Elvis Cadenillas -

PERO ESTOY DENTRO DEL CURSO http://localhost/mipagina/course/view.php?id=2

global $USER;

global $COURSE;

echo '<p>El usuario es: '.$USER->firstname.' '.$USER->lastname;'</p>';

   echo '<p>CORREO: '.$USER->email.'</p>';

   echo '<p>El curso es: '.$COURSE->fullname.'</p>';

   echo '<p>El ID curso es: '.$COURSE->id.'</p>';

me muestra el usuario, el correo, y el curso no, solo me sale el nombre de la pagina general, como lo hago para que aparezca el nombre del curso?

En respuesta a Jhon Elvis Cadenillas

Re: Como obtener el nombre y id del curso actual

de Tulix Velásquez -
prueba usando minuscula



solo agrega 

echo $course->fullname;


no agreges variables globales

En respuesta a Tulix Velásquez

Re: Como obtener el nombre y id del curso actual

de Jhon Elvis Cadenillas -
no me reconoce con minúsculas me sale en blanco.

require_once(dirname(__FILE__) . '/config.php');

require_once(dirname(__FILE__) . '/course/lib.php');

   echo '<p>El curso es: '.$course->fullname.'</p>';

   echo '<p>El ID curso es: '.$course->id.'</p>';

me sale en blanco, y estoy dentro de un curso e intentado en varios cursos, pero nada, he aplicado este código para ver que me arroja.

echo '<pre>'; print_r($course); echo '</pre>'; 

cuando pongo en minúsculas no me arroja nada, pero cuando lo coloco en mayúsculas, me sale esto:

stdClass Object
(
    [id] => 1
    [category] => 0
    [sortorder] => 1
    [fullname] => MIPAGINA
    [shortname] => MIPAGINA
    [idnumber] => 
    [summary] => 
    [summaryformat] => 0
    [format] => site
    [showgrades] => 1
    [newsitems] => 3
    [startdate] => 0
    [enddate] => 0
    [marker] => 0
    [maxbytes] => 0
    [legacyfiles] => 0
    [showreports] => 0
    [visible] => 1
    [visibleold] => 1
    [groupmode] => 0
    [groupmodeforce] => 0
    [defaultgroupingid] => 0
    [lang] => 
    [calendartype] => 
    [theme] => 
    [timecreated] => 1491620922
    [timemodified] => 1495164160
    [requested] => 0
    [enablecompletion] => 0
    [completionnotify] => 0
    [cacherev] => 1495566629
)
Sabes a que se debe?, LA VERSION DE MOODLE QUE USO ES 3.2.2+ (Build: 20170316)
En respuesta a Jhon Elvis Cadenillas

Re: Como obtener el nombre y id del curso actual

de Tulix Velásquez -


te comento que hice una prueba, en la carpeta moodle/course/view.php al final , antes del outout agregue las lineas de código y me lo muestra en la pagina del curso, mi versión Moodle 3.2.3 (Build: 20170508)



En respuesta a Carlos Ramirez

Re: Como obtener el nombre y id del curso actual

de Jhon Elvis Cadenillas -

AMIGO ME PUEDES DECIR COMO LO SOLUCIONASTES, YO INTENTA CON MAYUSCULA Y MINUSCULAS Y NADA.

En respuesta a Jhon Elvis Cadenillas

Re: Como obtener el nombre y id del curso actual

de cheperobert Alas -

Hola a todos,

Todo se basa en el id del modulo pasado en la URL, que es el ID cuando creas una actividad, este se guarda en la tabla <prefijo>_course_modules.

Pues bien con este valor pasado ya lo puedes recupera varios datos, del curso.

Por ejemplo, tomando el view.php del modulo label como ejemplo

require_once("../../config.php");

$id = optional_param('id',0,PARAM_INT);    // Course Module ID, or
$l = optional_param('l',0,PARAM_INT);     // Label ID

if ($id) {
    $PAGE->set_url('/mod/label/index.php', array('id'=>$id));
    if (! $cm = get_coursemodule_from_id('label', $id)) {
        print_error('invalidcoursemodule');
    }

    if (! $course = $DB->get_record("course", array("id"=>$cm->course))) {
        print_error('coursemisconf');
    }

    if (! $label = $DB->get_record("label", array("id"=>$cm->instance))) {
        print_error('invalidcoursemodule');
    }

......

Observa:

La función "optional_param", lo que hace es recogerte el id pasado, cuando presionaste en el recurso creado, es un simple $_GET['id']

$cm = get_coursemodule_from_id('label', $id)

Obtienes varios datos para el modulo "label" incluyendo $cm->course (Que si no me equivoco el id del curso).

Y con esto puedes hacer una consulta a la tabla de cursos y obtener todo lo que necesitas.

$course = $DB->get_record("course", array("id"=>$cm->course))


Espero te sirva la información.