MDL-72019 user: Allows data to be formatted when exporting.
This commit is contained in:
@@ -22,6 +22,8 @@
|
||||
* @package core
|
||||
*/
|
||||
|
||||
use core_user\fields;
|
||||
|
||||
define('NO_OUTPUT_BUFFERING', true);
|
||||
require_once('../../config.php');
|
||||
require_once($CFG->libdir.'/adminlib.php');
|
||||
@@ -37,7 +39,7 @@ if (empty($SESSION->bulk_users)) {
|
||||
}
|
||||
|
||||
if ($dataformat) {
|
||||
$fields = array('id' => 'id',
|
||||
$originfields = array('id' => 'id',
|
||||
'username' => 'username',
|
||||
'email' => 'email',
|
||||
'firstname' => 'firstname',
|
||||
@@ -51,8 +53,10 @@ if ($dataformat) {
|
||||
'country' => 'country');
|
||||
|
||||
$extrafields = profile_get_user_fields_with_data(0);
|
||||
$profilefields = [];
|
||||
foreach ($extrafields as $formfield) {
|
||||
$fields['profile_field_'.$formfield->get_shortname()] = 'profile_field_'.$formfield->get_shortname();
|
||||
$profilefields[fields::PROFILE_FIELD_PREFIX . $formfield->get_shortname()] = fields::PROFILE_FIELD_PREFIX .
|
||||
$formfield->get_shortname();
|
||||
}
|
||||
|
||||
$filename = clean_filename(get_string('users'));
|
||||
@@ -60,17 +64,17 @@ if ($dataformat) {
|
||||
$downloadusers = new ArrayObject($SESSION->bulk_users);
|
||||
$iterator = $downloadusers->getIterator();
|
||||
|
||||
\core\dataformat::download_data($filename, $dataformat, $fields, $iterator, function($userid, $supportshtml)
|
||||
use ($extrafields, $fields) {
|
||||
\core\dataformat::download_data($filename, $dataformat, array_merge($originfields, $profilefields), $iterator,
|
||||
function($userid, $supportshtml) use ($originfields) {
|
||||
|
||||
global $DB;
|
||||
|
||||
if (!$user = $DB->get_record('user', array('id' => $userid))) {
|
||||
return null;
|
||||
}
|
||||
profile_load_data($user);
|
||||
|
||||
$userprofiledata = array();
|
||||
foreach ($fields as $field => $unused) {
|
||||
foreach ($originfields as $field) {
|
||||
// Custom user profile textarea fields come in an array
|
||||
// The first element is the text and the second is the format.
|
||||
// We only take the text.
|
||||
@@ -82,6 +86,19 @@ if ($dataformat) {
|
||||
$userprofiledata[$field] = $user->$field;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Formatting extra field if transform is true.
|
||||
$extrafields = profile_get_user_fields_with_data($userid);
|
||||
foreach ($extrafields as $field) {
|
||||
$fieldkey = fields::PROFILE_FIELD_PREFIX . $field->get_shortname();
|
||||
if ($field->is_transform_supported()) {
|
||||
$userprofiledata[$fieldkey] = $field->display_data();
|
||||
} else {
|
||||
$userprofiledata[$fieldkey] = $field->data;
|
||||
}
|
||||
}
|
||||
|
||||
return $userprofiledata;
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user