MDL-10464 user list download in bulk ops; merged from MOODLE_19_STABLE
authorskodak <skodak>
Thu, 20 Dec 2007 10:55:05 +0000 (10:55 +0000)
committerskodak <skodak>
Thu, 20 Dec 2007 10:55:05 +0000 (10:55 +0000)
admin/user/user_bulk.php
admin/user/user_bulk_download.php [new file with mode: 0755]
admin/user/user_bulk_forms.php

index af89c050a0203718c7aedee165b912a12b504705..14e0301529350cfc80aba5ef5b5747c702cb8a57 100755 (executable)
@@ -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 (executable)
index 0000000..2cbdf3e
--- /dev/null
@@ -0,0 +1,160 @@
+<?php //$Id$
+/**
+* script for downloading of user lists
+*/
+
+require_once('../../config.php');
+require_once($CFG->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 '<ul>';
+echo '<li><a href="user_bulk_download.php?format=csv">'.get_string('downloadtext').'</a></li>';
+echo '<li><a href="user_bulk_download.php?format=ods">'.get_string('downloadods').'</a></li>';
+echo '<li><a href="user_bulk_download.php?format=xls">'.get_string('downloadexcel').'</a></li>';
+echo '</ul>';
+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;
+}
+
+?>
index e58611f7c2c026153dbe013c81b766c7b4367b7e..fad10cd344908a1359035351b6b6f8fe792e09e8 100644 (file)
@@ -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(' ', '<br />'), false);
-        $grp->setHelpButton(array('selectedlist','','bulkusers'));
+        $grp->setHelpButton(array('selectedlist', get_string('selectedlist', 'bulkusers'), 'bulkusers'));
 
         $renderer =& $mform->defaultRenderer();
         $template = '<label class="qflabel" style="vertical-align:top">{label}</label> {element}';