Your Moodle version

Activities: Group choice

mod_choicegroup
Maintained by Picture of Nicolas Dunand Nicolas Dunand
This module allows students to enrol themselves in a group within a course. The teacher can select which groups students can chose from and the maximum number of students allowed in each group.
954
1k
20

This module allows students to enrol themselves in a group within a course. The teacher can choose from which groups the students can chose, and the maximum number of students allowed in each group.

Depending on the activity settings, the students can view the members of each group before making a choise, and change their selected group until the deadline.

Potential privacy issues

Depending on settings chosen by a teacher, students may see what groups other users have chosen.

Screenshots

Screenshot #0

Contributors

Picture of Nicolas Dunand
Nicolas Dunand (Lead maintainer)
Please login to view contributors details and/or to contact them

Comments RSS

Show comments
  • Picture of Nicolas Dunand
    Wed, Aug 12, 2015, 8:13 PM
    Thanks. I'll be looking into it in the next couple of weeks, as I'll be releasing an update, officially supporting Moodle 2.9.
  • Picture of Michael Milette
    Sat, Nov 21, 2015, 2:12 AM
    Hi Nicolas, I would like to contribute some additional fixes to the plugin.

    1) Is the version on GitHub your most recent?

    2) When are you planning on releasing the next version?

    3) Would you prefer individual fixes or a rollup of multiple fixes?
  • Picture of Nicolas Dunand
    Mon, Nov 23, 2015, 5:36 PM
    Hi Michael, thanks for offering.

    1) yes
    2) when I've made sur it works flawlessly on Moodle 3.0
    3) individual fixes please
  • Picture of Adam Pawelczak
    Thu, Dec 10, 2015, 6:18 AM
    Hi Nicolas,
    We have experienced a problem when a lot of users (ca 250) tryed to use choicegroup simultaneously. Despite the limit of 15 users per group, up to 21 has successfully chosen the same groups.
    I have prepared a fix for it.
    To implement it, remove the rows 370 to 377 in lib.php and paste the code presented below at the same position.
    We have tested this on ca 450 students waiting "in starting blocks" to choose a thesis supervisor. 350 of them have done it in 5 minutes without any problem

    -------------------
    groups_add_member($selected_option->groupid, $userid);
    $groupmember_added = true;
    if ($choicegroup->limitanswers) {
    $groupmember = $DB->get_record('groups_members', array('groupid' => $selected_option->groupid, 'userid'=>$userid));
    $select_count = 'groupid='.$selected_option->groupid.' and id<='.$groupmember->id;
    $countanswers = $DB->count_records_select('groups_members', $select_count);
    $maxans = $choicegroup->maxanswers[$formanswer];
    if ($countanswers > $maxans) {
    groups_remove_member($selected_option->groupid, $userid);
    $groupmember_added = false;
    }
    }
    if ($groupmember_added) {
    ----------

    Best Regards
    Adam Pawełczak


  • Picture of Nicolas Dunand
    Thu, Dec 10, 2015, 10:01 PM
    Thanks Adam,

    I just made the required changes (and a couple others) and released an updated version of this plugin. The updated version now also supports officially Moodle 3.0.
  • Picture of Sara Cenni
    Wed, Feb 17, 2016, 6:42 PM
    Hi Nicolas,
    thank you very much for your plugin, it's very useful and we're using it in many courses with Moodle 2.8!
    For example, we are using Group choice in a course to reinforce math knowledge. The enrolled students in this course are currently about 1200, but their number will grow in the near future.

    Recently we noticed that the page of group selection has become slower.
    The debug shows that the page executes 2281 queries with 1157 enrolled users in a course.
    In a course with only 15 enrolled students the number of queries drops to 78.
    With a quick debug I found out that the slow-down seems due to the function “choicegroup_get_response_data” . Its “Big function, approx 6 SQL calls per user” comment helped me.

    The following function "choicegroup_get_user_answer" is called for each enrolled student to get the user response:
    foreach ($allresponses[0] as $user) {
    $currentanswers = choicegroup_get_user_answer($choicegroup, $user, true);

    I tried to write this piece of code, replacing part of code inside choicegroup_get_response_data and mixing some of the functions you're using in group choice, to retrieve the responses:
    if (is_numeric($choicegroup)) {
    $choicegroupid = $choicegroup;
    }
    else {
    $choicegroupid = $choicegroup->id;
    }
    $params1 = array('choicegroupid'=>$choicegroupid);
    list($esql, $params2) = get_enrolled_sql($ctx, 'mod/choicegroup:choose', 0);
    $params = array_merge($params1, $params2);
    $sql = 'SELECT gm.*
    FROM {user} u
    JOIN ('.$esql.') je ON je.id = u.id
    JOIN {groups_members} gm
    ON gm.userid = u.id AND groupid IN (
    SELECT groupid FROM {choicegroup_options} WHERE choicegroupid=:choicegroupid)
    WHERE u.deleted = 0 ORDER BY u.lastname ASC,u.firstname ASC';
    $usergroupmemberships = $DB->get_records_sql($sql, $params);

    In this way I think it would be faster.
    Changing this piece of code will obviously mean to change the part of the plugin that shows answers, but do you think that this change could work?

    Thanks in advance,
    Sara
  • Picture of Nicolas Dunand
    Wed, Feb 17, 2016, 9:03 PM
    Hi Sara,

    Thanks for your feedback and for offering a solution. I think your idea should work, but I'd need to run some more tests to see whether this would really address the problem.

    I just ran a quick test on a (not very powerful) development server, in a course with 2 groups and about 2000 students, without experiencing real performance problems. For further investigation on this topic, I opened a new issue on the bug tracker for this module ( https://github.com/ndunand/moodle-mod_choicegroup/issues/89 ). Feel free to add to it!

    Btw, I used Moodle's profiling system, which is great at tracking performance issues.
  • Picture of Sara Cenni
    Wed, Feb 17, 2016, 9:34 PM
    Hi Nicolas,
    thank you for your quick replay!!! I saw in the issue that you made a test for report.php file. Sorry, I wasn't clear. My test was about view.php. Report.php works well and it doesn't seem to have slowness problem.
    I don't know if it can be useful, but I'm using Oracle. Thank you also for the suggestion of the profiling system. Could you please link me a guide on how to use it?
    Thanks again for your feeback!
    Sara
  • Picture of Nicolas Dunand
    Wed, Feb 17, 2016, 9:41 PM
    Hi Sara,

    Thanks. Yes, you were clear, but in my case view.php was very fast, and only report.php showed a slight slowdown.

    As for the DB system, I guess it could make a difference, but I've never used Oracle really.

    To use profiling, you need to set up a few things. See https://docs.moodle.org/dev/Profiling_PHP#Profiling_a_page for a general introduction about profiling PHP in Moodle ( I use the XHProf method ) and https://docs.moodle.org/dev/Setting_up_xhprof_on_Moodle#Using_XHProf on how to set it up and use it.
  • Picture of Sara Cenni
    Fri, Feb 19, 2016, 7:47 PM
    Thank you Nicolas for the guide!
    I successfully installed the profiler and I made some test with Oracle using my test server, raising the number of the users enrolled in the course.
    These are my results.

    Date Execution time CPU time Function calls Memory used
    19 feb 2016, 11:43 7380,011 ms 1851,150 ms 457474 17715,602 KB (3647 users)
    18 feb 2016, 15:03 5584,185 ms 1380,543 ms 356292 16404,383 KB (2647 users)
    18 feb 2016, 14:55 3696,570 ms 971,823 ms 235291 13701,648 KB (1547 users)
    18 feb 2016, 14:41 860,882 ms 284,169 ms 61176 9357,852 KB (47 users)

    If you want I can post my mpr files in the github page (it seems I can’t post any files o images here)
  • Picture of Nicolas Dunand
    Mon, Feb 22, 2016, 1:52 PM
    Hi Sara,

    Thanks for getting back. This indeed shows some performance issues when the number of users grows. To see where the actual bottleneck is (which funciton/DB call), could you post the relevant call graph images in the issue tracker I linked to before?
  • Picture of Sara Cenni
    Wed, Feb 24, 2016, 10:08 PM
    Hi Nicolas,
    yesterday I posted my reports in this page: https://github.com/ndunand/moodle-mod_choicegroup/issues/89 .
    Sara
  • Picture of Nicolas Dunand
    Wed, Feb 24, 2016, 10:15 PM
    Thanks Sara, I just checked it out and replied.
  • Picture of German Valero
    Fri, Mar 11, 2016, 1:28 AM
    Hi Nicolas,
    Great plugin, can you please edit the details of the newest version and add Moodle branches 2.7, 2.8, 2.9 and 3.0 as supported Moodle branches.

    The information on this page for Release 1.4.4 (Build: 2014010100) lists support for only Moodle 2.2, 2.3, 2.4, 2.5, 2.6.

    Thanks.
  • Picture of Nicolas Dunand
    Fri, Mar 11, 2016, 4:58 PM
    Hi German,

    Thanks. The newest version – Release 1.9 for Moodle 2.7-3.0 (Build: 2015121000) – explicitly supports Moodle 2.7-3.0.

    I haven't gone back to check older versions for recent Moodle version support though.
1 2 3 4 5 6 7
Please login to post comments