3 * script for downloading of user lists
6 require_once('../../config.php');
7 require_once($CFG->libdir
.'/adminlib.php');
9 $format = optional_param('format', '', PARAM_ALPHA
);
11 admin_externalpage_setup('userbulk');
12 require_capability('moodle/user:update', get_context_instance(CONTEXT_SYSTEM
));
14 $return = $CFG->wwwroot
.'/'.$CFG->admin
.'/user/user_bulk.php';
16 if (empty($SESSION->bulk_users
)) {
21 $fields = array('id' => 'id',
22 'username' => 'username',
24 'firstname' => 'firstname',
25 'lastname' => 'lastname',
26 'idnumber' => 'idnumber',
27 'institution' => 'institution',
28 'department' => 'department',
38 'country' => 'country');
40 if ($extrafields = get_records_select('user_info_field')) {
41 foreach ($extrafields as $n=>$v){
42 $fields['profile_field_'.$v->shortname
] = 'profile_field_'.$v->name
;
47 case 'csv' : user_download_csv($fields);
48 case 'ods' : user_download_ods($fields);
49 case 'xls' : user_download_xls($fields);
55 admin_externalpage_print_header();
56 print_heading(get_string('download', 'admin'));
60 echo '<li><a href="user_bulk_download.php?format=csv">'.get_string('downloadtext').'</a></li>';
61 echo '<li><a href="user_bulk_download.php?format=ods">'.get_string('downloadods').'</a></li>';
62 echo '<li><a href="user_bulk_download.php?format=xls">'.get_string('downloadexcel').'</a></li>';
66 print_continue($return);
70 function user_download_ods($fields) {
71 global $CFG, $SESSION;
73 require_once("$CFG->libdir/odslib.class.php");
74 require_once($CFG->dirroot
.'/user/profile/lib.php');
76 $filename = clean_filename(get_string('users').'.ods');
78 $workbook = new MoodleODSWorkbook('-');
79 $workbook->send($filename);
83 $worksheet[0] =& $workbook->add_worksheet('');
85 foreach ($fields as $fieldname) {
86 $worksheet[0]->write(0, $col, $fieldname);
91 foreach ($SESSION->bulk_users
as $userid) {
92 if (!$user = get_record('user', 'id', $userid)) {
96 profile_load_data($user);
97 foreach ($fields as $field=>$unused) {
98 $worksheet[0]->write($row, $col, $user->$field);
108 function user_download_xls($fields) {
109 global $CFG, $SESSION;
111 require_once("$CFG->libdir/excellib.class.php");
112 require_once($CFG->dirroot
.'/user/profile/lib.php');
114 $filename = clean_filename(get_string('users').'.xls');
116 $workbook = new MoodleExcelWorkbook('-');
117 $workbook->send($filename);
119 $worksheet = array();
121 $worksheet[0] =& $workbook->add_worksheet('');
123 foreach ($fields as $fieldname) {
124 $worksheet[0]->write(0, $col, $fieldname);
129 foreach ($SESSION->bulk_users
as $userid) {
130 if (!$user = get_record('user', 'id', $userid)) {
134 profile_load_data($user);
135 foreach ($fields as $field=>$unused) {
136 $worksheet[0]->write($row, $col, $user->$field);
146 function user_download_csv($fields) {
147 global $CFG, $SESSION;
149 require_once($CFG->dirroot
.'/user/profile/lib.php');
151 $filename = clean_filename(get_string('users').'.csv');
153 header("Content-Type: application/download\n");
154 header("Content-Disposition: attachment; filename=$filename");
155 header("Expires: 0");
156 header("Cache-Control: must-revalidate,post-check=0,pre-check=0");
157 header("Pragma: public");
159 $delimiter = get_string('listsep');
160 $encdelim = '&#'.ord($delimiter);
163 foreach ($fields as $fieldname) {
164 $row[] = str_replace($delimiter, $encdelim, $fieldname);
166 echo implode($delimiter, $row)."\n";
168 foreach ($SESSION->bulk_users
as $userid) {
170 if (!$user = get_record('user', 'id', $userid)) {
173 profile_load_data($user);
174 foreach ($fields as $field=>$unused) {
175 $row[] = str_replace($delimiter, $encdelim, $user->$field);
177 echo implode($delimiter, $row)."\n";