### Eclipse Workspace Patch 1.0
#P moodle
Index: version.php
===================================================================
RCS file: /cvsroot/moodle/moodle/version.php,v
retrieving revision 1.778
diff -u -r1.778 version.php
--- version.php	25 Aug 2008 01:36:29 -0000	1.778
+++ version.php	25 Aug 2008 05:50:48 -0000
@@ -6,7 +6,7 @@
 // This is compared against the values stored in the database to determine
 // whether upgrades should be performed (see lib/db/*.php)
 
-    $version = 2008081900;  // YYYYMMDD   = date of the last version bump
+    $version = 2008082500;  // YYYYMMDD   = date of the last version bump
                             //         XX = daily increments
 
     $release = '2.0 dev (Build: 20080825)';  // Human-friendly version name
Index: admin/settings/security.php
===================================================================
RCS file: /cvsroot/moodle/moodle/admin/settings/security.php,v
retrieving revision 1.29
diff -u -r1.29 security.php
--- admin/settings/security.php	22 Jul 2008 04:07:59 -0000	1.29
+++ admin/settings/security.php	25 Aug 2008 05:50:49 -0000
@@ -22,7 +22,6 @@
     $max_upload_choices[0] = get_string('serverlimit', 'admin');
     $temp->add(new admin_setting_configselect('maxbytes', get_string('maxbytes', 'admin'), get_string('configmaxbytes', 'admin'), 0, $max_upload_choices));
 
-    $temp->add(new admin_setting_configcheckbox('messaging', get_string('messaging', 'admin'), get_string('configmessaging','admin'), 1));
     $temp->add(new admin_setting_configcheckbox('allowobjectembed', get_string('allowobjectembed', 'admin'), get_string('configallowobjectembed', 'admin'), 0));
     $temp->add(new admin_setting_configcheckbox('enabletrusttext', get_string('enabletrusttext', 'admin'), get_string('configenabletrusttext', 'admin'), 0));
     $temp->add(new admin_setting_configselect('maxeditingtime', get_string('maxeditingtime','admin'), get_string('configmaxeditingtime','admin'), 1800,
@@ -39,13 +38,6 @@
                                               'firstname' => get_string('firstname'))));
     $temp->add(new admin_setting_configcheckbox('extendedusernamechars', get_string('extendedusernamechars', 'admin'), get_string('configextendedusernamechars', 'admin'), 0));
     $temp->add(new admin_setting_configtext('sitepolicy', get_string('sitepolicy', 'admin'), get_string('configsitepolicy', 'admin'), '', PARAM_RAW));
-    $temp->add(new admin_setting_configselect('bloglevel', get_string('bloglevel', 'admin'), get_string('configbloglevel', 'admin'), 4, array(5 => get_string('worldblogs','blog'),
-                                                                                                                                              4 => get_string('siteblogs','blog'),
-                                                                                                                                              3 => get_string('courseblogs','blog'),
-                                                                                                                                              2 => get_string('groupblogs','blog'),
-                                                                                                                                              1 => get_string('personalblogs','blog'),
-                                                                                                                                              0 => get_string('disableblogs','blog'))));
-    $temp->add(new admin_setting_configcheckbox('usetags', get_string('usetags','admin'),get_string('configusetags', 'admin'),'1'));
     $temp->add(new admin_setting_configcheckbox('keeptagnamecase', get_string('keeptagnamecase','admin'),get_string('configkeeptagnamecase', 'admin'),'1'));
     $temp->add(new admin_setting_configcheckbox('cronclionly', get_string('cronclionly', 'admin'), get_string('configcronclionly', 'admin'), 0));
     $temp->add(new admin_setting_configpasswordunmask('cronremotepassword', get_string('cronremotepassword', 'admin'), get_string('configcronremotepassword', 'admin'), ''));
Index: admin/settings/misc.php
===================================================================
RCS file: /cvsroot/moodle/moodle/admin/settings/misc.php,v
retrieving revision 1.22
diff -u -r1.22 misc.php
--- admin/settings/misc.php	16 Aug 2008 12:16:08 -0000	1.22
+++ admin/settings/misc.php	25 Aug 2008 05:50:48 -0000
@@ -11,7 +11,6 @@
     $item = new admin_setting_configcheckbox('enablehtmlpurifier', get_string('enablehtmlpurifier', 'admin'), get_string('configenablehtmlpurifier', 'admin'), 0); 
     $item->set_updatedcallback('reset_text_filters_cache');
     $temp->add($item);
-    $temp->add(new admin_setting_configcheckbox('enablegroupings', get_string('enablegroupings', 'admin'), get_string('configenablegroupings', 'admin'), 0));
 
     // Completion system
     require_once($CFG->libdir.'/completionlib.php');
Index: admin/settings/plugins.php
===================================================================
RCS file: /cvsroot/moodle/moodle/admin/settings/plugins.php,v
retrieving revision 1.15
diff -u -r1.15 plugins.php
--- admin/settings/plugins.php	22 Aug 2008 03:32:49 -0000	1.15
+++ admin/settings/plugins.php	25 Aug 2008 05:50:49 -0000
@@ -152,11 +152,10 @@
     $manage = get_string('manageportfolios', 'portfolio');
     $url = "$CFG->wwwroot/$CFG->admin/portfolio.php";
 
-    $ADMIN->add('modules', new admin_category('portfoliosettings', $catname));
+    $ADMIN->add('modules', new admin_category('portfoliosettings', $catname, empty($CFG->portfolioenabled)));
 
     // jump through hoops to do what we want
     $temp = new admin_settingpage('manageportfolios', get_string('manageportfolios', 'portfolio'));
-    $temp->add(new admin_setting_configcheckbox('portfolioenabled', get_string('enabled', 'portfolio'), get_string('enableddesc', 'portfolio'), false));
     $temp->add(new admin_setting_manageportfolio());
 
     $ADMIN->add('portfoliosettings', $temp);
Index: admin/settings/grades.php
===================================================================
RCS file: /cvsroot/moodle/moodle/admin/settings/grades.php,v
retrieving revision 1.32
diff -u -r1.32 grades.php
--- admin/settings/grades.php	3 Mar 2008 11:03:54 -0000	1.32
+++ admin/settings/grades.php	25 Aug 2008 05:50:48 -0000
@@ -14,9 +14,6 @@
         // new CFG variable for gradebook (what roles to display)
         $temp->add(new admin_setting_special_gradebookroles());
 
-        // enable outcomes checkbox
-        $temp->add(new admin_setting_configcheckbox('enableoutcomes', get_string('enableoutcomes', 'grades'), get_string('configenableoutcomes', 'grades'), 0, PARAM_INT));
-
         $temp->add(new admin_setting_grade_profilereport());
 
         $temp->add(new admin_setting_configselect('grade_aggregationposition', get_string('aggregationposition', 'grades'),
@@ -142,7 +139,7 @@
 
     $scales = new admin_externalpage('scales', get_string('scales'), $CFG->wwwroot.'/grade/edit/scale/index.php', 'moodle/grade:manage');
     $ADMIN->add('grades', $scales);
-    $outcomes = new admin_externalpage('outcomes', get_string('outcomes', 'grades'), $CFG->wwwroot.'/grade/edit/outcome/index.php', 'moodle/grade:manage');
+    $outcomes = new admin_externalpage('outcomes', get_string('outcomes', 'grades'), $CFG->wwwroot.'/grade/edit/outcome/index.php', 'moodle/grade:manage', empty($CFG->enableoutcomes));
     $ADMIN->add('grades', $outcomes);
     $letters = new admin_externalpage('letters', get_string('letters', 'grades'), $CFG->wwwroot.'/grade/edit/letter/edit.php', 'moodle/grade:manageletters');
     $ADMIN->add('grades', $letters);
Index: admin/settings/server.php
===================================================================
RCS file: /cvsroot/moodle/moodle/admin/settings/server.php,v
retrieving revision 1.49
diff -u -r1.49 server.php
--- admin/settings/server.php	7 Aug 2008 13:36:20 -0000	1.49
+++ admin/settings/server.php	25 Aug 2008 05:50:49 -0000
@@ -93,12 +93,6 @@
 
 
 
-// "rss" settingpage
-$temp = new admin_settingpage('rss', get_string('rss'));
-$temp->add(new admin_setting_configcheckbox('enablerssfeeds', get_string('enablerssfeeds', 'admin'), get_string('configenablerssfeeds', 'admin'), 0));
-$ADMIN->add('server', $temp);
-
-
 // "debugging" settingpage
 $temp = new admin_settingpage('debugging', get_string('debugging', 'admin'));
 $temp->add(new admin_setting_special_debug());
@@ -110,8 +104,7 @@
 
 
 // "stats" settingpage
-$temp = new admin_settingpage('stats', get_string('stats'));
-$temp->add(new admin_setting_configcheckbox('enablestats', get_string('enablestats', 'admin'), get_string('configenablestats', 'admin'), 0));
+$temp = new admin_settingpage('stats', get_string('stats'), 'moodle/site:config', empty($CFG->enablestats));
 $temp->add(new admin_setting_configselect('statsfirstrun', get_string('statsfirstrun', 'admin'), get_string('configstatsfirstrun', 'admin'), 'none', array('none' => get_string('none'),
                                                                                                                                                            60*60*24*7 => get_string('numweeks','moodle',1),
                                                                                                                                                            60*60*24*14 => get_string('numweeks','moodle',2),
Index: admin/settings/top.php
===================================================================
RCS file: /cvsroot/moodle/moodle/admin/settings/top.php,v
retrieving revision 1.23
diff -u -r1.23 top.php
--- admin/settings/top.php	22 Aug 2008 03:32:49 -0000	1.23
+++ admin/settings/top.php	25 Aug 2008 05:50:49 -0000
@@ -18,6 +18,11 @@
  // hidden upgrade script
 $ADMIN->add('root', new admin_externalpage('upgradesettings', get_string('upgradesettings', 'admin'), "$CFG->wwwroot/$CFG->admin/upgradesettings.php", 'moodle/site:config', true));
 
+if ($hassiteconfig) {
+    $enabledmoodlefeatures = new admin_settingpage('enabledfeatures', get_string('enabledfeatures', 'admin'));
+    $ADMIN->add('root', $enabledmoodlefeatures);
+}
+
 $ADMIN->add('root', new admin_category('users', get_string('users','admin')));
 $ADMIN->add('root', new admin_category('courses', get_string('courses','admin')));
 $ADMIN->add('root', new admin_category('grades', get_string('grades')));
@@ -28,7 +33,8 @@
 $ADMIN->add('root', new admin_category('appearance', get_string('appearance','admin')));
 $ADMIN->add('root', new admin_category('frontpage', get_string('frontpage','admin')));
 $ADMIN->add('root', new admin_category('server', get_string('server','admin')));
-$ADMIN->add('root', new admin_category('mnet', get_string('net','mnet')));
+
+$ADMIN->add('root', new admin_category('mnet', get_string('net','mnet'), (isset($CFG->mnet_dispatcher_mode) and $CFG->mnet_dispatcher_mode === 'off')));
 
 $ADMIN->add('root', new admin_category('reports', get_string('reports')));
 foreach (get_list_of_plugins($CFG->admin.'/report') as $plugin) {
@@ -43,6 +49,7 @@
         // ugly hack for special access control in reports
         switch($plugin) {
             case 'backups': $cap = 'moodle/site:backup'; break;
+            case 'stats': if (empty($CFG->enablestats)) {continue 2;};
             default: $cap = 'moodle/site:viewreports';
         }
         $ADMIN->add('reports', new admin_externalpage('report'.$plugin, $reportname, "$CFG->wwwroot/$CFG->admin/report/$plugin/index.php",$cap));
Index: lang/en_utf8/notes.php
===================================================================
RCS file: /cvsroot/moodle/moodle/lang/en_utf8/notes.php,v
retrieving revision 1.7
diff -u -r1.7 notes.php
--- lang/en_utf8/notes.php	13 Jun 2008 06:50:06 -0000	1.7
+++ lang/en_utf8/notes.php	25 Aug 2008 05:50:52 -0000
@@ -4,19 +4,22 @@
 $string['addnewnoteselect'] = 'Select users to write notes about';
 $string['bynameondate'] = 'by $a->name - $a->date';
 $string['cannotdeletepost'] = 'Error occured while deleting post';
-$string['course'] = 'course';
+$string['configenablenotes'] = 'Enable storing of notes about individual users.';
 $string['content'] = 'Content';
+$string['course'] = 'course';
 $string['created'] = 'created';
 $string['coursenotes'] = 'Course notes';
 $string['deletenotes'] = 'Delete all notes';
 $string['deleteconfirm'] = 'Delete this note?';
 $string['editnote'] = 'Edit note';
+$string['enablenotes'] = 'Enable notes';
 $string['invalidid'] = 'Invalid note ID specified';
 $string['groupaddnewnote'] = 'Add a common note';
 $string['note'] = 'Note';
 $string['notes'] = 'Notes';
 $string['nonotes'] = 'There are no notes of this type yet';
 $string['nopermissiontodelete'] = 'You may not delete this note';
+$string['notesdisabled'] = 'Notes are disabled, sorry.';
 $string['notesnotvisible'] = 'You are not allowed to view the notes.';
 $string['nocontent'] = 'Note content can not be empty';
 $string['nouser'] = 'You must select a user';
Index: lang/en_utf8/admin.php
===================================================================
RCS file: /cvsroot/moodle/moodle/lang/en_utf8/admin.php,v
retrieving revision 1.222
diff -u -r1.222 admin.php
--- lang/en_utf8/admin.php	22 Aug 2008 03:32:49 -0000	1.222
+++ lang/en_utf8/admin.php	25 Aug 2008 05:50:52 -0000
@@ -335,6 +335,7 @@
 $string['emptysettingvalue'] = 'Empty';
 $string['enableajax'] = 'Enable AJAX';
 $string['enablecourserequests'] = 'Enable course requests';
+$string['enabledfeatures'] = 'Features';
 $string['enableglobalsearch'] = 'Enable global search';
 $string['enablegroupings'] = 'Enable groupings';
 $string['enablehtmlpurifier'] = 'Enable HTML Purifier';
Index: lang/en_utf8/mnet.php
===================================================================
RCS file: /cvsroot/moodle/moodle/lang/en_utf8/mnet.php,v
retrieving revision 1.25
diff -u -r1.25 mnet.php
--- lang/en_utf8/mnet.php	16 Apr 2008 09:16:50 -0000	1.25
+++ lang/en_utf8/mnet.php	25 Aug 2008 05:50:52 -0000
@@ -1,4 +1,5 @@
 <?PHP
+$string['configmnet']                   = 'Moodle networking allows communication of this server with other servers or services.';
 $string['xmlrpc-missing']               = 'You must have XML-RPC installed in your PHP build to be able to use this feature.';
 $string['description']                  = 'Description';
 $string['mnet']                         = 'Moodle Networking';
Index: lib/weblib.php
===================================================================
RCS file: /cvsroot/moodle/moodle/lib/weblib.php,v
retrieving revision 1.1127
diff -u -r1.1127 weblib.php
--- lib/weblib.php	20 Aug 2008 02:52:29 -0000	1.1127
+++ lib/weblib.php	25 Aug 2008 05:50:58 -0000
@@ -4484,7 +4484,7 @@
         $output .= '<a href="'.$CFG->wwwroot.'/blog/index.php?userid='.$user->id.'">'.get_string('blogs','blog').'</a><br />';
     }
     //link to notes
-    if (has_capability('moodle/notes:manage', $context) || has_capability('moodle/notes:view', $context)) {
+    if (!empty($CFG->enablenotes) and (has_capability('moodle/notes:manage', $context) || has_capability('moodle/notes:view', $context))) {
         $output .= '<a href="'.$CFG->wwwroot.'/notes/index.php?course=' . $course->id. '&amp;user='.$user->id.'">'.get_string('notes','notes').'</a><br />';
     }
 
Index: notes/index.php
===================================================================
RCS file: /cvsroot/moodle/moodle/notes/index.php,v
retrieving revision 1.12
diff -u -r1.12 index.php
--- notes/index.php	21 Aug 2008 21:40:29 -0000	1.12
+++ notes/index.php	25 Aug 2008 05:50:58 -0000
@@ -54,6 +54,9 @@
     require_login($course);
     add_to_log($courseid, 'notes', 'view', 'index.php?course='.$courseid.'&amp;user='.$userid, 'view notes');
 
+    if (empty($CFG->enablenotes)) {
+        print_error('notesdisabled', 'notes');
+    }
 
 /// output HTML
     if ($course->id == SITEID) {
Index: notes/edit.php
===================================================================
RCS file: /cvsroot/moodle/moodle/notes/edit.php,v
retrieving revision 1.12
diff -u -r1.12 edit.php
--- notes/edit.php	21 Aug 2008 21:40:29 -0000	1.12
+++ notes/edit.php	25 Aug 2008 05:50:58 -0000
@@ -42,6 +42,10 @@
     $context = get_context_instance(CONTEXT_COURSE, $course->id);
     require_capability('moodle/notes:manage', $context);
 
+    if (empty($CFG->enablenotes)) {
+        print_error('notesdisabled', 'notes');
+    }
+
 /// create form
     $noteform = new note_edit_form();
 
Index: notes/delete.php
===================================================================
RCS file: /cvsroot/moodle/moodle/notes/delete.php,v
retrieving revision 1.10
diff -u -r1.10 delete.php
--- notes/delete.php	21 Aug 2008 21:40:29 -0000	1.10
+++ notes/delete.php	25 Aug 2008 05:50:58 -0000
@@ -32,6 +32,10 @@
     print_error('nopermissiontodelete', 'notes');
 }
 
+if (empty($CFG->enablenotes)) {
+    print_error('notesdisabled', 'notes');
+}
+
 if (data_submitted() && confirm_sesskey()) {
 //if data was submitted and is valid, then delete note
     $returnurl = $CFG->wwwroot . '/notes/index.php?course=' . $course->id . '&amp;user=' . $note->userid;
Index: user/addnote.php
===================================================================
RCS file: /cvsroot/moodle/moodle/user/addnote.php,v
retrieving revision 1.9
diff -u -r1.9 addnote.php
--- user/addnote.php	13 Jun 2008 07:07:45 -0000	1.9
+++ user/addnote.php	25 Aug 2008 05:50:59 -0000
@@ -16,6 +16,10 @@
 // to create notes the current user needs a capability
 require_capability('moodle/notes:manage', $context);
 
+if (empty($CFG->enablenotes)) {
+    print_error('notesdisabled', 'notes');
+}
+
 if (!empty($users) && confirm_sesskey()) {
     if (count($users) != count($contents) || count($users) != count($states)) {
         print_error('invalidformdata', '', $CFG->wwwroot.'/user/index.php?id='.$id);
@@ -25,7 +29,7 @@
     $note->courseid = $id;
     $note->format = FORMAT_PLAIN;
     foreach ($users as $k => $v) {
-        if(!$user = $DB->get_record('user', array('id'=>$v)) || empty($contents[$k])) {
+        if (!$user = $DB->get_record('user', array('id'=>$v)) || empty($contents[$k])) {
             continue;
         }
         $note->id = 0;
Index: user/index.php
===================================================================
RCS file: /cvsroot/moodle/moodle/user/index.php,v
retrieving revision 1.219
diff -u -r1.219 index.php
--- user/index.php	28 Jul 2008 07:17:34 -0000	1.219
+++ user/index.php	25 Aug 2008 05:51:00 -0000
@@ -858,7 +858,7 @@
         echo '<input type="button" onclick="checknone()" value="'.get_string('deselectall').'" /> ';
         $displaylist = array();
         $displaylist['messageselect.php'] = get_string('messageselectadd');
-        if (has_capability('moodle/notes:manage', $context) && $context->id != $frontpagectx->id) {
+        if (!empty($CFG->enablenotes) && has_capability('moodle/notes:manage', $context) && $context->id != $frontpagectx->id) {
             $displaylist['addnote.php'] = get_string('addnewnote', 'notes');
             $displaylist['groupaddnote.php'] = get_string('groupaddnewnote', 'notes');
         }
Index: user/tabs.php
===================================================================
RCS file: /cvsroot/moodle/moodle/user/tabs.php,v
retrieving revision 1.60
diff -u -r1.60 tabs.php
--- user/tabs.php	13 Aug 2008 04:09:13 -0000	1.60
+++ user/tabs.php	25 Aug 2008 05:51:00 -0000
@@ -59,7 +59,7 @@
             $toprow[] = new tabobject('blogs', $CFG->wwwroot.'/blog/index.php?filtertype=course&amp;filterselect='.$filterselect, get_string('blogs','blog'));
         }
 
-        if (has_capability('moodle/notes:manage', $coursecontext) || has_capability('moodle/notes:view', $coursecontext)) {
+        if (!empty($CFG->enablenotes) and (has_capability('moodle/notes:manage', $coursecontext) || has_capability('moodle/notes:view', $coursecontext))) {
             $toprow[] = new tabobject('notes', $CFG->wwwroot.'/notes/index.php?filtertype=course&amp;filterselect=' . $filterselect, get_string('notes', 'notes'));
         }
 
@@ -171,7 +171,7 @@
             $toprow[] = new tabobject('blogs', $CFG->wwwroot.'/blog/index.php?userid='.$user->id.'&amp;courseid='.$course->id, get_string('blog', 'blog'));
         }
 
-        if (has_capability('moodle/notes:manage', $coursecontext) || has_capability('moodle/notes:view', $coursecontext)) {
+        if (!empty($CFG->enablenotes) and (has_capability('moodle/notes:manage', $coursecontext) || has_capability('moodle/notes:view', $coursecontext))) {
             $toprow[] = new tabobject('notes', $CFG->wwwroot.'/notes/index.php?course='.$course->id . '&amp;user=' . $user->id, get_string('notes', 'notes'));
         }
 
@@ -239,7 +239,7 @@
         }
     }
 
-    if (empty($userindexpage) && $user->id == $USER->id && !empty($CFG->portfolioenabled) && has_capability('moodle/portfolio:export', get_system_context())) {
+    if (!empty($user) and empty($userindexpage) && $user->id == $USER->id && !empty($CFG->portfolioenabled) && has_capability('moodle/portfolio:export', get_system_context())) {
 
         /// Portfolio tab
         require_once($CFG->libdir . '/portfoliolib.php');
@@ -249,7 +249,7 @@
     }
 
     // Repository Tab
-    if ($user->id == $USER->id) {
+    if (!empty($user) and $user->id == $USER->id) {
         require_once($CFG->dirroot . '/repository/lib.php');
         if (repository_instances($COURSE->context, $USER->id)) {
             $toprow[] = new tabobject('repositories', $CFG->wwwroot .'/user/repository.php', get_string('repositories', 'repository'));
@@ -257,7 +257,7 @@
     }
 
     /// Messaging tab
-    if (has_capability('moodle/user:editownmessageprofile', $systemcontext)) {
+    if (!empty($user) and empty($userindexpage) and has_capability('moodle/user:editownmessageprofile', $systemcontext)) {
         $toprow[] = new tabobject('editmessage', $CFG->wwwroot.'/message/edit.php?id='.$user->id.'&amp;course='.$course->id, get_string('editmymessage', 'message'));
     }
 
Index: user/groupaddnote.php
===================================================================
RCS file: /cvsroot/moodle/moodle/user/groupaddnote.php,v
retrieving revision 1.6
diff -u -r1.6 groupaddnote.php
--- user/groupaddnote.php	13 Jun 2008 07:07:45 -0000	1.6
+++ user/groupaddnote.php	25 Aug 2008 05:50:59 -0000
@@ -17,6 +17,10 @@
 // to create notes the current user needs a capability
 require_capability('moodle/notes:manage', $context);
 
+if (empty($CFG->enablenotes)) {
+    print_error('notesdisabled', 'notes');
+}
+
 if (!empty($users) && !empty($content) && confirm_sesskey()) {
     $note = new object();
     $note->courseid = $id;
Index: admin/mnet/index.php
===================================================================
RCS file: /cvsroot/moodle/moodle/admin/mnet/index.php,v
retrieving revision 1.20
diff -u -r1.20 index.php
--- admin/mnet/index.php	19 Jun 2008 22:27:09 -0000	1.20
+++ admin/mnet/index.php	25 Aug 2008 05:50:48 -0000
@@ -108,14 +108,6 @@
                     <td align="right"><?php print_string('expires', 'mnet'); ?>:</td>
                     <td><?php echo userdate($MNET->public_key_expires); ?></td>
                 </tr>
-                <tr valign="top">
-                    <td align="right"><?php print_string('net', 'mnet'); ?>:</td>
-                    <td><input type="hidden" name="sesskey" value="<?php echo $USER->sesskey ?>" />
-                        <input type="radio" name="mode" value="off" <?php echo ("off" == $CFG->mnet_dispatcher_mode)? 'checked="checked"' : '' ?> /> <?php print_string('off', 'mnet'); ?> <br />
-                        <input type="radio" name="mode" value="strict" <?php echo ("strict" == $CFG->mnet_dispatcher_mode)? 'checked="checked"' : '' ?> /> <?php print_string('on', 'mnet'); ?><br />
-                        <input type="submit" name="submit" value="<?php print_string('savechanges'); ?>" />
-                    </td>
-                </tr>
             </table>
             </td>
         </tr>
Index: admin/settings/features.php
===================================================================
RCS file: admin/settings/features.php
diff -N admin/settings/features.php
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ admin/settings/features.php	1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,32 @@
+<?php // $Id:$
+
+if ($hassiteconfig) { // speedup for non-admins, add all caps used on this page
+
+    $options = array('off'=>get_string('off', 'mnet'), 'strict'=>get_string('on', 'mnet'));
+    $enabledmoodlefeatures->add(new admin_setting_configselect('mnet_dispatcher_mode', get_string('net', 'mnet'), get_string('configmnet', 'mnet'), 'off', $options));
+
+    $enabledmoodlefeatures->add(new admin_setting_configcheckbox('enablegroupings', get_string('enablegroupings', 'admin'), get_string('configenablegroupings', 'admin'), 0));
+
+    $enabledmoodlefeatures->add(new admin_setting_configcheckbox('usetags', get_string('usetags','admin'),get_string('configusetags', 'admin'),'1'));
+
+    $enabledmoodlefeatures->add(new admin_setting_configcheckbox('enablestats', get_string('enablestats', 'admin'), get_string('configenablestats', 'admin'), 0));
+
+    $enabledmoodlefeatures->add(new admin_setting_configcheckbox('enablerssfeeds', get_string('enablerssfeeds', 'admin'), get_string('configenablerssfeeds', 'admin'), 0));
+
+    $enabledmoodlefeatures->add(new admin_setting_configcheckbox('messaging', get_string('messaging', 'admin'), get_string('configmessaging','admin'), 1));
+
+    $enabledmoodlefeatures->add(new admin_setting_configcheckbox('portfolioenabled', get_string('enabled', 'portfolio'), get_string('enableddesc', 'portfolio'), 0));
+
+    $enabledmoodlefeatures->add(new admin_setting_configcheckbox('enableoutcomes', get_string('enableoutcomes', 'grades'), get_string('configenableoutcomes', 'grades'), 0));
+
+    $enabledmoodlefeatures->add(new admin_setting_configcheckbox('enablenotes', get_string('enablenotes', 'notes'), get_string('configenablenotes', 'notes'), 1));
+
+    $enabledmoodlefeatures->add(new admin_setting_configselect('bloglevel', get_string('bloglevel', 'admin'),
+                                get_string('configbloglevel', 'admin'), 4, array(5 => get_string('worldblogs','blog'),
+                                                                                 4 => get_string('siteblogs','blog'),
+                                                                                 3 => get_string('courseblogs','blog'),
+                                                                                 2 => get_string('groupblogs','blog'),
+                                                                                 1 => get_string('personalblogs','blog'),
+                                                                                 0 => get_string('disableblogs','blog'))));
+
+}
