From 444598e94aed482f90646010d6b406dbfb879536 Mon Sep 17 00:00:00 2001 From: skodak Date: Thu, 20 Dec 2007 10:55:05 +0000 Subject: [PATCH] MDL-10464 user list download in bulk ops; merged from MOODLE_19_STABLE --- admin/user/user_bulk.php | 1 + admin/user/user_bulk_download.php | 160 ++++++++++++++++++++++++++++++ admin/user/user_bulk_forms.php | 7 +- 3 files changed, 166 insertions(+), 2 deletions(-) create mode 100755 admin/user/user_bulk_download.php diff --git a/admin/user/user_bulk.php b/admin/user/user_bulk.php index af89c050a0..14e0301529 100755 --- a/admin/user/user_bulk.php +++ b/admin/user/user_bulk.php @@ -23,6 +23,7 @@ if ($data = $action_form->get_data(false)) { case 2: redirect($CFG->wwwroot.'/'.$CFG->admin.'/user/user_bulk_message.php'); case 3: redirect($CFG->wwwroot.'/'.$CFG->admin.'/user/user_bulk_delete.php'); case 4: redirect($CFG->wwwroot.'/'.$CFG->admin.'/user/user_bulk_display.php'); + case 5: redirect($CFG->wwwroot.'/'.$CFG->admin.'/user/user_bulk_download.php'); } } diff --git a/admin/user/user_bulk_download.php b/admin/user/user_bulk_download.php new file mode 100755 index 0000000000..2cbdf3e118 --- /dev/null +++ b/admin/user/user_bulk_download.php @@ -0,0 +1,160 @@ +libdir.'/adminlib.php'); + +$format = optional_param('format', '', PARAM_ALPHA); + +admin_externalpage_setup('userbulk'); +require_capability('moodle/user:update', get_context_instance(CONTEXT_SYSTEM)); + +$return = $CFG->wwwroot.'/'.$CFG->admin.'/user/user_bulk.php'; + +if (empty($SESSION->bulk_users)) { + redirect($return); +} + + +if ($format) { + $fields = array('id' => 'id', + 'username' => get_string('username'), + 'email' => get_string('email'), + 'firstname' => get_string('firstname'), + 'lastname' => get_string('lastname'), + 'idnumber' => get_string('idnumber'), + 'city' => get_string('city'), + 'country' => get_string('country')); + + switch ($format) { + case 'csv' : user_download_csv($fields); + case 'ods' : user_download_ods($fields); + case 'xls' : user_download_xls($fields); + + } + die; +} + +admin_externalpage_print_header(); +print_heading(get_string('download', 'admin')); + +print_box_start(); +echo ''; +print_box_end(); + +print_continue($return); + +print_footer(); + +function user_download_ods($fields) { + global $CFG, $SESSION; + + require_once("$CFG->libdir/odslib.class.php"); + + $filename = clean_filename(get_string('users').'.ods'); + + $workbook = new MoodleODSWorkbook('-'); + $workbook->send($filename); + + $worksheet = array(); + + $worksheet[0] =& $workbook->add_worksheet(''); + $col = 0; + foreach ($fields as $fieldname) { + $worksheet[0]->write(0, $col, $fieldname); + $col++; + } + + $row = 1; + foreach ($SESSION->bulk_users as $userid) { + if (!$user = get_record('user', 'id', $userid)) { + continue; + } + $col = 0; + foreach ($fields as $field=>$unused) { + $worksheet[0]->write($row, $col, $user->$field); + $col++; + } + $row++; + } + + $workbook->close(); + die; +} + +function user_download_xls($fields) { + global $CFG, $SESSION; + + require_once("$CFG->libdir/excellib.class.php"); + + $filename = clean_filename(get_string('users').'.xls'); + + $workbook = new MoodleExcelWorkbook('-'); + $workbook->send($filename); + + $worksheet = array(); + + $worksheet[0] =& $workbook->add_worksheet(''); + $col = 0; + foreach ($fields as $fieldname) { + $worksheet[0]->write(0, $col, $fieldname); + $col++; + } + + $row = 1; + foreach ($SESSION->bulk_users as $userid) { + if (!$user = get_record('user', 'id', $userid)) { + continue; + } + $col = 0; + foreach ($fields as $field=>$unused) { + $worksheet[0]->write($row, $col, $user->$field); + $col++; + } + $row++; + } + + $workbook->close(); + die; +} + +function user_download_csv($fields) { + global $CFG, $SESSION; + + $filename = clean_filename(get_string('users').'.csv'); + + header("Content-Type: application/download\n"); + header("Content-Disposition: attachment; filename=$filename"); + header("Expires: 0"); + header("Cache-Control: must-revalidate,post-check=0,pre-check=0"); + header("Pragma: public"); + + $delimiter = get_string('listsep'); + $encdelim = '&#'.ord($delimiter); + + $row = array(); + foreach ($fields as $fieldname) { + $row[] = str_replace($delimiter, $encdelim, $fieldname); + } + echo implode($delimiter, $row)."\n"; + + foreach ($SESSION->bulk_users as $userid) { + $row = array(); + if (!$user = get_record('user', 'id', $userid)) { + continue; + } + foreach ($fields as $field=>$unused) { + $row[] = str_replace($delimiter, $encdelim, $user->$field); + } + echo implode($delimiter, $row)."\n"; + } + die; +} + +?> diff --git a/admin/user/user_bulk_forms.php b/admin/user/user_bulk_forms.php index e58611f7c2..fad10cd344 100644 --- a/admin/user/user_bulk_forms.php +++ b/admin/user/user_bulk_forms.php @@ -21,6 +21,9 @@ class user_bulk_action_form extends moodleform { $actions[3] = get_string('delete'); } $actions[4] = get_string('displayonpage'); + if (has_capability('moodle/user:update', $syscontext)) { + $actions[5] = get_string('download', 'admin'); + } $objs = array(); $objs[] =& $mform->createElement('select', 'action', null, $actions); @@ -86,7 +89,7 @@ class user_bulk_form extends moodleform { $grp =& $mform->addElement('group', 'usersgrp', get_string('users'), $objs, ' ', false); - $grp->setHelpButton(array('lists','','bulkusers')); + $grp->setHelpButton(array('lists', get_string('users'), 'bulkusers')); $mform->addElement('static', 'comment'); @@ -96,7 +99,7 @@ class user_bulk_form extends moodleform { $objs[] =& $mform->createElement('submit', 'addall', get_string('addall', 'bulkusers')); $objs[] =& $mform->createElement('submit', 'removeall', get_string('removeall', 'bulkusers')); $grp =& $mform->addElement('group', 'buttonsgrp', get_string('selectedlist', 'bulkusers'), $objs, array(' ', '
'), false); - $grp->setHelpButton(array('selectedlist','','bulkusers')); + $grp->setHelpButton(array('selectedlist', get_string('selectedlist', 'bulkusers'), 'bulkusers')); $renderer =& $mform->defaultRenderer(); $template = ' {element}'; -- 2.39.5