diff --git a/htdocs/adherents/adherent.class.php b/htdocs/adherents/adherent.class.php
index d32dc75b5b9..1ba8dbfd639 100644
--- a/htdocs/adherents/adherent.class.php
+++ b/htdocs/adherents/adherent.class.php
@@ -737,7 +737,8 @@ class Adherent
$sql.= " FROM ".MAIN_DB_PREFIX."adherent_type as t, ".MAIN_DB_PREFIX."adherent as d";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_pays as p ON d.pays = p.rowid";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."user as u ON d.rowid = u.fk_member";
- $sql.= " WHERE d.rowid = ".$rowid." AND d.fk_adherent_type = t.rowid";
+ $sql.= " WHERE d.fk_adherent_type = t.rowid";
+ $sql.= " AND d.rowid = ".$rowid;
dolibarr_syslog("Adherent::fetch sql=".$sql);
$resql=$this->db->query($sql);
@@ -747,7 +748,7 @@ class Adherent
{
$obj = $this->db->fetch_object($resql);
- $this->ref = $obj->rowid;
+ $this->ref = $obj->rowid;
$this->id = $obj->rowid;
$this->prenom = $obj->prenom;
$this->nom = $obj->nom;
diff --git a/htdocs/html.form.class.php b/htdocs/html.form.class.php
index 5ea1cc4a948..7880b84e62e 100644
--- a/htdocs/html.form.class.php
+++ b/htdocs/html.form.class.php
@@ -3358,18 +3358,19 @@ class Form
/**
* \brief Affiche tableau avec ref et bouton navigation pour un objet metier
- * \param object Objet a afficher
- * \param paramid Nom du parametre a utiliser pour nommer id dans liens URL
- * \param morehtml Code html supplementaire a afficher avant barre nav
- * \return string Portion HTML avec ref + boutons nav
+ * \param object Objet a afficher
+ * \param paramid Nom du parametre a utiliser pour nommer id dans liens URL
+ * \param morehtml Code html supplementaire a afficher avant barre nav
+ * \param shownav Show Condirion
+ * \return string Portion HTML avec ref + boutons nav
*/
- function showrefnav($object,$paramid,$morehtml='')
+ function showrefnav($object,$paramid,$morehtml='',$shownav=1)
{
$ret='';
- $object->load_previous_next_ref($object->next_prev_filter);
- $previous_ref = $object->ref_previous?'ref_previous).'">'.img_previous().'':'';
- $next_ref = $object->ref_next?'ref_next).'">'.img_next().'':'';
+ $object->load_previous_next_ref($object->next_prev_filter);
+ $previous_ref = $object->ref_previous?'ref_previous).'">'.img_previous().'':'';
+ $next_ref = $object->ref_next?'ref_next).'">'.img_next().'':'';
if ($previous_ref || $next_ref || $morehtml) {
$ret.='
';
@@ -3379,7 +3380,7 @@ class Form
if ($morehtml) {
$ret.='
'.$morehtml;
}
- if ($previous_ref || $next_ref) {
+ if ($shownav && ($previous_ref || $next_ref)) {
$ret.='
'.$previous_ref.'
';
$ret.='
'.$next_ref;
}
diff --git a/htdocs/langs/en_US/members.lang b/htdocs/langs/en_US/members.lang
index e757f46b8cf..ab836f20768 100644
--- a/htdocs/langs/en_US/members.lang
+++ b/htdocs/langs/en_US/members.lang
@@ -5,6 +5,8 @@ MemberCard=Member card
SubscriptionCard=Subscription card
Member=Member
Members=Members
+MemberAccount=Member login
+UserNotLinkedToMember=User not linked to a member
MembersTickets=Members Tickets
FundationMembers=Fundation members
Attributs=Attributes
diff --git a/htdocs/langs/fr_FR/members.lang b/htdocs/langs/fr_FR/members.lang
index 6aac57aeb94..68cc49b8895 100644
--- a/htdocs/langs/fr_FR/members.lang
+++ b/htdocs/langs/fr_FR/members.lang
@@ -5,6 +5,8 @@ MemberCard=Fiche adh
SubscriptionCard=Fiche adhésion
Member=Adhérent
Members=Adhérents
+MemberAccount=Login adhérent
+UserNotLinkedToMember=Utilisateur non lié à un adhérent
MembersTickets=Etiquettes d'adhérents
FundationMembers=Membres de l'association
Attributs=Attributs
diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php
index d39f1ed8929..25346c69310 100644
--- a/htdocs/main.inc.php
+++ b/htdocs/main.inc.php
@@ -381,11 +381,11 @@ if (! session_id() || ! isset($_SESSION["dol_login"]))
// On recherche le user dolibarr en fonction de son SID ldap
$user->search_sid = $ldap->getObjectSid($login);
if ($ldapdebug) print "DEBUG: search_sid = ".$user->search_sid." \n";
- $result=$user->fetch();
+ $result=$user->fetch($login);
if ($result)
{
- //TODO: on vérifie si le login à changer et on met à jour les attributs dolibarr
- if ($user->login != $ldap->login)
+ //TODO: on vérifie si le login a changé et on met à jour les attributs dolibarr
+ if ($user->login != $ldap->login && $ldap->login)
{
$user->login = $ldap->login;
$user->update();
diff --git a/htdocs/user.class.php b/htdocs/user.class.php
index e92a43fab04..0836b3a2f6c 100644
--- a/htdocs/user.class.php
+++ b/htdocs/user.class.php
@@ -122,7 +122,7 @@ class User
$sql = "SELECT u.rowid, u.name, u.firstname, u.email, u.office_phone, u.office_fax, u.user_mobile,";
$sql.= " u.admin, u.login, u.webcal_login, u.note,";
$sql.= " u.pass, u.pass_crypted, u.pass_temp,";
- $sql.= " u.fk_societe, u.fk_socpeople, u.ldap_sid,";
+ $sql.= " u.fk_societe, u.fk_socpeople, u.fk_member, u.ldap_sid,";
$sql.= " u.statut, u.lang,";
$sql.= " ".$this->db->pdate("u.datec")." as datec,";
$sql.= " ".$this->db->pdate("u.tms")." as datem,";
@@ -132,7 +132,7 @@ class User
if ($conf->ldap->enabled && $conf->global->LDAP_SYNCHRO_ACTIVE == 'ldap2dolibarr' && $this->search_sid != '')
{
// permet une recherche du user par son SID ActiveDirectory ou Samba
- $sql .= " WHERE u.ldap_sid = '".$this->search_sid."'";
+ $sql .= " WHERE (u.ldap_sid = '".$this->search_sid."' || u.login = '".$login."') LIMIT 1";
}
else if ($login)
{
@@ -151,6 +151,8 @@ class User
if ($obj)
{
$this->id = $obj->rowid;
+ $this->ref = $obj->rowid;
+
$this->ldap_sid = $obj->ldap_sid;
$this->nom = $obj->name;
$this->prenom = $obj->firstname;
@@ -166,7 +168,6 @@ class User
$this->user_mobile = $obj->user_mobile;
$this->email = $obj->email;
$this->admin = $obj->admin;
- $this->contact_id = $obj->fk_socpeople;
$this->note = $obj->note;
$this->statut = $obj->statut;
$this->lang = $obj->lang;
@@ -178,6 +179,8 @@ class User
$this->webcal_login = $obj->webcal_login;
$this->societe_id = $obj->fk_societe;
+ $this->contact_id = $obj->fk_socpeople;
+ $this->fk_member = $obj->fk_member;
if (! $this->lang) $this->lang='fr_FR';
@@ -1036,6 +1039,7 @@ class User
}
$sql.= " WHERE rowid = ".$this->id;
+ // dolibarr_syslog("User::update sql=".$sql); Pas de trace
$result = $this->db->query($sql);
if ($result)
{
@@ -1074,6 +1078,8 @@ class User
$sql = "UPDATE ".MAIN_DB_PREFIX."user";
$sql.= " SET pass_temp = '".addslashes($password)."'";
$sql.= " WHERE rowid = ".$this->id;
+
+ // dolibarr_syslog("User::update sql=".$sql); Pas de trace
$result = $this->db->query($sql);
if ($result)
{
@@ -1574,6 +1580,41 @@ class User
dolibarr_print_error($this->db);
}
}
+
+
+ /**
+ * \brief Charge les propriétés id_previous et id_next
+ * \param filter filtre
+ * \return int <0 si ko, >0 si ok
+ */
+ function load_previous_next_ref($filter='')
+ {
+ $sql = "SELECT MAX(rowid)";
+ $sql.= " FROM ".MAIN_DB_PREFIX."user";
+ $sql.= " WHERE rowid < '".addslashes($this->id)."'";
+ if (isset($filter)) $sql.=" AND ".$filter;
+ $result = $this->db->query($sql) ;
+ if (! $result)
+ {
+ $this->error=$this->db->error();
+ return -1;
+ }
+ $row = $this->db->fetch_row($result);
+ $this->ref_previous = $row[0];
+
+ $sql = "SELECT MIN(rowid)";
+ $sql.= " FROM ".MAIN_DB_PREFIX."user";
+ $sql.= " WHERE rowid > '".addslashes($this->id)."'";
+ if (isset($filter)) $sql.=" AND ".$filter;
+ $result = $this->db->query($sql) ;
+ if (! $result)
+ {
+ $this->error=$this->db->error();
+ return -2;
+ }
+ $row = $this->db->fetch_row($result);
+ $this->ref_next = $row[0];
+ }
}
diff --git a/htdocs/user/fiche.php b/htdocs/user/fiche.php
index a7d87d72407..ffa0dc95f59 100644
--- a/htdocs/user/fiche.php
+++ b/htdocs/user/fiche.php
@@ -34,6 +34,7 @@ require("./pre.inc.php");
require_once(DOL_DOCUMENT_ROOT."/contact.class.php");
require_once(DOL_DOCUMENT_ROOT."/lib/ldap.class.php");
require_once(DOL_DOCUMENT_ROOT."/lib/usergroups.lib.php");
+require_once(DOL_DOCUMENT_ROOT."/adherents/adherent.class.php");
$user->getrights('user');
@@ -721,7 +722,7 @@ else
*/
$head = user_prepare_head($fuser);
- dolibarr_fiche_head($head, 'user', $langs->trans("User").": ".$fuser->fullname);
+ dolibarr_fiche_head($head, 'user', $langs->trans("User"));
/*
@@ -777,40 +778,26 @@ else
{
print '