exit();
} else {
- $messages = array(); // Collect uninstall process messages here.
- $pluginman->uninstall_plugin($pluginfo->component, $messages);
+ $progress = new progress_trace_buffer(new text_progress_trace(), false);
+ $pluginman->uninstall_plugin($pluginfo->component, $progress);
+ $progress->finished();
if ($pluginman->is_plugin_folder_removable($pluginfo->component)) {
$continueurl = new moodle_url($PAGE->url, array('delete' => $pluginfo->component, 'sesskey' => sesskey(), 'confirm' => 1));
- echo $output->plugin_uninstall_results_removable_page($pluginman, $pluginfo, $messages, $continueurl);
+ echo $output->plugin_uninstall_results_removable_page($pluginman, $pluginfo, $progress, $continueurl);
exit();
} else {
- echo $output->plugin_uninstall_results_page($pluginman, $pluginfo, $messages);
+ echo $output->plugin_uninstall_results_page($pluginman, $pluginfo, $progress);
exit();
}
}
*
* @param plugin_manager $pluginman
* @param plugin_info $pluginfo
- * @param array $messages list of strings, the log of the process
+ * @param progress_trace_buffer $progress
* @param moodle_url $continueurl URL to continue to remove the plugin folder
* @return string
*/
public function plugin_uninstall_results_removable_page(plugin_manager $pluginman, plugininfo_base $pluginfo,
- array $messages = array(), moodle_url $continueurl) {
+ progress_trace_buffer $progress, moodle_url $continueurl) {
$output = '';
$pluginname = $pluginman->plugin_name($pluginfo->component);
$output .= $this->output->header();
$output .= $this->output->heading(get_string('uninstalling', 'core_plugin', array('name' => $pluginname)));
- foreach ($messages as $message) {
- $output .= $this->output->box($message, 'generalbox uninstallresultmessage');
- }
+ $output .= $this->output->box($progress->get_buffer(), 'generalbox uninstallresultmessage');
$confirm = $this->output->container(get_string('uninstalldeleteconfirm', 'core_plugin',
array('name' => $pluginname, 'rootdir' => $pluginfo->rootdir)), 'uninstalldeleteconfirm');
*
* @param plugin_manager $pluginman
* @param plugin_info $pluginfo
- * @param array $messages list of strings, the log of the process
+ * @param progress_trace_buffer $progress
* @return string
*/
- public function plugin_uninstall_results_page(plugin_manager $pluginman, plugininfo_base $pluginfo, array $messages = array()) {
+ public function plugin_uninstall_results_page(plugin_manager $pluginman, plugininfo_base $pluginfo, progress_trace_buffer $progress) {
$output = '';
$pluginname = $pluginman->plugin_name($pluginfo->component);
$output .= $this->output->header();
$output .= $this->output->heading(get_string('uninstalling', 'core_plugin', array('name' => $pluginname)));
- foreach ($messages as $message) {
- $output .= $this->output->box($message, 'generalbox uninstallresultmessage');
- }
+ $output .= $this->output->box($progress->get_buffer(), 'generalbox uninstallresultmessage');
$output .= $this->output->box(get_string('uninstalldelete', 'core_plugin',
array('name' => $pluginname, 'rootdir' => $pluginfo->rootdir)), 'generalbox uninstalldelete');
* mimic this future behaviour by wrapping that function call.
*
* @param string $component
- * @param array $messages log of the process is returned via this array
+ * @param progress_trace $progress traces the process
* @return bool true on success, false on errors/problems
*/
- public function uninstall_plugin($component, array &$messages) {
+ public function uninstall_plugin($component, progress_trace $progress) {
$pluginfo = $this->get_plugin_info($component);
return false;
}
- // Give the pluginfo class a perform some steps.
- $result = $pluginfo->uninstall($messages);
+ // Give the pluginfo class a chance to execute some steps.
+ $result = $pluginfo->uninstall($progress);
if (!$result) {
return false;
}
// Call the legacy core function to uninstall the plugin.
ob_start();
uninstall_plugin($pluginfo->type, $pluginfo->name);
- $messages[] = ob_get_clean();
+ $progress->output(ob_get_clean());
return true;
}
* it is basically usable only for those plugin types that use the default
* uninstall tool provided by {@link self::get_default_uninstall_url()}.
*
- * @param array $messages list of uninstall log messages
+ * @param progress_trace $progress traces the process
* @return bool true on success, false on failure
*/
- public function uninstall(array &$messages) {
+ public function uninstall(progress_trace $progress) {
return true;
}