Merge branch 'MDL-31829_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE
[moodle.git] / admin / user / user_bulk_download.php
blob6b5881c06e11aa29d6153e6bbf72f29c806377f9
1 <?php
2 /**
3 * script for downloading of user lists
4 */
6 require_once('../../config.php');
7 require_once($CFG->libdir.'/adminlib.php');
9 $format = optional_param('format', '', PARAM_ALPHA);
11 require_login();
12 admin_externalpage_setup('userbulk');
13 require_capability('moodle/user:update', get_context_instance(CONTEXT_SYSTEM));
15 $return = $CFG->wwwroot.'/'.$CFG->admin.'/user/user_bulk.php';
17 if (empty($SESSION->bulk_users)) {
18 redirect($return);
21 if ($format) {
22 $fields = array('id' => 'id',
23 'username' => 'username',
24 'email' => 'email',
25 'firstname' => 'firstname',
26 'lastname' => 'lastname',
27 'idnumber' => 'idnumber',
28 'institution' => 'institution',
29 'department' => 'department',
30 'phone1' => 'phone1',
31 'phone2' => 'phone2',
32 'city' => 'city',
33 'url' => 'url',
34 'icq' => 'icq',
35 'skype' => 'skype',
36 'aim' => 'aim',
37 'yahoo' => 'yahoo',
38 'msn' => 'msn',
39 'country' => 'country');
41 if ($extrafields = $DB->get_records('user_info_field')) {
42 foreach ($extrafields as $n=>$v){
43 $fields['profile_field_'.$v->shortname] = 'profile_field_'.$v->shortname;
47 switch ($format) {
48 case 'csv' : user_download_csv($fields);
49 case 'ods' : user_download_ods($fields);
50 case 'xls' : user_download_xls($fields);
53 die;
56 echo $OUTPUT->header();
57 echo $OUTPUT->heading(get_string('download', 'admin'));
59 echo $OUTPUT->box_start();
60 echo '<ul>';
61 echo '<li><a href="user_bulk_download.php?format=csv">'.get_string('downloadtext').'</a></li>';
62 echo '<li><a href="user_bulk_download.php?format=ods">'.get_string('downloadods').'</a></li>';
63 echo '<li><a href="user_bulk_download.php?format=xls">'.get_string('downloadexcel').'</a></li>';
64 echo '</ul>';
65 echo $OUTPUT->box_end();
67 echo $OUTPUT->continue_button($return);
69 echo $OUTPUT->footer();
71 function user_download_ods($fields) {
72 global $CFG, $SESSION, $DB;
74 require_once("$CFG->libdir/odslib.class.php");
75 require_once($CFG->dirroot.'/user/profile/lib.php');
77 $filename = clean_filename(get_string('users').'.ods');
79 $workbook = new MoodleODSWorkbook('-');
80 $workbook->send($filename);
82 $worksheet = array();
84 $worksheet[0] =& $workbook->add_worksheet('');
85 $col = 0;
86 foreach ($fields as $fieldname) {
87 $worksheet[0]->write(0, $col, $fieldname);
88 $col++;
91 $row = 1;
92 foreach ($SESSION->bulk_users as $userid) {
93 if (!$user = $DB->get_record('user', array('id'=>$userid))) {
94 continue;
96 $col = 0;
97 profile_load_data($user);
98 foreach ($fields as $field=>$unused) {
99 $worksheet[0]->write($row, $col, $user->$field);
100 $col++;
102 $row++;
105 $workbook->close();
106 die;
109 function user_download_xls($fields) {
110 global $CFG, $SESSION, $DB;
112 require_once("$CFG->libdir/excellib.class.php");
113 require_once($CFG->dirroot.'/user/profile/lib.php');
115 $filename = clean_filename(get_string('users').'.xls');
117 $workbook = new MoodleExcelWorkbook('-');
118 $workbook->send($filename);
120 $worksheet = array();
122 $worksheet[0] =& $workbook->add_worksheet('');
123 $col = 0;
124 foreach ($fields as $fieldname) {
125 $worksheet[0]->write(0, $col, $fieldname);
126 $col++;
129 $row = 1;
130 foreach ($SESSION->bulk_users as $userid) {
131 if (!$user = $DB->get_record('user', array('id'=>$userid))) {
132 continue;
134 $col = 0;
135 profile_load_data($user);
136 foreach ($fields as $field=>$unused) {
137 $worksheet[0]->write($row, $col, $user->$field);
138 $col++;
140 $row++;
143 $workbook->close();
144 die;
147 function user_download_csv($fields) {
148 global $CFG, $SESSION, $DB;
150 require_once($CFG->dirroot.'/user/profile/lib.php');
152 $filename = clean_filename(get_string('users').'.csv');
154 header("Content-Type: application/download\n");
155 header("Content-Disposition: attachment; filename=$filename");
156 header("Expires: 0");
157 header("Cache-Control: must-revalidate,post-check=0,pre-check=0");
158 header("Pragma: public");
160 $delimiter = get_string('listsep', 'langconfig');
161 $encdelim = '&#'.ord($delimiter);
163 $row = array();
164 foreach ($fields as $fieldname) {
165 $row[] = str_replace($delimiter, $encdelim, $fieldname);
167 echo implode($delimiter, $row)."\n";
169 foreach ($SESSION->bulk_users as $userid) {
170 $row = array();
171 if (!$user = $DB->get_record('user', array('id'=>$userid))) {
172 continue;
174 profile_load_data($user);
175 foreach ($fields as $field=>$unused) {
176 $row[] = str_replace($delimiter, $encdelim, $user->$field);
178 echo implode($delimiter, $row)."\n";
180 die;