* Copyright (C) 2004 Benoit Mortier * Copyright (C) 2004-2008 Laurent Destailleur * Copyright (C) 2005 Regis Houssin * Copyright (C) 2007 Franky Van Liedekerke * * 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 * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /** \file htdocs/contact.class.php \ingroup societe \brief Fichier de la classe des contacts \version $Id$ */ require_once(DOL_DOCUMENT_ROOT ."/commonobject.class.php"); /** \class Contact \brief Classe permettant la gestion des contacts */ class Contact extends CommonObject { var $db; var $error; var $element='contact'; var $table_element='socpeople'; var $id; var $civilite_id; var $name; var $firstname; var $address; var $cp; var $ville; var $fk_pays; var $socid; // fk_soc var $status; // 0=brouillon, 1=4=actif, 5=inactif var $code; var $email; var $birthday; var $ref_facturation; // Nb de reference facture pour lequel il est contact var $ref_contrat; // Nb de reference contrat pour lequel il est contact var $ref_commande; // Nb de reference commande pour lequel il est contact var $ref_propal; // Nb de reference propal pour lequel il est contact var $user_id; var $user_login; /** * \brief Constructeur de l'objet contact * \param DB Habler d'accès base * \param id Id contact */ function Contact($DB, $id=0) { $this->db = $DB; $this->id = $id; return 1; } /** * \brief Ajout d'un contact en base * \param user Utilisateur qui effectue l'ajout * \return int <0 si ko, >0 si ok */ function create($user) { global $conf, $langs; // Clean parameters $this->name=trim($this->name); if (! $this->socid) $this->socid = 0; if (! $this->priv) $this->priv = 0; $sql = "INSERT INTO ".MAIN_DB_PREFIX."socpeople (datec, fk_soc, name, fk_user_creat, priv)"; $sql.= " VALUES (now(),"; if ($this->socid > 0) $sql.= " ".$this->socid.","; else $sql.= "null,"; $sql.= "'".addslashes($this->name)."',"; $sql.= $user->id.","; $sql.= $this->priv; $sql.= ")"; dolibarr_syslog("Contact::create sql=".$sql); $resql=$this->db->query($sql); if ($resql) { $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."socpeople"); $result=$this->update($this->id, $user, 1); if ($result < 0) { $this->error=$this->db->error(); return -2; } // Appel des triggers include_once(DOL_DOCUMENT_ROOT . "/interfaces.class.php"); $interface=new Interfaces($this->db); $result=$interface->run_triggers('CONTACT_CREATE',$this,$user,$langs,$conf); if ($result < 0) { $error++; $this->errors=$interface->errors; } // Fin appel triggers return $this->id; } else { $this->error=$this->db->error(); dolibarr_syslog("Contact::create ".$this->error); return -1; } } /* * \brief Mise à jour des infos en base * \param id Id du contact à mettre à jour * \param user Objet utilisateur qui effectue la mise à jour * \param notrigger 0=non, 1=oui * \return int <0 si erreur, >0 si ok */ function update($id, $user=0, $notrigger=0) { global $conf, $langs; $this->id = $id; // Nettoyage parametres $this->name=trim($this->name); $this->firstname=trim($this->firstname); $this->email=trim($this->email); $this->phone_pro=trim($this->phone_pro); if (! $this->phone_pro && $this->socid > 0) { $soc = new Societe($this->db); $soc->fetch($this->socid); $this->phone_pro = $soc->tel; } $sql = "UPDATE ".MAIN_DB_PREFIX."socpeople SET "; if ($this->socid > 0) $sql .= " fk_soc='".addslashes($this->socid)."',"; if ($this->socid == -1) $sql .= " fk_soc=null,"; $sql .= " civilite='".addslashes($this->civilite_id)."'"; $sql .= ", name='".addslashes($this->name)."'"; $sql .= ", firstname='".addslashes($this->firstname)."'"; $sql .= ", address='".addslashes($this->address)."'"; $sql .= ", cp='".addslashes($this->cp)."'"; $sql .= ", ville='".addslashes($this->ville)."'"; $sql .= ", fk_pays=".($this->fk_pays>0?$this->fk_pays:'NULL'); $sql .= ", poste='".addslashes($this->poste)."'"; $sql .= ", fax='".addslashes($this->fax)."'"; $sql .= ", email='".addslashes($this->email)."'"; $sql .= ", note='".addslashes($this->note)."'"; $sql .= ", phone = '".addslashes($this->phone_pro)."'"; $sql .= ", phone_perso = '".addslashes($this->phone_perso)."'"; $sql .= ", phone_mobile = '".addslashes($this->phone_mobile)."'"; $sql .= ", jabberid = '".addslashes($this->jabberid)."'"; $sql .= ", priv = '".$this->priv."'"; if ($user) $sql .= ", fk_user_modif=".$user->id; $sql .= " WHERE rowid=".$id; dolibarr_syslog("Contact::update sql=".$sql,LOG_DEBUG); $result = $this->db->query($sql); if (! $result) { $this->error=$this->db->lasterror().' sql='.$sql; dolibarr_syslog("Contact::update Error ".$this->error,LOG_ERR); return -1; } if (! $notrigger) { // Appel des triggers include_once(DOL_DOCUMENT_ROOT . "/interfaces.class.php"); $interface=new Interfaces($this->db); $result=$interface->run_triggers('CONTACT_MODIFY',$this,$user,$langs,$conf); if ($result < 0) { $error++; $this->errors=$interface->errors; } // Fin appel triggers } return 1; } /* * \brief Retourne chaine DN complete dans l'annuaire LDAP pour l'objet * \param info Info string loaded by _load_ldap_info * \param mode 0=Return DN without key inside (ou=xxx,dc=aaa,dc=bbb) 1=Return full DN (uid=qqq,ou=xxx,dc=aaa,dc=bbb) 2=Return key only (uid=qqq) * \return string DN */ function _load_ldap_dn($info,$mode=0) { global $conf; $dn=''; if ($mode==0) $dn=$conf->global->LDAP_KEY_CONTACTS."=".$info[$conf->global->LDAP_KEY_CONTACTS].",".$conf->global->LDAP_CONTACT_DN; if ($mode==1) $dn=$conf->global->LDAP_CONTACT_DN; if ($mode==2) $dn=$conf->global->LDAP_KEY_CONTACTS."=".$info[$conf->global->LDAP_KEY_CONTACTS]; return $dn; } /* * \brief Initialise tableau info (tableau des attributs LDAP) * \return array Tableau info des attributs */ function _load_ldap_info() { global $conf,$langs; // Object classes $info["objectclass"]=split(',',$conf->global->LDAP_CONTACT_OBJECT_CLASS); // Champs if ($this->getFullName($langs) && $conf->global->LDAP_FIELD_FULLNAME) $info[$conf->global->LDAP_FIELD_FULLNAME] = utf8_encode($this->getFullName($langs)); if ($this->name && $conf->global->LDAP_FIELD_NAME) $info[$conf->global->LDAP_FIELD_NAME] = utf8_encode($this->name); if ($this->firstname && $conf->global->LDAP_FIELD_FIRSTNAME) $info[$conf->global->LDAP_FIELD_FIRSTNAME] = utf8_encode($this->firstname); if ($this->poste) $info["title"] = $this->poste; if ($this->socid > 0) { $soc = new Societe($this->db); $soc->fetch($this->socid); $info[$conf->global->LDAP_FIELD_COMPANY] = $soc->nom; if ($soc->client == 1) $info["businessCategory"] = "Customers"; if ($soc->client == 2) $info["businessCategory"] = "Prospects"; if ($soc->fournisseur == 1) $info["businessCategory"] = "Suppliers"; } if ($this->address && $conf->global->LDAP_FIELD_ADDRESS) $info[$conf->global->LDAP_FIELD_ADDRESS] = utf8_encode($this->address); if ($this->cp && $conf->global->LDAP_FIELD_ZIP) $info[$conf->global->LDAP_FIELD_ZIP] = $this->cp; if ($this->ville && $conf->global->LDAP_FIELD_TOWN) $info[$conf->global->LDAP_FIELD_TOWN] = utf8_encode($this->ville); if ($this->pays && $conf->global->LDAP_FIELD_COUNTRY) $info[$conf->global->LDAP_FIELD_COUNTRY] = $this->pays_code; if ($this->phone_pro && $conf->global->LDAP_FIELD_PHONE) $info[$conf->global->LDAP_FIELD_PHONE] = $this->phone_pro; if ($this->phone_perso && $conf->global->LDAP_FIELD_HOMEPHONE) $info[$conf->global->LDAP_FIELD_HOMEPHONE] = $this->phone_perso; if ($this->phone_mobile && $conf->global->LDAP_FIELD_MOBILE) $info[$conf->global->LDAP_FIELD_MOBILE] = $this->phone_mobile; if ($this->fax && $conf->global->LDAP_FIELD_FAX) $info[$conf->global->LDAP_FIELD_FAX] = $this->fax; if ($this->note && $conf->global->LDAP_FIELD_DESCRIPTION) $info[$conf->global->LDAP_FIELD_DESCRIPTION] = utf8_encode($this->note); if ($this->email && $conf->global->LDAP_FIELD_MAIL) $info[$conf->global->LDAP_FIELD_MAIL] = $this->email; if ($conf->global->LDAP_SERVER_TYPE == 'egroupware') { $info["objectclass"][4] = "phpgwContact"; // compatibilite egroupware $info['uidnumber'] = $this->id; $info['phpgwTz'] = 0; $info['phpgwMailType'] = 'INTERNET'; $info['phpgwMailHomeType'] = 'INTERNET'; $info["phpgwContactTypeId"] = 'n'; $info["phpgwContactCatId"] = 0; $info["phpgwContactAccess"] = "public"; if (strlen($this->egroupware_id) == 0) { $this->egroupware_id = 1; } $info["phpgwContactOwner"] = $this->egroupware_id; if ($this->email) $info["rfc822Mailbox"] = $this->email; if ($this->phone_mobile) $info["phpgwCellTelephoneNumber"] = $this->phone_mobile; } return $info; } /* * \brief Mise à jour des alertes * \param id id du contact * \param user Utilisateur qui demande l'alerte */ function update_perso($id, $user=0) { // Mis a jour contact $sql = "UPDATE ".MAIN_DB_PREFIX."socpeople SET rowid=".$id; if ($this->birthday) // <0 si avant 1970, >0 si apres 1970 { if (eregi('^[0-9]+\-',$this->birthday)) { // Si date = chaine (ne devrait pas arriver) $sql .= ", birthday='".$this->birthday."'"; } else { // Si date = timestamp $sql .= ", birthday=".$this->db->idate($this->birthday); } } if ($user) $sql .= ", fk_user_modif=".$user->id; $sql .= " WHERE rowid=".$id; dolibarr_syslog("Contact::update_perso this->birthday=".$this->birthday." - sql=".$sql); $resql = $this->db->query($sql); if (! $resql) { $this->error=$this->db->error(); } // Mis a jour alerte birthday if ($this->birthday_alert) { //check existing $sql_check = "SELECT * FROM ".MAIN_DB_PREFIX."user_alert WHERE type=1 AND fk_contact=$id AND fk_user=".$user->id; $result_check = $this->db->query($sql_check); if (!$result_check or ($this->db->num_rows($result_check)<1)) { //insert $sql = "INSERT into ".MAIN_DB_PREFIX."user_alert(type,fk_contact,fk_user) "; $sql.= "values (1,".$id.",".$user->id.")"; $result = $this->db->query($sql); if (!$result) { $this->error='Echec sql='.$sql; } } else { $result = true; } } else { $sql = "DELETE from ".MAIN_DB_PREFIX."user_alert "; $sql.= "where type=1 AND fk_contact=".$id." AND fk_user=".$user->id; $result = $this->db->query($sql); if (!$result) { $this->error='Echec sql='.$sql; } } return $result; } /* * \brief Charge l'objet contact * \param id id du contact * \param user Utilisateur lié au contact pour une alerte * \return int -1 if KO, 0 if OK but not found, 1 if OK */ function fetch($id, $user=0) { global $langs; $langs->load("companies"); $sql = "SELECT c.rowid, c.fk_soc, c.civilite as civilite_id, c.name, c.firstname,"; $sql.= " c.address, c.cp, c.ville,"; $sql.= " c.fk_pays, p.libelle as pays, p.code as pays_code,"; $sql.= " c.birthday,"; $sql.= " c.poste, c.phone, c.phone_perso, c.phone_mobile, c.fax, c.email, c.jabberid,"; $sql.= " c.priv, c.note,"; $sql.= " u.rowid as user_id, u.login as user_login"; $sql.= " FROM ".MAIN_DB_PREFIX."socpeople as c"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_pays as p ON c.fk_pays = p.rowid"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."user as u ON c.rowid = u.fk_socpeople"; $sql.= " WHERE c.rowid = ". $id; dolibarr_syslog("Contact::fetch sql=".$sql); $resql=$this->db->query($sql); if ($resql) { if ($this->db->num_rows($resql)) { $obj = $this->db->fetch_object($resql); $this->id = $obj->rowid; $this->ref = $obj->rowid; $this->civilite_id = $obj->civilite_id; $this->name = $obj->name; $this->firstname = $obj->firstname; $this->nom = $obj->name; $this->prenom = $obj->firstname; $this->address = $obj->address; $this->adresse = $obj->address; // Todo: uniformiser le nom des variables $this->cp = $obj->cp; $this->ville = $obj->ville; $this->fk_pays = $obj->fk_pays; $this->pays_code = $obj->fk_pays?$obj->pays_code:''; $this->pays = ($obj->fk_pays > 0)?$langs->trans("Country".$obj->pays_code):$langs->trans("SelectCountry"); $this->societeid = $obj->fk_soc; $this->socid = $obj->fk_soc; $this->poste = $obj->poste; $this->phone_pro = trim($obj->phone); $this->fax = trim($obj->fax); $this->phone_perso = trim($obj->phone_perso); $this->phone_mobile = trim($obj->phone_mobile); $this->email = $obj->email; $this->jabberid = $obj->jabberid; $this->priv = $obj->priv; $this->mail = $obj->email; $this->birthday = $obj->birthday; $this->birthday_alert = $obj->birthday_alert; $this->note = $obj->note; $this->user_id = $obj->user_id; $this->user_login = $obj->user_login; // Recherche le user Dolibarr lié à ce contact $sql = "SELECT u.rowid "; $sql .= " FROM ".MAIN_DB_PREFIX."user as u"; $sql .= " WHERE u.fk_socpeople = ". $this->id; $resql=$this->db->query($sql); if ($resql) { if ($this->db->num_rows($resql)) { $uobj = $this->db->fetch_object($resql); $this->user_id = $uobj->rowid; } $this->db->free($resql); } else { $this->error=$this->db->error(); dolibarr_syslog("Contact::fetch ".$this->error, LOG_ERR); return -1; } // Charge alertes du user if ($user) { $sql = "SELECT fk_user"; $sql .= " FROM ".MAIN_DB_PREFIX."user_alert"; $sql .= " WHERE fk_user = ".$user->id." AND fk_contact = ".$id; $resql=$this->db->query($sql); if ($resql) { if ($this->db->num_rows($resql)) { $obj = $this->db->fetch_object($resql); $this->birthday_alert = 1; } $this->db->free($resql); } else { $this->error=$this->db->error(); dolibarr_syslog("Contact::fetch ".$this->error, LOG_ERR); return -1; } } return 1; } else { $this->error=$langs->trans("RecordNotFound"); return 0; } } else { $this->error=$this->db->error(); dolibarr_syslog("Contact::fetch ".$this->error, LOG_ERR); return -1; } } /* * \brief Charge le nombre d'elements auquel est lié ce contact * ref_facturation * ref_contrat * ref_commande * ref_propale * \return int 0 si ok, -1 si erreur */ function load_ref_elements() { // Compte les elements pour lesquels il est contact $sql ="SELECT tc.element, count(ec.rowid) as nb"; $sql.=" FROM ".MAIN_DB_PREFIX."element_contact as ec, ".MAIN_DB_PREFIX."c_type_contact as tc"; $sql.=" WHERE ec.fk_c_type_contact = tc.rowid"; $sql.=" AND fk_socpeople = ". $this->id; $sql.=" GROUP BY tc.element"; dolibarr_syslog("Contact::load_ref_elements sql=".$sql); $resql=$this->db->query($sql); if ($resql) { while($obj=$this->db->fetch_object($resql)) { if ($obj->nb) { if ($obj->element=='facture') $this->ref_facturation = $obj->nb; if ($obj->element=='contrat') $this->ref_contrat = $obj->nb; if ($obj->element=='commande') $this->ref_commande = $obj->nb; if ($obj->element=='propal') $this->ref_propal = $obj->nb; } } $this->db->free($resql); return 0; } else { $this->error=$this->db->error()." - ".$sql; dolibarr_syslog("Contact::load_ref_elements Error ".$this->error); return -1; } } /* * \brief Efface le contact de la base * \return int <0 si ko, >0 si ok */ function delete($notrigger=0) { global $conf, $langs, $user; $error=0; $this->old_name = $obj->name; $this->old_firstname = $obj->firstname; $this->db->begin(); if (! $error) { // Get all rowid of element_contact linked to a type that is link to llx_socpeople $sql = "SELECT ec.rowid"; $sql.= " FROM ".MAIN_DB_PREFIX."element_contact ec,"; $sql.= " ".MAIN_DB_PREFIX."c_type_contact tc"; $sql.= " WHERE ec.fk_socpeople=".$this->id; $sql.= " AND ec.fk_c_type_contact=tc.rowid"; $sql.= " AND tc.source='external'"; dolibarr_syslog("Contact::delete sql=".$sql); $resql = $this->db->query($sql); if ($resql) { $num=$this->db->num_rows($resql); $i=0; while ($i < $num && ! $error) { $obj = $this->db->fetch_object($resql); $sqldel = "DELETE FROM ".MAIN_DB_PREFIX."element_contact"; $sqldel.=" WHERE rowid = ".$obj->rowid; dolibarr_syslog("Contact::delete sql=".$sqldel); $result = $this->db->query($sqldel); if (! $result) { $error++; $this->error=$this->db->error().' sql='.$sqldel; } $i++; } } else { $error++; $this->error=$this->db->error().' sql='.$sql; } } if (! $error) { $sql = "DELETE FROM ".MAIN_DB_PREFIX."socpeople"; $sql .= " WHERE rowid=".$this->id; dolibarr_syslog("Contact::delete sql=".$sql); $result = $this->db->query($sql); if (! $result) { $error++; $this->error=$this->db->error().' sql='.$sql; } } if (! $error && ! $notrigger) { // Appel des triggers include_once(DOL_DOCUMENT_ROOT . "/interfaces.class.php"); $interface=new Interfaces($this->db); $result=$interface->run_triggers('CONTACT_DELETE',$this,$user,$langs,$conf); if ($result < 0) { $error++; $this->errors=$interface->errors; } // Fin appel triggers } if (! $error) { $this->db->commit(); return 1; } else { $this->db->rollback(); return -1; } } /* * \brief Charge les informations sur le contact, depuis la base * \param id id du contact à charger */ function info($id) { $sql = "SELECT c.rowid, ".$this->db->pdate("c.datec")." as datec, c.fk_user_creat"; $sql .= ", ".$this->db->pdate("c.tms")." as tms, c.fk_user_modif"; $sql .= " FROM ".MAIN_DB_PREFIX."socpeople as c"; $sql .= " WHERE c.rowid = ".$id; $resql=$this->db->query($sql); if ($resql) { if ($this->db->num_rows($resql)) { $obj = $this->db->fetch_object($resql); $this->id = $obj->rowid; if ($obj->fk_user_creat) { $cuser = new User($this->db, $obj->fk_user_creat); $cuser->fetch(); $this->user_creation = $cuser; } if ($obj->fk_user_modif) { $muser = new User($this->db, $obj->fk_user_modif); $muser->fetch(); $this->user_modification = $muser; } $this->date_creation = $obj->datec; $this->date_modification = $obj->tms; } $this->db->free($resql); } else { print $this->db->error(); } } /* * \brief Renvoi nombre d'emailings reçu par le contact avec son email * \return int Nombre d'emailings */ function getNbOfEMailings() { $sql = "SELECT count(mc.email) as nb"; $sql.= " FROM ".MAIN_DB_PREFIX."mailing_cibles as mc"; $sql.= " WHERE mc.email = '".addslashes($this->email)."'"; $sql.= " AND mc.statut=1"; // -1 erreur, 0 non envoyé, 1 envoyé avec succès $resql=$this->db->query($sql); if ($resql) { $obj = $this->db->fetch_object($resql); $nb=$obj->nb; $this->db->free($resql); return $nb; } else { $this->error=$this->db->error(); return -1; } } /** * \brief Renvoie nom clicable (avec eventuellement le picto) * \param withpicto Inclut le picto dans le lien * \param option Sur quoi pointe le lien * \param maxlen Longueur max libelle * \return string Chaine avec URL * \remarks Utilise $this->id, $this->name et $this->firstname */ function getNomUrl($withpicto=0,$option='',$maxlen=0) { global $langs; $result=''; $lien = ''; $lienfin=''; if ($option == 'xxx') { $lien = ''; $lienfin=''; } if ($withpicto) $result.=($lien.img_object($langs->trans("ShowContact").': '.$this->getFullName($langs),'contact').$lienfin.' '); $result.=$lien.($maxlen?dolibarr_trunc($this->getFullName($langs),$maxlen):$this->getFullName($langs)).$lienfin; return $result; } /** * \brief Retourne le libelle de civilite du contact * \return string Nom traduit de la civilité */ function getCivilityLabel() { global $langs; $langs->load("dict"); $code=$this->civilite_id; return $langs->trans("Civility".$code)!="Civility".$code ? $langs->trans("Civility".$code) : $code; } /** * \brief Return full name (name+' '+lastname) * \param langs Lang for output * \param option 0=No option, 1=Add civility * \return string String with full name */ function getFullName($langs,$option=0) { $ret=''; if ($option && $this->civilite_id) { if ($langs->trans("Civility".$this->civilite_id)!="Civility".$this->civilite_id) $ret.=$langs->trans("Civility".$this->civilite_id).' '; else $ret.=$this->civilite_id.' '; } if ($this->name) $ret.=$this->name.' '; if ($this->firstname) $ret.=$this->firstname.' '; return trim($ret); } /** * \brief Retourne le libellé du statut du contact * \param mode 0=libellé long, 1=libellé court, 2=Picto + Libellé court, 3=Picto, 4=Picto + Libellé long, 5=Libellé court + Picto * \return string Libellé */ function getLibStatut($mode) { return $this->LibStatut($this->status,$mode); } /** * \brief Renvoi le libellé d'un statut donné * \param statut Id statut * \param mode 0=libellé long, 1=libellé court, 2=Picto + Libellé court, 3=Picto, 4=Picto + Libellé long, 5=Libellé court + Picto * \return string Libellé */ function LibStatut($statut,$mode) { global $langs; if ($mode == 0) { if ($statut==0) return $langs->trans('StatusContactDraft'); if ($statut==1) return $langs->trans('StatusContactValidated'); if ($statut==4) return $langs->trans('StatusContactValidated'); if ($statut==5) return $langs->trans('StatusContactValidated'); } if ($mode == 1) { if ($statut==0) return $langs->trans('StatusContactDraftShort'); if ($statut==1) return $langs->trans('StatusContactValidatedShort'); if ($statut==4) return $langs->trans('StatusContactValidatedShort'); if ($statut==5) return $langs->trans('StatusContactValidatedShort'); } if ($mode == 2) { if ($statut==0) return img_picto($langs->trans('StatusContactDraftShort'),'statut0').' '.$langs->trans('StatusContactDraft'); if ($statut==1) return img_picto($langs->trans('StatusContactValidatedShort'),'statut1').' '.$langs->trans('StatusContactValidated'); if ($statut==4) return img_picto($langs->trans('StatusContactValidatedShort'),'statut4').' '.$langs->trans('StatusContactValidated'); if ($statut==5) return img_picto($langs->trans('StatusContactValidatedShort'),'statut5').' '.$langs->trans('StatusContactValidated'); } if ($mode == 3) { if ($statut==0) return img_picto($langs->trans('StatusContactDraft'),'statut0'); if ($statut==1) return img_picto($langs->trans('StatusContactValidated'),'statut1'); if ($statut==4) return img_picto($langs->trans('StatusContactValidated'),'statut4'); if ($statut==5) return img_picto($langs->trans('StatusContactValidated'),'statut5'); } if ($mode == 4) { if ($statut==0) return img_picto($langs->trans('StatusContactDraft'),'statut0').' '.$langs->trans('StatusContactDraft'); if ($statut==1) return img_picto($langs->trans('StatusContactValidated'),'statut1').' '.$langs->trans('StatusContactValidated'); if ($statut==4) return img_picto($langs->trans('StatusContactValidated'),'statut4').' '.$langs->trans('StatusContactValidated'); if ($statut==5) return img_picto($langs->trans('StatusContactValidated'),'statut5').' '.$langs->trans('StatusContactValidated'); } if ($mode == 5) { if ($statut==0) return $langs->trans('StatusContactDraftShort').' '.img_picto($langs->trans('StatusContactDraftShort'),'statut0'); if ($statut==1) return $langs->trans('StatusContactValidatedShort').' '.img_picto($langs->trans('StatusContactValidatedShort'),'statut1'); if ($statut==4) return $langs->trans('StatusContactValidatedShort').' '.img_picto($langs->trans('StatusContactValidatedShort'),'statut4'); if ($statut==5) return $langs->trans('StatusContactValidatedShort').' '.img_picto($langs->trans('StatusContactValidatedShort'),'statut5'); } } /** * \brief Return translated label of Public or Private * \param type Type (0 = public, 1 = private) * \return string Label translated */ function LibPubPriv($statut) { global $langs; if ($statut=='1') return $langs->trans('ContactPrivate'); else return $langs->trans('ContactPublic'); } /** * \brief Initialise le contact avec valeurs fictives aléatoire */ function initAsSpecimen() { global $user,$langs; // Charge tableau des id de société socids $socids = array(); $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."societe LIMIT 10"; $resql = $this->db->query($sql); if ($resql) { $num_socs = $this->db->num_rows($resql); $i = 0; while ($i < $num_socs) { $i++; $row = $this->db->fetch_row($resql); $socids[$i] = $row[0]; } } // Initialise paramètres $this->id=0; $this->specimen=1; $this->nom = 'DOLIBARR'; $this->name = $this->nom; $this->prenom = 'SPECIMEN'; $this->firstname = $this->prenom; $this->address = '61 jump street'; $this->cp = '75000'; $this->ville = 'Paris'; $this->fk_pays = 1; $this->email = 'specimen@specimen.com'; $socid = rand(1, $num_socs); $this->socid = $socids[$socid]; } } ?>