19declare(strict_types=1);
23use ILIAS\User\BuildExportFieldArray;
41 use BuildExportFieldArray;
65 $this->
ilias = $DIC[
'ilias'];
66 $this->db =
$DIC[
'ilDB'];
67 $this->
lng = $DIC[
'lng'];
68 $this->user_id =
$DIC[
'ilUser']->getId();
70 $local_dic = LocalDIC::dic();
71 $this->user_profile = $local_dic[Profile::class];
72 $this->user_settings = LocalDIC::dic()[Settings::class];
73 $this->user_settings_data_repo = $local_dic[UserSettingsDataRepository::class];
76 $this->attach_roles =
false;
83 $this->attach_roles = $value;
94 if (!is_array($this->users)) {
102 foreach ($this->users as $user) {
119 $this->
xmlSetDtdDef(
'<!DOCTYPE Users PUBLIC "-//ILIAS//DTD UserImport//EN" "' . ILIAS_HTTP_PATH .
'/components/ILIAS/Export/xml/ilias_user_5_1.dtd">');
133 if ($this->fields_to_export === []) {
136 $this->getExportFieldArray(
146 $settings = $this->user_settings_data_repo->getFor($row[
'usr_id']);
148 if ($row[
'language'] ===
null
149 || $row[
'language'] ===
'') {
150 $row[
'language'] = $this->
lng->getDefaultLanguage();
154 'Id' =>
'il_' .
IL_INST_ID .
'_usr_' . $row[
'usr_id'],
155 'Language' => $row[
'language'],
161 $this->
xmlElement(
'Login',
null, $row[
'login']);
163 if ($this->attach_roles ==
true) {
165 'SELECT object_data.title, object_data.description, rbac_fa.* ' .
166 'FROM object_data, rbac_ua, rbac_fa WHERE rbac_ua.usr_id = %s ' .
167 'AND rbac_ua.rol_id = rbac_fa.rol_id AND object_data.obj_id = rbac_fa.rol_id',
168 $this->db->quote($row[
'usr_id'],
'integer')
170 $rbacresult = $this->db->query($query);
173 if ($rbacrow[
'assign'] !=
'y') {
187 [
'Id' =>
'il_' .
IL_INST_ID .
'_role_' . $rbacrow[
'rol_id'],
'Type' => $type],
198 if ($this->
canExport(
'PersonalPicture',
'upload')) {
201 $value = array_shift($imageData);
202 $this->
__addElement(
'PersonalPicture', $value, $imageData,
'upload');
209 $this->
__addElement(
'SecondEmail', $row[
'second_email'],
null,
'second_email');
211 $this->
__addElement(
'Institution', $row[
'institution']);
214 $this->
__addElement(
'PostalCode', $row[
'zipcode'],
null,
'zipcode');
216 $this->
__addElement(
'PhoneOffice', $row[
'phone_office'],
null,
'phone_office');
217 $this->
__addElement(
'PhoneHome', $row[
'phone_home'],
null,
'phone_home');
218 $this->
__addElement(
'PhoneMobile', $row[
'phone_mobile'],
null,
'phone_mobile');
222 $this->
__addElementMulti(
'GeneralInterest', $row[
'interests_general'] ?? [],
null,
'interests_general');
223 $this->
__addElementMulti(
'OfferingHelp', $row[
'interests_help_offered'] ?? [],
null,
'interests_help_offered');
224 $this->
__addElementMulti(
'LookingForHelp', $row[
'interests_help_looking'] ?? [],
null,
'interests_help_looking');
227 $this->
__addElement(
'Comment', $row[
'referral_comment'],
null,
'referral_comment');
228 $this->
__addElement(
'Matriculation', $row[
'matriculation']);
229 $this->
__addElement(
'Active', $row[
'active'] ?
'true' :
'false');
230 $this->
__addElement(
'ClientIP', $row[
'client_ip'],
null,
'client_ip');
231 $this->
__addElement(
'TimeLimitOwner', (
string) $row[
'time_limit_owner'],
null,
'time_limit_owner');
232 $this->
__addElement(
'TimeLimitUnlimited', (
string) $row[
'time_limit_unlimited'],
null,
'time_limit_unlimited');
233 $this->
__addElement(
'TimeLimitFrom', (
string) $row[
'time_limit_from'],
null,
'time_limit_from');
234 $this->
__addElement(
'TimeLimitUntil', (
string) $row[
'time_limit_until'],
null,
'time_limit_until');
235 $this->
__addElement(
'ApproveDate', $row[
'approve_date'],
null,
'approve_date');
236 $this->
__addElement(
'AgreeDate', $row[
'agree_date'],
null,
'agree_date');
238 if ($row[
'auth_mode'] !==
null
239 && $row[
'auth_mode'] !==
'') {
240 $this->
__addElement(
'AuthMode',
null, [
'type' => $row[
'auth_mode']],
'auth_mode',
true);
243 if ($row[
'ext_account'] !==
null
244 && $row[
'ext_account'] !==
'') {
245 $this->
__addElement(
'ExternalAccount', $row[
'ext_account'],
null,
'ext_account',
true);
248 if (isset($settings[
'skin'])
249 && isset($settings[
'style'])
250 && $this->
canExport(
'Look',
'skin_style')) {
255 'Skin' => $settings[
'skin'],
'Style' => $settings[
'style']
263 $this->
__addElement(
'LastUpdate', $row[
'last_update'],
null,
'last_update');
264 $this->
__addElement(
'LastLogin', $row[
'last_login'],
null,
'last_login');
268 $this->
__addElement(
'AccountInfo', $row[
'ext_account'], [
'Type' =>
'external']);
271 'longitude' => $row[
'longitude'],
272 'latitude' => $row[
'latitude'],
273 'zoom' => $row[
'loc_zoom']]);
277 if ($this->attach_preferences || $this->
canExport(
'prefs',
'preferences')) {
289 $prefs[
'mail_incoming_type'] = $mailOptions->getIncomingType();
290 $prefs[
'mail_address_option'] = $mailOptions->getEmailAddressMode();
291 $prefs[
'mail_signature'] = $mailOptions->getSignature();
294 foreach ($prefs as $key => $value) {
295 if (self::isPrefExportable($key)) {
296 $this->
xmlElement(
'Pref', [
'key' => $key], $value);
306 ?array $attrs =
null,
307 ?
string $settingsname =
null,
308 bool $requiredTag =
false
310 foreach ($value as $item) {
311 $this->
__addElement($tagname, $item, $attrs, $settingsname, $requiredTag);
318 ?array $attrs =
null,
319 ?
string $settingsname =
null,
320 bool $requiredTag =
false
322 if ($this->canExport($tagname, $settingsname)
325 || is_array($attrs) && count($attrs) > 0)) {
326 $this->xmlElement($tagname, $attrs, (
string) $value);
332 ?
string $settingsname =
null
334 return $this->fields_to_export === []
335 || in_array(strtolower($tagname), $this->fields_to_export) !== false
336 || in_array($settingsname, $this->fields_to_export) !== false;
341 $this->fields_to_export = $fields_to_export;
349 $this->attach_preferences = $attach_preferences;
359 $avatar_resolver->setForcePicture(
true);
360 if (!$avatar_resolver->hasProfilePicture()) {
364 [$image_data, $image_type] = $avatar_resolver->getUserPictureForVCard();
366 if ($image_data ===
null || $image_type ===
null) {
371 'value' => base64_encode($image_data),
372 'encoding' =>
'Base64',
373 'imagetype' => $image_type
382 foreach ($this->user_profile->getVisibleFields(Context::Export) as $field) {
383 if (!$field->isCustom()) {
389 'Id' => $field->getIdentifier(),
390 'Name' => $field->getLabel($this->lng)
392 (
string) ($this->user_data[
'f_' . $field->getIdentifier()] ??
'')
407 'public_second_email',
410 'public_institution',
411 'public_matriculation',
414 'public_phone_mobile',
415 'public_phone_office',
422 'hide_own_online_status',
423 'bs_allow_to_contact_me',
424 'chat_osc_accept_msg',
425 'chat_broadcast_typing',
428 'mail_incoming_type',
431 'public_interests_general',
432 'public_interests_help_offered',
433 'public_interests_help_looking'
442 return in_array($key, self::getExportablePreferences());
Class ilUserAvatarResolver.
XML writer class Class to simplify manual writing of xml documents.
setAttachPreferences(bool $attach_preferences)
if set to true, all preferences of a user will be set
getPictureValue(int $usr_id)
return array with base-encoded picture data as key value, encoding type as encoding,...
static isPrefExportable(string $key)
returns wether a key from db is exportable or not
array $fields_to_export
fields to be exported
canExport(string $tagname, ?string $settingsname=null)
readonly ilDBInterface $db
readonly SettingsImplementation $user_settings
addUDFsToXML()
add user defined field data to xml (using usr dtd)
__handlePreferences(array $prefs, array $row)
static getExportablePreferences()
return exportable preference keys as found in db
readonly Profile $user_profile
readonly UserSettingsDataRepository $user_settings_data_repo
setFieldsToExport(array $fields_to_export)
__addElementMulti(string $tagname, array $value, ?array $attrs=null, ?string $settingsname=null, bool $requiredTag=false)
setAttachRoles(bool $value)
__addElement(string $tagname, ?string $value, ?array $attrs=null, ?string $settingsname=null, bool $requiredTag=false)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
xmlSetGenCmt(string $genCmt)
Sets generated comment.
xmlElement(string $tag, $attrs=null, $data=null, $encode=true, $escape=true)
Writes a basic element (no children, just textual content)
__construct(string $version="1.0", string $outEnc="utf-8", string $inEnc="utf-8")
xmlHeader()
Writes xml header.
xmlEndTag(string $tag)
Writes an endtag.
xmlSetDtdDef(string $dtdDef)
Sets dtd definition.
xmlDumpMem(bool $format=true)
Returns xml document from memory.
xmlStartTag(string $tag, ?array $attrs=null, bool $empty=false, bool $encode=true, bool $escape=true)
Writes a starttag.
return['delivery_method'=> 'php',]
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
Interface Observer \BackgroundTasks Contains several chained tasks and infos about them.
Class ilObjForumAdministration.
if(!file_exists('../ilias.ini.php'))