Valery Fremaux
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.
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.
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...
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 :
As an additional routing case §478
in /admin/mnet/adminlib.php : two insert points.
in mnet_get_functions()
in upgrade_RPC_functions()
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.
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 blocksas second $type test casein 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.