93cd4b0bf32fd62b20057ea61b4dac33d97bb7d2
[moodle.git] / lib / db / access.php
1 <?php
2 //
3 // Capability definitions for Moodle core.
4 //
5 // The capabilities are loaded into the database table when the module is
6 // installed or updated. Whenever the capability definitions are updated,
7 // the module version number should be bumped up.
8 //
9 // The system has four possible values for a capability:
10 // CAP_ALLOW, CAP_PREVENT, CAP_PROHIBIT, and inherit (not set).
11 //
12 //
13 // CAPABILITY NAMING CONVENTION
14 //
15 // It is important that capability names are unique. The naming convention
16 // for capabilities that are specific to modules and blocks is as follows:
17 //   [mod/block]/<plugin_name>:<capabilityname>
18 //
19 // component_name should be the same as the directory name of the mod or block.
20 //
21 // Core moodle capabilities are defined thus:
22 //    moodle/<capabilityclass>:<capabilityname>
23 //
24 // Examples: mod/forum:viewpost
25 //           block/recent_activity:view
26 //           moodle/site:deleteuser
27 //
28 // The variable name for the capability definitions array is $capabilities
31 $capabilities = array(
32     'moodle/site:config' => array(
34         'riskbitmask' => RISK_SPAM | RISK_PERSONAL | RISK_XSS | RISK_CONFIG | RISK_DATALOSS,
36         'captype' => 'write',
37         'contextlevel' => CONTEXT_SYSTEM,
38         'legacy' => array(
39         )
40     ),
42     'moodle/site:readallmessages' => array(
44         'riskbitmask' => RISK_PERSONAL,
46         'captype' => 'read',
47         'contextlevel' => CONTEXT_SYSTEM,
48         'legacy' => array(
49             'manager' => CAP_ALLOW,
50             'editingteacher' => CAP_ALLOW
51         )
52     ),
54     'moodle/site:sendmessage' => array(
56         'riskbitmask' => RISK_SPAM,
58         'captype' => 'write',
59         'contextlevel' => CONTEXT_SYSTEM,
60         'legacy' => array(
61             'manager' => CAP_ALLOW,
62             'user' => CAP_ALLOW
63         )
64     ),
66     'moodle/site:approvecourse' => array(
68         'riskbitmask' => RISK_XSS,
70         'captype' => 'write',
71         'contextlevel' => CONTEXT_SYSTEM,
72         'legacy' => array(
73             'manager' => CAP_ALLOW
74         )
75     ),
77     'moodle/backup:backupcourse' => array(
79         'riskbitmask' => RISK_SPAM | RISK_PERSONAL | RISK_XSS,
81         'captype' => 'write',
82         'contextlevel' => CONTEXT_COURSE,
83         'legacy' => array(
84             'editingteacher' => CAP_ALLOW,
85             'manager' => CAP_ALLOW
86         ),
88         'clonepermissionsfrom' =>  'moodle/site:backup'
89     ),
91     'moodle/backup:downloadfile' => array(
93         'riskbitmask' => RISK_SPAM | RISK_PERSONAL | RISK_XSS,
95         'captype' => 'write',
96         'contextlevel' => CONTEXT_COURSE,
97         'legacy' => array(
98             'editingteacher' => CAP_ALLOW,
99             'manager' => CAP_ALLOW
100         ),
102         'clonepermissionsfrom' =>  'moodle/site:backupdownload'
103     ),
105     'moodle/backup:userinfo' => array(
107         'riskbitmask' => RISK_PERSONAL,
109         'captype' => 'read',
110         'contextlevel' => CONTEXT_COURSE,
111         'legacy' => array(
112             'manager' => CAP_ALLOW
113         )
114     ),
116     'moodle/restore:restorecourse' => array(
118         'riskbitmask' => RISK_SPAM | RISK_PERSONAL | RISK_XSS,
120         'captype' => 'write',
121         'contextlevel' => CONTEXT_COURSE,
122         'legacy' => array(
123             'editingteacher' => CAP_ALLOW,
124             'manager' => CAP_ALLOW
125         ),
127         'clonepermissionsfrom' =>  'moodle/site:restore'
128     ),
130     'moodle/restore:restoretargetimport' => array(
132         'riskbitmask' => RISK_SPAM | RISK_PERSONAL | RISK_XSS,
134         'captype' => 'write',
135         'contextlevel' => CONTEXT_COURSE,
136         'legacy' => array(
137             'editingteacher' => CAP_ALLOW,
138             'manager' => CAP_ALLOW
139         ),
141         'clonepermissionsfrom' =>  'moodle/site:import'
142     ),
144     'moodle/restore:uploadfile' => array(
146         'riskbitmask' => RISK_SPAM | RISK_PERSONAL | RISK_XSS,
148         'captype' => 'write',
149         'contextlevel' => CONTEXT_COURSE,
150         'legacy' => array(
151             'editingteacher' => CAP_ALLOW,
152             'manager' => CAP_ALLOW
153         ),
155         'clonepermissionsfrom' =>  'moodle/site:backupupload'
156     ),
158     'moodle/restore:userinfo' => array(
160         'riskbitmask' => RISK_SPAM | RISK_PERSONAL | RISK_XSS | RISK_CONFIG,
162         'captype' => 'write',
163         'contextlevel' => CONTEXT_COURSE,
164         'legacy' => array(
165             'manager' => CAP_ALLOW
166         )
167     ),
169     'moodle/restore:createuser' => array(
171         'riskbitmask' => RISK_SPAM | RISK_PERSONAL,
173         'captype' => 'write',
174         'contextlevel' => CONTEXT_SYSTEM,
175         'legacy' => array(
176             'manager' => CAP_ALLOW
177         )
178     ),
180     'moodle/restore:rolldates' => array(
182         'captype' => 'write',
183         'contextlevel' => CONTEXT_COURSE,
184         'legacy' => array(
185             'coursecreator' => CAP_ALLOW,
186             'manager' => CAP_ALLOW
187         )
188     ),
190     'moodle/site:manageblocks' => array(
192         'riskbitmask' => RISK_SPAM | RISK_XSS,
194         'captype' => 'write',
195         'contextlevel' => CONTEXT_BLOCK,
196         'legacy' => array(
197             'editingteacher' => CAP_ALLOW,
198             'manager' => CAP_ALLOW
199         )
200     ),
202     'moodle/site:accessallgroups' => array(
204         'captype' => 'read',
205         'contextlevel' => CONTEXT_COURSE,
206         'legacy' => array(
207             'teacher' => CAP_ALLOW,
208             'editingteacher' => CAP_ALLOW,
209             'manager' => CAP_ALLOW
210         )
211     ),
213     'moodle/site:viewfullnames' => array(
215         'captype' => 'read',
216         'contextlevel' => CONTEXT_COURSE,
217         'legacy' => array(
218             'teacher' => CAP_ALLOW,
219             'editingteacher' => CAP_ALLOW,
220             'manager' => CAP_ALLOW
221         )
222     ),
224     'moodle/site:viewreports' => array(
226         'riskbitmask' => RISK_PERSONAL,
228         'captype' => 'read',
229         'contextlevel' => CONTEXT_COURSE,
230         'legacy' => array(
231             'teacher' => CAP_ALLOW,
232             'editingteacher' => CAP_ALLOW,
233             'manager' => CAP_ALLOW
234         )
235     ),
237     'moodle/site:trustcontent' => array(
239         'riskbitmask' => RISK_XSS,
241         'captype' => 'write',
242         'contextlevel' => CONTEXT_COURSE,
243         'legacy' => array(
244             'editingteacher' => CAP_ALLOW,
245             'manager' => CAP_ALLOW
246         )
247     ),
249     'moodle/site:uploadusers' => array(
251         'riskbitmask' => RISK_SPAM | RISK_PERSONAL,
253         'captype' => 'write',
254         'contextlevel' => CONTEXT_SYSTEM,
255         'legacy' => array(
256             'manager' => CAP_ALLOW
257         )
258     ),
260     'moodle/site:langeditmaster' => array(
262         'riskbitmask' => RISK_CONFIG | RISK_XSS,
264         'captype' => 'write',
265         'contextlevel' => CONTEXT_SYSTEM,
266         'legacy' => array(
267         )
268     ),
270     'moodle/site:langeditlocal' => array(
272         'riskbitmask' => RISK_CONFIG | RISK_XSS,
274         'captype' => 'write',
275         'contextlevel' => CONTEXT_SYSTEM,
276         'legacy' => array(
277             'manager' => CAP_ALLOW
278         )
279     ),
281     // Permission to manage filter setting overrides in subcontexts.
282     'moodle/filter:manage' => array(
284         'captype' => 'write',
285         'contextlevel' => CONTEXT_COURSE,
286         'legacy' => array(
287             'editingteacher' => CAP_ALLOW,
288             'coursecreator' => CAP_ALLOW,
289             'manager' => CAP_ALLOW,
290         )
291     ),
293     'moodle/user:create' => array(
295         'riskbitmask' => RISK_SPAM | RISK_PERSONAL,
297         'captype' => 'write',
298         'contextlevel' => CONTEXT_SYSTEM,
299         'legacy' => array(
300             'manager' => CAP_ALLOW
301         )
302     ),
304     'moodle/user:delete' => array(
306         'riskbitmask' => RISK_PERSONAL, RISK_DATALOSS,
308         'captype' => 'write',
309         'contextlevel' => CONTEXT_SYSTEM,
310         'legacy' => array(
311             'manager' => CAP_ALLOW
312         )
313     ),
315     'moodle/user:update' => array(
317         'riskbitmask' => RISK_SPAM | RISK_PERSONAL,
319         'captype' => 'write',
320         'contextlevel' => CONTEXT_SYSTEM,
321         'legacy' => array(
322             'manager' => CAP_ALLOW
323         )
324     ),
326     'moodle/user:viewdetails' => array(
328         'captype' => 'read',
329         'contextlevel' => CONTEXT_COURSE,
330         'legacy' => array(
331             'guest' => CAP_ALLOW,
332             'student' => CAP_ALLOW,
333             'teacher' => CAP_ALLOW,
334             'editingteacher' => CAP_ALLOW,
335             'manager' => CAP_ALLOW
336         )
337     ),
339     'moodle/user:viewhiddendetails' => array(
341         'riskbitmask' => RISK_PERSONAL,
343         'captype' => 'read',
344         'contextlevel' => CONTEXT_COURSE,
345         'legacy' => array(
346             'teacher' => CAP_ALLOW,
347             'editingteacher' => CAP_ALLOW,
348             'manager' => CAP_ALLOW
349         )
350     ),
352     'moodle/user:loginas' => array(
354         'riskbitmask' => RISK_SPAM | RISK_PERSONAL | RISK_XSS | RISK_CONFIG,
356         'captype' => 'write',
357         'contextlevel' => CONTEXT_COURSE,
358         'legacy' => array(
359             'manager' => CAP_ALLOW
360         )
361     ),
363     'moodle/role:assign' => array(
365         'riskbitmask' => RISK_SPAM | RISK_PERSONAL | RISK_XSS,
367         'captype' => 'write',
368         'contextlevel' => CONTEXT_COURSE,
369         'legacy' => array(
370             'editingteacher' => CAP_ALLOW,
371             'manager' => CAP_ALLOW
372         )
373     ),
375     'moodle/role:review' => array(
377         'riskbitmask' => RISK_PERSONAL,
379         'captype' => 'read',
380         'contextlevel' => CONTEXT_COURSE,
381         'legacy' => array(
382             'teacher' => CAP_ALLOW,
383             'editingteacher' => CAP_ALLOW,
384             'manager' => CAP_ALLOW
385         )
386     ),
388     'moodle/role:override' => array(
390         'riskbitmask' => RISK_SPAM | RISK_PERSONAL | RISK_XSS,
392         'captype' => 'write',
393         'contextlevel' => CONTEXT_COURSE,
394         'legacy' => array(
395             'manager' => CAP_ALLOW
396         )
397     ),
399     'moodle/role:safeoverride' => array(
401         'riskbitmask' => RISK_SPAM,
403         'captype' => 'write',
404         'contextlevel' => CONTEXT_COURSE,
405         'legacy' => array(
406             'editingteacher' => CAP_ALLOW
407         )
408     ),
410     'moodle/role:manage' => array(
412         'riskbitmask' => RISK_SPAM | RISK_PERSONAL | RISK_XSS,
414         'captype' => 'write',
415         'contextlevel' => CONTEXT_SYSTEM,
416         'legacy' => array(
417             'manager' => CAP_ALLOW
418         )
419     ),
421     'moodle/role:unassignself' => array(
423         'captype' => 'write',
424         'contextlevel' => CONTEXT_COURSE,
425         'legacy' => array(
426             'student' => (empty($CFG->allowunenrol)) ? CAP_INHERIT : CAP_ALLOW,
427             'teacher' => CAP_ALLOW,
428             'editingteacher' => CAP_ALLOW,
429             'coursecreator' => CAP_ALLOW,
430             'manager' => CAP_ALLOW
431         )
432     ),
434     'moodle/role:switchroles' => array(
436         'riskbitmask' => RISK_XSS | RISK_PERSONAL,
438         'captype' => 'read',
439         'contextlevel' => CONTEXT_COURSE,
440         'legacy' => array(
441             'editingteacher' => CAP_ALLOW,
442             'manager' => CAP_ALLOW
443         )
444     ),
446     // Create, update and delete course categories. (Deleting a course category
447     // does not let you delete the courses it contains, unless you also have
448     // moodle/course: delete.) Creating and deleting requires this permission in
449     // the parent category.
450     'moodle/category:manage' => array(
452         'riskbitmask' => RISK_XSS,
454         'captype' => 'write',
455         'contextlevel' => CONTEXT_COURSECAT,
456         'legacy' => array(
457             'manager' => CAP_ALLOW
458         ),
459         'clonepermissionsfrom' => 'moodle/category:update'
460     ),
462     'moodle/category:viewhiddencategories' => array(
464         'captype' => 'read',
465         'contextlevel' => CONTEXT_COURSECAT,
466         'legacy' => array(
467             'coursecreator' => CAP_ALLOW,
468             'manager' => CAP_ALLOW
469         ),
470         'clonepermissionsfrom' => 'moodle/category:visibility'
471     ),
473     'moodle/course:create' => array(
475         'riskbitmask' => RISK_XSS,
477         'captype' => 'write',
478         'contextlevel' => CONTEXT_COURSECAT,
479         'legacy' => array(
480             'coursecreator' => CAP_ALLOW,
481             'manager' => CAP_ALLOW
482         )
483     ),
485     'moodle/course:request' => array(
486         'captype' => 'write',
487         'contextlevel' => CONTEXT_SYSTEM,
488         'legacy' => array(
489             'user' => CAP_ALLOW,
490         )
491     ),
493     'moodle/course:delete' => array(
495         'riskbitmask' => RISK_DATALOSS,
497         'captype' => 'write',
498         'contextlevel' => CONTEXT_COURSE,
499         'legacy' => array(
500             'editingteacher' => CAP_ALLOW,
501             'manager' => CAP_ALLOW
502         )
503     ),
505     'moodle/course:update' => array(
507         'riskbitmask' => RISK_XSS,
509         'captype' => 'write',
510         'contextlevel' => CONTEXT_COURSE,
511         'legacy' => array(
512             'editingteacher' => CAP_ALLOW,
513             'manager' => CAP_ALLOW
514         )
515     ),
517     /* originally this capability was called moodle/course:view,
518      * but since 2.0 it is used for access to course without the enrolment
519      */
520     'moodle/course:participate' => array(
522         'captype' => 'read',
523         'contextlevel' => CONTEXT_COURSE,
524         'legacy' => array(
525             'student' => CAP_ALLOW,
526             'teacher' => CAP_ALLOW,
527             'editingteacher' => CAP_ALLOW
528         )
529     ),
531     'moodle/course:view' => array(
533         'captype' => 'read',
534         'contextlevel' => CONTEXT_COURSE,
535         'legacy' => array(
536             'manager' => CAP_ALLOW,
537         )
538     ),
540     'moodle/course:bulkmessaging' => array(
542         'riskbitmask' => RISK_SPAM,
544         'captype' => 'write',
545         'contextlevel' => CONTEXT_COURSE,
546         'legacy' => array(
547             'teacher' => CAP_ALLOW,
548             'editingteacher' => CAP_ALLOW,
549             'manager' => CAP_ALLOW
550         )
551     ),
553     'moodle/course:viewhiddenuserfields' => array(
555         'riskbitmask' => RISK_PERSONAL,
557         'captype' => 'read',
558         'contextlevel' => CONTEXT_COURSE,
559         'legacy' => array(
560             'teacher' => CAP_ALLOW,
561             'editingteacher' => CAP_ALLOW,
562             'manager' => CAP_ALLOW
563         )
564     ),
566     'moodle/course:viewhiddencourses' => array(
568         'captype' => 'read',
569         'contextlevel' => CONTEXT_COURSE,
570         'legacy' => array(
571             'coursecreator' => CAP_ALLOW,
572             'teacher' => CAP_ALLOW,
573             'editingteacher' => CAP_ALLOW,
574             'manager' => CAP_ALLOW
575         )
576     ),
578     'moodle/course:visibility' => array(
580         'captype' => 'write',
581         'contextlevel' => CONTEXT_COURSE,
582         'legacy' => array(
583             'manager' => CAP_ALLOW
584         )
585     ),
587     'moodle/course:managefiles' => array(
589         'riskbitmask' => RISK_XSS,
591         'captype' => 'write',
592         'contextlevel' => CONTEXT_COURSE,
593         'legacy' => array(
594             'editingteacher' => CAP_ALLOW,
595             'manager' => CAP_ALLOW
596         )
597     ),
599     'moodle/course:manageactivities' => array(
601         'riskbitmask' => RISK_XSS,
603         'captype' => 'write',
604         'contextlevel' => CONTEXT_COURSE,
605         'legacy' => array(
606             'editingteacher' => CAP_ALLOW,
607             'manager' => CAP_ALLOW
608         )
609     ),
611     'moodle/course:managemetacourse' => array(
613         'riskbitmask' => RISK_XSS | RISK_PERSONAL,
615         'captype' => 'write',
616         'contextlevel' => CONTEXT_COURSE,
617         'legacy' => array(
618             'editingteacher' => CAP_ALLOW,
619             'manager' => CAP_ALLOW
620         )
621     ),
623     'moodle/course:activityvisibility' => array(
625         'captype' => 'write',
626         'contextlevel' => CONTEXT_COURSE,
627         'legacy' => array(
628             'editingteacher' => CAP_ALLOW,
629             'manager' => CAP_ALLOW
630         )
631     ),
633     'moodle/course:viewhiddenactivities' => array(
635         'captype' => 'write',
636         'contextlevel' => CONTEXT_COURSE,
637         'legacy' => array(
638             'teacher' => CAP_ALLOW,
639             'editingteacher' => CAP_ALLOW,
640             'manager' => CAP_ALLOW
641         )
642     ),
644     'moodle/course:viewparticipants' => array(
646         'captype' => 'read',
647         'contextlevel' => CONTEXT_COURSE,
648         'legacy' => array(
649             'student' => CAP_ALLOW,
650             'teacher' => CAP_ALLOW,
651             'editingteacher' => CAP_ALLOW,
652             'manager' => CAP_ALLOW
653         )
654     ),
656     'moodle/course:changefullname' => array(
658         'riskbitmask' => RISK_XSS,
660         'captype' => 'write',
661         'contextlevel' => CONTEXT_COURSE,
662         'legacy' => array(
663             'editingteacher' => CAP_ALLOW,
664             'manager' => CAP_ALLOW
665         ),
666         'clonepermissionsfrom' => 'moodle/course:update'
667     ),
669     'moodle/course:changeshortname' => array(
671         'riskbitmask' => RISK_XSS,
673         'captype' => 'write',
674         'contextlevel' => CONTEXT_COURSE,
675         'legacy' => array(
676             'editingteacher' => CAP_ALLOW,
677             'manager' => CAP_ALLOW
678         ),
679         'clonepermissionsfrom' => 'moodle/course:update'
680     ),
682     'moodle/course:changeidnumber' => array(
684         'riskbitmask' => RISK_XSS,
686         'captype' => 'write',
687         'contextlevel' => CONTEXT_COURSE,
688         'legacy' => array(
689             'editingteacher' => CAP_ALLOW,
690             'manager' => CAP_ALLOW
691         ),
692         'clonepermissionsfrom' => 'moodle/course:update'
693     ),
694     'moodle/course:changecategory' => array(
695         'riskbitmask' => RISK_XSS,
697         'captype' => 'write',
698         'contextlevel' => CONTEXT_COURSE,
699         'legacy' => array(
700             'editingteacher' => CAP_ALLOW,
701             'manager' => CAP_ALLOW
702         ),
703         'clonepermissionsfrom' => 'moodle/course:update'
704     ),
706     'moodle/course:changesummary' => array(
707         'riskbitmask' => RISK_XSS,
709         'captype' => 'write',
710         'contextlevel' => CONTEXT_COURSE,
711         'legacy' => array(
712             'editingteacher' => CAP_ALLOW,
713             'manager' => CAP_ALLOW
714         ),
715         'clonepermissionsfrom' => 'moodle/course:update'
716     ),
719     'moodle/site:viewparticipants' => array(
721         'captype' => 'read',
722         'contextlevel' => CONTEXT_SYSTEM,
723         'legacy' => array(
724             'manager' => CAP_ALLOW
725         )
726     ),
728     'moodle/course:viewscales' => array(
730         'captype' => 'read',
731         'contextlevel' => CONTEXT_COURSE,
732         'legacy' => array(
733             'student' => CAP_ALLOW,
734             'teacher' => CAP_ALLOW,
735             'editingteacher' => CAP_ALLOW,
736             'manager' => CAP_ALLOW
737         )
738     ),
740     'moodle/course:managescales' => array(
742         'captype' => 'write',
743         'contextlevel' => CONTEXT_COURSE,
744         'legacy' => array(
745             'editingteacher' => CAP_ALLOW,
746             'manager' => CAP_ALLOW
747         )
748     ),
750     'moodle/course:managegroups' => array(
752         'captype' => 'write',
753         'contextlevel' => CONTEXT_COURSE,
754         'legacy' => array(
755             'editingteacher' => CAP_ALLOW,
756             'manager' => CAP_ALLOW
757         )
758     ),
760     'moodle/course:reset' => array(
762         'riskbitmask' => RISK_DATALOSS,
764         'captype' => 'write',
765         'contextlevel' => CONTEXT_COURSE,
766         'legacy' => array(
767             'editingteacher' => CAP_ALLOW,
768             'manager' => CAP_ALLOW
769         )
770     ),
772     'moodle/blog:view' => array(
774         'captype' => 'read',
775         'contextlevel' => CONTEXT_SYSTEM,
776         'legacy' => array(
777             'guest' => CAP_ALLOW,
778             'user' => CAP_ALLOW,
779             'student' => CAP_ALLOW,
780             'teacher' => CAP_ALLOW,
781             'editingteacher' => CAP_ALLOW,
782             'manager' => CAP_ALLOW
783         )
784     ),
786     'moodle/blog:search' => array(
787         'captype' => 'read',
788         'contextlevel' => CONTEXT_SYSTEM,
789         'legacy' => array(
790             'guest' => CAP_ALLOW,
791             'user' => CAP_ALLOW,
792             'student' => CAP_ALLOW,
793             'teacher' => CAP_ALLOW,
794             'editingteacher' => CAP_ALLOW,
795             'manager' => CAP_ALLOW
796         )
797     ),
799     'moodle/blog:viewdrafts' => array(
801         'riskbitmask' => RISK_PERSONAL,
802         'captype' => 'read',
803         'contextlevel' => CONTEXT_SYSTEM,
804         'legacy' => array(
805             'manager' => CAP_ALLOW
806         )
807     ),
809     'moodle/blog:create' => array( // works in CONTEXT_SYSTEM only
811         'riskbitmask' => RISK_SPAM,
813         'captype' => 'write',
814         'contextlevel' => CONTEXT_SYSTEM,
815         'legacy' => array(
816             'user' => CAP_ALLOW,
817             'manager' => CAP_ALLOW
818         )
819     ),
821     'moodle/blog:manageentries' => array(
823         'riskbitmask' => RISK_SPAM,
825         'captype' => 'write',
826         'contextlevel' => CONTEXT_SYSTEM,
827         'legacy' => array(
828             'teacher' => CAP_ALLOW,
829             'editingteacher' => CAP_ALLOW,
830             'manager' => CAP_ALLOW
831         )
832     ),
834     'moodle/blog:manageexternal' => array(
836         'riskbitmask' => RISK_SPAM,
838         'captype' => 'write',
839         'contextlevel' => CONTEXT_USER,
840         'legacy' => array(
841             'student' => CAP_ALLOW,
842             'user' => CAP_ALLOW,
843             'teacher' => CAP_ALLOW,
844             'editingteacher' => CAP_ALLOW,
845             'manager' => CAP_ALLOW
846         )
847     ),
849     'moodle/blog:associatecourse' => array(
851         'captype' => 'write',
852         'contextlevel' => CONTEXT_COURSE,
853         'legacy' => array(
854             'student' => CAP_ALLOW,
855             'user' => CAP_ALLOW,
856             'teacher' => CAP_ALLOW,
857             'editingteacher' => CAP_ALLOW,
858             'manager' => CAP_ALLOW
859         )
860     ),
862     'moodle/blog:associatemodule' => array(
864         'captype' => 'write',
865         'contextlevel' => CONTEXT_MODULE,
866         'legacy' => array(
867             'student' => CAP_ALLOW,
868             'user' => CAP_ALLOW,
869             'teacher' => CAP_ALLOW,
870             'editingteacher' => CAP_ALLOW,
871             'manager' => CAP_ALLOW
872         )
873     ),
875     'moodle/calendar:manageownentries' => array( // works in CONTEXT_SYSTEM only
877         'riskbitmask' => RISK_SPAM,
879         'captype' => 'write',
880         'contextlevel' => CONTEXT_COURSE,
881         'legacy' => array(
882             'user' => CAP_ALLOW,
883             'manager' => CAP_ALLOW
884         )
885     ),
887     'moodle/calendar:managegroupentries' => array(
889         'riskbitmask' => RISK_SPAM,
891         'captype' => 'write',
892         'contextlevel' => CONTEXT_COURSE,
893         'legacy' => array(
894             'teacher' => CAP_ALLOW,
895             'editingteacher' => CAP_ALLOW,
896             'manager' => CAP_ALLOW
897         )
898     ),
900     'moodle/calendar:manageentries' => array(
902         'riskbitmask' => RISK_SPAM,
904         'captype' => 'write',
905         'contextlevel' => CONTEXT_COURSE,
906         'legacy' => array(
907             'teacher' => CAP_ALLOW,
908             'editingteacher' => CAP_ALLOW,
909             'manager' => CAP_ALLOW
910         )
911     ),
913     'moodle/user:editprofile' => array(
915         'riskbitmask' => RISK_SPAM | RISK_PERSONAL,
917         'captype' => 'write',
918         'contextlevel' => CONTEXT_USER,
919         'legacy' => array(
920             'manager' => CAP_ALLOW
921         )
922     ),
924     'moodle/user:editownprofile' => array(
926         'riskbitmask' => RISK_SPAM,
928         'captype' => 'write',
929         'contextlevel' => CONTEXT_SYSTEM,
930         'legacy' => array(
931             'guest' => CAP_PROHIBIT,
932             'user' => CAP_ALLOW,
933             'manager' => CAP_ALLOW
934         )
935     ),
937     'moodle/user:changeownpassword' => array(
939         'captype' => 'write',
940         'contextlevel' => CONTEXT_SYSTEM,
941         'legacy' => array(
942             'guest' => CAP_PROHIBIT,
943             'user' => CAP_ALLOW,
944             'manager' => CAP_ALLOW
945         )
946     ),
948     // The next 3 might make no sense for some roles, e.g teacher, etc.
949     // since the next level up is site. These are more for the parent role
950     'moodle/user:readuserposts' => array(
952         'captype' => 'read',
953         'contextlevel' => CONTEXT_USER,
954         'legacy' => array(
955             'student' => CAP_ALLOW,
956             'teacher' => CAP_ALLOW,
957             'editingteacher' => CAP_ALLOW,
958             'manager' => CAP_ALLOW
959         )
960     ),
962     'moodle/user:readuserblogs' => array(
964         'captype' => 'read',
965         'contextlevel' => CONTEXT_USER,
966         'legacy' => array(
967             'student' => CAP_ALLOW,
968             'teacher' => CAP_ALLOW,
969             'editingteacher' => CAP_ALLOW,
970             'manager' => CAP_ALLOW
971         )
972     ),
974     // designed for parent role - not used in legacy roles
975     'moodle/user:viewuseractivitiesreport' => array(
976         'riskbitmask' => RISK_PERSONAL,
978         'captype' => 'read',
979         'contextlevel' => CONTEXT_USER,
980         'legacy' => array(
981         )
982     ),
984     //capabilities designed for the new message system configuration
985     'moodle/user:editmessageprofile' => array(
987          'riskbitmask' => RISK_SPAM,
989          'captype' => 'write',
990          'contextlevel' => CONTEXT_USER,
991          'legacy' => array(
992              'manager' => CAP_ALLOW
993          )
994      ),
996      'moodle/user:editownmessageprofile' => array(
998          'captype' => 'write',
999          'contextlevel' => CONTEXT_SYSTEM,
1000          'legacy' => array(
1001              'guest' => CAP_PROHIBIT,
1002              'user' => CAP_ALLOW,
1003              'manager' => CAP_ALLOW
1004          )
1005      ),
1007     'moodle/question:managecategory' => array(
1008         'riskbitmask' => RISK_SPAM | RISK_XSS,
1009         'captype' => 'write',
1010         'contextlevel' => CONTEXT_COURSE,
1011         'legacy' => array(
1012             'editingteacher' => CAP_ALLOW,
1013             'manager' => CAP_ALLOW
1014         )
1015     ),
1017     //new in moodle 1.9
1018     'moodle/question:add' => array(
1019         'riskbitmask' => RISK_SPAM | RISK_XSS,
1020         'captype' => 'write',
1021         'contextlevel' => CONTEXT_COURSE,
1022         'legacy' => array(
1023             'editingteacher' => CAP_ALLOW,
1024             'manager' => CAP_ALLOW
1025         ),
1026         'clonepermissionsfrom' =>  'moodle/question:manage'
1027     ),
1028     'moodle/question:editmine' => array(
1029         'riskbitmask' => RISK_SPAM | RISK_XSS,
1030         'captype' => 'write',
1031         'contextlevel' => CONTEXT_COURSE,
1032         'legacy' => array(
1033             'editingteacher' => CAP_ALLOW,
1034             'manager' => CAP_ALLOW
1035         ),
1036         'clonepermissionsfrom' =>  'moodle/question:manage'
1037     ),
1038     'moodle/question:editall' => array(
1039         'riskbitmask' => RISK_SPAM | RISK_XSS,
1040         'captype' => 'write',
1041         'contextlevel' => CONTEXT_COURSE,
1042         'legacy' => array(
1043             'editingteacher' => CAP_ALLOW,
1044             'manager' => CAP_ALLOW
1045         ),
1046         'clonepermissionsfrom' =>  'moodle/question:manage'
1047     ),
1048     'moodle/question:viewmine' => array(
1049         'captype' => 'read',
1050         'contextlevel' => CONTEXT_COURSE,
1051         'legacy' => array(
1052             'editingteacher' => CAP_ALLOW,
1053             'manager' => CAP_ALLOW
1054         ),
1055         'clonepermissionsfrom' =>  'moodle/question:manage'
1056     ),
1057     'moodle/question:viewall' => array(
1058         'captype' => 'read',
1059         'contextlevel' => CONTEXT_COURSE,
1060         'legacy' => array(
1061             'editingteacher' => CAP_ALLOW,
1062             'manager' => CAP_ALLOW
1063         ),
1064         'clonepermissionsfrom' =>  'moodle/question:manage'
1065     ),
1066     'moodle/question:usemine' => array(
1067         'captype' => 'read',
1068         'contextlevel' => CONTEXT_COURSE,
1069         'legacy' => array(
1070             'editingteacher' => CAP_ALLOW,
1071             'manager' => CAP_ALLOW
1072         ),
1073         'clonepermissionsfrom' =>  'moodle/question:manage'
1074     ),
1075     'moodle/question:useall' => array(
1076         'captype' => 'read',
1077         'contextlevel' => CONTEXT_COURSE,
1078         'legacy' => array(
1079             'editingteacher' => CAP_ALLOW,
1080             'manager' => CAP_ALLOW
1081         ),
1082         'clonepermissionsfrom' =>  'moodle/question:manage'
1083     ),
1084     'moodle/question:movemine' => array(
1085         'captype' => 'write',
1086         'contextlevel' => CONTEXT_COURSE,
1087         'legacy' => array(
1088             'editingteacher' => CAP_ALLOW,
1089             'manager' => CAP_ALLOW
1090         ),
1091         'clonepermissionsfrom' =>  'moodle/question:manage'
1092     ),
1093     'moodle/question:moveall' => array(
1094         'captype' => 'write',
1095         'contextlevel' => CONTEXT_COURSE,
1096         'legacy' => array(
1097             'editingteacher' => CAP_ALLOW,
1098             'manager' => CAP_ALLOW
1099         ),
1100         'clonepermissionsfrom' =>  'moodle/question:manage'
1101     ),
1102     //END new in moodle 1.9
1104     // Configure the installed question types.
1105     'moodle/question:config' => array(
1106         'riskbitmask' => RISK_CONFIG,
1107         'captype' => 'write',
1108         'contextlevel' => CONTEXT_SYSTEM,
1109         'legacy' => array(
1110             'manager' => CAP_ALLOW
1111         )
1112     ),
1114     // While attempting questions, the ability to flag particular questions for later reference.
1115     'moodle/question:flag' => array(
1116         'captype' => 'write',
1117         'contextlevel' => CONTEXT_COURSE,
1118         'legacy' => array(
1119             'student' => CAP_ALLOW,
1120             'teacher' => CAP_ALLOW,
1121             'editingteacher' => CAP_ALLOW,
1122             'coursecreator' => CAP_ALLOW,
1123             'manager' => CAP_ALLOW
1124         )
1125     ),
1127     'moodle/site:doclinks' => array(
1128         'captype' => 'read',
1129         'contextlevel' => CONTEXT_SYSTEM,
1130         'legacy' => array(
1131             'teacher' => CAP_ALLOW,
1132             'editingteacher' => CAP_ALLOW,
1133             'manager' => CAP_ALLOW
1134         )
1135     ),
1137     'moodle/course:sectionvisibility' => array(
1139         'captype' => 'write',
1140         'contextlevel' => CONTEXT_COURSE,
1141         'legacy' => array(
1142             'editingteacher' => CAP_ALLOW,
1143             'manager' => CAP_ALLOW
1144         )
1145     ),
1147     'moodle/course:useremail' => array(
1149         'captype' => 'write',
1150         'contextlevel' => CONTEXT_COURSE,
1151         'legacy' => array(
1152             'editingteacher' => CAP_ALLOW,
1153             'manager' => CAP_ALLOW
1154         )
1155     ),
1157     'moodle/course:viewhiddensections' => array(
1159         'captype' => 'write',
1160         'contextlevel' => CONTEXT_COURSE,
1161         'legacy' => array(
1162             'editingteacher' => CAP_ALLOW,
1163             'manager' => CAP_ALLOW
1164         )
1165     ),
1167     'moodle/course:setcurrentsection' => array(
1169         'captype' => 'write',
1170         'contextlevel' => CONTEXT_COURSE,
1171         'legacy' => array(
1172             'editingteacher' => CAP_ALLOW,
1173             'manager' => CAP_ALLOW
1174         )
1175     ),
1177     'moodle/site:mnetlogintoremote' => array(
1179         'captype' => 'read',
1180         'contextlevel' => CONTEXT_SYSTEM,
1181         'legacy' => array(
1182             'manager' => CAP_ALLOW
1183         )
1184     ),
1186     'moodle/grade:viewall' => array(
1187         'riskbitmask' => RISK_PERSONAL,
1188         'captype' => 'read',
1189         'contextlevel' => CONTEXT_COURSE, // and CONTEXT_USER
1190         'legacy' => array(
1191             'teacher' => CAP_ALLOW,
1192             'editingteacher' => CAP_ALLOW,
1193             'manager' => CAP_ALLOW
1194         ),
1195         'clonepermissionsfrom' => 'moodle/course:viewcoursegrades'
1196     ),
1198     'moodle/grade:view' => array(
1199         'captype' => 'read',
1200         'contextlevel' => CONTEXT_COURSE,
1201         'legacy' => array(
1202             'student' => CAP_ALLOW
1203         )
1204     ),
1206     'moodle/grade:viewhidden' => array(
1207         'riskbitmask' => RISK_PERSONAL,
1208         'captype' => 'read',
1209         'contextlevel' => CONTEXT_COURSE,
1210         'legacy' => array(
1211             'teacher' => CAP_ALLOW,
1212             'editingteacher' => CAP_ALLOW,
1213             'manager' => CAP_ALLOW
1214         ),
1215         'clonepermissionsfrom' => 'moodle/course:viewcoursegrades'
1216     ),
1218     'moodle/grade:import' => array(
1219         'riskbitmask' => RISK_PERSONAL | RISK_XSS,
1220         'captype' => 'write',
1221         'contextlevel' => CONTEXT_COURSE,
1222         'legacy' => array(
1223             'editingteacher' => CAP_ALLOW,
1224             'manager' => CAP_ALLOW
1225         ),
1226         'clonepermissionsfrom' => 'moodle/course:managegrades'
1227     ),
1229     'moodle/grade:export' => array(
1230         'riskbitmask' => RISK_PERSONAL,
1231         'captype' => 'read',
1232         'contextlevel' => CONTEXT_COURSE,
1233         'legacy' => array(
1234             'teacher' => CAP_ALLOW,
1235             'editingteacher' => CAP_ALLOW,
1236             'manager' => CAP_ALLOW
1237         ),
1238         'clonepermissionsfrom' => 'moodle/course:managegrades'
1239     ),
1241     'moodle/grade:manage' => array(
1242         'riskbitmask' => RISK_PERSONAL | RISK_XSS,
1243         'captype' => 'write',
1244         'contextlevel' => CONTEXT_COURSE,
1245         'legacy' => array(
1246             'editingteacher' => CAP_ALLOW,
1247             'manager' => CAP_ALLOW
1248         ),
1249         'clonepermissionsfrom' => 'moodle/course:managegrades'
1250     ),
1252     'moodle/grade:edit' => array(
1253         'riskbitmask' => RISK_PERSONAL | RISK_XSS,
1254         'captype' => 'write',
1255         'contextlevel' => CONTEXT_COURSE,
1256         'legacy' => array(
1257             'editingteacher' => CAP_ALLOW,
1258             'manager' => CAP_ALLOW
1259         ),
1260         'clonepermissionsfrom' => 'moodle/course:managegrades'
1261     ),
1263     'moodle/grade:manageoutcomes' => array(
1264         'captype' => 'write',
1265         'contextlevel' => CONTEXT_COURSE,
1266         'legacy' => array(
1267             'editingteacher' => CAP_ALLOW,
1268             'manager' => CAP_ALLOW
1269         ),
1270         'clonepermissionsfrom' => 'moodle/course:managegrades'
1271     ),
1273     'moodle/grade:manageletters' => array(
1274         'captype' => 'write',
1275         'contextlevel' => CONTEXT_COURSE,
1276         'legacy' => array(
1277             'editingteacher' => CAP_ALLOW,
1278             'manager' => CAP_ALLOW
1279         ),
1280         'clonepermissionsfrom' => 'moodle/course:managegrades'
1281     ),
1283     'moodle/grade:hide' => array(
1284         'captype' => 'write',
1285         'contextlevel' => CONTEXT_COURSE,
1286         'legacy' => array(
1287             'editingteacher' => CAP_ALLOW,
1288             'manager' => CAP_ALLOW
1289         )
1290     ),
1292     'moodle/grade:lock' => array(
1293         'captype' => 'write',
1294         'contextlevel' => CONTEXT_COURSE,
1295         'legacy' => array(
1296             'editingteacher' => CAP_ALLOW,
1297             'manager' => CAP_ALLOW
1298         )
1299     ),
1301     'moodle/grade:unlock' => array(
1302         'captype' => 'write',
1303         'contextlevel' => CONTEXT_COURSE,
1304         'legacy' => array(
1305             'editingteacher' => CAP_ALLOW,
1306             'manager' => CAP_ALLOW
1307         )
1308     ),
1310     'moodle/my:manageblocks' => array(
1311         'captype' => 'write',
1312         'contextlevel' => CONTEXT_SYSTEM,
1313         'legacy' => array(
1314             'user' => CAP_ALLOW
1315         )
1316     ),
1318     'moodle/notes:view' => array(
1319         'captype' => 'read',
1320         'contextlevel' => CONTEXT_COURSE,
1321         'legacy' => array(
1322             'teacher' => CAP_ALLOW,
1323             'editingteacher' => CAP_ALLOW,
1324             'manager' => CAP_ALLOW
1325         )
1326     ),
1328     'moodle/notes:manage' => array(
1329         'riskbitmask' => RISK_SPAM,
1331         'captype' => 'write',
1332         'contextlevel' => CONTEXT_COURSE,
1333         'legacy' => array(
1334             'teacher' => CAP_ALLOW,
1335             'editingteacher' => CAP_ALLOW,
1336             'manager' => CAP_ALLOW
1337         )
1338     ),
1340     'moodle/tag:manage' => array(
1341         'riskbitmask' => RISK_SPAM,
1343         'captype' => 'write',
1344         'contextlevel' => CONTEXT_SYSTEM,
1345         'legacy' => array(
1346             'teacher' => CAP_ALLOW,
1347             'editingteacher' => CAP_ALLOW,
1348             'manager' => CAP_ALLOW
1349         )
1350     ),
1352     'moodle/tag:create' => array(
1353         'riskbitmask' => RISK_SPAM,
1355         'captype' => 'write',
1356         'contextlevel' => CONTEXT_SYSTEM,
1357         'legacy' => array(
1358             'manager' => CAP_ALLOW,
1359             'user' => CAP_ALLOW
1360         )
1361     ),
1363     'moodle/tag:edit' => array(
1364         'riskbitmask' => RISK_SPAM,
1366         'captype' => 'write',
1367         'contextlevel' => CONTEXT_SYSTEM,
1368         'legacy' => array(
1369             'manager' => CAP_ALLOW,
1370             'user' => CAP_ALLOW
1371         )
1372     ),
1374     'moodle/tag:editblocks' => array(
1375         'captype' => 'write',
1376         'contextlevel' => CONTEXT_SYSTEM,
1377         'legacy' => array(
1378             'teacher' => CAP_ALLOW,
1379             'editingteacher' => CAP_ALLOW,
1380             'manager' => CAP_ALLOW
1381         )
1382     ),
1384     'moodle/block:view' => array(
1385         'captype' => 'read',
1386         'contextlevel' => CONTEXT_BLOCK,
1387         'legacy' => array(
1388             'guest' => CAP_ALLOW,
1389             'user' => CAP_ALLOW,
1390             'student' => CAP_ALLOW,
1391             'teacher' => CAP_ALLOW,
1392             'editingteacher' => CAP_ALLOW,
1393             'coursecreator' => CAP_ALLOW
1394         )
1395     ),
1397     'moodle/block:edit' => array(
1398         'riskbitmask' => RISK_SPAM | RISK_XSS,
1400         'captype' => 'write',
1401         'contextlevel' => CONTEXT_BLOCK,
1402         'legacy' => array(
1403             'editingteacher' => CAP_ALLOW,
1404             'coursecreator' => CAP_ALLOW
1405         )
1406     ),
1408     'moodle/portfolio:export' => array(
1409         'captype' => 'read',
1410         'contextlevel' => CONTEXT_SYSTEM,
1411         'legacy' => array(
1412             'user' => CAP_ALLOW,
1413             'student' => CAP_ALLOW,
1414             'teacher' => CAP_ALLOW,
1415             'editingteacher' => CAP_ALLOW,
1416             'coursecreator' => CAP_ALLOW
1417         )
1418     ),
1419     'moodle/comment:view' => array(
1421         'captype' => 'read',
1422         'contextlevel' => CONTEXT_SYSTEM,
1423         'legacy' => array(
1424             'user' => CAP_ALLOW,
1425             'student' => CAP_ALLOW,
1426             'teacher' => CAP_ALLOW,
1427             'editingteacher' => CAP_ALLOW,
1428             'coursecreator' => CAP_ALLOW,
1429             'manager' => CAP_ALLOW
1430         )
1431     ),
1432     'moodle/comment:post' => array(
1434         'riskbitmask' => RISK_SPAM | RISK_PERSONAL,
1435         'captype' => 'write',
1436         'contextlevel' => CONTEXT_SYSTEM,
1437         'legacy' => array(
1438             'user' => CAP_ALLOW,
1439             'student' => CAP_ALLOW,
1440             'teacher' => CAP_ALLOW,
1441             'editingteacher' => CAP_ALLOW,
1442             'coursecreator' => CAP_ALLOW,
1443             'manager' => CAP_ALLOW
1444         )
1445     ),
1446     'moodle/comment:delete' => array(
1448         'riskbitmask' => RISK_DATALOSS,
1449         'captype' => 'write',
1450         'contextlevel' => CONTEXT_SYSTEM,
1451         'legacy' => array(
1452             'editingteacher' => CAP_ALLOW,
1453             'coursecreator' => CAP_ALLOW,
1454             'manager' => CAP_ALLOW
1455         )
1456     ),
1457     'moodle/webservice:createtoken' => array(
1459         'riskbitmask' => RISK_CONFIG | RISK_DATALOSS | RISK_SPAM | RISK_PERSONAL | RISK_XSS,
1460         'captype' => 'write',
1461         'contextlevel' => CONTEXT_SYSTEM,
1462         'legacy' => array(
1463             'manager' => CAP_ALLOW
1464         )
1465     ),
1466     'moodle/rating:view' => array(
1467         'captype' => 'read',
1468         'contextlevel' => CONTEXT_SYSTEM,
1469         'legacy' => array(
1470             'student' => CAP_ALLOW,
1471             'teacher' => CAP_ALLOW,
1472             'editingteacher' => CAP_ALLOW,
1473             'manager' => CAP_ALLOW
1474         )
1475     ),
1476     'moodle/rating:viewall' => array(
1478         'riskbitmask' => RISK_PERSONAL,
1479         'captype' => 'read',
1480         'contextlevel' => CONTEXT_SYSTEM,
1481         'legacy' => array(
1482             'teacher' => CAP_ALLOW,
1483             'editingteacher' => CAP_ALLOW,
1484             'manager' => CAP_ALLOW
1485         )
1486     ),
1487     'moodle/rating:rate' => array(
1488         'captype' => 'write',
1489         'contextlevel' => CONTEXT_SYSTEM,
1490         'legacy' => array(
1491             'teacher' => CAP_ALLOW,
1492             'editingteacher' => CAP_ALLOW,
1493             'manager' => CAP_ALLOW
1494         )
1495     )
1496 );