ILIAS  Release_4_0_x_branch Revision 61816
 All Data Structures Namespaces Files Functions Variables Groups Pages
ilSoapUserAdministration Class Reference
+ Inheritance diagram for ilSoapUserAdministration:
+ Collaboration diagram for ilSoapUserAdministration:

Public Member Functions

 ilSoapUserAdministration ()
 login ($client, $username, $password)
 loginCAS ($client, $PT, $username)
 loginLDAP ($client, $username, $password)
 logout ($sid)
 lookupUser ($sid, $user_name)
 getUser ($sid, $user_id)
 updateUser ($sid, $user_data)
 updatePassword ($sid, $user_id, $new_password)
 addUser ($sid, $user_data, $global_role_id)
 deleteUser ($sid, $user_id)
 __validateUserData (&$user_data, $check_complete=true)
 __setUserData (&$user_obj, &$user_data)
 __readUserData (&$usr_obj)
 __substituteUserData ($user_old, $user_new)
 importUsers ($sid, $folder_id, $usr_xml, $conflict_rule, $send_account_mail)
 define ("IL_FAIL_ON_CONFLICT", 1); define ("IL_UPDATE_ON_CONFLICT", 2); define ("IL_IGNORE_ON_CONFLICT", 3);
 getUsersForContainer ($sid, $ref_id, $attachRoles, $active)
 return list of users following dtd users_3_7
 getUserForRole ($sid, $role_id, $attachRoles, $active)
 __getImportProtocolAsXML ($a_array)
 Create XML ResultSet.
 __getUserMappingAsXML ($a_array)
 return user mapping as xml
 searchUser ($sid, $a_keyfields, $query_operator, $a_keyvalues, $attach_roles, $active)
 return user xml following dtd 3.7
 __buildSearchQuery ($a_keyfields, $queryOperator, $a_keyvalues)
 create search term according to parameters
 getUserXML ($sid, $a_user_ids, $attach_roles)
 return user xmls for given user ids (csv separated ids) as xml based on usr dtd.
 hasNewMail ($sid)
- Public Member Functions inherited from ilSoapAdministration
 ilSoapAdministration ($use_nusoap=true)
 __checkSession ($sid)
 initErrorWriter ()
 Overwrite error handler.
 __explodeSid ($sid)
 __setMessage ($a_str)
 __getMessage ()
 __appendMessage ($a_str)
 __setMessageCode ($a_code)
 __getMessageCode ()
 initAuth ($sid)
 initIlias ()
 __initAuthenticationObject ($a_auth_mode=AUTH_LOCAL)
 __raiseError ($a_message, $a_code)
 getNIC ($sid)
 get client information from current as xml result set
 isFault ($object)
 checkObjectAccess ($ref_id, $expected_type, $permission, $returnObject=false)
 check access for ref id: expected type, permission, return object instance if returnobject is true
 getInstallationInfoXML ()
 getClientInfoXML ($clientid)

Protected Member Functions

 isPermittedRole ($a_folder, $a_role)
 check if assignment is allowed

Additional Inherited Members

- Static Public Member Functions inherited from ilSoapAdministration
static return_bytes ($val)
 calculate bytes from K,M,G modifiers e.g: 8M = 8 * 1024 * 1024 bytes
- Data Fields inherited from ilSoapAdministration
 $sauth = null
 $error_method = null
- Protected Attributes inherited from ilSoapAdministration
 $soap_check = true

Detailed Description

Definition at line 35 of file class.ilSoapUserAdministration.php.

Member Function Documentation

ilSoapUserAdministration::__buildSearchQuery (   $a_keyfields,
  $queryOperator,
  $a_keyvalues 
)

create search term according to parameters

Parameters
arrayof string $a_keyfields
string$queryOperator
arrayof string $a_keyValues

Definition at line 1226 of file class.ilSoapUserAdministration.php.

References $ilDB, and $query.

Referenced by searchUser().

{
global $ilDB;
$query = array();
$allowed_fields = array ("firstname","lastname","email","login","matriculation","institution","department","title","ext_account");
foreach ($a_keyfields as $keyfield)
{
$keyfield = strtolower($keyfield);
if (!in_array($keyfield, $allowed_fields))
continue;
$field_query = array ();
foreach ($a_keyvalues as $keyvalue)
{
if (strlen($keyvalue) >= 3) {
$field_query []= $keyfield." like '%".$keyvalue."%'";
}
}
if (count($field_query))
$query [] = join(" ".strtoupper($queryOperator)." ", $field_query);
}
return count ($query) ? " AND ((". join(") OR (", $query) ."))" : "AND 0";
}

+ Here is the caller graph for this function:

ilSoapUserAdministration::__getImportProtocolAsXML (   $a_array)

Create XML ResultSet.

Definition at line 1070 of file class.ilSoapUserAdministration.php.

References $messages, and ilSoapAdministration\__raiseError().

Referenced by importUsers().

{
include_once './webservice/soap/classes/class.ilXMLResultSet.php';
include_once './webservice/soap/classes/class.ilXMLResultSetWriter.php';
$xmlResultSet = new ilXMLResultSet ();
$xmlResultSet->addColumn ("userid");
$xmlResultSet->addColumn ("login");
$xmlResultSet->addColumn ("action");
$xmlResultSet->addColumn ("message");
foreach ($a_array as $username => $messages)
{
foreach ($messages as $message)
{
$xmlRow = new ilXMLResultSetRow ();
$xmlRow->setValue (0, 0);
$xmlRow->setValue (1, $username);
$xmlRow->setValue (2, "");
$xmlRow->setValue (3, $message);
$xmlResultSet->addRow ($xmlRow);
}
}
$xml_writer = new ilXMLResultSetWriter ($xmlResultSet);
if ($xml_writer->start ())
return $xml_writer->getXML();
return $this->__raiseError('Error in __getImportProtocolAsXML','Server');
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilSoapUserAdministration::__getUserMappingAsXML (   $a_array)

return user mapping as xml

Parameters
array(user_id => login) $a_array
Returns
XML String, following resultset.dtd

Definition at line 1110 of file class.ilSoapUserAdministration.php.

References ilSoapAdministration\__raiseError().

Referenced by importUsers().

{
include_once './webservice/soap/classes/class.ilXMLResultSet.php';
include_once './webservice/soap/classes/class.ilXMLResultSetWriter.php';
$xmlResultSet = new ilXMLResultSet ();
$xmlResultSet->addColumn ("userid");
$xmlResultSet->addColumn ("login");
$xmlResultSet->addColumn ("action");
$xmlResultSet->addColumn ("message");
if (count($a_array))
foreach ($a_array as $username => $message)
{
$xmlRow = new ilXMLResultSetRow ();
$xmlRow->setValue (0, $username);
$xmlRow->setValue (1, $message["login"]);
$xmlRow->setValue (2, $message["action"]);
$xmlRow->setValue (3, $message["message"]);
$xmlResultSet->addRow ($xmlRow);
}
$xml_writer = new ilXMLResultSetWriter ( $xmlResultSet);
if ($xml_writer->start ())
return $xml_writer->getXML();
return $this->__raiseError('Error in __getUserMappingAsXML','Server');
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilSoapUserAdministration::__readUserData ( $usr_obj)

Definition at line 566 of file class.ilSoapUserAdministration.php.

Referenced by getUser(), and updateUser().

{
$usr_data['usr_id'] = $usr_obj->getId();
$usr_data['login'] = $usr_obj->getLogin();
$usr_data['passwd'] = $usr_obj->getPasswd();
$usr_data['passwd_type'] = $usr_obj->getPasswdType();
$usr_data['firstname'] = $usr_obj->getFirstname();
$usr_data['lastname'] = $usr_obj->getLastname();
$usr_data['title'] = $usr_obj->getUTitle();
$usr_data['gender'] = $usr_obj->getGender();
$usr_data['email'] = $usr_obj->getEmail();
$usr_data['institution'] = $usr_obj->getInstitution();
$usr_data['street'] = $usr_obj->getStreet();
$usr_data['city'] = $usr_obj->getCity();
$usr_data['zipcode'] = $usr_obj->getZipcode();
$usr_data['country'] = $usr_obj->getCountry();
$usr_data['phone_office'] = $usr_obj->getPhoneOffice();
$usr_data['last_login'] = $usr_obj->getLastLogin();
$usr_data['last_update'] = $usr_obj->getLastUpdate();
$usr_data['create_date'] = $usr_obj->getCreateDate();
$usr_data['hobby'] = $usr_obj->getHobby();
$usr_data['department'] = $usr_obj->getDepartment();
$usr_data['phone_home'] = $usr_obj->getPhoneHome();
$usr_data['phone_mobile'] = $usr_obj->getPhoneMobile();
$usr_data['fax'] = $usr_obj->getFax();
$usr_data['time_limit_owner'] = $usr_obj->getTimeLimitOwner();
$usr_data['time_limit_unlimited'] = $usr_obj->getTimeLimitUnlimited();
$usr_data['time_limit_from'] = $usr_obj->getTimeLimitFrom();
$usr_data['time_limit_until'] = $usr_obj->getTimeLimitUntil();
$usr_data['time_limit_message'] = $usr_obj->getTimeLimitMessage();
$usr_data['referral_comment'] = $usr_obj->getComment();
$usr_data['matriculation'] = $usr_obj->getMatriculation();
$usr_data['active'] = $usr_obj->getActive();
$usr_data['approve_date'] = $usr_obj->getApproveDate();
$usr_data['user_skin'] = $usr_obj->getPref('skin');
$usr_data['user_style'] = $usr_obj->getPref('style');
$usr_data['user_language'] = $usr_obj->getLanguage();
$usr_data['auth_mode'] = $usr_obj->getAuthMode();
$usr_data['accepted_agreement'] = $usr_obj->hasAcceptedUserAgreement();
$usr_data['import_id'] = $usr_obj->getImportId();
return $usr_data;
}

+ Here is the caller graph for this function:

ilSoapUserAdministration::__setUserData ( $user_obj,
$user_data 
)

Definition at line 520 of file class.ilSoapUserAdministration.php.

References USER_FOLDER_ID.

Referenced by addUser(), and updateUser().

{
// Default to unlimited if no access period is given
if(!$user_data['time_limit_from'] and
!$user_data['time_limit_until'] and
!$user_data['time_limit_unlimited'])
{
$user_data['time_limit_unlimited'] = 1;
}
if(!$user_data['time_limit_owner'])
{
$user_data['time_limit_owner'] = USER_FOLDER_ID;
}
// not supported fields by update/addUser
$user_data['im_icq'] = $user_obj->getInstantMessengerId('icq');
$user_data['im_yahoo'] = $user_obj->getInstantMessengerId('yahoo');
$user_data['im_msn'] = $user_obj->getInstantMessengerId('msn');
$user_data['im_aim'] = $user_obj->getInstantMessengerId('aim');
$user_data['im_skype'] = $user_obj->getInstantMessengerId('skype');
$user_data['im_jabber'] = $user_obj->getInstantMessengerId('jabber');
$user_data['im_voip'] = $user_obj->getInstantMessengerId('voip');
$user_data['delicious'] = $user_obj->getDelicious();
$user_data['latitude'] = $user_obj->getLatitude();
$user_data['longitude'] = $user_obj->getLongitude();
$user_data['loc_zoom'] = $user_obj->getLocationZoom();
$user_data['auth_mode'] = $user_obj->getAuthMode();
$user_data['ext_account'] = $user_obj->getExternalAccount();
$user_obj->assignData($user_data);
if(isset($user_data['user_language']))
{
$user_obj->setLanguage($user_data['user_language']);
}
if(isset($user_data['user_skin']) and isset($user_data['user_style']))
{
$user_obj->setPref('skin',$user_data['user_skin']);
$user_obj->setPref('style',$user_data['user_style']);
}
return true;
}

+ Here is the caller graph for this function:

ilSoapUserAdministration::__substituteUserData (   $user_old,
  $user_new 
)

Definition at line 610 of file class.ilSoapUserAdministration.php.

References $key.

Referenced by updateUser().

{
foreach($user_new as $key => $value)
{
$user_old[$key] = $value;
}
return $user_old ? $user_old : array();
}

+ Here is the caller graph for this function:

ilSoapUserAdministration::__validateUserData ( $user_data,
  $check_complete = true 
)

Definition at line 381 of file class.ilSoapUserAdministration.php.

References $ilLog, $lng, $ok, $type, ilSoapAdministration\__appendMessage(), ilSoapAdministration\__getMessage(), ilSoapAdministration\__setMessage(), ilAuthUtils\_getAuthMode(), ilObjUser\_loginExists(), ilObject\_lookupType(), ilAuthUtils\_needsExternalAccountByAuthMode(), elseif(), ilUtil\is_email(), ilUtil\isLogin(), and ilUtil\isPassword().

Referenced by addUser(), and updateUser().

{
global $lng,$styleDefinition,$ilLog;
$this->__setMessage('');
include_once('./Services/Authentication/classes/class.ilAuthUtils.php');
ilAuthUtils::_getAuthMode($user_data['auth_mode']));
if($check_complete)
{
if(!isset($user_data['login']))
{
$this->__appendMessage('No login given.');
}
if(!isset($user_data['passwd']) and !$allow_empty_password)
{
$this->__appendMessage('No password given.');
}
if(!isset($user_data['email']))
{
$this->__appendMessage('No email given');
}
if(!isset($user_data['user_language']))
{
$user_data['user_language'] = $lng->getDefaultLanguage();
}
}
foreach($user_data as $field => $value)
{
switch($field)
{
case 'login':
if (!ilUtil::isLogin($value))
{
$this->__appendMessage('Login invalid.');
}
// check loginname
if($check_complete)
{
{
$this->__appendMessage('Login already exists.');
}
}
break;
case 'passwd':
if(!strlen($value) and $allow_empty_password)
{
break;
}
if (!ilUtil::isPassword($value))
{
$this->__appendMessage('Password invalid.');
}
break;
case 'email':
if(!ilUtil::is_email($value))
{
$this->__appendMessage('Email invalid.');
}
break;
case 'time_limit_unlimited':
if($value != 1)
{
if($user_data['time_limit_from'] >= $user_data['time_limit_until'])
{
$this->__appendMessage('Time limit invalid');
}
}
break;
case 'user_language':
$lang_inst = $lng->getInstalledLanguages();
if(!in_array($user_data['user_language'],$lang_inst))
{
$this->__appendMessage('Language: '.$user_data['user_language'].' is not installed');
}
break;
case 'user_skin':
case 'user_style':
if(($user_data['user_skin'] and !$user_data['user_style']) or
(!$user_data['user_skin'] and $user_data['user_style']))
{
$this->__appendMessage('user_skin, user_style not valid.');
}
elseif($user_data['user_skin'] and $user_data['user_style'])
{
$ok = false;
$templates = $styleDefinition->getAllTemplates();
if (count($templates) > 0 && is_array($templates))
{
foreach($templates as $template)
{
$styleDef =& new ilStyleDefinition($template["id"]);
$styleDef->startParsing();
$styles = $styleDef->getStyles();
foreach ($styles as $style)
{
if ($user_data['user_skin'] == $template["id"] &&
$user_data['user_style'] == $style["id"])
{
$ok = true;
}
}
}
if(!$ok)
{
$this->__appendMessage('user_skin, user_style not valid.');
}
}
}
break;
case 'time_limit_owner':
$type = ilObject::_lookupType($user_data['time_limit_owner'],true);
if($type != 'cat' and $type != 'usrf')
{
$this->__appendMessage('time_limit_owner must be ref_id of category or user folder'.$type);
}
break;
default:
continue;
}
}
return strlen($this->__getMessage()) ? false : true;
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilSoapUserAdministration::addUser (   $sid,
  $user_data,
  $global_role_id 
)

Definition at line 250 of file class.ilSoapUserAdministration.php.

References $ilLog, $ilSetting, $new_user, ilSoapAdministration\__checkSession(), ilSoapAdministration\__getMessage(), ilSoapAdministration\__getMessageCode(), ilSoapAdministration\__raiseError(), __setUserData(), __validateUserData(), IL_PASSWD_MD5, IL_PASSWD_PLAIN, ilSoapAdministration\initAuth(), ilSoapAdministration\initIlias(), and USER_FOLDER_ID.

{
$this->initAuth($sid);
$this->initIlias();
if(!$this->__checkSession($sid))
{
return $this->__raiseError($this->__getMessage(),$this->__getMessageCode());
}
global $rbacsystem, $rbacreview, $ilLog, $rbacadmin,$ilSetting;
if(!$rbacsystem->checkAccess('create_user',USER_FOLDER_ID))
{
return $this->__raiseError('Check access failed.','Server');
}
// Validate user_data
if(!$this->__validateUserData($user_data))
{
return $this->__raiseError($this->__getMessage(),'Client');
}
// Validate global role
if(!$global_role_id)
{
return $this->__raiseError('No role id given','Client');
}
// Validate global role
$global_roles = $rbacreview->getGlobalRoles();
if(!in_array($global_role_id,$global_roles))
{
return $this->__raiseError('Role with id: '.$global_role_id.' is not a valid global role','Client');
}
$new_user =& new ilObjUser();
if(strlen($user_data['passwd']) != 32)
{
$user_data['passwd_type'] = IL_PASSWD_PLAIN;
}
else
{
$user_data['passwd_type'] = IL_PASSWD_MD5;
}
$this->__setUserData($new_user,$user_data);
$ilLog->write('SOAP: addUser()');
// Need this for entry in object_data
$new_user->setTitle($new_user->getFullname());
$new_user->setDescription($new_user->getEmail());
if ($user_data["import_id"] != "")
{
$new_user->setImportId($user_data["import_id"]);
}
$new_user->create();
$new_user->saveAsNew();
// If agreement is given. Set user agreement accepted.
if($user_data['accepted_agreement'])
{
$new_user->writeAccepted();
}
// Assign role
$rbacadmin->assignUser($global_role_id,$new_user->getId());
// Assign user prefs
$new_user->setLanguage($user_data['user_language']);
$new_user->setPref('style',$user_data['user_style']);
$new_user->setPref('skin',$user_data['user_skin']);
$new_user->setPref('hits_per_page',$ilSetting->get('hits_per_page'));
$new_user->setPref('show_users_online',$ilSetting->get('show_users_online'));
$new_user->writePrefs();
return $new_user->getId();
}

+ Here is the call graph for this function:

ilSoapUserAdministration::deleteUser (   $sid,
  $user_id 
)

Definition at line 335 of file class.ilSoapUserAdministration.php.

References $log, ilSoapAdministration\__checkSession(), ilSoapAdministration\__getMessage(), ilSoapAdministration\__getMessageCode(), ilSoapAdministration\__raiseError(), ilObjectFactory\getInstanceByObjId(), ilSoapAdministration\initAuth(), ilSoapAdministration\initIlias(), and USER_FOLDER_ID.

{
$this->initAuth($sid);
$this->initIlias();
if(!$this->__checkSession($sid))
{
return $this->__raiseError($this->__getMessage(),$this->__getMessageCode());
}
if(!isset($user_id))
{
return $this->__raiseError('No user_id given. Aborting','Client');
}
global $rbacsystem, $ilUser, $log;
if(!$rbacsystem->checkAccess('delete',USER_FOLDER_ID))
{
return $this->__raiseError('Check access failed.','Server');
}
if(!$ilUser->getLoginByUserId($user_id))
{
return $this->__raiseError('User id: '.$user_id.' is not a valid identifier. Aborting','Client');
}
if($ilUser->getId() == $user_id)
{
return $this->__raiseError('Cannot delete myself. Aborting','Client');
}
if($user_id == SYSTEM_USER_ID)
{
return $this->__raiseError('Cannot delete root account. Aborting','Client');
}
// Delete him
$log->write('SOAP: deleteUser()');
$delete_user =& ilObjectFactory::getInstanceByObjId($user_id,false);
$delete_user->delete();
return true;
}

+ Here is the call graph for this function:

ilSoapUserAdministration::getUser (   $sid,
  $user_id 
)

Definition at line 145 of file class.ilSoapUserAdministration.php.

References ilSoapAdministration\__checkSession(), ilSoapAdministration\__getMessage(), ilSoapAdministration\__getMessageCode(), ilSoapAdministration\__raiseError(), __readUserData(), ilObjectFactory\getInstanceByObjId(), ilSoapAdministration\initAuth(), ilSoapAdministration\initIlias(), and USER_FOLDER_ID.

{
$this->initAuth($sid);
$this->initIlias();
if(!$this->__checkSession($sid))
{
return $this->__raiseError($this->__getMessage(),$this->__getMessageCode());
}
global $rbacsystem, $ilUser;
if(!$rbacsystem->checkAccess('read',USER_FOLDER_ID))
{
return $this->__raiseError('Check access failed.','Server');
}
if($ilUser->getLoginByUserId($user_id))
{
$tmp_user =& ilObjectFactory::getInstanceByObjId($user_id);
$usr_data = $this->__readUserData($tmp_user);
return $usr_data;
}
return $this->__raiseError('User does not exist','Client');
}

+ Here is the call graph for this function:

ilSoapUserAdministration::getUserForRole (   $sid,
  $role_id,
  $attachRoles,
  $active 
)
Returns
list of users of a specific role, following dtd users_3_7

Definition at line 1006 of file class.ilSoapUserAdministration.php.

References $data, $ilDB, ilSoapAdministration\__checkSession(), ilSoapAdministration\__getMessage(), ilSoapAdministration\__getMessageCode(), ilSoapAdministration\__raiseError(), ilPrivacySettings\_getInstance(), ilObjUser\_getUsersForRole(), ilSoapAdministration\initAuth(), and ilSoapAdministration\initIlias().

{
$this->initAuth($sid);
$this->initIlias();
if(!$this->__checkSession($sid))
{
return $this->__raiseError($this->__getMessage(),$this->__getMessageCode());
}
include_once './Services/AccessControl/classes/class.ilObjRole.php';
global $ilDB, $rbacreview, $rbacsystem, $tree,$ilUser;
$global_roles = $rbacreview->getGlobalRoles();
if (in_array($role_id, $global_roles))
{
if ($role_id == SYSTEM_ROLE_ID && ! in_array(SYSTEM_ROLE_ID, $rbacreview->assignedRoles($ilUser->getId()))
)
{
return $this->__raiseError("Role access not permitted. ($role_id)","Server");
}
}
else
{
$rolf = $rbacreview->getFoldersAssignedToRole($role_id,true);
if ($rbacreview->isDeleted($rolf[0])
|| ! $rbacsystem->checkAccess('write',$tree->getParentId($rolf[0])))
{
return $this->__raiseError("Role access not permitted. ($role_id)","Server");
}
include_once('Services/PrivacySecurity/classes/class.ilPrivacySettings.php');
if(!$rbacsystem->checkAccess('read',SYSTEM_USER_ID) and
!$rbacsystem->checkAccess('export_member_data',$privacy->getPrivacySettingsRefId())) {
return $this->__raiseError("Export of local role members not permitted. ($role_id)","Server");
}
}
$data = ilObjUser::_getUsersForRole($role_id, $active);
include_once './Services/User/classes/class.ilUserXMLWriter.php';
$xmlWriter = new ilUserXMLWriter();
$xmlWriter->setAttachRoles($attachRoles);
$xmlWriter->setObjects($data);
if($xmlWriter->start())
{
return $xmlWriter->getXML();
}
return $this->__raiseError('Error in getUsersForRole','Server');
}

+ Here is the call graph for this function:

ilSoapUserAdministration::getUsersForContainer (   $sid,
  $ref_id,
  $attachRoles,
  $active 
)

return list of users following dtd users_3_7

Definition at line 926 of file class.ilSoapUserAdministration.php.

References $data, $ilDB, $ref_id, ilSoapAdministration\__checkSession(), ilSoapAdministration\__getMessage(), ilSoapAdministration\__getMessageCode(), ilSoapAdministration\__raiseError(), ilObjUser\_getUsersForFolder(), ilObjUser\_getUsersForGroup(), ilObjUser\_getUsersForIds(), ilObject\_lookupObjId(), ilSoapAdministration\checkObjectAccess(), ilSoapAdministration\initAuth(), ilSoapAdministration\initIlias(), ilSoapAdministration\isFault(), and USER_FOLDER_ID.

{
$this->initAuth($sid);
$this->initIlias();
if(!$this->__checkSession($sid))
{
return $this->__raiseError($this->__getMessage(),$this->__getMessageCode());
}
global $ilDB, $tree, $rbacreview, $rbacsystem;
if ($ref_id == -1)
$object = $this->checkObjectAccess($ref_id, array("crs","cat","grp","usrf","sess"), "read", true);
if ($this->isFault($object))
return $object;
$data = array();
switch ($object->getType()) {
case "usrf":
break;
case "cat":
break;
case "crs":
{
$object->initCourseMemberObject();
// GET ALL MEMBERS
$roles = $object->__getLocalRoles();
foreach($roles as $role_id)
{
$data = array_merge($rbacreview->assignedUsers($role_id, array()),$data);
}
break;
}
case "grp":
$member_ids = $object->getGroupMemberIds();
$data = ilObjUser::_getUsersForGroup($member_ids, $active);
break;
case "sess":
$course_ref_id = $tree->checkForParentType($ref_id,'crs');
if(!$course_ref_id)
{
return $this->__raiseError("No course for session", "Client");
}
$event_obj_id = ilObject::_lookupObjId($ref_id);
include_once 'Modules/Session/classes/class.ilEventParticipants.php';
$event_part = new ilEventParticipants($event_obj_id);
$member_ids = array_keys($event_part->getParticipants());
$data = ilObjUser::_getUsersForIds($member_ids, $active);
break;
}
if (is_array($data))
{
include_once './Services/User/classes/class.ilUserXMLWriter.php';
$xmlWriter = new ilUserXMLWriter();
$xmlWriter->setObjects($data);
$xmlWriter->setAttachRoles ($attachRoles);
if($xmlWriter->start())
{
return $xmlWriter->getXML();
}
}
return $this->__raiseError('Error in processing information. This is likely a bug.','Server');
}

+ Here is the call graph for this function:

ilSoapUserAdministration::getUserXML (   $sid,
  $a_user_ids,
  $attach_roles 
)

return user xmls for given user ids (csv separated ids) as xml based on usr dtd.

Parameters
stringsid session id
stringa_userids array of user ids, may be numeric or ilias ids
booleanattachRoles if true, role assignments will be attached, nothing will be done otherwise
Returns
string xml string based on usr dtd

Definition at line 1263 of file class.ilSoapUserAdministration.php.

References $data, $ilDB, ilSoapAdministration\__checkSession(), ilSoapAdministration\__getMessage(), ilSoapAdministration\__getMessageCode(), ilSoapAdministration\__raiseError(), ilObjUser\_getUserData(), ilSoapAdministration\initAuth(), ilSoapAdministration\initIlias(), and USER_FOLDER_ID.

{
$this->initAuth($sid);
$this->initIlias();
if(!$this->__checkSession($sid))
{
return $this->__raiseError($this->__getMessage(),$this->__getMessageCode());
}
global $rbacsystem, $ilUser, $ilDB;
if(!$rbacsystem->checkAccess('read',USER_FOLDER_ID))
{
return $this->__raiseError('Check access failed.','Server');
}
include_once './Services/User/classes/class.ilUserXMLWriter.php';
$xmlWriter = new ilUserXMLWriter();
$xmlWriter->setAttachRoles($attach_roles);
$xmlWriter->setObjects($data);
if($xmlWriter->start())
{
return $xmlWriter->getXML();
}
return $this->__raiseError('User does not exist','Client');
}

+ Here is the call graph for this function:

ilSoapUserAdministration::hasNewMail (   $sid)

Definition at line 1297 of file class.ilSoapUserAdministration.php.

References ilSoapAdministration\__checkSession(), ilSoapAdministration\__getMessage(), ilSoapAdministration\__getMessageCode(), ilSoapAdministration\__raiseError(), ilMailbox\_countNewMails(), ilSoapAdministration\initAuth(), and ilSoapAdministration\initIlias().

{
$this->initAuth($sid);
$this->initIlias();
if(!$this->__checkSession($sid))
{
return $this->__raiseError($this->__getMessage(),$this->__getMessageCode());
}
include_once ("Services/Mail/classes/class.ilMailbox.php");
global $ilUser;
if (ilMailbox::_countNewMails($ilUser->getId()) > 0)
{
return true;
}
else
{
return false;
}
}

+ Here is the call graph for this function:

ilSoapUserAdministration::ilSoapUserAdministration ( )

Definition at line 37 of file class.ilSoapUserAdministration.php.

References ilSoapAdministration\ilSoapAdministration().

+ Here is the call graph for this function:

ilSoapUserAdministration::importUsers (   $sid,
  $folder_id,
  $usr_xml,
  $conflict_rule,
  $send_account_mail 
)

define ("IL_FAIL_ON_CONFLICT", 1); define ("IL_UPDATE_ON_CONFLICT", 2); define ("IL_IGNORE_ON_CONFLICT", 3);

Definition at line 625 of file class.ilSoapUserAdministration.php.

References $err, $error, $ilLog, $lng, ilSoapAdministration\__checkSession(), ilUtil\__extractId(), __getImportProtocolAsXML(), ilSoapAdministration\__getMessage(), ilSoapAdministration\__getMessageCode(), __getUserMappingAsXML(), ilSoapAdministration\__raiseError(), ilObjRole\_getAssignUsersStatus(), ilObject\_lookupTitle(), DOMXML_LOAD_VALIDATING, domxml_open_mem(), ilObjectFactory\getInstanceByRefId(), IL_EXTRACT_ROLES, IL_FAIL_ON_CONFLICT, IL_IGNORE_ON_CONFLICT, IL_IMPORT_FAILURE, IL_IMPORT_SUCCESS, IL_IMPORT_WARNING, IL_UPDATE_ON_CONFLICT, IL_USER_IMPORT, IL_USER_MAPPING_ID, IL_VERIFY, ilSoapAdministration\initAuth(), ilSoapAdministration\initIlias(), isPermittedRole(), and USER_FOLDER_ID.

{
$this->initAuth($sid);
$this->initIlias();
if(!$this->__checkSession($sid))
{
return $this->__raiseError($this->__getMessage(),$this->__getMessageCode());
}
include_once './Services/User/classes/class.ilUserImportParser.php';
include_once './Services/AccessControl/classes/class.ilObjRole.php';
include_once './classes/class.ilObjectFactory.php';
global $rbacreview, $rbacsystem, $tree, $lng,$ilUser,$ilLog;
// this takes time but is nescessary
$error = false;
// validate to prevent wrong XMLs
$this->dom = @domxml_open_mem($usr_xml, DOMXML_LOAD_VALIDATING, $error);
if ($error)
{
$msg = array();
if (is_array($error))
{
foreach ($error as $err) {
$msg []= "(".$err["line"].",".$err["col"]."): ".$err["errormessage"];
}
}
else
{
$msg[] = $error;
}
$msg = join("\n",$msg);
return $this->__raiseError($msg, "Client");
}
switch ($conflict_rule)
{
case 2:
$conflict_rule = IL_UPDATE_ON_CONFLICT;
break;
case 3:
$conflict_rule = IL_IGNORE_ON_CONFLICT;
break;
default:
$conflict_rule = IL_FAIL_ON_CONFLICT;
}
// folder id 0, means to check permission on user basis!
// must have create user right in time_limit_owner property (which is ref_id of container)
if ($folder_id != 0)
{
// determine where to import
if ($folder_id == -1)
$folder_id = USER_FOLDER_ID;
// get folder
$import_folder = ilObjectFactory::getInstanceByRefId($folder_id, false);
// id does not exist
if (!$import_folder)
return $this->__raiseError('Wrong reference id.','Server');
// folder is not a folder, can also be a category
if ($import_folder->getType() != "usrf" && $import_folder->getType() != "cat")
return $this->__raiseError('Folder must be a usr folder or a category.','Server');
// check access to folder
if(!$rbacsystem->checkAccess('create_user',$folder_id))
{
return $this->__raiseError('Missing permission for creating users within '.$import_folder->getTitle(),'Server');
}
}
// first verify
$importParser = new ilUserImportParser("", IL_VERIFY, $conflict_rule);
$importParser->setUserMappingMode(IL_USER_MAPPING_ID);
$importParser->setXMLContent($usr_xml);
$importParser->startParsing();
switch ($importParser->getErrorLevel())
{
break;
return $this->__getImportProtocolAsXML ($importParser->getProtocol("User Import Log - Warning"));
break;
return $this->__getImportProtocolAsXML ($importParser->getProtocol("User Import Log - Failure"));
}
// verify is ok, so get role assignments
$importParser = new ilUserImportParser("", IL_EXTRACT_ROLES, $conflict_rule);
$importParser->setXMLContent($usr_xml);
$importParser->setUserMappingMode(IL_USER_MAPPING_ID);
$importParser->startParsing();
$roles = $importParser->getCollectedRoles();
//print_r($roles);
// roles to be assigned, skip if one is not allowed!
$permitted_roles = array();
foreach ($roles as $role_id => $role)
{
if (!is_numeric ($role_id))
{
// check if internal id
$internalId = ilUtil::__extractId($role_id, IL_INST_ID);
if (is_numeric($internalId))
{
$role_id = $internalId;
$role_name = $role_id;
}
/* else // perhaps it is a rolename
{
$role = ilSoapUserAdministration::__getRoleForRolename ($role_id);
$role_name = $role->title;
$role_id = $role->role_id;
}*/
}
if($this->isPermittedRole($folder_id,$role_id))
{
$permitted_roles[$role_id] = $role_id;
}
else
{
$role_name = ilObject::_lookupTitle($role_id);
return $this->__raiseError("Could not find role ".$role_name.". Either you use an invalid/deleted role ".
"or you try to assign a local role into the non-standard user folder and this role is not in its subtree.",'Server');
}
}
$global_roles = $rbacreview->getGlobalRoles();
//print_r ($global_roles);
foreach ($permitted_roles as $role_id => $role_name)
{
if ($role_id != "")
{
if (in_array($role_id, $global_roles))
{
if ($role_id == SYSTEM_ROLE_ID && ! in_array(SYSTEM_ROLE_ID,$rbacreview->assignedRoles($ilUser->getId()))
|| ($folder_id != USER_FOLDER_ID && $folder_id != 0 && ! ilObjRole::_getAssignUsersStatus($role_id))
)
{
return $this->__raiseError($lng->txt("usrimport_with_specified_role_not_permitted")." $role_name ($role_id)",'Server');
}
}
else
{
$rolf = $rbacreview->getFoldersAssignedToRole($role_id,true);
if ($rbacreview->isDeleted($rolf[0])
|| ! $rbacsystem->checkAccess('write',$tree->getParentId($rolf[0])))
{
return $this->__raiseError($lng->txt("usrimport_with_specified_role_not_permitted")." $role_name ($role_id)","Server");
}
}
}
}
//print_r ($permitted_roles);
$importParser = new ilUserImportParser("", IL_USER_IMPORT, $conflict_rule);
$importParser->setSendMail($send_account_mail);
$importParser->setUserMappingMode(IL_USER_MAPPING_ID);
$importParser->setFolderId($folder_id);
$importParser->setXMLContent($usr_xml);
$importParser->setRoleAssignment($permitted_roles);
$importParser->startParsing();
if ($importParser->getErrorLevel() != IL_IMPORT_FAILURE)
{
return $this->__getUserMappingAsXML ($importParser->getUserMapping());
}
return $this->__getImportProtocolAsXML ($importParser->getProtocol());
}

+ Here is the call graph for this function:

ilSoapUserAdministration::isPermittedRole (   $a_folder,
  $a_role 
)
protected

check if assignment is allowed

protected

Parameters
@return

Definition at line 828 of file class.ilSoapUserAdministration.php.

References $ilLog, $location, ilObjRole\_getAssignUsersStatus(), elseif(), and USER_FOLDER_ID.

Referenced by importUsers().

{
static $checked_roles = array();
static $global_roles = null;
if(isset($checked_roles[$a_role]))
{
return $checked_roles[$a_role];
}
global $rbacsystem,$rbacreview,$ilUser,$tree,$ilLog;
$locations = $rbacreview->getFoldersAssignedToRole($a_role,true);
$location = $locations[0];
// global role
if($location == ROLE_FOLDER_ID)
{
$ilLog->write(__METHOD__.': Check global role');
// check assignment permission if called from local admin
if($a_folder != USER_FOLDER_ID and $a_folder != 0)
{
$ilLog->write(__METHOD__.': '.$a_folder);
include_once './Services/AccessControl/classes/class.ilObjRole.php';
{
$ilLog->write(__METHOD__.': No assignment allowed');
$checked_roles[$a_role] = false;
return false;
}
}
// exclude anonymous role from list
if ($a_role == ANONYMOUS_ROLE_ID)
{
$ilLog->write(__METHOD__.': Anonymous role chosen.');
$checked_roles[$a_role] = false;
return false;
}
// do not allow to assign users to administrator role if current user does not has SYSTEM_ROLE_ID
if($a_role == SYSTEM_ROLE_ID and !in_array(SYSTEM_ROLE_ID,$rbacreview->assignedRoles($ilUser->getId())))
{
$ilLog->write(__METHOD__.': System role assignment forbidden.');
$checked_roles[$a_role] = false;
return false;
}
// Global role assignment ok
$ilLog->write(__METHOD__.': Assignment allowed.');
$checked_roles[$a_role] = true;
return true;
}
{
$ilLog->write(__METHOD__.': Check local role.');
// It's a local role
$rolfs = $rbacreview->getFoldersAssignedToRole($a_role,true);
$rolf = $rolfs[0];
// only process role folders that are not set to status "deleted"
// and for which the user has write permissions.
// We also don't show the roles which are in the ROLE_FOLDER_ID folder.
// (The ROLE_FOLDER_ID folder contains the global roles).
if($rbacreview->isDeleted($rolf)
|| !$rbacsystem->checkAccess('edit_permission',$tree->getParentId($rolf)))
{
$ilLog->write(__METHOD__.': Role deleted or no permission.');
$checked_roles[$a_role] = false;
return false;
}
// A local role is only displayed, if it is contained in the subtree of
// the localy administrated category. If the import function has been
// invoked from the user folder object, we show all local roles, because
// the user folder object is considered the parent of all local roles.
// Thus, if we start from the user folder object, we initializ$isInSubtree = $folder_id == USER_FOLDER_ID || $folder_id == 0;e the
// isInSubtree variable with true. In all other cases it is initialized
// with false, and only set to true if we find the object id of the
// locally administrated category in the tree path to the local role.
if($a_folder != USER_FOLDER_ID and $a_folder != 0 and !$tree->isGrandChild($a_folder,$rolf))
{
$ilLog->write(__METHOD__.': Not in path of category.');
$checked_roles[$a_role] = false;
return false;
}
$ilLog->write(__METHOD__.': Assignment allowed.');
$checked_roles[$a_role] = true;
return true;
}
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilSoapUserAdministration::login (   $client,
  $username,
  $password 
)

Definition at line 44 of file class.ilSoapUserAdministration.php.

References $_COOKIE, $_POST, $client, $password, ilSoapAdministration\__raiseError(), and ilUtil\setCookie().

Referenced by loginLDAP().

{
$_COOKIE['ilClientId'] = $client;
$_POST['username'] = $username;
$_POST['password'] = $password;
unset($_COOKIE['PHPSESSID']);
include_once './include/inc.header.php';
ilUtil::setCookie('ilClientId',$client);
global $ilUser;
if(!$ilUser->hasAcceptedUserAgreement())
{
return $this->__raiseError('User agreement not accepted', 'Server');
}
return (session_id().'::'.$client);
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilSoapUserAdministration::loginCAS (   $client,
  $PT,
  $username 
)

Definition at line 64 of file class.ilSoapUserAdministration.php.

References $client, ilSoapAdministration\__initAuthenticationObject(), ilSoapAdministration\__raiseError(), and AUTH_CAS.

{
$this->sauth->setClient($client);
$this->sauth->setUsername($username);
$this->sauth->setPT($PT);
$authenticated = true;
//include_once("./Services/CAS/classes/class.ilCASAuth.php");
//include_once("./Services/CAS/phpcas/source/CAS/CAS.php");
if(!$this->sauth->authenticate())
{
$authenticated = false;
}
if(!$authenticated)
{
return $this->__raiseError($this->sauth->getMessage(),$this->sauth->getMessageCode());
}
return $this->sauth->getSid().'::'.$client;
}

+ Here is the call graph for this function:

ilSoapUserAdministration::loginLDAP (   $client,
  $username,
  $password 
)

Definition at line 85 of file class.ilSoapUserAdministration.php.

References $client, $password, and login().

{
return $this->login($client, $username, $password);
}

+ Here is the call graph for this function:

ilSoapUserAdministration::logout (   $sid)

Definition at line 90 of file class.ilSoapUserAdministration.php.

References $ilAuth, ilSoapAdministration\__checkSession(), ilSoapAdministration\__getMessage(), ilSoapAdministration\__getMessageCode(), ilSoapAdministration\__raiseError(), ilSoapAdministration\initAuth(), and ilSoapAdministration\initIlias().

{
$this->initAuth($sid);
$this->initIlias();
if(!$this->__checkSession($sid))
{
return $this->__raiseError($this->__getMessage(),$this->__getMessageCode());
}
global $ilAuth;
$ilAuth->logout();
session_destroy();
return true;
/*
if(!$this->sauth->logout())
{
return $this->__raiseError($this->sauth->getMessage(),$this->sauth->getMessageCode());
}
return true;
*/
}

+ Here is the call graph for this function:

ilSoapUserAdministration::lookupUser (   $sid,
  $user_name 
)

Definition at line 115 of file class.ilSoapUserAdministration.php.

References ilSoapAdministration\__checkSession(), ilSoapAdministration\__getMessage(), ilSoapAdministration\__getMessageCode(), ilSoapAdministration\__raiseError(), ilObjUser\getUserIdByLogin(), ilSoapAdministration\initAuth(), ilSoapAdministration\initIlias(), and USER_FOLDER_ID.

{
$this->initAuth($sid);
$this->initIlias();
if(!$this->__checkSession($sid))
{
return $this->__raiseError($this->__getMessage(),$this->__getMessageCode());
}
if(!strlen($user_name))
{
return $this->__raiseError('No username given. Aborting','Client');
}
global $rbacsystem, $ilUser ;
if($ilUser->getLogin() != $user_name && !$rbacsystem->checkAccess('read',USER_FOLDER_ID))
{
return $this->__raiseError('Check access failed. '.USER_FOLDER_ID,'Server');
}
$user_id = ilObjUser::getUserIdByLogin($user_name);
return $user_id ? $user_id : "0";
}

+ Here is the call graph for this function:

ilSoapUserAdministration::searchUser (   $sid,
  $a_keyfields,
  $query_operator,
  $a_keyvalues,
  $attach_roles,
  $active 
)

return user xml following dtd 3.7

Parameters
String$sidsession id
Stringarray $a_keyfields array of user fieldname, following dtd 3.7
String$queryOperatorany logical operator
Stringarray $a_keyValues values separated by space, at least 3 chars per search term

Definition at line 1150 of file class.ilSoapUserAdministration.php.

References $data, $ilDB, $query, $row, __buildSearchQuery(), ilSoapAdministration\__checkSession(), ilSoapAdministration\__getMessage(), ilSoapAdministration\__getMessageCode(), ilSoapAdministration\__raiseError(), ilSoapAdministration\initAuth(), ilSoapAdministration\initIlias(), and USER_FOLDER_ID.

{
$this->initAuth($sid);
$this->initIlias();
if(!$this->__checkSession($sid))
{
return $this->__raiseError($this->__getMessage(),$this->__getMessageCode());
}
global $ilDB, $rbacsystem;
if(!$rbacsystem->checkAccess('read', USER_FOLDER_ID))
{
return $this->__raiseError('Check access failed.','Server');
}
if (!count($a_keyfields))
$this->__raiseError('At least one keyfield is needed','Client');
if (!count ($a_keyvalues))
$this->__raiseError('At least one keyvalue is needed','Client');
if (!strcasecmp($query_operator,"and")==0 || !strcasecmp($query_operator,"or") == 0)
$this->__raiseError('Query operator must be either \'and\' or \'or\'','Client');
$query = $this->__buildSearchQuery ($a_keyfields, $query_operator, $a_keyvalues);
$query = "SELECT usr_data.*, usr_pref.value AS language
FROM usr_data
LEFT JOIN usr_pref
ON usr_pref.usr_id = usr_data.usr_id AND usr_pref.keyword = ".
$ilDB->quote("language", "text").
"'language'
WHERE 1 = 1 ".$query;
if (is_numeric($active) && $active > -1)
$query .= " AND active = ". $ilDB->quote($active);
$query .= " ORDER BY usr_data.lastname, usr_data.firstname ";
//echo $query;
$r = $ilDB->query($query);
$data = array();
while($row = $ilDB->fetchAssoc($r))
{
$data[] = $row;
}
include_once './Services/User/classes/class.ilUserXMLWriter.php';
$xmlWriter = new ilUserXMLWriter();
$xmlWriter->setAttachRoles($attach_roles);
$xmlWriter->setObjects($data);
if($xmlWriter->start())
{
return $xmlWriter->getXML();
}
return $this->__raiseError('Error in searchUser','Server');
}

+ Here is the call graph for this function:

ilSoapUserAdministration::updatePassword (   $sid,
  $user_id,
  $new_password 
)

Definition at line 223 of file class.ilSoapUserAdministration.php.

References ilSoapAdministration\__checkSession(), ilSoapAdministration\__getMessage(), ilSoapAdministration\__getMessageCode(), ilSoapAdministration\__raiseError(), ilObjectFactory\getInstanceByObjId(), ilSoapAdministration\initAuth(), ilSoapAdministration\initIlias(), and USER_FOLDER_ID.

{
$this->initAuth($sid);
$this->initIlias();
if(!$this->__checkSession($sid))
{
return $this->__raiseError($this->__getMessage(),$this->__getMessageCode());
}
global $rbacsystem;
if(!$rbacsystem->checkAccess('write',USER_FOLDER_ID))
{
return $this->__raiseError('Check access failed.','Server');
}
if(!$tmp_user =& ilObjectFactory::getInstanceByObjId($user_id,false))
{
return $this->__raiseError('No valid user_id given.','Client');
}
$tmp_user->replacePassword($new_password);
return true;
}

+ Here is the call graph for this function:

ilSoapUserAdministration::updateUser (   $sid,
  $user_data 
)

Definition at line 172 of file class.ilSoapUserAdministration.php.

References $log, ilSoapAdministration\__checkSession(), ilSoapAdministration\__getMessage(), ilSoapAdministration\__getMessageCode(), ilSoapAdministration\__raiseError(), __readUserData(), __setUserData(), __substituteUserData(), __validateUserData(), ilObjectFactory\getInstanceByObjId(), IL_PASSWD_MD5, IL_PASSWD_PLAIN, ilSoapAdministration\initAuth(), ilSoapAdministration\initIlias(), and USER_FOLDER_ID.

{
$this->initAuth($sid);
$this->initIlias();
if(!$this->__checkSession($sid))
{
return $this->__raiseError($this->__getMessage(),$this->__getMessageCode());
}
global $rbacsystem, $ilUser, $log;
if(!$rbacsystem->checkAccess('write',USER_FOLDER_ID))
{
return $this->__raiseError('Check access failed.','Server');
}
if(!$user_obj =& ilObjectFactory::getInstanceByObjId($user_data['usr_id'],false))
{
return $this->__raiseError('User with id '.$user_data['usr_id'].' does not exist.','Client');
}
$user_old = $this->__readUserData($user_obj);
$user_new = $this->__substituteUserData($user_old,$user_data);
if(!$this->__validateUserData($user_new,false))
{
return $this->__raiseError($this->__getMessage(),'Client');
}
if(strlen($user_data['passwd']) != 32)
{
$user_new['passwd_type'] = IL_PASSWD_PLAIN;
}
else
{
$user_new['passwd_type'] = IL_PASSWD_MD5;
}
$this->__setUserData($user_obj,$user_new);
$log->write('SOAP: updateUser()');
$user_obj->update();
if($user_data['accepted_agreement'] and !$user_obj->hasAcceptedUserAgreement())
{
$user_obj->writeAccepted();
}
return true;
}

+ Here is the call graph for this function:


The documentation for this class was generated from the following file: