<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://docs.moodle.org/dev/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Cmcqueen</id>
	<title>MoodleDocs - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://docs.moodle.org/dev/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Cmcqueen"/>
	<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/Special:Contributions/Cmcqueen"/>
	<updated>2026-04-12T09:48:30Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Student_Information_API&amp;diff=2611</id>
		<title>Student Information API</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Student_Information_API&amp;diff=2611"/>
		<updated>2008-02-24T11:44:42Z</updated>

		<summary type="html">&lt;p&gt;Cmcqueen: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Some standards:&lt;br /&gt;
* [http://www.pesc.org/ PESC - Postsecondary Electronic Standards Council]&lt;br /&gt;
* [http://www.sifinfo.org/sif-specification.asp SIF Specification]&lt;br /&gt;
*[[IMS Enterprise]]&lt;br /&gt;
&lt;br /&gt;
Some notes:&lt;br /&gt;
* In the UK the Becta has made a strategic case for SIF being adopted as the standard for interoperability between MIS systems, Learning Platforms (VLEs etc.) and other database systems that carry data for UK education. The UK SIF version 1.0 data model has been published and the next version 1.1 is available for review. See [http://uk.sifinfo.org/]&lt;br /&gt;
* In the UK the dominant Information Management system is SIMS.net from Capita. This has a restricted IMS web services profile to connect to. See [http://moodle.org/mod/forum/discuss.php?d=15012&amp;amp;parent=245946] Capita also have adopted the SIF data model and transport mechanism for their Partnership Exchange Server, a SIF Zone Integration Server which targets 14-19 diploma requirements. The diplomas will require MIS systems in secondary schools and sixth form colleges to have data interoperability for student information including attendance and assessment data.&lt;br /&gt;
&lt;br /&gt;
Things to pass out:&lt;br /&gt;
&lt;br /&gt;
* Grades&lt;br /&gt;
* Outcomes&lt;br /&gt;
* Calendar events&lt;br /&gt;
&lt;br /&gt;
[[Category:Student Information API]]&lt;/div&gt;</summary>
		<author><name>Cmcqueen</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Using_XMLDB&amp;diff=7749</id>
		<title>Using XMLDB</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Using_XMLDB&amp;diff=7749"/>
		<updated>2008-02-23T18:34:09Z</updated>

		<summary type="html">&lt;p&gt;Cmcqueen: /* What is XMLDB and how can it help you */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 1.7}}Note: This page is a work in progress. It is intended to help developers of third-party modules, and other plugins, to help them switch to XMLDB.&lt;br /&gt;
&lt;br /&gt;
==What is XMLDB and how can it help you==&lt;br /&gt;
&lt;br /&gt;
XMLDB stores the database definition in an XML format that can be used to install Moodle on any database. Everywhere in Moodle now uses XMLDB.&lt;br /&gt;
&lt;br /&gt;
In every module (or other plugin) folder, there is a &#039;&#039;db/&#039;&#039; folder where the database structure is stored. In the past, this used to contain separate files &#039;&#039;mysql.php&#039;&#039;, &#039;&#039;mysql.sql&#039;&#039;, etc. for different databases. It meant that you had to create different files for each database system. If there were more databases you wanted your module to be compatible with, you had to create more files. Switching to XMLDB means that you only have to create one file, and there is an editor to help you, so it saves you time.&lt;br /&gt;
&lt;br /&gt;
==Getting started==&lt;br /&gt;
&lt;br /&gt;
The XMLDB database definition is stored in the file &#039;&#039;db/install.xml&#039;&#039;. You can use a built-in XMLDB editor to create or edit any &#039;&#039;install.xml&#039;&#039; files. If you&#039;re using MySQL as your default database schemes. XMLDB editor&#039;s powerful tools allowing retrofit MySQL table to XMLDB format.&lt;br /&gt;
&lt;br /&gt;
The XMLDB editor is located in administration block, go to &#039;&#039;Miscellaneous &amp;gt; XMLDB editor&#039;&#039;. Find your module name. Initially you won&#039;t be able to click on &#039;&#039;Create&#039;&#039; link and also can&#039;t edit your module (If the &#039;&#039;Create&#039;&#039; link is clickable you can skip this step). Since you must make your module folder has write permission first (And if you haven&#039;t created &#039;&#039;db/&#039;&#039; folder in your module folder yet, create it now). In Linux operating system, &#039;&#039;chmod&#039;&#039; your &#039;&#039;/db&#039;&#039; folder to 777 solves this. Now you&#039;re ready to create your module&#039;s XMLDB files.&lt;br /&gt;
&lt;br /&gt;
Note that XMLDB editor is not a tool for creating your module, though it can help you with the database. It is a tool to manage XMLDB database file (think about phpmyadmin manages SQL database). You can create tables/fields/keys/indexes or export your existing MySQL tables to XMLDB.&lt;br /&gt;
&lt;br /&gt;
Another XMLDB&#039;s advantage is you can create table comments as you want. To describe it to other developer.&lt;br /&gt;
&lt;br /&gt;
XMLDB editor is really easy to work with. We strongly recommend you to play with it for a while and read [[XMLDB editor]] and  about XMLDB structure [[XMLDB defining an XML structure]].&lt;br /&gt;
&lt;br /&gt;
===Create &#039;&#039;install.xml&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
If you never create &#039;&#039;install.xml&#039;&#039; before (your &#039;&#039;db/&#039;&#039; doesn&#039;t have &#039;&#039;install.xml&#039;&#039;), click &#039;&#039;Create&#039;&#039; first. install.xml will store your database info for this module.&lt;br /&gt;
&lt;br /&gt;
===Start editing===&lt;br /&gt;
&lt;br /&gt;
To start editing &#039;&#039;install.xml&#039;&#039;, click &#039;&#039;Load&#039;&#039; and then &#039;&#039;Edit&#039;&#039;. You need to do this every time before editing any XMLDB file.  If this is your first time, there is a default table named like your module stored.&lt;br /&gt;
&lt;br /&gt;
===Create new table===&lt;br /&gt;
&lt;br /&gt;
# Go to &#039;&#039;New Table&#039;&#039;.&lt;br /&gt;
# Enter table name and comment, click &#039;&#039;change&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Add field in table===&lt;br /&gt;
&lt;br /&gt;
# Click &#039;&#039;Edit&#039;&#039; on your desired table.&lt;br /&gt;
# Click &#039;&#039;New Field&#039;&#039;, You can now edit field information like name, comment, type, length, etc. See [[XMLDB column types] for XMLDB column type comparing with other database system.&lt;br /&gt;
# When you&#039;re done, click &#039;&#039;Change&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Retrofit MySQL table to XMLDB===&lt;br /&gt;
&lt;br /&gt;
XMLDB editor can retrofit MySQL table to XMLDB. In other word, it can create XMLDB table from existing SQL. This is useful if your module database already using MySQL.&lt;br /&gt;
First, your module has to be installed. Then follow these steps:&lt;br /&gt;
&lt;br /&gt;
# Click &#039;&#039;New Table from MySQL&#039;&#039;&lt;br /&gt;
# In &#039;&#039;Create Table&#039;&#039; box, choose your table from MySQL database. In &#039;&#039;After Table&#039;&#039; choose where would you like to add this table to (It doesn&#039;t matter, just for arrangement). Click &#039;&#039;Create&#039;&#039;.&lt;br /&gt;
# Do it again until every table added, you are done!&lt;br /&gt;
&lt;br /&gt;
Note: Table name must contains only lowercase character, number, underscore and length must not exceed 28 characters. More info here: [[XMLDB defining an XML structure]]&lt;br /&gt;
&lt;br /&gt;
===Other operation===&lt;br /&gt;
&lt;br /&gt;
It&#039;s intuitive once you use it. There are visible links for editing, moving up or down and deleting.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[XMLDB editor]]&lt;br /&gt;
*[[XMLDB introduction]]&lt;br /&gt;
*[[XMLDB defining an XML structure]]&lt;br /&gt;
*[[XMLDB column types]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Using XMLDB]]&lt;br /&gt;
[[Category:XMLDB]]&lt;/div&gt;</summary>
		<author><name>Cmcqueen</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Student_Information_API&amp;diff=2610</id>
		<title>Student Information API</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Student_Information_API&amp;diff=2610"/>
		<updated>2008-01-26T15:02:04Z</updated>

		<summary type="html">&lt;p&gt;Cmcqueen: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Some standards:&lt;br /&gt;
* [http://www.pesc.org/ PESC - Postsecondary Electronic Standards Council]&lt;br /&gt;
* [http://www.sifinfo.org/sif-specification.asp SIF Specification]&lt;br /&gt;
*[[IMS Enterprise]]&lt;br /&gt;
&lt;br /&gt;
Some notes:&lt;br /&gt;
* In the UK the dominant Information Management system is SIMS.net from Capita. This has a restricted IMS web services profile to connect to. See [http://moodle.org/mod/forum/discuss.php?d=15012&amp;amp;parent=245946]&lt;br /&gt;
* In the UK the Becta has made a strategic case for SIF being adopted as the standard for interoperability between MIS systems and Learning Platforms (VLEs etc.). The UK SIF version 1.0 data model has been published. See [http://uk.sifinfo.org/]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Things to pass out:&lt;br /&gt;
&lt;br /&gt;
* Grades&lt;br /&gt;
* Outcomes&lt;br /&gt;
* Calendar events&lt;br /&gt;
&lt;br /&gt;
[[Category:Student Information API]]&lt;/div&gt;</summary>
		<author><name>Cmcqueen</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Student_Information_API&amp;diff=2609</id>
		<title>Student Information API</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Student_Information_API&amp;diff=2609"/>
		<updated>2008-01-26T15:01:31Z</updated>

		<summary type="html">&lt;p&gt;Cmcqueen: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Some standards:&lt;br /&gt;
* [http://www.pesc.org/ PESC - Postsecondary Electronic Standards Council]&lt;br /&gt;
* [http://www.sifinfo.org/sif-specification.asp SIF Specification]&lt;br /&gt;
*[[IMS Enterprise]]&lt;br /&gt;
&lt;br /&gt;
Some notes:&lt;br /&gt;
* In the UK the dominant Information Management system is SIMS.net from Capita. This has a restricted IMS web services profile to connect to. See [http://moodle.org/mod/forum/discuss.php?d=15012&amp;amp;parent=245946]&lt;br /&gt;
* In the UK the Becta has made a stregic case for SIF as the standard for interoperability across MIS systems and Learning Platforms (VLEs etc.). The UK SIF version 1.0 data model has been published. See [http://uk.sifinfo.org/]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Things to pass out:&lt;br /&gt;
&lt;br /&gt;
* Grades&lt;br /&gt;
* Outcomes&lt;br /&gt;
* Calendar events&lt;br /&gt;
&lt;br /&gt;
[[Category:Student Information API]]&lt;/div&gt;</summary>
		<author><name>Cmcqueen</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Student_Information_API&amp;diff=2606</id>
		<title>Student Information API</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Student_Information_API&amp;diff=2606"/>
		<updated>2006-10-27T21:25:29Z</updated>

		<summary type="html">&lt;p&gt;Cmcqueen: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Some standards:&lt;br /&gt;
* [http://www.pesc.org/ PESC - Postsecondary Electronic Standards Council]&lt;br /&gt;
* [http://www.sifinfo.org/sif-specification.asp SIF Specification]&lt;br /&gt;
*[[IMS Enterprise]]&lt;br /&gt;
&lt;br /&gt;
Some notes:&lt;br /&gt;
* In the UK the dominant Information Management system is SIMS.net from Capita. This has a restricted IMS web services profile to connect to. See [http://moodle.org/mod/forum/discuss.php?d=15012&amp;amp;parent=245946]&lt;br /&gt;
&lt;br /&gt;
Things to pass out:&lt;br /&gt;
&lt;br /&gt;
* Grades&lt;br /&gt;
* Outcomes&lt;br /&gt;
* Calendar events&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Future]]&lt;/div&gt;</summary>
		<author><name>Cmcqueen</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Grades&amp;diff=4361</id>
		<title>Grades</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Grades&amp;diff=4361"/>
		<updated>2006-08-05T08:50:51Z</updated>

		<summary type="html">&lt;p&gt;Cmcqueen: /* Other ideas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is to create a specification for the next generation of Moodle gradebook.  If you edit it, please try and keep modifications under the correct headings.&lt;br /&gt;
&lt;br /&gt;
==Centralising data==&lt;br /&gt;
&lt;br /&gt;
Currently (in all versions up to 1.6) Moodle uses a &amp;quot;pull&amp;quot; model for grade collection.  That is, at the time a user requests a view of the gradebook, each activity module is polled for grades and either returns grades or it doesn&#039;t.  These are then massaged into the gradebook view.&lt;br /&gt;
&lt;br /&gt;
Problems with this are bad performance and less flexibility.&lt;br /&gt;
&lt;br /&gt;
In the next version, the modules must &amp;quot;push&amp;quot; their grades to the central gradebook at the time grades are changed.   For example, if a student completes a quiz, the quiz module should call a central function such as grade_store() with courseid, userid, moduleid, column name, grade type and grade.   This data gets stored in a central table (like grades).   &lt;br /&gt;
&lt;br /&gt;
Modules can store grades internally as well if they want to (for efficiency and reports etc).   All storing of grades centrally should take place via the API function: modules must not manipulate the grades table directly.&lt;br /&gt;
&lt;br /&gt;
An option in the gradebook should allow grades to be retained even if the activity that generated it has been deleted.  If this is turned off, then when displaying the columns, a clean-up function should check the course format, and remove columns belonging to obsolete activities.&lt;br /&gt;
&lt;br /&gt;
For backward compatibility, a Moodle cron trigger should cause the gradebook to periodically look in activity modules for an old-style xxxx_grades() function, then call that function to extract and cache grades locally.&lt;br /&gt;
&lt;br /&gt;
==Additional columns==&lt;br /&gt;
&lt;br /&gt;
With a centralised table, it should be easier to add support for manual or ad-hoc calculation columns that are not connected to any activity table.&lt;br /&gt;
&lt;br /&gt;
For example, a final course grade column could be created that is a mathematical calculation based on other columns.   Syntax could be provided to make the column empty unless all the other columns contain a value of some kind (for that user).&lt;br /&gt;
&lt;br /&gt;
==Export API==&lt;br /&gt;
&lt;br /&gt;
A great need is to connect grades to external systems, such as Student Information Systems.&lt;br /&gt;
&lt;br /&gt;
A plugin system should be added that can export grades to external systems, either at the time grades are added or via cron.   The plugins take care of which data is chosen and where it goes.  &lt;br /&gt;
&lt;br /&gt;
==Other ideas==&lt;br /&gt;
There are multiple contributed addons that allow for grading of activities that do not take place within moodle. This is necessary to allow teachers to only use moodle&#039;s gradebook for grade entry. A modular grade import system would naturally follow.&lt;br /&gt;
&lt;br /&gt;
Graphing plug-in?&lt;br /&gt;
&lt;br /&gt;
So that data from the gradebook can create graphs/charts but also so people could easily extend the type of graph/charts available by writing extensions for the plug-in.&lt;br /&gt;
&lt;br /&gt;
Grading scheme plug-in interface?&lt;br /&gt;
&lt;br /&gt;
So that the dominant USA High School/College format can be changed to grading for other countries  and year groups. Schemes could be created by either programmers or maybe even a forms interface for teachers to create schemes and save them off for sharing between teachers and across courses.  Probably incorporating the scales used within it.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* Using Moodle [http://moodle.org/mod/forum/discuss.php?d=51107 New gradebook for Moodle] forum discussion&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Grades]]&lt;/div&gt;</summary>
		<author><name>Cmcqueen</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Roles&amp;diff=2994</id>
		<title>Roles</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Roles&amp;diff=2994"/>
		<updated>2006-07-22T18:31:13Z</updated>

		<summary type="html">&lt;p&gt;Cmcqueen: /* Librarian */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Roles and capabilities&#039;&#039;&#039; are planned to be included in Moodle 1.7. For now, we have some basic ideas of how to implement such a structure in Moodle.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Please note that none of the following is finalised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
By roles, we mean an identifier of the user&#039;s status, for example, teacher, student and forum moderator are examples of roles.&lt;br /&gt;
&lt;br /&gt;
A capability is a permission to access some particular Moodle feature. Capabilities are associated with roles. For example, &#039;&#039;mod/forum:replypost&#039;&#039; is a capability.&lt;br /&gt;
&lt;br /&gt;
==The existing system==&lt;br /&gt;
&lt;br /&gt;
Currently in Moodle, we have a fixed set of roles i.e. primary admin, admins, course creators, editing teachers, non-editing teachers, students, and guests. For each role, the capability or actions that they can performed are fixed. For example, the role student allows the user to submit an assignment, but doesn&#039;t allow the user to browse/edit other users&#039; work. By using this setup we limit ourselves to a rather rigid set of capabilities for each role. If we want, say a particular student or group to be able to mark assignments in a particular course, we can&#039;t do that without giving these users teacher privileges.&lt;br /&gt;
&lt;br /&gt;
==The new roles and capability system==&lt;br /&gt;
&lt;br /&gt;
The new system will allow authorized users to define an arbitrary number of roles. Each role can have a customizable set of capabilities in every context. A context can be the whole Moodle site, a course, or a module instance, e.g. quiz 5 in &#039;Introduction to Photography&#039;. An authorized user will be able to assign an arbitrary number of roles to each user. Since the capabilities in each role could be different, there could be conflict in capabilities. This is resolved by giving roles different &#039;priorities&#039;. For example, to prevent a naughty student from posting, one could assign him a &#039;naughty student&#039; role that does not allow him to post. This role should have a priority higher than that of a normal &#039;student&#039; role. &lt;br /&gt;
&lt;br /&gt;
To facilitate exceptional cases in roles and capabilities, we can use exception rules. For example, we can specify a rule saying that all students are able to mark/read other students&#039; assignment in this particular course. Note that such rules need to have a priority as well. The capability of a user, in any context is then resolved by finding the highest priority role/rule.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;A smooth upgrade will be provided with 1.7. The existing roles (admin, teacher, student, etc), and the exisiting capabilities will be retained. This is done by creating default roles at site/course levels, and assigning the current users to these roles accordingly. The default roles will have default capabilities associated with them, which pretty much is what we have  in 1.6. The whole process is automatic so there&#039;s nothing to worry about =). With no modifications, Moodle will operate exactly the same before and after the upgrade.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==The plan==&lt;br /&gt;
&lt;br /&gt;
There are a few major things that need to be done. Here&#039;s a list (in no particular order):&lt;br /&gt;
&lt;br /&gt;
#Identify permissions required for site/course/each module.&lt;br /&gt;
#Define the database structure for storing roles and capabilities.&lt;br /&gt;
#Recode the whole of Moodle, including all modules to support the new structure. Instead of using &amp;lt;code&amp;gt;isteacher()&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;isstudent()&amp;lt;/code&amp;gt; we should be using &amp;lt;code&amp;gt;has_capability($capability, $instanceid)&amp;lt;/code&amp;gt; etc. A new API for handling roles and capabilities will be implemented (accesslib.php).&lt;br /&gt;
#Add storage of capabilities for each module. Can be done either in a file, e.g. db/capability.xml, or as a sql file that gets installed to a central db whenever this module is installed. Either way, what do we do when we need to upgrade these capabilities? Some capabilities might need refining/splitting later on. How do we control the &#039;version&#039; of a capability?&lt;br /&gt;
#Consider interface issues, especially how to manage conflicting role/exception rules.&lt;br /&gt;
#Upon logging in, we should use a cache to store capability, down to module level. How should that be structured?&lt;br /&gt;
#Consider the impact on backup/restore.&lt;br /&gt;
#Upgrade path for current users. The user information in table user_coursecreators, user_admins, user_teachers, and user_students will most likely be migrated to the new roles and capabilities tables. The users will most likely be assigned default roles that comes with default capabilities (e.g. teachers, admins, students, etc). The old tables themselves could possibly be dropped at the end of the upgrade.&lt;br /&gt;
&lt;br /&gt;
==Capabilities==&lt;br /&gt;
&lt;br /&gt;
This is a comprehensive list of capabilities, well, in the making. It is important that capability names are unique. Please edit. Should we distinguish canedit and candelete?&lt;br /&gt;
&lt;br /&gt;
What about a canview capability? Like for choice, where a person is allowed to see the choice question but not participate in it? --[[User:N Hansen|N Hansen]] 19:29, 16 May 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
Certainly need a canview or cansee capability for parents as linked to their child&#039;s data/contributions.&lt;br /&gt;
&lt;br /&gt;
Do we need to add canview and cansearch logs at site/course/user/group level?&lt;br /&gt;
&lt;br /&gt;
I could use a canview at a course level, if I understand what that means exactly.--[[User:N Hansen|N Hansen]] 19:43, 12 June 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Core-level Capabilities===&lt;br /&gt;
&lt;br /&gt;
Moodle core capabilitie names start with &#039;moodle/&#039;. The capabilities for the Moodle core are defined in lib/db/access.php&lt;br /&gt;
Do we still keep student view? What is a student view?&lt;br /&gt;
&lt;br /&gt;
#moodle/site:config - applicable in admin/index.php and config.php (might break down later)&lt;br /&gt;
#moodle/site:manageblocks - adding/removing/editing blocks (site, course contexts only for now)&lt;br /&gt;
#moodle/site:backup - can create a course backup&lt;br /&gt;
#moodle/site:restore - can restore into this context&lt;br /&gt;
#moodle/site:import - can import other courses into this context&lt;br /&gt;
#moodle/blog:view - read blogs&lt;br /&gt;
#moodle/blog:create - write new blog posts&lt;br /&gt;
#moodle/blog:manageofficialtags - create/delete official blog tags that others can use&lt;br /&gt;
#moodle/blog:managepersonaltags - create/delete official blog tags that others can use&lt;br /&gt;
#moodle/blog:manageentries - edit/delete all blog entries&lt;br /&gt;
#moodle/course:create - create courses&lt;br /&gt;
#moodle/course:delete - create courses&lt;br /&gt;
#moodle/course:update - update course settings&lt;br /&gt;
#moodle/course:view - can use this to find participants&lt;br /&gt;
#moodle/course:viewparticipants - allows a user to view participant list&lt;br /&gt;
#moodle/course:viewscales - view scales (i.e. in a help window?)&lt;br /&gt;
#moodle/course:manageactivities - adding/removing/editing activities and resources (don&#039;t think it makes any sense to split these)&lt;br /&gt;
#moodle/course:managescales - add, delete, edit scales, move scales up and down&lt;br /&gt;
#moodle/course:managegroups - managing groups, add, edit, delete&lt;br /&gt;
#moodle/course:visibility - hide/show courses&lt;br /&gt;
#moodle/category:create - create category&lt;br /&gt;
#moodle/category:delete - create category&lt;br /&gt;
#moodle/category:update - update category settings&lt;br /&gt;
#moodle/category:visibility - hide/show categories&lt;br /&gt;
#moodle/user:create - create user&lt;br /&gt;
#moodle/user:delete - create user&lt;br /&gt;
#moodle/user:update - update user settings&lt;br /&gt;
#moodle/user:viewdetails - view personally-identifying user details (e.g. name, photo). This ties in with the &amp;quot;visitor&amp;quot; scenario described below.&lt;br /&gt;
#moodle/calendar:manageownentries - create/edit/delete &lt;br /&gt;
#moodle/calendar:manageentries - create/edit/delete&lt;br /&gt;
&lt;br /&gt;
===Module-level Capabilities===&lt;br /&gt;
The capabilities are cached into a database table when a module is installed or updated. Whenever the capability definitions are updated, the module version number should be bumped up so that the database table can be updated.&lt;br /&gt;
&lt;br /&gt;
The naming convention for capabilities that are specific to modules and blocks is &#039;mod/mod_name:capability&#039;. The module capabilities are defined in mod/mod_name/db/access.php.&lt;br /&gt;
&lt;br /&gt;
#Assignment&lt;br /&gt;
##mod/assignment:view- reading the assignment description&lt;br /&gt;
##mod/assignment:grade - grading, viewing of list of submitted assignments&lt;br /&gt;
#Chat&lt;br /&gt;
##mod/chat:chat - allows a user to participate in this chat&lt;br /&gt;
##mod/chat:readlog - allows a user to read past chat session logs&lt;br /&gt;
##mod/chat:deletelog - allows a user to delete past chat logs&lt;br /&gt;
#Choice&lt;br /&gt;
##mod/choice:choose - make a choice&lt;br /&gt;
##mod/choice:readresponses - read all responses&lt;br /&gt;
##mod/choice:deleteresponses - deletes all responses&lt;br /&gt;
##mod/choice:downloadresponses - download responses&lt;br /&gt;
#Database&lt;br /&gt;
##mod/data:readentry - reads other people&#039;s entry&lt;br /&gt;
##mod/data:writeentry - add / edit and delete (own) entries&lt;br /&gt;
##mod/data:managetemplates - add, delete, edit fields and templates&lt;br /&gt;
##mod/data:manageentries - edit/delete all entries&lt;br /&gt;
##mod/data:comment - comment&lt;br /&gt;
##mod/data:managecomments - edit/delete all comments&lt;br /&gt;
##mod/data:rate - rate an entry&lt;br /&gt;
##mod/data:approve - approves an entry&lt;br /&gt;
##mod/data:uploadentries - batch upload of entries&lt;br /&gt;
#Exercise&lt;br /&gt;
##mod/exercise:assess&lt;br /&gt;
#Forum&lt;br /&gt;
##mod/forum:viewforum&lt;br /&gt;
##mod/forum:viewdiscussion&lt;br /&gt;
##mod/forum:viewdiscussionsfromallgroups&lt;br /&gt;
##mod/forum:startdiscussion&lt;br /&gt;
##mod/forum:replypost&lt;br /&gt;
##mod/forum:viewrating&lt;br /&gt;
##mod/forum:rate&lt;br /&gt;
##mod/forum:attachments&lt;br /&gt;
##mod/forum:deleteownpost&lt;br /&gt;
##mod/forum:deleteanypost&lt;br /&gt;
##mod/forum:splitdiscussions&lt;br /&gt;
##mod/forum:movediscussions&lt;br /&gt;
##mod/forum:editanypost&lt;br /&gt;
#Glossary&lt;br /&gt;
##mod/glossary:view - read entries&lt;br /&gt;
##mod/glossary:write - add entries&lt;br /&gt;
##mod/glossary:manageentries - add, edit, delete entries&lt;br /&gt;
##mod/glossary:managecategories - create, delete, edit categories&lt;br /&gt;
##mod/glossary:comment - comment on an entry&lt;br /&gt;
##mod/glossary:managecomments - edit, delete comments&lt;br /&gt;
##mod/glossary:import - import glossaries&lt;br /&gt;
##mod/glossary:export - export glossaries&lt;br /&gt;
##mod/glossary:approve - approve glossaries&lt;br /&gt;
##mod/glossary:rate - rates glossary&lt;br /&gt;
##mod/glossary:readrate - view rating?&lt;br /&gt;
#Hotpot&lt;br /&gt;
##mod/hotpot:view&lt;br /&gt;
#Label&lt;br /&gt;
##none&lt;br /&gt;
#Lams&lt;br /&gt;
##TBD&lt;br /&gt;
#Lesson&lt;br /&gt;
##TBD&lt;br /&gt;
#Quiz&lt;br /&gt;
##TBD&lt;br /&gt;
#Resource&lt;br /&gt;
##mod/resource:view&lt;br /&gt;
#Scorm&lt;br /&gt;
##mod/scorm:view&lt;br /&gt;
##mod/scorm:viewgrades&lt;br /&gt;
#Survey&lt;br /&gt;
##mod/survey:download - downloads survery result&lt;br /&gt;
##mod/survey:participate - participate/ do survey&lt;br /&gt;
##mod/survey:readresponses - read all user&#039;s responese&lt;br /&gt;
#Wiki&lt;br /&gt;
##Waiting on new wiki&lt;br /&gt;
#Workshop&lt;br /&gt;
##Waiting on new Workshop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Questions==&lt;br /&gt;
I am adding question categories here because they seem to have been forgotten in the whole scheme of things since having been removed from the quiz module itself. I&#039;ve made a suggestion on how these could be handled in [http://www.moodle.org/bugs/bug.php?op=show&amp;amp;bugid=6118&amp;amp;pos= bug 6118].&lt;br /&gt;
&lt;br /&gt;
==Scenarios==&lt;br /&gt;
&lt;br /&gt;
This section is for brainstorming some example roles that we would like to support:&lt;br /&gt;
&lt;br /&gt;
===Student===&lt;br /&gt;
Has this one been missed?&lt;br /&gt;
&lt;br /&gt;
===Site Designers===&lt;br /&gt;
Is there a role for people involved in how the site looks but not full administrators? Thinking here of online control of themes rather than FTP theme uploading. But in either case they caneditlogos, caneditcss, candeditlevelatwhichthemeapplies.&lt;br /&gt;
&lt;br /&gt;
===Educational Authority Adviser===&lt;br /&gt;
Someone who would want to browse the site and may be asked to comment or contribute to particular discussions or developments in school. Access for this role would be controlled by the school in the case of school level moodles but may be different if there were to be a Local Authority wide Moodle.&lt;br /&gt;
&lt;br /&gt;
===Educational Inspector===&lt;br /&gt;
Someone who will visit the site to verify the school&#039;s self review that comments on home school relationships, extending the classroom etc. They may want to see summaries of usage and reports from surveys garnering parent and pupil views.&lt;br /&gt;
&lt;br /&gt;
===Second Marker / Moderator===&lt;br /&gt;
A teacher within ths site that has access to assignments and quizzes from another teacher&#039;s course for second marking purposes. This may need additional functionality adding to the assignment module so that two sets of grades/feedback can be given to one set of assignments.&lt;br /&gt;
&lt;br /&gt;
===Peer observer of teaching===&lt;br /&gt;
Many institutions encourage peer observation of teaching, to encourage reflection on practice. In online environments this will be similar to moderation or inspection. The peer observer would need to be able to experience the course &amp;quot;as a student&amp;quot;, but also to be able to view summaries of usage, transcripts of interactions (forums/surveys/polls etc), grades assigned (e.g. in assignments).&lt;br /&gt;
&lt;br /&gt;
===External Examiner===&lt;br /&gt;
Has all the rights of inpectors, but would also need to be able to review assignments and feedback, view forums, glossaries etc. However, would not want to post, feedback onto the site at all.&lt;br /&gt;
&lt;br /&gt;
===Parent===&lt;br /&gt;
A parent will have one or more children in one or more institutions which could be using one or more moodle instances or a mixture of Learning Platforms. A parent&#039;s role will vary depending on the age of their children and whether they are contributing as a parent or a school supporter.&lt;br /&gt;
&lt;br /&gt;
In Early Years (EY=3+4 yr olds) and Key Stage 1 (KS1=5+6 yr olds) they may play/learn on an activity or write for the child. Parents often interpret homework tasks and read to their children perhaps filling in a joint reading diary. In Key Stage 2 (KS2=7-11 yr olds) parents would be more monitoring but may join in as well.&lt;br /&gt;
&lt;br /&gt;
In Key stages 3 (KS3=12-14 yr olds) and 4 (KS4=15+16 yr olds) this changes to more of a monitoring/awareness role where a parent would expect to have a summary report of attendance, attainment and general achievement on a weekly/monthly/termly or annual basis. Parents will often be asked to sign and write back comments about this review report.&lt;br /&gt;
&lt;br /&gt;
In all Key Stages there is a great need for parents to receive communication from the school which they can confirm they have received by signing a form. In some cases this may also involve making choices from a list. It may also involve payment for a trip or disco being returned so there could be the possibility of electronic payments. Also in all Key Satges there may be a home-school agreement which may be signed up to. Could this form part of a site policy system that incorporates a tickable list of activities the parent agrees to the child using (blogs/wikis/forums etc.)?&lt;br /&gt;
&lt;br /&gt;
Parent&#039;s evenings often involve complex booking systems that attempt to get parent&#039;s and teachers together. Easy for EY/KS1/KS2 very difficult for KS3/KS4. Wow would this help if it was built into the Learning Platform.&lt;br /&gt;
&lt;br /&gt;
In some cases there needs to be confidential communication between the parent and the teacher without the child being party to this. It may involve teaching and learning but could also involve a behaviour or medical issue. Often this may be done via a sealed letter or face to face. &lt;br /&gt;
&lt;br /&gt;
The latest incarnation of OfSTED with the Self Review Framework (SEF) there is a greater emphasis on schools gathering parent voice via surveys and discussion. There is a clear match here with parents have access to parental votes, questionnaires and discussions and for schools to be able to publish news, results and reports back to parents.&lt;br /&gt;
&lt;br /&gt;
In the UK the LP framework and agenda as being pushed by the DfES via Becta emphasises that within the mandatory groups and roles functionality the parent role is likely to be required to meet the LP Framework procurement standard.&lt;br /&gt;
&lt;br /&gt;
===Manager===&lt;br /&gt;
&#039;&#039;Please add text here...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Weekly Seminar Leader===&lt;br /&gt;
&#039;&#039;In a university seminar, typically 8-15 students in their 3rd/4th year, each student is responsible for leading one topic in a study series.  I ask each student to research 5-10 resources, then give a powerpoint presentation to the other students.  This is followed by an in-class discussion and then online homework.  The homework involves some fun quiz questions and then some reflective journal questions.  I ask each seminar leader to prepare the quiz questions and journal questions as well as their presentation.  To do that, I would like to assign activity-making/authoring roles to the student--either for a short period, or for duration of the whole course.  Thus &amp;quot;Allow Quiz Authoring Role&amp;quot; or &amp;quot;Allow Assignment Authoring Role&amp;quot; at the course level or, if possible, even the Topic level (in a topic or week format course) would be important.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Mentor/Mentee===&lt;br /&gt;
&#039;&#039;Please add text here...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Community-Designed Rating Criteria===&lt;br /&gt;
&#039;&#039;The gradebook tends to be the domain of the teacher.  What if community/peer ratings/marks could also be entered there? What if peer assessment criteria could be designed by the students, not just the teacher?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Visitor===&lt;br /&gt;
&lt;br /&gt;
This would be a role whereby one could allow a visitor to visit one&#039;s classroom. This might be a colleague interested in seeing your course, or a journalist who might be writing an article about one&#039;s site. They should not be able to see the names of any students anywhere (eg recent activity, forum posts) for privacy reasons. They should be able to try out things like quizzes, and lessons but no grades would be recorded (like in teacher preview mode). They would not be able to participate in choices and forums but could view them. It would be read only in a way like former-student role below but without access to a particular student&#039;s records that former student role would grant. &lt;br /&gt;
&lt;br /&gt;
===Former Student===&lt;br /&gt;
This role would be of particular use for courses with rolling enrollments. This role would be one where a student had completed all of the requirements of a course (ie assignments, quizzes etc.) but wished to have continued access to the course material for review or consultation. The key factor is that one would give access to the completed student to the notes he read, his work and the teacher&#039;s comments on it, but he would not be allowed to do anything that would take up the teacher&#039;s time. In other words, a sort-of read-only access to the course. How forums, which might contain pertinent information and would continue to grow, would be handled is a question. Perhaps the student would be shown only what was in the forums at the time he completed the course. He would not be allowed to see any new posts or add any himself. Same thing for database and glossary entries. In other words, a snapshot of the course at the time his regular enrollment ended. He shouldn&#039;t be able to see the names or profiles of any newly enrolled students for privacy reasons-hence the restrictions on forum access. One issue that would have to be dealt with would be changes to existing modules-such as resources. Does the student get access to the module as it was or as it is? We have no versioning of resources in Moodle so this would be a problem. What about a teacher changing a quiz question so that the answer is different? What would a former student see?&lt;br /&gt;
&lt;br /&gt;
Is this the same as &#039;&#039;&#039;ALUMNUS&#039;&#039;&#039; ? An ALUMNUS should be able to search for all other ALUMNI of the school, interact with them and be enrolled in a seperate course - which is like a META course with all the content of his learning and interaction - as well as capabilities to be a part of this ALUMNI only course.  All the teachers of courses during school years should automatically be a part of the ALUMNI course .. which means when an ALUMNUS is enrolled in a course, the original teachers of all his courses get enrolled ?  --[[User:Anil Sharma|Anil Sharma]] 20:54, 15 July 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
===Librarian===&lt;br /&gt;
&lt;br /&gt;
Reference Librarians have an active role in most of the courses taught at Earlham College (with Bibliographic Instruction). The Librarian role within Moodle could encompass default read access to all courses (unless prohibited by course teacher) and read access to all components of the course unless access is barred (again by teacher). The Librarians would also perhaps have a block called perhaps Reference Services or Reference Desk with write access where they could deposit resources. Also this block might have a chat applet whereby enrolled students could chat to the Reference Librarian on duty about their bibliographic research needs.&lt;br /&gt;
&lt;br /&gt;
In schools there is often a book review system. This may be covered by the lending system database but may not in which case a librarian may neeed to have a course area they can create a database template to handle the reviews in which case they may have a normal teacher style role? Off topic but course an integration with common schools database systems would be great.&lt;br /&gt;
&lt;br /&gt;
===Teacher===&lt;br /&gt;
&lt;br /&gt;
Teachers should have read access to other Teacher&#039;s courses unless explictly prohibited. They should be able to set parts of their own course to be totally private (perhaps even to admin?). Just as each activity can currently be set to have group access, each activity could have a permissions field. Teachers could set default permissions for all activities on their course (eg they might disallow Librarian access for example) and then change the access permission for an individual activity. &lt;br /&gt;
&lt;br /&gt;
I think that what is needed is a simple heirarchy of permissions and levels of granularity.&lt;br /&gt;
&lt;br /&gt;
I would take issue with &amp;quot;teachers should have read access to other teacher&#039;s courses unless explicitly prohibited.&amp;quot; This is a violation of the students&#039; privacy as how they perform and what they do in one class isn&#039;t the business of another teacher. Moreover, in the real world a teacher wouldn&#039;t suddenly go sit in on a colleague&#039;s class without asking permission first. I would not have appreciated such an invasion of privacy as either a teacher or a student. It could be an option, but shouldn&#039;t be default.--[[User:N Hansen|N Hansen]] 19:54, 12 June 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
===Community Education Tutors/Trainers===&lt;br /&gt;
Teachers may be community adult education trainers making use of a school moodle so must only have access to their courses unless given access elsewhere. They would not necessarily get the default teacher privileges.&lt;br /&gt;
&lt;br /&gt;
===Secretary/Student Worker===&lt;br /&gt;
&lt;br /&gt;
We often have faculty who want their departmental secretary or student worker to scan and upload files and perhaps create resources. Currently they have to be given teacher access to the course. This is dangerous from a FERPA standpoint since they could easily get access to grades.&lt;br /&gt;
&lt;br /&gt;
===Teaching Assistant===&lt;br /&gt;
&lt;br /&gt;
Our Faculty frequently have undergraduate students acting as Teaching Assistants. These students need to be able to add resources, create assignments, and possibly grade assignments. However, due to FERPA they cannot have access to other students&#039; overall grade information. I think the requirements here are slightly different than those of Secretary/Student Worker&lt;br /&gt;
&lt;br /&gt;
===Admin - Catgory based===&lt;br /&gt;
&lt;br /&gt;
Basically a person in between full Admin and Creator that has the permissions of an Admin but only with respect to courses and students. Currently a Creator has permissions site-wide which does not always meet the requirements of a given organisation (e.g. Department A may not be happy that a person from Department B can create/modify courses within Department A&#039;s area). The ability to designate a Creator within a specific category would allow areas to be set up for a faculty/department/organisation and allow the Admin for that area to create/delete courses, upload users, add site-wide entries to the calendar etc.&lt;br /&gt;
&lt;br /&gt;
===PROCESS ROLES===&lt;br /&gt;
&lt;br /&gt;
organising the learning process for a group you wish to have the choice to place students in differnt roles: examples of this are:&lt;br /&gt;
&amp;lt;li&amp;gt;1. Give a student the role of forum-moderator with edit and chunk-rights&lt;br /&gt;
&amp;lt;li&amp;gt;2. Give students different roles &amp;amp; rights in a Webquest design (and change these roles next week&lt;br /&gt;
&amp;lt;li&amp;gt;3. Give students different resources, depending of their roles in a rolegame/simulation&lt;br /&gt;
&amp;lt;li&amp;gt;4. Give a student the rights to create the section content of next week (and only that week..)&lt;br /&gt;
&amp;lt;li&amp;gt;5. ..&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*Using Moodle [http://moodle.org/mod/forum/discuss.php?d=38788 Roles and Permissions architecture] forum discussion&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Future]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ru:Роли]]&lt;/div&gt;</summary>
		<author><name>Cmcqueen</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Roles&amp;diff=2993</id>
		<title>Roles</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Roles&amp;diff=2993"/>
		<updated>2006-07-22T18:26:48Z</updated>

		<summary type="html">&lt;p&gt;Cmcqueen: /* Parent */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Roles and capabilities&#039;&#039;&#039; are planned to be included in Moodle 1.7. For now, we have some basic ideas of how to implement such a structure in Moodle.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Please note that none of the following is finalised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
By roles, we mean an identifier of the user&#039;s status, for example, teacher, student and forum moderator are examples of roles.&lt;br /&gt;
&lt;br /&gt;
A capability is a permission to access some particular Moodle feature. Capabilities are associated with roles. For example, &#039;&#039;mod/forum:replypost&#039;&#039; is a capability.&lt;br /&gt;
&lt;br /&gt;
==The existing system==&lt;br /&gt;
&lt;br /&gt;
Currently in Moodle, we have a fixed set of roles i.e. primary admin, admins, course creators, editing teachers, non-editing teachers, students, and guests. For each role, the capability or actions that they can performed are fixed. For example, the role student allows the user to submit an assignment, but doesn&#039;t allow the user to browse/edit other users&#039; work. By using this setup we limit ourselves to a rather rigid set of capabilities for each role. If we want, say a particular student or group to be able to mark assignments in a particular course, we can&#039;t do that without giving these users teacher privileges.&lt;br /&gt;
&lt;br /&gt;
==The new roles and capability system==&lt;br /&gt;
&lt;br /&gt;
The new system will allow authorized users to define an arbitrary number of roles. Each role can have a customizable set of capabilities in every context. A context can be the whole Moodle site, a course, or a module instance, e.g. quiz 5 in &#039;Introduction to Photography&#039;. An authorized user will be able to assign an arbitrary number of roles to each user. Since the capabilities in each role could be different, there could be conflict in capabilities. This is resolved by giving roles different &#039;priorities&#039;. For example, to prevent a naughty student from posting, one could assign him a &#039;naughty student&#039; role that does not allow him to post. This role should have a priority higher than that of a normal &#039;student&#039; role. &lt;br /&gt;
&lt;br /&gt;
To facilitate exceptional cases in roles and capabilities, we can use exception rules. For example, we can specify a rule saying that all students are able to mark/read other students&#039; assignment in this particular course. Note that such rules need to have a priority as well. The capability of a user, in any context is then resolved by finding the highest priority role/rule.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;A smooth upgrade will be provided with 1.7. The existing roles (admin, teacher, student, etc), and the exisiting capabilities will be retained. This is done by creating default roles at site/course levels, and assigning the current users to these roles accordingly. The default roles will have default capabilities associated with them, which pretty much is what we have  in 1.6. The whole process is automatic so there&#039;s nothing to worry about =). With no modifications, Moodle will operate exactly the same before and after the upgrade.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==The plan==&lt;br /&gt;
&lt;br /&gt;
There are a few major things that need to be done. Here&#039;s a list (in no particular order):&lt;br /&gt;
&lt;br /&gt;
#Identify permissions required for site/course/each module.&lt;br /&gt;
#Define the database structure for storing roles and capabilities.&lt;br /&gt;
#Recode the whole of Moodle, including all modules to support the new structure. Instead of using &amp;lt;code&amp;gt;isteacher()&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;isstudent()&amp;lt;/code&amp;gt; we should be using &amp;lt;code&amp;gt;has_capability($capability, $instanceid)&amp;lt;/code&amp;gt; etc. A new API for handling roles and capabilities will be implemented (accesslib.php).&lt;br /&gt;
#Add storage of capabilities for each module. Can be done either in a file, e.g. db/capability.xml, or as a sql file that gets installed to a central db whenever this module is installed. Either way, what do we do when we need to upgrade these capabilities? Some capabilities might need refining/splitting later on. How do we control the &#039;version&#039; of a capability?&lt;br /&gt;
#Consider interface issues, especially how to manage conflicting role/exception rules.&lt;br /&gt;
#Upon logging in, we should use a cache to store capability, down to module level. How should that be structured?&lt;br /&gt;
#Consider the impact on backup/restore.&lt;br /&gt;
#Upgrade path for current users. The user information in table user_coursecreators, user_admins, user_teachers, and user_students will most likely be migrated to the new roles and capabilities tables. The users will most likely be assigned default roles that comes with default capabilities (e.g. teachers, admins, students, etc). The old tables themselves could possibly be dropped at the end of the upgrade.&lt;br /&gt;
&lt;br /&gt;
==Capabilities==&lt;br /&gt;
&lt;br /&gt;
This is a comprehensive list of capabilities, well, in the making. It is important that capability names are unique. Please edit. Should we distinguish canedit and candelete?&lt;br /&gt;
&lt;br /&gt;
What about a canview capability? Like for choice, where a person is allowed to see the choice question but not participate in it? --[[User:N Hansen|N Hansen]] 19:29, 16 May 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
Certainly need a canview or cansee capability for parents as linked to their child&#039;s data/contributions.&lt;br /&gt;
&lt;br /&gt;
Do we need to add canview and cansearch logs at site/course/user/group level?&lt;br /&gt;
&lt;br /&gt;
I could use a canview at a course level, if I understand what that means exactly.--[[User:N Hansen|N Hansen]] 19:43, 12 June 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Core-level Capabilities===&lt;br /&gt;
&lt;br /&gt;
Moodle core capabilitie names start with &#039;moodle/&#039;. The capabilities for the Moodle core are defined in lib/db/access.php&lt;br /&gt;
Do we still keep student view? What is a student view?&lt;br /&gt;
&lt;br /&gt;
#moodle/site:config - applicable in admin/index.php and config.php (might break down later)&lt;br /&gt;
#moodle/site:manageblocks - adding/removing/editing blocks (site, course contexts only for now)&lt;br /&gt;
#moodle/site:backup - can create a course backup&lt;br /&gt;
#moodle/site:restore - can restore into this context&lt;br /&gt;
#moodle/site:import - can import other courses into this context&lt;br /&gt;
#moodle/blog:view - read blogs&lt;br /&gt;
#moodle/blog:create - write new blog posts&lt;br /&gt;
#moodle/blog:manageofficialtags - create/delete official blog tags that others can use&lt;br /&gt;
#moodle/blog:managepersonaltags - create/delete official blog tags that others can use&lt;br /&gt;
#moodle/blog:manageentries - edit/delete all blog entries&lt;br /&gt;
#moodle/course:create - create courses&lt;br /&gt;
#moodle/course:delete - create courses&lt;br /&gt;
#moodle/course:update - update course settings&lt;br /&gt;
#moodle/course:view - can use this to find participants&lt;br /&gt;
#moodle/course:viewparticipants - allows a user to view participant list&lt;br /&gt;
#moodle/course:viewscales - view scales (i.e. in a help window?)&lt;br /&gt;
#moodle/course:manageactivities - adding/removing/editing activities and resources (don&#039;t think it makes any sense to split these)&lt;br /&gt;
#moodle/course:managescales - add, delete, edit scales, move scales up and down&lt;br /&gt;
#moodle/course:managegroups - managing groups, add, edit, delete&lt;br /&gt;
#moodle/course:visibility - hide/show courses&lt;br /&gt;
#moodle/category:create - create category&lt;br /&gt;
#moodle/category:delete - create category&lt;br /&gt;
#moodle/category:update - update category settings&lt;br /&gt;
#moodle/category:visibility - hide/show categories&lt;br /&gt;
#moodle/user:create - create user&lt;br /&gt;
#moodle/user:delete - create user&lt;br /&gt;
#moodle/user:update - update user settings&lt;br /&gt;
#moodle/user:viewdetails - view personally-identifying user details (e.g. name, photo). This ties in with the &amp;quot;visitor&amp;quot; scenario described below.&lt;br /&gt;
#moodle/calendar:manageownentries - create/edit/delete &lt;br /&gt;
#moodle/calendar:manageentries - create/edit/delete&lt;br /&gt;
&lt;br /&gt;
===Module-level Capabilities===&lt;br /&gt;
The capabilities are cached into a database table when a module is installed or updated. Whenever the capability definitions are updated, the module version number should be bumped up so that the database table can be updated.&lt;br /&gt;
&lt;br /&gt;
The naming convention for capabilities that are specific to modules and blocks is &#039;mod/mod_name:capability&#039;. The module capabilities are defined in mod/mod_name/db/access.php.&lt;br /&gt;
&lt;br /&gt;
#Assignment&lt;br /&gt;
##mod/assignment:view- reading the assignment description&lt;br /&gt;
##mod/assignment:grade - grading, viewing of list of submitted assignments&lt;br /&gt;
#Chat&lt;br /&gt;
##mod/chat:chat - allows a user to participate in this chat&lt;br /&gt;
##mod/chat:readlog - allows a user to read past chat session logs&lt;br /&gt;
##mod/chat:deletelog - allows a user to delete past chat logs&lt;br /&gt;
#Choice&lt;br /&gt;
##mod/choice:choose - make a choice&lt;br /&gt;
##mod/choice:readresponses - read all responses&lt;br /&gt;
##mod/choice:deleteresponses - deletes all responses&lt;br /&gt;
##mod/choice:downloadresponses - download responses&lt;br /&gt;
#Database&lt;br /&gt;
##mod/data:readentry - reads other people&#039;s entry&lt;br /&gt;
##mod/data:writeentry - add / edit and delete (own) entries&lt;br /&gt;
##mod/data:managetemplates - add, delete, edit fields and templates&lt;br /&gt;
##mod/data:manageentries - edit/delete all entries&lt;br /&gt;
##mod/data:comment - comment&lt;br /&gt;
##mod/data:managecomments - edit/delete all comments&lt;br /&gt;
##mod/data:rate - rate an entry&lt;br /&gt;
##mod/data:approve - approves an entry&lt;br /&gt;
##mod/data:uploadentries - batch upload of entries&lt;br /&gt;
#Exercise&lt;br /&gt;
##mod/exercise:assess&lt;br /&gt;
#Forum&lt;br /&gt;
##mod/forum:viewforum&lt;br /&gt;
##mod/forum:viewdiscussion&lt;br /&gt;
##mod/forum:viewdiscussionsfromallgroups&lt;br /&gt;
##mod/forum:startdiscussion&lt;br /&gt;
##mod/forum:replypost&lt;br /&gt;
##mod/forum:viewrating&lt;br /&gt;
##mod/forum:rate&lt;br /&gt;
##mod/forum:attachments&lt;br /&gt;
##mod/forum:deleteownpost&lt;br /&gt;
##mod/forum:deleteanypost&lt;br /&gt;
##mod/forum:splitdiscussions&lt;br /&gt;
##mod/forum:movediscussions&lt;br /&gt;
##mod/forum:editanypost&lt;br /&gt;
#Glossary&lt;br /&gt;
##mod/glossary:view - read entries&lt;br /&gt;
##mod/glossary:write - add entries&lt;br /&gt;
##mod/glossary:manageentries - add, edit, delete entries&lt;br /&gt;
##mod/glossary:managecategories - create, delete, edit categories&lt;br /&gt;
##mod/glossary:comment - comment on an entry&lt;br /&gt;
##mod/glossary:managecomments - edit, delete comments&lt;br /&gt;
##mod/glossary:import - import glossaries&lt;br /&gt;
##mod/glossary:export - export glossaries&lt;br /&gt;
##mod/glossary:approve - approve glossaries&lt;br /&gt;
##mod/glossary:rate - rates glossary&lt;br /&gt;
##mod/glossary:readrate - view rating?&lt;br /&gt;
#Hotpot&lt;br /&gt;
##mod/hotpot:view&lt;br /&gt;
#Label&lt;br /&gt;
##none&lt;br /&gt;
#Lams&lt;br /&gt;
##TBD&lt;br /&gt;
#Lesson&lt;br /&gt;
##TBD&lt;br /&gt;
#Quiz&lt;br /&gt;
##TBD&lt;br /&gt;
#Resource&lt;br /&gt;
##mod/resource:view&lt;br /&gt;
#Scorm&lt;br /&gt;
##mod/scorm:view&lt;br /&gt;
##mod/scorm:viewgrades&lt;br /&gt;
#Survey&lt;br /&gt;
##mod/survey:download - downloads survery result&lt;br /&gt;
##mod/survey:participate - participate/ do survey&lt;br /&gt;
##mod/survey:readresponses - read all user&#039;s responese&lt;br /&gt;
#Wiki&lt;br /&gt;
##Waiting on new wiki&lt;br /&gt;
#Workshop&lt;br /&gt;
##Waiting on new Workshop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Questions==&lt;br /&gt;
I am adding question categories here because they seem to have been forgotten in the whole scheme of things since having been removed from the quiz module itself. I&#039;ve made a suggestion on how these could be handled in [http://www.moodle.org/bugs/bug.php?op=show&amp;amp;bugid=6118&amp;amp;pos= bug 6118].&lt;br /&gt;
&lt;br /&gt;
==Scenarios==&lt;br /&gt;
&lt;br /&gt;
This section is for brainstorming some example roles that we would like to support:&lt;br /&gt;
&lt;br /&gt;
===Student===&lt;br /&gt;
Has this one been missed?&lt;br /&gt;
&lt;br /&gt;
===Site Designers===&lt;br /&gt;
Is there a role for people involved in how the site looks but not full administrators? Thinking here of online control of themes rather than FTP theme uploading. But in either case they caneditlogos, caneditcss, candeditlevelatwhichthemeapplies.&lt;br /&gt;
&lt;br /&gt;
===Educational Authority Adviser===&lt;br /&gt;
Someone who would want to browse the site and may be asked to comment or contribute to particular discussions or developments in school. Access for this role would be controlled by the school in the case of school level moodles but may be different if there were to be a Local Authority wide Moodle.&lt;br /&gt;
&lt;br /&gt;
===Educational Inspector===&lt;br /&gt;
Someone who will visit the site to verify the school&#039;s self review that comments on home school relationships, extending the classroom etc. They may want to see summaries of usage and reports from surveys garnering parent and pupil views.&lt;br /&gt;
&lt;br /&gt;
===Second Marker / Moderator===&lt;br /&gt;
A teacher within ths site that has access to assignments and quizzes from another teacher&#039;s course for second marking purposes. This may need additional functionality adding to the assignment module so that two sets of grades/feedback can be given to one set of assignments.&lt;br /&gt;
&lt;br /&gt;
===Peer observer of teaching===&lt;br /&gt;
Many institutions encourage peer observation of teaching, to encourage reflection on practice. In online environments this will be similar to moderation or inspection. The peer observer would need to be able to experience the course &amp;quot;as a student&amp;quot;, but also to be able to view summaries of usage, transcripts of interactions (forums/surveys/polls etc), grades assigned (e.g. in assignments).&lt;br /&gt;
&lt;br /&gt;
===External Examiner===&lt;br /&gt;
Has all the rights of inpectors, but would also need to be able to review assignments and feedback, view forums, glossaries etc. However, would not want to post, feedback onto the site at all.&lt;br /&gt;
&lt;br /&gt;
===Parent===&lt;br /&gt;
A parent will have one or more children in one or more institutions which could be using one or more moodle instances or a mixture of Learning Platforms. A parent&#039;s role will vary depending on the age of their children and whether they are contributing as a parent or a school supporter.&lt;br /&gt;
&lt;br /&gt;
In Early Years (EY=3+4 yr olds) and Key Stage 1 (KS1=5+6 yr olds) they may play/learn on an activity or write for the child. Parents often interpret homework tasks and read to their children perhaps filling in a joint reading diary. In Key Stage 2 (KS2=7-11 yr olds) parents would be more monitoring but may join in as well.&lt;br /&gt;
&lt;br /&gt;
In Key stages 3 (KS3=12-14 yr olds) and 4 (KS4=15+16 yr olds) this changes to more of a monitoring/awareness role where a parent would expect to have a summary report of attendance, attainment and general achievement on a weekly/monthly/termly or annual basis. Parents will often be asked to sign and write back comments about this review report.&lt;br /&gt;
&lt;br /&gt;
In all Key Stages there is a great need for parents to receive communication from the school which they can confirm they have received by signing a form. In some cases this may also involve making choices from a list. It may also involve payment for a trip or disco being returned so there could be the possibility of electronic payments. Also in all Key Satges there may be a home-school agreement which may be signed up to. Could this form part of a site policy system that incorporates a tickable list of activities the parent agrees to the child using (blogs/wikis/forums etc.)?&lt;br /&gt;
&lt;br /&gt;
Parent&#039;s evenings often involve complex booking systems that attempt to get parent&#039;s and teachers together. Easy for EY/KS1/KS2 very difficult for KS3/KS4. Wow would this help if it was built into the Learning Platform.&lt;br /&gt;
&lt;br /&gt;
In some cases there needs to be confidential communication between the parent and the teacher without the child being party to this. It may involve teaching and learning but could also involve a behaviour or medical issue. Often this may be done via a sealed letter or face to face. &lt;br /&gt;
&lt;br /&gt;
The latest incarnation of OfSTED with the Self Review Framework (SEF) there is a greater emphasis on schools gathering parent voice via surveys and discussion. There is a clear match here with parents have access to parental votes, questionnaires and discussions and for schools to be able to publish news, results and reports back to parents.&lt;br /&gt;
&lt;br /&gt;
In the UK the LP framework and agenda as being pushed by the DfES via Becta emphasises that within the mandatory groups and roles functionality the parent role is likely to be required to meet the LP Framework procurement standard.&lt;br /&gt;
&lt;br /&gt;
===Manager===&lt;br /&gt;
&#039;&#039;Please add text here...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Weekly Seminar Leader===&lt;br /&gt;
&#039;&#039;In a university seminar, typically 8-15 students in their 3rd/4th year, each student is responsible for leading one topic in a study series.  I ask each student to research 5-10 resources, then give a powerpoint presentation to the other students.  This is followed by an in-class discussion and then online homework.  The homework involves some fun quiz questions and then some reflective journal questions.  I ask each seminar leader to prepare the quiz questions and journal questions as well as their presentation.  To do that, I would like to assign activity-making/authoring roles to the student--either for a short period, or for duration of the whole course.  Thus &amp;quot;Allow Quiz Authoring Role&amp;quot; or &amp;quot;Allow Assignment Authoring Role&amp;quot; at the course level or, if possible, even the Topic level (in a topic or week format course) would be important.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Mentor/Mentee===&lt;br /&gt;
&#039;&#039;Please add text here...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Community-Designed Rating Criteria===&lt;br /&gt;
&#039;&#039;The gradebook tends to be the domain of the teacher.  What if community/peer ratings/marks could also be entered there? What if peer assessment criteria could be designed by the students, not just the teacher?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Visitor===&lt;br /&gt;
&lt;br /&gt;
This would be a role whereby one could allow a visitor to visit one&#039;s classroom. This might be a colleague interested in seeing your course, or a journalist who might be writing an article about one&#039;s site. They should not be able to see the names of any students anywhere (eg recent activity, forum posts) for privacy reasons. They should be able to try out things like quizzes, and lessons but no grades would be recorded (like in teacher preview mode). They would not be able to participate in choices and forums but could view them. It would be read only in a way like former-student role below but without access to a particular student&#039;s records that former student role would grant. &lt;br /&gt;
&lt;br /&gt;
===Former Student===&lt;br /&gt;
This role would be of particular use for courses with rolling enrollments. This role would be one where a student had completed all of the requirements of a course (ie assignments, quizzes etc.) but wished to have continued access to the course material for review or consultation. The key factor is that one would give access to the completed student to the notes he read, his work and the teacher&#039;s comments on it, but he would not be allowed to do anything that would take up the teacher&#039;s time. In other words, a sort-of read-only access to the course. How forums, which might contain pertinent information and would continue to grow, would be handled is a question. Perhaps the student would be shown only what was in the forums at the time he completed the course. He would not be allowed to see any new posts or add any himself. Same thing for database and glossary entries. In other words, a snapshot of the course at the time his regular enrollment ended. He shouldn&#039;t be able to see the names or profiles of any newly enrolled students for privacy reasons-hence the restrictions on forum access. One issue that would have to be dealt with would be changes to existing modules-such as resources. Does the student get access to the module as it was or as it is? We have no versioning of resources in Moodle so this would be a problem. What about a teacher changing a quiz question so that the answer is different? What would a former student see?&lt;br /&gt;
&lt;br /&gt;
Is this the same as &#039;&#039;&#039;ALUMNUS&#039;&#039;&#039; ? An ALUMNUS should be able to search for all other ALUMNI of the school, interact with them and be enrolled in a seperate course - which is like a META course with all the content of his learning and interaction - as well as capabilities to be a part of this ALUMNI only course.  All the teachers of courses during school years should automatically be a part of the ALUMNI course .. which means when an ALUMNUS is enrolled in a course, the original teachers of all his courses get enrolled ?  --[[User:Anil Sharma|Anil Sharma]] 20:54, 15 July 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
===Librarian===&lt;br /&gt;
&lt;br /&gt;
Reference Librarians have an active role in most of the courses taught at Earlham College (with Bibliographic Instruction). The Librarian role within Moodle could encompass default read access to all courses (unless prohibited by course teacher) and read access to all components of the course unless access is barred (again by teacher). The Librarians would also perhaps have a block called perhaps Reference Services or Reference Desk with write access where they could deposit resources. Also this block might have a chat applet whereby enrolled students could chat to the Reference Librarian on duty about their bibliographic research needs.&lt;br /&gt;
&lt;br /&gt;
===Teacher===&lt;br /&gt;
&lt;br /&gt;
Teachers should have read access to other Teacher&#039;s courses unless explictly prohibited. They should be able to set parts of their own course to be totally private (perhaps even to admin?). Just as each activity can currently be set to have group access, each activity could have a permissions field. Teachers could set default permissions for all activities on their course (eg they might disallow Librarian access for example) and then change the access permission for an individual activity. &lt;br /&gt;
&lt;br /&gt;
I think that what is needed is a simple heirarchy of permissions and levels of granularity.&lt;br /&gt;
&lt;br /&gt;
I would take issue with &amp;quot;teachers should have read access to other teacher&#039;s courses unless explicitly prohibited.&amp;quot; This is a violation of the students&#039; privacy as how they perform and what they do in one class isn&#039;t the business of another teacher. Moreover, in the real world a teacher wouldn&#039;t suddenly go sit in on a colleague&#039;s class without asking permission first. I would not have appreciated such an invasion of privacy as either a teacher or a student. It could be an option, but shouldn&#039;t be default.--[[User:N Hansen|N Hansen]] 19:54, 12 June 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
===Community Education Tutors/Trainers===&lt;br /&gt;
Teachers may be community adult education trainers making use of a school moodle so must only have access to their courses unless given access elsewhere. They would not necessarily get the default teacher privileges.&lt;br /&gt;
&lt;br /&gt;
===Secretary/Student Worker===&lt;br /&gt;
&lt;br /&gt;
We often have faculty who want their departmental secretary or student worker to scan and upload files and perhaps create resources. Currently they have to be given teacher access to the course. This is dangerous from a FERPA standpoint since they could easily get access to grades.&lt;br /&gt;
&lt;br /&gt;
===Teaching Assistant===&lt;br /&gt;
&lt;br /&gt;
Our Faculty frequently have undergraduate students acting as Teaching Assistants. These students need to be able to add resources, create assignments, and possibly grade assignments. However, due to FERPA they cannot have access to other students&#039; overall grade information. I think the requirements here are slightly different than those of Secretary/Student Worker&lt;br /&gt;
&lt;br /&gt;
===Admin - Catgory based===&lt;br /&gt;
&lt;br /&gt;
Basically a person in between full Admin and Creator that has the permissions of an Admin but only with respect to courses and students. Currently a Creator has permissions site-wide which does not always meet the requirements of a given organisation (e.g. Department A may not be happy that a person from Department B can create/modify courses within Department A&#039;s area). The ability to designate a Creator within a specific category would allow areas to be set up for a faculty/department/organisation and allow the Admin for that area to create/delete courses, upload users, add site-wide entries to the calendar etc.&lt;br /&gt;
&lt;br /&gt;
===PROCESS ROLES===&lt;br /&gt;
&lt;br /&gt;
organising the learning process for a group you wish to have the choice to place students in differnt roles: examples of this are:&lt;br /&gt;
&amp;lt;li&amp;gt;1. Give a student the role of forum-moderator with edit and chunk-rights&lt;br /&gt;
&amp;lt;li&amp;gt;2. Give students different roles &amp;amp; rights in a Webquest design (and change these roles next week&lt;br /&gt;
&amp;lt;li&amp;gt;3. Give students different resources, depending of their roles in a rolegame/simulation&lt;br /&gt;
&amp;lt;li&amp;gt;4. Give a student the rights to create the section content of next week (and only that week..)&lt;br /&gt;
&amp;lt;li&amp;gt;5. ..&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*Using Moodle [http://moodle.org/mod/forum/discuss.php?d=38788 Roles and Permissions architecture] forum discussion&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Future]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ru:Роли]]&lt;/div&gt;</summary>
		<author><name>Cmcqueen</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User:Colin_McQueen&amp;diff=19822</id>
		<title>User:Colin McQueen</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User:Colin_McQueen&amp;diff=19822"/>
		<updated>2006-05-25T15:40:47Z</updated>

		<summary type="html">&lt;p&gt;Cmcqueen: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;UK based teacher and Local Authority Consultant on Learning Platforms looking to ensure Moodle is included in the Becta Learning Platform list of approved platforms.&lt;/div&gt;</summary>
		<author><name>Cmcqueen</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Roles&amp;diff=2897</id>
		<title>Roles</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Roles&amp;diff=2897"/>
		<updated>2006-05-25T15:33:58Z</updated>

		<summary type="html">&lt;p&gt;Cmcqueen: /* Scenarios */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Roles and capabilities&#039;&#039;&#039; are planned to be included in Moodle 1.7. For now, we have some basic ideas of how to implement such a structure in Moodle.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Please note that none of the following is finalised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
By roles, we mean an identifier of the user&#039;s status, for example, teacher, student and forum moderator are examples of roles.&lt;br /&gt;
&lt;br /&gt;
A capability is a permission to access some particular Moodle feature. Capabilities are associated with roles. For example, &#039;&#039;forum_canreadpost&#039;&#039; is a capability.&lt;br /&gt;
&lt;br /&gt;
==The existing system==&lt;br /&gt;
&lt;br /&gt;
Currently in Moodle, we have a fixed set of roles i.e. primary admin, admins, course creators, editing teachers, non-editing teachers, students, and guests. For each role, the capability or actions that they can performed are fixed. For example, the role student allows the user to submit an assignment, but doesn&#039;t allow the user to browse/edit other users&#039; work. By using this setup we limit ourselves to a rather rigid set of capabilities for each role. If we want, say a particular student or group to be able to mark assignments in a particular course, we can&#039;t do that without giving these users teacher privileges.&lt;br /&gt;
&lt;br /&gt;
==The new roles and capability system==&lt;br /&gt;
&lt;br /&gt;
The new system will allow authorized users to define an arbitrary number of roles. Each role can have a customizable set of capabilities in every context. A context can be the whole Moodle site, a course, or a module instance, e.g. quiz 5 in &#039;Introduction to Photography&#039;. An authorized user will be able to assign an arbitrary number of roles to each user. Since the capabilities in each role could be different, there could be conflict in capabilities. This is resolved by giving roles different &#039;priorities&#039;. For example, to prevent a naughty student from posting, one could assign him a &#039;naughty student&#039; role that does not allow him to post. This role should have a priority higher than that of a normal &#039;student&#039; role. &lt;br /&gt;
&lt;br /&gt;
To facilitate exceptional cases in roles and capabilities, we can use exception rules. For example, we can specify a rule saying that all students are able to mark/read other students&#039; assignment in this particular course. Note that such rules need to have a priority as well. The capability of a user, in any context is then resolved by finding the highest priority role/rule.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;A smooth upgrade will be provided with 1.7. The existing roles (admin, teacher, student, etc), and the exisiting capabilities will be retained. This is done by creating default roles at site/course levels, and assigning the current users to these roles accordingly. The default roles will have default capabilities associated with them, which pretty much is what we have  in 1.6. The whole process is automatic so there&#039;s nothing to worry about =). With no modifications, Moodle will operate exactly the same before and after the upgrade.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==The plan==&lt;br /&gt;
&lt;br /&gt;
There are a few major things that need to be done. Here&#039;s a list (in no particular order):&lt;br /&gt;
&lt;br /&gt;
#Identify permissions required for site/course/each module.&lt;br /&gt;
#Define the database structure for storing roles and capabilities.&lt;br /&gt;
#Recode the whole of Moodle, including all modules to support the new structure. Instead of using &amp;lt;code&amp;gt;isteacher()&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;isstudent()&amp;lt;/code&amp;gt; we should be using &amp;lt;code&amp;gt;has_capabity($capability, $instanceid)&amp;lt;/code&amp;gt; etc. A new API for handling roles and capabilities will be implemented (accesslib.php).&lt;br /&gt;
#Add storage of capabilities for each module. Can be done either in a file, e.g. db/capability.xml, or as a sql file that gets installed to a central db whenever this module is installed. Either way, what do we do when we need to upgrade these capabilities? Some capabilities might needs refining/splitting later on. How do we control the &#039;version&#039; of a capability?&lt;br /&gt;
#Consider interface issues, especially how to manage conflicting role/exception rules.&lt;br /&gt;
#Upon logging in, we should use a cache to store capability, down to module level. How should that be structured?&lt;br /&gt;
#Consider the impact on backup/restore.&lt;br /&gt;
#Upgrade path for current users. The user information in table user_coursecreators, user_admins, user_teachers, and user_students will most likely be migrated to the new roles and capabilities tables. The users will most likely be assigned default roles that comes with default capabilities (e.g. teachers, admins, students, etc). The old tables themselves could possibly be dropped at the end of the upgrade.&lt;br /&gt;
&lt;br /&gt;
==Capabilities==&lt;br /&gt;
&lt;br /&gt;
This is a comprehensive list of capabilities, well, in the making. Please edit. Should we distinguish canedit and candelete?&lt;br /&gt;
&lt;br /&gt;
What about a canview capability? Like for choice, where a person is allowed to see the choice question but not participate in it? --[[User:N Hansen|N Hansen]] 19:29, 16 May 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
Certainly need a canview or cansee capability for parents as linked to their childs data/contributions.&lt;br /&gt;
&lt;br /&gt;
Do we need to add canview and cansearch logs at site/course/user/group level?&lt;br /&gt;
&lt;br /&gt;
===Site-level Capabilities===&lt;br /&gt;
&lt;br /&gt;
#canreadblogs&lt;br /&gt;
#canpostblogs&lt;br /&gt;
#candeleteallblogs&lt;br /&gt;
#canbrowseuser&lt;br /&gt;
#canviewhiddenactivity&lt;br /&gt;
#cancreatecourse&lt;br /&gt;
#caneditownprofile&lt;br /&gt;
#caneditallprofiles&lt;br /&gt;
&lt;br /&gt;
===Course-level Capabilities===&lt;br /&gt;
&lt;br /&gt;
#canseecoursecontent&lt;br /&gt;
#caneditcourse&lt;br /&gt;
#cancreatebackups&lt;br /&gt;
#canrestorebackups&lt;br /&gt;
#cancreateblocks&lt;br /&gt;
#caneditblocks&lt;br /&gt;
#candeleteblocks&lt;br /&gt;
&lt;br /&gt;
===Module-level Capabilities===&lt;br /&gt;
&lt;br /&gt;
#Assignment&lt;br /&gt;
##assignment_canadd&lt;br /&gt;
##assignment_canedit&lt;br /&gt;
##assignment_candelete&lt;br /&gt;
##assignment_cansubmit&lt;br /&gt;
##assignment_canmark&lt;br /&gt;
##assignment_canviewsubmissions&lt;br /&gt;
#Chat&lt;br /&gt;
##chat_canadd&lt;br /&gt;
##chat_canedit&lt;br /&gt;
##chat_candelete&lt;br /&gt;
##chat_canparticipate&lt;br /&gt;
##chat_canviewpastsessions&lt;br /&gt;
#Choice&lt;br /&gt;
##choice_canadd&lt;br /&gt;
##choice_canedit&lt;br /&gt;
##choice_candelete&lt;br /&gt;
##choice_canparticipate&lt;br /&gt;
##choice_canviewresponses&lt;br /&gt;
#Database&lt;br /&gt;
##database_canadd&lt;br /&gt;
##database_canedit&lt;br /&gt;
##databaes_candelete&lt;br /&gt;
##database_canaddentry&lt;br /&gt;
##database_canaddtemplates&lt;br /&gt;
##database_canedittemplates&lt;br /&gt;
##database_candeleteownentry&lt;br /&gt;
##database_candeleteallentry&lt;br /&gt;
##database_cancomment&lt;br /&gt;
##database_candeletecomment&lt;br /&gt;
##database_canrate&lt;br /&gt;
#Exercise&lt;br /&gt;
##exercise_canadd&lt;br /&gt;
##exercise_canedit&lt;br /&gt;
##exercise_candelete&lt;br /&gt;
##exercise_canassess&lt;br /&gt;
#Forum&lt;br /&gt;
##forum_canadd&lt;br /&gt;
##forum_canedit&lt;br /&gt;
##forum_candelete&lt;br /&gt;
##forum_canreadpost&lt;br /&gt;
##forum_canstartnewdiscussion&lt;br /&gt;
##forum_canreply&lt;br /&gt;
##forum_caneditallpost&lt;br /&gt;
##forum_candeleteallpost&lt;br /&gt;
##forum_canrate&lt;br /&gt;
#Glossary&lt;br /&gt;
##glossary_canadd&lt;br /&gt;
##glossary_canedit&lt;br /&gt;
##glossary_candelete&lt;br /&gt;
##glossary_canaddcat&lt;br /&gt;
##glossary_caneditcat&lt;br /&gt;
##glossary_candeletecat&lt;br /&gt;
##glossary_canadditem&lt;br /&gt;
##glossary_candeleteitem&lt;br /&gt;
##glossary_canedititem&lt;br /&gt;
##glossary_cancomment&lt;br /&gt;
##glossary_canimportentries&lt;br /&gt;
##glossary_canexportentries&lt;br /&gt;
##glossary_canapprove&lt;br /&gt;
#Hotpot&lt;br /&gt;
##hotpot_candd&lt;br /&gt;
##hotpot_canedit&lt;br /&gt;
##hotpot_candelete&lt;br /&gt;
##hotpot_canparticipate&lt;br /&gt;
#Label&lt;br /&gt;
##label_canadd&lt;br /&gt;
##label_canedit&lt;br /&gt;
##label_candelete&lt;br /&gt;
#Lams&lt;br /&gt;
##lams_canadd&lt;br /&gt;
##lams_canedit&lt;br /&gt;
##lams_candelete&lt;br /&gt;
#Lesson&lt;br /&gt;
##lesson_canadd&lt;br /&gt;
##lesson_canedit&lt;br /&gt;
##lesson_candelete&lt;br /&gt;
##lesson_canparticipate&lt;br /&gt;
#Quiz&lt;br /&gt;
##quiz_canadd&lt;br /&gt;
##quiz_canedit&lt;br /&gt;
##quiz_candelete&lt;br /&gt;
##quiz_canaddquestion&lt;br /&gt;
##quiz_caneditquestion&lt;br /&gt;
##quiz_candeletequestion&lt;br /&gt;
##quiz_canparticipate&lt;br /&gt;
##quiz_cangrade&lt;br /&gt;
#Resource&lt;br /&gt;
##resource_canadd&lt;br /&gt;
##resource_canedit&lt;br /&gt;
##resource_candelete&lt;br /&gt;
#Scorm&lt;br /&gt;
##scorm_canadd&lt;br /&gt;
##scorm_canedit&lt;br /&gt;
##socrm_candelete&lt;br /&gt;
#Survey&lt;br /&gt;
##survey_canadd&lt;br /&gt;
##survey_canedit&lt;br /&gt;
##survey_candelete&lt;br /&gt;
##survey_canviewresponses&lt;br /&gt;
#Wiki&lt;br /&gt;
##wiki_canadd&lt;br /&gt;
##wiki_canedit&lt;br /&gt;
##wiki_candelete&lt;br /&gt;
##wiki_canstartnewwiki&lt;br /&gt;
##wiki_canparticipate&lt;br /&gt;
#Workshop&lt;br /&gt;
##workshop_canadd&lt;br /&gt;
##workshop_canedit&lt;br /&gt;
##workshop_candelete&lt;br /&gt;
##workshop_cangrade&lt;br /&gt;
##workshop_canparticipate&lt;br /&gt;
&lt;br /&gt;
==Scenarios==&lt;br /&gt;
&lt;br /&gt;
This section is for brainstorming some example roles that we would like to support:&lt;br /&gt;
&lt;br /&gt;
===Student===&lt;br /&gt;
Has this one been missed?&lt;br /&gt;
&lt;br /&gt;
===Site Designers===&lt;br /&gt;
Is there a role for peole involved in how the site looks but not full administrators? Thinking here of online control of themes rather than FTP theme uploading. But in either case they caneditlogos, caneditcss, candeditlevelatwhichthemeapplies.&lt;br /&gt;
&lt;br /&gt;
===Educational Authority Adviser===&lt;br /&gt;
Someone who would want to browse the site and may be asked to comment or contribute to particular discussions or developments in school. Access for this role would be controlled by the school in the case of school level moodles but may be different if there were to be a Local Authority wide Moodle.&lt;br /&gt;
&lt;br /&gt;
===Educational Inspector===&lt;br /&gt;
Someone who will visit the site to verify the school&#039;s self review that comments on home school relationships, extending the classroom etc. They may want to see summaries of usage and reports from surveys garnering parent and pupil views.&lt;br /&gt;
&lt;br /&gt;
===Parent===&lt;br /&gt;
A parent will have one or more children in one or more institutions which could be using one or more moodle instances or a mixture of Learning Platforms. A parent&#039;s role will vary depending on the age of their children and whether they are contributing as a parent or a school supporter.&lt;br /&gt;
&lt;br /&gt;
In Early Years (EY) and Key Stage 1 (KS1) they may play/learn on an activity or write for the child. Parents often interpret homework tasks and read to their children perhaps filling in a joint reading diary.&lt;br /&gt;
&lt;br /&gt;
In Key stages 3 and 4 this changes to more of a monitoring/awareness role where a parent would expect to have a summary report of attendance, attainment and general achievement on a weekly/monthly/termly or annual basis. Parents will often be asked to sign and write back comments about this review report.&lt;br /&gt;
&lt;br /&gt;
In all Key Stages there is a great need for parents to receive communication from the school which they can confirm they have received by signing a form. In some cases this may also involve making choices from a list. It may also involve payment for a trip or disco being returned so there could be the possibility of electronic payments.&lt;br /&gt;
&lt;br /&gt;
Parent&#039;s evening often involve complex booking systems that attempt to get parent&#039;s and teachers together. Easy for EY/KS1/KS2 very difficult for KS3/KS4. Wow would this help if it was built into the Learning Platform.&lt;br /&gt;
&lt;br /&gt;
In some cases there needs to be confidential communication between the parent and the teacher without the child being party to this. It may involve teaching and learning but could also involve a behaviour or medical issue. Often this may be done via a sealed letter or face to face. &lt;br /&gt;
&lt;br /&gt;
The latest incarnation of OfSTED with the Self Review Framework (SEF) there is a greater emphasis on schools gathering parent voice via surveys and discussion. There is a clear match here with parents have access to parental votes, questionnaires and discussions and for schools to be able to publish news, results and reports back to parents.&lt;br /&gt;
&lt;br /&gt;
In the UK the LP framework and agenda as being pushed by the DfES via Becta emphasises that within the mandatory groups and roles functionality the parent role is likely to be required to meet the LP Framework procurement standard.&lt;br /&gt;
&lt;br /&gt;
===Manager===&lt;br /&gt;
&#039;&#039;Please add text here...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Weekly Seminar Leader===&lt;br /&gt;
&#039;&#039;In a university seminar, typically 8-15 students in their 3rd/4th year, each student is responsible for leading one topic in a study series.  I ask each student to research 5-10 resources, then give a powerpoint presentation to the other students.  This is followed by an in-class discussion and then online homework.  The homework involves some fun quiz questions and then some reflective journal questions.  I ask each seminar leader to prepare the quiz questions and journal questions as well as their presentation.  To do that, I would like to assign activity-making/authoring roles to the student--either for a short period, or for duration of the whole course.  Thus &amp;quot;Allow Quiz Authoring Role&amp;quot; or &amp;quot;Allow Assignment Authoring Role&amp;quot; at the course level or, if possible, even the Topic level (in a topic or week format course) would be important.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Mentor/Mentee===&lt;br /&gt;
&#039;&#039;Please add text here...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Community-Designed Rating Criteria===&lt;br /&gt;
&#039;&#039;The gradebook tends to be the domain of the teacher.  What if community/peer ratings/marks could also be entered there? What if peer assessment criteria could be designed by the students, not just the teacher?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Visitor===&lt;br /&gt;
&lt;br /&gt;
This would be a role whereby one could allow a visitor to visit one&#039;s classroom. This might be a colleague interested in seeing your course, or a journalist who might be writing an article about one&#039;s site. They should not be able to see the names of any students anywhere (eg recent activity, forum posts) for privacy reasons. They should be able to try out things like quizzes, and lessons but no grades would be recorded (like in teacher preview mode). They would not be able to participate in choices and forums but could view them. It would be read only in a way like former-student role below but without access to a particular student&#039;s records that former student role would grant. &lt;br /&gt;
&lt;br /&gt;
===Former Student===&lt;br /&gt;
This role would be of particular use for courses with rolling enrollments. This role would be one where a student had completed all of the requirements of a course (ie assignments, quizzes etc.) but wished to have continued access to the course material for review or consultation. The key factor is that one would give access to the completed student to the notes he read, his work and the teacher&#039;s comments on it, but he would not be allowed to do anything that would take up the teacher&#039;s time. In other words, a sort-of read-only access to the course. How forums, which might contain pertinent information and would continue to grow, would be handled is a question. Perhaps the student would be shown only what was in the forums at the time he completed the course. He would not be allowed to see any new posts or add any himself. Same thing for database and glossary entries. In other words, a snapshot of the course at the time his regular enrollment ended. He shouldn&#039;t be able to see the names or profiles of any newly enrolled students for privacy reasons-hence the restrictions on forum access. One issue that would have to be dealt with would be changes to existing modules-such as resources. Does the student get access to the module as it was or as it is? We have no versioning of resources in Moodle so this would be a problem. What about a teacher changing a quiz question so that the answer is different? What would a former student see?&lt;br /&gt;
&lt;br /&gt;
===Librarian===&lt;br /&gt;
&lt;br /&gt;
Reference Librarians have an active role in most of the courses taught at Earlham College (with Bibliographic Instruction). The Librarian role within Moodle could encompass default read access to all courses (unless prohibited by course teacher) and read access to all components of the course unless access is barred (again by teacher). The Librarians would also perhaps have a block called perhaps Reference Services or Reference Desk with write access where they could deposit resources. Also this block might have a chat applet whereby enrolled students could chat to the Reference Librarian on duty about their bibliographic research needs.&lt;br /&gt;
&lt;br /&gt;
===Teacher===&lt;br /&gt;
&lt;br /&gt;
Teachers should have read access to other Teacher&#039;s courses unless explictly prohibited. They should be able to set parts of their own course to be totally private (perhaps even to admin?). Just as each activity can currently be set to have group access, each activity could have a permissions field. Teachers could set default permissions for all activities on their course (eg they might disallow Librarian access for example) and then change the access permission for an individual activity. &lt;br /&gt;
&lt;br /&gt;
I think that what is needed is a simple heirarchy of permissions and levels of granularity.&lt;br /&gt;
&lt;br /&gt;
===Community Education Tutors/Trainers===&lt;br /&gt;
Teachers may be community adult education trainers making use of a school moodle so must only have access to their courses unless given access elsewhere. They would not necessarily get the default teacher privileges.&lt;br /&gt;
&lt;br /&gt;
===Secretary/Student Worker===&lt;br /&gt;
&lt;br /&gt;
We often have faculty who want their departmental secretary or student worker to scan and upload files and perhaps create resources. Currently they have to be given teacher access to the course. This is dangerous from a FERPA standpoint since they could easily get access to grades.&lt;br /&gt;
&lt;br /&gt;
===Teaching Assistant===&lt;br /&gt;
&lt;br /&gt;
Our Faculty frequently have undergraduate students acting as Teaching Assistants. These students need to be able to add resources, create assignments, and possibly grade assignments. However, due to FERPA they cannot have access to other students&#039; overall grade information. I think the requirements here are slightly different than those of Secretary/Student Worker&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*Using Moodle [http://moodle.org/mod/forum/discuss.php?d=38788 Roles and Permissions architecture] forum discussion&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Future]]&lt;/div&gt;</summary>
		<author><name>Cmcqueen</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Roles&amp;diff=2896</id>
		<title>Roles</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Roles&amp;diff=2896"/>
		<updated>2006-05-25T15:31:36Z</updated>

		<summary type="html">&lt;p&gt;Cmcqueen: /* Teacher */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Roles and capabilities&#039;&#039;&#039; are planned to be included in Moodle 1.7. For now, we have some basic ideas of how to implement such a structure in Moodle.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Please note that none of the following is finalised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
By roles, we mean an identifier of the user&#039;s status, for example, teacher, student and forum moderator are examples of roles.&lt;br /&gt;
&lt;br /&gt;
A capability is a permission to access some particular Moodle feature. Capabilities are associated with roles. For example, &#039;&#039;forum_canreadpost&#039;&#039; is a capability.&lt;br /&gt;
&lt;br /&gt;
==The existing system==&lt;br /&gt;
&lt;br /&gt;
Currently in Moodle, we have a fixed set of roles i.e. primary admin, admins, course creators, editing teachers, non-editing teachers, students, and guests. For each role, the capability or actions that they can performed are fixed. For example, the role student allows the user to submit an assignment, but doesn&#039;t allow the user to browse/edit other users&#039; work. By using this setup we limit ourselves to a rather rigid set of capabilities for each role. If we want, say a particular student or group to be able to mark assignments in a particular course, we can&#039;t do that without giving these users teacher privileges.&lt;br /&gt;
&lt;br /&gt;
==The new roles and capability system==&lt;br /&gt;
&lt;br /&gt;
The new system will allow authorized users to define an arbitrary number of roles. Each role can have a customizable set of capabilities in every context. A context can be the whole Moodle site, a course, or a module instance, e.g. quiz 5 in &#039;Introduction to Photography&#039;. An authorized user will be able to assign an arbitrary number of roles to each user. Since the capabilities in each role could be different, there could be conflict in capabilities. This is resolved by giving roles different &#039;priorities&#039;. For example, to prevent a naughty student from posting, one could assign him a &#039;naughty student&#039; role that does not allow him to post. This role should have a priority higher than that of a normal &#039;student&#039; role. &lt;br /&gt;
&lt;br /&gt;
To facilitate exceptional cases in roles and capabilities, we can use exception rules. For example, we can specify a rule saying that all students are able to mark/read other students&#039; assignment in this particular course. Note that such rules need to have a priority as well. The capability of a user, in any context is then resolved by finding the highest priority role/rule.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;A smooth upgrade will be provided with 1.7. The existing roles (admin, teacher, student, etc), and the exisiting capabilities will be retained. This is done by creating default roles at site/course levels, and assigning the current users to these roles accordingly. The default roles will have default capabilities associated with them, which pretty much is what we have  in 1.6. The whole process is automatic so there&#039;s nothing to worry about =). With no modifications, Moodle will operate exactly the same before and after the upgrade.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==The plan==&lt;br /&gt;
&lt;br /&gt;
There are a few major things that need to be done. Here&#039;s a list (in no particular order):&lt;br /&gt;
&lt;br /&gt;
#Identify permissions required for site/course/each module.&lt;br /&gt;
#Define the database structure for storing roles and capabilities.&lt;br /&gt;
#Recode the whole of Moodle, including all modules to support the new structure. Instead of using &amp;lt;code&amp;gt;isteacher()&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;isstudent()&amp;lt;/code&amp;gt; we should be using &amp;lt;code&amp;gt;has_capabity($capability, $instanceid)&amp;lt;/code&amp;gt; etc. A new API for handling roles and capabilities will be implemented (accesslib.php).&lt;br /&gt;
#Add storage of capabilities for each module. Can be done either in a file, e.g. db/capability.xml, or as a sql file that gets installed to a central db whenever this module is installed. Either way, what do we do when we need to upgrade these capabilities? Some capabilities might needs refining/splitting later on. How do we control the &#039;version&#039; of a capability?&lt;br /&gt;
#Consider interface issues, especially how to manage conflicting role/exception rules.&lt;br /&gt;
#Upon logging in, we should use a cache to store capability, down to module level. How should that be structured?&lt;br /&gt;
#Consider the impact on backup/restore.&lt;br /&gt;
#Upgrade path for current users. The user information in table user_coursecreators, user_admins, user_teachers, and user_students will most likely be migrated to the new roles and capabilities tables. The users will most likely be assigned default roles that comes with default capabilities (e.g. teachers, admins, students, etc). The old tables themselves could possibly be dropped at the end of the upgrade.&lt;br /&gt;
&lt;br /&gt;
==Capabilities==&lt;br /&gt;
&lt;br /&gt;
This is a comprehensive list of capabilities, well, in the making. Please edit. Should we distinguish canedit and candelete?&lt;br /&gt;
&lt;br /&gt;
What about a canview capability? Like for choice, where a person is allowed to see the choice question but not participate in it? --[[User:N Hansen|N Hansen]] 19:29, 16 May 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
Certainly need a canview or cansee capability for parents as linked to their childs data/contributions.&lt;br /&gt;
&lt;br /&gt;
Do we need to add canview and cansearch logs at site/course/user/group level?&lt;br /&gt;
&lt;br /&gt;
===Site-level Capabilities===&lt;br /&gt;
&lt;br /&gt;
#canreadblogs&lt;br /&gt;
#canpostblogs&lt;br /&gt;
#candeleteallblogs&lt;br /&gt;
#canbrowseuser&lt;br /&gt;
#canviewhiddenactivity&lt;br /&gt;
#cancreatecourse&lt;br /&gt;
#caneditownprofile&lt;br /&gt;
#caneditallprofiles&lt;br /&gt;
&lt;br /&gt;
===Course-level Capabilities===&lt;br /&gt;
&lt;br /&gt;
#canseecoursecontent&lt;br /&gt;
#caneditcourse&lt;br /&gt;
#cancreatebackups&lt;br /&gt;
#canrestorebackups&lt;br /&gt;
#cancreateblocks&lt;br /&gt;
#caneditblocks&lt;br /&gt;
#candeleteblocks&lt;br /&gt;
&lt;br /&gt;
===Module-level Capabilities===&lt;br /&gt;
&lt;br /&gt;
#Assignment&lt;br /&gt;
##assignment_canadd&lt;br /&gt;
##assignment_canedit&lt;br /&gt;
##assignment_candelete&lt;br /&gt;
##assignment_cansubmit&lt;br /&gt;
##assignment_canmark&lt;br /&gt;
##assignment_canviewsubmissions&lt;br /&gt;
#Chat&lt;br /&gt;
##chat_canadd&lt;br /&gt;
##chat_canedit&lt;br /&gt;
##chat_candelete&lt;br /&gt;
##chat_canparticipate&lt;br /&gt;
##chat_canviewpastsessions&lt;br /&gt;
#Choice&lt;br /&gt;
##choice_canadd&lt;br /&gt;
##choice_canedit&lt;br /&gt;
##choice_candelete&lt;br /&gt;
##choice_canparticipate&lt;br /&gt;
##choice_canviewresponses&lt;br /&gt;
#Database&lt;br /&gt;
##database_canadd&lt;br /&gt;
##database_canedit&lt;br /&gt;
##databaes_candelete&lt;br /&gt;
##database_canaddentry&lt;br /&gt;
##database_canaddtemplates&lt;br /&gt;
##database_canedittemplates&lt;br /&gt;
##database_candeleteownentry&lt;br /&gt;
##database_candeleteallentry&lt;br /&gt;
##database_cancomment&lt;br /&gt;
##database_candeletecomment&lt;br /&gt;
##database_canrate&lt;br /&gt;
#Exercise&lt;br /&gt;
##exercise_canadd&lt;br /&gt;
##exercise_canedit&lt;br /&gt;
##exercise_candelete&lt;br /&gt;
##exercise_canassess&lt;br /&gt;
#Forum&lt;br /&gt;
##forum_canadd&lt;br /&gt;
##forum_canedit&lt;br /&gt;
##forum_candelete&lt;br /&gt;
##forum_canreadpost&lt;br /&gt;
##forum_canstartnewdiscussion&lt;br /&gt;
##forum_canreply&lt;br /&gt;
##forum_caneditallpost&lt;br /&gt;
##forum_candeleteallpost&lt;br /&gt;
##forum_canrate&lt;br /&gt;
#Glossary&lt;br /&gt;
##glossary_canadd&lt;br /&gt;
##glossary_canedit&lt;br /&gt;
##glossary_candelete&lt;br /&gt;
##glossary_canaddcat&lt;br /&gt;
##glossary_caneditcat&lt;br /&gt;
##glossary_candeletecat&lt;br /&gt;
##glossary_canadditem&lt;br /&gt;
##glossary_candeleteitem&lt;br /&gt;
##glossary_canedititem&lt;br /&gt;
##glossary_cancomment&lt;br /&gt;
##glossary_canimportentries&lt;br /&gt;
##glossary_canexportentries&lt;br /&gt;
##glossary_canapprove&lt;br /&gt;
#Hotpot&lt;br /&gt;
##hotpot_candd&lt;br /&gt;
##hotpot_canedit&lt;br /&gt;
##hotpot_candelete&lt;br /&gt;
##hotpot_canparticipate&lt;br /&gt;
#Label&lt;br /&gt;
##label_canadd&lt;br /&gt;
##label_canedit&lt;br /&gt;
##label_candelete&lt;br /&gt;
#Lams&lt;br /&gt;
##lams_canadd&lt;br /&gt;
##lams_canedit&lt;br /&gt;
##lams_candelete&lt;br /&gt;
#Lesson&lt;br /&gt;
##lesson_canadd&lt;br /&gt;
##lesson_canedit&lt;br /&gt;
##lesson_candelete&lt;br /&gt;
##lesson_canparticipate&lt;br /&gt;
#Quiz&lt;br /&gt;
##quiz_canadd&lt;br /&gt;
##quiz_canedit&lt;br /&gt;
##quiz_candelete&lt;br /&gt;
##quiz_canaddquestion&lt;br /&gt;
##quiz_caneditquestion&lt;br /&gt;
##quiz_candeletequestion&lt;br /&gt;
##quiz_canparticipate&lt;br /&gt;
##quiz_cangrade&lt;br /&gt;
#Resource&lt;br /&gt;
##resource_canadd&lt;br /&gt;
##resource_canedit&lt;br /&gt;
##resource_candelete&lt;br /&gt;
#Scorm&lt;br /&gt;
##scorm_canadd&lt;br /&gt;
##scorm_canedit&lt;br /&gt;
##socrm_candelete&lt;br /&gt;
#Survey&lt;br /&gt;
##survey_canadd&lt;br /&gt;
##survey_canedit&lt;br /&gt;
##survey_candelete&lt;br /&gt;
##survey_canviewresponses&lt;br /&gt;
#Wiki&lt;br /&gt;
##wiki_canadd&lt;br /&gt;
##wiki_canedit&lt;br /&gt;
##wiki_candelete&lt;br /&gt;
##wiki_canstartnewwiki&lt;br /&gt;
##wiki_canparticipate&lt;br /&gt;
#Workshop&lt;br /&gt;
##workshop_canadd&lt;br /&gt;
##workshop_canedit&lt;br /&gt;
##workshop_candelete&lt;br /&gt;
##workshop_cangrade&lt;br /&gt;
##workshop_canparticipate&lt;br /&gt;
&lt;br /&gt;
==Scenarios==&lt;br /&gt;
&lt;br /&gt;
This section is for brainstorming some example roles that we would like to support:&lt;br /&gt;
&lt;br /&gt;
===Site Designers===&lt;br /&gt;
Is there a role for peole involved in how the site looks but not full administrators? Thinking here of online control of themes rather than FTP theme uploading. But in either case they caneditlogos, caneditcss, candeditlevelatwhichthemeapplies.&lt;br /&gt;
&lt;br /&gt;
===Educational Authority Adviser===&lt;br /&gt;
Someone who would want to browse the site and may be asked to comment or contribute to particular discussions or developments in school. Access for this role would be controlled by the school in the case of school level moodles but may be different if there were to be a Local Authority wide Moodle.&lt;br /&gt;
&lt;br /&gt;
===Educational Inspector===&lt;br /&gt;
Someone who will visit the site to verify the school&#039;s self review that comments on home school relationships, extending the classroom etc. They may want to see summaries of usage and reports from surveys garnering parent and pupil views.&lt;br /&gt;
&lt;br /&gt;
===Parent===&lt;br /&gt;
A parent will have one or more children in one or more institutions which could be using one or more moodle instances or a mixture of Learning Platforms. A parent&#039;s role will vary depending on the age of their children and whether they are contributing as a parent or a school supporter.&lt;br /&gt;
&lt;br /&gt;
In Early Years (EY) and Key Stage 1 (KS1) they may play/learn on an activity or write for the child. Parents often interpret homework tasks and read to their children perhaps filling in a joint reading diary.&lt;br /&gt;
&lt;br /&gt;
In Key stages 3 and 4 this changes to more of a monitoring/awareness role where a parent would expect to have a summary report of attendance, attainment and general achievement on a weekly/monthly/termly or annual basis. Parents will often be asked to sign and write back comments about this review report.&lt;br /&gt;
&lt;br /&gt;
In all Key Stages there is a great need for parents to receive communication from the school which they can confirm they have received by signing a form. In some cases this may also involve making choices from a list. It may also involve payment for a trip or disco being returned so there could be the possibility of electronic payments.&lt;br /&gt;
&lt;br /&gt;
Parent&#039;s evening often involve complex booking systems that attempt to get parent&#039;s and teachers together. Easy for EY/KS1/KS2 very difficult for KS3/KS4. Wow would this help if it was built into the Learning Platform.&lt;br /&gt;
&lt;br /&gt;
In some cases there needs to be confidential communication between the parent and the teacher without the child being party to this. It may involve teaching and learning but could also involve a behaviour or medical issue. Often this may be done via a sealed letter or face to face. &lt;br /&gt;
&lt;br /&gt;
The latest incarnation of OfSTED with the Self Review Framework (SEF) there is a greater emphasis on schools gathering parent voice via surveys and discussion. There is a clear match here with parents have access to parental votes, questionnaires and discussions and for schools to be able to publish news, results and reports back to parents.&lt;br /&gt;
&lt;br /&gt;
In the UK the LP framework and agenda as being pushed by the DfES via Becta emphasises that within the mandatory groups and roles functionality the parent role is likely to be required to meet the LP Framework procurement standard.&lt;br /&gt;
&lt;br /&gt;
===Manager===&lt;br /&gt;
&#039;&#039;Please add text here...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Weekly Seminar Leader===&lt;br /&gt;
&#039;&#039;In a university seminar, typically 8-15 students in their 3rd/4th year, each student is responsible for leading one topic in a study series.  I ask each student to research 5-10 resources, then give a powerpoint presentation to the other students.  This is followed by an in-class discussion and then online homework.  The homework involves some fun quiz questions and then some reflective journal questions.  I ask each seminar leader to prepare the quiz questions and journal questions as well as their presentation.  To do that, I would like to assign activity-making/authoring roles to the student--either for a short period, or for duration of the whole course.  Thus &amp;quot;Allow Quiz Authoring Role&amp;quot; or &amp;quot;Allow Assignment Authoring Role&amp;quot; at the course level or, if possible, even the Topic level (in a topic or week format course) would be important.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Mentor/Mentee===&lt;br /&gt;
&#039;&#039;Please add text here...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Community-Designed Rating Criteria===&lt;br /&gt;
&#039;&#039;The gradebook tends to be the domain of the teacher.  What if community/peer ratings/marks could also be entered there? What if peer assessment criteria could be designed by the students, not just the teacher?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Visitor===&lt;br /&gt;
&lt;br /&gt;
This would be a role whereby one could allow a visitor to visit one&#039;s classroom. This might be a colleague interested in seeing your course, or a journalist who might be writing an article about one&#039;s site. They should not be able to see the names of any students anywhere (eg recent activity, forum posts) for privacy reasons. They should be able to try out things like quizzes, and lessons but no grades would be recorded (like in teacher preview mode). They would not be able to participate in choices and forums but could view them. It would be read only in a way like former-student role below but without access to a particular student&#039;s records that former student role would grant. &lt;br /&gt;
&lt;br /&gt;
===Former Student===&lt;br /&gt;
This role would be of particular use for courses with rolling enrollments. This role would be one where a student had completed all of the requirements of a course (ie assignments, quizzes etc.) but wished to have continued access to the course material for review or consultation. The key factor is that one would give access to the completed student to the notes he read, his work and the teacher&#039;s comments on it, but he would not be allowed to do anything that would take up the teacher&#039;s time. In other words, a sort-of read-only access to the course. How forums, which might contain pertinent information and would continue to grow, would be handled is a question. Perhaps the student would be shown only what was in the forums at the time he completed the course. He would not be allowed to see any new posts or add any himself. Same thing for database and glossary entries. In other words, a snapshot of the course at the time his regular enrollment ended. He shouldn&#039;t be able to see the names or profiles of any newly enrolled students for privacy reasons-hence the restrictions on forum access. One issue that would have to be dealt with would be changes to existing modules-such as resources. Does the student get access to the module as it was or as it is? We have no versioning of resources in Moodle so this would be a problem. What about a teacher changing a quiz question so that the answer is different? What would a former student see?&lt;br /&gt;
&lt;br /&gt;
===Librarian===&lt;br /&gt;
&lt;br /&gt;
Reference Librarians have an active role in most of the courses taught at Earlham College (with Bibliographic Instruction). The Librarian role within Moodle could encompass default read access to all courses (unless prohibited by course teacher) and read access to all components of the course unless access is barred (again by teacher). The Librarians would also perhaps have a block called perhaps Reference Services or Reference Desk with write access where they could deposit resources. Also this block might have a chat applet whereby enrolled students could chat to the Reference Librarian on duty about their bibliographic research needs.&lt;br /&gt;
&lt;br /&gt;
===Teacher===&lt;br /&gt;
&lt;br /&gt;
Teachers should have read access to other Teacher&#039;s courses unless explictly prohibited. They should be able to set parts of their own course to be totally private (perhaps even to admin?). Just as each activity can currently be set to have group access, each activity could have a permissions field. Teachers could set default permissions for all activities on their course (eg they might disallow Librarian access for example) and then change the access permission for an individual activity. &lt;br /&gt;
&lt;br /&gt;
I think that what is needed is a simple heirarchy of permissions and levels of granularity.&lt;br /&gt;
&lt;br /&gt;
===Community Education Tutors/Trainers===&lt;br /&gt;
Teachers may be community adult education trainers making use of a school moodle so must only have access to their courses unless given access elsewhere. They would not necessarily get the default teacher privileges.&lt;br /&gt;
&lt;br /&gt;
===Secretary/Student Worker===&lt;br /&gt;
&lt;br /&gt;
We often have faculty who want their departmental secretary or student worker to scan and upload files and perhaps create resources. Currently they have to be given teacher access to the course. This is dangerous from a FERPA standpoint since they could easily get access to grades.&lt;br /&gt;
&lt;br /&gt;
===Teaching Assistant===&lt;br /&gt;
&lt;br /&gt;
Our Faculty frequently have undergraduate students acting as Teaching Assistants. These students need to be able to add resources, create assignments, and possibly grade assignments. However, due to FERPA they cannot have access to other students&#039; overall grade information. I think the requirements here are slightly different than those of Secretary/Student Worker&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*Using Moodle [http://moodle.org/mod/forum/discuss.php?d=38788 Roles and Permissions architecture] forum discussion&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Future]]&lt;/div&gt;</summary>
		<author><name>Cmcqueen</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Roles&amp;diff=2895</id>
		<title>Roles</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Roles&amp;diff=2895"/>
		<updated>2006-05-25T15:26:24Z</updated>

		<summary type="html">&lt;p&gt;Cmcqueen: /* Educational Authority Adviser */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Roles and capabilities&#039;&#039;&#039; are planned to be included in Moodle 1.7. For now, we have some basic ideas of how to implement such a structure in Moodle.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Please note that none of the following is finalised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
By roles, we mean an identifier of the user&#039;s status, for example, teacher, student and forum moderator are examples of roles.&lt;br /&gt;
&lt;br /&gt;
A capability is a permission to access some particular Moodle feature. Capabilities are associated with roles. For example, &#039;&#039;forum_canreadpost&#039;&#039; is a capability.&lt;br /&gt;
&lt;br /&gt;
==The existing system==&lt;br /&gt;
&lt;br /&gt;
Currently in Moodle, we have a fixed set of roles i.e. primary admin, admins, course creators, editing teachers, non-editing teachers, students, and guests. For each role, the capability or actions that they can performed are fixed. For example, the role student allows the user to submit an assignment, but doesn&#039;t allow the user to browse/edit other users&#039; work. By using this setup we limit ourselves to a rather rigid set of capabilities for each role. If we want, say a particular student or group to be able to mark assignments in a particular course, we can&#039;t do that without giving these users teacher privileges.&lt;br /&gt;
&lt;br /&gt;
==The new roles and capability system==&lt;br /&gt;
&lt;br /&gt;
The new system will allow authorized users to define an arbitrary number of roles. Each role can have a customizable set of capabilities in every context. A context can be the whole Moodle site, a course, or a module instance, e.g. quiz 5 in &#039;Introduction to Photography&#039;. An authorized user will be able to assign an arbitrary number of roles to each user. Since the capabilities in each role could be different, there could be conflict in capabilities. This is resolved by giving roles different &#039;priorities&#039;. For example, to prevent a naughty student from posting, one could assign him a &#039;naughty student&#039; role that does not allow him to post. This role should have a priority higher than that of a normal &#039;student&#039; role. &lt;br /&gt;
&lt;br /&gt;
To facilitate exceptional cases in roles and capabilities, we can use exception rules. For example, we can specify a rule saying that all students are able to mark/read other students&#039; assignment in this particular course. Note that such rules need to have a priority as well. The capability of a user, in any context is then resolved by finding the highest priority role/rule.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;A smooth upgrade will be provided with 1.7. The existing roles (admin, teacher, student, etc), and the exisiting capabilities will be retained. This is done by creating default roles at site/course levels, and assigning the current users to these roles accordingly. The default roles will have default capabilities associated with them, which pretty much is what we have  in 1.6. The whole process is automatic so there&#039;s nothing to worry about =). With no modifications, Moodle will operate exactly the same before and after the upgrade.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==The plan==&lt;br /&gt;
&lt;br /&gt;
There are a few major things that need to be done. Here&#039;s a list (in no particular order):&lt;br /&gt;
&lt;br /&gt;
#Identify permissions required for site/course/each module.&lt;br /&gt;
#Define the database structure for storing roles and capabilities.&lt;br /&gt;
#Recode the whole of Moodle, including all modules to support the new structure. Instead of using &amp;lt;code&amp;gt;isteacher()&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;isstudent()&amp;lt;/code&amp;gt; we should be using &amp;lt;code&amp;gt;has_capabity($capability, $instanceid)&amp;lt;/code&amp;gt; etc. A new API for handling roles and capabilities will be implemented (accesslib.php).&lt;br /&gt;
#Add storage of capabilities for each module. Can be done either in a file, e.g. db/capability.xml, or as a sql file that gets installed to a central db whenever this module is installed. Either way, what do we do when we need to upgrade these capabilities? Some capabilities might needs refining/splitting later on. How do we control the &#039;version&#039; of a capability?&lt;br /&gt;
#Consider interface issues, especially how to manage conflicting role/exception rules.&lt;br /&gt;
#Upon logging in, we should use a cache to store capability, down to module level. How should that be structured?&lt;br /&gt;
#Consider the impact on backup/restore.&lt;br /&gt;
#Upgrade path for current users. The user information in table user_coursecreators, user_admins, user_teachers, and user_students will most likely be migrated to the new roles and capabilities tables. The users will most likely be assigned default roles that comes with default capabilities (e.g. teachers, admins, students, etc). The old tables themselves could possibly be dropped at the end of the upgrade.&lt;br /&gt;
&lt;br /&gt;
==Capabilities==&lt;br /&gt;
&lt;br /&gt;
This is a comprehensive list of capabilities, well, in the making. Please edit. Should we distinguish canedit and candelete?&lt;br /&gt;
&lt;br /&gt;
What about a canview capability? Like for choice, where a person is allowed to see the choice question but not participate in it? --[[User:N Hansen|N Hansen]] 19:29, 16 May 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
Certainly need a canview or cansee capability for parents as linked to their childs data/contributions.&lt;br /&gt;
&lt;br /&gt;
Do we need to add canview and cansearch logs at site/course/user/group level?&lt;br /&gt;
&lt;br /&gt;
===Site-level Capabilities===&lt;br /&gt;
&lt;br /&gt;
#canreadblogs&lt;br /&gt;
#canpostblogs&lt;br /&gt;
#candeleteallblogs&lt;br /&gt;
#canbrowseuser&lt;br /&gt;
#canviewhiddenactivity&lt;br /&gt;
#cancreatecourse&lt;br /&gt;
#caneditownprofile&lt;br /&gt;
#caneditallprofiles&lt;br /&gt;
&lt;br /&gt;
===Course-level Capabilities===&lt;br /&gt;
&lt;br /&gt;
#canseecoursecontent&lt;br /&gt;
#caneditcourse&lt;br /&gt;
#cancreatebackups&lt;br /&gt;
#canrestorebackups&lt;br /&gt;
#cancreateblocks&lt;br /&gt;
#caneditblocks&lt;br /&gt;
#candeleteblocks&lt;br /&gt;
&lt;br /&gt;
===Module-level Capabilities===&lt;br /&gt;
&lt;br /&gt;
#Assignment&lt;br /&gt;
##assignment_canadd&lt;br /&gt;
##assignment_canedit&lt;br /&gt;
##assignment_candelete&lt;br /&gt;
##assignment_cansubmit&lt;br /&gt;
##assignment_canmark&lt;br /&gt;
##assignment_canviewsubmissions&lt;br /&gt;
#Chat&lt;br /&gt;
##chat_canadd&lt;br /&gt;
##chat_canedit&lt;br /&gt;
##chat_candelete&lt;br /&gt;
##chat_canparticipate&lt;br /&gt;
##chat_canviewpastsessions&lt;br /&gt;
#Choice&lt;br /&gt;
##choice_canadd&lt;br /&gt;
##choice_canedit&lt;br /&gt;
##choice_candelete&lt;br /&gt;
##choice_canparticipate&lt;br /&gt;
##choice_canviewresponses&lt;br /&gt;
#Database&lt;br /&gt;
##database_canadd&lt;br /&gt;
##database_canedit&lt;br /&gt;
##databaes_candelete&lt;br /&gt;
##database_canaddentry&lt;br /&gt;
##database_canaddtemplates&lt;br /&gt;
##database_canedittemplates&lt;br /&gt;
##database_candeleteownentry&lt;br /&gt;
##database_candeleteallentry&lt;br /&gt;
##database_cancomment&lt;br /&gt;
##database_candeletecomment&lt;br /&gt;
##database_canrate&lt;br /&gt;
#Exercise&lt;br /&gt;
##exercise_canadd&lt;br /&gt;
##exercise_canedit&lt;br /&gt;
##exercise_candelete&lt;br /&gt;
##exercise_canassess&lt;br /&gt;
#Forum&lt;br /&gt;
##forum_canadd&lt;br /&gt;
##forum_canedit&lt;br /&gt;
##forum_candelete&lt;br /&gt;
##forum_canreadpost&lt;br /&gt;
##forum_canstartnewdiscussion&lt;br /&gt;
##forum_canreply&lt;br /&gt;
##forum_caneditallpost&lt;br /&gt;
##forum_candeleteallpost&lt;br /&gt;
##forum_canrate&lt;br /&gt;
#Glossary&lt;br /&gt;
##glossary_canadd&lt;br /&gt;
##glossary_canedit&lt;br /&gt;
##glossary_candelete&lt;br /&gt;
##glossary_canaddcat&lt;br /&gt;
##glossary_caneditcat&lt;br /&gt;
##glossary_candeletecat&lt;br /&gt;
##glossary_canadditem&lt;br /&gt;
##glossary_candeleteitem&lt;br /&gt;
##glossary_canedititem&lt;br /&gt;
##glossary_cancomment&lt;br /&gt;
##glossary_canimportentries&lt;br /&gt;
##glossary_canexportentries&lt;br /&gt;
##glossary_canapprove&lt;br /&gt;
#Hotpot&lt;br /&gt;
##hotpot_candd&lt;br /&gt;
##hotpot_canedit&lt;br /&gt;
##hotpot_candelete&lt;br /&gt;
##hotpot_canparticipate&lt;br /&gt;
#Label&lt;br /&gt;
##label_canadd&lt;br /&gt;
##label_canedit&lt;br /&gt;
##label_candelete&lt;br /&gt;
#Lams&lt;br /&gt;
##lams_canadd&lt;br /&gt;
##lams_canedit&lt;br /&gt;
##lams_candelete&lt;br /&gt;
#Lesson&lt;br /&gt;
##lesson_canadd&lt;br /&gt;
##lesson_canedit&lt;br /&gt;
##lesson_candelete&lt;br /&gt;
##lesson_canparticipate&lt;br /&gt;
#Quiz&lt;br /&gt;
##quiz_canadd&lt;br /&gt;
##quiz_canedit&lt;br /&gt;
##quiz_candelete&lt;br /&gt;
##quiz_canaddquestion&lt;br /&gt;
##quiz_caneditquestion&lt;br /&gt;
##quiz_candeletequestion&lt;br /&gt;
##quiz_canparticipate&lt;br /&gt;
##quiz_cangrade&lt;br /&gt;
#Resource&lt;br /&gt;
##resource_canadd&lt;br /&gt;
##resource_canedit&lt;br /&gt;
##resource_candelete&lt;br /&gt;
#Scorm&lt;br /&gt;
##scorm_canadd&lt;br /&gt;
##scorm_canedit&lt;br /&gt;
##socrm_candelete&lt;br /&gt;
#Survey&lt;br /&gt;
##survey_canadd&lt;br /&gt;
##survey_canedit&lt;br /&gt;
##survey_candelete&lt;br /&gt;
##survey_canviewresponses&lt;br /&gt;
#Wiki&lt;br /&gt;
##wiki_canadd&lt;br /&gt;
##wiki_canedit&lt;br /&gt;
##wiki_candelete&lt;br /&gt;
##wiki_canstartnewwiki&lt;br /&gt;
##wiki_canparticipate&lt;br /&gt;
#Workshop&lt;br /&gt;
##workshop_canadd&lt;br /&gt;
##workshop_canedit&lt;br /&gt;
##workshop_candelete&lt;br /&gt;
##workshop_cangrade&lt;br /&gt;
##workshop_canparticipate&lt;br /&gt;
&lt;br /&gt;
==Scenarios==&lt;br /&gt;
&lt;br /&gt;
This section is for brainstorming some example roles that we would like to support:&lt;br /&gt;
&lt;br /&gt;
===Site Designers===&lt;br /&gt;
Is there a role for peole involved in how the site looks but not full administrators? Thinking here of online control of themes rather than FTP theme uploading. But in either case they caneditlogos, caneditcss, candeditlevelatwhichthemeapplies.&lt;br /&gt;
&lt;br /&gt;
===Educational Authority Adviser===&lt;br /&gt;
Someone who would want to browse the site and may be asked to comment or contribute to particular discussions or developments in school. Access for this role would be controlled by the school in the case of school level moodles but may be different if there were to be a Local Authority wide Moodle.&lt;br /&gt;
&lt;br /&gt;
===Educational Inspector===&lt;br /&gt;
Someone who will visit the site to verify the school&#039;s self review that comments on home school relationships, extending the classroom etc. They may want to see summaries of usage and reports from surveys garnering parent and pupil views.&lt;br /&gt;
&lt;br /&gt;
===Parent===&lt;br /&gt;
A parent will have one or more children in one or more institutions which could be using one or more moodle instances or a mixture of Learning Platforms. A parent&#039;s role will vary depending on the age of their children and whether they are contributing as a parent or a school supporter.&lt;br /&gt;
&lt;br /&gt;
In Early Years (EY) and Key Stage 1 (KS1) they may play/learn on an activity or write for the child. Parents often interpret homework tasks and read to their children perhaps filling in a joint reading diary.&lt;br /&gt;
&lt;br /&gt;
In Key stages 3 and 4 this changes to more of a monitoring/awareness role where a parent would expect to have a summary report of attendance, attainment and general achievement on a weekly/monthly/termly or annual basis. Parents will often be asked to sign and write back comments about this review report.&lt;br /&gt;
&lt;br /&gt;
In all Key Stages there is a great need for parents to receive communication from the school which they can confirm they have received by signing a form. In some cases this may also involve making choices from a list. It may also involve payment for a trip or disco being returned so there could be the possibility of electronic payments.&lt;br /&gt;
&lt;br /&gt;
Parent&#039;s evening often involve complex booking systems that attempt to get parent&#039;s and teachers together. Easy for EY/KS1/KS2 very difficult for KS3/KS4. Wow would this help if it was built into the Learning Platform.&lt;br /&gt;
&lt;br /&gt;
In some cases there needs to be confidential communication between the parent and the teacher without the child being party to this. It may involve teaching and learning but could also involve a behaviour or medical issue. Often this may be done via a sealed letter or face to face. &lt;br /&gt;
&lt;br /&gt;
The latest incarnation of OfSTED with the Self Review Framework (SEF) there is a greater emphasis on schools gathering parent voice via surveys and discussion. There is a clear match here with parents have access to parental votes, questionnaires and discussions and for schools to be able to publish news, results and reports back to parents.&lt;br /&gt;
&lt;br /&gt;
In the UK the LP framework and agenda as being pushed by the DfES via Becta emphasises that within the mandatory groups and roles functionality the parent role is likely to be required to meet the LP Framework procurement standard.&lt;br /&gt;
&lt;br /&gt;
===Manager===&lt;br /&gt;
&#039;&#039;Please add text here...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Weekly Seminar Leader===&lt;br /&gt;
&#039;&#039;In a university seminar, typically 8-15 students in their 3rd/4th year, each student is responsible for leading one topic in a study series.  I ask each student to research 5-10 resources, then give a powerpoint presentation to the other students.  This is followed by an in-class discussion and then online homework.  The homework involves some fun quiz questions and then some reflective journal questions.  I ask each seminar leader to prepare the quiz questions and journal questions as well as their presentation.  To do that, I would like to assign activity-making/authoring roles to the student--either for a short period, or for duration of the whole course.  Thus &amp;quot;Allow Quiz Authoring Role&amp;quot; or &amp;quot;Allow Assignment Authoring Role&amp;quot; at the course level or, if possible, even the Topic level (in a topic or week format course) would be important.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Mentor/Mentee===&lt;br /&gt;
&#039;&#039;Please add text here...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Community-Designed Rating Criteria===&lt;br /&gt;
&#039;&#039;The gradebook tends to be the domain of the teacher.  What if community/peer ratings/marks could also be entered there? What if peer assessment criteria could be designed by the students, not just the teacher?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Visitor===&lt;br /&gt;
&lt;br /&gt;
This would be a role whereby one could allow a visitor to visit one&#039;s classroom. This might be a colleague interested in seeing your course, or a journalist who might be writing an article about one&#039;s site. They should not be able to see the names of any students anywhere (eg recent activity, forum posts) for privacy reasons. They should be able to try out things like quizzes, and lessons but no grades would be recorded (like in teacher preview mode). They would not be able to participate in choices and forums but could view them. It would be read only in a way like former-student role below but without access to a particular student&#039;s records that former student role would grant. &lt;br /&gt;
&lt;br /&gt;
===Former Student===&lt;br /&gt;
This role would be of particular use for courses with rolling enrollments. This role would be one where a student had completed all of the requirements of a course (ie assignments, quizzes etc.) but wished to have continued access to the course material for review or consultation. The key factor is that one would give access to the completed student to the notes he read, his work and the teacher&#039;s comments on it, but he would not be allowed to do anything that would take up the teacher&#039;s time. In other words, a sort-of read-only access to the course. How forums, which might contain pertinent information and would continue to grow, would be handled is a question. Perhaps the student would be shown only what was in the forums at the time he completed the course. He would not be allowed to see any new posts or add any himself. Same thing for database and glossary entries. In other words, a snapshot of the course at the time his regular enrollment ended. He shouldn&#039;t be able to see the names or profiles of any newly enrolled students for privacy reasons-hence the restrictions on forum access. One issue that would have to be dealt with would be changes to existing modules-such as resources. Does the student get access to the module as it was or as it is? We have no versioning of resources in Moodle so this would be a problem. What about a teacher changing a quiz question so that the answer is different? What would a former student see?&lt;br /&gt;
&lt;br /&gt;
===Librarian===&lt;br /&gt;
&lt;br /&gt;
Reference Librarians have an active role in most of the courses taught at Earlham College (with Bibliographic Instruction). The Librarian role within Moodle could encompass default read access to all courses (unless prohibited by course teacher) and read access to all components of the course unless access is barred (again by teacher). The Librarians would also perhaps have a block called perhaps Reference Services or Reference Desk with write access where they could deposit resources. Also this block might have a chat applet whereby enrolled students could chat to the Reference Librarian on duty about their bibliographic research needs.&lt;br /&gt;
&lt;br /&gt;
===Teacher===&lt;br /&gt;
&lt;br /&gt;
Teachers should have read access to other Teacher&#039;s courses unless explictly prohibited. They should be able to set parts of their own course to be totally private (perhaps even to admin?). Just as each activity can currently be set to have group access, each activity could have a permissions field. Teachers could set default permissions for all activities on their course (eg they might disallow Librarian access for example) and then change the access permission for an individual activity.&lt;br /&gt;
&lt;br /&gt;
I think that what is needed is a simple heirarchy of permissions and levels of granularity. &lt;br /&gt;
&lt;br /&gt;
===Secretary/Student Worker===&lt;br /&gt;
&lt;br /&gt;
We often have faculty who want their departmental secretary or student worker to scan and upload files and perhaps create resources. Currently they have to be given teacher access to the course. This is dangerous from a FERPA standpoint since they could easily get access to grades.&lt;br /&gt;
&lt;br /&gt;
===Teaching Assistant===&lt;br /&gt;
&lt;br /&gt;
Our Faculty frequently have undergraduate students acting as Teaching Assistants. These students need to be able to add resources, create assignments, and possibly grade assignments. However, due to FERPA they cannot have access to other students&#039; overall grade information. I think the requirements here are slightly different than those of Secretary/Student Worker&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*Using Moodle [http://moodle.org/mod/forum/discuss.php?d=38788 Roles and Permissions architecture] forum discussion&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Future]]&lt;/div&gt;</summary>
		<author><name>Cmcqueen</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Roles&amp;diff=2894</id>
		<title>Roles</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Roles&amp;diff=2894"/>
		<updated>2006-05-25T15:25:59Z</updated>

		<summary type="html">&lt;p&gt;Cmcqueen: /* Scenarios */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Roles and capabilities&#039;&#039;&#039; are planned to be included in Moodle 1.7. For now, we have some basic ideas of how to implement such a structure in Moodle.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Please note that none of the following is finalised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
By roles, we mean an identifier of the user&#039;s status, for example, teacher, student and forum moderator are examples of roles.&lt;br /&gt;
&lt;br /&gt;
A capability is a permission to access some particular Moodle feature. Capabilities are associated with roles. For example, &#039;&#039;forum_canreadpost&#039;&#039; is a capability.&lt;br /&gt;
&lt;br /&gt;
==The existing system==&lt;br /&gt;
&lt;br /&gt;
Currently in Moodle, we have a fixed set of roles i.e. primary admin, admins, course creators, editing teachers, non-editing teachers, students, and guests. For each role, the capability or actions that they can performed are fixed. For example, the role student allows the user to submit an assignment, but doesn&#039;t allow the user to browse/edit other users&#039; work. By using this setup we limit ourselves to a rather rigid set of capabilities for each role. If we want, say a particular student or group to be able to mark assignments in a particular course, we can&#039;t do that without giving these users teacher privileges.&lt;br /&gt;
&lt;br /&gt;
==The new roles and capability system==&lt;br /&gt;
&lt;br /&gt;
The new system will allow authorized users to define an arbitrary number of roles. Each role can have a customizable set of capabilities in every context. A context can be the whole Moodle site, a course, or a module instance, e.g. quiz 5 in &#039;Introduction to Photography&#039;. An authorized user will be able to assign an arbitrary number of roles to each user. Since the capabilities in each role could be different, there could be conflict in capabilities. This is resolved by giving roles different &#039;priorities&#039;. For example, to prevent a naughty student from posting, one could assign him a &#039;naughty student&#039; role that does not allow him to post. This role should have a priority higher than that of a normal &#039;student&#039; role. &lt;br /&gt;
&lt;br /&gt;
To facilitate exceptional cases in roles and capabilities, we can use exception rules. For example, we can specify a rule saying that all students are able to mark/read other students&#039; assignment in this particular course. Note that such rules need to have a priority as well. The capability of a user, in any context is then resolved by finding the highest priority role/rule.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;A smooth upgrade will be provided with 1.7. The existing roles (admin, teacher, student, etc), and the exisiting capabilities will be retained. This is done by creating default roles at site/course levels, and assigning the current users to these roles accordingly. The default roles will have default capabilities associated with them, which pretty much is what we have  in 1.6. The whole process is automatic so there&#039;s nothing to worry about =). With no modifications, Moodle will operate exactly the same before and after the upgrade.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==The plan==&lt;br /&gt;
&lt;br /&gt;
There are a few major things that need to be done. Here&#039;s a list (in no particular order):&lt;br /&gt;
&lt;br /&gt;
#Identify permissions required for site/course/each module.&lt;br /&gt;
#Define the database structure for storing roles and capabilities.&lt;br /&gt;
#Recode the whole of Moodle, including all modules to support the new structure. Instead of using &amp;lt;code&amp;gt;isteacher()&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;isstudent()&amp;lt;/code&amp;gt; we should be using &amp;lt;code&amp;gt;has_capabity($capability, $instanceid)&amp;lt;/code&amp;gt; etc. A new API for handling roles and capabilities will be implemented (accesslib.php).&lt;br /&gt;
#Add storage of capabilities for each module. Can be done either in a file, e.g. db/capability.xml, or as a sql file that gets installed to a central db whenever this module is installed. Either way, what do we do when we need to upgrade these capabilities? Some capabilities might needs refining/splitting later on. How do we control the &#039;version&#039; of a capability?&lt;br /&gt;
#Consider interface issues, especially how to manage conflicting role/exception rules.&lt;br /&gt;
#Upon logging in, we should use a cache to store capability, down to module level. How should that be structured?&lt;br /&gt;
#Consider the impact on backup/restore.&lt;br /&gt;
#Upgrade path for current users. The user information in table user_coursecreators, user_admins, user_teachers, and user_students will most likely be migrated to the new roles and capabilities tables. The users will most likely be assigned default roles that comes with default capabilities (e.g. teachers, admins, students, etc). The old tables themselves could possibly be dropped at the end of the upgrade.&lt;br /&gt;
&lt;br /&gt;
==Capabilities==&lt;br /&gt;
&lt;br /&gt;
This is a comprehensive list of capabilities, well, in the making. Please edit. Should we distinguish canedit and candelete?&lt;br /&gt;
&lt;br /&gt;
What about a canview capability? Like for choice, where a person is allowed to see the choice question but not participate in it? --[[User:N Hansen|N Hansen]] 19:29, 16 May 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
Certainly need a canview or cansee capability for parents as linked to their childs data/contributions.&lt;br /&gt;
&lt;br /&gt;
Do we need to add canview and cansearch logs at site/course/user/group level?&lt;br /&gt;
&lt;br /&gt;
===Site-level Capabilities===&lt;br /&gt;
&lt;br /&gt;
#canreadblogs&lt;br /&gt;
#canpostblogs&lt;br /&gt;
#candeleteallblogs&lt;br /&gt;
#canbrowseuser&lt;br /&gt;
#canviewhiddenactivity&lt;br /&gt;
#cancreatecourse&lt;br /&gt;
#caneditownprofile&lt;br /&gt;
#caneditallprofiles&lt;br /&gt;
&lt;br /&gt;
===Course-level Capabilities===&lt;br /&gt;
&lt;br /&gt;
#canseecoursecontent&lt;br /&gt;
#caneditcourse&lt;br /&gt;
#cancreatebackups&lt;br /&gt;
#canrestorebackups&lt;br /&gt;
#cancreateblocks&lt;br /&gt;
#caneditblocks&lt;br /&gt;
#candeleteblocks&lt;br /&gt;
&lt;br /&gt;
===Module-level Capabilities===&lt;br /&gt;
&lt;br /&gt;
#Assignment&lt;br /&gt;
##assignment_canadd&lt;br /&gt;
##assignment_canedit&lt;br /&gt;
##assignment_candelete&lt;br /&gt;
##assignment_cansubmit&lt;br /&gt;
##assignment_canmark&lt;br /&gt;
##assignment_canviewsubmissions&lt;br /&gt;
#Chat&lt;br /&gt;
##chat_canadd&lt;br /&gt;
##chat_canedit&lt;br /&gt;
##chat_candelete&lt;br /&gt;
##chat_canparticipate&lt;br /&gt;
##chat_canviewpastsessions&lt;br /&gt;
#Choice&lt;br /&gt;
##choice_canadd&lt;br /&gt;
##choice_canedit&lt;br /&gt;
##choice_candelete&lt;br /&gt;
##choice_canparticipate&lt;br /&gt;
##choice_canviewresponses&lt;br /&gt;
#Database&lt;br /&gt;
##database_canadd&lt;br /&gt;
##database_canedit&lt;br /&gt;
##databaes_candelete&lt;br /&gt;
##database_canaddentry&lt;br /&gt;
##database_canaddtemplates&lt;br /&gt;
##database_canedittemplates&lt;br /&gt;
##database_candeleteownentry&lt;br /&gt;
##database_candeleteallentry&lt;br /&gt;
##database_cancomment&lt;br /&gt;
##database_candeletecomment&lt;br /&gt;
##database_canrate&lt;br /&gt;
#Exercise&lt;br /&gt;
##exercise_canadd&lt;br /&gt;
##exercise_canedit&lt;br /&gt;
##exercise_candelete&lt;br /&gt;
##exercise_canassess&lt;br /&gt;
#Forum&lt;br /&gt;
##forum_canadd&lt;br /&gt;
##forum_canedit&lt;br /&gt;
##forum_candelete&lt;br /&gt;
##forum_canreadpost&lt;br /&gt;
##forum_canstartnewdiscussion&lt;br /&gt;
##forum_canreply&lt;br /&gt;
##forum_caneditallpost&lt;br /&gt;
##forum_candeleteallpost&lt;br /&gt;
##forum_canrate&lt;br /&gt;
#Glossary&lt;br /&gt;
##glossary_canadd&lt;br /&gt;
##glossary_canedit&lt;br /&gt;
##glossary_candelete&lt;br /&gt;
##glossary_canaddcat&lt;br /&gt;
##glossary_caneditcat&lt;br /&gt;
##glossary_candeletecat&lt;br /&gt;
##glossary_canadditem&lt;br /&gt;
##glossary_candeleteitem&lt;br /&gt;
##glossary_canedititem&lt;br /&gt;
##glossary_cancomment&lt;br /&gt;
##glossary_canimportentries&lt;br /&gt;
##glossary_canexportentries&lt;br /&gt;
##glossary_canapprove&lt;br /&gt;
#Hotpot&lt;br /&gt;
##hotpot_candd&lt;br /&gt;
##hotpot_canedit&lt;br /&gt;
##hotpot_candelete&lt;br /&gt;
##hotpot_canparticipate&lt;br /&gt;
#Label&lt;br /&gt;
##label_canadd&lt;br /&gt;
##label_canedit&lt;br /&gt;
##label_candelete&lt;br /&gt;
#Lams&lt;br /&gt;
##lams_canadd&lt;br /&gt;
##lams_canedit&lt;br /&gt;
##lams_candelete&lt;br /&gt;
#Lesson&lt;br /&gt;
##lesson_canadd&lt;br /&gt;
##lesson_canedit&lt;br /&gt;
##lesson_candelete&lt;br /&gt;
##lesson_canparticipate&lt;br /&gt;
#Quiz&lt;br /&gt;
##quiz_canadd&lt;br /&gt;
##quiz_canedit&lt;br /&gt;
##quiz_candelete&lt;br /&gt;
##quiz_canaddquestion&lt;br /&gt;
##quiz_caneditquestion&lt;br /&gt;
##quiz_candeletequestion&lt;br /&gt;
##quiz_canparticipate&lt;br /&gt;
##quiz_cangrade&lt;br /&gt;
#Resource&lt;br /&gt;
##resource_canadd&lt;br /&gt;
##resource_canedit&lt;br /&gt;
##resource_candelete&lt;br /&gt;
#Scorm&lt;br /&gt;
##scorm_canadd&lt;br /&gt;
##scorm_canedit&lt;br /&gt;
##socrm_candelete&lt;br /&gt;
#Survey&lt;br /&gt;
##survey_canadd&lt;br /&gt;
##survey_canedit&lt;br /&gt;
##survey_candelete&lt;br /&gt;
##survey_canviewresponses&lt;br /&gt;
#Wiki&lt;br /&gt;
##wiki_canadd&lt;br /&gt;
##wiki_canedit&lt;br /&gt;
##wiki_candelete&lt;br /&gt;
##wiki_canstartnewwiki&lt;br /&gt;
##wiki_canparticipate&lt;br /&gt;
#Workshop&lt;br /&gt;
##workshop_canadd&lt;br /&gt;
##workshop_canedit&lt;br /&gt;
##workshop_candelete&lt;br /&gt;
##workshop_cangrade&lt;br /&gt;
##workshop_canparticipate&lt;br /&gt;
&lt;br /&gt;
==Scenarios==&lt;br /&gt;
&lt;br /&gt;
This section is for brainstorming some example roles that we would like to support:&lt;br /&gt;
&lt;br /&gt;
===Site Designers===&lt;br /&gt;
Is there a role for peole involved in how the site looks but not full administrators? Thinking here of online control of themes rather than FTP theme uploading. But in either case they caneditlogos, caneditcss, candeditlevelatwhichthemeapplies.&lt;br /&gt;
&lt;br /&gt;
===Educational Authority Adviser===&lt;br /&gt;
Someone who would want to browse the site and may be asked to comment or contibute to particular discussions or developments in school. Access for this role would be controlled by the school in the case of school level moodles but may be different if there were to be a Local Authority wide Moodle.&lt;br /&gt;
&lt;br /&gt;
===Educational Inspector===&lt;br /&gt;
Someone who will visit the site to verify the school&#039;s self review that comments on home school relationships, extending the classroom etc. They may want to see summaries of usage and reports from surveys garnering parent and pupil views.&lt;br /&gt;
&lt;br /&gt;
===Parent===&lt;br /&gt;
A parent will have one or more children in one or more institutions which could be using one or more moodle instances or a mixture of Learning Platforms. A parent&#039;s role will vary depending on the age of their children and whether they are contributing as a parent or a school supporter.&lt;br /&gt;
&lt;br /&gt;
In Early Years (EY) and Key Stage 1 (KS1) they may play/learn on an activity or write for the child. Parents often interpret homework tasks and read to their children perhaps filling in a joint reading diary.&lt;br /&gt;
&lt;br /&gt;
In Key stages 3 and 4 this changes to more of a monitoring/awareness role where a parent would expect to have a summary report of attendance, attainment and general achievement on a weekly/monthly/termly or annual basis. Parents will often be asked to sign and write back comments about this review report.&lt;br /&gt;
&lt;br /&gt;
In all Key Stages there is a great need for parents to receive communication from the school which they can confirm they have received by signing a form. In some cases this may also involve making choices from a list. It may also involve payment for a trip or disco being returned so there could be the possibility of electronic payments.&lt;br /&gt;
&lt;br /&gt;
Parent&#039;s evening often involve complex booking systems that attempt to get parent&#039;s and teachers together. Easy for EY/KS1/KS2 very difficult for KS3/KS4. Wow would this help if it was built into the Learning Platform.&lt;br /&gt;
&lt;br /&gt;
In some cases there needs to be confidential communication between the parent and the teacher without the child being party to this. It may involve teaching and learning but could also involve a behaviour or medical issue. Often this may be done via a sealed letter or face to face. &lt;br /&gt;
&lt;br /&gt;
The latest incarnation of OfSTED with the Self Review Framework (SEF) there is a greater emphasis on schools gathering parent voice via surveys and discussion. There is a clear match here with parents have access to parental votes, questionnaires and discussions and for schools to be able to publish news, results and reports back to parents.&lt;br /&gt;
&lt;br /&gt;
In the UK the LP framework and agenda as being pushed by the DfES via Becta emphasises that within the mandatory groups and roles functionality the parent role is likely to be required to meet the LP Framework procurement standard.&lt;br /&gt;
&lt;br /&gt;
===Manager===&lt;br /&gt;
&#039;&#039;Please add text here...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Weekly Seminar Leader===&lt;br /&gt;
&#039;&#039;In a university seminar, typically 8-15 students in their 3rd/4th year, each student is responsible for leading one topic in a study series.  I ask each student to research 5-10 resources, then give a powerpoint presentation to the other students.  This is followed by an in-class discussion and then online homework.  The homework involves some fun quiz questions and then some reflective journal questions.  I ask each seminar leader to prepare the quiz questions and journal questions as well as their presentation.  To do that, I would like to assign activity-making/authoring roles to the student--either for a short period, or for duration of the whole course.  Thus &amp;quot;Allow Quiz Authoring Role&amp;quot; or &amp;quot;Allow Assignment Authoring Role&amp;quot; at the course level or, if possible, even the Topic level (in a topic or week format course) would be important.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Mentor/Mentee===&lt;br /&gt;
&#039;&#039;Please add text here...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Community-Designed Rating Criteria===&lt;br /&gt;
&#039;&#039;The gradebook tends to be the domain of the teacher.  What if community/peer ratings/marks could also be entered there? What if peer assessment criteria could be designed by the students, not just the teacher?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Visitor===&lt;br /&gt;
&lt;br /&gt;
This would be a role whereby one could allow a visitor to visit one&#039;s classroom. This might be a colleague interested in seeing your course, or a journalist who might be writing an article about one&#039;s site. They should not be able to see the names of any students anywhere (eg recent activity, forum posts) for privacy reasons. They should be able to try out things like quizzes, and lessons but no grades would be recorded (like in teacher preview mode). They would not be able to participate in choices and forums but could view them. It would be read only in a way like former-student role below but without access to a particular student&#039;s records that former student role would grant. &lt;br /&gt;
&lt;br /&gt;
===Former Student===&lt;br /&gt;
This role would be of particular use for courses with rolling enrollments. This role would be one where a student had completed all of the requirements of a course (ie assignments, quizzes etc.) but wished to have continued access to the course material for review or consultation. The key factor is that one would give access to the completed student to the notes he read, his work and the teacher&#039;s comments on it, but he would not be allowed to do anything that would take up the teacher&#039;s time. In other words, a sort-of read-only access to the course. How forums, which might contain pertinent information and would continue to grow, would be handled is a question. Perhaps the student would be shown only what was in the forums at the time he completed the course. He would not be allowed to see any new posts or add any himself. Same thing for database and glossary entries. In other words, a snapshot of the course at the time his regular enrollment ended. He shouldn&#039;t be able to see the names or profiles of any newly enrolled students for privacy reasons-hence the restrictions on forum access. One issue that would have to be dealt with would be changes to existing modules-such as resources. Does the student get access to the module as it was or as it is? We have no versioning of resources in Moodle so this would be a problem. What about a teacher changing a quiz question so that the answer is different? What would a former student see?&lt;br /&gt;
&lt;br /&gt;
===Librarian===&lt;br /&gt;
&lt;br /&gt;
Reference Librarians have an active role in most of the courses taught at Earlham College (with Bibliographic Instruction). The Librarian role within Moodle could encompass default read access to all courses (unless prohibited by course teacher) and read access to all components of the course unless access is barred (again by teacher). The Librarians would also perhaps have a block called perhaps Reference Services or Reference Desk with write access where they could deposit resources. Also this block might have a chat applet whereby enrolled students could chat to the Reference Librarian on duty about their bibliographic research needs.&lt;br /&gt;
&lt;br /&gt;
===Teacher===&lt;br /&gt;
&lt;br /&gt;
Teachers should have read access to other Teacher&#039;s courses unless explictly prohibited. They should be able to set parts of their own course to be totally private (perhaps even to admin?). Just as each activity can currently be set to have group access, each activity could have a permissions field. Teachers could set default permissions for all activities on their course (eg they might disallow Librarian access for example) and then change the access permission for an individual activity.&lt;br /&gt;
&lt;br /&gt;
I think that what is needed is a simple heirarchy of permissions and levels of granularity. &lt;br /&gt;
&lt;br /&gt;
===Secretary/Student Worker===&lt;br /&gt;
&lt;br /&gt;
We often have faculty who want their departmental secretary or student worker to scan and upload files and perhaps create resources. Currently they have to be given teacher access to the course. This is dangerous from a FERPA standpoint since they could easily get access to grades.&lt;br /&gt;
&lt;br /&gt;
===Teaching Assistant===&lt;br /&gt;
&lt;br /&gt;
Our Faculty frequently have undergraduate students acting as Teaching Assistants. These students need to be able to add resources, create assignments, and possibly grade assignments. However, due to FERPA they cannot have access to other students&#039; overall grade information. I think the requirements here are slightly different than those of Secretary/Student Worker&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*Using Moodle [http://moodle.org/mod/forum/discuss.php?d=38788 Roles and Permissions architecture] forum discussion&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Future]]&lt;/div&gt;</summary>
		<author><name>Cmcqueen</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Roles&amp;diff=2893</id>
		<title>Roles</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Roles&amp;diff=2893"/>
		<updated>2006-05-25T15:12:49Z</updated>

		<summary type="html">&lt;p&gt;Cmcqueen: /* Capabilities */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Roles and capabilities&#039;&#039;&#039; are planned to be included in Moodle 1.7. For now, we have some basic ideas of how to implement such a structure in Moodle.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Please note that none of the following is finalised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
By roles, we mean an identifier of the user&#039;s status, for example, teacher, student and forum moderator are examples of roles.&lt;br /&gt;
&lt;br /&gt;
A capability is a permission to access some particular Moodle feature. Capabilities are associated with roles. For example, &#039;&#039;forum_canreadpost&#039;&#039; is a capability.&lt;br /&gt;
&lt;br /&gt;
==The existing system==&lt;br /&gt;
&lt;br /&gt;
Currently in Moodle, we have a fixed set of roles i.e. primary admin, admins, course creators, editing teachers, non-editing teachers, students, and guests. For each role, the capability or actions that they can performed are fixed. For example, the role student allows the user to submit an assignment, but doesn&#039;t allow the user to browse/edit other users&#039; work. By using this setup we limit ourselves to a rather rigid set of capabilities for each role. If we want, say a particular student or group to be able to mark assignments in a particular course, we can&#039;t do that without giving these users teacher privileges.&lt;br /&gt;
&lt;br /&gt;
==The new roles and capability system==&lt;br /&gt;
&lt;br /&gt;
The new system will allow authorized users to define an arbitrary number of roles. Each role can have a customizable set of capabilities in every context. A context can be the whole Moodle site, a course, or a module instance, e.g. quiz 5 in &#039;Introduction to Photography&#039;. An authorized user will be able to assign an arbitrary number of roles to each user. Since the capabilities in each role could be different, there could be conflict in capabilities. This is resolved by giving roles different &#039;priorities&#039;. For example, to prevent a naughty student from posting, one could assign him a &#039;naughty student&#039; role that does not allow him to post. This role should have a priority higher than that of a normal &#039;student&#039; role. &lt;br /&gt;
&lt;br /&gt;
To facilitate exceptional cases in roles and capabilities, we can use exception rules. For example, we can specify a rule saying that all students are able to mark/read other students&#039; assignment in this particular course. Note that such rules need to have a priority as well. The capability of a user, in any context is then resolved by finding the highest priority role/rule.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;A smooth upgrade will be provided with 1.7. The existing roles (admin, teacher, student, etc), and the exisiting capabilities will be retained. This is done by creating default roles at site/course levels, and assigning the current users to these roles accordingly. The default roles will have default capabilities associated with them, which pretty much is what we have  in 1.6. The whole process is automatic so there&#039;s nothing to worry about =). With no modifications, Moodle will operate exactly the same before and after the upgrade.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==The plan==&lt;br /&gt;
&lt;br /&gt;
There are a few major things that need to be done. Here&#039;s a list (in no particular order):&lt;br /&gt;
&lt;br /&gt;
#Identify permissions required for site/course/each module.&lt;br /&gt;
#Define the database structure for storing roles and capabilities.&lt;br /&gt;
#Recode the whole of Moodle, including all modules to support the new structure. Instead of using &amp;lt;code&amp;gt;isteacher()&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;isstudent()&amp;lt;/code&amp;gt; we should be using &amp;lt;code&amp;gt;has_capabity($capability, $instanceid)&amp;lt;/code&amp;gt; etc. A new API for handling roles and capabilities will be implemented (accesslib.php).&lt;br /&gt;
#Add storage of capabilities for each module. Can be done either in a file, e.g. db/capability.xml, or as a sql file that gets installed to a central db whenever this module is installed. Either way, what do we do when we need to upgrade these capabilities? Some capabilities might needs refining/splitting later on. How do we control the &#039;version&#039; of a capability?&lt;br /&gt;
#Consider interface issues, especially how to manage conflicting role/exception rules.&lt;br /&gt;
#Upon logging in, we should use a cache to store capability, down to module level. How should that be structured?&lt;br /&gt;
#Consider the impact on backup/restore.&lt;br /&gt;
#Upgrade path for current users. The user information in table user_coursecreators, user_admins, user_teachers, and user_students will most likely be migrated to the new roles and capabilities tables. The users will most likely be assigned default roles that comes with default capabilities (e.g. teachers, admins, students, etc). The old tables themselves could possibly be dropped at the end of the upgrade.&lt;br /&gt;
&lt;br /&gt;
==Capabilities==&lt;br /&gt;
&lt;br /&gt;
This is a comprehensive list of capabilities, well, in the making. Please edit. Should we distinguish canedit and candelete?&lt;br /&gt;
&lt;br /&gt;
What about a canview capability? Like for choice, where a person is allowed to see the choice question but not participate in it? --[[User:N Hansen|N Hansen]] 19:29, 16 May 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
Certainly need a canview or cansee capability for parents as linked to their childs data/contributions.&lt;br /&gt;
&lt;br /&gt;
Do we need to add canview and cansearch logs at site/course/user/group level?&lt;br /&gt;
&lt;br /&gt;
===Site-level Capabilities===&lt;br /&gt;
&lt;br /&gt;
#canreadblogs&lt;br /&gt;
#canpostblogs&lt;br /&gt;
#candeleteallblogs&lt;br /&gt;
#canbrowseuser&lt;br /&gt;
#canviewhiddenactivity&lt;br /&gt;
#cancreatecourse&lt;br /&gt;
#caneditownprofile&lt;br /&gt;
#caneditallprofiles&lt;br /&gt;
&lt;br /&gt;
===Course-level Capabilities===&lt;br /&gt;
&lt;br /&gt;
#canseecoursecontent&lt;br /&gt;
#caneditcourse&lt;br /&gt;
#cancreatebackups&lt;br /&gt;
#canrestorebackups&lt;br /&gt;
#cancreateblocks&lt;br /&gt;
#caneditblocks&lt;br /&gt;
#candeleteblocks&lt;br /&gt;
&lt;br /&gt;
===Module-level Capabilities===&lt;br /&gt;
&lt;br /&gt;
#Assignment&lt;br /&gt;
##assignment_canadd&lt;br /&gt;
##assignment_canedit&lt;br /&gt;
##assignment_candelete&lt;br /&gt;
##assignment_cansubmit&lt;br /&gt;
##assignment_canmark&lt;br /&gt;
##assignment_canviewsubmissions&lt;br /&gt;
#Chat&lt;br /&gt;
##chat_canadd&lt;br /&gt;
##chat_canedit&lt;br /&gt;
##chat_candelete&lt;br /&gt;
##chat_canparticipate&lt;br /&gt;
##chat_canviewpastsessions&lt;br /&gt;
#Choice&lt;br /&gt;
##choice_canadd&lt;br /&gt;
##choice_canedit&lt;br /&gt;
##choice_candelete&lt;br /&gt;
##choice_canparticipate&lt;br /&gt;
##choice_canviewresponses&lt;br /&gt;
#Database&lt;br /&gt;
##database_canadd&lt;br /&gt;
##database_canedit&lt;br /&gt;
##databaes_candelete&lt;br /&gt;
##database_canaddentry&lt;br /&gt;
##database_canaddtemplates&lt;br /&gt;
##database_canedittemplates&lt;br /&gt;
##database_candeleteownentry&lt;br /&gt;
##database_candeleteallentry&lt;br /&gt;
##database_cancomment&lt;br /&gt;
##database_candeletecomment&lt;br /&gt;
##database_canrate&lt;br /&gt;
#Exercise&lt;br /&gt;
##exercise_canadd&lt;br /&gt;
##exercise_canedit&lt;br /&gt;
##exercise_candelete&lt;br /&gt;
##exercise_canassess&lt;br /&gt;
#Forum&lt;br /&gt;
##forum_canadd&lt;br /&gt;
##forum_canedit&lt;br /&gt;
##forum_candelete&lt;br /&gt;
##forum_canreadpost&lt;br /&gt;
##forum_canstartnewdiscussion&lt;br /&gt;
##forum_canreply&lt;br /&gt;
##forum_caneditallpost&lt;br /&gt;
##forum_candeleteallpost&lt;br /&gt;
##forum_canrate&lt;br /&gt;
#Glossary&lt;br /&gt;
##glossary_canadd&lt;br /&gt;
##glossary_canedit&lt;br /&gt;
##glossary_candelete&lt;br /&gt;
##glossary_canaddcat&lt;br /&gt;
##glossary_caneditcat&lt;br /&gt;
##glossary_candeletecat&lt;br /&gt;
##glossary_canadditem&lt;br /&gt;
##glossary_candeleteitem&lt;br /&gt;
##glossary_canedititem&lt;br /&gt;
##glossary_cancomment&lt;br /&gt;
##glossary_canimportentries&lt;br /&gt;
##glossary_canexportentries&lt;br /&gt;
##glossary_canapprove&lt;br /&gt;
#Hotpot&lt;br /&gt;
##hotpot_candd&lt;br /&gt;
##hotpot_canedit&lt;br /&gt;
##hotpot_candelete&lt;br /&gt;
##hotpot_canparticipate&lt;br /&gt;
#Label&lt;br /&gt;
##label_canadd&lt;br /&gt;
##label_canedit&lt;br /&gt;
##label_candelete&lt;br /&gt;
#Lams&lt;br /&gt;
##lams_canadd&lt;br /&gt;
##lams_canedit&lt;br /&gt;
##lams_candelete&lt;br /&gt;
#Lesson&lt;br /&gt;
##lesson_canadd&lt;br /&gt;
##lesson_canedit&lt;br /&gt;
##lesson_candelete&lt;br /&gt;
##lesson_canparticipate&lt;br /&gt;
#Quiz&lt;br /&gt;
##quiz_canadd&lt;br /&gt;
##quiz_canedit&lt;br /&gt;
##quiz_candelete&lt;br /&gt;
##quiz_canaddquestion&lt;br /&gt;
##quiz_caneditquestion&lt;br /&gt;
##quiz_candeletequestion&lt;br /&gt;
##quiz_canparticipate&lt;br /&gt;
##quiz_cangrade&lt;br /&gt;
#Resource&lt;br /&gt;
##resource_canadd&lt;br /&gt;
##resource_canedit&lt;br /&gt;
##resource_candelete&lt;br /&gt;
#Scorm&lt;br /&gt;
##scorm_canadd&lt;br /&gt;
##scorm_canedit&lt;br /&gt;
##socrm_candelete&lt;br /&gt;
#Survey&lt;br /&gt;
##survey_canadd&lt;br /&gt;
##survey_canedit&lt;br /&gt;
##survey_candelete&lt;br /&gt;
##survey_canviewresponses&lt;br /&gt;
#Wiki&lt;br /&gt;
##wiki_canadd&lt;br /&gt;
##wiki_canedit&lt;br /&gt;
##wiki_candelete&lt;br /&gt;
##wiki_canstartnewwiki&lt;br /&gt;
##wiki_canparticipate&lt;br /&gt;
#Workshop&lt;br /&gt;
##workshop_canadd&lt;br /&gt;
##workshop_canedit&lt;br /&gt;
##workshop_candelete&lt;br /&gt;
##workshop_cangrade&lt;br /&gt;
##workshop_canparticipate&lt;br /&gt;
&lt;br /&gt;
==Scenarios==&lt;br /&gt;
&lt;br /&gt;
This section is for brainstorming some example roles that we would like to support:&lt;br /&gt;
&lt;br /&gt;
===Parent===&lt;br /&gt;
A parent will have one or more children in one or more institutions which could be using one or more moodle instances or a mixture of Learning Platforms. A parent&#039;s role will vary depending on the age of their children.&lt;br /&gt;
&lt;br /&gt;
In Early Years (EY) and Key Stage 1 (KS1) they may play/learn on an activity or write for the child. Parents often interpret homework tasks and read to their children perhaps filling in a joint reading diary.&lt;br /&gt;
&lt;br /&gt;
In Key stages 3 and 4 this changes to more of a monitoring/awareness role where a parent would expect to have a summary report of attendance, attainment and general achievement on a weekly/monthly/termly or annual basis. Parents will often be asked to sign and write back comments about this review report.&lt;br /&gt;
&lt;br /&gt;
In all Key Stages there is a great need for parents to receive communication from the school which they can confirm they have received by signing a form. In some cases this may also involve making choices from a list. It may also involve payment for a trip or disco being returned so there could be the possibility of electronic payments.&lt;br /&gt;
&lt;br /&gt;
Parent&#039;s evening often involve complex booking systems that attempt to get parent&#039;s and teachers together. Easy for EY/KS1/KS2 very difficult for KS3/KS4. Wow would this help if it was built into the Learning Platform.&lt;br /&gt;
&lt;br /&gt;
In some cases there needs to be confidential communication between the parent and the teacher without the child being party to this. It may involve teaching and learning but could also involve a behaviour or medical issue. Often this may be done via a sealed letter or face to face. &lt;br /&gt;
&lt;br /&gt;
The latest incarnation of OfSTED with the Self Review Framework (SEF) there is a greater emphasis on schools gathering parent voice via surveys and discussion. There is a clear match here with parents have access to parental votes, questionnaires and discussions and for schools to be able to publish news, results and reports back to parents.&lt;br /&gt;
&lt;br /&gt;
In the UK the LP framework and agenda as being pushed by the DfES via Becta emphasises that within the mandatory groups and roles functionality the parent role is likely to be required to meet the LP Framework procurement standard.&lt;br /&gt;
&lt;br /&gt;
===Manager===&lt;br /&gt;
&#039;&#039;Please add text here...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Weekly Seminar Leader===&lt;br /&gt;
&#039;&#039;In a university seminar, typically 8-15 students in their 3rd/4th year, each student is responsible for leading one topic in a study series.  I ask each student to research 5-10 resources, then give a powerpoint presentation to the other students.  This is followed by an in-class discussion and then online homework.  The homework involves some fun quiz questions and then some reflective journal questions.  I ask each seminar leader to prepare the quiz questions and journal questions as well as their presentation.  To do that, I would like to assign activity-making/authoring roles to the student--either for a short period, or for duration of the whole course.  Thus &amp;quot;Allow Quiz Authoring Role&amp;quot; or &amp;quot;Allow Assignment Authoring Role&amp;quot; at the course level or, if possible, even the Topic level (in a topic or week format course) would be important.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Mentor/Mentee===&lt;br /&gt;
&#039;&#039;Please add text here...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Community-Designed Rating Criteria===&lt;br /&gt;
&#039;&#039;The gradebook tends to be the domain of the teacher.  What if community/peer ratings/marks could also be entered there? What if peer assessment criteria could be designed by the students, not just the teacher?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Visitor===&lt;br /&gt;
&lt;br /&gt;
This would be a role whereby one could allow a visitor to visit one&#039;s classroom. This might be a colleague interested in seeing your course, or a journalist who might be writing an article about one&#039;s site. They should not be able to see the names of any students anywhere (eg recent activity, forum posts) for privacy reasons. They should be able to try out things like quizzes, and lessons but no grades would be recorded (like in teacher preview mode). They would not be able to participate in choices and forums but could view them. It would be read only in a way like former-student role below but without access to a particular student&#039;s records that former student role would grant. &lt;br /&gt;
&lt;br /&gt;
===Former Student===&lt;br /&gt;
This role would be of particular use for courses with rolling enrollments. This role would be one where a student had completed all of the requirements of a course (ie assignments, quizzes etc.) but wished to have continued access to the course material for review or consultation. The key factor is that one would give access to the completed student to the notes he read, his work and the teacher&#039;s comments on it, but he would not be allowed to do anything that would take up the teacher&#039;s time. In other words, a sort-of read-only access to the course. How forums, which might contain pertinent information and would continue to grow, would be handled is a question. Perhaps the student would be shown only what was in the forums at the time he completed the course. He would not be allowed to see any new posts or add any himself. Same thing for database and glossary entries. In other words, a snapshot of the course at the time his regular enrollment ended. He shouldn&#039;t be able to see the names or profiles of any newly enrolled students for privacy reasons-hence the restrictions on forum access. One issue that would have to be dealt with would be changes to existing modules-such as resources. Does the student get access to the module as it was or as it is? We have no versioning of resources in Moodle so this would be a problem. What about a teacher changing a quiz question so that the answer is different? What would a former student see?&lt;br /&gt;
&lt;br /&gt;
===Librarian===&lt;br /&gt;
&lt;br /&gt;
Reference Librarians have an active role in most of the courses taught at Earlham College (with Bibliographic Instruction). The Librarian role within Moodle could encompass default read access to all courses (unless prohibited by course teacher) and read access to all components of the course unless access is barred (again by teacher). The Librarians would also perhaps have a block called perhaps Reference Services or Reference Desk with write access where they could deposit resources. Also this block might have a chat applet whereby enrolled students could chat to the Reference Librarian on duty about their bibliographic research needs.&lt;br /&gt;
&lt;br /&gt;
===Teacher===&lt;br /&gt;
&lt;br /&gt;
Teachers should have read access to other Teacher&#039;s courses unless explictly prohibited. They should be able to set parts of their own course to be totally private (perhaps even to admin?). Just as each activity can currently be set to have group access, each activity could have a permissions field. Teachers could set default permissions for all activities on their course (eg they might disallow Librarian access for example) and then change the access permission for an individual activity.&lt;br /&gt;
&lt;br /&gt;
I think that what is needed is a simple heirarchy of permissions and levels of granularity. &lt;br /&gt;
&lt;br /&gt;
===Secretary/Student Worker===&lt;br /&gt;
&lt;br /&gt;
We often have faculty who want their departmental secretary or student worker to scan and upload files and perhaps create resources. Currently they have to be given teacher access to the course. This is dangerous from a FERPA standpoint since they could easily get access to grades.&lt;br /&gt;
&lt;br /&gt;
===Teaching Assistant===&lt;br /&gt;
&lt;br /&gt;
Our Faculty frequently have undergraduate students acting as Teaching Assistants. These students need to be able to add resources, create assignments, and possibly grade assignments. However, due to FERPA they cannot have access to other students&#039; overall grade information. I think the requirements here are slightly different than those of Secretary/Student Worker&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*Using Moodle [http://moodle.org/mod/forum/discuss.php?d=38788 Roles and Permissions architecture] forum discussion&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Future]]&lt;/div&gt;</summary>
		<author><name>Cmcqueen</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Roles&amp;diff=2892</id>
		<title>Roles</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Roles&amp;diff=2892"/>
		<updated>2006-05-25T15:09:16Z</updated>

		<summary type="html">&lt;p&gt;Cmcqueen: /* Parent */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Roles and capabilities&#039;&#039;&#039; are planned to be included in Moodle 1.7. For now, we have some basic ideas of how to implement such a structure in Moodle.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Please note that none of the following is finalised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
By roles, we mean an identifier of the user&#039;s status, for example, teacher, student and forum moderator are examples of roles.&lt;br /&gt;
&lt;br /&gt;
A capability is a permission to access some particular Moodle feature. Capabilities are associated with roles. For example, &#039;&#039;forum_canreadpost&#039;&#039; is a capability.&lt;br /&gt;
&lt;br /&gt;
==The existing system==&lt;br /&gt;
&lt;br /&gt;
Currently in Moodle, we have a fixed set of roles i.e. primary admin, admins, course creators, editing teachers, non-editing teachers, students, and guests. For each role, the capability or actions that they can performed are fixed. For example, the role student allows the user to submit an assignment, but doesn&#039;t allow the user to browse/edit other users&#039; work. By using this setup we limit ourselves to a rather rigid set of capabilities for each role. If we want, say a particular student or group to be able to mark assignments in a particular course, we can&#039;t do that without giving these users teacher privileges.&lt;br /&gt;
&lt;br /&gt;
==The new roles and capability system==&lt;br /&gt;
&lt;br /&gt;
The new system will allow authorized users to define an arbitrary number of roles. Each role can have a customizable set of capabilities in every context. A context can be the whole Moodle site, a course, or a module instance, e.g. quiz 5 in &#039;Introduction to Photography&#039;. An authorized user will be able to assign an arbitrary number of roles to each user. Since the capabilities in each role could be different, there could be conflict in capabilities. This is resolved by giving roles different &#039;priorities&#039;. For example, to prevent a naughty student from posting, one could assign him a &#039;naughty student&#039; role that does not allow him to post. This role should have a priority higher than that of a normal &#039;student&#039; role. &lt;br /&gt;
&lt;br /&gt;
To facilitate exceptional cases in roles and capabilities, we can use exception rules. For example, we can specify a rule saying that all students are able to mark/read other students&#039; assignment in this particular course. Note that such rules need to have a priority as well. The capability of a user, in any context is then resolved by finding the highest priority role/rule.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;A smooth upgrade will be provided with 1.7. The existing roles (admin, teacher, student, etc), and the exisiting capabilities will be retained. This is done by creating default roles at site/course levels, and assigning the current users to these roles accordingly. The default roles will have default capabilities associated with them, which pretty much is what we have  in 1.6. The whole process is automatic so there&#039;s nothing to worry about =). With no modifications, Moodle will operate exactly the same before and after the upgrade.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==The plan==&lt;br /&gt;
&lt;br /&gt;
There are a few major things that need to be done. Here&#039;s a list (in no particular order):&lt;br /&gt;
&lt;br /&gt;
#Identify permissions required for site/course/each module.&lt;br /&gt;
#Define the database structure for storing roles and capabilities.&lt;br /&gt;
#Recode the whole of Moodle, including all modules to support the new structure. Instead of using &amp;lt;code&amp;gt;isteacher()&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;isstudent()&amp;lt;/code&amp;gt; we should be using &amp;lt;code&amp;gt;has_capabity($capability, $instanceid)&amp;lt;/code&amp;gt; etc. A new API for handling roles and capabilities will be implemented (accesslib.php).&lt;br /&gt;
#Add storage of capabilities for each module. Can be done either in a file, e.g. db/capability.xml, or as a sql file that gets installed to a central db whenever this module is installed. Either way, what do we do when we need to upgrade these capabilities? Some capabilities might needs refining/splitting later on. How do we control the &#039;version&#039; of a capability?&lt;br /&gt;
#Consider interface issues, especially how to manage conflicting role/exception rules.&lt;br /&gt;
#Upon logging in, we should use a cache to store capability, down to module level. How should that be structured?&lt;br /&gt;
#Consider the impact on backup/restore.&lt;br /&gt;
#Upgrade path for current users. The user information in table user_coursecreators, user_admins, user_teachers, and user_students will most likely be migrated to the new roles and capabilities tables. The users will most likely be assigned default roles that comes with default capabilities (e.g. teachers, admins, students, etc). The old tables themselves could possibly be dropped at the end of the upgrade.&lt;br /&gt;
&lt;br /&gt;
==Capabilities==&lt;br /&gt;
&lt;br /&gt;
This is a comprehensive list of capabilities, well, in the making. Please edit. Should we distinguish canedit and candelete?&lt;br /&gt;
&lt;br /&gt;
What about a canview capability? Like for choice, where a person is allowed to see the choice question but not participate in it? --[[User:N Hansen|N Hansen]] 19:29, 16 May 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
===Site-level Capabilities===&lt;br /&gt;
&lt;br /&gt;
#canreadblogs&lt;br /&gt;
#canpostblogs&lt;br /&gt;
#candeleteallblogs&lt;br /&gt;
#canbrowseuser&lt;br /&gt;
#canviewhiddenactivity&lt;br /&gt;
#cancreatecourse&lt;br /&gt;
#caneditownprofile&lt;br /&gt;
#caneditallprofiles&lt;br /&gt;
&lt;br /&gt;
===Course-level Capabilities===&lt;br /&gt;
&lt;br /&gt;
#canseecoursecontent&lt;br /&gt;
#caneditcourse&lt;br /&gt;
#cancreatebackups&lt;br /&gt;
#canrestorebackups&lt;br /&gt;
#cancreateblocks&lt;br /&gt;
#caneditblocks&lt;br /&gt;
#candeleteblocks&lt;br /&gt;
&lt;br /&gt;
===Module-level Capabilities===&lt;br /&gt;
&lt;br /&gt;
#Assignment&lt;br /&gt;
##assignment_canadd&lt;br /&gt;
##assignment_canedit&lt;br /&gt;
##assignment_candelete&lt;br /&gt;
##assignment_cansubmit&lt;br /&gt;
##assignment_canmark&lt;br /&gt;
##assignment_canviewsubmissions&lt;br /&gt;
#Chat&lt;br /&gt;
##chat_canadd&lt;br /&gt;
##chat_canedit&lt;br /&gt;
##chat_candelete&lt;br /&gt;
##chat_canparticipate&lt;br /&gt;
##chat_canviewpastsessions&lt;br /&gt;
#Choice&lt;br /&gt;
##choice_canadd&lt;br /&gt;
##choice_canedit&lt;br /&gt;
##choice_candelete&lt;br /&gt;
##choice_canparticipate&lt;br /&gt;
##choice_canviewresponses&lt;br /&gt;
#Database&lt;br /&gt;
##database_canadd&lt;br /&gt;
##database_canedit&lt;br /&gt;
##databaes_candelete&lt;br /&gt;
##database_canaddentry&lt;br /&gt;
##database_canaddtemplates&lt;br /&gt;
##database_canedittemplates&lt;br /&gt;
##database_candeleteownentry&lt;br /&gt;
##database_candeleteallentry&lt;br /&gt;
##database_cancomment&lt;br /&gt;
##database_candeletecomment&lt;br /&gt;
##database_canrate&lt;br /&gt;
#Exercise&lt;br /&gt;
##exercise_canadd&lt;br /&gt;
##exercise_canedit&lt;br /&gt;
##exercise_candelete&lt;br /&gt;
##exercise_canassess&lt;br /&gt;
#Forum&lt;br /&gt;
##forum_canadd&lt;br /&gt;
##forum_canedit&lt;br /&gt;
##forum_candelete&lt;br /&gt;
##forum_canreadpost&lt;br /&gt;
##forum_canstartnewdiscussion&lt;br /&gt;
##forum_canreply&lt;br /&gt;
##forum_caneditallpost&lt;br /&gt;
##forum_candeleteallpost&lt;br /&gt;
##forum_canrate&lt;br /&gt;
#Glossary&lt;br /&gt;
##glossary_canadd&lt;br /&gt;
##glossary_canedit&lt;br /&gt;
##glossary_candelete&lt;br /&gt;
##glossary_canaddcat&lt;br /&gt;
##glossary_caneditcat&lt;br /&gt;
##glossary_candeletecat&lt;br /&gt;
##glossary_canadditem&lt;br /&gt;
##glossary_candeleteitem&lt;br /&gt;
##glossary_canedititem&lt;br /&gt;
##glossary_cancomment&lt;br /&gt;
##glossary_canimportentries&lt;br /&gt;
##glossary_canexportentries&lt;br /&gt;
##glossary_canapprove&lt;br /&gt;
#Hotpot&lt;br /&gt;
##hotpot_candd&lt;br /&gt;
##hotpot_canedit&lt;br /&gt;
##hotpot_candelete&lt;br /&gt;
##hotpot_canparticipate&lt;br /&gt;
#Label&lt;br /&gt;
##label_canadd&lt;br /&gt;
##label_canedit&lt;br /&gt;
##label_candelete&lt;br /&gt;
#Lams&lt;br /&gt;
##lams_canadd&lt;br /&gt;
##lams_canedit&lt;br /&gt;
##lams_candelete&lt;br /&gt;
#Lesson&lt;br /&gt;
##lesson_canadd&lt;br /&gt;
##lesson_canedit&lt;br /&gt;
##lesson_candelete&lt;br /&gt;
##lesson_canparticipate&lt;br /&gt;
#Quiz&lt;br /&gt;
##quiz_canadd&lt;br /&gt;
##quiz_canedit&lt;br /&gt;
##quiz_candelete&lt;br /&gt;
##quiz_canaddquestion&lt;br /&gt;
##quiz_caneditquestion&lt;br /&gt;
##quiz_candeletequestion&lt;br /&gt;
##quiz_canparticipate&lt;br /&gt;
##quiz_cangrade&lt;br /&gt;
#Resource&lt;br /&gt;
##resource_canadd&lt;br /&gt;
##resource_canedit&lt;br /&gt;
##resource_candelete&lt;br /&gt;
#Scorm&lt;br /&gt;
##scorm_canadd&lt;br /&gt;
##scorm_canedit&lt;br /&gt;
##socrm_candelete&lt;br /&gt;
#Survey&lt;br /&gt;
##survey_canadd&lt;br /&gt;
##survey_canedit&lt;br /&gt;
##survey_candelete&lt;br /&gt;
##survey_canviewresponses&lt;br /&gt;
#Wiki&lt;br /&gt;
##wiki_canadd&lt;br /&gt;
##wiki_canedit&lt;br /&gt;
##wiki_candelete&lt;br /&gt;
##wiki_canstartnewwiki&lt;br /&gt;
##wiki_canparticipate&lt;br /&gt;
#Workshop&lt;br /&gt;
##workshop_canadd&lt;br /&gt;
##workshop_canedit&lt;br /&gt;
##workshop_candelete&lt;br /&gt;
##workshop_cangrade&lt;br /&gt;
##workshop_canparticipate&lt;br /&gt;
&lt;br /&gt;
==Scenarios==&lt;br /&gt;
&lt;br /&gt;
This section is for brainstorming some example roles that we would like to support:&lt;br /&gt;
&lt;br /&gt;
===Parent===&lt;br /&gt;
A parent will have one or more children in one or more institutions which could be using one or more moodle instances or a mixture of Learning Platforms. A parent&#039;s role will vary depending on the age of their children.&lt;br /&gt;
&lt;br /&gt;
In Early Years (EY) and Key Stage 1 (KS1) they may play/learn on an activity or write for the child. Parents often interpret homework tasks and read to their children perhaps filling in a joint reading diary.&lt;br /&gt;
&lt;br /&gt;
In Key stages 3 and 4 this changes to more of a monitoring/awareness role where a parent would expect to have a summary report of attendance, attainment and general achievement on a weekly/monthly/termly or annual basis. Parents will often be asked to sign and write back comments about this review report.&lt;br /&gt;
&lt;br /&gt;
In all Key Stages there is a great need for parents to receive communication from the school which they can confirm they have received by signing a form. In some cases this may also involve making choices from a list. It may also involve payment for a trip or disco being returned so there could be the possibility of electronic payments.&lt;br /&gt;
&lt;br /&gt;
Parent&#039;s evening often involve complex booking systems that attempt to get parent&#039;s and teachers together. Easy for EY/KS1/KS2 very difficult for KS3/KS4. Wow would this help if it was built into the Learning Platform.&lt;br /&gt;
&lt;br /&gt;
In some cases there needs to be confidential communication between the parent and the teacher without the child being party to this. It may involve teaching and learning but could also involve a behaviour or medical issue. Often this may be done via a sealed letter or face to face. &lt;br /&gt;
&lt;br /&gt;
The latest incarnation of OfSTED with the Self Review Framework (SEF) there is a greater emphasis on schools gathering parent voice via surveys and discussion. There is a clear match here with parents have access to parental votes, questionnaires and discussions and for schools to be able to publish news, results and reports back to parents.&lt;br /&gt;
&lt;br /&gt;
In the UK the LP framework and agenda as being pushed by the DfES via Becta emphasises that within the mandatory groups and roles functionality the parent role is likely to be required to meet the LP Framework procurement standard.&lt;br /&gt;
&lt;br /&gt;
===Manager===&lt;br /&gt;
&#039;&#039;Please add text here...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Weekly Seminar Leader===&lt;br /&gt;
&#039;&#039;In a university seminar, typically 8-15 students in their 3rd/4th year, each student is responsible for leading one topic in a study series.  I ask each student to research 5-10 resources, then give a powerpoint presentation to the other students.  This is followed by an in-class discussion and then online homework.  The homework involves some fun quiz questions and then some reflective journal questions.  I ask each seminar leader to prepare the quiz questions and journal questions as well as their presentation.  To do that, I would like to assign activity-making/authoring roles to the student--either for a short period, or for duration of the whole course.  Thus &amp;quot;Allow Quiz Authoring Role&amp;quot; or &amp;quot;Allow Assignment Authoring Role&amp;quot; at the course level or, if possible, even the Topic level (in a topic or week format course) would be important.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Mentor/Mentee===&lt;br /&gt;
&#039;&#039;Please add text here...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Community-Designed Rating Criteria===&lt;br /&gt;
&#039;&#039;The gradebook tends to be the domain of the teacher.  What if community/peer ratings/marks could also be entered there? What if peer assessment criteria could be designed by the students, not just the teacher?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Visitor===&lt;br /&gt;
&lt;br /&gt;
This would be a role whereby one could allow a visitor to visit one&#039;s classroom. This might be a colleague interested in seeing your course, or a journalist who might be writing an article about one&#039;s site. They should not be able to see the names of any students anywhere (eg recent activity, forum posts) for privacy reasons. They should be able to try out things like quizzes, and lessons but no grades would be recorded (like in teacher preview mode). They would not be able to participate in choices and forums but could view them. It would be read only in a way like former-student role below but without access to a particular student&#039;s records that former student role would grant. &lt;br /&gt;
&lt;br /&gt;
===Former Student===&lt;br /&gt;
This role would be of particular use for courses with rolling enrollments. This role would be one where a student had completed all of the requirements of a course (ie assignments, quizzes etc.) but wished to have continued access to the course material for review or consultation. The key factor is that one would give access to the completed student to the notes he read, his work and the teacher&#039;s comments on it, but he would not be allowed to do anything that would take up the teacher&#039;s time. In other words, a sort-of read-only access to the course. How forums, which might contain pertinent information and would continue to grow, would be handled is a question. Perhaps the student would be shown only what was in the forums at the time he completed the course. He would not be allowed to see any new posts or add any himself. Same thing for database and glossary entries. In other words, a snapshot of the course at the time his regular enrollment ended. He shouldn&#039;t be able to see the names or profiles of any newly enrolled students for privacy reasons-hence the restrictions on forum access. One issue that would have to be dealt with would be changes to existing modules-such as resources. Does the student get access to the module as it was or as it is? We have no versioning of resources in Moodle so this would be a problem. What about a teacher changing a quiz question so that the answer is different? What would a former student see?&lt;br /&gt;
&lt;br /&gt;
===Librarian===&lt;br /&gt;
&lt;br /&gt;
Reference Librarians have an active role in most of the courses taught at Earlham College (with Bibliographic Instruction). The Librarian role within Moodle could encompass default read access to all courses (unless prohibited by course teacher) and read access to all components of the course unless access is barred (again by teacher). The Librarians would also perhaps have a block called perhaps Reference Services or Reference Desk with write access where they could deposit resources. Also this block might have a chat applet whereby enrolled students could chat to the Reference Librarian on duty about their bibliographic research needs.&lt;br /&gt;
&lt;br /&gt;
===Teacher===&lt;br /&gt;
&lt;br /&gt;
Teachers should have read access to other Teacher&#039;s courses unless explictly prohibited. They should be able to set parts of their own course to be totally private (perhaps even to admin?). Just as each activity can currently be set to have group access, each activity could have a permissions field. Teachers could set default permissions for all activities on their course (eg they might disallow Librarian access for example) and then change the access permission for an individual activity.&lt;br /&gt;
&lt;br /&gt;
I think that what is needed is a simple heirarchy of permissions and levels of granularity. &lt;br /&gt;
&lt;br /&gt;
===Secretary/Student Worker===&lt;br /&gt;
&lt;br /&gt;
We often have faculty who want their departmental secretary or student worker to scan and upload files and perhaps create resources. Currently they have to be given teacher access to the course. This is dangerous from a FERPA standpoint since they could easily get access to grades.&lt;br /&gt;
&lt;br /&gt;
===Teaching Assistant===&lt;br /&gt;
&lt;br /&gt;
Our Faculty frequently have undergraduate students acting as Teaching Assistants. These students need to be able to add resources, create assignments, and possibly grade assignments. However, due to FERPA they cannot have access to other students&#039; overall grade information. I think the requirements here are slightly different than those of Secretary/Student Worker&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*Using Moodle [http://moodle.org/mod/forum/discuss.php?d=38788 Roles and Permissions architecture] forum discussion&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Future]]&lt;/div&gt;</summary>
		<author><name>Cmcqueen</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Course/site_filter_config&amp;diff=869</id>
		<title>Course/site filter config</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Course/site_filter_config&amp;diff=869"/>
		<updated>2006-02-20T17:43:19Z</updated>

		<summary type="html">&lt;p&gt;Cmcqueen: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This topic is to define how to add the possibility of &amp;quot;configure&amp;quot; filters both at site and course level.&lt;br /&gt;
&lt;br /&gt;
The mp3player may be configured at site level to only start downloading when the play button is pressed.&lt;br /&gt;
&lt;br /&gt;
The flashplugin filter could do with configuartion so you can vary the size of the displayed rectangle. Not sure how this would work other than on a per course level. Do flash files store an optimum size in the file? If they do could we use that in the filter up to the max size for the column it&#039;s being displayed in.&lt;/div&gt;</summary>
		<author><name>Cmcqueen</name></author>
	</entry>
</feed>