I wish to upload a number of users to a custom role which I have created in our 1.9 system, however, I have only seen instructions regarding uploading to type 1, 2 or 3 (student, teacher, non-editing teacher). I assume this custom role will have a type number associated with, however, how do I know what that would be, or, will the system not support the upload of user to a custom role?
Thanks for any input.
ACNM, Manager, Centre for Flexible Learning Delivery
It's me again You can use the role id of any role, including roles that you have created. In the example below, I'm assigning the Student role (roleid 5) to John Smith in the "Features" course. You can find the role id of any role by going to Site administration -> Users -> Permissions -> Define roles and letting your mouse hover over any one of the roles (see the roleid in the URI).
username,password,firstname,lastname,email, role1, course1
jsmith, demo, John, Smith, firstname.lastname@example.org, 5, Features
Thanks John. So in my case, where I have created 2 new roles, Account Manager and CanAddToCourse for the Education Advisor position, how would the upload file look then, as I need to allocate the 2 roles to the person.
you'll just have to insert one line per role, so, if i expand the example, it could be something like this :
username,password,firstname,lastname,, role1, course1
jsmith, demo, John, Smith, email@example.com, 8, Features
jsmith, demo, John, Smith, firstname.lastname@example.org, 9, Features
If the 2 roles are in the same course
If I don't want to assign them to any course on import, can I just leave the last column off? eg:
And secondly, if these guys already exists in the system, will this file only do an update of the role and nothing else?
Did you ever get an answer to this? I cannot find a way of uploading users and assigning them a system level role, i.e. not course level. Did you find out how to do that? I have tried putting different field names in my CSV (e.g. tried roleid).
Does anyone else know what to put in the CSV file against a user so that we also assign them a site level role?
There is a management role which has overarching views of all courses, so we assigned them at site level rather than at each course level. Using the bulk upload I was looking for how I assign them to the specific role we have set up for them. i couldn't find the actual field code to use ... I can do this at other levels but not site level.
OK, I understand now - this is similar to our School (course category) role assignment where those involved with that school are allowed to view all courses within that category.
In answer to your question - AFAIK site level role association ( Administration ► Users ► Permissions ► Assign system roles ) can not be done via csv. If you follow the usual csv upload template specifying the courseid as '1' or the shortname of the site it simply associates that users to the Front Page role ( Administration ► Front Page ► Front Page roles ) rather than the system role.
I would assign them manually, I hope you don't have too many! Another thing to think about is that non-Administrator system roles are displayed in each course's Participants page. When you assign the users you can click the 'hidden' checkbox so only those with the View hidden role assignments moodle/role:viewhiddenassigns permission (usually the Teacher type roles) can see them but they will 'crowd' the participants list.
I hope this helps
Yes manually assign to system role seems to be the answer - and thanks for reminding me about the 'hidden' option. I had not thought about that.
Your help much appreciated!
In keeping with the custon roles topic, I am trying in Moodle 2, to manage what students do outside a course. For example I want to control for all students how they Manage Files on own private file area. I can prohibit this in the student profile but this is only for within courses.
My understanding is I need to create a System Role for students with this feature prohibited, and then add all students to this role. However there seems to be no way to add all students in bulk to a system role, it needs to be done on an individual basis.
Have I understood this correctly or is there an easier way of doing this?
Has this issue been solved by someone? Is it possible to add the uploaded users to a system role?
In my situation: we are uploading lists of about 12/15 people each time so we are looking for:
1) a possibility to label or to keep this users separated by the other students (so we can have an easy overview of them)
2) quick solution for multiple users and not manually add each of them by a system role.
I was thinking about adding them at the "front page course" and create a role inside it, what do you think about this solution?
None with suggestions for this?
I suspect that if you assign front page role it will not restrict the users in all the ways you might want, e.g. you cannot disable user profile or password editing this way. I am not sure why the csv import does not allow system role assignment; it should. I think a backend hack (running some SQL against the database) may provide a solution, if you have some way of distinguishing reliably between the users you want in each role. I will have a look....
Could you not use cohorts for this? If all you need is to separate the group of student / enrolments then cohorts should work
You can't. The thing is that system roles are not designed to have a lot of people assigned to them. Can you not just adjust the student role and the authenticated user role to get the desired effect?
The only way that I can think of to mass add users to a system role would be to do it directly in the database.
From Moodle's documentation -
- If you really feel your Moodle needs to have teachers or students assigned in the system context, go to the teacher/student role in Administration > Site administration > Users > Permissions > Define roles and check the "system" box. Then search for and allow the capability moodle/course:view
I would look into creating a new system role inheriting permissions from an existing role and then modifying the CSV Upload script to read for an additional column which has the System role ID (the one I just created) and then calling a function like assign_role_to_user.
Possibly. I am not sure what the OP intends to do but if it's assigning special roles, I am guessing neither profile fields nor cohorts would be the right answer.
Wow, thanks to all for your answers!
I think it is a common problem that you cannot assign system roles through the csv file.
However for my issue (more labeling than assign capabilities to the uploaded users) could work well the cohort option. I though that as for the system roles, also the cohorts were course related.
I don't need to label the users in a course level and we like that our teachers enroll their students themselves. As administrator I only create the new users with the uploading procedure, that's why I was looking to the possibility to give a system role (without capabilities) to the new users.
Hope it is clear.
Cohorts can be site wide as per the documentation https://docs.moodle.org/28/en/Cohorts
However I am not sure how you would assign capabilities to a certain cohort since cohorts have nothing to do with capabilities. That said I remember there being an earlier debate with regards to assigning Site Wide roles to specific cohorts based on MDL-36951.
Just wanted to add -
I went through the issue I mentioned earlier and if you follow through the discussion, there is a link to this plugin https://moodle.org/plugins/view.php?plugin=local_cohortrole . Would using Cohorts in conjunction with this plugin resolve your issue?
Great Stephen, I think this it not my need (because cohorts on the csv file to upload are site wide cohorts and I needed this kind of "labeling/grouping system") but all of you that answered to my post are interested in this. I guess this is a common cr for the developer.
And many thanks also to Ravi for the plugin, indeed a smart solution.