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 *****
For users:
- New: Login is not mandatory in member module.
- New: Reduce a step into supplier order workflow to save time (if user
has permission to approve, order is approved when order is validated).
- 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 notrigger 1 ne declenche pas les triggers, 0 sinon
* @return int <0 if KO, >0 if OK
@ -257,6 +257,8 @@ class Adherent extends CommonObject
{
global $conf,$langs;
$now=dol_now();
// Check parameters
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);
return -1;
}
if (! $this->datec) $this->datec=gmmktime();
if (empty($this->login))
if (! $this->datec) $this->datec=$now;
if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED))
{
$this->error = $langs->trans("ErrorWrongValueForParameterX","Login");
return -1;
if (empty($this->login))
{
$this->error = $langs->trans("ErrorWrongValueForParameterX","Login");
return -1;
}
}
$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.= " VALUES (";
$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.= ", null, null, '".$this->morphy."'";
$sql.= ", '".$this->typeid."'";

View File

@ -377,36 +377,33 @@ if ($_POST["action"] == 'add' && $user->rights->adherent->creer)
$adh->fk_soc = $socid;
$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
if (empty($morphy) || $morphy == "-1") {
$error++;
$errmsg .= $langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Nature"))."<br>\n";
}
// Test si le login existe deja
if (empty($login)) {
$error++;
$errmsg .= $langs->trans("ErrorFieldRequired",$langs->trans("Login"))."<br>\n";
}
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) {
if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED))
{
if (empty($login)) {
$error++;
$langs->load("errors");
$errmsg .= $langs->trans("ErrorLoginAlreadyExists",$login)."<br>\n";
$errmsg .= $langs->trans("ErrorFieldRequired",$langs->trans("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)) {
@ -428,10 +425,6 @@ if ($_POST["action"] == 'add' && $user->rights->adherent->creer)
$langs->load("errors");
$errmsg .= $langs->trans("ErrorBadEMail",$email)."<br>\n";
}
if (empty($pass)) {
$error++;
$errmsg .= $langs->trans("ErrorFieldRequired",$langs->transnoentities("Password"))."<br>\n";
}
$public=0;
if (isset($public)) $public=1;
@ -635,6 +628,12 @@ if ($action == 'create')
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
$morphys["phy"] = $langs->trans("Physical");
$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 "</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
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>';
// Login
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>';
// Mot de passe
$generated_password='';
if ($conf->global->USER_PASSWORD_GENERATED)
// Password
if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED))
{
$nomclass="modGeneratePass".ucfirst($conf->global->USER_PASSWORD_GENERATED);
$nomfichier=$nomclass.".class.php";
//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();
$generated_password='';
if ($conf->global->USER_PASSWORD_GENERATED)
{
$nomclass="modGeneratePass".ucfirst($conf->global->USER_PASSWORD_GENERATED);
$nomfichier=$nomclass.".class.php";
//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
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>';
// 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>';
// Country
@ -824,6 +823,7 @@ if ($action == 'edit')
}
$rowspan=17;
if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED)) $rowspan+=1;
$rowspan+=sizeof($adho->attribute_label);
if ($conf->societe->enabled) $rowspan++;
@ -838,31 +838,49 @@ if ($action == 'edit')
// Ref
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["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 "</td></tr>";
// 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>";
// Photo
print '<td align="center" valign="middle" width="25%" rowspan="'.$rowspan.'">';
print $html->showphoto('memberphoto',$adh)."\n";
print $html->showphoto('memberphoto',$adh)."\n";
if ($caneditfieldmember)
{
print '<br><br><table class="nobordernopadding"><tr><td>'.$langs->trans("PhotoFile").'</td></tr>';
print '<tr><td>';
print '<input type="file" class="flat" name="photo">';
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 '</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>';
// 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
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>';
// Type
print '<tr><td><span class="fieldrequired">'.$langs->trans("Type").'</span></td><td>';
if ($user->rights->adherent->creer)
if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED))
{
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
print '<tr><td>'.$langs->trans("Address").'</td><td>';
@ -1143,7 +1148,8 @@ if ($rowid && $action != 'edit')
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++;
print '<table class="border" width="100%">';
@ -1154,35 +1160,42 @@ if ($rowid && $action != 'edit')
print $html->showrefnav($adh,'rowid');
print '</td></tr>';
// Morphy
print '<tr><td>'.$langs->trans("Nature").'</td><td class="valeur" colspan="2">'.$adh->getmorphylib().'</td></tr>';
// Login
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
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
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>';
// 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>';
// Firstname
print '<tr><td>'.$langs->trans("Firstname").'</td><td class="valeur" colspan="2">'.$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>';
print '<tr><td>'.$langs->trans("Firstname").'</td><td class="valeur">'.$adh->prenom.'&nbsp;</td></tr>';
// Password
print '<tr><td>'.$langs->trans("Password").'</td><td>'.preg_replace('/./i','*',$adh->pass).'</td></tr>';
// Type
print '<tr><td>'.$langs->trans("Type").'</td><td class="valeur">'.$adht->getNomUrl(1)."</td></tr>\n";
if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED))
{
print '<tr><td>'.$langs->trans("Password").'</td><td>'.preg_replace('/./i','*',$adh->pass).'</td></tr>';
}
// Address
print '<tr><td>'.$langs->trans("Address").'</td><td class="valeur">'.nl2br($adh->adresse).'</td></tr>';