diff --git a/public_html/includes/addons/LSaddons.posix.php b/public_html/includes/addons/LSaddons.posix.php
index 9e4b5c5a..e59d036f 100644
--- a/public_html/includes/addons/LSaddons.posix.php
+++ b/public_html/includes/addons/LSaddons.posix.php
@@ -35,18 +35,18 @@ LSerror :: defineError('POSIX_SUPPORT_02',
LSerror :: defineError('POSIX_01',
_("POSIX : The attribute %{dependency} is missing. Unable to forge the attribute %{attr}.")
);
-
+
/**
* Verification du support POSIX par ldapSaisie
- *
+ *
* @author Benjamin Renard
*
* @retval boolean true si POSIX est pleinement supporté, false sinon
*/
function LSaddon_posix_support() {
-
+
$retval=true;
-
+
// Dependance de librairie
if (!function_exists('createDirsByFTP')) {
if(!LSsession :: loadLSaddon('ftp')) {
@@ -82,9 +82,9 @@ LSerror :: defineError('POSIX_01',
/**
* Generation de uidNumber
- *
+ *
* @author Benjamin Renard
- *
+ *
* @param[in] $ldapObject L'objet ldap
*
* @retval integer uidNumber ou false si il y a un problème durant la génération
@@ -117,9 +117,9 @@ LSerror :: defineError('POSIX_01',
/**
* Generation de gidNumber
- *
+ *
* @author Benjamin Renard
- *
+ *
* @param[in] $ldapObject L'objet ldap
*
* @retval integer gidNumber ou false si il y a un problème durant la génération
@@ -152,9 +152,9 @@ LSerror :: defineError('POSIX_01',
/**
* Generation de homeDirectory
- *
+ *
* @author Benjamin Renard
- *
+ *
* @param[in] $ldapObject L'objet ldap
*
* @retval string homeDirectory ou false si il y a un problème durant la génération
@@ -164,18 +164,18 @@ LSerror :: defineError('POSIX_01',
LSerror :: addErrorCode('POSIX_01',array('dependency' => 'uid', 'attr' => 'homeDirectory'));
return;
}
-
+
$uid = $ldapObject -> attrs[ LS_POSIX_UID_ATTR ] -> getValue();
$home = LS_POSIX_HOMEDIRECTORY . $uid[0];
return $home;
}
-
+
/**
* Generation de homeDirectory
- *
+ *
* @author Benjamin Renard
- *
+ *
* @param[in] $ldapObject L'objet ldap
*
* @retval string homeDirectory ou false si il y a un problème durant la génération
@@ -189,7 +189,19 @@ LSerror :: defineError('POSIX_01',
return true;
}
-function generateMemberFromMemberUid($ldapObject) {
+ /**
+ * Generate member attribute value from memberUid
+ *
+ * IMPORTANT : The attribute memberUid must be define in configuration
+ * of the same object and must use HTML type select_object.
+ *
+ * @author Benjamin Renard
+ *
+ * @param[in] $ldapObject The LSldapObject
+ *
+ * @retval array|null array of member attribute values or null in case of error
+ */
+ function generateMemberFromMemberUid($ldapObject) {
if ( get_class($ldapObject -> attrs[ 'memberUid' ]) != 'LSattribute' ) {
LSerror :: addErrorCode('POSIX_01',array('dependency' => 'memberUid', 'attr' => 'member'));
return;
@@ -200,18 +212,34 @@ function generateMemberFromMemberUid($ldapObject) {
return;
}
+ $obj_type=LSconfig::get('LSobjects.'.get_class($ldapObject).'.attrs.memberUid.html_options.selectable_object.object_type');
+ if (empty($obj_type))
+ return;
+
$uids = $ldapObject -> attrs[ 'memberUid' ] -> getValue();
$member = array();
if (is_array($uids)) {
foreach ( $uids as $uid ) {
- $member[]='uid='.$uid.','.LSconfig::get('LSobjets.LSehessPerson.container_dn').','.LSsession::getTopDn();
+ $member[]='uid='.$uid.','.LSconfig::get('LSobjects.'.$obj_type.'.container_dn').','.LSsession::getTopDn();
}
}
return $member;
}
-function generate_memberUidFromUniqueMember($ldapObject) {
+ /**
+ * Generate memberUid attribute value from uniqueMember
+ *
+ * IMPORTANT : The attribute uniqueMember must be define in configuration
+ * of the same object.
+ *
+ * @author Benjamin Renard
+ *
+ * @param[in] $ldapObject The LSldapObject
+ *
+ * @retval array|null array of memberUid values or null in case of error
+ */
+ function generate_memberUidFromUniqueMember($ldapObject) {
if ( get_class($ldapObject -> attrs[ 'memberUid' ]) != 'LSattribute' ) {
LSerror :: addErrorCode('POSIX_01',array('dependency' => 'memberUid', 'attr' => 'memberUid'));
return;
@@ -232,7 +260,5 @@ function generate_memberUidFromUniqueMember($ldapObject) {
}
}
return $uids;
-}
+ }
-
-?>