diff --git a/htdocs/contact/class/contact.class.php b/htdocs/contact/class/contact.class.php index 036b99f9ae3..0a25bbf8028 100644 --- a/htdocs/contact/class/contact.class.php +++ b/htdocs/contact/class/contact.class.php @@ -58,7 +58,7 @@ class Contact extends CommonObject var $country; // Label of country var $socid; // fk_soc - var $status; // 0=brouillon, 1=4=actif, 5=inactif + var $statut; // 0=brouillon, 1=4=actif, 5=inactif var $code; var $email; @@ -481,8 +481,9 @@ class Contact extends CommonObject $langs->load("companies"); + $sql = "SELECT c.rowid, c.fk_soc, c.civilite as civilite_id, c.lastname, c.firstname,"; - $sql.= " c.address, c.zip, c.town,"; + $sql.= " c.address, c.statut, c.zip, c.town,"; $sql.= " c.fk_pays as country_id,"; $sql.= " c.fk_departement,"; $sql.= " c.birthday,"; @@ -531,6 +532,7 @@ class Contact extends CommonObject $this->socid = $obj->fk_soc; $this->socname = $obj->socname; $this->poste = $obj->poste; + $this->statut = $obj->statut; $this->phone_pro = trim($obj->phone); $this->fax = trim($obj->fax); @@ -896,7 +898,12 @@ class Contact extends CommonObject */ function getLibStatut($mode) { - return $this->LibStatut($this->status,$mode); + return $this->LibStatut($this->statut,$mode); + } + + function getLibStatutcontact() + { + return $this->LibStatutcontact($this->statut); } /** @@ -906,7 +913,7 @@ class Contact extends CommonObject * @param int $mode 0=libelle long, 1=libelle court, 2=Picto + Libelle court, 3=Picto, 4=Picto + Libelle long, 5=Libelle court + Picto * @return string Libelle */ - function LibStatut($statut, $mode) + function LibStatut($statut) { global $langs; @@ -952,9 +959,15 @@ class Contact extends CommonObject elseif ($statut==4) return ''.$langs->trans('StatusContactValidatedShort').' '.img_picto($langs->trans('StatusContactValidatedShort'),'statut4'); elseif ($statut==5) return ''.$langs->trans('StatusContactValidatedShort').' '.img_picto($langs->trans('StatusContactValidatedShort'),'statut5'); } + } - + function LibStatutcontact($statut) + { + global $langs; + if ($statut==0) return ''.$langs->trans('Disabled').' '.img_picto($langs->trans('StatusContactDraftShort'),'statut0'); + else return ''.$langs->trans('Enabled').' '.img_picto($langs->trans('StatusContactValidatedShort'),'statut1'); + } /** * Return translated label of Public or Private * @@ -1020,7 +1033,57 @@ class Contact extends CommonObject $socid = rand(1, $num_socs); $this->socid = $socids[$socid]; + $this->statut=1; } + + /** + * Change status of a user + * + * @param int $statut Status to set + * @return int <0 if KO, 0 if nothing is done, >0 if OK + */ + function setstatus($statut) + { + global $conf,$langs,$user; + + $error=0; + + // Check parameters + if ($this->statut == $statut) return 0; + else $this->statut = $statut; + + $this->db->begin(); + + // Desactive utilisateur + $sql = "UPDATE ".MAIN_DB_PREFIX."socpeople"; + $sql.= " SET statut = ".$this->statut; + $sql.= " WHERE rowid = ".$this->id; + $result = $this->db->query($sql); + + dol_syslog(get_class($this)."::setstatus sql=".$sql); + if ($result) + { + // Appel des triggers + include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; + $interface=new Interfaces($this->db); + $result=$interface->run_triggers('CONTACT_ENABLEDISABLE',$this,$user,$langs,$conf); + if ($result < 0) { $error++; $this->errors=$interface->errors; } + // Fin appel triggers + } + + if ($error) + { + $this->db->rollback(); + return -$error; + } + else + { + $this->db->commit(); + return 1; + } + } + + } ?> diff --git a/htdocs/contact/fiche.php b/htdocs/contact/fiche.php index 7cf032c68b9..7f587500cbe 100644 --- a/htdocs/contact/fiche.php +++ b/htdocs/contact/fiche.php @@ -31,10 +31,12 @@ require_once DOL_DOCUMENT_ROOT.'/comm/action/class/actioncomm.class.php'; require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/contact.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; - +require_once DOL_DOCUMENT_ROOT. '/core/class/html.form.class.php'; +require_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php'; $langs->load("companies"); $langs->load("users"); $langs->load("other"); @@ -128,7 +130,30 @@ if (empty($reshook)) $error=$object->error; $errors=$object->errors; } } + + /* + * Confirmation desactivation + */ + if ($action == 'disable') + { + $object->fetch($id); + $object->setstatus(0); + header("Location: ".$_SERVER['PHP_SELF'].'?id='.$id); + exit; + } + + /* + * Confirmation activation + */ + if ($action == 'enable') + { + $object->fetch($id); + $object->setstatus(1); + header("Location: ".$_SERVER['PHP_SELF'].'?id='.$id); + exit; + + } // Add contact if ($action == 'add' && $user->rights->societe->contact->creer) { @@ -705,6 +730,18 @@ else print $form->selectarray('priv',$selectarray,$object->priv,0); print ''; + // Note + print ''.$langs->trans("Note").''; + print ''; + + // Statut + print ''.$langs->trans("Status").''; + print ''; + print $object->getLibStatutcontact(); + print ''; + // Other attributes $parameters=array('colspan' => ' colspan="3"'); $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook @@ -904,6 +941,17 @@ else print $object->LibPubPriv($object->priv); print ''; + // Note + print ''.$langs->trans("Note").''; + print nl2br($object->note); + print ''; + + // Statut + print ''.$langs->trans("Status").''; + print ''; + print $object->getLibStatutcontact(); + print ''; + print ''."\n"; // Other attributes $parameters=array('socid'=>$socid, 'colspan' => ' colspan="3"'); $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook @@ -976,6 +1024,16 @@ else { print ''.$langs->trans('Delete').''; } + // Activer + if ($object->statut == 0 && $user->rights->societe->contact->creer) + { + print ''.$langs->trans("Reactivate").''; + } + // Desactiver + if ($object->statut == 1 && $user->rights->societe->contact->creer) + { + print ''.$langs->trans("DisableUser").''; + } print "
"; } diff --git a/htdocs/contact/list.php b/htdocs/contact/list.php index d7ebb28034a..19b389cc192 100644 --- a/htdocs/contact/list.php +++ b/htdocs/contact/list.php @@ -49,6 +49,8 @@ $search_fax=GETPOST("search_fax"); $search_email=GETPOST("search_email"); $search_priv=GETPOST("search_priv"); $search_categ = GETPOST("search_categ",'int'); +$search_statut=GETPOST("search_statut"); + $type=GETPOST("type"); $view=GETPOST("view"); @@ -114,7 +116,7 @@ $form=new Form($db); $formother=new FormOther($db); $sql = "SELECT s.rowid as socid, s.nom as name,"; -$sql.= " p.rowid as cidp, p.lastname as lastname, p.firstname, p.poste, p.email,"; +$sql.= " p.rowid as cidp, p.lastname as lastname, p.statut, p.firstname, p.poste, p.email,"; $sql.= " p.phone, p.phone_mobile, p.fax, p.fk_pays, p.priv, p.tms,"; $sql.= " cp.code as country_code"; $sql.= " FROM ".MAIN_DB_PREFIX."socpeople as p"; @@ -288,6 +290,7 @@ if ($result) print_liste_field_titre($langs->trans("EMail"),$_SERVER["PHP_SELF"],"p.email", $begin, $param, '', $sortfield,$sortorder); print_liste_field_titre($langs->trans("DateModificationShort"),$_SERVER["PHP_SELF"],"p.tms", $begin, $param, 'align="center"', $sortfield,$sortorder); print_liste_field_titre($langs->trans("ContactVisibility"),$_SERVER["PHP_SELF"],"p.priv", $begin, $param, 'align="center"', $sortfield,$sortorder); + print ' '; print "\n"; @@ -336,9 +339,10 @@ if ($result) while ($i < min($num,$limit)) { $obj = $db->fetch_object($result); - - $var=!$var; - + + if ($obj->statut == 1) + { + $var=!$var; print ""; // Name @@ -395,6 +399,7 @@ if ($result) print ''; print "\n"; + } $i++; } diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index b63703d5785..331ab1c3b98 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -951,7 +951,7 @@ class Form $out=''; // On recherche les societes - $sql = "SELECT sp.rowid, sp.lastname, sp.firstname, sp.poste"; + $sql = "SELECT sp.rowid, sp.lastname, sp.statut, sp.firstname, sp.poste"; if ($showsoc > 0) { $sql.= " , s.nom as company"; } @@ -991,7 +991,7 @@ class Form $contactstatic->id=$obj->rowid; $contactstatic->lastname=$obj->lastname; $contactstatic->firstname=$obj->firstname; - + if ($obj->statut == 1){ if ($htmlname != 'none') { $disabled=0; @@ -1027,6 +1027,7 @@ class Form if (($showsoc > 0) && $obj->company) $out.= ' - ('.$obj->company.')'; } } + } $i++; } } diff --git a/htdocs/core/lib/company.lib.php b/htdocs/core/lib/company.lib.php index 9ce429a318d..2bd863b263f 100644 --- a/htdocs/core/lib/company.lib.php +++ b/htdocs/core/lib/company.lib.php @@ -544,6 +544,7 @@ function show_contacts($conf,$langs,$db,$object,$backtopage='') print ''.$langs->trans("PhoneMobile").''; print ''.$langs->trans("Fax").''; print ''.$langs->trans("EMail").''; + print ''.$langs->trans("Status").''; print " "; if (! empty($conf->agenda->enabled) && $user->rights->agenda->myactions->create) { @@ -552,7 +553,8 @@ function show_contacts($conf,$langs,$db,$object,$backtopage='') } print ""; - $sql = "SELECT p.rowid, p.lastname, p.firstname, p.fk_pays, p.poste, p.phone, p.phone_mobile, p.fax, p.email "; + + $sql = "SELECT p.rowid, p.lastname, p.firstname, p.fk_pays, p.poste, p.phone, p.phone_mobile, p.fax, p.email, p.statut "; $sql .= " FROM ".MAIN_DB_PREFIX."socpeople as p"; $sql .= " WHERE p.fk_soc = ".$object->id; $sql .= " ORDER by p.datec"; @@ -569,7 +571,6 @@ function show_contacts($conf,$langs,$db,$object,$backtopage='') { $obj = $db->fetch_object($result); $var = !$var; - print ""; print ''; @@ -597,6 +598,8 @@ function show_contacts($conf,$langs,$db,$object,$backtopage='') print dol_print_email($obj->email,$obj->rowid,$object->id,'AC_EMAIL'); print ''; + if ($obj->statut==0) print ''.$langs->trans('Disabled').' '.img_picto($langs->trans('StatusContactDraftShort'),'statut0').''; + elseif ($obj->statut==1) print ''.$langs->trans('Enabled').' '.img_picto($langs->trans('StatusContactValidatedShort'),'statut1').''; if (! empty($conf->agenda->enabled) && $user->rights->agenda->myactions->create) { print ''; @@ -611,6 +614,7 @@ function show_contacts($conf,$langs,$db,$object,$backtopage='') print ''; } + if ($user->rights->societe->contact->creer) { print ''; @@ -618,7 +622,9 @@ function show_contacts($conf,$langs,$db,$object,$backtopage='') print img_edit(); print ''; } - + + + print "\n"; $i++; } diff --git a/htdocs/install/mysql/migration/3.4.0-3.5.0.sql b/htdocs/install/mysql/migration/3.4.0-3.5.0.sql index a87a80d7d52..9afc2da09b0 100755 --- a/htdocs/install/mysql/migration/3.4.0-3.5.0.sql +++ b/htdocs/install/mysql/migration/3.4.0-3.5.0.sql @@ -22,6 +22,8 @@ DELETE FROM llx_menu where module='holiday'; ALTER TABLE llx_projet_task ADD COLUMN planned_workload real DEFAULT 0 NOT NULL AFTER duration_effective; +ALTER TABLE llx_socpeople ADD COLUMN statut tinyint(4) DEFAULT 1 NOT NULL after import_key; + create table llx_fichinter_extrafields ( rowid integer AUTO_INCREMENT PRIMARY KEY, diff --git a/htdocs/install/mysql/tables/llx_socpeople.sql b/htdocs/install/mysql/tables/llx_socpeople.sql index d06e91e5395..04be54ba06c 100644 --- a/htdocs/install/mysql/tables/llx_socpeople.sql +++ b/htdocs/install/mysql/tables/llx_socpeople.sql @@ -50,5 +50,6 @@ create table llx_socpeople note_public text, default_lang varchar(6), canvas varchar(32), -- type of canvas if used (null by default) - import_key varchar(14) + import_key varchar(14), + statut tinyint(4) )ENGINE=innodb; diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index a225276c3af..9127adc3a8f 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -1580,7 +1580,9 @@ class Societe extends CommonObject { $contact_property = array(); - $sql = "SELECT rowid, email, phone_mobile, lastname, poste, firstname"; + + + $sql = "SELECT rowid, email, statut, phone_mobile, lastname, firstname"; $sql.= " FROM ".MAIN_DB_PREFIX."socpeople"; $sql.= " WHERE fk_soc = '".$this->id."'"; @@ -1596,12 +1598,12 @@ class Societe extends CommonObject $obj = $this->db->fetch_object($resql); if ($mode == 'email') $property=$obj->email; else if ($mode == 'mobile') $property=$obj->phone_mobile; - if(!empty($obj->poste)){ - $contact_property[$obj->rowid] = trim(dolGetFirstLastname($obj->firstname,$obj->lastname))." (".$obj->poste.")"." <".$property.">"; - } - else - { - $contact_property[$obj->rowid] = trim(dolGetFirstLastname($obj->firstname,$obj->lastname))." <".$property.">"; + + + if ($obj->statut == 1) + { + $contact_property[$obj->rowid] = trim(dolGetFirstLastname($obj->firstname,$obj->lastname))." <".$property.">"; + } $i++; }