Manipulación base de datos Moodle 2.8.7

Manipulación base de datos Moodle 2.8.7

de Jaxon Julián Muñoz Avendaño -
Número de respuestas: 16

Hola, estoy trabajando en una aplicación que toma información de una base de datos en Oracle mediante el Eloquent de Laravel, ahora está información debo inyectarla en la base de datos de mi instalación de Moodle 2.8.7, con el fin de que se creen cursos, categorias, subcategorias y matricular participantes.


Ahora mi pregunta es, ¿Cuál es la mejor manera aprovechar las APIS de Moodle para manipular la base de datos de forma dinámica?, ¿qué APIS de Moodle tienen las funciones y demás para realizar funciones del CRUD en su base de datos?. 

Promedio de valoraciones: -
En respuesta a Jaxon Julián Muñoz Avendaño

Re: Manipulación base de datos Moodle 2.8.7

de Jair Edson Revilla Arroyo -

Hola Jaxon,

No es buena práctica manipular la base de datos para crear cursos, crear categorías/subcategorías o matricular usuarios.


La mejor forma de pasar la información es por webservices, en esta ruta encontrarás la documentación por si quieres crear servicios con un plugin personalizado:

 https://docs.moodle.org/dev/Web_services_API 


Ahora, Moodle también tiene funciones comunes, que según veo es la que necesitas, aquí tienes la documentación:

https://docs.moodle.org/dev/Web_service_API_functions


Una vez tengas el conocimiento de como funcionan estas funciones, debes primero configurar tu Moodle(habilitar los servicios web, habilitar el tipo de servicio que utilizas, crear un usuario para los servicios, crear un rol con los permisos necesarios, habilitar la identificación de Webservices,crear el token de acceso, etc), para ayudarte busqué un tutorial por internet de como configurar tu moodle, aquí te lo paso.

http://johnny1402.blogspot.pe/2014/02/moodle-con-web-services.html


Más que todo debes apegarte a estas buenas prácticas pues así tu información viajará más segura.


Con esto ya te volverás un Capo en Webservices de Moodle, ten en cuenta que esos webservices son bien robustos, yo hace un mes integré Peoplesfot con Moodle con ayuda de esos webservices.


Espero haberte ayudado,

Saludos,



En respuesta a Jair Edson Revilla Arroyo

Re: Manipulación base de datos Moodle 2.8.7

de Adolfo Juárez Briones -

Saludos Jair


Pretendo hacer lo mismo la integración de PeopleSoft con Moodle, espero pueda consultarte sobre el tema ya que lo tienes funcionando.

Que versión de Peoplesoft estas manejando??


Gracias 

En respuesta a Jair Edson Revilla Arroyo

Re: Manipulación base de datos Moodle 2.8.7

de Jaxon Julián Muñoz Avendaño -
He leído y tengo una duda más, la aplicación que realizo será usada por un solo administrador para la creación de los cursos, aún así es viable trabajar con web service?, también quisiera saber si las APIS 

en https://docs.moodle.org/dev/Web_service_API_functions están disponibles para trabajar una conexión directa? y por último que tan viable es este método teniendo en cuenta el origen de mis datos?

En respuesta a Jaxon Julián Muñoz Avendaño

Re: Manipulación base de datos Moodle 2.8.7

de Jair Edson Revilla Arroyo -

Es viable pues Desde tu aplicativo debes mandar la información.

Las funciones pueden ser llamadas desde cualquier aplicativo pero para eso se genera un token, Moodle lo autogenera.


En lo que se refiere a la seguridad ya depende a tu política de cambio de Token pues como dije arriba el token se autogenera desde Moodle, puedes volver a generarlo cuantas veces quieras.

En respuesta a Jair Edson Revilla Arroyo

Re: Manipulación base de datos Moodle 2.8.7

de yeisson david giraldo -

me encontre una memoria con informacion sobre la plataforma moodle la propuesta y la encuenta se realizo en el cauca a quien le puedo enviar la informacion que tengo solo estos nombres estan relacionados: robinson tamayo y beatriz giraldo

le agradezco me diga en un corto sms al correo ydavidgggiraldo@gmail.com si la informacion es de utilidad o si conoce a quien le puedo entregar la informacion o si la informacion no le es de utilidad

gracias

En respuesta a Jair Edson Revilla Arroyo

Re: Manipulación base de datos Moodle 2.8.7

de Jaxon Julián Muñoz Avendaño -

Hola, he estado trabajando con la API de Moodle con los servicios de Web Service pero no doy con la manera de consultar todos los usuarios con rol de estudiante y todos los de rol de docente, ya puedo consultar cursos, programas y demás pero no docentes y estudiantes, ya que estoy obteniendo todos los usuarios sin distinción.


<?php


$token = '702b7a2bef9f7af0bd05d67a9b131ba7';

$domainname = 'http://190.60.95.21/gavi3.0/moodle';

$functionname = 'core_user_get_users';

$restformat = 'json'; //Puede ser xml modificar linea 21


$criteria1 = new stdClass();

$criteria1->key = 'roleid';//Traer usuarios por rol

$criteria1->value = '5';//Rols: 3 editingteacher, 4 teacher, 5 student


$criteria = array($criteria1);

$params = array('criteria' => $criteria);



/// REST CALL

header('Content-Type: text/plain');

$serverurl = $domainname . '/webservice/rest/server.php'. '?wstoken=' . $token . '&wsfunction='.$functionname;

require_once('./curl.php');

$curl = new curl;

$restformat = ($restformat == 'json')?'&moodlewsrestformat=' . $restformat:'';

try {

$resp = $curl->post($serverurl . $restformat, $params);

} catch (Exception $e) {

    print_r($e);

}

if (isset($resp)) {

$resp=json_decode($resp);

foreach($resp->users as $usr)

echo "<br><br>".$usr->username;

}


Cómo puedo obtener solo estudiantes y solo docentes?

En respuesta a Jaxon Julián Muñoz Avendaño

Re: Manipulación base de datos Moodle 2.8.7

de Jair Edson Revilla Arroyo -

 Hola Jaxon,

Puedes probar con este servicio: core_enrol_get_enrolled_users

Búscalo en la documentación de los servicios, si no cumple con tus requerimientos ya sería mejor idea crear un plugin custom de Webservices.


Saludos,

En respuesta a Jair Edson Revilla Arroyo

Re: Manipulación base de datos Moodle 2.8.7

de Jaxon Julián Muñoz Avendaño -

Muchas gracias Jair, trabaja perfecto, porque me trae el roleid en la la respuesta y puedo separarlos con un simple if en mi código.

En respuesta a Jaxon Julián Muñoz Avendaño

Re: Manipulación base de datos Moodle 2.8.7

de Jair Edson Revilla Arroyo -

No hay problema,

un gusto ayudarte.

En respuesta a Jair Edson Revilla Arroyo

Re: Manipulación base de datos Moodle 2.8.7

de Jaxon Julián Muñoz Avendaño -

Hola, sabes si core_user_create_users, tiene alguna limitante en la cantidad de objetos que le puedo pasar por parámetro a la vez?, es que le envío un array users con 33000+ usuarios que debo inscribir como estudiantes y me crea solo una parte.

Gracias de antemano por la respuesta

En respuesta a Jaxon Julián Muñoz Avendaño

Re: Manipulación base de datos Moodle 2.8.7

de Jair Edson Revilla Arroyo -

si, 50 usuarios por llamada si mal no recuerdo, es más que todo por una seguridad de moodle,

si es tu primera carga los  más de 30 mil usuarios podrías hacerlo en varias llamadas.

En respuesta a Jair Edson Revilla Arroyo

Re: Manipulación base de datos Moodle 2.8.7

de Jaxon Julián Muñoz Avendaño -

Gracias por tan pronta respuesta, ya lo solucione con preguntando por la cantidad recorrida antes del envio por parámetro, como dato para quien le sirva el tope en la versión 2.8.7 que es la que manejo es de 200, es decir que cuando se le dice:

public static function crearUsuarios($users){


        $token = session("tokenws");

        $domainname = session("ws");

        $functionname = 'core_user_create_users';

        $restformat = 'json'; 


        $params = array('users' => $users);

         /// REST CALL

        $serverurl = $domainname . '/webservice/rest/server.php'. '?wstoken=' . $token . '&wsfunction='.$functionname;

        $curl = new curl;

        $restformat = ($restformat == 'json')?'&moodlewsrestformat=' . $restformat:'';

        try {

        $resp = $curl->post($serverurl . $restformat, $params);

        } catch (Exception $e) {

        }

        if (isset($resp)) {

            return $resp;

        }

    }


en la linea de $params = array('users' => $users);, siendo users un array de objetos tipo stdClass, el tamaño máximo para ese arreglo es de 200 en esa versión por si a alguien más adelante le sirve el dato.

En respuesta a Jair Edson Revilla Arroyo

Re: Manipulación base de datos Moodle 2.8.7

de Jaxon Julián Muñoz Avendaño -

Buenas tardes, cómo podría consultar los cursos creados en mi instancia de Moodle por categoría, es decir si tengo la categoría "FCBI" y dentro 200 cursos, ¿Cómo consultarlos sin traer los demás?, esto con el fin de crear una especie de árbol en la aplicación que manipula mi instancia en Moodle.

En respuesta a Jaxon Julián Muñoz Avendaño

Re: Manipulación base de datos Moodle 2.8.7

de Jair Edson Revilla Arroyo -

Hola Jaxon,

me temo que esa funcionalidad no lo tiene Moodle por defecto, pero tienes la opción de crear un plugin de webservice que te devuelva eso, yo tengo varias funciones similares, guíate de la documentación,


https://docs.moodle.org/dev/Web_services_API


si tienes alguna otra duda te puedo ayudar con gusto. sonrisa


Saludos,