From 696a49c24d3850a7f2424a83752635b53f639419 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 31 Aug 2007 22:06:14 +0000 Subject: [PATCH] New: PAgination entre fiche sur fiches users Fix: Correction perte du login dans certains cas. --- htdocs/adherents/adherent.class.php | 5 +- htdocs/html.form.class.php | 19 ++--- htdocs/langs/en_US/members.lang | 2 + htdocs/langs/fr_FR/members.lang | 2 + htdocs/main.inc.php | 6 +- htdocs/user.class.php | 47 ++++++++++- htdocs/user/fiche.php | 118 ++++++++++++++++------------ htdocs/user/info.php | 2 +- htdocs/user/ldap.php | 6 +- htdocs/user/param_ihm.php | 25 +++++- htdocs/user/perms.php | 25 +++++- 11 files changed, 185 insertions(+), 72 deletions(-) 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?''.img_previous().'':''; - $next_ref = $object->ref_next?''.img_next().'':''; + $object->load_previous_next_ref($object->next_prev_filter); + $previous_ref = $object->ref_previous?''.img_previous().'':''; + $next_ref = $object->ref_next?''.img_next().'':''; if ($previous_ref || $next_ref || $morehtml) { $ret.=''; $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.''.$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 ''; - $rowspan=15; - // Ref print ''; - print ''; - - print ''; + print ''; // Nom print ''; - print ''; + print ''; print "\n"; // Prenom print ''; - print ''; + print ''; print "\n"; - // Login + $rowspan=12; + + // Login print ''; if ($fuser->ldap_sid && $fuser->statut==0) { @@ -820,6 +807,16 @@ else { print ''; } + print ''; print ''; // Password @@ -841,7 +838,7 @@ else } else { - print ''; - print ''; + print ''; print ''; - print ''; + print ''; print ''; - print ''; + print ''; // EMail print ''; - print ''; + print ''; print "\n"; // Statut @@ -938,6 +935,25 @@ else print ''; print "\n"; } + if ($conf->adherent->enabled) + { + $langs->load("members"); + print ''; + print ''; + print "\n"; + } print "
'.$langs->trans("Ref").''; - - if ($previous_ref || $next_ref) print '
'; - print $fuser->id; - if ($previous_ref || $next_ref) print ''.$previous_ref.''.$next_ref.'
'; - + print '
'; + print $html->showrefnav($fuser,'id','',$user->rights->user->user->lire || $user->admin); print ''; - if (file_exists($conf->users->dir_output."/".$fuser->id.".jpg")) - { - print ''; - } - else - { - print ''; - } - print '
'.$langs->trans("Lastname").''.$fuser->nom.''.$fuser->nom.'
'.$langs->trans("Firstname").''.$fuser->prenom.''.$fuser->prenom.'
'.$langs->trans("Login").''.$fuser->login.''; + if (file_exists($conf->users->dir_output."/".$fuser->id.".jpg")) + { + print ''; + } + else + { + print ''; + } + print '
'; + print ''; if ($fuser->pass) print eregi_replace('.','*',$fuser->pass); else { @@ -900,15 +897,15 @@ else // Tel, fax, portable print '
'.$langs->trans("Phone").''.$fuser->office_phone.''.$fuser->office_phone.'
'.$langs->trans("Fax").''.$fuser->office_fax.''.$fuser->office_fax.'
'.$langs->trans("Mobile").''.$fuser->user_mobile.''.$fuser->user_mobile.'
'.$langs->trans("EMail").''.$fuser->email.''.$fuser->email.'
'.$fuser->webcal_login.' 
'.$langs->trans("MemberAccount").''; + if ($fuser->fk_member) + { + $adh=new Adherent($db); + $adh->fetch($fuser->fk_member); + $adh->ref=$adh->login; // Force to show login instead of id + print $adh->getNomUrl(1); + } + else + { + print $langs->trans("UserNotLinkedToMember"); + } + print '
\n"; @@ -1119,33 +1135,17 @@ else print ''; print ''; - $rowspan=13; + $rowspan=10; print ''; - print ''; - print ''; + print ''; // Nom print "".''; - print '".''; - print ''; + print ''; + print ''; + print ''; // Pass print ''; diff --git a/htdocs/user/info.php b/htdocs/user/info.php index fa67a95ac16..29ed71fa8e8 100644 --- a/htdocs/user/info.php +++ b/htdocs/user/info.php @@ -55,7 +55,7 @@ $user->info($_GET["id"]); $head = user_prepare_head($user); -dolibarr_fiche_head($head, 'info', $langs->trans("User").': '.$user->fullname); +dolibarr_fiche_head($head, 'info', $langs->trans("User")); print '
'.$langs->trans("Ref").''; + print ''; print $fuser->id; print ''; - if (file_exists($conf->users->dir_output."/".$fuser->id.".jpg")) - { - print ''; - } - else - { - print ''; - } - if ($caneditfield) - { - print '

'; - print '
'.$langs->trans("PhotoFile").'
'; - print ''; - print '
'; - } - print '
'.$langs->trans("Name").'*'; + print ''; if ($caneditfield && !$fuser->ldap_sid) { print ''; @@ -1159,7 +1159,7 @@ else // Prenom print "
'.$langs->trans("Firstname").''; + print ''; if ($caneditfield && !$fuser->ldap_sid) { print ''; @@ -1183,7 +1183,25 @@ else print ''; print $fuser->login; } - print '
'; + if (file_exists($conf->users->dir_output."/".$fuser->id.".jpg")) + { + print ''; + } + else + { + print ''; + } + if ($caneditfield) + { + print '

'; + print '
'.$langs->trans("PhotoFile").'
'; + print ''; + print '
'; + } + print '
'.$langs->trans("Password").'
'; diff --git a/htdocs/user/ldap.php b/htdocs/user/ldap.php index d9ea5e9cee9..f7b12750e2a 100644 --- a/htdocs/user/ldap.php +++ b/htdocs/user/ldap.php @@ -96,7 +96,7 @@ $form = new Form($db); */ $head = user_prepare_head($fuser); -dolibarr_fiche_head($head, 'ldap', $langs->trans("User").": ".$fuser->fullname); +dolibarr_fiche_head($head, 'ldap', $langs->trans("User")); @@ -107,7 +107,9 @@ print ''; // Ref print ''; -print ''; +print ''; print ''; // Nom diff --git a/htdocs/user/param_ihm.php b/htdocs/user/param_ihm.php index 7ecdd596d15..ed8ff6abfe3 100644 --- a/htdocs/user/param_ihm.php +++ b/htdocs/user/param_ihm.php @@ -48,6 +48,7 @@ $searchform=array("main_searchform_societe","main_searchform_contact","main_sear $searchformconst=array($conf->global->MAIN_SEARCHFORM_SOCIETE,$conf->global->MAIN_SEARCHFORM_CONTACT,$conf->global->MAIN_SEARCHFORM_PRODUITSERVICE); $searchformtitle=array($langs->trans("Companies"),$langs->trans("Contacts"),$langs->trans("ProductsAndServices")); +$html = new Form($db); /* @@ -98,7 +99,29 @@ llxHeader(); */ $head = user_prepare_head($fuser); -dolibarr_fiche_head($head, 'guisetup', $langs->trans("User").": ".$fuser->fullname); +dolibarr_fiche_head($head, 'guisetup', $langs->trans("User")); + + +print '
'.$langs->trans("Ref").''.$fuser->id.''; +print $form->showrefnav($fuser,'id','',$user->rights->user->user->lire || $user->admin); +print '
'; + +// Ref +print ''; +print ''; +print ''; + +// Nom +print ''; +print ''; +print "\n"; + +// Prenom +print ''; +print ''; +print "\n"; + +print '
'.$langs->trans("Ref").''; +print $html->showrefnav($fuser,'id','',$user->rights->user->user->lire || $user->admin); +print '
'.$langs->trans("Lastname").''.$fuser->nom.'
'.$langs->trans("Firstname").''.$fuser->prenom.'

'; if ($_GET["action"] == 'edit') diff --git a/htdocs/user/perms.php b/htdocs/user/perms.php index 369813fe76b..a00408452b4 100644 --- a/htdocs/user/perms.php +++ b/htdocs/user/perms.php @@ -95,7 +95,7 @@ $fuser->getrights(); */ $head = user_prepare_head($fuser); -dolibarr_fiche_head($head, 'rights', $langs->trans("User").": ".$fuser->fullname); +dolibarr_fiche_head($head, 'rights', $langs->trans("User")); $db->begin(); @@ -185,6 +185,29 @@ else * Ecran ajout/suppression permission */ +print ''; + +// Ref +print ''; +print ''; +print ''; + +// Nom +print ''; +print ''; +print "\n"; + +// Prenom +print ''; +print ''; +print "\n"; + + +print '
'.$langs->trans("Ref").''; +print $form->showrefnav($fuser,'id','',$user->rights->user->user->lire || $user->admin); +print '
'.$langs->trans("Lastname").''.$fuser->nom.'
'.$langs->trans("Firstname").''.$fuser->prenom.'

'; + + print ''; print ''; print '';
'.$langs->trans("Module").'