diff --git a/include/functions.inc b/include/functions.inc index add8a6c5d258b7b1bb251b53719fc149f0423f63..78152279a54fad125ebae64a4b65fdc20f009033 100644 --- a/include/functions.inc +++ b/include/functions.inc @@ -435,6 +435,14 @@ function add_lock ($object, $user) $ldap->cd(get_ou('lockRDN').get_ou('fusiondirectoryRDN').$config->current['BASE']); $ldap->search('(&(objectClass=fdLockEntry)(fdUserDn='.ldap_escape_f($user).')(fdObjectDn='.base64_encode($object).'))', ['fdUserDn']); + if ($ldap->get_errno() == 32) { + /* No such object, means the locking branch is missing, create it */ + $ldap->cd($config->current['BASE']); + $ldap->create_missing_trees(get_ou('lockRDN').get_ou('fusiondirectoryRDN').$config->current['BASE']); + $ldap->cd(get_ou('lockRDN').get_ou('fusiondirectoryRDN').$config->current['BASE']); + $ldap->search('(&(objectClass=fdLockEntry)(fdUserDn='.ldap_escape_f($user).')(fdObjectDn='.base64_encode($object).'))', + ['fdUserDn']); + } if (!$ldap->success()) { msg_dialog::display(_('Configuration error'), sprintf(_('Cannot create locking information in LDAP tree. Please contact your administrator!').'<br><br>'._('LDAP server returned: %s'), '<br><br><i>'.$ldap->get_error().'</i>'), ERROR_DIALOG); return;