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

View File

@ -279,7 +279,7 @@ class Adherent extends CommonObject
$sql.= ", ".$conf->entity;
$sql.= ")";
dol_syslog("Adherent::create sql=".$sql);
dol_syslog(get_class($this)."::create sql=".$sql);
$result = $this->db->query($sql);
if ($result)
{
@ -303,7 +303,7 @@ class Adherent extends CommonObject
$sql = "UPDATE ".MAIN_DB_PREFIX."user SET";
$sql.= " fk_member = '".$this->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);
if (! $resql)
{
@ -327,7 +327,7 @@ class Adherent extends CommonObject
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();
return -3;
}
@ -340,7 +340,7 @@ class Adherent extends CommonObject
else
{
$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();
return -2;
}
@ -348,7 +348,7 @@ class Adherent extends CommonObject
else
{
$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();
return -1;
}
@ -370,7 +370,7 @@ class Adherent extends CommonObject
$nbrowsaffected=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
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.= " 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);
if ($resql)
{
@ -423,7 +423,7 @@ class Adherent extends CommonObject
if (sizeof($this->array_options) > 0)
{
$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);
$sql = "INSERT INTO ".MAIN_DB_PREFIX."adherent_extrafields (fk_member";
@ -447,7 +447,7 @@ class Adherent extends CommonObject
}
$sql.=")";
dol_syslog("Adherent::update update option sql=".$sql);
dol_syslog(get_class($this)."::update update option sql=".$sql);
$resql = $this->db->query($sql);
if ($resql)
{
@ -456,7 +456,7 @@ class Adherent extends CommonObject
else
{
$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();
return -2;
}
@ -465,7 +465,7 @@ class Adherent extends CommonObject
// Update password
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)
{
// Si mot de passe saisi et different de celui en base
@ -475,16 +475,16 @@ class Adherent extends CommonObject
}
// 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;
dol_syslog("Adherent::update sql=".$sql, LOG_DEBUG);
dol_syslog(get_class($this)."::update sql=".$sql, LOG_DEBUG);
$resql = $this->db->query($sql);
if (! $resql) { $this->error=$this->db->error(); $this->db->rollback(); return -5; }
// If there is a user linked to this member
if ($this->user_id > 0)
{
$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);
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");
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
// if this is an update.
@ -523,7 +523,7 @@ class Adherent extends CommonObject
if ($result < 0)
{
$this->error=$luser->error;
dol_syslog("Adherent::update ".$this->error,LOG_ERR);
dol_syslog(get_class($this)."::update ".$this->error,LOG_ERR);
$error++;
}
}
@ -563,7 +563,7 @@ class Adherent extends CommonObject
$this->db->rollback();
$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;
}
}
@ -589,7 +589,7 @@ class Adherent extends CommonObject
$sql.= " WHERE fk_adherent='".$this->id."'";
$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);
if ($resql)
{
@ -602,7 +602,7 @@ class Adherent extends CommonObject
$sql.= " datefin=".($datefin != '' ? "'".$this->db->idate($datefin)."'" : "null");
$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);
if ($resql)
{
@ -622,7 +622,7 @@ class Adherent extends CommonObject
else
{
$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();
return -1;
}
@ -644,17 +644,17 @@ class Adherent extends CommonObject
// Suppression options
$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);
if ($resql)
{
$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);
if ($resql)
{
$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);
if ($resql)
{
@ -720,7 +720,7 @@ class Adherent extends CommonObject
$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 (! $password)
@ -746,7 +746,7 @@ class Adherent extends CommonObject
$sql.= " WHERE rowid = ".$this->id;
//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);
if ($result)
{
@ -772,7 +772,7 @@ class Adherent extends CommonObject
if ($result < 0)
{
$this->error=$luser->error;
dol_syslog("Adherent::password ".$this->error,LOG_ERR);
dol_syslog(get_class($this)."::setPassword ".$this->error,LOG_ERR);
$error++;
}
}
@ -821,7 +821,7 @@ class Adherent extends CommonObject
// 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;
dol_syslog("Adherent::setUserId sql=".$sql, LOG_DEBUG);
dol_syslog(get_class($this)."::setUserId sql=".$sql, LOG_DEBUG);
$resql = $this->db->query($sql);
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.= " 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);
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.= " WHERE fk_soc = '".$thirdpartyid."'";
$sql.= " AND entity = ".$conf->entity;
dol_syslog("Adherent::setThirdPartyId sql=".$sql);
dol_syslog(get_class($this)."::setThirdPartyId sql=".$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.= " WHERE rowid = ".$this->id;
dol_syslog("Adherent::setThirdPartyId sql=".$sql);
dol_syslog(get_class($this)."::setThirdPartyId sql=".$sql);
$resql = $this->db->query($sql);
if ($resql)
{
@ -876,7 +876,7 @@ class Adherent extends CommonObject
else
{
$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();
return -1;
}
@ -947,7 +947,7 @@ class Adherent extends CommonObject
elseif ($fk_soc) $sql.= " AND d.fk_soc='".$fk_soc."'";
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);
if ($resql)
{
@ -1022,7 +1022,7 @@ class Adherent extends CommonObject
else
{
$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;
}
}
@ -1048,7 +1048,7 @@ class Adherent extends CommonObject
$sql.= " FROM ".MAIN_DB_PREFIX."cotisation as c";
$sql.= " WHERE c.fk_adherent = ".$this->id;
$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);
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
* TODO Move this function into ExtraField class
* TODO rename field fk_member into fk_element
*/
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();
$tab=array();
$sql = "SELECT rowid";
foreach ($optionsArray as $name => $label)
{
$sql.= ", ".$name;
}
$sql.= " FROM ".MAIN_DB_PREFIX."adherent_extrafields";
$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);
if ($result)
{
@ -1236,7 +1237,7 @@ class Adherent extends CommonObject
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;
}
@ -1248,7 +1249,7 @@ class Adherent extends CommonObject
$sql.= ", fk_user_valid=".$user->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);
if ($result)
{
@ -1286,7 +1287,7 @@ class Adherent extends CommonObject
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;
}
@ -1405,7 +1406,7 @@ class Adherent extends CommonObject
{
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 &&
defined('ADHERENT_SPIP_SERVEUR') && ADHERENT_SPIP_SERVEUR != '' &&
@ -1517,7 +1518,7 @@ class Adherent extends CommonObject
{
global $conf,$langs;
dol_syslog("Adherent::add_to_mailman");
dol_syslog(get_class($this)."::add_to_mailman");
if (! function_exists("curl_init"))
{
@ -2059,7 +2060,7 @@ class Adherent extends CommonObject
$sql.= ' FROM '.MAIN_DB_PREFIX.'adherent as a';
$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);
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."/adherents/class/adherent.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."/compta/bank/class/account.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();
$adh = new Adherent($db);
$adho = new AdherentOptions($db);
$adho = new ExtraFields($db);
$errmsg='';
$action=GETPOST("action");
@ -796,7 +796,7 @@ if ($action == 'edit')
*
********************************************/
$adho = new AdherentOptions($db);
$adho = new ExtraFields($db);
$adh = new Adherent($db);
$adh->id = $rowid;
$adh->fetch($rowid);

View File

@ -26,11 +26,11 @@
*/
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");
$adho = new AdherentOptions($db);
$adho = new ExtraFields($db);
$form = new Form($db);
/*

View File

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

View File

@ -239,7 +239,7 @@ if (! empty($conf->file->main_force_https))
// 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('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
//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_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_options.class.php");
require_once(DOL_DOCUMENT_ROOT."/core/class/html.form.class.php");
require_once(DOL_DOCUMENT_ROOT."/core/class/extrafields.class.php");
// Security check
if (empty($conf->adherent->enabled)) accessforbidden('',1,1,1);
@ -217,7 +216,7 @@ if (isset($_GET["action"]) && $_GET["action"] == 'added')
$html = new Form($db);
$adht = new AdherentType($db);
$adho = new AdherentOptions($db);
$adho = new ExtraFields($db);
llxHeaderVierge($langs->trans("NewSubscription"));

View File

@ -1,7 +1,7 @@
<?php
/* Copyright (C) 2001-2003 Rodolphe Quiedeville <rodolphe@quiedeville.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
* 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_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_options.class.php");
require_once(DOL_DOCUMENT_ROOT."/core/class/extrafields.class.php");
// Security check
if (empty($conf->adherent->enabled)) accessforbidden('',1,1,1);
@ -42,9 +42,15 @@ $langs->load("members");
$langs->load("companies");
$langs->load("other");
$rowid=$_GET["id"];
$adho = new AdherentOptions($db);
$adho = new ExtraFields($db);
/*
* Actions
*/
// None
/*