LMSouq
moodle-core Open

PHP create User in moodle via Webservice

JA
Jan Raufelder
1 month ago
3 views
Problem Description
I want so connect an external website with a moodle-system. I've already set up the webService and created a token to get access. I've followed http://www.rumours.co.nz/manuals/using_moodle_web_services.htm set up but in contrast i wanted to realise the connection via REST as in https://github.com/moodlehq/sample-ws-clients/find/master My approach is to have a moodle class which will handle the data exchange. In first place i just wanted to try to create some new hard coded Users via the webService but it fails with the Moodle-Response: "invalidrecord Can not find data record in database table external_functions. " Which seems to me as if i the call was successfully but moodle has a problem to find the "core_user_create_users" function. I've checked the local moodle Database and in the table external_functions is an entry for "core_user_create_users" so i'm kind of confused where moodle doesn't know what to do. Thats my class: require_once (DOCUMENT_ROOT.'/tcm/api/moodle/curl.php'); class Moodle { private $token; private $domainName; // 'local.moodle.dev'; private $serverUrl; public function __construct($token, $domainName) { $this->token = $token; $this->domainName = $domainName; $this->serverUrl = $this->domainName . '/webservice/rest/server.php' . '?wstoken=' . $this->token; echo "initialize Service: $this->serverUrl </br>"; } public function createUser() { $functionName = 'core_user_create_users'; /// PARAMETERS - NEED TO BE CHANGED IF YOU CALL A DIFFERENT FUNCTION $user1 = new stdClass(); $user1->username = 'testusername1'; $user1->password = 'testpassword1'; $user1->firstname = 'testfirstname1'; $user1->lastname = 'testlastname1'; $user1->email = 'testemail1@moodle.com'; $user1->auth = 'manual'; $user1->idnumber = 'testidnumber1'; $user1->lang = 'en'; $user1->theme = 'standard'; $user1->timezone = '-12.5'; $user1->mailformat = 0; $user1->description = 'Hello World!'; $user1->city = 'testcity1'; $user1->country = 'au'; $preferencename1 = 'preference1'; $preferencename2 = 'preference2'; $user1->preferences = array( array('type' => $preferencename1, 'value' => 'preferencevalue1'), array('type' => $preferencename2, 'value' => 'preferencevalue2')...

AI-Generated Solution

Powered by LMSouq AI · GPT-4.1-mini

✓ Solution Ready
Analyzing problem and generating solution…
Was this solution helpful?
Back to Knowledge Base