From c184be93d7da121b5446fe2df53780c06842ee51 Mon Sep 17 00:00:00 2001 From: Thomas Fradet <t.fradet8@gmail.com> Date: Fri, 3 May 2019 18:40:03 +0200 Subject: [PATCH] beggin group management --- entity/block_mahara_iena_connexion.php | 9 +- mahara_iena_link.php | 7 +- mahara_iena_manage.php | 141 +++++++++++++++++++++++++ 3 files changed, 151 insertions(+), 6 deletions(-) create mode 100644 mahara_iena_manage.php diff --git a/entity/block_mahara_iena_connexion.php b/entity/block_mahara_iena_connexion.php index 5798180..f59fc7b 100644 --- a/entity/block_mahara_iena_connexion.php +++ b/entity/block_mahara_iena_connexion.php @@ -56,10 +56,11 @@ class block_mahara_iena_connexion return $this->base."?wstoken=".$this->wstoken."&wsfunction=".$function."&alt=json"; } - public function getMaharaGroups(){ - $getMaharaGroupes = "mahara_group_get_groups_by_id"; - $url = $this->create_url($getMaharaGroupes); - return json_decode($this->httpGet($url)); + public function getMaharaGroups($params){ + $params = http_build_query($params); + $mahara_group_get_groups_by_id = "mahara_group_get_groups_by_id"; + $url = $this->create_url($mahara_group_get_groups_by_id); + return json_decode($this->httpPost($params, $url)); } public function getMaharaUsers(){ diff --git a/mahara_iena_link.php b/mahara_iena_link.php index 6b491f3..59dba10 100644 --- a/mahara_iena_link.php +++ b/mahara_iena_link.php @@ -31,8 +31,11 @@ if ( $_GET['connect_mahara'] == true ) { //ensure user is member of it's mahara group : true if already or succeed // $all_right = $connexion->ensure_user_is_mahara_group_member($USER, $_GET['mahara_group']); - - $all_right = $connexion->ensure_user_is_mahara_group_member_new($USER, $_GET['mahara_group'], $_GET['moodle_group']); + if ( $_GET['connect_direct'] == true ) { + $all_right = true; + } else { + $all_right = $connexion->ensure_user_is_mahara_group_member_new($USER, $_GET['mahara_group'], $_GET['moodle_group']); + } if ( $all_right === false ) { $content .= '<div class="alert alert-danger">Erreur d\'ajout au groupe sur <a href="'.$CFG->base_mahara.'" target="_blank">'.$CFG->base_mahara.'</a>. </div>'; diff --git a/mahara_iena_manage.php b/mahara_iena_manage.php new file mode 100644 index 0000000..7fc21cf --- /dev/null +++ b/mahara_iena_manage.php @@ -0,0 +1,141 @@ +<?php + +require_once('../../config.php'); +require_once ('entity/block_mahara_iena_connexion.php'); + +global $COURSE, $DB, $USER, $CFG; + +$courseid = required_param('courseid', PARAM_INT); +$url = new moodle_url('/blocks/mahara_iena/mahara_iena_manage.php', array('courseid' => $courseid)); + +$PAGE->set_pagelayout('course'); +$PAGE->set_url($url); + +$course = $DB->get_record('course', array('id'=>$courseid), '*', MUST_EXIST); +require_login($course, false, NULL); + +$context = context_course::instance($courseid); + +if (!has_capability('moodle/course:update', $context, $USER->id)) { + header("Location: {$_SERVER['HTTP_REFERER']}"); + exit; +} + +$page_title = "Gestion des groupes liés à ce cours sur " . $CFG->mahara_alias; +$PAGE->set_title($page_title); +$PAGE->set_heading($OUTPUT->heading($COURSE->fullname, 2, 'headingblock header outline')); + +$connexion = new block_mahara_iena_connexion($CFG->wstoken, $CFG->base_mahara); + +echo $OUTPUT->header(); + +echo "<h2>$page_title</h2>"; + +echo "<style>button {cursor: pointer;} +.table-iena td {padding-bottom: 0.4rem;}</style>"; + +echo "<p>Fonctionnalités (enseignants uniquement) : </p> +<ul> +<li>Réserver cette interface à la gestion de cours multigroupes ?</li> +<li>S'inscrire ou se désinscrire d'un groupe Mahara</li> +<li class='text-muted'>Eventuellement : idem pour plusieurs à la fois (coches)</li> +<li>Briser le lien entre un groupe Mahara existant et un groupe Moodle</li> +<li>Lier un groupe Mahara existant à un groupe de ce cours Moodle</li> +<li>Supprimer un groupe Mahara lié à ce cours Moodle</li> +</ul>"; + +echo "<div class='alert alert-success'><h3>Information</h3><p>Vous pouvez ici gérer les groupes de ce cours et les groupes qui y sont liés sur <em>$CFG->mahara_alias</em>. </p> +<ul><li>Normalement, les groupes de <em>$CFG->mahara_alias</em> ne sont créés que lorsque le premier utilisateur du groupe correspondant dans ce cours clic sur le lien pour y accéder : ici, vous pouvez les créer à l'avance.</li> +<li>Vous pouvez vous inscrire / désinscrire vous-même des groupes de ce cours et des groupes liés sur <em>$CFG->mahara_alias</em>. Si vous n'êtes pas inscrit dans un groupe du cours mais inscrit dans le groupe correspondant sur <em>$CFG->mahara_alias</em>, nous ne verrez pas apparaître ce groupe dans le bloc de liens du cours. </li></ul></p></div>"; + +/* Liste des liaisons moodle mahara en base. */ +$mo_ma_groups = $DB->get_records_sql('SELECT * FROM {block_mahara_iena} WHERE course = ?', array($COURSE->id)); +/* Tous les groupes moodle. */ +$course_groups = groups_get_all_groups($COURSE->id); + +/* Table d'affichage des informations. */ +echo "<table class='table table-iena'>"; +echo "<tr><th>Groupe du cours</th><th style='border-right: 2px solid #dee2e6;'>Inscription</th><th>Groupe sur " . $CFG->mahara_alias . "</th><th>Inscription</th></tr>"; + +foreach ($course_groups as $group) { + echo "<tr>"; + /* Affichage des infos et lien vers les groupes moodle. */ + echo "<td><strong>" . groups_get_group_name($group->id) . "</strong> ($group->id) — <a href='$CFG->wwwroot/group/group.php?courseid=$COURSE->id&id=$group->id'>Paramètres</a>, <a href='$CFG->wwwroot/group/members.php?group=$group->id'>Membres</a></td>"; + echo "<td style='border-right: 2px solid #dee2e6;'><button class='btn-sm btn-warning'>Désinscription</button></td>"; + + /* Détermine si le groupe moodle est lié à un groupe mahara. */ + $mahara_group_id = false; + foreach ($mo_ma_groups as $mo_ma_group) { + if ( $mo_ma_group->moodle_group_id == $group->id ) { + $mahara_group_id = $mo_ma_group->mahara_group_id; + break; + } + } + /* Si le groupe moodle est lié à un groupe mahara. */ + if ( $mahara_group_id ) { + /* Récupération sur mahara des infos de groupe. */ + $params = array ( + 'groups' => + array ( + 0 => + array ( + 'id' => $mahara_group_id + ) + ) + ); + $mahara_group = $connexion->getMaharaGroups($params); + /* USER membre du groupe mahara ? */ + $is_ma_group_member = false; + foreach ($mahara_group[0]->members as $ma_group_member) { + if ( $ma_group_member->username == $USER->username ) { + $is_ma_group_member = true; + } + } + /* Inscription ou désinscription du groupe mahara du USER. */ + if ( $is_ma_group_member ) { + echo "<td><a target='_blank' href='".$CFG->wwwroot."/blocks/mahara_iena/mahara_iena_link.php?courseid=$COURSE->id&connect_direct=true&mahara_group=".$mahara_group[0]->id."'>".$mahara_group[0]->name."</a></td>"; + echo "<td><button class='btn-sm btn-warning'>Désinscription</button><br><a href='#' class='small' data-toggle='modal' data-target='#exampleModal'>Changer</a></td>"; + } else { + echo "<td>".$mahara_group[0]->name."</a></td>"; + echo "<td><button class='btn-sm btn-success'>Inscription</button><br><a href='#' class='small'>Changer</a></td>"; + } + } else { + /* Si groupe mahara n'existe pas : possibilité de le créer. */ + echo "<td><p class='text-muted'>Créer et s'inscrire dans ce groupe sur <em>$CFG->mahara_alias</em> ?</p></td>"; + echo "<td><button class='btn-sm btn-primary'>Créer et m'inscrire</button><br><a href='#' class='small'>Changer</a></td>"; + } + echo "</tr>"; +} +echo "</table>"; + +?> + +<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true"> + <div class="modal-dialog" role="document"> + <div class="modal-content"> + <div class="modal-header"> + <h5 class="modal-title" id="exampleModalLabel">Changer le groupe associé</h5> + <button type="button" class="close" data-dismiss="modal" aria-label="Close"> + <span aria-hidden="true">×</span> + </button> + </div> + <div class="modal-body"> + <p>Sélectionner un autre groupe <em><?php echo $CFG->mahara_alias; ?></em> à associer avec ce groupe du cours.</p> + <p>Vos groupes <em><?php echo $CFG->mahara_alias; ?></em> : </p> + <select name="" id="change-group-sel" style="width: 100%;"> + <option value="test">test</option> + <option value="test">test test test test test test test test t test test test test tesst test test test test test dhjieopa jdiep jdiuepaz huipref nuipad uipeaz</option> + </select> + </div> + <div class="modal-footer"> + <button type="button" class="btn btn-secondary" data-dismiss="modal">Annuler</button> + <button type="button" class="btn btn-primary">Valider</button> + </div> + </div> + </div> +</div> + +<?php + + +echo $OUTPUT->footer(); -- GitLab