New: PAgination entre fiche sur fiches users

Fix: Correction perte du login dans certains cas.
This commit is contained in:
Laurent Destailleur 2007-08-31 22:06:14 +00:00
parent bf85f2e150
commit 696a49c24d
11 changed files with 185 additions and 72 deletions

View File

@ -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;

View File

@ -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?'<a href="'.$_SERVER["PHP_SELF"].'?'.$paramid.'='.urlencode($object->ref_previous).'">'.img_previous().'</a>':'';
$next_ref = $object->ref_next?'<a href="'.$_SERVER["PHP_SELF"].'?'.$paramid.'='.urlencode($object->ref_next).'">'.img_next().'</a>':'';
$object->load_previous_next_ref($object->next_prev_filter);
$previous_ref = $object->ref_previous?'<a href="'.$_SERVER["PHP_SELF"].'?'.$paramid.'='.urlencode($object->ref_previous).'">'.img_previous().'</a>':'';
$next_ref = $object->ref_next?'<a href="'.$_SERVER["PHP_SELF"].'?'.$paramid.'='.urlencode($object->ref_next).'">'.img_next().'</a>':'';
if ($previous_ref || $next_ref || $morehtml) {
$ret.='<table class="nobordernopadding" width="100%"><tr class="nobordernopadding"><td class="nobordernopadding">';
@ -3379,7 +3380,7 @@ class Form
if ($morehtml) {
$ret.='</td><td class="nobordernopadding" align="right">'.$morehtml;
}
if ($previous_ref || $next_ref) {
if ($shownav && ($previous_ref || $next_ref)) {
$ret.='</td><td class="nobordernopadding" align="center" width="20">'.$previous_ref.'</td>';
$ret.='<td class="nobordernopadding" align="center" width="20">'.$next_ref;
}

View File

@ -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

View File

@ -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

View File

@ -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."<br>\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();

View File

@ -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];
}
}

View File

@ -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 '<table class="border" width="100%">';
$rowspan=15;
// Ref
print '<tr><td width="25%" valign="top">'.$langs->trans("Ref").'</td>';
print '<td width="50%">';
if ($previous_ref || $next_ref) print '<table class="nobordernopadding" width="100%"><tr class="nobordernopadding"><td class="nobordernopadding">';
print $fuser->id;
if ($previous_ref || $next_ref) print '</td><td class="nobordernopadding" align="center" width="20">'.$previous_ref.'</td><td class="nobordernopadding" align="center" width="20">'.$next_ref.'</td></tr></table>';
print '<td colspan="2">';
print $html->showrefnav($fuser,'id','',$user->rights->user->user->lire || $user->admin);
print '</td>';
print '<td align="center" valign="middle" width="25%" rowspan="'.$rowspan.'">';
if (file_exists($conf->users->dir_output."/".$fuser->id.".jpg"))
{
print '<img width="100" src="'.DOL_URL_ROOT.'/viewimage.php?modulepart=userphoto&file='.$fuser->id.'.jpg">';
}
else
{
print '<img width="100" src="'.DOL_URL_ROOT.'/theme/common/nophoto.jpg">';
}
print '</td></tr>';
print '</tr>';
// Nom
print '<tr><td width="25%" valign="top">'.$langs->trans("Lastname").'</td>';
print '<td width="50%">'.$fuser->nom.'</td>';
print '<td colspan="2">'.$fuser->nom.'</td>';
print "</tr>\n";
// Prenom
print '<tr><td width="25%" valign="top">'.$langs->trans("Firstname").'</td>';
print '<td width="50%">'.$fuser->prenom.'</td>';
print '<td colspan="2">'.$fuser->prenom.'</td>';
print "</tr>\n";
// Login
$rowspan=12;
// Login
print '<tr><td width="25%" valign="top">'.$langs->trans("Login").'</td>';
if ($fuser->ldap_sid && $fuser->statut==0)
{
@ -820,6 +807,16 @@ else
{
print '<td width="50%">'.$fuser->login.'</td>';
}
print '<td align="center" valign="middle" width="25%" rowspan="'.$rowspan.'">';
if (file_exists($conf->users->dir_output."/".$fuser->id.".jpg"))
{
print '<img width="100" src="'.DOL_URL_ROOT.'/viewimage.php?modulepart=userphoto&file='.$fuser->id.'.jpg">';
}
else
{
print '<img width="100" src="'.DOL_URL_ROOT.'/theme/common/nophoto.jpg">';
}
print '</td>';
print '</tr>';
// Password
@ -841,7 +838,7 @@ else
}
else
{
print '<td width="50%">';
print '<td>';
if ($fuser->pass) print eregi_replace('.','*',$fuser->pass);
else
{
@ -900,15 +897,15 @@ else
// Tel, fax, portable
print '<tr><td width="25%" valign="top">'.$langs->trans("Phone").'</td>';
print '<td width="50%">'.$fuser->office_phone.'</td>';
print '<td>'.$fuser->office_phone.'</td>';
print '<tr><td width="25%" valign="top">'.$langs->trans("Fax").'</td>';
print '<td width="50%">'.$fuser->office_fax.'</td>';
print '<td>'.$fuser->office_fax.'</td>';
print '<tr><td width="25%" valign="top">'.$langs->trans("Mobile").'</td>';
print '<td width="50%">'.$fuser->user_mobile.'</td>';
print '<td>'.$fuser->user_mobile.'</td>';
// EMail
print '<tr><td width="25%" valign="top">'.$langs->trans("EMail").'</td>';
print '<td width="50%"><a href="mailto:'.$fuser->email.'">'.$fuser->email.'</a></td>';
print '<td><a href="mailto:'.$fuser->email.'">'.$fuser->email.'</a></td>';
print "</tr>\n";
// Statut
@ -938,6 +935,25 @@ else
print '<td colspan="2">'.$fuser->webcal_login.'&nbsp;</td>';
print "</tr>\n";
}
if ($conf->adherent->enabled)
{
$langs->load("members");
print '<tr><td width="25%" valign="top">'.$langs->trans("MemberAccount").'</td>';
print '<td colspan="2">';
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 '</td>';
print "</tr>\n";
}
print "</table>\n";
@ -1119,33 +1135,17 @@ else
print '<input type="hidden" name="action" value="update">';
print '<table width="100%" class="border">';
$rowspan=13;
$rowspan=10;
print '<tr><td width="25%" valign="top">'.$langs->trans("Ref").'</td>';
print '<td width="50%">';
print '<td colspan="2">';
print $fuser->id;
print '</td>';
print '<td align="center" valign="middle" width="25%" rowspan="'.$rowspan.'">';
if (file_exists($conf->users->dir_output."/".$fuser->id.".jpg"))
{
print '<img width="100" src="'.DOL_URL_ROOT.'/viewimage.php?modulepart=userphoto&file='.$fuser->id.'.jpg">';
}
else
{
print '<img src="'.DOL_URL_ROOT.'/theme/common/nophoto.jpg">';
}
if ($caneditfield)
{
print '<br><br><table class="noborder"><tr><td>'.$langs->trans("PhotoFile").'</td></tr>';
print '<tr><td>';
print '<input type="file" class="flat" name="photo">';
print '</td></tr></table>';
}
print '</td></tr>';
print '</tr>';
// Nom
print "<tr>".'<td valign="top">'.$langs->trans("Name").'*</td>';
print '<td>';
print '<td colspan="2">';
if ($caneditfield && !$fuser->ldap_sid)
{
print '<input size="30" type="text" class="flat" name="nom" value="'.$fuser->nom.'">';
@ -1159,7 +1159,7 @@ else
// Prenom
print "<tr>".'<td valign="top">'.$langs->trans("Firstname").'</td>';
print '<td>';
print '<td colspan="2">';
if ($caneditfield && !$fuser->ldap_sid)
{
print '<input size="30" type="text" class="flat" name="prenom" value="'.$fuser->prenom.'">';
@ -1183,7 +1183,25 @@ else
print '<input type="hidden" name="login" value="'.$fuser->login.'">';
print $fuser->login;
}
print '</td></tr>';
print '</td>';
print '<td align="center" valign="middle" width="25%" rowspan="'.$rowspan.'">';
if (file_exists($conf->users->dir_output."/".$fuser->id.".jpg"))
{
print '<img width="100" src="'.DOL_URL_ROOT.'/viewimage.php?modulepart=userphoto&file='.$fuser->id.'.jpg">';
}
else
{
print '<img src="'.DOL_URL_ROOT.'/theme/common/nophoto.jpg">';
}
if ($caneditfield)
{
print '<br><br><table class="noborder"><tr><td>'.$langs->trans("PhotoFile").'</td></tr>';
print '<tr><td>';
print '<input type="file" class="flat" name="photo">';
print '</td></tr></table>';
}
print '</td>';
print '</tr>';
// Pass
print '<tr><td valign="top">'.$langs->trans("Password").'</td>';

View File

@ -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 '<table width="100%"><tr><td>';

View File

@ -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 '<table class="border" width="100%">';
// Ref
print '<tr><td width="25%" valign="top">'.$langs->trans("Ref").'</td>';
print '<td>'.$fuser->id.'</td>';
print '<td>';
print $form->showrefnav($fuser,'id','',$user->rights->user->user->lire || $user->admin);
print '</td>';
print '</tr>';
// Nom

View File

@ -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 '<table class="border" width="100%">';
// Ref
print '<tr><td width="25%" valign="top">'.$langs->trans("Ref").'</td>';
print '<td colspan="2">';
print $html->showrefnav($fuser,'id','',$user->rights->user->user->lire || $user->admin);
print '</td>';
print '</tr>';
// Nom
print '<tr><td width="25%" valign="top">'.$langs->trans("Lastname").'</td>';
print '<td colspan="2">'.$fuser->nom.'</td>';
print "</tr>\n";
// Prenom
print '<tr><td width="25%" valign="top">'.$langs->trans("Firstname").'</td>';
print '<td colspan="2">'.$fuser->prenom.'</td>';
print "</tr>\n";
print '</table><br>';
if ($_GET["action"] == 'edit')

View File

@ -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 '<table class="border" width="100%">';
// Ref
print '<tr><td width="25%" valign="top">'.$langs->trans("Ref").'</td>';
print '<td colspan="2">';
print $form->showrefnav($fuser,'id','',$user->rights->user->user->lire || $user->admin);
print '</td>';
print '</tr>';
// Nom
print '<tr><td width="25%" valign="top">'.$langs->trans("Lastname").'</td>';
print '<td colspan="2">'.$fuser->nom.'</td>';
print "</tr>\n";
// Prenom
print '<tr><td width="25%" valign="top">'.$langs->trans("Firstname").'</td>';
print '<td colspan="2">'.$fuser->prenom.'</td>';
print "</tr>\n";
print '</table><br>';
print '<table width="100%" class="noborder">';
print '<tr class="liste_titre">';
print '<td>'.$langs->trans("Module").'</td>';