"MDL-14668, fix course full name in activity reports, see tracker"
[moodle-linuxchix.git] / admin / user / user_bulk_download.php
blob5eac189c2f0c0739a7beae0541692b7f4ab7648c
1 <?php //$Id$
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 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)) {
17 redirect($return);
20 if ($format) {
21 $fields = array('id' => 'id',
22 'username' => 'username',
23 'email' => 'email',
24 'firstname' => 'firstname',
25 'lastname' => 'lastname',
26 'idnumber' => 'idnumber',
27 'institution' => 'institution',
28 'department' => 'department',
29 'phone1' => 'phone1',
30 'phone2' => 'phone2',
31 'city' => 'city',
32 'url' => 'url',
33 'icq' => 'icq',
34 'skype' => 'skype',
35 'aim' => 'aim',
36 'yahoo' => 'yahoo',
37 'msn' => 'msn',
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;
46 switch ($format) {
47 case 'csv' : user_download_csv($fields);
48 case 'ods' : user_download_ods($fields);
49 case 'xls' : user_download_xls($fields);
52 die;
55 admin_externalpage_print_header();
56 print_heading(get_string('download', 'admin'));
58 print_box_start();
59 echo '<ul>';
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>';
63 echo '</ul>';
64 print_box_end();
66 print_continue($return);
68 print_footer();
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);
81 $worksheet = array();
83 $worksheet[0] =& $workbook->add_worksheet('');
84 $col = 0;
85 foreach ($fields as $fieldname) {
86 $worksheet[0]->write(0, $col, $fieldname);
87 $col++;
90 $row = 1;
91 foreach ($SESSION->bulk_users as $userid) {
92 if (!$user = get_record('user', 'id', $userid)) {
93 continue;
95 $col = 0;
96 profile_load_data($user);
97 foreach ($fields as $field=>$unused) {
98 $worksheet[0]->write($row, $col, $user->$field);
99 $col++;
101 $row++;
104 $workbook->close();
105 die;
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('');
122 $col = 0;
123 foreach ($fields as $fieldname) {
124 $worksheet[0]->write(0, $col, $fieldname);
125 $col++;
128 $row = 1;
129 foreach ($SESSION->bulk_users as $userid) {
130 if (!$user = get_record('user', 'id', $userid)) {
131 continue;
133 $col = 0;
134 profile_load_data($user);
135 foreach ($fields as $field=>$unused) {
136 $worksheet[0]->write($row, $col, $user->$field);
137 $col++;
139 $row++;
142 $workbook->close();
143 die;
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);
162 $row = array();
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) {
169 $row = array();
170 if (!$user = get_record('user', 'id', $userid)) {
171 continue;
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";
179 die;