Posts made by Valery Fremaux

Attention à la distinction entre les rôles "système" et les rôle locaux dans les cours.
Attribuer un rôle d'enseignant par l'administration (Rôle système) attribue la qualité d'enseignant dans TOUS les cours de Moodle.

Pour ne désigner que les enseignants d'UN cours, il faut le faire à partir de l'espace cours. Benoit a bien précisé le bloc "Administration du cours", mais je me permets d'insister sur "du cours".

Merci Benoit.
Tu peux tout à fait faire un clone de ce répertoire et modifier le fichier config.php en conséquence.

Ce qui est sûr, c'est que l'installation de Moodle met un certain nombre de trucs au démarrage dans Moodle data (le répertoire user, sessions, et le répertoire du cours de niveau SITE). En faisant la copie, du sépare la gestion des deux moodles en gardant la situation actuelle pour les deux.

Nigel, basically, here is a typical case :

here is more or less the sequence I have :

// PREPARING

$userhost = get_field('mnet_host', 'wwwroot', 'id', $USER->mnethostid);
$rpcclient = new mnet_xmlrpc_client();
$rpcclient->set_method('blocks/file_manager/rpclib.php/file_manager_rpc_addlink');
$rpcclient->add_param($USER->username, 'string');
$rpcclient->add_param($userhost, 'string');
$rpcclient->add_param($CFG->wwwroot, 'string');
// fixes an XML-RPC transcoding issue...
$rpcclient->add_param(html_entity_decode(utf8_decode($linkname)), 'string');
$rpcclient->add_param($what, 'string');

$mnet_host = new mnet_peer();
$mnet_host->set_wwwroot($userhost);

// EXECUTING

if (!$rpcclient->send($mnet_host)){
if (debugging()){
print_object($rpcclient);
}
error(get_string('failed', 'file_manager').'<br/>'.implode("<br/>\n", $rpcclient->error));
}
print_object(json_decode($rpcclient->response));

(yes, I use jsoning the transmitted message as I noticed objet/array consistency issues when sendign complex structure directly. json_encoding makes structure being safe across tranport.)

the issue is marked as red : without the utf8_decode, the $linkname content, when using accent letters such in "Découvrir Pairform@nce" is retrieved with \uXXX encoded sequences at the other end, as an ISO escaped expression of UTF sequences. This is quite odd indeed, but I noticed that already when retrieving a remote course list through MNET remote enrollement : course names using UTF8 escapes come also backencoded.

Hope it helps you...
Code to add to /mnet/xmlrpc/server.php

in mnet_server_dispatch :

 ////////////////////////////////////// STRICT BLOCKS/*
} elseif ($callstack[0] == 'blocks') {
 list($base, $block, $filename, $functionname) = $callstack;
 $includefile = '/blocks/'.$block.'/rpclib.php';
 $response = mnet_server_invoke_method($includefile, $functionname, $method, $payload);
 $response = mnet_server_prepare_response($response);
 echo $response;
}

As an additional routing case §478

in /admin/mnet/adminlib.php : two insert points.

in mnet_get_functions()

 // PATCH handle RPC calls in blocks
} elseif ('blocks' == $type) {
 $docname = 'rpclib.php';
 $relname = '/blocks/'.$parentname.'/'.$docname;
 $filename = $CFG->dirroot.$relname;
 if (file_exists($filename)) include_once $filename;
 $mnet_publishes = $parentname.'_mnet_publishes';
 if (function_exists($mnet_publishes)) {
 (array)$publishes = $mnet_publishes();
 }
// \PATCH handle RPC calls in blocks
as second $type test case

in upgrade_RPC_functions()

// PATCH handle RPC in blocks
 $basedir = $CFG->dirroot.'/blocks';
 if (file_exists($basedir) && filetype($basedir) == 'dir') {
 $dirhandle = opendir($basedir);
 while (false !== ($dir = readdir($dirhandle))) {
 $firstchar = substr($dir, 0, 1);
 if ($firstchar == '.' or $dir == 'CVS' or $dir == '_vti_cnf') {
 continue;
 }
 if (filetype($basedir .'/'. $dir) != 'dir') {
 continue;
 }
 mnet_get_functions('blocks', $dir);
 }
 }
// \PATCH handle RPC in blocks

as last case (at the end)

Note that none of the two latter are really usefull if you do not envisage to publish external RPC enabled functions to trusted XML-RPC hosts. I didn't even test those two adds, as first works. RPC parent attribute must be set to "blocks" and the RPC path should say : "blocks/blockname/rpclib.php/function_name"

Cheers.