Comment obtenir contexid ?

Comment obtenir contexid ?

par stephane ngov,
Nombre de réponses : 4

Bonjour,

j'essaye automatiquement de faire une synchro entre le LDAP et la table

prod_role_assignement.

voici la requête qu'il faut executer pour enregister le rôle

 

$sql_assign = "INSERT INTO mdl_role_assignments (roleid,contextid,userid,component,itemid,timemodified,modifierid)

VALUES(".$roleid.",'??',".$M[s1].",'enrol_cohort','9','.$this->timestamp_now','4372').";

 

Il me manque le contextid , comment moodle fait pour le calculer.

Peut t'on retrouver ce contextid juste avec des requetes SQL

 

merci d'avance pour la réponse si vous avez une idée...

 

Moyenne des évaluations  -
En réponse à stephane ngov

Re: Comment obtenir contexid ?

par Dominique Bouillet,

Pouir trouver le contextid C associé à un cours, il faut partir de l'id I du cours et trouver l'entrée de la table mdl_context ayant comme instanceid cet id I et comme contextlevel la valeur "CONTEXT_COURSE" càd 50.

L'id de cette entrée correspond au contextid du cours utilisé dans la table mdl_role_assignments.

Si le contextid recherché n'est pas associé à un cours, il faut choisir le contextlevel correspondant  : CONTEXT_SYSTEM (10), CONTEXT_USER (30), CONTEXT_COURSECAT (40), CONTEXT_COURSE (50), CONTEXT_MODULE (70) ou CONTEXT_BLOCK (80)

En réponse à stephane ngov

Re: Comment obtenir contexid ?

par Jean FRUITET,

Il faut éviter d'aller chercher directement ces informations dans les tables mais plutôt utiliser l'une des fonctions de l'API Moodle à disposition (qui peuvent varier un peu selon la version de Moodle)

Dans un module particulier (par exemple $modulename='assignment' et connaissant le $courseid où cette activité devoir (assignment) est déclarée et le $moduleid (id de l'activité devoir dans la table mdl_assignment) on récupère des objets de la classe context.

// CONTEXTES dans un module particulier

// Récupérer le course_module
$cm = get_coursemodule_from_instance($modulename, $moduleid, $courseid);

// Récupérer le contexte utile
// Contexte au niveau du module
$context = get_context_instance(CONTEXT_MODULE, $cm->id);
// puis l'id du contexte
$contextid=$context->id;

That's all folks.

 

Moyenne des évaluations Utile (1)
En réponse à Jean FRUITET

Re: Comment obtenir contexid ?

par stephane ngov,

Merci beaucoup dominique sourire pour ces renseignement.

Dans la table mdl_user_enrollement,

lorsqu'on charge un étudiant dans une chorte qui est synchronisé

dans plusieurs cours, moodle génère un enroleid.

Comment je procède avec l'api ou pas pour avoir cette "enroleid"

dans mon cas il y en a 73, et je ne sais pas comment il les récupère.

Sans cette infor dans un cours , les étudiants ne sont pas synchronisé selon l'appartemence de la cohorte

 

 

        $enrolid = $this->bdd->query("SELECT DISTINCT enrolid FROM mdl_user_enrolments");
        while ($donnee = $enrolid->fetch()) {
            $this->enrolid[] = $donnee['enrolid'];
        }
        echo "<h6>nombre enrolid : " . count($this->enrolid) . "<h6>"; 

En réponse à stephane ngov

Re: Comment obtenir contexid ?

par stephane ngov,

c'est bon j'ai trouvé il faut aller dans table enrol et trouver cohorte avec le nméro du cours