f07107ca631ac39ed51f5860c502dadb0abeb221
[moodle.git] / admin / settings / courses.php
1 <?php
3 // This file defines settingpages and externalpages under the "courses" category
5 if ($hassiteconfig
6  or has_capability('moodle/backup:backupcourse', $systemcontext)
7  or has_capability('moodle/category:manage', $systemcontext)
8  or has_capability('moodle/course:create', $systemcontext)
9  or has_capability('moodle/site:approvecourse', $systemcontext)) { // speedup for non-admins, add all caps used on this page
11     $ADMIN->add('courses', new admin_externalpage('coursemgmt', new lang_string('coursemgmt', 'admin'), $CFG->wwwroot . '/course/index.php?categoryedit=on',
12             array('moodle/category:manage', 'moodle/course:create')));
14 /// Course Default Settings Page
15 /// NOTE: these settings must be applied after all other settings because they depend on them
16     ///main course settings
17     $temp = new admin_settingpage('coursesettings', new lang_string('coursesettings'));
18     $courseformats = get_plugin_list('format');
19     $formcourseformats = array();
20     foreach ($courseformats as $courseformat => $courseformatdir) {
21         $formcourseformats[$courseformat] = new lang_string('pluginname', "format_$courseformat");
22     }
23     $temp->add(new admin_setting_configselect('moodlecourse/format', new lang_string('format'), new lang_string('coursehelpformat'), 'weeks',$formcourseformats));
25     $temp->add(new admin_setting_configtext('moodlecourse/maxsections', new lang_string('maxnumberweeks'), new lang_string('maxnumberweeks_desc'), 52));
27     $temp->add(new admin_settings_num_course_sections('moodlecourse/numsections', new lang_string('numberweeks'), new lang_string('coursehelpnumberweeks'), 10));
29     $choices = array();
30     $choices['0'] = new lang_string('hiddensectionscollapsed');
31     $choices['1'] = new lang_string('hiddensectionsinvisible');
32     $temp->add(new admin_setting_configselect('moodlecourse/hiddensections', new lang_string('hiddensections'), new lang_string('coursehelphiddensections'), 0,$choices));
33     $options = range(0, 10);
34     $temp->add(new admin_setting_configselect('moodlecourse/newsitems', new lang_string('newsitemsnumber'), new lang_string('coursehelpnewsitemsnumber'), 5,$options));
35     $temp->add(new admin_setting_configselect('moodlecourse/showgrades', new lang_string('showgrades'), new lang_string('coursehelpshowgrades'), 1,array(0 => new lang_string('no'), 1 => new lang_string('yes'))));
36     $temp->add(new admin_setting_configselect('moodlecourse/showreports', new lang_string('showreports'), '', 0,array(0 => new lang_string('no'), 1 => new lang_string('yes'))));
38     if (isset($CFG->maxbytes)) {
39         $choices = get_max_upload_sizes($CFG->maxbytes);
40     } else {
41         $choices = get_max_upload_sizes();
42     }
43     $temp->add(new admin_setting_configselect('moodlecourse/maxbytes', new lang_string('maximumupload'), new lang_string('coursehelpmaximumupload'), key($choices), $choices));
45     if (!empty($CFG->legacyfilesinnewcourses)) {
46         $choices = array('0'=>new lang_string('no'), '2'=>new lang_string('yes'));
47         $temp->add(new admin_setting_configselect('moodlecourse/legacyfiles', new lang_string('courselegacyfiles'), new lang_string('courselegacyfiles_help'), key($choices), $choices));
48     }
50     $choices = array();
51     $choices[COURSE_DISPLAY_SINGLEPAGE] = new lang_string('coursedisplay_single');
52     $choices[COURSE_DISPLAY_MULTIPAGE] = new lang_string('coursedisplay_multi');
53     $temp->add(new admin_setting_configselect('moodlecourse/coursedisplay', new lang_string('coursedisplay'), new lang_string('coursedisplay_help'), COURSE_DISPLAY_SINGLEPAGE, $choices));
55     $temp->add(new admin_setting_heading('groups', new lang_string('groups', 'group'), ''));
56     $choices = array();
57     $choices[NOGROUPS] = new lang_string('groupsnone', 'group');
58     $choices[SEPARATEGROUPS] = new lang_string('groupsseparate', 'group');
59     $choices[VISIBLEGROUPS] = new lang_string('groupsvisible', 'group');
60     $temp->add(new admin_setting_configselect('moodlecourse/groupmode', new lang_string('groupmode'), '', key($choices),$choices));
61     $temp->add(new admin_setting_configselect('moodlecourse/groupmodeforce', new lang_string('force'), new lang_string('coursehelpforce'), 0,array(0 => new lang_string('no'), 1 => new lang_string('yes'))));
64     $temp->add(new admin_setting_heading('availability', new lang_string('availability'), ''));
65     $choices = array();
66     $choices['0'] = new lang_string('courseavailablenot');
67     $choices['1'] = new lang_string('courseavailable');
68     $temp->add(new admin_setting_configselect('moodlecourse/visible', new lang_string('visible'), '', 1,$choices));
71     $temp->add(new admin_setting_heading('language', new lang_string('language'), ''));
72     $languages=array();
73     $languages[''] = new lang_string('forceno');
74     $languages += get_string_manager()->get_list_of_translations();
75     $temp->add(new admin_setting_configselect('moodlecourse/lang', new lang_string('forcelanguage'), '',key($languages),$languages));
77     $temp->add(new admin_setting_heading('progress', new lang_string('progress','completion'), ''));
78     $temp->add(new admin_setting_configselect('moodlecourse/enablecompletion', new lang_string('completion','completion'), '',
79         0, array(0 => new lang_string('completiondisabled','completion'), 1 => new lang_string('completionenabled','completion'))));
81     $temp->add(new admin_setting_configcheckbox('moodlecourse/completionstartonenrol', new lang_string('completionstartonenrol','completion'), new lang_string('completionstartonenrolhelp', 'completion'), 0));
82     $ADMIN->add('courses', $temp);
84 /// "courserequests" settingpage
85     $temp = new admin_settingpage('courserequest', new lang_string('courserequest'));
86     $temp->add(new admin_setting_configcheckbox('enablecourserequests', new lang_string('enablecourserequests', 'admin'), new lang_string('configenablecourserequests', 'admin'), 0));
87     $temp->add(new admin_settings_coursecat_select('defaultrequestcategory', new lang_string('defaultrequestcategory', 'admin'), new lang_string('configdefaultrequestcategory', 'admin'), 1));
88     $temp->add(new admin_setting_users_with_capability('courserequestnotify', new lang_string('courserequestnotify', 'admin'), new lang_string('configcourserequestnotify2', 'admin'), array(), 'moodle/site:approvecourse'));
89     $ADMIN->add('courses', $temp);
91 /// Pending course requests.
92     if (!empty($CFG->enablecourserequests)) {
93         $ADMIN->add('courses', new admin_externalpage('coursespending', new lang_string('pendingrequests'),
94                 $CFG->wwwroot . '/course/pending.php', array('moodle/site:approvecourse')));
95     }
97     // Add a category for backups
98     $ADMIN->add('courses', new admin_category('backups', new lang_string('backups','admin')));
100     // Create a page for general backups configuration and defaults.
101     $temp = new admin_settingpage('backupgeneralsettings', new lang_string('generalbackdefaults', 'backup'), 'moodle/backup:backupcourse');
103     // General configuration section.
104     $temp->add(new admin_setting_configselect('backup/loglifetime', new lang_string('loglifetime', 'backup'), new lang_string('configloglifetime', 'backup'), 30, array(
105         1   => new lang_string('numdays', '', 1),
106         2   => new lang_string('numdays', '', 2),
107         3   => new lang_string('numdays', '', 3),
108         5   => new lang_string('numdays', '', 5),
109         7   => new lang_string('numdays', '', 7),
110         10  => new lang_string('numdays', '', 10),
111         14  => new lang_string('numdays', '', 14),
112         20  => new lang_string('numdays', '', 20),
113         30  => new lang_string('numdays', '', 30),
114         60  => new lang_string('numdays', '', 60),
115         90  => new lang_string('numdays', '', 90),
116         120 => new lang_string('numdays', '', 120),
117         180 => new lang_string('numdays', '', 180),
118         365 => new lang_string('numdays', '', 365)
119     )));
121     // General defaults section.
122     $temp->add(new admin_setting_heading('generalsettings', new lang_string('generalsettings', 'backup'), ''));
123     $temp->add(new admin_setting_configcheckbox_with_lock('backup/backup_general_users', new lang_string('generalusers','backup'), new lang_string('configgeneralusers','backup'), array('value'=>1, 'locked'=>0)));
124     $temp->add(new admin_setting_configcheckbox_with_lock('backup/backup_general_anonymize', new lang_string('generalanonymize','backup'), new lang_string('configgeneralanonymize','backup'), array('value'=>0, 'locked'=>0)));
125     $temp->add(new admin_setting_configcheckbox_with_lock('backup/backup_general_role_assignments', new lang_string('generalroleassignments','backup'), new lang_string('configgeneralroleassignments','backup'), array('value'=>1, 'locked'=>0)));
126     $temp->add(new admin_setting_configcheckbox_with_lock('backup/backup_general_activities', new lang_string('generalactivities','backup'), new lang_string('configgeneralactivities','backup'), array('value'=>1, 'locked'=>0)));
127     $temp->add(new admin_setting_configcheckbox_with_lock('backup/backup_general_blocks', new lang_string('generalblocks','backup'), new lang_string('configgeneralblocks','backup'), array('value'=>1, 'locked'=>0)));
128     $temp->add(new admin_setting_configcheckbox_with_lock('backup/backup_general_filters', new lang_string('generalfilters','backup'), new lang_string('configgeneralfilters','backup'), array('value'=>1, 'locked'=>0)));
129     $temp->add(new admin_setting_configcheckbox_with_lock('backup/backup_general_comments', new lang_string('generalcomments','backup'), new lang_string('configgeneralcomments','backup'), array('value'=>1, 'locked'=>0)));
130     $temp->add(new admin_setting_configcheckbox_with_lock('backup/backup_general_userscompletion', new lang_string('generaluserscompletion','backup'), new lang_string('configgeneraluserscompletion','backup'), array('value'=>1, 'locked'=>0)));
131     $temp->add(new admin_setting_configcheckbox_with_lock('backup/backup_general_logs', new lang_string('generallogs','backup'), new lang_string('configgenerallogs','backup'), array('value'=>0, 'locked'=>0)));
132     $temp->add(new admin_setting_configcheckbox_with_lock('backup/backup_general_histories', new lang_string('generalhistories','backup'), new lang_string('configgeneralhistories','backup'), array('value'=>0, 'locked'=>0)));
133     $ADMIN->add('backups', $temp);
135     // Create a page for automated backups configuration and defaults.
136     $temp = new admin_settingpage('automated', new lang_string('automatedsetup','backup'), 'moodle/backup:backupcourse');
138     // Automated configuration section.
139     $temp->add(new admin_setting_configselect('backup/backup_auto_active', new lang_string('active'),  new lang_string('autoactivedescription', 'backup'), 0, array(
140         0 => new lang_string('autoactivedisabled', 'backup'),
141         1 => new lang_string('autoactiveenabled', 'backup'),
142         2 => new lang_string('autoactivemanual', 'backup')
143     )));
144     $temp->add(new admin_setting_special_backupdays());
145     $temp->add(new admin_setting_configtime('backup/backup_auto_hour', 'backup_auto_minute', new lang_string('executeat'),
146             new lang_string('backupexecuteathelp'), array('h' => 0, 'm' => 0)));
147     $storageoptions = array(
148         0 => new lang_string('storagecourseonly', 'backup'),
149         1 => new lang_string('storageexternalonly', 'backup'),
150         2 => new lang_string('storagecourseandexternal', 'backup')
151     );
152     $temp->add(new admin_setting_configselect('backup/backup_auto_storage', new lang_string('automatedstorage', 'backup'), new lang_string('automatedstoragehelp', 'backup'), 0, $storageoptions));
153     $temp->add(new admin_setting_configdirectory('backup/backup_auto_destination', new lang_string('saveto'), new lang_string('backupsavetohelp'), ''));
154     $keepoptoins = array(
155         0 => new lang_string('all'), 1 => '1',
156         2 => '2',
157         5 => '5',
158         10 => '10',
159         20 => '20',
160         30 => '30',
161         40 => '40',
162         50 => '50',
163         100 => '100',
164         200 => '200',
165         300 => '300',
166         400 => '400',
167         500 => '500');
168     $temp->add(new admin_setting_configselect('backup/backup_auto_keep', new lang_string('keep'), new lang_string('backupkeephelp'), 1, $keepoptoins));
169     $temp->add(new admin_setting_configcheckbox('backup/backup_shortname', new lang_string('backup_shortname', 'admin'), new lang_string('backup_shortnamehelp', 'admin'), 0));
171     // Automated defaults section.
172     $temp->add(new admin_setting_heading('automatedsettings', new lang_string('automatedsettings','backup'), ''));
173     $temp->add(new admin_setting_configcheckbox('backup/backup_auto_users', new lang_string('generalusers', 'backup'), new lang_string('configgeneralusers', 'backup'), 1));
174     $temp->add(new admin_setting_configcheckbox('backup/backup_auto_role_assignments', new lang_string('generalroleassignments','backup'), new lang_string('configgeneralroleassignments','backup'), 1));
175     $temp->add(new admin_setting_configcheckbox('backup/backup_auto_activities', new lang_string('generalactivities','backup'), new lang_string('configgeneralactivities','backup'), 1));
176     $temp->add(new admin_setting_configcheckbox('backup/backup_auto_blocks', new lang_string('generalblocks','backup'), new lang_string('configgeneralblocks','backup'), 1));
177     $temp->add(new admin_setting_configcheckbox('backup/backup_auto_filters', new lang_string('generalfilters','backup'), new lang_string('configgeneralfilters','backup'), 1));
178     $temp->add(new admin_setting_configcheckbox('backup/backup_auto_comments', new lang_string('generalcomments','backup'), new lang_string('configgeneralcomments','backup'), 1));
179     $temp->add(new admin_setting_configcheckbox('backup/backup_auto_userscompletion', new lang_string('generaluserscompletion','backup'), new lang_string('configgeneraluserscompletion','backup'), 1));
180     $temp->add(new admin_setting_configcheckbox('backup/backup_auto_logs', new lang_string('generallogs', 'backup'), new lang_string('configgenerallogs', 'backup'), 0));
181     $temp->add(new admin_setting_configcheckbox('backup/backup_auto_histories', new lang_string('generalhistories','backup'), new lang_string('configgeneralhistories','backup'), 0));
184     //$temp->add(new admin_setting_configcheckbox('backup/backup_auto_messages', new lang_string('messages', 'message'), new lang_string('backupmessageshelp','message'), 0));
185     //$temp->add(new admin_setting_configcheckbox('backup/backup_auto_blogs', new lang_string('blogs', 'blog'), new lang_string('backupblogshelp','blog'), 0));
187     $ADMIN->add('backups', $temp);
189 } // end of speedup