New: Member module use generic extrafields feature.

This commit is contained in:
Laurent Destailleur 2011-06-19 14:27:06 +00:00
parent fba524fe5a
commit 6ceea92eea
8 changed files with 151 additions and 110 deletions

View File

@ -30,9 +30,9 @@ require_once(DOL_DOCUMENT_ROOT."/lib/member.lib.php");
require_once(DOL_DOCUMENT_ROOT."/lib/date.lib.php"); require_once(DOL_DOCUMENT_ROOT."/lib/date.lib.php");
require_once(DOL_DOCUMENT_ROOT."/adherents/class/adherent.class.php"); require_once(DOL_DOCUMENT_ROOT."/adherents/class/adherent.class.php");
require_once(DOL_DOCUMENT_ROOT."/adherents/class/adherent_type.class.php"); require_once(DOL_DOCUMENT_ROOT."/adherents/class/adherent_type.class.php");
require_once(DOL_DOCUMENT_ROOT."/adherents/class/adherent_options.class.php");
require_once(DOL_DOCUMENT_ROOT."/adherents/class/cotisation.class.php"); require_once(DOL_DOCUMENT_ROOT."/adherents/class/cotisation.class.php");
require_once(DOL_DOCUMENT_ROOT."/compta/bank/class/account.class.php"); require_once(DOL_DOCUMENT_ROOT."/compta/bank/class/account.class.php");
require_once(DOL_DOCUMENT_ROOT."/core/class/extrafields.class.php");
$langs->load("companies"); $langs->load("companies");
$langs->load("bills"); $langs->load("bills");
@ -45,7 +45,7 @@ $langs->load("mails");
if (! $user->rights->adherent->cotisation->lire) accessforbidden(); if (! $user->rights->adherent->cotisation->lire) accessforbidden();
$adh = new Adherent($db); $adh = new Adherent($db);
$adho = new AdherentOptions($db); $adho = new ExtraFields($db);
$adht = new AdherentType($db); $adht = new AdherentType($db);
$errmsg=''; $errmsg='';

View File

@ -279,7 +279,7 @@ class Adherent extends CommonObject
$sql.= ", ".$conf->entity; $sql.= ", ".$conf->entity;
$sql.= ")"; $sql.= ")";
dol_syslog("Adherent::create sql=".$sql); dol_syslog(get_class($this)."::create sql=".$sql);
$result = $this->db->query($sql); $result = $this->db->query($sql);
if ($result) if ($result)
{ {
@ -303,7 +303,7 @@ class Adherent extends CommonObject
$sql = "UPDATE ".MAIN_DB_PREFIX."user SET"; $sql = "UPDATE ".MAIN_DB_PREFIX."user SET";
$sql.= " fk_member = '".$this->id."'"; $sql.= " fk_member = '".$this->id."'";
$sql.= " WHERE rowid = ".$this->user_id; $sql.= " WHERE rowid = ".$this->user_id;
dol_syslog("Adherent::create sql=".$sql); dol_syslog(get_class($this)."::create sql=".$sql);
$resql = $this->db->query($sql); $resql = $this->db->query($sql);
if (! $resql) if (! $resql)
{ {
@ -327,7 +327,7 @@ class Adherent extends CommonObject
if (sizeof($this->errors)) if (sizeof($this->errors))
{ {
dol_syslog("Adherent::create ".join(',',$this->errors), LOG_ERR); dol_syslog(get_class($this)."::create ".join(',',$this->errors), LOG_ERR);
$this->db->rollback(); $this->db->rollback();
return -3; return -3;
} }
@ -340,7 +340,7 @@ class Adherent extends CommonObject
else else
{ {
$this->error='Failed to get last insert id'; $this->error='Failed to get last insert id';
dol_syslog("Adherent::create ".$this->error, LOG_ERR); dol_syslog(get_class($this)."::create ".$this->error, LOG_ERR);
$this->db->rollback(); $this->db->rollback();
return -2; return -2;
} }
@ -348,7 +348,7 @@ class Adherent extends CommonObject
else else
{ {
$this->error=$this->db->error(); $this->error=$this->db->error();
dol_syslog("Adherent::create ".$this->error, LOG_ERR); dol_syslog(get_class($this)."::create ".$this->error, LOG_ERR);
$this->db->rollback(); $this->db->rollback();
return -1; return -1;
} }
@ -370,7 +370,7 @@ class Adherent extends CommonObject
$nbrowsaffected=0; $nbrowsaffected=0;
$error=0; $error=0;
dol_syslog("Adherent::update notrigger=".$notrigger.", nosyncuser=".$nosyncuser.", nosyncuserpass=".$nosyncuserpass.", email=".$this->email); dol_syslog(get_class($this)."::update notrigger=".$notrigger.", nosyncuser=".$nosyncuser.", nosyncuserpass=".$nosyncuserpass.", email=".$this->email);
// Clean parameters // Clean parameters
if (! empty($conf->global->MAIN_FIRST_TO_UPPER)) $this->nom=ucwords(trim($this->nom)); if (! empty($conf->global->MAIN_FIRST_TO_UPPER)) $this->nom=ucwords(trim($this->nom));
@ -414,7 +414,7 @@ class Adherent extends CommonObject
$sql.= ", fk_user_mod=".($user->id>0?$user->id:'null'); // Can be null because member can be create by a guest $sql.= ", fk_user_mod=".($user->id>0?$user->id:'null'); // Can be null because member can be create by a guest
$sql.= " WHERE rowid = ".$this->id; $sql.= " WHERE rowid = ".$this->id;
dol_syslog("Adherent::update update member sql=".$sql); dol_syslog(get_class($this)."::update update member sql=".$sql);
$resql = $this->db->query($sql); $resql = $this->db->query($sql);
if ($resql) if ($resql)
{ {
@ -423,7 +423,7 @@ class Adherent extends CommonObject
if (sizeof($this->array_options) > 0) if (sizeof($this->array_options) > 0)
{ {
$sql_del = "DELETE FROM ".MAIN_DB_PREFIX."adherent_extrafields WHERE fk_member = ".$this->id; $sql_del = "DELETE FROM ".MAIN_DB_PREFIX."adherent_extrafields WHERE fk_member = ".$this->id;
dol_syslog("Adherent::update sql=".$sql_del); dol_syslog(get_class($this)."::update sql=".$sql_del);
$this->db->query($sql_del); $this->db->query($sql_del);
$sql = "INSERT INTO ".MAIN_DB_PREFIX."adherent_extrafields (fk_member"; $sql = "INSERT INTO ".MAIN_DB_PREFIX."adherent_extrafields (fk_member";
@ -447,7 +447,7 @@ class Adherent extends CommonObject
} }
$sql.=")"; $sql.=")";
dol_syslog("Adherent::update update option sql=".$sql); dol_syslog(get_class($this)."::update update option sql=".$sql);
$resql = $this->db->query($sql); $resql = $this->db->query($sql);
if ($resql) if ($resql)
{ {
@ -456,7 +456,7 @@ class Adherent extends CommonObject
else else
{ {
$this->error=$this->db->error(); $this->error=$this->db->error();
dol_syslog("Adherent::update ".$this->error,LOG_ERR); dol_syslog(get_class($this)."::update ".$this->error,LOG_ERR);
$this->db->rollback(); $this->db->rollback();
return -2; return -2;
} }
@ -465,7 +465,7 @@ class Adherent extends CommonObject
// Update password // Update password
if ($this->pass) if ($this->pass)
{ {
dol_syslog("Adherent::update update password"); dol_syslog(get_class($this)."::update update password");
if ($this->pass != $this->pass_indatabase && $this->pass != $this->pass_indatabase_crypted) if ($this->pass != $this->pass_indatabase && $this->pass != $this->pass_indatabase_crypted)
{ {
// Si mot de passe saisi et different de celui en base // Si mot de passe saisi et different de celui en base
@ -475,16 +475,16 @@ class Adherent extends CommonObject
} }
// Remove link to user // Remove link to user
dol_syslog("Adherent::update update link to user"); dol_syslog(get_class($this)."::update update link to user");
$sql = "UPDATE ".MAIN_DB_PREFIX."user SET fk_member = NULL WHERE fk_member = ".$this->id; $sql = "UPDATE ".MAIN_DB_PREFIX."user SET fk_member = NULL WHERE fk_member = ".$this->id;
dol_syslog("Adherent::update sql=".$sql, LOG_DEBUG); dol_syslog(get_class($this)."::update sql=".$sql, LOG_DEBUG);
$resql = $this->db->query($sql); $resql = $this->db->query($sql);
if (! $resql) { $this->error=$this->db->error(); $this->db->rollback(); return -5; } if (! $resql) { $this->error=$this->db->error(); $this->db->rollback(); return -5; }
// If there is a user linked to this member // If there is a user linked to this member
if ($this->user_id > 0) if ($this->user_id > 0)
{ {
$sql = "UPDATE ".MAIN_DB_PREFIX."user SET fk_member = ".$this->id." WHERE rowid = ".$this->user_id; $sql = "UPDATE ".MAIN_DB_PREFIX."user SET fk_member = ".$this->id." WHERE rowid = ".$this->user_id;
dol_syslog("Adherent::update sql=".$sql, LOG_DEBUG); dol_syslog(get_class($this)."::update sql=".$sql, LOG_DEBUG);
$resql = $this->db->query($sql); $resql = $this->db->query($sql);
if (! $resql) { $this->error=$this->db->error(); $this->db->rollback(); return -5; } if (! $resql) { $this->error=$this->db->error(); $this->db->rollback(); return -5; }
} }
@ -495,7 +495,7 @@ class Adherent extends CommonObject
{ {
require_once(DOL_DOCUMENT_ROOT."/user/class/user.class.php"); require_once(DOL_DOCUMENT_ROOT."/user/class/user.class.php");
dol_syslog("Adherent::update update linked user"); dol_syslog(get_class($this)."::update update linked user");
// This member is linked with a user, so we also update users informations // This member is linked with a user, so we also update users informations
// if this is an update. // if this is an update.
@ -523,7 +523,7 @@ class Adherent extends CommonObject
if ($result < 0) if ($result < 0)
{ {
$this->error=$luser->error; $this->error=$luser->error;
dol_syslog("Adherent::update ".$this->error,LOG_ERR); dol_syslog(get_class($this)."::update ".$this->error,LOG_ERR);
$error++; $error++;
} }
} }
@ -563,7 +563,7 @@ class Adherent extends CommonObject
$this->db->rollback(); $this->db->rollback();
$this->error=$this->db->lasterror(); $this->error=$this->db->lasterror();
dol_syslog("Adherent::update ".$this->error,LOG_ERR); dol_syslog(get_class($this)."::update ".$this->error,LOG_ERR);
return -1; return -1;
} }
} }
@ -589,7 +589,7 @@ class Adherent extends CommonObject
$sql.= " WHERE fk_adherent='".$this->id."'"; $sql.= " WHERE fk_adherent='".$this->id."'";
$sql.= " ORDER by dateadh DESC"; // Sort by start subscription date $sql.= " ORDER by dateadh DESC"; // Sort by start subscription date
dol_syslog("Adherent::update_end_date sql=".$sql); dol_syslog(get_class($this)."::update_end_date sql=".$sql);
$resql=$this->db->query($sql); $resql=$this->db->query($sql);
if ($resql) if ($resql)
{ {
@ -602,7 +602,7 @@ class Adherent extends CommonObject
$sql.= " datefin=".($datefin != '' ? "'".$this->db->idate($datefin)."'" : "null"); $sql.= " datefin=".($datefin != '' ? "'".$this->db->idate($datefin)."'" : "null");
$sql.= " WHERE rowid = ".$this->id; $sql.= " WHERE rowid = ".$this->id;
dol_syslog("Adherent::update_end_date sql=".$sql); dol_syslog(get_class($this)."::update_end_date sql=".$sql);
$resql=$this->db->query($sql); $resql=$this->db->query($sql);
if ($resql) if ($resql)
{ {
@ -622,7 +622,7 @@ class Adherent extends CommonObject
else else
{ {
$this->error=$this->db->lasterror(); $this->error=$this->db->lasterror();
dol_syslog("Adherent::update_end_date ".$this->error, LOG_ERR); dol_syslog(get_class($this)."::update_end_date ".$this->error, LOG_ERR);
$this->db->rollback(); $this->db->rollback();
return -1; return -1;
} }
@ -644,17 +644,17 @@ class Adherent extends CommonObject
// Suppression options // Suppression options
$sql = "DELETE FROM ".MAIN_DB_PREFIX."adherent_extrafields WHERE fk_member = ".$rowid; $sql = "DELETE FROM ".MAIN_DB_PREFIX."adherent_extrafields WHERE fk_member = ".$rowid;
dol_syslog("Adherent::delete sql=".$sql); dol_syslog(get_class($this)."::delete sql=".$sql);
$resql=$this->db->query($sql); $resql=$this->db->query($sql);
if ($resql) if ($resql)
{ {
$sql = "DELETE FROM ".MAIN_DB_PREFIX."cotisation WHERE fk_adherent = ".$rowid; $sql = "DELETE FROM ".MAIN_DB_PREFIX."cotisation WHERE fk_adherent = ".$rowid;
dol_syslog("Adherent::delete sql=".$sql); dol_syslog(get_class($this)."::delete sql=".$sql);
$resql=$this->db->query( $sql); $resql=$this->db->query( $sql);
if ($resql) if ($resql)
{ {
$sql = "DELETE FROM ".MAIN_DB_PREFIX."adherent WHERE rowid = ".$rowid; $sql = "DELETE FROM ".MAIN_DB_PREFIX."adherent WHERE rowid = ".$rowid;
dol_syslog("Adherent::delete sql=".$sql); dol_syslog(get_class($this)."::delete sql=".$sql);
$resql=$this->db->query($sql); $resql=$this->db->query($sql);
if ($resql) if ($resql)
{ {
@ -720,7 +720,7 @@ class Adherent extends CommonObject
$error=0; $error=0;
dol_syslog("Adherent::Password user=".$user->id." password=".preg_replace('/./i','*',$password)." isencrypted=".$isencrypted); dol_syslog(get_class($this)."::setPassword user=".$user->id." password=".preg_replace('/./i','*',$password)." isencrypted=".$isencrypted);
// If new password not provided, we generate one // If new password not provided, we generate one
if (! $password) if (! $password)
@ -746,7 +746,7 @@ class Adherent extends CommonObject
$sql.= " WHERE rowid = ".$this->id; $sql.= " WHERE rowid = ".$this->id;
//dol_syslog("Adherent::Password sql=hidden"); //dol_syslog("Adherent::Password sql=hidden");
dol_syslog("Adherent::Password sql=".$sql); dol_syslog(get_class($this)."::setPassword sql=".$sql);
$result = $this->db->query($sql); $result = $this->db->query($sql);
if ($result) if ($result)
{ {
@ -772,7 +772,7 @@ class Adherent extends CommonObject
if ($result < 0) if ($result < 0)
{ {
$this->error=$luser->error; $this->error=$luser->error;
dol_syslog("Adherent::password ".$this->error,LOG_ERR); dol_syslog(get_class($this)."::setPassword ".$this->error,LOG_ERR);
$error++; $error++;
} }
} }
@ -821,7 +821,7 @@ class Adherent extends CommonObject
// If user is linked to this member, remove old link to this member // If user is linked to this member, remove old link to this member
$sql = "UPDATE ".MAIN_DB_PREFIX."user SET fk_member = NULL WHERE fk_member = ".$this->id; $sql = "UPDATE ".MAIN_DB_PREFIX."user SET fk_member = NULL WHERE fk_member = ".$this->id;
dol_syslog("Adherent::setUserId sql=".$sql, LOG_DEBUG); dol_syslog(get_class($this)."::setUserId sql=".$sql, LOG_DEBUG);
$resql = $this->db->query($sql); $resql = $this->db->query($sql);
if (! $resql) { $this->error=$this->db->error(); $this->db->rollback(); return -1; } if (! $resql) { $this->error=$this->db->error(); $this->db->rollback(); return -1; }
@ -830,7 +830,7 @@ class Adherent extends CommonObject
{ {
$sql = "UPDATE ".MAIN_DB_PREFIX."user SET fk_member = ".$this->id; $sql = "UPDATE ".MAIN_DB_PREFIX."user SET fk_member = ".$this->id;
$sql.= " WHERE rowid = ".$userid; $sql.= " WHERE rowid = ".$userid;
dol_syslog("Adherent::setUserId sql=".$sql, LOG_DEBUG); dol_syslog(get_class($this)."::setUserId sql=".$sql, LOG_DEBUG);
$resql = $this->db->query($sql); $resql = $this->db->query($sql);
if (! $resql) { $this->error=$this->db->error(); $this->db->rollback(); return -2; } if (! $resql) { $this->error=$this->db->error(); $this->db->rollback(); return -2; }
} }
@ -858,7 +858,7 @@ class Adherent extends CommonObject
$sql = "UPDATE ".MAIN_DB_PREFIX."adherent SET fk_soc = null"; $sql = "UPDATE ".MAIN_DB_PREFIX."adherent SET fk_soc = null";
$sql.= " WHERE fk_soc = '".$thirdpartyid."'"; $sql.= " WHERE fk_soc = '".$thirdpartyid."'";
$sql.= " AND entity = ".$conf->entity; $sql.= " AND entity = ".$conf->entity;
dol_syslog("Adherent::setThirdPartyId sql=".$sql); dol_syslog(get_class($this)."::setThirdPartyId sql=".$sql);
$resql = $this->db->query($sql); $resql = $this->db->query($sql);
} }
@ -866,7 +866,7 @@ class Adherent extends CommonObject
$sql = "UPDATE ".MAIN_DB_PREFIX."adherent SET fk_soc = ".($thirdpartyid>0 ? $thirdpartyid : 'null'); $sql = "UPDATE ".MAIN_DB_PREFIX."adherent SET fk_soc = ".($thirdpartyid>0 ? $thirdpartyid : 'null');
$sql.= " WHERE rowid = ".$this->id; $sql.= " WHERE rowid = ".$this->id;
dol_syslog("Adherent::setThirdPartyId sql=".$sql); dol_syslog(get_class($this)."::setThirdPartyId sql=".$sql);
$resql = $this->db->query($sql); $resql = $this->db->query($sql);
if ($resql) if ($resql)
{ {
@ -876,7 +876,7 @@ class Adherent extends CommonObject
else else
{ {
$this->error=$this->db->error(); $this->error=$this->db->error();
dol_syslog("Adherent::setThirdPartyId ".$this->error, LOG_ERR); dol_syslog(get_class($this)."::setThirdPartyId ".$this->error, LOG_ERR);
$this->db->rollback(); $this->db->rollback();
return -1; return -1;
} }
@ -947,7 +947,7 @@ class Adherent extends CommonObject
elseif ($fk_soc) $sql.= " AND d.fk_soc='".$fk_soc."'"; elseif ($fk_soc) $sql.= " AND d.fk_soc='".$fk_soc."'";
else $sql.= " AND d.rowid=".$rowid; else $sql.= " AND d.rowid=".$rowid;
dol_syslog("Adherent::fetch sql=".$sql); dol_syslog(get_class($this)."::fetch sql=".$sql);
$resql=$this->db->query($sql); $resql=$this->db->query($sql);
if ($resql) if ($resql)
{ {
@ -1022,7 +1022,7 @@ class Adherent extends CommonObject
else else
{ {
$this->error=$this->db->lasterror(); $this->error=$this->db->lasterror();
dol_syslog("Adherent::fetch ".$this->error, LOG_ERR); dol_syslog(get_class($this)."::fetch ".$this->error, LOG_ERR);
return -1; return -1;
} }
} }
@ -1048,7 +1048,7 @@ class Adherent extends CommonObject
$sql.= " FROM ".MAIN_DB_PREFIX."cotisation as c"; $sql.= " FROM ".MAIN_DB_PREFIX."cotisation as c";
$sql.= " WHERE c.fk_adherent = ".$this->id; $sql.= " WHERE c.fk_adherent = ".$this->id;
$sql.= " ORDER BY c.dateadh"; $sql.= " ORDER BY c.dateadh";
dol_syslog("Adherent::fetch_subscriptions sql=".$sql); dol_syslog(get_class($this)."::fetch_subscriptions sql=".$sql);
$resql=$this->db->query($sql); $resql=$this->db->query($sql);
if ($resql) if ($resql)
@ -1092,27 +1092,28 @@ class Adherent extends CommonObject
/** /**
* Fonction qui recupere les donnees optionelles de l'adherent * Function to get extra fields of a member into $this->array_options
* @param rowid * @param rowid
* TODO Move this function into ExtraField class
* TODO rename field fk_member into fk_element
*/ */
function fetch_optionals($rowid) function fetch_optionals($rowid)
{ {
$options = new AdherentOptions($this->db); require_once(DOL_DOCUMENT_ROOT."/core/class/extrafields.class.php");
$options = new ExtraFields($this->db);
$optionsArray = $options->fetch_name_optionals_label(); $optionsArray = $options->fetch_name_optionals_label();
$tab=array(); $tab=array();
$sql = "SELECT rowid"; $sql = "SELECT rowid";
foreach ($optionsArray as $name => $label) foreach ($optionsArray as $name => $label)
{ {
$sql.= ", ".$name; $sql.= ", ".$name;
} }
$sql.= " FROM ".MAIN_DB_PREFIX."adherent_extrafields"; $sql.= " FROM ".MAIN_DB_PREFIX."adherent_extrafields";
$sql.= " WHERE fk_member=".$rowid; $sql.= " WHERE fk_member=".$rowid;
dol_syslog("Adherent::fetch_optionals sql=".$sql, LOG_DEBUG); dol_syslog(get_class($this)."::fetch_optionals sql=".$sql, LOG_DEBUG);
$result=$this->db->query( $sql); $result=$this->db->query( $sql);
if ($result) if ($result)
{ {
@ -1236,7 +1237,7 @@ class Adherent extends CommonObject
if ($this->statut == 1) if ($this->statut == 1)
{ {
dol_syslog("Adherent::validate statut of member does not allow this", LOG_WARNING); dol_syslog(get_class($this)."::validate statut of member does not allow this", LOG_WARNING);
return 0; return 0;
} }
@ -1248,7 +1249,7 @@ class Adherent extends CommonObject
$sql.= ", fk_user_valid=".$user->id; $sql.= ", fk_user_valid=".$user->id;
$sql.= " WHERE rowid = ".$this->id; $sql.= " WHERE rowid = ".$this->id;
dol_syslog("Adherent::validate sql=".$sql); dol_syslog(get_class($this)."::validate sql=".$sql);
$result = $this->db->query($sql); $result = $this->db->query($sql);
if ($result) if ($result)
{ {
@ -1286,7 +1287,7 @@ class Adherent extends CommonObject
if ($this->statut == 0) if ($this->statut == 0)
{ {
dol_syslog("Adherent::resiliate statut of member does not allow this", LOG_WARNING); dol_syslog(get_class($this)."::resiliate statut of member does not allow this", LOG_WARNING);
return 0; return 0;
} }
@ -1405,7 +1406,7 @@ class Adherent extends CommonObject
{ {
require_once(DOL_DOCUMENT_ROOT.'/lib/security.lib.php'); require_once(DOL_DOCUMENT_ROOT.'/lib/security.lib.php');
dol_syslog("Adherent::add_to_spip"); dol_syslog(get_class($this)."::add_to_spip");
if (defined("ADHERENT_USE_SPIP") && ADHERENT_USE_SPIP ==1 && if (defined("ADHERENT_USE_SPIP") && ADHERENT_USE_SPIP ==1 &&
defined('ADHERENT_SPIP_SERVEUR') && ADHERENT_SPIP_SERVEUR != '' && defined('ADHERENT_SPIP_SERVEUR') && ADHERENT_SPIP_SERVEUR != '' &&
@ -1517,7 +1518,7 @@ class Adherent extends CommonObject
{ {
global $conf,$langs; global $conf,$langs;
dol_syslog("Adherent::add_to_mailman"); dol_syslog(get_class($this)."::add_to_mailman");
if (! function_exists("curl_init")) if (! function_exists("curl_init"))
{ {
@ -2059,7 +2060,7 @@ class Adherent extends CommonObject
$sql.= ' FROM '.MAIN_DB_PREFIX.'adherent as a'; $sql.= ' FROM '.MAIN_DB_PREFIX.'adherent as a';
$sql.= ' WHERE a.rowid = '.$id; $sql.= ' WHERE a.rowid = '.$id;
dol_syslog("Adherent::info sql=".$sql, LOG_DEBUG); dol_syslog(get_class($this)."::info sql=".$sql, LOG_DEBUG);
$result=$this->db->query($sql); $result=$this->db->query($sql);
if ($result) if ($result)
{ {

View File

@ -33,7 +33,7 @@ require_once(DOL_DOCUMENT_ROOT."/lib/images.lib.php");
require_once(DOL_DOCUMENT_ROOT."/lib/functions2.lib.php"); require_once(DOL_DOCUMENT_ROOT."/lib/functions2.lib.php");
require_once(DOL_DOCUMENT_ROOT."/adherents/class/adherent.class.php"); require_once(DOL_DOCUMENT_ROOT."/adherents/class/adherent.class.php");
require_once(DOL_DOCUMENT_ROOT."/adherents/class/adherent_type.class.php"); require_once(DOL_DOCUMENT_ROOT."/adherents/class/adherent_type.class.php");
require_once(DOL_DOCUMENT_ROOT."/adherents/class/adherent_options.class.php"); require_once(DOL_DOCUMENT_ROOT."/core/class/extrafields.class.php");
require_once(DOL_DOCUMENT_ROOT."/adherents/class/cotisation.class.php"); require_once(DOL_DOCUMENT_ROOT."/adherents/class/cotisation.class.php");
require_once(DOL_DOCUMENT_ROOT."/compta/bank/class/account.class.php"); require_once(DOL_DOCUMENT_ROOT."/compta/bank/class/account.class.php");
require_once(DOL_DOCUMENT_ROOT."/core/class/html.formcompany.class.php"); require_once(DOL_DOCUMENT_ROOT."/core/class/html.formcompany.class.php");
@ -47,7 +47,7 @@ $langs->load("users");
if (! $user->rights->adherent->lire) accessforbidden(); if (! $user->rights->adherent->lire) accessforbidden();
$adh = new Adherent($db); $adh = new Adherent($db);
$adho = new AdherentOptions($db); $adho = new ExtraFields($db);
$errmsg=''; $errmsg='';
$action=GETPOST("action"); $action=GETPOST("action");
@ -796,7 +796,7 @@ if ($action == 'edit')
* *
********************************************/ ********************************************/
$adho = new AdherentOptions($db); $adho = new ExtraFields($db);
$adh = new Adherent($db); $adh = new Adherent($db);
$adh->id = $rowid; $adh->id = $rowid;
$adh->fetch($rowid); $adh->fetch($rowid);

View File

@ -26,11 +26,11 @@
*/ */
require("../main.inc.php"); require("../main.inc.php");
require(DOL_DOCUMENT_ROOT."/adherents/class/adherent_options.class.php"); require_once(DOL_DOCUMENT_ROOT."/core/class/extrafields.class.php");
$langs->load("members"); $langs->load("members");
$adho = new AdherentOptions($db); $adho = new ExtraFields($db);
$form = new Form($db); $form = new Form($db);
/* /*

View File

@ -3,7 +3,7 @@
* Copyright (C) 2002-2003 Jean-Louis Bergamo <jlb@j1b.org> * Copyright (C) 2002-2003 Jean-Louis Bergamo <jlb@j1b.org>
* Copyright (C) 2004 Sebastien Di Cintio <sdicintio@ressource-toi.org> * Copyright (C) 2004 Sebastien Di Cintio <sdicintio@ressource-toi.org>
* Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be> * Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be>
* Copyright (C) 2009 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2009-2011 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2009 Regis Houssin <regis@dolibarr.fr> * Copyright (C) 2009 Regis Houssin <regis@dolibarr.fr>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
@ -22,19 +22,18 @@
*/ */
/** /**
* \file htdocs/adherents/class/adherent_options.class.php * \file htdocs/core/class/extrafields.class.php
* \ingroup member * \ingroup core
* \brief File of class to manage optionnal fields * \brief File of class to manage extra fields
* \version $Id$ * \version $Id$
*/ */
/** /**
* \class AdherentOptions * \class ExtraFields
* \brief Class to manage table of optionnal fields * \brief Class to manage standard extra fields
*/ */
class AdherentOptions class ExtraFields
{ {
var $id;
var $db; var $db;
// Tableau contenant le nom des champs en clef et la definition de ces champs // Tableau contenant le nom des champs en clef et la definition de ces champs
var $attribute_type; var $attribute_type;
@ -44,24 +43,20 @@ class AdherentOptions
var $attribute_size; var $attribute_size;
var $error; var $error;
/*
* Constructor
*
*/
/** /**
* \brief AdherentOptions * Constructor
* \param DB base de donnees * @param DB base de donnees
* \param id id de l'adherent
*/ */
function AdherentOptions($DB, $id='') function ExtraFields($DB)
{ {
$this->db = $DB ; $this->db = $DB ;
$this->id = $id;
$this->error = array(); $this->error = array();
$this->attribute_type = array(); $this->attribute_type = array();
$this->attribute_label = array(); $this->attribute_label = array();
$this->attribute_size = array(); $this->attribute_size = array();
$this->attribute_elementtype = array();
} }
/** /**
@ -69,13 +64,26 @@ class AdherentOptions
* @param attrname code of attribute * @param attrname code of attribute
* @param type Type of attribute ('int', 'text', 'varchar', 'date', 'datehour') * @param type Type of attribute ('int', 'text', 'varchar', 'date', 'datehour')
* @param length Size/length of attribute * @param length Size/length of attribute
* @param elementtype Element type ('member', 'product', 'company', ...)
* @return int <=0 if KO, >0 if OK
*/ */
function create($attrname,$type='varchar',$length=255) { function create($attrname,$type='varchar',$length=255,$elementtype='member')
{
$table='';
if ($elementtype == 'member') $table='adherent_extrafields';
if ($elementtype == 'company') $table='societe_extrafields';
if ($elementtype == 'contact') $table='socpeople_extrafields';
if ($elementtype == 'product') $table='product_extrafields';
if (empty($table))
{
print 'ErrorBarValueForParameters';
return -1;
}
if (isset($attrname) && $attrname != '' && preg_match("/^\w[a-zA-Z0-9-_]*$/",$attrname)) if (isset($attrname) && $attrname != '' && preg_match("/^\w[a-zA-Z0-9-_]*$/",$attrname))
{ {
$field_desc = array('type'=>$type, 'value'=>$length); $field_desc = array('type'=>$type, 'value'=>$length);
$result=$this->db->DDLAddField(MAIN_DB_PREFIX.'adherent_extrafields', $attrname, $field_desc); $result=$this->db->DDLAddField(MAIN_DB_PREFIX.$table, $attrname, $field_desc);
if ($result > 0) if ($result > 0)
{ {
return 1; return 1;
@ -99,7 +107,7 @@ class AdherentOptions
* @param type Type of attribute ('int', 'text', 'varchar', 'date', 'datehour') * @param type Type of attribute ('int', 'text', 'varchar', 'date', 'datehour')
* @param pos Position of attribute * @param pos Position of attribute
* @param size Size/length of attribute * @param size Size/length of attribute
* @param elementtype Element type ('member', 'product', ...) * @param elementtype Element type ('member', 'product', 'company', ...)
* @return int <=0 if KO, >0 if OK * @return int <=0 if KO, >0 if OK
*/ */
function create_label($attrname,$label='',$type='',$pos=0,$size=0, $elementtype='member') function create_label($attrname,$label='',$type='',$pos=0,$size=0, $elementtype='member')
@ -118,11 +126,11 @@ class AdherentOptions
$sql.= " '".$type."',"; $sql.= " '".$type."',";
$sql.= " '".$pos."',"; $sql.= " '".$pos."',";
$sql.= " '".$size."',"; $sql.= " '".$size."',";
$sql.= " ".$conf->entity; $sql.= " ".$conf->entity.",";
$sql.= ", '".$elementtype."'"; $sql.= " '".$elementtype."'";
$sql.=')'; $sql.=')';
dol_syslog("AdherentOptions::create_label sql=".$sql); dol_syslog(get_class($this)."::create_label sql=".$sql);
if ($this->db->query($sql)) if ($this->db->query($sql))
{ {
return 1; return 1;
@ -137,18 +145,30 @@ class AdherentOptions
/** /**
* Delete an optionnal attribute * Delete an optionnal attribute
* @param attrname Code of attribute to delete * @param attrname Code of attribute to delete
* TODO This does not work with multicompany module * @param elementtype Element type ('member', 'product', 'company', ...)
* @return int < 0 if KO, 0 if nothing is done, 1 if OK
*/ */
function delete($attrname) function delete($attrname,$elementtype='member')
{ {
$table='';
if ($elementtype == 'member') $table='adherent_extrafields';
if ($elementtype == 'company') $table='societe_extrafields';
if ($elementtype == 'contact') $table='socpeople_extrafields';
if ($elementtype == 'product') $table='product_extrafields';
if (empty($table))
{
print 'ErrorBarValueForParameters';
return -1;
}
if (isset($attrname) && $attrname != '' && preg_match("/^\w[a-zA-Z0-9-_]*$/",$attrname)) if (isset($attrname) && $attrname != '' && preg_match("/^\w[a-zA-Z0-9-_]*$/",$attrname))
{ {
$result=$this->db->DDLDropField(MAIN_DB_PREFIX."adherent_extrafields",$attrname); $result=$this->db->DDLDropField(MAIN_DB_PREFIX.$table,$attrname);
if ($result < 0) if ($result < 0)
{ {
$this->error=$this->db->lasterror(); $this->error=$this->db->lasterror();
dol_syslog("AdherentOption::delete ".$this->error, LOG_ERR); dol_syslog(get_class($this)."::delete ".$this->error, LOG_ERR);
} }
$result=$this->delete_label($attrname); $result=$this->delete_label($attrname);
@ -165,18 +185,21 @@ class AdherentOptions
/** /**
* Delete description of an optionnal attribute * Delete description of an optionnal attribute
* @param attrname Code of attribute to delete * @param attrname Code of attribute to delete
* @param elementtype Element type ('member', 'product', 'company', ...)
* @return int < 0 if KO, 0 if nothing is done, 1 if OK
*/ */
function delete_label($attrname) function delete_label($attrname,$elementtype='member')
{ {
global $conf; global $conf;
if (isset($attrname) && $attrname != '' && preg_match("/^\w[a-zA-Z0-9-_]*$/",$attrname)) if (isset($attrname) && $attrname != '' && preg_match("/^\w[a-zA-Z0-9-_]*$/",$attrname))
{ {
$sql = "DELETE FROM ".MAIN_DB_PREFIX."extrafields"; $sql = "DELETE FROM ".MAIN_DB_PREFIX."extrafields";
$sql.= " WHERE name = '$attrname'"; $sql.= " WHERE name = '".$attrname."'";
$sql.= " AND entity = ".$conf->entity; $sql.= " AND entity = ".$conf->entity;
$sql.= " AND elementtype = '".$elementtype."'";
dol_syslog("AdherentOptions::delete_label sql=".$sql); dol_syslog(get_class($this)."::delete_label sql=".$sql);
if ( $this->db->query( $sql) ) if ( $this->db->query( $sql) )
{ {
return 1; return 1;
@ -184,7 +207,7 @@ class AdherentOptions
else else
{ {
print dol_print_error($this->db); print dol_print_error($this->db);
return 0; return -1;
} }
} }
else else
@ -199,15 +222,26 @@ class AdherentOptions
* @param attrname name of attribute * @param attrname name of attribute
* @param type type of attribute * @param type type of attribute
* @param length length of attribute * @param length length of attribute
* @param elementtype Element type ('member', 'product', 'company', ...)
* @return int >0 if OK, <=0 if KO * @return int >0 if OK, <=0 if KO
* TODO This does not works with mutlicompany module
*/ */
function update($attrname,$type='varchar',$length=255) function update($attrname,$type='varchar',$length=255,$elementtype='member')
{ {
if (isset($attrname) && $attrname != '' && preg_match("/^\w[a-zA-Z0-9-_]*$/",$attrname)) $table='';
if ($elementtype == 'member') $table='adherent_extrafields';
if ($elementtype == 'company') $table='societe_extrafields';
if ($elementtype == 'contact') $table='socpeople_extrafields';
if ($elementtype == 'product') $table='product_extrafields';
if (empty($table))
{
print 'ErrorBarValueForParameters';
return -1;
}
if (isset($attrname) && $attrname != '' && preg_match("/^\w[a-zA-Z0-9-_]*$/",$attrname))
{ {
$field_desc = array('type'=>$type, 'value'=>$length); $field_desc = array('type'=>$type, 'value'=>$length);
$result=$this->db->DDLUpdateField(MAIN_DB_PREFIX.'extrafields', $attrname, $field_desc); $result=$this->db->DDLUpdateField(MAIN_DB_PREFIX.$table, $attrname, $field_desc);
if ($result > 0) if ($result > 0)
{ {
return 1; return 1;
@ -226,17 +260,17 @@ class AdherentOptions
} }
/** /**
* Modify description of an optionnal attribute * Modify description of personalized attribute
* @param attrname nom de l'atribut * @param attrname name of attribute
* @param label nom du label * @param label label of attribute
* @param type type * @param type type of attribute
* @param size size * @param length length of attribute
* @param elementtype Element type ('member', 'product', ...) * @param elementtype Element type ('member', 'product', 'company', ...)
*/ */
function update_label($attrname,$label,$type,$size,$elementtype='member') function update_label($attrname,$label,$type,$size,$elementtype='member')
{ {
global $conf; global $conf;
dol_syslog("AdherentOptions::update_label $attrname,$label,$type,$size"); dol_syslog(get_class($this)."::update_label $attrname,$label,$type,$size");
if (isset($attrname) && $attrname != '' && preg_match("/^\w[a-zA-Z0-9-_]*$/",$attrname)) if (isset($attrname) && $attrname != '' && preg_match("/^\w[a-zA-Z0-9-_]*$/",$attrname))
{ {
@ -246,7 +280,7 @@ class AdherentOptions
$sql_del.= " WHERE name = '".$attrname."'"; $sql_del.= " WHERE name = '".$attrname."'";
$sql_del.= " AND entity = ".$conf->entity; $sql_del.= " AND entity = ".$conf->entity;
$sql_del.= " AND elementtype = '".$elementtype."'"; $sql_del.= " AND elementtype = '".$elementtype."'";
dol_syslog("AdherentOptions::update_label sql=".$sql_del); dol_syslog(get_class($this)."::update_label sql=".$sql_del);
$resql1=$this->db->query($sql_del); $resql1=$this->db->query($sql_del);
$sql = "INSERT INTO ".MAIN_DB_PREFIX."extrafields("; $sql = "INSERT INTO ".MAIN_DB_PREFIX."extrafields(";
@ -254,7 +288,8 @@ class AdherentOptions
$sql.= " entity,"; $sql.= " entity,";
$sql.= " label,"; $sql.= " label,";
$sql.= " type,"; $sql.= " type,";
$sql.= " size"; $sql.= " size,";
$sql.= " elementtype";
$sql.= ") VALUES ("; $sql.= ") VALUES (";
$sql.= "'".$attrname."',"; $sql.= "'".$attrname."',";
$sql.= " ".$conf->entity.","; $sql.= " ".$conf->entity.",";
@ -263,7 +298,7 @@ class AdherentOptions
$sql.= " '".$size."',"; $sql.= " '".$size."',";
$sql.= " '".$elementtype."'"; $sql.= " '".$elementtype."'";
$sql.= ")"; $sql.= ")";
dol_syslog("AdherentOptions::update_label sql=".$sql); dol_syslog(get_class($this)."::update_label sql=".$sql);
$resql2=$this->db->query($sql); $resql2=$this->db->query($sql);
if ($resql1 && $resql2) if ($resql1 && $resql2)
@ -287,7 +322,7 @@ class AdherentOptions
/** /**
* \brief fonction qui modifie un label * Load array of labels
*/ */
function fetch_optionals() function fetch_optionals()
{ {
@ -296,7 +331,7 @@ class AdherentOptions
/** /**
* \brief Load array this->attribute_label * Load array this->attribute_label
*/ */
function fetch_name_optionals_label($elementtype='member') function fetch_name_optionals_label($elementtype='member')
{ {
@ -310,7 +345,7 @@ class AdherentOptions
if ($elementtype) $sql.= " AND elementtype = '".$elementtype."'"; if ($elementtype) $sql.= " AND elementtype = '".$elementtype."'";
$sql.= " ORDER BY pos"; $sql.= " ORDER BY pos";
dol_syslog("Adherent_options::fetch_name_optionals_label sql=".$sql); dol_syslog(get_class($this)."::fetch_name_optionals_label sql=".$sql);
$resql=$this->db->query($sql); $resql=$this->db->query($sql);
if ($resql) if ($resql)
{ {

View File

@ -239,7 +239,7 @@ if (! empty($conf->file->main_force_https))
// Chargement des includes complementaires de presentation // Chargement des includes complementaires de presentation
if (! defined('NOREQUIREMENU')) require_once(DOL_DOCUMENT_ROOT ."/core/class/menu.class.php"); // Need 10ko memory (11ko in 2.2) if (! defined('NOREQUIREMENU')) require_once(DOL_DOCUMENT_ROOT ."/core/class/menu.class.php"); // Need 10ko memory (11ko in 2.2)
if (! defined('NOREQUIREHTML')) require_once(DOL_DOCUMENT_ROOT ."/core/class/html.form.class.php"); // Need 660ko memory (800ko in 2.2) if (! defined('NOREQUIREHTML')) require_once(DOL_DOCUMENT_ROOT ."/core/class/html.form.class.php"); // Need 660ko memory (800ko in 2.2)
if (! defined('NOREQUIREAJAX') && $conf->use_javascript_ajax) require_once(DOL_DOCUMENT_ROOT.'/lib/ajax.lib.php'); // Need 22ko memory if (! defined('NOREQUIREAJAX') && $conf->use_javascript_ajax) require_once(DOL_DOCUMENT_ROOT.'/lib/ajax.lib.php'); // Need 22ko memory
//dol_stopwithmem(); //dol_stopwithmem();

View File

@ -31,8 +31,7 @@ define("NOCSRFCHECK",1); // We accept to go on this page from external web site.
require("../../main.inc.php"); require("../../main.inc.php");
require_once(DOL_DOCUMENT_ROOT."/adherents/class/adherent.class.php"); require_once(DOL_DOCUMENT_ROOT."/adherents/class/adherent.class.php");
require_once(DOL_DOCUMENT_ROOT."/adherents/class/adherent_type.class.php"); require_once(DOL_DOCUMENT_ROOT."/adherents/class/adherent_type.class.php");
require_once(DOL_DOCUMENT_ROOT."/adherents/class/adherent_options.class.php"); require_once(DOL_DOCUMENT_ROOT."/core/class/extrafields.class.php");
require_once(DOL_DOCUMENT_ROOT."/core/class/html.form.class.php");
// Security check // Security check
if (empty($conf->adherent->enabled)) accessforbidden('',1,1,1); if (empty($conf->adherent->enabled)) accessforbidden('',1,1,1);
@ -217,7 +216,7 @@ if (isset($_GET["action"]) && $_GET["action"] == 'added')
$html = new Form($db); $html = new Form($db);
$adht = new AdherentType($db); $adht = new AdherentType($db);
$adho = new AdherentOptions($db); $adho = new ExtraFields($db);
llxHeaderVierge($langs->trans("NewSubscription")); llxHeaderVierge($langs->trans("NewSubscription"));

View File

@ -1,7 +1,7 @@
<?php <?php
/* Copyright (C) 2001-2003 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2001-2003 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2002-2003 Jean-Louis Bergamo <jlb@j1b.org> * Copyright (C) 2002-2003 Jean-Louis Bergamo <jlb@j1b.org>
* Copyright (C) 2007-2009 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2007-2011 Laurent Destailleur <eldy@users.sourceforge.net>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -31,7 +31,7 @@ define("NOCSRFCHECK",1); // We accept to go on this page from external web site.
require("../../main.inc.php"); require("../../main.inc.php");
require_once(DOL_DOCUMENT_ROOT."/adherents/class/adherent.class.php"); require_once(DOL_DOCUMENT_ROOT."/adherents/class/adherent.class.php");
require_once(DOL_DOCUMENT_ROOT."/adherents/class/adherent_type.class.php"); require_once(DOL_DOCUMENT_ROOT."/adherents/class/adherent_type.class.php");
require_once(DOL_DOCUMENT_ROOT."/adherents/class/adherent_options.class.php"); require_once(DOL_DOCUMENT_ROOT."/core/class/extrafields.class.php");
// Security check // Security check
if (empty($conf->adherent->enabled)) accessforbidden('',1,1,1); if (empty($conf->adherent->enabled)) accessforbidden('',1,1,1);
@ -42,9 +42,15 @@ $langs->load("members");
$langs->load("companies"); $langs->load("companies");
$langs->load("other"); $langs->load("other");
$rowid=$_GET["id"]; $rowid=$_GET["id"];
$adho = new AdherentOptions($db); $adho = new ExtraFields($db);
/*
* Actions
*/
// None
/* /*