Add option ADHERENT_LOGIN_NOT_REQUIRED

This commit is contained in:
Laurent Destailleur 2011-03-06 13:15:27 +00:00
parent 425adc1d57
commit 19d596aa74
3 changed files with 127 additions and 108 deletions

View File

@ -5,6 +5,7 @@ $Id$
***** ChangeLog for 3.1 compared to 3.0 ***** ***** ChangeLog for 3.1 compared to 3.0 *****
For users: For users:
- New: Login is not mandatory in member module.
- New: Reduce a step into supplier order workflow to save time (if user - New: Reduce a step into supplier order workflow to save time (if user
has permission to approve, order is approved when order is validated). has permission to approve, order is approved when order is validated).
- New: Add box last members for foundation module. - New: Add box last members for foundation module.

View File

@ -248,7 +248,7 @@ class Adherent extends CommonObject
} }
/** /**
* Fonction qui cree l'adherent * Create a member into database
* @param user Objet user qui demande la creation * @param user Objet user qui demande la creation
* @param notrigger 1 ne declenche pas les triggers, 0 sinon * @param notrigger 1 ne declenche pas les triggers, 0 sinon
* @return int <0 if KO, >0 if OK * @return int <0 if KO, >0 if OK
@ -257,6 +257,8 @@ class Adherent extends CommonObject
{ {
global $conf,$langs; global $conf,$langs;
$now=dol_now();
// Check parameters // Check parameters
if (! empty($conf->global->ADHERENT_MAIL_REQUIRED) && ! isValidEMail($this->email)) if (! empty($conf->global->ADHERENT_MAIL_REQUIRED) && ! isValidEMail($this->email))
{ {
@ -264,11 +266,14 @@ class Adherent extends CommonObject
$this->error = $langs->trans("ErrorBadEMail",$this->email); $this->error = $langs->trans("ErrorBadEMail",$this->email);
return -1; return -1;
} }
if (! $this->datec) $this->datec=gmmktime(); if (! $this->datec) $this->datec=$now;
if (empty($this->login)) if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED))
{ {
$this->error = $langs->trans("ErrorWrongValueForParameterX","Login"); if (empty($this->login))
return -1; {
$this->error = $langs->trans("ErrorWrongValueForParameterX","Login");
return -1;
}
} }
$this->db->begin(); $this->db->begin();
@ -278,7 +283,7 @@ class Adherent extends CommonObject
$sql.= " (datec,login,fk_user_author,fk_user_mod,fk_user_valid,morphy,fk_adherent_type,entity)"; $sql.= " (datec,login,fk_user_author,fk_user_mod,fk_user_valid,morphy,fk_adherent_type,entity)";
$sql.= " VALUES ("; $sql.= " VALUES (";
$sql.= " '".$this->db->idate($this->datec)."'"; $sql.= " '".$this->db->idate($this->datec)."'";
$sql.= ", '".$this->login."'"; $sql.= ", ".($this->login?"'".$this->db->escape($this->login)."'":"null");
$sql.= ", ".($user->id>0?$user->id:"null"); // Can be null because member can be create by a guest or a script $sql.= ", ".($user->id>0?$user->id:"null"); // Can be null because member can be create by a guest or a script
$sql.= ", null, null, '".$this->morphy."'"; $sql.= ", null, null, '".$this->morphy."'";
$sql.= ", '".$this->typeid."'"; $sql.= ", '".$this->typeid."'";

View File

@ -377,36 +377,33 @@ if ($_POST["action"] == 'add' && $user->rights->adherent->creer)
$adh->fk_soc = $socid; $adh->fk_soc = $socid;
$adh->public = $public; $adh->public = $public;
foreach($_POST as $key => $value)
{
if (preg_match("/^options_/",$key))
{
//escape values from POST, at least with $db->escape, to avoid obvious SQL injections
//(array_options is directly input in the DB in adherent.class.php::update())
$adh->array_options[$key]=$db->escape($_POST[$key]);
}
}
// Check parameters // Check parameters
if (empty($morphy) || $morphy == "-1") { if (empty($morphy) || $morphy == "-1") {
$error++; $error++;
$errmsg .= $langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Nature"))."<br>\n"; $errmsg .= $langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Nature"))."<br>\n";
} }
// Test si le login existe deja // Test si le login existe deja
if (empty($login)) { if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED))
$error++; {
$errmsg .= $langs->trans("ErrorFieldRequired",$langs->trans("Login"))."<br>\n"; if (empty($login)) {
}
else {
$sql = "SELECT login FROM ".MAIN_DB_PREFIX."adherent WHERE login='".$login."'";
$result = $db->query($sql);
if ($result) {
$num = $db->num_rows($result);
}
if ($num) {
$error++; $error++;
$langs->load("errors"); $errmsg .= $langs->trans("ErrorFieldRequired",$langs->trans("Login"))."<br>\n";
$errmsg .= $langs->trans("ErrorLoginAlreadyExists",$login)."<br>\n"; }
else {
$sql = "SELECT login FROM ".MAIN_DB_PREFIX."adherent WHERE login='".$db->escape($login)."'";
$result = $db->query($sql);
if ($result) {
$num = $db->num_rows($result);
}
if ($num) {
$error++;
$langs->load("errors");
$errmsg .= $langs->trans("ErrorLoginAlreadyExists",$login)."<br>\n";
}
}
if (empty($pass)) {
$error++;
$errmsg .= $langs->trans("ErrorFieldRequired",$langs->transnoentities("Password"))."<br>\n";
} }
} }
if (empty($nom)) { if (empty($nom)) {
@ -428,10 +425,6 @@ if ($_POST["action"] == 'add' && $user->rights->adherent->creer)
$langs->load("errors"); $langs->load("errors");
$errmsg .= $langs->trans("ErrorBadEMail",$email)."<br>\n"; $errmsg .= $langs->trans("ErrorBadEMail",$email)."<br>\n";
} }
if (empty($pass)) {
$error++;
$errmsg .= $langs->trans("ErrorFieldRequired",$langs->transnoentities("Password"))."<br>\n";
}
$public=0; $public=0;
if (isset($public)) $public=1; if (isset($public)) $public=1;
@ -635,6 +628,12 @@ if ($action == 'create')
print '<table class="border" width="100%">'; print '<table class="border" width="100%">';
// Login
if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED))
{
print '<tr><td><span class="fieldrequired">'.$langs->trans("Login").' / '.$langs->trans("Id").'</span></td><td><input type="text" name="member_login" size="40" value="'.(isset($_POST["member_login"])?$_POST["member_login"]:$adh->login).'"></td></tr>';
}
// Moral-Physique // Moral-Physique
$morphys["phy"] = $langs->trans("Physical"); $morphys["phy"] = $langs->trans("Physical");
$morphys["mor"] = $langs->trans("Moral"); $morphys["mor"] = $langs->trans("Moral");
@ -642,6 +641,17 @@ if ($action == 'create')
print $html->selectarray("morphy", $morphys, isset($_POST["morphy"])?$_POST["morphy"]:$adh->morphy, 1); print $html->selectarray("morphy", $morphys, isset($_POST["morphy"])?$_POST["morphy"]:$adh->morphy, 1);
print "</td>\n"; print "</td>\n";
// Type
print '<tr><td><span class="fieldrequired">'.$langs->trans("MemberType").'</span></td><td>';
$listetype=$adht->liste_array();
if (sizeof($listetype))
{
print $html->selectarray("typeid", $listetype, isset($_POST["typeid"])?$_POST["typeid"]:$typeid, 1);
} else {
print '<font class="error">'.$langs->trans("NoTypeDefinedGoToSetup").'</font>';
}
print "</td>\n";
// Company // Company
print '<tr><td>'.$langs->trans("Company").'</td><td><input type="text" name="societe" size="40" value="'.(isset($_POST["societe"])?$_POST["societe"]:$adh->societe).'"></td></tr>'; print '<tr><td>'.$langs->trans("Company").'</td><td><input type="text" name="societe" size="40" value="'.(isset($_POST["societe"])?$_POST["societe"]:$adh->societe).'"></td></tr>';
@ -658,40 +668,29 @@ if ($action == 'create')
print '<tr><td>'.$langs->trans("Firstname").'</td><td><input type="text" name="prenom" size="40" value="'.(isset($_POST["prenom"])?$_POST["prenom"]:$adh->prenom).'"></td>'; print '<tr><td>'.$langs->trans("Firstname").'</td><td><input type="text" name="prenom" size="40" value="'.(isset($_POST["prenom"])?$_POST["prenom"]:$adh->prenom).'"></td>';
print '</tr>'; print '</tr>';
// Login // Password
print '<tr><td><span class="fieldrequired">'.$langs->trans("Login").'</span></td><td><input type="text" name="member_login" size="40" value="'.(isset($_POST["member_login"])?$_POST["member_login"]:$adh->login).'"></td></tr>'; if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED))
// Mot de passe
$generated_password='';
if ($conf->global->USER_PASSWORD_GENERATED)
{ {
$nomclass="modGeneratePass".ucfirst($conf->global->USER_PASSWORD_GENERATED); $generated_password='';
$nomfichier=$nomclass.".class.php"; if ($conf->global->USER_PASSWORD_GENERATED)
//print DOL_DOCUMENT_ROOT."/includes/modules/security/generate/".$nomclass; {
require_once(DOL_DOCUMENT_ROOT."/includes/modules/security/generate/".$nomfichier); $nomclass="modGeneratePass".ucfirst($conf->global->USER_PASSWORD_GENERATED);
$genhandler=new $nomclass($db,$conf,$langs,$user); $nomfichier=$nomclass.".class.php";
$generated_password=$genhandler->getNewGeneratedPassword(); //print DOL_DOCUMENT_ROOT."/includes/modules/security/generate/".$nomclass;
require_once(DOL_DOCUMENT_ROOT."/includes/modules/security/generate/".$nomfichier);
$genhandler=new $nomclass($db,$conf,$langs,$user);
$generated_password=$genhandler->getNewGeneratedPassword();
}
print '<tr><td><span class="fieldrequired">'.$langs->trans("Password").'</span></td><td>';
print '<input size="30" maxsize="32" type="text" name="password" value="'.$generated_password.'">';
print '</td></tr>';
} }
print '<tr><td><span class="fieldrequired">'.$langs->trans("Password").'</span></td><td>';
print '<input size="30" maxsize="32" type="text" name="password" value="'.$generated_password.'">';
print '</td></tr>';
// Type
print '<tr><td><span class="fieldrequired">'.$langs->trans("MemberType").'</span></td><td>';
$listetype=$adht->liste_array();
if (sizeof($listetype))
{
print $html->selectarray("typeid", $listetype, isset($_POST["typeid"])?$_POST["typeid"]:$typeid, 1);
} else {
print '<font class="error">'.$langs->trans("NoTypeDefinedGoToSetup").'</font>';
}
print "</td>\n";
// Address // Address
print '<tr><td valign="top">'.$langs->trans("Address").'</td><td>'; print '<tr><td valign="top">'.$langs->trans("Address").'</td><td>';
print '<textarea name="adresse" wrap="soft" cols="40" rows="2">'.(isset($_POST["adresse"])?$_POST["adresse"]:$adh->adresse).'</textarea></td></tr>'; print '<textarea name="adresse" wrap="soft" cols="40" rows="2">'.(isset($_POST["adresse"])?$_POST["adresse"]:$adh->adresse).'</textarea></td></tr>';
// CP / Ville // Zip / Town
print '<tr><td>'.$langs->trans("Zip").' / '.$langs->trans("Town").'</td><td><input type="text" name="cp" size="8" value="'.(isset($_POST["cp"])?$_POST["cp"]:$adh->cp).'"> <input type="text" name="ville" size="32" value="'.(isset($_POST["ville"])?$_POST["ville"]:$adh->ville).'"></td></tr>'; print '<tr><td>'.$langs->trans("Zip").' / '.$langs->trans("Town").'</td><td><input type="text" name="cp" size="8" value="'.(isset($_POST["cp"])?$_POST["cp"]:$adh->cp).'"> <input type="text" name="ville" size="32" value="'.(isset($_POST["ville"])?$_POST["ville"]:$adh->ville).'"></td></tr>';
// Country // Country
@ -824,6 +823,7 @@ if ($action == 'edit')
} }
$rowspan=17; $rowspan=17;
if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED)) $rowspan+=1;
$rowspan+=sizeof($adho->attribute_label); $rowspan+=sizeof($adho->attribute_label);
if ($conf->societe->enabled) $rowspan++; if ($conf->societe->enabled) $rowspan++;
@ -838,31 +838,49 @@ if ($action == 'edit')
// Ref // Ref
print '<tr><td>'.$langs->trans("Ref").'</td><td class="valeur" colspan="2">'.$adh->id.'</td></tr>'; print '<tr><td>'.$langs->trans("Ref").'</td><td class="valeur" colspan="2">'.$adh->id.'</td></tr>';
// Physique-Moral // Login
if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED))
{
print '<tr><td><span class="fieldrequired">'.$langs->trans("Login").' / '.$langs->trans("Id").'</span></td><td colspan="2"><input type="text" name="login" size="30" value="'.(isset($_POST["login"])?$_POST["login"]:$adh->login).'"></td></tr>';
}
// Physique-Moral
$morphys["phy"] = $langs->trans("Physical"); $morphys["phy"] = $langs->trans("Physical");
$morphys["mor"] = $langs->trans("Morale"); $morphys["mor"] = $langs->trans("Morale");
print '<tr><td><span class="fieldrequired">'.$langs->trans("Nature").'</span></td><td colspan="2">'; print '<tr><td><span class="fieldrequired">'.$langs->trans("Nature").'</span></td><td>';
print $html->selectarray("morphy", $morphys, isset($_POST["morphy"])?$_POST["morphy"]:$adh->morphy); print $html->selectarray("morphy", $morphys, isset($_POST["morphy"])?$_POST["morphy"]:$adh->morphy);
print "</td></tr>"; print "</td>";
// Photo
// Societe
print '<tr><td>'.$langs->trans("Company").'</td><td colspan="2"><input type="text" name="societe" size="40" value="'.(isset($_POST["societe"])?$_POST["societe"]:$adh->societe).'"></td></tr>';
// Civilite
print '<tr><td width="20%">'.$langs->trans("UserTitle").'</td><td width="35%">';
print $htmlcompany->select_civilite(isset($_POST["civilite_id"])?$_POST["civilite_id"]:$adh->civilite_id)."\n";
print '</td>';
// Photo
print '<td align="center" valign="middle" width="25%" rowspan="'.$rowspan.'">'; print '<td align="center" valign="middle" width="25%" rowspan="'.$rowspan.'">';
print $html->showphoto('memberphoto',$adh)."\n"; print $html->showphoto('memberphoto',$adh)."\n";
if ($caneditfieldmember) if ($caneditfieldmember)
{ {
print '<br><br><table class="nobordernopadding"><tr><td>'.$langs->trans("PhotoFile").'</td></tr>'; print '<br><br><table class="nobordernopadding"><tr><td>'.$langs->trans("PhotoFile").'</td></tr>';
print '<tr><td>'; print '<tr><td>';
print '<input type="file" class="flat" name="photo">'; print '<input type="file" class="flat" name="photo">';
print '</td></tr></table>'; print '</td></tr></table>';
} }
print '</td>';
// Type
print '<tr><td><span class="fieldrequired">'.$langs->trans("Type").'</span></td><td>';
if ($user->rights->adherent->creer)
{
print $html->selectarray("typeid", $adht->liste_array(), (isset($_POST["typeid"])?$_POST["typeid"]:$adh->typeid));
}
else
{
print $adht->getNomUrl(1);
print '<input type="hidden" name="typeid" value="'.$adh->typeid.'">';
}
print "</td></tr>";
// Company
print '<tr><td>'.$langs->trans("Company").'</td><td><input type="text" name="societe" size="40" value="'.(isset($_POST["societe"])?$_POST["societe"]:$adh->societe).'"></td></tr>';
// Civilite
print '<tr><td width="20%">'.$langs->trans("UserTitle").'</td><td width="35%">';
print $htmlcompany->select_civilite(isset($_POST["civilite_id"])?$_POST["civilite_id"]:$adh->civilite_id)."\n";
print '</td>'; print '</td>';
print '</tr>'; print '</tr>';
@ -874,24 +892,11 @@ if ($action == 'edit')
print '<tr><td width="20%">'.$langs->trans("Firstname").'</td><td><input type="text" name="prenom" size="40" value="'.(isset($_POST["prenom"])?$_POST["prenom"]:$adh->prenom).'"></td>'; print '<tr><td width="20%">'.$langs->trans("Firstname").'</td><td><input type="text" name="prenom" size="40" value="'.(isset($_POST["prenom"])?$_POST["prenom"]:$adh->prenom).'"></td>';
print '</tr>'; print '</tr>';
// Login
print '<tr><td><span class="fieldrequired">'.$langs->trans("Login").'</span></td><td><input type="text" name="login" size="30" value="'.(isset($_POST["login"])?$_POST["login"]:$adh->login).'"></td></tr>';
// Password // Password
print '<tr><td><span class="fieldrequired">'.$langs->trans("Password").'</span></td><td><input type="password" name="pass" size="30" value="'.(isset($_POST["pass"])?$_POST["pass"]:$adh->pass).'"></td></tr>'; if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED))
// Type
print '<tr><td><span class="fieldrequired">'.$langs->trans("Type").'</span></td><td>';
if ($user->rights->adherent->creer)
{ {
print $html->selectarray("typeid", $adht->liste_array(), (isset($_POST["typeid"])?$_POST["typeid"]:$adh->typeid)); print '<tr><td><span class="fieldrequired">'.$langs->trans("Password").'</span></td><td><input type="password" name="pass" size="30" value="'.(isset($_POST["pass"])?$_POST["pass"]:$adh->pass).'"></td></tr>';
} }
else
{
print $adht->getNomUrl(1);
print '<input type="hidden" name="typeid" value="'.$adh->typeid.'">';
}
print "</td></tr>";
// Address // Address
print '<tr><td>'.$langs->trans("Address").'</td><td>'; print '<tr><td>'.$langs->trans("Address").'</td><td>';
@ -1143,7 +1148,8 @@ if ($rowid && $action != 'edit')
if ($ret == 'html') print '<br>'; if ($ret == 'html') print '<br>';
} }
$rowspan=15+sizeof($adho->attribute_label); $rowspan=18+sizeof($adho->attribute_label);
if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED)) $rowspan+=1;
if ($conf->societe->enabled) $rowspan++; if ($conf->societe->enabled) $rowspan++;
print '<table class="border" width="100%">'; print '<table class="border" width="100%">';
@ -1154,35 +1160,42 @@ if ($rowid && $action != 'edit')
print $html->showrefnav($adh,'rowid'); print $html->showrefnav($adh,'rowid');
print '</td></tr>'; print '</td></tr>';
// Morphy // Login
print '<tr><td>'.$langs->trans("Nature").'</td><td class="valeur" colspan="2">'.$adh->getmorphylib().'</td></tr>'; if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED))
{
print '<tr><td>'.$langs->trans("Login").' / '.$langs->trans("Id").'</td><td class="valeur" colspan="2">'.$adh->login.'&nbsp;</td>';
print '</tr>';
}
// Morphy
print '<tr><td>'.$langs->trans("Nature").'</td><td class="valeur" >'.$adh->getmorphylib().'</td>';
print '<td rowspan="'.$rowspan.'" align="center" valign="middle" width="25%">';
print $html->showphoto('memberphoto',$adh);
print '</td>';
print '</tr>';
// Type
print '<tr><td>'.$langs->trans("Type").'</td><td class="valeur">'.$adht->getNomUrl(1)."</td></tr>\n";
// Company // Company
print '<tr><td>'.$langs->trans("Company").'</td><td class="valeur" colspan="2">'.$adh->societe.'</td></tr>'; print '<tr><td>'.$langs->trans("Company").'</td><td class="valeur">'.$adh->societe.'</td></tr>';
// Civility // Civility
print '<tr><td>'.$langs->trans("UserTitle").'</td><td class="valeur" colspan="2">'.$adh->getCivilityLabel().'&nbsp;</td>'; print '<tr><td>'.$langs->trans("UserTitle").'</td><td class="valeur">'.$adh->getCivilityLabel().'&nbsp;</td>';
print '</tr>'; print '</tr>';
// Name // Name
print '<tr><td>'.$langs->trans("Lastname").'</td><td class="valeur" colspan="2">'.$adh->nom.'&nbsp;</td>'; print '<tr><td>'.$langs->trans("Lastname").'</td><td class="valeur">'.$adh->nom.'&nbsp;</td>';
print '</tr>'; print '</tr>';
// Firstname // Firstname
print '<tr><td>'.$langs->trans("Firstname").'</td><td class="valeur" colspan="2">'.$adh->prenom.'&nbsp;</td></tr>'; print '<tr><td>'.$langs->trans("Firstname").'</td><td class="valeur">'.$adh->prenom.'&nbsp;</td></tr>';
// Login
print '<tr><td>'.$langs->trans("Login").'</td><td class="valeur">'.$adh->login.'&nbsp;</td>';
print '<td rowspan="'.$rowspan.'" align="center" valign="middle" width="25%">';
print $html->showphoto('memberphoto',$adh);
print '</td>';
print '</tr>';
// Password // Password
print '<tr><td>'.$langs->trans("Password").'</td><td>'.preg_replace('/./i','*',$adh->pass).'</td></tr>'; if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED))
{
// Type print '<tr><td>'.$langs->trans("Password").'</td><td>'.preg_replace('/./i','*',$adh->pass).'</td></tr>';
print '<tr><td>'.$langs->trans("Type").'</td><td class="valeur">'.$adht->getNomUrl(1)."</td></tr>\n"; }
// Address // Address
print '<tr><td>'.$langs->trans("Address").'</td><td class="valeur">'.nl2br($adh->adresse).'</td></tr>'; print '<tr><td>'.$langs->trans("Address").'</td><td class="valeur">'.nl2br($adh->adresse).'</td></tr>';