diff --git a/block_mahara_iena.php b/block_mahara_iena.php index 265b64e516866229211a49f1f1ce63fb978af411..639e24cead1c5651cdba6558f607653d844d431b 100644 --- a/block_mahara_iena.php +++ b/block_mahara_iena.php @@ -60,11 +60,14 @@ class block_mahara_iena extends block_base // for teachers if (has_capability('moodle/course:update', $context = context_course::instance($COURSE->id), $USER->id)) { + // if block is not instanciated, propose du create mahara group(s) for this course if (count($result) == 0 && $is_mahara_user) { + // create one mahara group for the course $this->content->text .= '<a href="' . $CFG->wwwroot . '/blocks/mahara_iena/mahara_iena.php?courseid=' . $COURSE->id . '" class="btn btn-block btn-primary iena-btn-big">' . get_string('create_group', 'block_mahara_iena', $CFG->mahara_alias) . '</a><p class="text-muted">Créer un groupe dans '.$CFG->mahara_alias.'.</p>'; + // create one mahara group for each moodle group (need groups) $groups = groups_get_all_groups($COURSE->id); if ( $groups == null) { $this->content->text .= '<button type="button" class="btn btn-block btn-primary iena-btn-big" disabled >' . get_string('create_groups_groups', 'block_mahara_iena', $CFG->mahara_alias) . '</button><p class="text-muted text-warning">Créer un groupe dans '.$CFG->mahara_alias.' pour chaque groupe du cours. <strong>Les groupes doivent exister dans le cours.</strong></p>'; diff --git a/mahara_iena.php b/mahara_iena.php index 8c30e416a259d81baeb1ad4eef8d7e5b5601be87..488cbb508bc03994d62f1498554aaa663a8b83da 100644 --- a/mahara_iena.php +++ b/mahara_iena.php @@ -31,7 +31,7 @@ $course_ctx = context_course::instance($course->id); $students = get_enrolled_users($course_ctx); $usersTab = array(); -$maharaUsers = $connexion->getMaharaUsers(); + //Here we check by email, if the student have the same email into mahara and moodle he is add to group if (count($students) == 0) { @@ -39,22 +39,41 @@ if (count($students) == 0) { .get_string('err_no_stud', 'block_mahara_iena', $CFG->mahara_alias) ."</div>"; } else { - foreach ($maharaUsers->users as $muser) { - foreach ($students as $student) { - if ($student->email == $muser->email){ - $role = "member"; - //Each students is admin - if (has_capability('moodle/course:update', $context = context_course::instance($COURSE->id), $student->id)) { - $role = "admin"; - } - array_push($usersTab,array( - 'id' => $muser->id, - 'username' => $muser->username, - 'role' => $role, - )); - break; - } - } + + // Build user array to pass to mahara api for group inscription + // WARNING : not efficient with to much users in mahara databases + // $maharaUsers = $connexion->getMaharaUsers(); + // foreach ($maharaUsers->users as $muser) { + // foreach ($students as $student) { + // if ($student->email == $muser->email){ + // $role = "member"; + // // Each teacher will be mahara group admin + // if (has_capability('moodle/course:update', $context = context_course::instance($COURSE->id), $student->id)) { + // $role = "admin"; + // } + // array_push($usersTab,array( + // 'id' => $muser->id, + // 'username' => $muser->username, + // 'role' => $role, + // )); + // break; + // } + // } + // } + + // WARNING : don't try to subscribe every course user to the group with >1000 users in mahara. Juste teacher. Minus 1 user is required to create a group. + // get mahara user by mail (teacher) + $mahara_user = $connexion->get_mahara_user_by_mail($USER->email); + // if user is not a mahara user, there will be an error : it's not supposed to be because mahara account is checked before to have a button to go in this page but... but. + if ( !$mahara_user->error ) { + array_push($usersTab,array( + 'id' => $mahara_user[0]->id, + 'username' => $mahara_user[0]->username, + 'role' => "admin", + )); + } else { + echo "<p style='color: red;'>You must have a Mahara account to do that.</p>"; + die; } //All params used for mahara_group_create_groups her we can add/change some lines @@ -69,8 +88,7 @@ if (count($students) == 0) { 'request' => true, 'public' => false, 'institution' => $CFG->instution_mahara, - 'members' => - $usersTab + 'members' => $usersTab ) ) ); diff --git a/mahara_iena_groups.php b/mahara_iena_groups.php index d3d0b0a926f7faed1f4f83ba06102fcdf2fe7767..c0fb6cf0da15e75d8555c7af12f04a3f65cf2950 100644 --- a/mahara_iena_groups.php +++ b/mahara_iena_groups.php @@ -52,24 +52,39 @@ if (count($students) == 0) { foreach ($members as $member) { - $course_roles = get_user_roles($course_ctx, $member->id, false); - $role = "member"; - foreach ($course_roles as $course_role) { - if ($course_role->shortname == "teacher" || $course_role->shortname == "editingteacher") { - $role = "admin"; - break; - } - } - - foreach ($maharaUsers->users as $muser) { - if ($member->email == $muser->email){ - array_push($usersTab,array( - 'id' => $muser->id, - 'username' => $muser->username, - 'role' => $role, - )); - break; - } + // WARNING : not efficient with too big mahara user database (>1000) + // $course_roles = get_user_roles($course_ctx, $member->id, false); + // $role = "member"; + // foreach ($course_roles as $course_role) { + // if ($course_role->shortname == "teacher" || $course_role->shortname == "editingteacher") { + // $role = "admin"; + // break; + // } + // } + // foreach ($maharaUsers->users as $muser) { + // if ($member->email == $muser->email){ + // array_push($usersTab,array( + // 'id' => $muser->id, + // 'username' => $muser->username, + // 'role' => $role, + // )); + // break; + // } + // } + + // Subscribe only the teacher to the mahara group because of lake of efficiency with too big mahara user database (>1000) + // get mahara user by mail (teacher) + $mahara_user = $connexion->get_mahara_user_by_mail($USER->email); + // if user is not a mahara user, there will be an error : it's not supposed to be because mahara account is checked before to have a button to go in this page but... but. + if ( !$mahara_user->error ) { + array_push($usersTab,array( + 'id' => $mahara_user[0]->id, + 'username' => $mahara_user[0]->username, + 'role' => "admin", + )); + } else { + echo "<p style='color: red;'>You must have a Mahara account to do that.</p>"; + die; } } @@ -85,8 +100,7 @@ if (count($students) == 0) { 'request' => true, 'public' => false, 'institution' => $CFG->instution_mahara, - 'members' => - $usersTab + 'members' => $usersTab )); array_push($name_groups, array( @@ -98,7 +112,7 @@ if (count($students) == 0) { // var_dump($name_groups); // die; if ( count($mahara_groups) == 0 ) { - echo "<div class=\"alert alert-warning\" role=\"alert\"><p><strong>Erreur : tous les groupes du cours sont vides. </strong></p><p>Pour utiliser cette fonctionnalité, il faut au préalable créer des groupes dans le cours et y ajouter des étudiants ou des enseignants.</p></div>"; + echo "<div class=\"alert alert-warning\" role=\"alert\"><p><strong>Erreur : tous les groupes du cours sont vides. </strong></p><p>Pour utiliser cette fonctionnalité, il faut au préalable créer des groupes dans le cours et y ajouter des étudiants ou des enseignants. prout</p></div>"; } else { $params = array(