diff --git a/admin/mnet/peer_forms.php b/admin/mnet/peer_forms.php index 2000ef56fd9..8e3066a9b84 100644 --- a/admin/mnet/peer_forms.php +++ b/admin/mnet/peer_forms.php @@ -96,15 +96,6 @@ class mnet_review_host_form extends moodleform { $mform->addElement('textarea', 'public_key', get_string('publickey', 'mnet'), array('rows' => 17, 'cols' => 100, 'class' => 'smalltext')); $mform->setType('public_key', PARAM_PEM); - if ($mnet_peer && !empty($mnet_peer->deleted)) { - $radioarray = array(); - $radioarray[] = MoodleQuickForm::createElement('radio', 'deleted', '', get_string('yes'), 1); - $radioarray[] = MoodleQuickForm::createElement('radio', 'deleted', '', get_string('no'), 0); - $mform->addGroup($radioarray, 'radioar', get_string('deleted'), array(' '), false); - } else { - $mform->addElement('hidden', 'deleted'); - } - // finished with form controls, now the static informational stuff if ($mnet_peer && !empty($mnet_peer->bootstrapped)) { $expires = ''; @@ -140,7 +131,19 @@ class mnet_review_host_form extends moodleform { } } - $mform->addElement('static', 'certdetails', get_string('certdetails', 'mnet'), $OUTPUT->box('
' . $credstr . '
')); + $mform->addElement('static', 'certdetails', get_string('certdetails', 'mnet'), + $OUTPUT->box('
' . $credstr . '
', 'generalbox certdetails')); + } + + if ($mnet_peer && !empty($mnet_peer->deleted)) { + $radioarray = array(); + $radioarray[] = MoodleQuickForm::createElement('static', 'deletedinfo', '', + $OUTPUT->container(get_string('deletedhostinfo', 'mnet'), 'deletedhostinfo')); + $radioarray[] = MoodleQuickForm::createElement('radio', 'deleted', '', get_string('yes'), 1); + $radioarray[] = MoodleQuickForm::createElement('radio', 'deleted', '', get_string('no'), 0); + $mform->addGroup($radioarray, 'radioar', get_string('deleted'), array(' ', ' '), false); + } else { + $mform->addElement('hidden', 'deleted'); } // finished with static stuff, print save button diff --git a/admin/mnet/peers.php b/admin/mnet/peers.php index 0c334d09ba0..242ee1b4143 100644 --- a/admin/mnet/peers.php +++ b/admin/mnet/peers.php @@ -190,7 +190,7 @@ if ($formdata = $reviewform->get_data()) { // normal flow - just display all hosts with links echo $OUTPUT->header(); -$hosts = mnet_get_hosts(); +$hosts = mnet_get_hosts(true); // print the table to display the register all hosts setting $table = new html_table(); @@ -231,11 +231,21 @@ $table->head = array( ); $table->wrap = array('nowrap', 'nowrap', 'nowrap', 'nowrap'); $baseurl = new moodle_url('/admin/mnet/peers.php'); +$deleted = array(); foreach($hosts as $host) { $hosturl = new moodle_url($baseurl, array('hostid' => $host->id)); + if (trim($host->name) === '') { + // should not happen but... + $host->name = '???'; + } // process all hosts first since it's the easiest if ($host->id == $CFG->mnet_all_hosts_id) { $table->data[] = array(html_writer::tag('a', $host->name, array('href'=>$hosturl)), '', '', ''); + } + + // populate the list of deleted hosts + if ($host->deleted) { + $deleted[] = html_writer::link($hosturl, $host->name); continue; } @@ -253,6 +263,10 @@ foreach($hosts as $host) { } echo html_writer::table($table); +if ($deleted) { + echo $OUTPUT->box(get_string('deletedhosts', 'core_mnet', join(', ', $deleted)), 'deletedhosts'); +} + // finally, print the initial form to add a new host echo $OUTPUT->box_start(); echo $OUTPUT->heading(get_string('addnewhost', 'mnet'), 3); diff --git a/lang/en/mnet.php b/lang/en/mnet.php index bb9b4764c50..0d9c914baf6 100644 --- a/lang/en/mnet.php +++ b/lang/en/mnet.php @@ -47,6 +47,8 @@ $string['current_transport'] = 'Current transport'; $string['databaseerror'] = 'Could not write details to the database.'; $string['deleteaserver'] = 'Deleting a server'; $string['deletehost'] = 'Delete host'; +$string['deletedhostinfo'] = 'This host has been deleted. If you want to undelete it, switch the deleted status back to \'No\'.'; +$string['deletedhosts'] = 'Deleted hosts: {$a}'; $string['deletekeycheck'] = 'Are you absolutely sure you want to delete this key?'; $string['deleteoutoftime'] = 'Your 60-second window for deleting this key has expired. Please start again.'; $string['deleteuserrecord'] = 'SSO ACL: delete record for user \'{$a->user}\' from {$a->host}.'; diff --git a/mnet/lib.php b/mnet/lib.php index 1e6324d599c..074b86afb36 100644 --- a/mnet/lib.php +++ b/mnet/lib.php @@ -645,36 +645,28 @@ function mnet_profile_field_options() { /** - * Return information about all the current hosts - * This is basically just a resultset. + * Returns information about MNet peers * + * @param bool $withdeleted should the deleted peers be returned too * @return array */ -function mnet_get_hosts() { +function mnet_get_hosts($withdeleted = false) { global $CFG, $DB; - return $DB->get_records_sql(' SELECT - h.id, - h.wwwroot, - h.ip_address, - h.name, - h.public_key, - h.public_key_expires, - h.transport, - h.portno, - h.last_connect_time, - h.last_log_id, - h.applicationid, - a.name as app_name, - a.display_name as app_display_name, - a.xmlrpc_server_url - FROM - {mnet_host} h, - {mnet_application} a - WHERE - h.id <> ? AND - h.deleted = 0 AND - h.applicationid=a.id', - array($CFG->mnet_localhost_id)); + + $sql = "SELECT h.id, h.deleted, h.wwwroot, h.ip_address, h.name, h.public_key, h.public_key_expires, + h.transport, h.portno, h.last_connect_time, h.last_log_id, h.applicationid, + a.name as app_name, a.display_name as app_display_name, a.xmlrpc_server_url + FROM {mnet_host} h + JOIN {mnet_application} a ON h.applicationid = a.id + WHERE h.id <> ?"; + + if (!$withdeleted) { + $sql .= " AND h.deleted = 0"; + } + + $sql .= " ORDER BY h.deleted, h.name, h.id"; + + return $DB->get_records_sql($sql, array($CFG->mnet_localhost_id)); } diff --git a/theme/base/style/admin.css b/theme/base/style/admin.css index 51c32e80363..f90af47238b 100644 --- a/theme/base/style/admin.css +++ b/theme/base/style/admin.css @@ -205,3 +205,8 @@ #page-admin-plugins #plugins-control-panel .extension .source {background-color:#f3f2aa;} #page-admin-plugins #plugins-control-panel .msg td {text-align:center;} #page-admin-plugins #plugins-control-panel .requiredby {font-size:0.7em;color:#999;} + +/** MNet networking */ +#page-admin-mnet-peers .box.deletedhosts {margin-bottom:1em;font-size:80%;} +#page-admin-mnet-peers .mform .certdetails {background-color:white;} +#page-admin-mnet-peers .mform .deletedhostinfo {background-color:#ffd3d9;border 2px solid #eeaaaa;padding:4px;margin-bottom:5px;}