Klaus1: Aufruf in Include-File funktioniert, außerhalb nicht?

Beitrag lesen

Hallo,

ich habe selbstgebaute PHP-Funktionen, die ich per Include in meinem Script einbaue, um sie zu verwenden. Die Funktionen rufen wiederum die REST-API von Moodle auf.

Im konkreten Fall lasse ich mir alle verfügbaren Kurse auflisten.


function moodle_call_rest_api($url) {
	// Make the HTTP request
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, $url);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	$response = curl_exec($ch);
	curl_close($ch);
	return $response;
}

function moodle_get_courses() {
	global $token, $url;
	// Set up the request parameters
	$params = array(
		'wstoken' => $token,
		'wsfunction' => 'core_course_get_courses',
		'moodlewsrestformat' => 'json'
	);

	// Build the URL with the parameters
	$url .= '?' . http_build_query($params);
	$response = moodle_call_rest_api($url);

	// Process the response
	$data = json_decode($response, true);

	return $data;
}

Rufe ich die Funktion direkt innerhalb der Include-Datei auf, wird das gewünschte und erwartete Ergebnis zurückgeliefert.

$result = moodle_get_courses();
var_dump($result);

Rufe ich aber dieselbe Funktion in meinem Script auf, bekomme ich als Fehlermeldung aus Moodle "invalid parameters" zurück.

include ("moodle_functions.php");
$result = moodle_get_courses();
var_dump($result);
array(3) { 
	["exception"]=> string(27) "invalid_parameter_exception" 
	["errorcode"]=> string(16) "invalidparameter" 
	["message"]=> string(25) "Ungültiger Parameterwert" 
} 

Andere Funktionen aus dem Include-File lassen sich aber problemlos aufrufen. Die Funktionen sind alle identisch aufgebaut. Warum funktioniert "nur" diese nicht? Welchen Unterschied macht es, dass wo die Funktion aufgerufen wird? Der Include integriert doch den Inhalt, als wenn er im Script selber stehen würde, oder nicht?

LG Klaus