ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
class.ilPersonalProfileGUI.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
13 {
14  public $tpl;
15  public $lng;
16  public $ilias;
17  public $ctrl;
18 
19  public $user_defined_fields = null;
20 
24  protected $tabs;
25 
26 
30  public function __construct()
31  {
32  global $ilias, $tpl, $lng, $ilCtrl, $ilTabs;
33 
34  include_once './Services/User/classes/class.ilUserDefinedFields.php';
35  $this->user_defined_fields =&ilUserDefinedFields::_getInstance();
36 
37  $this->tpl = $tpl;
38  $this->lng = $lng;
39  $this->ilias = $ilias;
40  $this->ctrl = $ilCtrl;
41  $this->tabs = $ilTabs;
42  $this->settings = $ilias->getAllSettings();
43  $lng->loadLanguageModule("jsmath");
44  $lng->loadLanguageModule("pd");
45  $this->upload_error = "";
46  $this->password_error = "";
47  $lng->loadLanguageModule("user");
48  // $ilCtrl->saveParameter($this, "user_page");
49  }
50 
54  public function executeCommand()
55  {
56  global $ilUser, $ilCtrl, $tpl, $ilTabs, $lng;
57 
58  $next_class = $this->ctrl->getNextClass();
59 
60  switch ($next_class) {
61  case "ilpublicuserprofilegui":
62  include_once("./Services/User/classes/class.ilPublicUserProfileGUI.php");
63  $_GET["user_id"] = $ilUser->getId();
64  $pub_profile_gui = new ilPublicUserProfileGUI($_GET["user_id"]);
65  $pub_profile_gui->setBackUrl($ilCtrl->getLinkTarget($this, "showPersonalData"));
66  $ilCtrl->forwardCommand($pub_profile_gui);
67  $tpl->show();
68  break;
69 
70  default:
71  $this->setTabs();
72  $cmd = $this->ctrl->getCmd("showPersonalData");
73  $this->$cmd();
74  break;
75  }
76  return true;
77  }
78 
79 
84  public function workWithUserSetting($setting)
85  {
86  $result = true;
87  if ($this->settings["usr_settings_hide_" . $setting] == 1) {
88  $result = false;
89  }
90  if ($this->settings["usr_settings_disable_" . $setting] == 1) {
91  $result = false;
92  }
93  return $result;
94  }
95 
100  public function userSettingVisible($setting)
101  {
102  $result = true;
103  if (isset($this->settings["usr_settings_hide_" . $setting]) &&
104  $this->settings["usr_settings_hide_" . $setting] == 1) {
105  $result = false;
106  }
107  return $result;
108  }
109 
114  public function userSettingEnabled($setting)
115  {
116  $result = true;
117  if ($this->settings["usr_settings_disable_" . $setting] == 1) {
118  $result = false;
119  }
120  return $result;
121  }
122 
126  public function uploadUserPicture()
127  {
128  global $ilUser;
129 
130  if ($this->workWithUserSetting("upload")) {
131  if (!$this->form->hasFileUpload("userfile")) {
132  if ($this->form->getItemByPostVar("userfile")->getDeletionFlag()) {
133  $ilUser->removeUserPicture();
134  }
135  return;
136  } else {
137  $webspace_dir = ilUtil::getWebspaceDir();
138  $image_dir = $webspace_dir . "/usr_images";
139  $store_file = "usr_" . $ilUser->getID() . "." . "jpg";
140 
141  // store filename
142  $ilUser->setPref("profile_image", $store_file);
143  $ilUser->update();
144 
145  // move uploaded file
146 
147  $pi = pathinfo($_FILES["userfile"]["name"]);
148  $uploaded_file = $this->form->moveFileUpload(
149  $image_dir,
150  "userfile",
151  "upload_" . $ilUser->getId() . "." . $pi["extension"]
152  );
153  if (!$uploaded_file) {
154  ilUtil::sendFailure($this->lng->txt("upload_error", true));
155  $this->ctrl->redirect($this, "showProfile");
156  }
157  chmod($uploaded_file, 0770);
158 
159  // take quality 100 to avoid jpeg artefacts when uploading jpeg files
160  // taking only frame [0] to avoid problems with animated gifs
161  $show_file = "$image_dir/usr_" . $ilUser->getId() . ".jpg";
162  $thumb_file = "$image_dir/usr_" . $ilUser->getId() . "_small.jpg";
163  $xthumb_file = "$image_dir/usr_" . $ilUser->getId() . "_xsmall.jpg";
164  $xxthumb_file = "$image_dir/usr_" . $ilUser->getId() . "_xxsmall.jpg";
165  $uploaded_file = ilUtil::escapeShellArg($uploaded_file);
166  $show_file = ilUtil::escapeShellArg($show_file);
167  $thumb_file = ilUtil::escapeShellArg($thumb_file);
168  $xthumb_file = ilUtil::escapeShellArg($xthumb_file);
169  $xxthumb_file = ilUtil::escapeShellArg($xxthumb_file);
170 
171  if (ilUtil::isConvertVersionAtLeast("6.3.8-3")) {
172  ilUtil::execConvert($uploaded_file . "[0] -geometry 200x200^ -gravity center -extent 200x200 -quality 100 JPEG:" . $show_file);
173  ilUtil::execConvert($uploaded_file . "[0] -geometry 100x100^ -gravity center -extent 100x100 -quality 100 JPEG:" . $thumb_file);
174  ilUtil::execConvert($uploaded_file . "[0] -geometry 75x75^ -gravity center -extent 75x75 -quality 100 JPEG:" . $xthumb_file);
175  ilUtil::execConvert($uploaded_file . "[0] -geometry 30x30^ -gravity center -extent 30x30 -quality 100 JPEG:" . $xxthumb_file);
176  } else {
177  ilUtil::execConvert($uploaded_file . "[0] -geometry 200x200 -quality 100 JPEG:" . $show_file);
178  ilUtil::execConvert($uploaded_file . "[0] -geometry 100x100 -quality 100 JPEG:" . $thumb_file);
179  ilUtil::execConvert($uploaded_file . "[0] -geometry 75x75 -quality 100 JPEG:" . $xthumb_file);
180  ilUtil::execConvert($uploaded_file . "[0] -geometry 30x30 -quality 100 JPEG:" . $xxthumb_file);
181  }
182  }
183  }
184 
185  // $this->saveProfile();
186  }
187 
191  public function removeUserPicture()
192  {
193  global $ilUser;
194 
195  $ilUser->removeUserPicture();
196 
197  $this->saveProfile();
198  }
199 
200 
201 
205  public function saveProfile()
206  {
207  global $ilUser ,$ilSetting, $ilAuth;
208 
209  //init checking var
210  $form_valid = true;
211 
212  // testing by ratana ty:
213  // if people check on check box it will
214  // write some datata to table usr_pref
215  // if check on Public Profile
216  if (($_POST["chk_pub"])=="on") {
217  $ilUser->setPref("public_profile", "y");
218  } else {
219  $ilUser->setPref("public_profile", "n");
220  }
221 
222  // if check on Institute
223  $val_array = array("institution", "department", "upload", "street",
224  "zip", "city", "country", "phone_office", "phone_home", "phone_mobile",
225  "fax", "email", "second_email", "hobby", "matriculation");
226 
227  // set public profile preferences
228  foreach ($val_array as $key => $value) {
229  if (($_POST["chk_" . $value]) == "on") {
230  $ilUser->setPref("public_" . $value, "y");
231  } else {
232  $ilUser->setPref("public_" . $value, "n");
233  }
234  }
235 
236  // check dynamically required fields
237  foreach ($this->settings as $key => $val) {
238  if (substr($key, 0, 8) == "require_") {
239  $require_keys[] = substr($key, 8);
240  }
241  }
242 
243  foreach ($require_keys as $key => $val) {
244  // exclude required system and registration-only fields
245  $system_fields = array("login", "default_role", "passwd", "passwd2");
246  if (!in_array($val, $system_fields)) {
247  if ($this->workWithUserSetting($val)) {
248  if (isset($this->settings["require_" . $val]) && $this->settings["require_" . $val]) {
249  if (empty($_POST["usr_" . $val])) {
250  ilUtil::sendFailure($this->lng->txt("fill_out_all_required_fields") . ": " . $this->lng->txt($val));
251  $form_valid = false;
252  }
253  }
254  }
255  }
256  }
257 
258  // Check user defined required fields
259  if ($form_valid and !$this->__checkUserDefinedRequiredFields()) {
260  ilUtil::sendFailure($this->lng->txt("fill_out_all_required_fields"));
261  $form_valid = false;
262  }
263 
264  // check email
265  if ($this->workWithUserSetting("email")) {
266  if (!ilUtil::is_email($_POST["usr_email"]) and !empty($_POST["usr_email"]) and $form_valid) {
267  ilUtil::sendFailure($this->lng->txt("email_not_valid"));
268  $form_valid = false;
269  }
270  }
271  // check second email
272  if ($this->workWithUserSetting("second_email")) {
273  if (!ilUtil::is_email($_POST["usr_second_email"]) and !empty($_POST["usr_second_email"]) and $form_valid) {
274  ilUtil::sendFailure($this->lng->txt("second_email_not_valid"));
275  $form_valid = false;
276  }
277  }
278 
279  //update user data (not saving!)
280  if ($this->workWithUserSetting("firstname")) {
281  $ilUser->setFirstName(ilUtil::stripSlashes($_POST["usr_firstname"]));
282  }
283  if ($this->workWithUserSetting("lastname")) {
284  $ilUser->setLastName(ilUtil::stripSlashes($_POST["usr_lastname"]));
285  }
286  if ($this->workWithUserSetting("gender")) {
287  $ilUser->setGender($_POST["usr_gender"]);
288  }
289  if ($this->workWithUserSetting("title")) {
290  $ilUser->setUTitle(ilUtil::stripSlashes($_POST["usr_title"]));
291  }
292  $ilUser->setFullname();
293  if ($this->workWithUserSetting("institution")) {
294  $ilUser->setInstitution(ilUtil::stripSlashes($_POST["usr_institution"]));
295  }
296  if ($this->workWithUserSetting("department")) {
297  $ilUser->setDepartment(ilUtil::stripSlashes($_POST["usr_department"]));
298  }
299  if ($this->workWithUserSetting("street")) {
300  $ilUser->setStreet(ilUtil::stripSlashes($_POST["usr_street"]));
301  }
302  if ($this->workWithUserSetting("zipcode")) {
303  $ilUser->setZipcode(ilUtil::stripSlashes($_POST["usr_zipcode"]));
304  }
305  if ($this->workWithUserSetting("city")) {
306  $ilUser->setCity(ilUtil::stripSlashes($_POST["usr_city"]));
307  }
308  if ($this->workWithUserSetting("country")) {
309  $ilUser->setCountry(ilUtil::stripSlashes($_POST["usr_country"]));
310  }
311  if ($this->workWithUserSetting("phone_office")) {
312  $ilUser->setPhoneOffice(ilUtil::stripSlashes($_POST["usr_phone_office"]));
313  }
314  if ($this->workWithUserSetting("phone_home")) {
315  $ilUser->setPhoneHome(ilUtil::stripSlashes($_POST["usr_phone_home"]));
316  }
317  if ($this->workWithUserSetting("phone_mobile")) {
318  $ilUser->setPhoneMobile(ilUtil::stripSlashes($_POST["usr_phone_mobile"]));
319  }
320  if ($this->workWithUserSetting("fax")) {
321  $ilUser->setFax(ilUtil::stripSlashes($_POST["usr_fax"]));
322  }
323  if ($this->workWithUserSetting("email")) {
324  $ilUser->setEmail(ilUtil::stripSlashes($_POST["usr_email"]));
325  }
326  if ($this->workWithUserSetting("second_email")) {
327  $ilUser->setSecondEmail(ilUtil::stripSlashes($_POST["usr_second_email"]));
328  }
329  if ($this->workWithUserSetting("hobby")) {
330  $ilUser->setHobby(ilUtil::stripSlashes($_POST["usr_hobby"]));
331  }
332  if ($this->workWithUserSetting("referral_comment")) {
333  $ilUser->setComment(ilUtil::stripSlashes($_POST["usr_referral_comment"]));
334  }
335  if ($this->workWithUserSetting("matriculation")) {
336  $ilUser->setMatriculation(ilUtil::stripSlashes($_POST["usr_matriculation"]));
337  }
338 
339  // Set user defined data
340  $ilUser->setUserDefinedData($_POST['udf']);
341 
342  // everthing's ok. save form data
343  if ($form_valid) {
344  // init reload var. page should only be reloaded if skin or style were changed
345  $reload = false;
346 
347  if ($this->workWithUserSetting("skin_style")) {
348  //set user skin and style
349  if ($_POST["usr_skin_style"] != "") {
350  $sknst = explode(":", $_POST["usr_skin_style"]);
351 
352  if ($ilUser->getPref("style") != $sknst[1] ||
353  $ilUser->getPref("skin") != $sknst[0]) {
354  $ilUser->setPref("skin", $sknst[0]);
355  $ilUser->setPref("style", $sknst[1]);
356  $reload = true;
357  }
358  }
359  }
360 
361  if ($this->workWithUserSetting("language")) {
362  // reload page if language was changed
363  //if ($_POST["usr_language"] != "" and $_POST["usr_language"] != $_SESSION['lang'])
364  // (this didn't work as expected, alex)
365  if ($_POST["usr_language"] != $ilUser->getLanguage()) {
366  $reload = true;
367  }
368 
369  // set user language
370  $ilUser->setLanguage($_POST["usr_language"]);
371  }
372  if ($this->workWithUserSetting("hits_per_page")) {
373  // set user hits per page
374  if ($_POST["hits_per_page"] != "") {
375  $ilUser->setPref("hits_per_page", $_POST["hits_per_page"]);
376  }
377  }
378 
379  // set show users online
380  /*if ($this->workWithUserSetting("show_users_online"))
381  {
382  $ilUser->setPref("show_users_online", $_POST["show_users_online"]);
383  }*/
384 
385  // set hide own online_status
386  if ($this->workWithUserSetting("hide_own_online_status")) {
387  if ($_POST["chk_hide_own_online_status"] != "") {
388  $ilUser->setPref("hide_own_online_status", "y");
389  } else {
390  $ilUser->setPref("hide_own_online_status", "n");
391  }
392  }
393 
394  // personal desktop items in news block
395  /* Subscription Concept is abandonded for now, we show all news of pd items (Alex)
396  if ($_POST["pd_items_news"] != "")
397  {
398  $ilUser->setPref("pd_items_news","y");
399  }
400  else
401  {
402  $ilUser->setPref("pd_items_news","n");
403  }
404  */
405 
406  // profile ok
407  $ilUser->setProfileIncomplete(false);
408 
409  // save user data & object_data
410  $ilUser->setTitle($ilUser->getFullname());
411  $ilUser->setDescription($ilUser->getEmail());
412 
413  $ilUser->update();
414 
415  // update lucene index
416  include_once './Services/Search/classes/Lucene/class.ilLuceneIndexer.php';
418 
419 
420  // reload page only if skin or style were changed
421  // feedback
422  if (!empty($this->password_error)) {
423  ilUtil::sendFailure($this->password_error, true);
424  } elseif (!empty($this->upload_error)) {
425  ilUtil::sendFailure($this->upload_error, true);
426  } elseif ($reload) {
427  // feedback
428  ilUtil::sendSuccess($this->lng->txt("saved_successfully"), true);
429  $this->ctrl->redirect($this, "");
430  } else {
431  ilUtil::sendSuccess($this->lng->txt("saved_successfully"), true);
432  }
433  }
434 
435  $this->showProfile();
436  }
437 
443  public function showProfile()
444  {
445  $this->showPersonalData();
446  }
447 
451  protected function showUserAgreement()
452  {
453  $this->tabs->clearTargets();
454  $this->tabs->clearSubTabs();
455 
456  $this->tpl->setTitle($this->lng->txt('usr_agreement'));
457 
458  $tpl = new \ilTemplate('tpl.view_terms_of_service.html', true, true, 'Services/Init');
459 
461  if ($document->exists()) {
462  $tpl->setVariable('TERMS_OF_SERVICE_CONTENT', $document->getContent());
463  } else {
464  $tpl->setVariable(
465  'TERMS_OF_SERVICE_CONTENT',
466  sprintf(
467  $this->lng->txt('no_agreement_description'),
469  )
470  );
471  }
472 
473  $this->tpl->setContent($tpl->get());
474 
475  $this->tpl->setPermanentLink('usr', null, 'agreement');
476  $this->tpl->show();
477  }
478 
485  public function addLocationToForm(ilPropertyFormGUI $a_form, ilObjUser $a_user)
486  {
487  global $ilCtrl;
488 
489  // check map activation
490  include_once("./Services/Maps/classes/class.ilMapUtil.php");
491  if (!ilMapUtil::isActivated()) {
492  return;
493  }
494 
495  // Don't really know if this is still necessary...
496  $this->lng->loadLanguageModule("maps");
497 
498  // Get user settings
499  $latitude = $a_user->getLatitude();
500  $longitude = $a_user->getLongitude();
501  $zoom = $a_user->getLocationZoom();
502 
503  // Get Default settings, when nothing is set
504  if ($latitude == 0 && $longitude == 0 && $zoom == 0) {
506  $latitude = $def["latitude"];
507  $longitude = $def["longitude"];
508  $zoom = $def["zoom"];
509  }
510 
511  $street = $a_user->getStreet();
512  if (!$street) {
513  $street = $this->lng->txt("street");
514  }
515  $city = $a_user->getCity();
516  if (!$city) {
517  $city = $this->lng->txt("city");
518  }
519  $country = $a_user->getCountry();
520  if (!$country) {
521  $country = $this->lng->txt("country");
522  }
523 
524  // location property
525  $loc_prop = new ilLocationInputGUI(
526  $this->lng->txt("location"),
527  "location"
528  );
529  $loc_prop->setLatitude($latitude);
530  $loc_prop->setLongitude($longitude);
531  $loc_prop->setZoom($zoom);
532  $loc_prop->setAddress($street . "," . $city . "," . $country);
533 
534  $a_form->addItem($loc_prop);
535  }
536 
537  // init sub tabs
538  public function setTabs()
539  {
540  global $ilTabs, $ilUser, $ilHelp;
541 
542  $ilHelp->setScreenIdComponent("user");
543 
544  // personal data
545  $ilTabs->addTab(
546  "personal_data",
547  $this->lng->txt("personal_data"),
548  $this->ctrl->getLinkTarget($this, "showPersonalData")
549  );
550 
551  // public profile
552  $ilTabs->addTab(
553  "public_profile",
554  $this->lng->txt("public_profile"),
555  $this->ctrl->getLinkTarget($this, "showPublicProfile")
556  );
557 
558  // export
559  $ilTabs->addTab(
560  "export",
561  $this->lng->txt("export") . "/" . $this->lng->txt("import"),
562  $this->ctrl->getLinkTarget($this, "showExportImport")
563  );
564 
565  // #17570
566  if (($ilUser->getPref("public_profile") &&
567  $ilUser->getPref("public_profile") != "n") ||
568  $this->getProfilePortfolio()) {
569  // profile preview
570  $ilTabs->addNonTabbedLink(
571  "profile_preview",
572  $this->lng->txt("user_profile_preview"),
573  $this->ctrl->getLinkTargetByClass("ilpublicuserprofilegui", "view")
574  );
575  }
576  }
577 
578 
579  public function __showOtherInformations()
580  {
581  $d_set = new ilSetting("delicous");
582  if ($this->userSettingVisible("matriculation") or count($this->user_defined_fields->getVisibleDefinitions())
583  or $d_set->get("user_profile") == "1") {
584  return true;
585  }
586  return false;
587  }
588 
589  public function __showUserDefinedFields()
590  {
591  global $ilUser;
592 
593  $user_defined_data = $ilUser->getUserDefinedData();
594  foreach ($this->user_defined_fields->getVisibleDefinitions() as $field_id => $definition) {
595  if ($definition['field_type'] == UDF_TYPE_TEXT) {
596  $this->tpl->setCurrentBlock("field_text");
597  $this->tpl->setVariable("FIELD_VALUE", ilUtil::prepareFormOutput($user_defined_data[$field_id]));
598  if (!$definition['changeable']) {
599  $this->tpl->setVariable("DISABLED_FIELD", 'disabled=\"disabled\"');
600  $this->tpl->setVariable("FIELD_NAME", 'udf[' . $definition['field_id'] . ']');
601  } else {
602  $this->tpl->setVariable("FIELD_NAME", 'udf[' . $definition['field_id'] . ']');
603  }
604  $this->tpl->parseCurrentBlock();
605  } else {
606  if ($definition['changeable']) {
607  $name = 'udf[' . $definition['field_id'] . ']';
608  $disabled = false;
609  } else {
610  $name = '';
611  $disabled = true;
612  }
613  $this->tpl->setCurrentBlock("field_select");
614  $this->tpl->setVariable("SELECT_BOX", ilUtil::formSelect(
615  $user_defined_data[$field_id],
616  $name,
617  $this->user_defined_fields->fieldValuesToSelectArray(
618  $definition['field_values']
619  ),
620  false,
621  true,
622  0,
623  '',
624  '',
625  $disabled
626  ));
627  $this->tpl->parseCurrentBlock();
628  }
629  $this->tpl->setCurrentBlock("user_defined");
630 
631  if ($definition['required']) {
632  $name = $definition['field_name'] . "<span class=\"asterisk\">*</span>";
633  } else {
634  $name = $definition['field_name'];
635  }
636  $this->tpl->setVariable("TXT_FIELD_NAME", $name);
637  $this->tpl->parseCurrentBlock();
638  }
639  return true;
640  }
641 
643  {
644  foreach ($this->user_defined_fields->getVisibleDefinitions() as $definition) {
645  $field_id = $definition['field_id'];
646  if ($definition['required'] and !strlen($_POST['udf'][$field_id])) {
647  return false;
648  }
649  }
650  return true;
651  }
652 
656  public function setHeader()
657  {
658  $this->tpl->setTitle($this->lng->txt('personal_profile'));
659  }
660 
661  //
662  //
663  // PERSONAL DATA FORM
664  //
665  //
666 
670  public function showPersonalData($a_no_init = false)
671  {
672  global $ilUser, $lng, $ilTabs, $DIC;
673 
674  $ilTabs->activateTab("personal_data");
675  $ctrl = $DIC->ctrl();
676 
677  $setting = new ilSetting("user");
678  $it = $setting->get("user_profile_info_" . $ilUser->getLanguage());
679  if (trim($it) != "") {
680  $pub_prof = in_array($ilUser->prefs["public_profile"], array("y", "n", "g"))
681  ? $ilUser->prefs["public_profile"]
682  : "n";
683  if ($pub_prof == "n") {
684  $button = $DIC->ui()->factory()->button()->shy(
685  "» " . $lng->txt("user_make_profile_public"),
686  $ctrl->getLinkTarget($this, "showPublicProfile")
687  );
688  $it.= "<br><br>" . $DIC->ui()->renderer()->render($button);
689  }
690 
691  ilUtil::sendInfo(nl2br($it));
692  }
693 
694  $this->setHeader();
695 
696  if (!$a_no_init) {
697  $this->initPersonalDataForm();
698  // catch feedback message
699  if ($ilUser->getProfileIncomplete()) {
700  ilUtil::sendInfo($lng->txt("profile_incomplete"));
701  }
702  }
703  $this->tpl->setContent($this->form->getHTML());
704 
705  $this->tpl->show();
706  }
707 
711  public function initPersonalDataForm()
712  {
713  global $ilSetting, $lng, $ilUser, $styleDefinition, $rbacreview;
714 
715  include_once("Services/Form/classes/class.ilPropertyFormGUI.php");
716  $this->form = new ilPropertyFormGUI();
717  $this->form->setFormAction($this->ctrl->getFormAction($this));
718 
719  // user defined fields
720  $user_defined_data = $ilUser->getUserDefinedData();
721 
722  foreach ($this->user_defined_fields->getVisibleDefinitions() as $field_id => $definition) {
723  if ($definition['field_type'] == UDF_TYPE_TEXT) {
724  $this->input["udf_" . $definition['field_id']] =
725  new ilTextInputGUI($definition['field_name'], "udf_" . $definition['field_id']);
726  $this->input["udf_" . $definition['field_id']]->setMaxLength(255);
727  $this->input["udf_" . $definition['field_id']]->setSize(40);
728  } elseif ($definition['field_type'] == UDF_TYPE_WYSIWYG) {
729  $this->input["udf_" . $definition['field_id']] =
730  new ilTextAreaInputGUI($definition['field_name'], "udf_" . $definition['field_id']);
731  $this->input["udf_" . $definition['field_id']]->setUseRte(true);
732  } else {
733  $options = $this->user_defined_fields->fieldValuesToSelectArray($definition['field_values']);
734  $this->input["udf_" . $definition['field_id']] =
735  new ilSelectInputGUI($definition['field_name'], "udf_" . $definition['field_id']);
736  $this->input["udf_" . $definition['field_id']]->setOptions($options);
737  }
738 
739  $value = $user_defined_data["f_" . $field_id];
740  $this->input["udf_" . $definition['field_id']]->setValue($value);
741 
742  if ($definition['required']) {
743  $this->input["udf_" . $definition['field_id']]->setRequired(true);
744  }
745  if (!$definition['changeable'] && (!$definition['required'] || $value)) {
746  $this->input["udf_" . $definition['field_id']]->setDisabled(true);
747  }
748 
749  if ($definition['field_type'] == UDF_TYPE_SELECT && !$value) {
750  $this->input["udf_" . $definition['field_id']]->setOptions($options);
751  }
752  }
753 
754  // standard fields
755  include_once("./Services/User/classes/class.ilUserProfile.php");
756  $up = new ilUserProfile();
757  $up->skipField("password");
758  $up->skipGroup("settings");
759  $up->skipGroup("preferences");
760 
761  $up->setAjaxCallback(
762  $this->ctrl->getLinkTargetByClass('ilPublicUserProfileGUI', 'doProfileAutoComplete', '', true)
763  );
764 
765  // standard fields
766  $up->addStandardFieldsToForm($this->form, $ilUser, $this->input);
767 
768  $this->addLocationToForm($this->form, $ilUser);
769 
770  $this->form->addCommandButton("savePersonalData", $lng->txt("save"));
771  }
772 
777  public function savePersonalData()
778  {
779  global $tpl, $lng, $ilCtrl, $ilUser, $ilSetting;
780 
781  $this->initPersonalDataForm();
782  if ($this->form->checkInput()) {
783  $form_valid = true;
784 
785  // if form field name differs from setter
786  $map = array(
787  "firstname" => "FirstName",
788  "lastname" => "LastName",
789  "title" => "UTitle",
790  "sel_country" => "SelectedCountry",
791  "phone_office" => "PhoneOffice",
792  "phone_home" => "PhoneHome",
793  "phone_mobile" => "PhoneMobile",
794  "referral_comment" => "Comment",
795  "interests_general" => "GeneralInterests",
796  "interests_help_offered" => "OfferingHelp",
797  "interests_help_looking" => "LookingForHelp"
798  );
799  include_once("./Services/User/classes/class.ilUserProfile.php");
800  $up = new ilUserProfile();
801  foreach ($up->getStandardFields() as $f => $p) {
802  // if item is part of form, it is currently valid (if not disabled)
803  $item = $this->form->getItemByPostVar("usr_" . $f);
804  if ($item && !$item->getDisabled()) {
805  $value = $this->form->getInput("usr_" . $f);
806  switch ($f) {
807  case "birthday":
808  $value = $item->getDate();
809  $ilUser->setBirthday($value
810  ? $value->get(IL_CAL_DATE)
811  : "");
812  break;
813  case "second_email":
814  $ilUser->setSecondEmail($value);
815  break;
816  default:
817  $m = ucfirst($f);
818  if (isset($map[$f])) {
819  $m = $map[$f];
820  }
821  $ilUser->{"set" . $m}($value);
822  break;
823  }
824  }
825  }
826  $ilUser->setFullname();
827 
828  // check map activation
829  include_once("./Services/Maps/classes/class.ilMapUtil.php");
830  if (ilMapUtil::isActivated()) {
831  // #17619 - proper escaping
832  $location = $this->form->getInput("location");
833  $lat = ilUtil::stripSlashes($location["latitude"]);
834  $long = ilUtil::stripSlashes($location["longitude"]);
835  $zoom = ilUtil::stripSlashes($location["zoom"]);
836  $ilUser->setLatitude(is_numeric($lat) ? $lat : null);
837  $ilUser->setLongitude(is_numeric($long) ? $long : null);
838  $ilUser->setLocationZoom(is_numeric($zoom) ? $zoom : null);
839  }
840 
841  // Set user defined data
842  $defs = $this->user_defined_fields->getVisibleDefinitions();
843  $udf = array();
844  foreach ($defs as $definition) {
845  $f = "udf_" . $definition['field_id'];
846  $item = $this->form->getItemByPostVar($f);
847  if ($item && !$item->getDisabled()) {
848  $udf[$definition['field_id']] = $this->form->getInput($f);
849  }
850  }
851  $ilUser->setUserDefinedData($udf);
852 
853  // if loginname is changeable -> validate
854  $un = $this->form->getInput('username');
855  if ((int) $ilSetting->get('allow_change_loginname') &&
856  $un != $ilUser->getLogin()) {
857  if (!strlen($un) || !ilUtil::isLogin($un)) {
858  ilUtil::sendFailure($lng->txt('form_input_not_valid'));
859  $this->form->getItemByPostVar('username')->setAlert($this->lng->txt('login_invalid'));
860  $form_valid = false;
861  } elseif (ilObjUser::_loginExists($un, $ilUser->getId())) {
862  ilUtil::sendFailure($lng->txt('form_input_not_valid'));
863  $this->form->getItemByPostVar('username')->setAlert($this->lng->txt('loginname_already_exists'));
864  $form_valid = false;
865  } else {
866  $ilUser->setLogin($un);
867 
868  try {
869  $ilUser->updateLogin($ilUser->getLogin());
870  } catch (ilUserException $e) {
871  ilUtil::sendFailure($lng->txt('form_input_not_valid'));
872  $this->form->getItemByPostVar('username')->setAlert($e->getMessage());
873  $form_valid = false;
874  }
875  }
876  }
877 
878  // everthing's ok. save form data
879  if ($form_valid) {
880  $this->uploadUserPicture();
881 
882  // profile ok
883  $ilUser->setProfileIncomplete(false);
884 
885  // save user data & object_data
886  $ilUser->setTitle($ilUser->getFullname());
887  $ilUser->setDescription($ilUser->getEmail());
888 
889  $ilUser->update();
890 
891  ilUtil::sendSuccess($lng->txt("msg_obj_modified"), true);
892 
893  if (ilSession::get('orig_request_target')) {
894  $target = ilSession::get('orig_request_target');
895  ilSession::set('orig_request_target', '');
897  } elseif ($redirect = $_SESSION['profile_complete_redirect']) {
898  unset($_SESSION['profile_complete_redirect']);
899  ilUtil::redirect($redirect);
900  } else {
901  $ilCtrl->redirect($this, "showPersonalData");
902  }
903  }
904  }
905 
906  $this->form->setValuesByPost();
907  $this->showPersonalData(true);
908  }
909 
910  //
911  //
912  // PUBLIC PROFILE FORM
913  //
914  //
915 
919  public function showPublicProfile($a_no_init = false)
920  {
921  global $ilUser, $lng, $ilSetting, $ilTabs;
922 
923  $ilTabs->activateTab("public_profile");
924 
925  $this->setHeader();
926 
927  if (!$a_no_init) {
928  $this->initPublicProfileForm();
929  }
930 
931  $ptpl = new ilTemplate("tpl.edit_personal_profile.html", true, true, "Services/User");
932  $ptpl->setVariable("FORM", $this->form->getHTML());
933  include_once("./Services/User/classes/class.ilPublicUserProfileGUI.php");
934  $pub_profile = new ilPublicUserProfileGUI($ilUser->getId());
935  $ptpl->setVariable("PREVIEW", $pub_profile->getEmbeddable());
936  $this->tpl->setContent($ptpl->get());
937  $this->tpl->show();
938  }
939 
945  protected function getProfilePortfolio()
946  {
947  global $ilUser, $ilSetting;
948 
949  if ($ilSetting->get('user_portfolios')) {
950  include_once "Modules/Portfolio/classes/class.ilObjPortfolio.php";
951  return ilObjPortfolio::getDefaultPortfolio($ilUser->getId());
952  }
953  }
954 
960  public function initPublicProfileForm()
961  {
962  global $lng, $ilUser, $ilSetting;
963 
964  include_once("Services/Form/classes/class.ilPropertyFormGUI.php");
965  $this->form = new ilPropertyFormGUI();
966 
967  $this->form->setTitle($lng->txt("public_profile"));
968  $this->form->setDescription($lng->txt("user_public_profile_info"));
969  $this->form->setFormAction($this->ctrl->getFormAction($this));
970 
971  $portfolio_id = $this->getProfilePortfolio();
972 
973  if (!$portfolio_id) {
974  // Activate public profile
975  $radg = new ilRadioGroupInputGUI($lng->txt("user_activate_public_profile"), "public_profile");
976  $info = $this->lng->txt("user_activate_public_profile_info");
977  $pub_prof = in_array($ilUser->prefs["public_profile"], array("y", "n", "g"))
978  ? $ilUser->prefs["public_profile"]
979  : "n";
980  if (!$ilSetting->get('enable_global_profiles') && $pub_prof == "g") {
981  $pub_prof = "y";
982  }
983  $radg->setValue($pub_prof);
984  $op1 = new ilRadioOption($lng->txt("usr_public_profile_disabled"), "n", $lng->txt("usr_public_profile_disabled_info"));
985  $radg->addOption($op1);
986  $op2 = new ilRadioOption($lng->txt("usr_public_profile_logged_in"), "y");
987  $radg->addOption($op2);
988  if ($ilSetting->get('enable_global_profiles')) {
989  $op3 = new ilRadioOption($lng->txt("usr_public_profile_global"), "g");
990  $radg->addOption($op3);
991  }
992  $this->form->addItem($radg);
993 
994  // #11773
995  if ($ilSetting->get('user_portfolios')) {
996  // #10826
997  $prtf = "<br />" . $lng->txt("user_profile_portfolio");
998  $prtf .= "<br /><a href=\"ilias.php?baseClass=ilPersonalDesktopGUI&cmd=jumpToPortfolio\">&raquo; " .
999  $lng->txt("user_portfolios") . "</a>";
1000  $info .= $prtf;
1001  }
1002 
1003  $radg->setInfo($info);
1004  } else {
1005  $prtf = $lng->txt("user_profile_portfolio_selected");
1006  $prtf .= "<br /><a href=\"ilias.php?baseClass=ilPersonalDesktopGUI&cmd=jumpToPortfolio&prt_id=" . $portfolio_id . "\">&raquo; " .
1007  $lng->txt("portfolio") . "</a>";
1008 
1009  $info = new ilCustomInputGUI($lng->txt("user_activate_public_profile"));
1010  $info->setHTML($prtf);
1011  $this->form->addItem($info);
1012  }
1013 
1014  $this->showPublicProfileFields($this->form, $ilUser->prefs);
1015 
1016  $this->form->addCommandButton("savePublicProfile", $lng->txt("save"));
1017  }
1018 
1027  public function showPublicProfileFields(ilPropertyformGUI $form, array $prefs, $parent = null, $anonymized = false)
1028  {
1029  global $ilUser;
1030 
1031  $birthday = $ilUser->getBirthday();
1032  if ($birthday) {
1033  $birthday = ilDatePresentation::formatDate(new ilDate($birthday, IL_CAL_DATE));
1034  }
1035  $gender = $ilUser->getGender();
1036  if ($gender) {
1037  $gender = $this->lng->txt("gender_" . $gender);
1038  }
1039 
1040  if ($ilUser->getSelectedCountry() != "") {
1041  $this->lng->loadLanguageModule("meta");
1042  $txt_sel_country = $this->lng->txt("meta_c_" . $ilUser->getSelectedCountry());
1043  }
1044 
1045  // profile picture
1046  $pic = ilObjUser::_getPersonalPicturePath($ilUser->getId(), "xsmall", true, true);
1047  if ($pic) {
1048  $pic = "<img src=\"" . $pic . "\" />";
1049  }
1050 
1051  // personal data
1052  $val_array = array(
1053  "title" => $ilUser->getUTitle(),
1054  "birthday" => $birthday,
1055  "gender" => $gender,
1056  "upload" => $pic,
1057  "interests_general" => $ilUser->getGeneralInterestsAsText(),
1058  "interests_help_offered" => $ilUser->getOfferingHelpAsText(),
1059  "interests_help_looking" => $ilUser->getLookingForHelpAsText(),
1060  "org_units" => $ilUser->getOrgUnitsRepresentation(),
1061  "institution" => $ilUser->getInstitution(),
1062  "department" => $ilUser->getDepartment(),
1063  "street" => $ilUser->getStreet(),
1064  "zipcode" => $ilUser->getZipcode(),
1065  "city" => $ilUser->getCity(),
1066  "country" => $ilUser->getCountry(),
1067  "sel_country" => $txt_sel_country,
1068  "phone_office" => $ilUser->getPhoneOffice(),
1069  "phone_home" => $ilUser->getPhoneHome(),
1070  "phone_mobile" => $ilUser->getPhoneMobile(),
1071  "fax" => $ilUser->getFax(),
1072  "email" => $ilUser->getEmail(),
1073  "second_email" => $ilUser->getSecondEmail(),
1074  "hobby" => $ilUser->getHobby(),
1075  "matriculation" => $ilUser->getMatriculation()
1076  );
1077 
1078  // location
1079  include_once("./Services/Maps/classes/class.ilMapUtil.php");
1080  if (ilMapUtil::isActivated()) {
1081  $val_array["location"] = "";
1082  }
1083 
1084  foreach ($val_array as $key => $value) {
1085  if ($anonymized) {
1086  $value = null;
1087  }
1088 
1089  if ($this->userSettingVisible($key)) {
1090  // #18795 - we should use ilUserProfile
1091  switch ($key) {
1092  case "upload":
1093  $caption = "personal_picture";
1094  break;
1095 
1096  case "title":
1097  $caption = "person_title";
1098  break;
1099 
1100  default:
1101  $caption = $key;
1102  }
1103  $cb = new ilCheckboxInputGUI($this->lng->txt($caption), "chk_" . $key);
1104  if ($prefs["public_" . $key] == "y") {
1105  $cb->setChecked(true);
1106  }
1107  //$cb->setInfo($value);
1108  $cb->setOptionTitle($value);
1109 
1110  if (!$parent) {
1111  $form->addItem($cb);
1112  } else {
1113  $parent->addSubItem($cb);
1114  }
1115  }
1116  }
1117 
1118  // additional defined user data fields
1119  $user_defined_data = array();
1120  if (!$anonymized) {
1121  $user_defined_data = $ilUser->getUserDefinedData();
1122  }
1123  foreach ($this->user_defined_fields->getVisibleDefinitions() as $field_id => $definition) {
1124  // public setting
1125  $cb = new ilCheckboxInputGUI($definition["field_name"], "chk_udf_" . $definition["field_id"]);
1126  $cb->setOptionTitle($user_defined_data["f_" . $definition["field_id"]]);
1127  if ($prefs["public_udf_" . $definition["field_id"]] == "y") {
1128  $cb->setChecked(true);
1129  }
1130 
1131  if (!$parent) {
1132  $form->addItem($cb);
1133  } else {
1134  $parent->addSubItem($cb);
1135  }
1136  }
1137 
1138  // :TODO: badges
1139  if (!$anonymized) {
1140  include_once "Services/Badge/classes/class.ilBadgeHandler.php";
1142  if ($handler->isActive()) {
1143  $badge_options = array();
1144 
1145  include_once "Services/Badge/classes/class.ilBadgeAssignment.php";
1146  include_once "Services/Badge/classes/class.ilBadge.php";
1147  foreach (ilBadgeAssignment::getInstancesByUserId($ilUser->getId()) as $ass) {
1148  // only active
1149  if ($ass->getPosition()) {
1150  $badge = new ilBadge($ass->getBadgeId());
1151  $badge_options[] = $badge->getTitle();
1152  }
1153  }
1154 
1155  if (sizeof($badge_options) > 1) {
1156  $badge_order = new ilNonEditableValueGUI($this->lng->txt("obj_bdga"), "bpos");
1157  $badge_order->setMultiValues($badge_options);
1158  $badge_order->setValue(array_shift($badge_options));
1159  $badge_order->setMulti(true, true, false);
1160 
1161  if (!$parent) {
1162  $form->addItem($badge_order);
1163  } else {
1164  $parent->addSubItem($badge_order);
1165  }
1166  }
1167  }
1168  }
1169  }
1170 
1175  public function savePublicProfile()
1176  {
1177  global $tpl, $lng, $ilCtrl, $ilUser;
1178 
1179  $this->initPublicProfileForm();
1180  if ($this->form->checkInput()) {
1181  // with active portfolio no options are presented
1182  if (isset($_POST["public_profile"])) {
1183  $ilUser->setPref("public_profile", $_POST["public_profile"]);
1184  }
1185 
1186  // if check on Institute
1187  $val_array = array("title", "birthday", "gender", "org_units", "institution", "department", "upload",
1188  "street", "zipcode", "city", "country", "sel_country", "phone_office", "phone_home", "phone_mobile",
1189  "fax", "email", "second_email", "hobby", "matriculation", "location",
1190  "interests_general", "interests_help_offered", "interests_help_looking");
1191 
1192  // set public profile preferences
1193  foreach ($val_array as $key => $value) {
1194  if (($_POST["chk_" . $value])) {
1195  $ilUser->setPref("public_" . $value, "y");
1196  } else {
1197  $ilUser->setPref("public_" . $value, "n");
1198  }
1199  }
1200 
1201  // additional defined user data fields
1202  foreach ($this->user_defined_fields->getVisibleDefinitions() as $field_id => $definition) {
1203  if (($_POST["chk_udf_" . $definition["field_id"]])) {
1204  $ilUser->setPref("public_udf_" . $definition["field_id"], "y");
1205  } else {
1206  $ilUser->setPref("public_udf_" . $definition["field_id"], "n");
1207  }
1208  }
1209 
1210  $ilUser->update();
1211 
1212  // :TODO: badges
1213  include_once "Services/Badge/classes/class.ilBadgeHandler.php";
1215  if ($handler->isActive()) {
1216  $badgePositions = [];
1217  if (isset($_POST["bpos"]) && is_array($_POST["bpos"])) {
1218  $badgePositions = $_POST["bpos"];
1219  }
1220 
1221  if (count($badgePositions) > 0) {
1222  include_once "Services/Badge/classes/class.ilBadgeAssignment.php";
1223  ilBadgeAssignment::updatePositions($ilUser->getId(), $badgePositions);
1224  }
1225  }
1226 
1227  // update lucene index
1228  include_once './Services/Search/classes/Lucene/class.ilLuceneIndexer.php';
1229  ilLuceneIndexer::updateLuceneIndex(array((int) $GLOBALS['ilUser']->getId()));
1230 
1231  ilUtil::sendSuccess($lng->txt("msg_obj_modified"), true);
1232  $ilCtrl->redirect($this, "showPublicProfile");
1233  }
1234  $this->form->setValuesByPost();
1235  $tpl->showPublicProfile(true);
1236  }
1237 
1244  public function showExportImport()
1245  {
1246  global $ilToolbar, $ilCtrl, $tpl, $ilTabs, $ilUser;
1247 
1248  $ilTabs->activateTab("export");
1249  $this->setHeader();
1250 
1251  include_once "Services/UIComponent/Button/classes/class.ilLinkButton.php";
1252  $button = ilLinkButton::getInstance();
1253  $button->setCaption("pd_export_profile");
1254  $button->setUrl($ilCtrl->getLinkTarget($this, "exportPersonalData"));
1255  $ilToolbar->addStickyItem($button);
1256 
1257  $exp_file = $ilUser->getPersonalDataExportFile();
1258  if ($exp_file != "") {
1259  $ilToolbar->addSeparator();
1260  $ilToolbar->addButton(
1261  $this->lng->txt("pd_download_last_export_file"),
1262  $ilCtrl->getLinkTarget($this, "downloadPersonalData")
1263  );
1264  }
1265 
1266  $ilToolbar->addSeparator();
1267  $ilToolbar->addButton(
1268  $this->lng->txt("pd_import_personal_data"),
1269  $ilCtrl->getLinkTarget($this, "importPersonalDataSelection")
1270  );
1271 
1272  $tpl->show();
1273  }
1274 
1275 
1279  public function exportPersonalData()
1280  {
1281  global $ilCtrl, $ilUser;
1282 
1283  $ilUser->exportPersonalData();
1284  $ilUser->sendPersonalDataFile();
1285  $ilCtrl->redirect($this, "showExportImport");
1286  }
1287 
1294  public function downloadPersonalData()
1295  {
1296  global $ilUser;
1297 
1298  $ilUser->sendPersonalDataFile();
1299  }
1300 
1308  {
1309  global $lng, $ilCtrl, $tpl, $ilTabs;
1310 
1311  $ilTabs->activateTab("export");
1312  $this->setHeader();
1313 
1314  $this->initPersonalDataImportForm();
1315 
1316  $tpl->setContent($this->form->getHTML());
1317  $tpl->show();
1318  }
1319 
1326  public function initPersonalDataImportForm()
1327  {
1328  global $lng, $ilCtrl;
1329 
1330  include_once("Services/Form/classes/class.ilPropertyFormGUI.php");
1331  $this->form = new ilPropertyFormGUI();
1332 
1333  // input file
1334  $fi = new ilFileInputGUI($lng->txt("file"), "file");
1335  $fi->setRequired(true);
1336  $fi->setSuffixes(array("zip"));
1337  $this->form->addItem($fi);
1338 
1339  // profile data
1340  $cb = new ilCheckboxInputGUI($this->lng->txt("pd_profile_data"), "profile_data");
1341  $this->form->addItem($cb);
1342 
1343  // settings
1344  $cb = new ilCheckboxInputGUI($this->lng->txt("settings"), "settings");
1345  $this->form->addItem($cb);
1346 
1347  // bookmarks
1348  $cb = new ilCheckboxInputGUI($this->lng->txt("pd_bookmarks"), "bookmarks");
1349  $this->form->addItem($cb);
1350 
1351  // personal notes
1352  $cb = new ilCheckboxInputGUI($this->lng->txt("pd_notes"), "notes");
1353  $this->form->addItem($cb);
1354 
1355  // calendar entries
1356  $cb = new ilCheckboxInputGUI($this->lng->txt("pd_private_calendars"), "calendar");
1357  $this->form->addItem($cb);
1358 
1359  $this->form->addCommandButton("importPersonalData", $lng->txt("import"));
1360  $this->form->addCommandButton("showExportImport", $lng->txt("cancel"));
1361 
1362  $this->form->setTitle($lng->txt("pd_import_personal_data"));
1363  $this->form->setFormAction($ilCtrl->getFormAction($this));
1364  }
1365 
1366 
1373  public function importPersonalData()
1374  {
1375  global $ilUser, $ilCtrl, $tpl, $ilTabs;
1376 
1377  $this->initPersonalDataImportForm();
1378  if ($this->form->checkInput()) {
1379  $ilUser->importPersonalData(
1380  $_FILES["file"],
1381  (int) $_POST["profile_data"],
1382  (int) $_POST["settings"],
1383  (int) $_POST["bookmarks"],
1384  (int) $_POST["notes"],
1385  (int) $_POST["calendar"]
1386  );
1387  ilUtil::sendSuccess($this->lng->txt("msg_obj_modified"), true);
1388  $ilCtrl->redirect($this, "");
1389  } else {
1390  $ilTabs->activateTab("export");
1391  $this->setHeader();
1392  $this->form->setValuesByPost();
1393  $tpl->setContent($this->form->getHtml());
1394  $tpl->show();
1395  }
1396  }
1397 }
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
static isConvertVersionAtLeast($a_version)
Compare convert version numbers.
Class for user related exception handling in ILIAS.
const UDF_TYPE_SELECT
static prepareFormOutput($a_str, $a_strip=false)
prepares string output for html forms public
showPublicProfile($a_no_init=false)
Public profile form.
setLatitude($a_latitude)
Set Latitude.
This class represents an option in a radio group.
showPublicProfileFields(ilPropertyformGUI $form, array $prefs, $parent=null, $anonymized=false)
Add fields to form.
static _getInstance()
Get instance.
savePublicProfile()
Save public profile form.
$_SESSION["AccountId"]
This class represents a selection list property in a property form.
$result
This class represents a property form user interface.
importPersonalDataSelection()
Import personal data selection.
global $DIC
Definition: saml.php:7
showPersonalData($a_no_init=false)
Personal data form.
static is_email($a_email, ilMailRfc822AddressParserFactory $mailAddressParserFactory=null)
This preg-based function checks whether an e-mail address is formally valid.
initPublicProfileForm()
Init public profile form.
$_GET["client_id"]
saveProfile()
save user profile data
$location
Definition: buildRTE.php:44
This class represents a file property in a property form.
static formatDate(ilDateTime $date, $a_skip_day=false, $a_include_wd=false)
Format a date public.
exportPersonalData()
Export personal data.
$GLOBALS['loaded']
Global hash that tracks already loaded includes.
initPersonalDataImportForm()
Init personal data import form.
static get($a_var)
Get a value.
getLocationZoom()
Get Location Zoom.
Class ilUserProfile.
static set($a_var, $a_val)
Set a value.
This class represents a checkbox property in a property form.
static updateLuceneIndex($a_obj_ids)
Update lucene index.
addItem($a_item)
Add Item (Property, SectionHeader).
setMultiValues(array $a_values)
Set multi values.
importPersonalData()
Import personal data.
getLongitude()
Get Longitude.
getStreet()
get street public
getCountry()
Get country (free text)
getProfilePortfolio()
has profile set to a portfolio?
uploadUserPicture()
Upload user image.
global $ilCtrl
Definition: ilias.php:18
setInfo($a_info)
Set Information Text.
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
static _loginExists($a_login, $a_user_id=0)
check if a login name already exists You may exclude a user from the check by giving his user id as 2...
setChecked($a_checked)
Set Checked.
userSettingEnabled($setting)
Returns TRUE if user setting is enabled, FALSE otherwise.
GUI class for public user profile presentation.
if($format !==null) $name
Definition: metadata.php:146
getCity()
get city public
This class represents a property in a property form.
static getMailToAddress()
Get mailto: email.
Class for single dates.
static execConvert($args)
execute convert command
if(isset($_POST['submit'])) $form
downloadPersonalData()
Download personal data export file.
special template class to simplify handling of ITX/PEAR
static getDefaultSettings()
Get default longitude, latitude and zoom.
setTitle($a_title)
Set Title.
This class represents a location property in a property form.
const UDF_TYPE_TEXT
This class represents a text property in a property form.
$ilUser
Definition: imgupload.php:18
redirection script todo: (a better solution should control the processing via a xml file) ...
static stripSlashes($a_str, $a_strip_html=true, $a_allow="")
strip slashes if magic qoutes is enabled
const UDF_TYPE_WYSIWYG
Create styles array
The data for the language used.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
savePersonalData()
Save personal data form.
getLatitude()
Get Latitude.
static isActivated()
Checks whether Map feature is activated.
This class represents a custom property in a property form.
const IL_CAL_DATE
settings()
Definition: settings.php:2
initPersonalDataForm()
Init personal form.
static isLogin($a_login)
static formSelect( $selected, $varname, $options, $multiple=false, $direct_text=false, $size="0", $style_class="", $attribs="", $disabled=false)
Builds a select form field with options and shows the selected option first.
This class represents a non editable value in a property form.
global $ilSetting
Definition: privfeed.php:17
static escapeShellArg($a_arg)
This class represents a text area property in a property form.
static updatePositions($a_user_id, array $a_positions)
addLocationToForm(ilPropertyFormGUI $a_form, ilObjUser $a_user)
Add location fields to form if activated.
$def
Definition: croninfo.php:21
static getDefaultPortfolio($a_user_id)
Get default portfolio of user.
userSettingVisible($setting)
Returns TRUE if user setting is visible, FALSE otherwise.
$info
Definition: index.php:5
static redirect($a_script)
$handler
static getWebspaceDir($mode="filesystem")
get webspace directory
$key
Definition: croninfo.php:18
removeUserPicture()
remove user image
$_POST["username"]
workWithUserSetting($setting)
Returns TRUE if working with the given user setting is allowed, FALSE otherwise.
static getInstancesByUserId($a_user_id)
showExportImport()
Show export/import.
setRequired($a_required)
Set Required.
if(!isset($_REQUEST['ReturnTo'])) if(!isset($_REQUEST['AuthId'])) $options
Definition: as_login.php:20
static getInstance()
Constructor.
GUI class for personal profile.