diff --git a/htdocs/adherents/ldap.php b/htdocs/adherents/ldap.php
index 4b64290f107..70624983815 100644
--- a/htdocs/adherents/ldap.php
+++ b/htdocs/adherents/ldap.php
@@ -158,13 +158,13 @@ print dol_get_fiche_end();
*/
print '
';
-if (!empty($conf->global->LDAP_MEMBER_ACTIVE) && $conf->global->LDAP_MEMBER_ACTIVE != 'ldap2dolibarr') {
+if (!empty($conf->global->LDAP_MEMBER_ACTIVE) && $conf->global->LDAP_MEMBER_ACTIVE != Ldap::SYNCHRO_LDAP_TO_DOLIBARR) {
print '
';
}
print "
\n";
-if (!empty($conf->global->LDAP_MEMBER_ACTIVE) && $conf->global->LDAP_MEMBER_ACTIVE != 'ldap2dolibarr') {
+if (!empty($conf->global->LDAP_MEMBER_ACTIVE) && $conf->global->LDAP_MEMBER_ACTIVE != Ldap::SYNCHRO_LDAP_TO_DOLIBARR) {
print "
\n";
}
diff --git a/htdocs/adherents/type_ldap.php b/htdocs/adherents/type_ldap.php
index 43902a5e1bf..d7650a8de2b 100644
--- a/htdocs/adherents/type_ldap.php
+++ b/htdocs/adherents/type_ldap.php
@@ -124,13 +124,13 @@ print dol_get_fiche_end();
print '\n";
-if ($conf->global->LDAP_MEMBER_TYPE_ACTIVE == 1) {
+if (getDolGlobalInt('LDAP_MEMBER_TYPE_ACTIVE') === Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
print "
\n";
}
diff --git a/htdocs/admin/ldap.php b/htdocs/admin/ldap.php
index 167c48d84c0..99c86f783fc 100644
--- a/htdocs/admin/ldap.php
+++ b/htdocs/admin/ldap.php
@@ -100,7 +100,7 @@ if (empty($reshook)) {
if (!dolibarr_set_const($db, 'LDAP_MEMBER_TYPE_ACTIVE', GETPOST("activememberstypes", 'aZ09'), 'chaine', 0, '', $conf->entity)) {
$error++;
}
- if (!dolibarr_set_const($db, 'LDAP_PASSWORD_HASH_TYPE', GETPOST("'LDAP_PASSWORD_HASH_TYPE'", 'aZ09'), 'chaine', 0, '', $conf->entity)) {
+ if (!dolibarr_set_const($db, 'LDAP_PASSWORD_HASH_TYPE', GETPOST("LDAP_PASSWORD_HASH_TYPE", 'aZ09'), 'chaine', 0, '', $conf->entity)) {
$error++;
}
@@ -150,13 +150,9 @@ print "\n";
// Synchro utilisateurs/groupes active
print '| '.$langs->trans("LDAPDnSynchroActive").' | ';
-$arraylist = array();
-$arraylist['0'] = $langs->trans("No");
-$arraylist['ldap2dolibarr'] = $langs->trans("LDAPToDolibarr");
-$arraylist['dolibarr2ldap'] = $langs->trans("DolibarrToLDAP");
-print $form->selectarray('activesynchro', $arraylist, $conf->global->LDAP_SYNCHRO_ACTIVE);
+print $formldap->selectLdapDnSynchroActive(getDolGlobalInt('LDAP_SYNCHRO_ACTIVE'), 'activesynchro');
print ' | '.$langs->trans("LDAPDnSynchroActiveExample").'';
-if ($conf->global->LDAP_SYNCHRO_ACTIVE && !$conf->global->LDAP_USER_DN) {
+if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && empty($conf->global->LDAP_USER_DN)) {
print ' '.$langs->trans("LDAPSetupNotComplete").'';
}
print ' |
';
@@ -164,32 +160,21 @@ print '';
// Synchro contact active
if (!empty($conf->societe->enabled)) {
print '| '.$langs->trans("LDAPDnContactActive").' | ';
- $arraylist = array();
- $arraylist['0'] = $langs->trans("No");
- $arraylist['1'] = $langs->trans("DolibarrToLDAP");
- print $form->selectarray('activecontact', $arraylist, $conf->global->LDAP_CONTACT_ACTIVE);
+ print $formldap->selectLdapDnSynchroActive(getDolGlobalInt('LDAP_CONTACT_ACTIVE'), 'activecontact', array(Ldap::SYNCHRO_LDAP_TO_DOLIBARR));
print ' | '.$langs->trans("LDAPDnContactActiveExample").' |
';
}
// Synchro member active
if (!empty($conf->adherent->enabled)) {
print '| '.$langs->trans("LDAPDnMemberActive").' | ';
- $arraylist = array();
- $arraylist['0'] = $langs->trans("No");
- $arraylist['1'] = $langs->trans("DolibarrToLDAP");
- $arraylist['ldap2dolibarr'] = $langs->trans("LDAPToDolibarr").' ('.$langs->trans("SupportedForLDAPImportScriptOnly").')';
- print $form->selectarray('activemembers', $arraylist, $conf->global->LDAP_MEMBER_ACTIVE);
+ print $formldap->selectLdapDnSynchroActive(getDolGlobalInt('LDAP_MEMBER_ACTIVE'), 'activemembers', array(), 2);
print ' | '.$langs->trans("LDAPDnMemberActiveExample").' |
';
}
// Synchro member type active
if (!empty($conf->adherent->enabled)) {
print '| '.$langs->trans("LDAPDnMemberTypeActive").' | ';
- $arraylist = array();
- $arraylist['0'] = $langs->trans("No");
- $arraylist['1'] = $langs->trans("DolibarrToLDAP");
- $arraylist['ldap2dolibarr'] = $langs->trans("LDAPToDolibarr").' ('.$langs->trans("SupportedForLDAPImportScriptOnly").')';
- print $form->selectarray('activememberstypes', $arraylist, $conf->global->LDAP_MEMBER_TYPE_ACTIVE);
+ print $formldap->selectLdapDnSynchroActive(getDolGlobalInt('LDAP_MEMBER_TYPE_ACTIVE'), 'activememberstypes', array(), 2);
print ' | '.$langs->trans("LDAPDnMemberTypeActiveExample").' |
';
}
@@ -206,53 +191,39 @@ print "\n";
// Type
print '| '.$langs->trans("Type").' | ';
-$arraylist = array();
-$arraylist['activedirectory'] = 'Active Directory';
-$arraylist['openldap'] = 'OpenLdap';
-$arraylist['egroupware'] = 'Egroupware';
-print $form->selectarray('type', $arraylist, $conf->global->LDAP_SERVER_TYPE);
+print $formldap->selectLdapServerType(getDolGlobalString('LDAP_SERVER_TYPE'), 'type');
print ' | |
';
// Version
print '| '.$langs->trans("Version").' | ';
-$arraylist = array();
-$arraylist['3'] = 'Version 3';
-$arraylist['2'] = 'Version 2';
-print $form->selectarray('LDAP_SERVER_PROTOCOLVERSION', $arraylist, $conf->global->LDAP_SERVER_PROTOCOLVERSION);
+print $formldap->selectLdapServerProtocolVersion(getDolGlobalString('LDAP_SERVER_PROTOCOLVERSION'), 'LDAP_SERVER_PROTOCOLVERSION');
print ' | '.$langs->trans("LDAPServerProtocolVersion").' |
';
// Serveur primaire
print '| ';
print $langs->trans("LDAPPrimaryServer").' | ';
-print '';
+print '';
print ' | '.$langs->trans("LDAPServerExample").' |
';
// Serveur secondaire
print '| ';
print $langs->trans("LDAPSecondaryServer").' | ';
-print '';
+print '';
print ' | '.$langs->trans("LDAPServerExample").' |
';
// Port
print '| '.$langs->trans("LDAPServerPort").' | ';
-if (!empty($conf->global->LDAP_SERVER_PORT)) {
- print '';
-} else {
- print '';
-}
+print '';
print ' | '.$langs->trans("LDAPServerPortExample").' |
';
// DNserver
print '| '.$langs->trans("LDAPServerDn").' | ';
-print '';
+print '';
print ' | '.$langs->trans("LDAPServerDnExample").' |
';
// Utiliser TLS
print '| '.$langs->trans("LDAPServerUseTLS").' | ';
-$arraylist = array();
-$arraylist['0'] = $langs->trans("No");
-$arraylist['1'] = $langs->trans("Yes");
-print $form->selectarray('usetls', $arraylist, $conf->global->LDAP_SERVER_USE_TLS);
+print $form->selectyesno('usetls', getDolGlobalInt('LDAP_SERVER_USE_TLS'), 1);
print ' | '.$langs->trans("LDAPServerUseTLSExample").' |
';
// Password hash type
@@ -267,7 +238,7 @@ print "\n";
// DNAdmin
print '';
print '| '.$langs->trans("LDAPAdminDn").' | ';
-print '';
+print '';
print ' | '.$langs->trans("LDAPAdminDnExample").' |
';
// Pass
@@ -276,7 +247,7 @@ print '| '.$langs->trans("LDAPPassword").' | ';
if (!empty($conf->global->LDAP_ADMIN_PASS)) {
print ''; // je le met en visible pour test
} else {
- print '';
+ print '';
}
print ' | '.$langs->trans('Password').' (ex: secret) |
';
@@ -306,17 +277,17 @@ if (function_exists("ldap_connect")) {
if ($result > 0) {
// Test ldap connect and bind
print img_picto('', 'info').' ';
- print ''.$langs->trans("LDAPTCPConnectOK", $ldap->connectedServer, $conf->global->LDAP_SERVER_PORT).'';
+ print ''.$langs->trans("LDAPTCPConnectOK", $ldap->connectedServer, getDolGlobalString('LDAP_SERVER_PORT')).'';
print '
';
if (!empty($conf->global->LDAP_ADMIN_DN) && !empty($conf->global->LDAP_ADMIN_PASS)) {
if ($result == 2) {
print img_picto('', 'info').' ';
- print ''.$langs->trans("LDAPBindOK", $ldap->connectedServer, $conf->global->LDAP_SERVER_PORT, $conf->global->LDAP_ADMIN_DN, preg_replace('/./i', '*', $conf->global->LDAP_ADMIN_PASS)).'';
+ print ''.$langs->trans("LDAPBindOK", $ldap->connectedServer, getDolGlobalString('LDAP_SERVER_PORT'), $conf->global->LDAP_ADMIN_DN, preg_replace('/./i', '*', $conf->global->LDAP_ADMIN_PASS)).'';
print '
';
} else {
print img_picto('', 'error').' ';
- print ''.$langs->trans("LDAPBindKO", $ldap->connectedServer, $conf->global->LDAP_SERVER_PORT, $conf->global->LDAP_ADMIN_DN, preg_replace('/./i', '*', $conf->global->LDAP_ADMIN_PASS)).'';
+ print ''.$langs->trans("LDAPBindKO", $ldap->connectedServer, getDolGlobalString('LDAP_SERVER_PORT'), $conf->global->LDAP_ADMIN_DN, preg_replace('/./i', '*', $conf->global->LDAP_ADMIN_PASS)).'';
print '
';
print $langs->trans("Error").' '.$ldap->error;
print '
';
@@ -342,7 +313,7 @@ if (function_exists("ldap_connect")) {
$ldap->unbind();
} else {
print img_picto('', 'error').' ';
- print ''.$langs->trans("LDAPTCPConnectKO", $ldap->connectedServer, $conf->global->LDAP_SERVER_PORT).'';
+ print ''.$langs->trans("LDAPTCPConnectKO", $ldap->connectedServer, getDolGlobalString('LDAP_SERVER_PORT')).'';
print '
';
print $langs->trans("Error").' '.$ldap->error;
print '
';
diff --git a/htdocs/admin/ldap_groups.php b/htdocs/admin/ldap_groups.php
index 82ee85b9a20..5723183735e 100644
--- a/htdocs/admin/ldap_groups.php
+++ b/htdocs/admin/ldap_groups.php
@@ -218,7 +218,7 @@ print '';
/*
* Test de la connexion
*/
-if ($conf->global->LDAP_SYNCHRO_ACTIVE == 'dolibarr2ldap') {
+if (getDolGlobalInt('LDAP_SYNCHRO_ACTIVE') === Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
$butlabel = $langs->trans("LDAPTestSynchroGroup");
$testlabel = 'testgroup';
$key = $conf->global->LDAP_KEY_GROUPS;
@@ -226,7 +226,7 @@ if ($conf->global->LDAP_SYNCHRO_ACTIVE == 'dolibarr2ldap') {
$objectclass = $conf->global->LDAP_GROUP_OBJECT_CLASS;
show_ldap_test_button($butlabel, $testlabel, $key, $dn, $objectclass);
-} elseif ($conf->global->LDAP_SYNCHRO_ACTIVE == 'ldap2dolibarr') {
+} elseif (getDolGlobalInt('LDAP_SYNCHRO_ACTIVE') === Ldap::SYNCHRO_LDAP_TO_DOLIBARR) {
$butlabel = $langs->trans("LDAPTestSearch");
$testlabel = 'testsearchgroup';
$key = $conf->global->LDAP_KEY_GROUPS;
diff --git a/htdocs/admin/ldap_members_types.php b/htdocs/admin/ldap_members_types.php
index 05572dc8bbf..7933b59d5e0 100644
--- a/htdocs/admin/ldap_members_types.php
+++ b/htdocs/admin/ldap_members_types.php
@@ -188,7 +188,7 @@ print '';
/*
* Test de la connexion
*/
-if ($conf->global->LDAP_MEMBER_TYPE_ACTIVE == '1') {
+if (getDolGlobalInt('LDAP_MEMBER_TYPE_ACTIVE') === Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
$butlabel = $langs->trans("LDAPTestSynchroMemberType");
$testlabel = 'testmembertype';
$key = $conf->global->LDAP_KEY_MEMBERS_TYPES;
diff --git a/htdocs/admin/ldap_users.php b/htdocs/admin/ldap_users.php
index 33bec1cb2e8..f395eb88fb4 100644
--- a/htdocs/admin/ldap_users.php
+++ b/htdocs/admin/ldap_users.php
@@ -405,7 +405,7 @@ print '';
/*
* Test de la connexion
*/
-if (getDolGlobalString('LDAP_SYNCHRO_ACTIVE') == 'dolibarr2ldap') {
+if (getDolGlobalString('LDAP_SYNCHRO_ACTIVE') == Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
$butlabel = $langs->trans("LDAPTestSynchroUser");
$testlabel = 'testuser';
$key = getDolGlobalString('LDAP_KEY_USERS');
@@ -413,7 +413,7 @@ if (getDolGlobalString('LDAP_SYNCHRO_ACTIVE') == 'dolibarr2ldap') {
$objectclass = getDolGlobalString('LDAP_USER_OBJECT_CLASS');
show_ldap_test_button($butlabel, $testlabel, $key, $dn, $objectclass);
-} elseif (getDolGlobalString('LDAP_SYNCHRO_ACTIVE') == 'ldap2dolibarr') {
+} elseif (getDolGlobalString('LDAP_SYNCHRO_ACTIVE') == Ldap::SYNCHRO_LDAP_TO_DOLIBARR) {
$butlabel = $langs->trans("LDAPTestSearch");
$testlabel = 'testsearchuser';
$key = getDolGlobalString('LDAP_KEY_USERS');
diff --git a/htdocs/contact/ldap.php b/htdocs/contact/ldap.php
index d29aab0386b..92b9c1ad337 100644
--- a/htdocs/contact/ldap.php
+++ b/htdocs/contact/ldap.php
@@ -136,13 +136,13 @@ print dol_get_fiche_end();
*/
print '\n";
-if (!empty($conf->global->LDAP_CONTACT_ACTIVE) && $conf->global->LDAP_CONTACT_ACTIVE != 'ldap2dolibarr') {
+if (!empty($conf->global->LDAP_CONTACT_ACTIVE) && $conf->global->LDAP_CONTACT_ACTIVE != Ldap::SYNCHRO_LDAP_TO_DOLIBARR) {
print "
\n";
}
diff --git a/htdocs/core/class/conf.class.php b/htdocs/core/class/conf.class.php
index 044dc192426..cf54151d2d6 100644
--- a/htdocs/core/class/conf.class.php
+++ b/htdocs/core/class/conf.class.php
@@ -775,8 +775,8 @@ class Conf
$this->contrat->services->expires->warning_delay = (isset($this->global->MAIN_DELAY_RUNNING_SERVICES) ? $this->global->MAIN_DELAY_RUNNING_SERVICES : 0) * 86400;
}
if (isset($this->commande)) {
- $this->bank->rappro = new stdClass();
- $this->bank->cheque = new stdClass();
+ $this->bank->rappro = new stdClass();
+ $this->bank->cheque = new stdClass();
$this->bank->rappro->warning_delay = (isset($this->global->MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE) ? $this->global->MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE : 0) * 86400;
$this->bank->cheque->warning_delay = (isset($this->global->MAIN_DELAY_CHEQUES_TO_DEPOSIT) ? $this->global->MAIN_DELAY_CHEQUES_TO_DEPOSIT : 0) * 86400;
}
@@ -845,6 +845,23 @@ class Conf
}
}
+ // For backward compatibility
+ if (!empty($this->global->LDAP_SYNCHRO_ACTIVE)) {
+ if ($this->global->LDAP_SYNCHRO_ACTIVE == 'dolibarr2ldap') {
+ $this->global->LDAP_SYNCHRO_ACTIVE = 1;
+ } else if ($this->global->LDAP_SYNCHRO_ACTIVE == 'ldap2dolibarr') {
+ $this->global->LDAP_SYNCHRO_ACTIVE = 2;
+ }
+ }
+ // For backward compatibility
+ if (!empty($this->global->LDAP_MEMBER_ACTIVE) && $this->global->LDAP_MEMBER_ACTIVE == 'ldap2dolibarr') {
+ $this->global->LDAP_MEMBER_ACTIVE = 2;
+ }
+ // For backward compatibility
+ if (!empty($this->global->LDAP_MEMBER_TYPE_ACTIVE) && $this->global->LDAP_MEMBER_TYPE_ACTIVE == 'ldap2dolibarr') {
+ $this->global->LDAP_MEMBER_TYPE_ACTIVE = 2;
+ }
+
if (!empty($this->global->MAIN_TZUSERINPUTKEY)) {
$this->tzuserinputkey = $this->global->MAIN_TZUSERINPUTKEY; // 'tzserver' or 'tzuserrel'
}
diff --git a/htdocs/core/class/html.formldap.class.php b/htdocs/core/class/html.formldap.class.php
new file mode 100644
index 00000000000..acee0bbbea7
--- /dev/null
+++ b/htdocs/core/class/html.formldap.class.php
@@ -0,0 +1,196 @@
+
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+/**
+ * \file htdocs/core/class/html.formldap.class.php
+ * \ingroup core
+ * \brief File of class with ldap html predefined components
+ */
+require_once DOL_DOCUMENT_ROOT.'/core/class/html.form.class.php';
+
+/**
+ * Class to manage generation of HTML components for ldap module
+ */
+class FormLdap
+{
+ /**
+ * @var DoliDB Database handler.
+ */
+ public $db;
+
+ /**
+ * @var string Error code (or message)
+ */
+ public $error = '';
+
+ /**
+ * @var string[] Array of error strings
+ */
+ public $errors = array();
+
+
+ /**
+ * Constructor
+ *
+ * @param DoliDB $db Database handler
+ */
+ public function __construct($db)
+ {
+ global $langs, $form;
+
+ if (!is_object($form)) {
+ $form = new Form($this->db);
+ }
+
+ $langs->loadLangs(array("admin", "ldap"));
+
+ $this->db = $db;
+ }
+
+ /**
+ * Return list of types of hash
+ *
+ * @param string $selected Preselected type
+ * @param string $htmlname Name of field in form
+ * @param int $showempty Add an empty field
+ * @return string HTML select string
+ */
+ public function selectLdapPasswordHashType($selected = 'md5', $htmlname = 'ldaphashtype', $showempty = 0)
+ {
+ global $form;
+
+ if (empty($selected)) {
+ $selected = 'md5';
+ }
+ if (empty($htmlname)) {
+ $htmlname = 'ldaphashtype';
+ }
+
+ $arraylist = array(
+ "pbkdf2sha256" => "PBKDF2_SHA256",
+ "ssha512" => "SSHA512",
+ "ssha256" => "SSHA256",
+ "ssha" => "SSHA",
+ "sha" => "SHA",
+ "md5" => "MD5",
+ "smd5" => "SMD5",
+ "cryptmd5" => "CRYPT-MD5",
+ "cryptsha512" => "CRYPT-SHA512",
+ "cryptsha256" => "CRYPT-SHA256",
+ "crypt" => "CRYPT",
+ "clear" => "CLEAR"
+ );
+
+ return $form->selectarray($htmlname, $arraylist, $selected, $showempty);
+ }
+
+ /**
+ * Return list of type of synchronization
+ *
+ * @param int $selected Preselected type
+ * @param string $htmlname Name of field in form
+ * @param array $exclude Exclude values from the list
+ * @param int $scriptonly Add warning if synchro only work with a script (0 = disable, 1 = Dolibarr2ldap, 2 = ldap2dolibarr, 3 = all)
+ * @param int $showempty Add an empty field
+ * @return string HTML select string
+ */
+ public function selectLdapDnSynchroActive($selected = 0, $htmlname = 'activesynchro', $exclude = array(), $scriptonly = 0, $showempty = 0)
+ {
+ global $langs, $form;
+
+ if (empty($selected)) {
+ $selected = Ldap::SYNCHRO_NONE;
+ }
+ if (empty($htmlname)) {
+ $htmlname = 'activesynchro';
+ }
+
+ $dolibarr2ldaplabel = $langs->trans("DolibarrToLDAP") . (($scriptonly == 1 || $scriptonly == 3) ? " (".$langs->trans("SupportedForLDAPExportScriptOnly").")" : "");
+ $ldap2dolibarrlabel = $langs->trans("LDAPToDolibarr") . (($scriptonly == 2 || $scriptonly == 3) ? " (".$langs->trans("SupportedForLDAPImportScriptOnly").")" : "");
+
+ $arraylist = array(
+ Ldap::SYNCHRO_NONE => $langs->trans("No"),
+ Ldap::SYNCHRO_DOLIBARR_TO_LDAP => $dolibarr2ldaplabel,
+ Ldap::SYNCHRO_LDAP_TO_DOLIBARR => $ldap2dolibarrlabel
+ );
+
+ if (is_array($exclude) && !empty($exclude)) {
+ foreach($exclude as $value) {
+ if (array_key_exists($value, $arraylist)) {
+ unset($arraylist[$value]);
+ }
+ }
+ }
+
+ return $form->selectarray($htmlname, $arraylist, $selected, $showempty);
+ }
+
+ /**
+ * Return list of ldap server types
+ *
+ * @param string $selected Preselected type
+ * @param string $htmlname Name of field in form
+ * @param int $showempty Add an empty field
+ * @return string HTML select string
+ */
+ public function selectLdapServerType($selected = 'openldap', $htmlname = 'type', $showempty = 0)
+ {
+ global $form;
+
+ if (empty($selected)) {
+ $selected = 'openldap';
+ }
+ if (empty($htmlname)) {
+ $htmlname = 'type';
+ }
+
+ $arraylist = array(
+ 'activedirectory' => 'Active Directory',
+ 'openldap' => 'OpenLdap',
+ 'egroupware' => 'Egroupware'
+ );
+
+ return $form->selectarray($htmlname, $arraylist, $selected, $showempty);
+ }
+
+ /**
+ * Return list of ldap server protocol version
+ *
+ * @param string $selected Preselected type
+ * @param string $htmlname Name of field in form
+ * @param int $showempty Add an empty field
+ * @return string HTML select string
+ */
+ public function selectLdapServerProtocolVersion($selected = '3', $htmlname = 'ldapprotocolversion', $showempty = 0)
+ {
+ global $form;
+
+ if (empty($selected)) {
+ $selected = '3';
+ }
+ if (empty($htmlname)) {
+ $htmlname = 'ldapprotocolversion';
+ }
+
+ $arraylist = array(
+ '3' => 'Version 3',
+ '2' => 'Version 2'
+ );
+
+ return $form->selectarray($htmlname, $arraylist, $selected, $showempty);
+ }
+}
diff --git a/htdocs/core/class/ldap.class.php b/htdocs/core/class/ldap.class.php
index a1921ea2217..bd0ccbee5ac 100644
--- a/htdocs/core/class/ldap.class.php
+++ b/htdocs/core/class/ldap.class.php
@@ -122,6 +122,21 @@ class Ldap
*/
public $result;
+ /**
+ * No Ldap synchronization
+ */
+ const SYNCHRO_NONE = 0;
+
+ /**
+ * Dolibarr to Ldap synchronization
+ */
+ const SYNCHRO_DOLIBARR_TO_LDAP = 1;
+
+ /**
+ * Ldap to Dolibarr synchronization
+ */
+ const SYNCHRO_LDAP_TO_DOLIBARR = 2;
+
/**
* Constructor
@@ -230,7 +245,7 @@ class Ldap
dol_syslog(get_class($this)."::connect_bind failed to start tls", LOG_WARNING);
$this->error = 'ldap_start_tls Failed to start TLS '.ldap_errno($this->connection).' '.ldap_error($this->connection);
$connected = 0;
- $this->close();
+ $this->unbind();
}
}
@@ -279,7 +294,7 @@ class Ldap
}
if (!$connected) {
- $this->close();
+ $this->unbind();
}
}
}
diff --git a/htdocs/core/login/functions_ldap.php b/htdocs/core/login/functions_ldap.php
index 2d55ca2815b..5ae3af3f008 100644
--- a/htdocs/core/login/functions_ldap.php
+++ b/htdocs/core/login/functions_ldap.php
@@ -181,7 +181,7 @@ function check_user_password_ldap($usertotest, $passwordtotest, $entitytotest)
}
// ldap2dolibarr synchronisation
- if ($login && !empty($conf->ldap->enabled) && $conf->global->LDAP_SYNCHRO_ACTIVE == 'ldap2dolibarr') { // ldap2dolibarr synchronisation
+ if ($login && !empty($conf->ldap->enabled) && $conf->global->LDAP_SYNCHRO_ACTIVE == Ldap::SYNCHRO_LDAP_TO_DOLIBARR) { // ldap2dolibarr synchronization
dol_syslog("functions_ldap::check_user_password_ldap Sync ldap2dolibarr");
// On charge les attributs du user ldap
diff --git a/htdocs/core/triggers/interface_50_modLdap_Ldapsynchro.class.php b/htdocs/core/triggers/interface_50_modLdap_Ldapsynchro.class.php
index d4db5ebccfc..24df646efd6 100644
--- a/htdocs/core/triggers/interface_50_modLdap_Ldapsynchro.class.php
+++ b/htdocs/core/triggers/interface_50_modLdap_Ldapsynchro.class.php
@@ -81,7 +81,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
// Users
if ($action == 'USER_CREATE') {
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
- if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap') {
+ if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && getDolGlobalInt('LDAP_SYNCHRO_ACTIVE') === Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
$ldap = new Ldap();
$result = $ldap->connect_bind();
@@ -98,7 +98,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
}
} elseif ($action == 'USER_MODIFY') {
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
- if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap') {
+ if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && getDolGlobalInt('LDAP_SYNCHRO_ACTIVE') === Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
$ldap = new Ldap();
$result = $ldap->connect_bind();
@@ -177,7 +177,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
}
} elseif ($action == 'USER_NEW_PASSWORD') {
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
- if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap') {
+ if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && getDolGlobalInt('LDAP_SYNCHRO_ACTIVE') === Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
$ldap = new Ldap();
$result = $ldap->connect_bind();
@@ -212,7 +212,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
} elseif ($action == 'USER_DELETE') {
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
- if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap') {
+ if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && getDolGlobalInt('LDAP_SYNCHRO_ACTIVE') === Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
$ldap = new Ldap();
$result = $ldap->connect_bind();
@@ -229,7 +229,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
}
/*} elseif ($action == 'USER_SETINGROUP') {
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
- if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap') {
+ if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && getDolGlobalInt('LDAP_SYNCHRO_ACTIVE') === Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
$ldap = new Ldap();
$result = $ldap->connect_bind();
@@ -263,7 +263,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
}
} elseif ($action == 'USER_REMOVEFROMGROUP') {
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
- if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap') {
+ if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && getDolGlobalInt('LDAP_SYNCHRO_ACTIVE') === Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
$ldap = new Ldap();
$result = $ldap->connect_bind();
@@ -298,7 +298,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
} elseif ($action == 'USERGROUP_CREATE') {
// Groupes
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
- if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap') {
+ if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && getDolGlobalInt('LDAP_SYNCHRO_ACTIVE') === Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
$ldap = new Ldap();
$result = $ldap->connect_bind();
@@ -320,7 +320,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
}
} elseif ($action == 'USERGROUP_MODIFY') {
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
- if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap') {
+ if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && getDolGlobalInt('LDAP_SYNCHRO_ACTIVE') === Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
$ldap = new Ldap();
$result = $ldap->connect_bind();
@@ -353,7 +353,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
}
} elseif ($action == 'USERGROUP_DELETE') {
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
- if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap') {
+ if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && getDolGlobalInt('LDAP_SYNCHRO_ACTIVE') === Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
$ldap = new Ldap();
$result = $ldap->connect_bind();
@@ -439,7 +439,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
} elseif ($action == 'MEMBER_CREATE') {
// Members
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
- if (!empty($conf->global->LDAP_MEMBER_ACTIVE) && (string) $conf->global->LDAP_MEMBER_ACTIVE == '1') {
+ if (!empty($conf->global->LDAP_MEMBER_ACTIVE) && $conf->global->LDAP_MEMBER_ACTIVE == Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
$ldap = new Ldap();
$result = $ldap->connect_bind();
@@ -450,7 +450,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
$result = $ldap->add($dn, $info, $user);
// For member type
- if (!empty($conf->global->LDAP_MEMBER_TYPE_ACTIVE) && (string) $conf->global->LDAP_MEMBER_TYPE_ACTIVE == '1') {
+ if (!empty($conf->global->LDAP_MEMBER_TYPE_ACTIVE) && getDolGlobalInt('LDAP_MEMBER_TYPE_ACTIVE') === Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
if ($object->typeid > 0) {
require_once DOL_DOCUMENT_ROOT."/adherents/class/adherent_type.class.php";
$membertype = new AdherentType($this->db);
@@ -482,7 +482,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
}
} elseif ($action == 'MEMBER_VALIDATE') {
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
- if (!empty($conf->global->LDAP_MEMBER_ACTIVE) && (string) $conf->global->LDAP_MEMBER_ACTIVE == '1') {
+ if (!empty($conf->global->LDAP_MEMBER_ACTIVE) && (string) $conf->global->LDAP_MEMBER_ACTIVE == Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
// If status field is setup to be synchronized
if (!empty($conf->global->LDAP_FIELD_MEMBER_STATUS)) {
$ldap = new Ldap();
@@ -503,7 +503,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
}
} elseif ($action == 'MEMBER_SUBSCRIPTION') {
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
- if (!empty($conf->global->LDAP_MEMBER_ACTIVE) && (string) $conf->global->LDAP_MEMBER_ACTIVE == '1') {
+ if (!empty($conf->global->LDAP_MEMBER_ACTIVE) && (string) $conf->global->LDAP_MEMBER_ACTIVE == Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
// If subscriptions fields are setup to be synchronized
if ($conf->global->LDAP_FIELD_MEMBER_FIRSTSUBSCRIPTION_DATE
|| $conf->global->LDAP_FIELD_MEMBER_FIRSTSUBSCRIPTION_AMOUNT
@@ -528,7 +528,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
}
} elseif ($action == 'MEMBER_MODIFY') {
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
- if (!empty($conf->global->LDAP_MEMBER_ACTIVE) && (string) $conf->global->LDAP_MEMBER_ACTIVE == '1') {
+ if (!empty($conf->global->LDAP_MEMBER_ACTIVE) && (string) $conf->global->LDAP_MEMBER_ACTIVE == Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
$ldap = new Ldap();
$result = $ldap->connect_bind();
@@ -557,7 +557,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
$result = $ldap->update($dn, $info, $user, $olddn, $newrdn, $newparent);
// For member type
- if (!empty($conf->global->LDAP_MEMBER_TYPE_ACTIVE) && (string) $conf->global->LDAP_MEMBER_TYPE_ACTIVE == '1') {
+ if (!empty($conf->global->LDAP_MEMBER_TYPE_ACTIVE) && getDolGlobalInt('LDAP_MEMBER_TYPE_ACTIVE') === Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
require_once DOL_DOCUMENT_ROOT."/adherents/class/adherent_type.class.php";
/*
@@ -616,7 +616,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
}
} elseif ($action == 'MEMBER_NEW_PASSWORD') {
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
- if (!empty($conf->global->LDAP_MEMBER_ACTIVE) && (string) $conf->global->LDAP_MEMBER_ACTIVE == '1') {
+ if (!empty($conf->global->LDAP_MEMBER_ACTIVE) && (string) $conf->global->LDAP_MEMBER_ACTIVE == Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
// If password field is setup to be synchronized
if ($conf->global->LDAP_FIELD_PASSWORD || $conf->global->LDAP_FIELD_PASSWORD_CRYPTED) {
$ldap = new Ldap();
@@ -637,7 +637,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
}
} elseif ($action == 'MEMBER_RESILIATE') {
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
- if (!empty($conf->global->LDAP_MEMBER_ACTIVE) && (string) $conf->global->LDAP_MEMBER_ACTIVE == '1') {
+ if (!empty($conf->global->LDAP_MEMBER_ACTIVE) && (string) $conf->global->LDAP_MEMBER_ACTIVE == Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
// If status field is setup to be synchronized
if (!empty($conf->global->LDAP_FIELD_MEMBER_STATUS)) {
$ldap = new Ldap();
@@ -658,7 +658,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
}
} elseif ($action == 'MEMBER_DELETE') {
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
- if (!empty($conf->global->LDAP_MEMBER_ACTIVE) && (string) $conf->global->LDAP_MEMBER_ACTIVE == '1') {
+ if (!empty($conf->global->LDAP_MEMBER_ACTIVE) && (string) $conf->global->LDAP_MEMBER_ACTIVE == Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
$ldap = new Ldap();
$result = $ldap->connect_bind();
@@ -669,7 +669,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
$result = $ldap->delete($dn);
// For member type
- if (!empty($conf->global->LDAP_MEMBER_TYPE_ACTIVE) && (string) $conf->global->LDAP_MEMBER_TYPE_ACTIVE == '1') {
+ if (!empty($conf->global->LDAP_MEMBER_TYPE_ACTIVE) && getDolGlobalInt('LDAP_MEMBER_TYPE_ACTIVE') === Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
if ($object->typeid > 0) {
require_once DOL_DOCUMENT_ROOT."/adherents/class/adherent_type.class.php";
@@ -706,7 +706,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
} elseif ($action == 'MEMBER_TYPE_CREATE') {
// Members types
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
- if (!empty($conf->global->LDAP_MEMBER_TYPE_ACTIVE) && (string) $conf->global->LDAP_MEMBER_TYPE_ACTIVE == '1') {
+ if (!empty($conf->global->LDAP_MEMBER_TYPE_ACTIVE) && getDolGlobalInt('LDAP_MEMBER_TYPE_ACTIVE') === Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
$ldap = new Ldap();
$result = $ldap->connect_bind();
@@ -728,7 +728,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
}
} elseif ($action == 'MEMBER_TYPE_MODIFY') {
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
- if (!empty($conf->global->LDAP_MEMBER_TYPE_ACTIVE) && (string) $conf->global->LDAP_MEMBER_TYPE_ACTIVE == '1') {
+ if (!empty($conf->global->LDAP_MEMBER_TYPE_ACTIVE) && getDolGlobalInt('LDAP_MEMBER_TYPE_ACTIVE') === Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
$ldap = new Ldap();
$result = $ldap->connect_bind();
@@ -765,7 +765,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
}
} elseif ($action == 'MEMBER_TYPE_DELETE') {
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
- if (!empty($conf->global->LDAP_MEMBER_TYPE_ACTIVE) && (string) $conf->global->LDAP_MEMBER_TYPE_ACTIVE == '1') {
+ if (!empty($conf->global->LDAP_MEMBER_TYPE_ACTIVE) && getDolGlobalInt('LDAP_MEMBER_TYPE_ACTIVE') === Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
$ldap = new Ldap();
$result = $ldap->connect_bind();
diff --git a/htdocs/langs/en_US/ldap.lang b/htdocs/langs/en_US/ldap.lang
index b13e454159d..19dd29e0a51 100644
--- a/htdocs/langs/en_US/ldap.lang
+++ b/htdocs/langs/en_US/ldap.lang
@@ -26,4 +26,6 @@ ForceSynchronize=Force synchronizing Dolibarr -> LDAP
ErrorFailedToReadLDAP=Failed to read LDAP database. Check LDAP module setup and database accessibility.
PasswordOfUserInLDAP=Password of user in LDAP
LDAPPasswordHashType=Password hash type
-LDAPPasswordHashTypeExample=Type of password hash used on the server
\ No newline at end of file
+LDAPPasswordHashTypeExample=Type of password hash used on the server
+SupportedForLDAPExportScriptOnly=Only supported by an ldap export script
+SupportedForLDAPImportScriptOnly=Only supported by an ldap import script
\ No newline at end of file
diff --git a/htdocs/user/card.php b/htdocs/user/card.php
index e3a72384050..da4cbf5fac0 100644
--- a/htdocs/user/card.php
+++ b/htdocs/user/card.php
@@ -731,7 +731,7 @@ if ($action == 'create' || $action == 'adduserldap') {
print "
";
- if (!empty($conf->ldap->enabled) && (isset($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE == 'ldap2dolibarr')) {
+ if (!empty($conf->ldap->enabled) && (isset($conf->global->LDAP_SYNCHRO_ACTIVE) && getDolGlobalInt('LDAP_SYNCHRO_ACTIVE') === Ldap::SYNCHRO_LDAP_TO_DOLIBARR)) {
// Show form to add an account from LDAP if sync LDAP -> Dolibarr is set
$ldap = new Ldap();
$result = $ldap->connect_bind();
diff --git a/htdocs/user/group/ldap.php b/htdocs/user/group/ldap.php
index d8d1995a847..e3a01f27731 100644
--- a/htdocs/user/group/ldap.php
+++ b/htdocs/user/group/ldap.php
@@ -147,13 +147,13 @@ print dol_get_fiche_end();
*/
print '\n";
-if ($conf->global->LDAP_SYNCHRO_ACTIVE == 'dolibarr2ldap') {
+if (getDolGlobalInt('LDAP_SYNCHRO_ACTIVE') === Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
print "
\n";
}
diff --git a/htdocs/user/ldap.php b/htdocs/user/ldap.php
index 8e12bf1b461..66199e9b3f6 100644
--- a/htdocs/user/ldap.php
+++ b/htdocs/user/ldap.php
@@ -153,13 +153,13 @@ print dol_get_fiche_end();
*/
print '\n";
-if ($conf->global->LDAP_SYNCHRO_ACTIVE == 'dolibarr2ldap') {
+if (getDolGlobalInt('LDAP_SYNCHRO_ACTIVE') === Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
print "
\n";
}