From 5c967d3d04622c1420313f1a514da5cda99827f3 Mon Sep 17 00:00:00 2001 From: Christopher Smith Date: Thu, 1 Aug 2013 18:04:01 +0200 Subject: add csv export functionality to the user manager --- lib/plugins/usermanager/admin.php | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) (limited to 'lib/plugins/usermanager/admin.php') diff --git a/lib/plugins/usermanager/admin.php b/lib/plugins/usermanager/admin.php index ca4c6a650..72ac47e15 100644 --- a/lib/plugins/usermanager/admin.php +++ b/lib/plugins/usermanager/admin.php @@ -101,6 +101,7 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin { case "search" : $this->_setFilter($param); $this->_start = 0; break; + case "export" : $this->_export(); break; } $this->_user_total = $this->_auth->canDo('getUserCount') ? $this->_auth->getUserCount($this->_filter) : -1; @@ -133,6 +134,7 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin { $delete_disable = $this->_auth->canDo('delUser') ? '' : 'disabled="disabled"'; $editable = $this->_auth->canDo('UserMod'); + $export_label = empty($this->_filter) ? $this->lang['export_all'] : $this->lang[export_filtered]; print $this->locale_xhtml('intro'); print $this->locale_xhtml('list'); @@ -196,7 +198,10 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin { ptln(" lang['next']."\" />"); ptln(" lang['last']."\" />"); ptln(" "); - ptln(" lang['clear']."\" />"); + if (!empty($this->_filter)) { + ptln(" lang['clear']."\" />"); + } + ptln(" "); ptln(" "); ptln(" "); @@ -629,4 +634,36 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin { return $buttons; } + + /* + * export a list of users in csv format using the current filter criteria + */ + function _export() { + // list of users for export - based on current filter criteria + $user_list = $this->_auth->retrieveUsers(0, 0, $this->_filter); + $column_headings = array( + $this->lang["user_id"], + $this->lang["user_name"], + $this->lang["user_mail"], + $this->lang["user_groups"] + ); + + // ============================================================================================== + // GENERATE OUTPUT + // normal headers for downloading... + header('Content-type: text/csv;charset=utf-8'); + header('Content-Disposition: attachment; filename="wikiusers.csv"'); +# // for debugging assistance, send as text plain to the browser +# header('Content-type: text/plain;charset=utf-8'); + + // output the csv + $fd = fopen('php://output','w'); + fputcsv($fd, $column_headings); + foreach ($user_list as $user => $info) { + $line = array($user, $info['name'], $info['mail'], join(',',$info['grps'])); + fputcsv($fd, $line); + } + fclose($fd); + die; + } } -- cgit v1.2.3