diff --git a/db/install.xml b/db/install.xml index e86976cc904b82882d3b2dcdca3bbee450d46a51..94c069949f9ea3959e33510f338e7509a2ffb4cb 100644 --- a/db/install.xml +++ b/db/install.xml @@ -1,19 +1,20 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<XMLDB PATH="blocks/mahara_iena/db" VERSION="20180710" COMMENT="XMLDB file for Moodle blocks/mahara_iena" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="../../../lib/xmldb/xmldb.xsd" -> - <TABLES> - <TABLE NAME="block_mahara_iena" COMMENT="Table du block mahara_iena"> - <FIELDS> - <FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="true"/> - <FIELD NAME="course" TYPE="int" LENGTH="8" NOTNULL="true" DEFAULT="0" SEQUENCE="false"/> - <FIELD NAME="mahara_group_id" TYPE="int" LENGTH="8" NOTNULL="true" DEFAULT="0" SEQUENCE="false"/> - <FIELD NAME="moodle_group_id" TYPE="int" LENGTH="8" NOTNULL="true" DEFAULT="0" SEQUENCE="false"/> - </FIELDS> - <KEYS> - <KEY NAME="primary" TYPE="primary" FIELDS="id"/> - </KEYS> - </TABLE> - </TABLES> -</XMLDB> +<?xml version="1.0" encoding="UTF-8" ?> +<XMLDB PATH="blocks/mahara_iena/db" VERSION="20230306" COMMENT="XMLDB file for Moodle blocks/mahara_iena" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="../../../lib/xmldb/xmldb.xsd" +> + <TABLES> + <TABLE NAME="block_mahara_iena" COMMENT="Table du block mahara_iena"> + <FIELDS> + <FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="true"/> + <FIELD NAME="course" TYPE="int" LENGTH="8" NOTNULL="true" DEFAULT="0" SEQUENCE="false"/> + <FIELD NAME="mahara_group_id" TYPE="int" LENGTH="8" NOTNULL="true" DEFAULT="0" SEQUENCE="false"/> + <FIELD NAME="moodle_group_id" TYPE="int" LENGTH="8" NOTNULL="true" DEFAULT="0" SEQUENCE="false"/> + <FIELD NAME="active" TYPE="int" LENGTH="4" NOTNULL="true" DEFAULT="1" SEQUENCE="false"/> + </FIELDS> + <KEYS> + <KEY NAME="primary" TYPE="primary" FIELDS="id"/> + </KEYS> + </TABLE> + </TABLES> +</XMLDB> \ No newline at end of file diff --git a/db/upgrade.php b/db/upgrade.php new file mode 100644 index 0000000000000000000000000000000000000000..6aa68733d7de1166112d8583e9ad83583160af05 --- /dev/null +++ b/db/upgrade.php @@ -0,0 +1,25 @@ +<?php + + + +function xmldb_block_mahara_iena_upgrade($oldversion) { + global $CFG, $DB; + $dbman = $DB->get_manager(); + $result = TRUE; + + if ($oldversion < 2023030201) { + // Define field active to be added to block_mahara_iena. + $table = new xmldb_table('block_mahara_iena'); + $field = new xmldb_field('active', XMLDB_TYPE_INTEGER, '4', null, XMLDB_NOTNULL, null, '1'); + + // Conditionally launch add field enrollment. + if (!$dbman->field_exists($table, $field)) { + $dbman->add_field($table, $field); + } + upgrade_block_savepoint(true, 2023030201, 'mahara_iena'); + } + + return $result; +} + +?> \ No newline at end of file diff --git a/entity/block_mahara_iena_connexion.php b/entity/block_mahara_iena_connexion.php index cc6c74924af4c7920b54d3dec538cbd74bff80ac..38f6e9ef419d16d194392d1bf2c0cb54020848a9 100644 --- a/entity/block_mahara_iena_connexion.php +++ b/entity/block_mahara_iena_connexion.php @@ -324,6 +324,7 @@ class block_mahara_iena_connexion * @param $mo_group_id : le groupe moodle à créer dans mahara avec au moins les clefs id et le name qui sera utilisé pour savoir sur quel cours moodle se baser pour créer le groupe mahara * @return bool: erreurs ou pas */ + public function ensure_user_is_mahara_group_member_new($mo_user, $ma_group_id, $mo_group_id) { global $COURSE, $CFG, $DB; @@ -394,6 +395,26 @@ class block_mahara_iena_connexion } } + /** + * Archive un groupe Mahara pour la fin d'année : change les droits des anciens étudiants pour les mettre en lecture seule et permet de recréer des groupes Mahara correspondants aux groupes Arche + * @param [type] $maharaGroupId [description] + * @param [type] $courseId [description] + * @return [type] [description] + */ + public function archiveMaharaGroup($maharaGroupId, $courseId){ + return true; + } + + /** + * Archive des groupes Mahara pour la fin d'année : change les droits des anciens étudiants pour les mettre en lecture seule et permet de recréer des groupes Mahara correspondants aux groupes Arche + * @param [type] $maharaGroupsId [description] + * @param [type] $courseId [description] + * @return [type] [description] + */ + public function archiveMaharaGroups($maharaGroupsId, $courseId){ + return true; + } + } diff --git a/mahara_iena_manage.php b/mahara_iena_manage.php index c970e8af29d8ab721d9dfe6474921ce5f7adf55f..766882bc776b667cf7b3dc276afe00ce0a142768 100644 --- a/mahara_iena_manage.php +++ b/mahara_iena_manage.php @@ -17,8 +17,8 @@ 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; + header("Location: {$_SERVER['HTTP_REFERER']}"); + exit; } $page_title = "Gestion des groupes liés à ce cours sur " . $CFG->mahara_alias; @@ -36,58 +36,123 @@ $mo_ma_groups = $DB->get_records_sql('SELECT * FROM {block_mahara_iena} WHERE co /* Tous les groupes moodle. */ $course_groups = groups_get_all_groups($COURSE->id); /* Table d'affichage des informations. */ +$archived_groups=[]; +$course_group=[]; +$mahara_groups=[]; + + +foreach ($mo_ma_groups as $mo_ma_group) { + //Si le moodle_group_id=0 c'est une espace de cours unique + if($mo_ma_group->moodle_group_id ==0){ + //Si le groupe est archivé on l'ajoute au tableau correspondant + if($mo_ma_group->active==0){ + array_push($archived_groups, $mo_ma_group); + } + else{ + $course_group=$mo_ma_group; + } + + + } + //Si le moodle_group_id != 0 c'est un groupe associé à un groupe Mahara + else if(isset($course_groups[$mo_ma_group->moodle_group_id])) { + //Si le groupe est archivé on l'ajoute au tableau correspondant + if($mo_ma_group->active==0){ + array_push($archived_groups, $mo_ma_group); + } + else{ + $course_groups[$mo_ma_group->moodle_group_id]->mahara_group_id=$mo_ma_group->mahara_group_id; + } + } +} +//On va répartir les groupes dans leur onglet respectif : groupe unique (moodle_group_id 0), groupes liés (id du groupe moodle) et groupes archivés (active->0) +/*foreach ($course_groups as $group) { + $group->name=groups_get_group_name($group->id); + $group->url=$CFG->wwwroot.'/group/group.php?courseid='.$COURSE->id.'&id='.$group->id; + $group->url_members=$CFG->wwwroot.'/group/group.php?courseid='.$COURSE->id.'&id='.$group->id; + + if($group->active==0){ + array_push($archived_groups, $group); + } + else{*/ + + /* Détermine si le groupe moodle est lié à un groupe mahara. */ + /*$group->mahara_group_id = false; + foreach ($mo_ma_groups as $mo_ma_group) { + if($mo_ma_group->moodle_group_id ==0){ + $course_group=$mo_ma_group->mahara_group_id; + } + else ( $mo_ma_group->moodle_group_id == $group->id ) { + $group->mahara_group_id = $mo_ma_group->mahara_group_id; + break; + } + } + /* Si le groupe moodle est lié à un groupe mahara. */ + /* Récupération sur mahara des infos de groupe. */ + /*if ( $group->mahara_group_id ) { + + $params = array ( + 'groups' => + array ( + 0 => + array ( + 'id' => $group->mahara_group_id + ) + ) + ); + $mahara_group = $connexion->getMaharaGroups($params); + + //ON LAISSE CA DE COTE POUR LE MOMENT + /* USER membre du groupe mahara ? */ + /*$group->is_ma_group_member = false; + foreach ($mahara_group[0]->members as $ma_group_member) { + if ( $ma_group_member->username == $USER->username ) { + $group->is_ma_group_member = true; + } + } + + /* Inscription ou désinscription du groupe mahara du USER. */ + /*if ( $group->is_ma_group_member ) { + $group->url_link=$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; + $group->mahara_group_name=$mahara_group[0]->name; + + }*/ +/* } + } +}*/ + + +$tab = optional_param('t', 1, PARAM_INT); +$tabs = []; +$tab1_title="Espace Compact unique"; +$tab2_title="Espaces Compact par groupes"; +$tab3_title="Groupes archivés"; +$url="http://localhost/moodle/blocks/mahara_iena/mahara_iena_manage.php?courseid=7#tab-content"; +$tabs[] = new tabobject(1, new moodle_url($url, ['t'=>1]), $tab1_title); +$tabs[] = new tabobject(2, new moodle_url($url, ['t'=>2]), $tab2_title); +$tabs[] = new tabobject(3, new moodle_url($url, ['t'=>3]), $tab3_title); -foreach ($course_groups as $group) { - $group->name=groups_get_group_name($group->id); - $group->url=$CFG->wwwroot.'/group/group.php?courseid='.$COURSE->id.'&id='.$group->id; - $group->url_members=$CFG->wwwroot.'/group/group.php?courseid='.$COURSE->id.'&id='.$group->id; - - /* Détermine si le groupe moodle est lié à un groupe mahara. */ - $group->mahara_group_id = false; - foreach ($mo_ma_groups as $mo_ma_group) { - if ( $mo_ma_group->moodle_group_id == $group->id ) { - $group->mahara_group_id = $mo_ma_group->mahara_group_id; - break; - } - } - /* Si le groupe moodle est lié à un groupe mahara. */ - if ( $group->mahara_group_id ) { - /* Récupération sur mahara des infos de groupe. */ - $params = array ( - 'groups' => - array ( - 0 => - array ( - 'id' => $group->mahara_group_id - ) - ) - ); - $mahara_group = $connexion->getMaharaGroups($params); - /* USER membre du groupe mahara ? */ - $group->is_ma_group_member = false; - foreach ($mahara_group[0]->members as $ma_group_member) { - if ( $ma_group_member->username == $USER->username ) { - $group->is_ma_group_member = true; - } - } - /* Inscription ou désinscription du groupe mahara du USER. */ - if ( $group->is_ma_group_member ) { - $group->url_link=$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; - $group->mahara_group_name=$mahara_group[0]->name; - - } - } -} - $data=array(); $data['mahara_alias']=$CFG->mahara_alias; $data['page_title']=$page_title; -$data['course_groups']=array_values($course_groups); + $renderer = $PAGE->get_renderer('block_mahara_iena'); -$renderer->get_manage_groups($data); +$renderer->get_header_manage_groups($data); +echo $OUTPUT->tabtree($tabs, $tab); +if ($tab == 1) { + $data['course_groups']=array_values($course_groups); + $renderer->get_manage_groups($data); +} else if($tab == 2){ + // Show data for course group + $data['course_group']=$course_group; + $renderer->get_manage_group($data); +} else{ + $data['archived_groups']=$archived_groups; + $renderer->get_archived_groups($data); +} echo $OUTPUT->footer(); diff --git a/renderer.php b/renderer.php index 5a84e229c2073e744ca7dd31942ef333d70d8d0b..e5478907ce3f05d06712e73c43b96babc0b3ed4f 100644 --- a/renderer.php +++ b/renderer.php @@ -7,5 +7,15 @@ class block_mahara_iena_renderer extends plugin_renderer_base { function get_manage_groups($data){ echo $this->render_from_template('block_mahara_iena/manage_groups', $data); } + function get_header_manage_groups($data){ + echo $this->render_from_template('block_mahara_iena/header_manage_groups', $data); + } + + function get_manage_group($data){ + echo $this->render_from_template('block_mahara_iena/manage_course_group', $data); + } + function get_archived_groups($data){ + echo $this->render_from_template('block_mahara_iena/manage_archived_groups', $data); + } } diff --git a/templates/header_manage_groups.mustache b/templates/header_manage_groups.mustache new file mode 100644 index 0000000000000000000000000000000000000000..b1ced3af827b955db35376b65afe10078d02c685 --- /dev/null +++ b/templates/header_manage_groups.mustache @@ -0,0 +1,20 @@ +<div> +<h2>{{page_title}}</h2> +<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> + + +<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>{{mahara_alias}}</em>. </p> +<ul><li>Normalement, les groupes de <em>{{mahara_alias}}</em>.</li> +<li>Vous pouvez vous inscrire / désinscrire vous-même des groupes de ce cours et des groupes liés sur <em>{{mahara_alias}}</em>. Si vous n'êtes pas inscrit dans un groupe du cours mais inscrit dans le groupe correspondant sur <em>{{mahara_alias}}</em>, nous ne verrez pas apparaître ce groupe dans le bloc de liens du cours. </li></ul></p></div> + + +</div> + diff --git a/templates/manage_archived_groups.mustache b/templates/manage_archived_groups.mustache new file mode 100644 index 0000000000000000000000000000000000000000..8d82475f759e02343849fc5dc191d1cd517eaa8d --- /dev/null +++ b/templates/manage_archived_groups.mustache @@ -0,0 +1,4 @@ +<div id="tab-content"> +Hello c'est pour les groupes archivés +</div> + diff --git a/templates/manage_course_group.mustache b/templates/manage_course_group.mustache new file mode 100644 index 0000000000000000000000000000000000000000..f7c475abfc5ef64c5cebc3efd94508adcbb492b7 --- /dev/null +++ b/templates/manage_course_group.mustache @@ -0,0 +1,4 @@ +<div id="tab-content"> +Hello c'est pour le groupe unique du cours +</div> + diff --git a/templates/manage_groups.mustache b/templates/manage_groups.mustache index fec176177190c0b03302cf589f4d35de8a7153ba..fd1b0c2be4741ab4e7380965e5b75eab0fcf8eb3 100644 --- a/templates/manage_groups.mustache +++ b/templates/manage_groups.mustache @@ -1,21 +1,4 @@ -<div> -<h2>{{page_title}}</h2> -<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> - - -<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>{{mahara_alias}}</em>. </p> -<ul><li>Normalement, les groupes de <em>{{mahara_alias}}</em>.</li> -<li>Vous pouvez vous inscrire / désinscrire vous-même des groupes de ce cours et des groupes liés sur <em>{{mahara_alias}}</em>. Si vous n'êtes pas inscrit dans un groupe du cours mais inscrit dans le groupe correspondant sur <em>{{mahara_alias}}</em>, nous ne verrez pas apparaître ce groupe dans le bloc de liens du cours. </li></ul></p></div> - - +<div id="tab-content"> <table class='table table-iena'> <tr><th>Groupe du cours</th><th style='border-right: 2px solid #dee2e6;'>Inscription</th><th>Groupe sur {{mahara_alias}}</th><th>Inscription</th></tr> diff --git a/version.php b/version.php index 984d9e0e5a5468e17c477b7d698af0df25efd9d0..8cba85845efdc84ee9c68de2632dd97b4eec0af9 100644 --- a/version.php +++ b/version.php @@ -28,7 +28,7 @@ */ defined('MOODLE_INTERNAL') || die(); -$plugin->version = 2022062700; +$plugin->version = 2023030102; $plugin->requires = 2014051200; $plugin->component = 'block_mahara_iena'; $plugin->release = 'v1.0';