Merge branch 'MDL-32009-master-1' of git://git.luns.net.uk/moodle

This commit is contained in:
Sam Hemelryk 2012-04-04 14:19:32 +12:00
commit f1b06f6d54
4 changed files with 70 additions and 5 deletions

View file

@ -24,6 +24,7 @@
require_once(dirname(__FILE__) . '/../config.php'); require_once(dirname(__FILE__) . '/../config.php');
require_once($CFG->dirroot . '/message/lib.php'); require_once($CFG->dirroot . '/message/lib.php');
require_once($CFG->libdir.'/adminlib.php'); require_once($CFG->libdir.'/adminlib.php');
require_once($CFG->libdir.'/messagelib.php');
// This is an admin page // This is an admin page
admin_externalpage_setup('managemessageoutputs'); admin_externalpage_setup('managemessageoutputs');
@ -34,6 +35,10 @@ require_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM));
// Get the submitted params // Get the submitted params
$disable = optional_param('disable', 0, PARAM_INT); $disable = optional_param('disable', 0, PARAM_INT);
$enable = optional_param('enable', 0, PARAM_INT); $enable = optional_param('enable', 0, PARAM_INT);
$uninstall = optional_param('uninstall', '', PARAM_INT);
$confirm = optional_param('confirm', 0, PARAM_BOOL);
$headingtitle = get_string('managemessageoutputs', 'message');
if (!empty($disable) && confirm_sesskey()) { if (!empty($disable) && confirm_sesskey()) {
if (!$processor = $DB->get_record('message_processors', array('id'=>$disable))) { if (!$processor = $DB->get_record('message_processors', array('id'=>$disable))) {
@ -42,14 +47,37 @@ if (!empty($disable) && confirm_sesskey()) {
$DB->set_field('message_processors', 'enabled', '0', array('id'=>$processor->id)); // Disable output $DB->set_field('message_processors', 'enabled', '0', array('id'=>$processor->id)); // Disable output
} }
if (!empty($enable) && confirm_sesskey() ) { if (!empty($enable) && confirm_sesskey()) {
if (!$processor = $DB->get_record('message_processors', array('id'=>$enable))) { if (!$processor = $DB->get_record('message_processors', array('id'=>$enable))) {
print_error('outputdoesnotexist', 'message'); print_error('outputdoesnotexist', 'message');
} }
$DB->set_field('message_processors', 'enabled', '1', array('id'=>$processor->id)); // Enable output $DB->set_field('message_processors', 'enabled', '1', array('id'=>$processor->id)); // Enable output
} }
if ($disable || $enable) { if (!empty($uninstall) && confirm_sesskey()) {
echo $OUTPUT->header();
echo $OUTPUT->heading($headingtitle);
if (!$processor = $DB->get_record('message_processors', array('id'=>$uninstall))) {
print_error('outputdoesnotexist', 'message');
}
$processorname = get_string('pluginname', 'message_'.$processor->name);
if (!$confirm) {
echo $OUTPUT->confirm(get_string('processordeleteconfirm', 'message', $processorname), 'message.php?uninstall='.$processor->id.'&confirm=1', 'message.php');
echo $OUTPUT->footer();
exit;
} else {
message_processor_uninstall($processor->name);
$a->processor = $processorname;
$a->directory = $CFG->dirroot.'/message/output/'.$processor->name;
notice(get_string('processordeletefiles', 'message', $a), 'message.php');
}
}
if ($disable || $enable || $uninstall) {
$url = new moodle_url('message.php'); $url = new moodle_url('message.php');
redirect($url); redirect($url);
} }
@ -65,6 +93,6 @@ $messageoutputs = $renderer->manage_messageoutputs($processors);
// Display the page // Display the page
echo $OUTPUT->header(); echo $OUTPUT->header();
echo $OUTPUT->heading(get_string('managemessageoutputs', 'message')); echo $OUTPUT->heading($headingtitle);
echo $messageoutputs; echo $messageoutputs;
echo $OUTPUT->footer(); echo $OUTPUT->footer();

View file

@ -108,6 +108,8 @@ $string['permitted'] = 'Permitted';
$string['page-message-x'] = 'Any message pages'; $string['page-message-x'] = 'Any message pages';
$string['private_config'] = 'Popup message window'; $string['private_config'] = 'Popup message window';
$string['processortag'] = 'Destination'; $string['processortag'] = 'Destination';
$string['processordeleteconfirm'] = 'You are about to completely delete message processor \'{$a}\'. This will completely delete everything in the database associated with this processor. Are you SURE you want to continue?';
$string['processordeletefiles'] = 'All data associated with the processor \'{$a->processor}\' has been deleted from the database. To complete the deletion (and prevent the processor re-installing itself), you should now delete this directory from your server: {$a->directory}';
$string['providers_config'] = 'Configure notification methods for incoming messages'; $string['providers_config'] = 'Configure notification methods for incoming messages';
$string['providerstag'] = 'Source'; $string['providerstag'] = 'Source';
$string['recent'] = 'Recent'; $string['recent'] = 'Recent';

View file

@ -477,6 +477,7 @@ function message_processor_uninstall($name) {
$transaction = $DB->start_delegated_transaction(); $transaction = $DB->start_delegated_transaction();
$DB->delete_records('message_processors', array('name' => $name)); $DB->delete_records('message_processors', array('name' => $name));
$DB->delete_records_select('config_plugins', "plugin = ?", array("message_{$name}"));
// delete permission preferences only, we do not care about loggedin/loggedoff // delete permission preferences only, we do not care about loggedin/loggedoff
// defaults, they will be removed on the next attempt to update the preferences // defaults, they will be removed on the next attempt to update the preferences
$DB->delete_records_select('config_plugins', "plugin = 'message' AND ".$DB->sql_like('name', '?', false), array("{$name}_provider_%")); $DB->delete_records_select('config_plugins', "plugin = 'message' AND ".$DB->sql_like('name', '?', false), array("{$name}_provider_%"));

View file

@ -1530,16 +1530,50 @@ class plugintype_enrol extends plugintype_base implements plugin_information {
*/ */
class plugintype_message extends plugintype_base implements plugin_information { class plugintype_message extends plugintype_base implements plugin_information {
private $processors;
protected function __construct() {
global $CFG;
require_once($CFG->dirroot . '/message/lib.php');
$this->processors = get_message_processors();
}
/** /**
* @see plugin_information::get_settings_url() * @see plugin_information::get_settings_url()
*/ */
public function get_settings_url() { public function get_settings_url() {
if (file_exists($this->full_path('settings.php')) or file_exists($this->full_path('settingstree.php'))) { if (isset($this->processors[$this->name])) {
return new moodle_url('/admin/settings.php', array('section' => 'messagesetting' . $this->name)); $processor = $this->processors[$this->name];
} else { } else {
return parent::get_settings_url(); return parent::get_settings_url();
} }
if ($processor->available && $processor->hassettings) {
return new moodle_url('settings.php', array('section' => 'messagesetting'.$processor->name));
}
}
/**
* @see plugintype_interface::is_enabled()
*/
public function is_enabled() {
if (isset($this->processors[$this->name])) {
return $this->processors[$this->name]->configured && $this->processors[$this->name]->enabled;
} else {
return parent::is_enabled();
}
}
/**
* @see plugintype_interface::get_uninstall_url()
*/
public function get_uninstall_url() {
if (isset($this->processors[$this->name])) {
return new moodle_url('message.php', array('uninstall' => $this->processors[$this->name]->id, 'sesskey' => sesskey()));
} else {
return parent::get_uninstall_url();
}
} }
} }