ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
class.ilServicesUserTasks.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2016 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
12 {
13  const ANON_FIRSTNAME = 'Anonymous';
14  const ANON_LASTNAME = 'Exam-User';
15  const ANON_LOGIN_PREFIX = 'EX-';
16  const ANON_GENDER = 'm';
17  const PASSWORD_CHARACTERSET = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
18 
25  public static function createAnonymousUsers($context, $params)
26  {
27  $input_params = $params[0];
28  $output_params =$params[1];
29 
30  // IN: useridlist
31  // OUT: anonaccountlist, userIdList
32 
33  $pseudonymousUserMap = array();
34  $discloseMap = array();
35  $usrIdList = array();
36 
37  foreach ($input_params['usrIdList'] as $user_id) {
38  $source_user = new ilObjUser($user_id, false);
39  $anon_login = self::getValidLogin();
40  $anon_password = self::generatePassword();
41  $new_id = self::createUser(
42  $anon_login,
43  $anon_password,
44  $source_user->getEmail()
45  );
46 
47  $pseudonymousUserMap[] = array(
48  'Original User' => $user_id,
49  'Anonymous User' => $new_id
50  );
51 
52  $discloseMap[] = array(
53  'Original User' => $user_id,
54  'Original Login' => $source_user->getLogin(),
55  'Original Firstname' => $source_user->getFirstname(),
56  'Original Lastname' => $source_user->getLastname(),
57  'Original Matriculation' => $source_user->getMatriculation(),
58  'Original Gender' => $source_user->getGender(),
59  'Original EMail' => $source_user->getEmail(),
60  'Anon User' => $new_id,
61  'Anon Login' => $anon_login,
62  'Anon Password' => $anon_password
63  );
64 
65  $usrIdList[] = $new_id;
66  }
67 
68  return array($output_params[0] => $discloseMap);
69  }
70 
74  protected static function getValidLogin()
75  {
76  $random = new \ilRandom();
77  do {
78  $login = self::ANON_LOGIN_PREFIX . str_pad($random->int(0, 9999999), 7, STR_PAD_LEFT);
79  } while (ilObjUser::_loginExists($login));
80 
81  return $login;
82  }
83 
89  protected static function generatePassword($length = 8)
90  {
91  $random = new \ilRandom();
92  $password = array();
93  $setLength = strlen(self::PASSWORD_CHARACTERSET) - 1;
94 
95  for ($i = 0; $i < $length; $i++) {
96  $index = $random->int(0, $setLength);
97  $password[] = self::PASSWORD_CHARACTERSET[$index];
98  }
99 
100  return implode($password);
101  }
102 
110  protected static function createUser($login, $password, $email)
111  {
112  global $DIC;
113  $rbacadmin = $DIC['rbacadmin'];
114 
115  $user = new ilObjUser();
116  $user->setTimeLimitUnlimited(true);
117  $user->setFirstname(self::ANON_FIRSTNAME);
118  $user->setLastname(self::ANON_LASTNAME);
119  $user->setEmail($email);
120  $user->setGender(self::ANON_GENDER);
121  $user->setPasswd($password, IL_PASSWD_PLAIN);
122  $user->setLogin($login);
123  $user->setActive(true, 6);
124  $user->create();
125 
126  $user->setLastPasswordChangeTS(0);
127  $user->saveAsNew();
128 
129  $user->setPref('send_info_mails', 'n');
130  $user->writePrefs();
131 
132  $rbacadmin->assignUser(4, $user->getId(), true);
133 
134  return $user->getId();
135  }
136 
141  public static function repersonalizeUsers($context, $params)
142  {
143  // IN: discloseMap
144  $input_params = $params[0];
145  $output_params =$params[1];
146 
147  foreach ($input_params['discloseMap'] as $disclose_entry) {
148  $anon_user = new ilObjUser($disclose_entry['Anon User'], false);
149  $anon_user->setFirstname($disclose_entry['Original Firstname']);
150  $anon_user->setLastname($disclose_entry['Original Lastname']);
151  $anon_user->setMatriculation($disclose_entry['Original Matriculation']);
152  $anon_user->setGender($disclose_entry['Original Gender']);
153  $anon_user->update();
154  }
155 
156  // OUT: void
157  }
158 }
$params
Definition: disable.php:11
if($orgName !==null) if($spconfig->hasValue('contacts')) $email
Definition: metadata.php:193
const IL_PASSWD_PLAIN
static generatePassword($length=8)
static createAnonymousUsers($context, $params)
global $DIC
Definition: saml.php:7
$index
Definition: metadata.php:60
static repersonalizeUsers($context, $params)
static createUser($login, $password, $email)
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...
$password
Definition: pwgen.php:17
Class ilServicesUserTasks.
Create styles array
The data for the language used.
$i
Definition: disco.tpl.php:19