diff --git a/htdocs/adherents/class/adherent.class.php b/htdocs/adherents/class/adherent.class.php index 2a92ff52bcc..f3074d94172 100644 --- a/htdocs/adherents/class/adherent.class.php +++ b/htdocs/adherents/class/adherent.class.php @@ -38,6 +38,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/commonpeople.class.php'; /** @@ -45,6 +46,8 @@ require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; */ class Adherent extends CommonObject { + use CommonPeople; + /** * @var string ID to identify managed object */ diff --git a/htdocs/contact/class/contact.class.php b/htdocs/contact/class/contact.class.php index 23fcf2d8c0a..0d7ce191058 100644 --- a/htdocs/contact/class/contact.class.php +++ b/htdocs/contact/class/contact.class.php @@ -33,6 +33,7 @@ */ require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/commonsocialnetworks.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/commonpeople.class.php'; /** @@ -41,6 +42,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/commonsocialnetworks.class.php'; class Contact extends CommonObject { use CommonSocialNetworks; + use CommonPeople; /** * @var string ID to identify managed object diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 49dbf340b96..19221febe3c 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -854,70 +854,6 @@ abstract class CommonObject return $objref.(isset($hookmanager->resArray['objref']) ? $hookmanager->resArray['objref'] : ''); } - /** - * Return full name (civility+' '+name+' '+lastname) - * - * @param Translate $langs Language object for translation of civility (used only if option is 1) - * @param int $option 0=No option, 1=Add civility - * @param int $nameorder -1=Auto, 0=Lastname+Firstname, 1=Firstname+Lastname, 2=Firstname, 3=Firstname if defined else lastname, 4=Lastname, 5=Lastname if defined else firstname - * @param int $maxlen Maximum length - * @return string String with full name - */ - public function getFullName($langs, $option = 0, $nameorder = -1, $maxlen = 0) - { - //print "lastname=".$this->lastname." name=".$this->name." nom=".$this->nom."
\n"; - $lastname = $this->lastname; - $firstname = $this->firstname; - if (empty($lastname)) { - $lastname = (isset($this->lastname) ? $this->lastname : (isset($this->name) ? $this->name : (isset($this->nom) ? $this->nom : (isset($this->societe) ? $this->societe : (isset($this->company) ? $this->company : ''))))); - } - - $ret = ''; - if (!empty($option) && !empty($this->civility_code)) { - if ($langs->transnoentitiesnoconv("Civility".$this->civility_code) != "Civility".$this->civility_code) { - $ret .= $langs->transnoentitiesnoconv("Civility".$this->civility_code).' '; - } else { - $ret .= $this->civility_code.' '; - } - } - - $ret .= dolGetFirstLastname($firstname, $lastname, $nameorder); - - return dol_trunc($ret, $maxlen); - } - - /** - * Set to upper or ucwords/lower if needed - * - * @return void; - */ - public function setUpperOrLowerCase() - { - global $conf; - - if (!empty($conf->global->MAIN_FIRST_TO_UPPER)) { - $this->lastname = dol_ucwords(dol_strtolower($this->lastname)); - $this->firstname = dol_ucwords(dol_strtolower($this->firstname)); - $this->name = dol_ucwords(dol_strtolower($this->name)); - $this->name_alias = isset($this->name_alias)?dol_ucwords(dol_strtolower($this->name_alias)):''; - } - if (!empty($conf->global->MAIN_ALL_TO_UPPER)) { - $this->lastname = dol_strtoupper($this->lastname); - $this->name = dol_strtoupper($this->name); - $this->name_alias = dol_strtoupper($this->name_alias); - } - if (!empty($conf->global->MAIN_ALL_TOWN_TO_UPPER)) { - $this->address = dol_strtoupper($this->address); - $this->town = dol_strtoupper($this->town); - } - if (isset($this->email)) { - $this->email = dol_strtolower($this->email); - } - if (isset($this->personal_email)) { - $this->personal_email = dol_strtolower($this->personal_email); - } - } - /** * Return full address of contact * @@ -949,180 +885,6 @@ abstract class CommonObject } - /** - * Return full address for banner - * - * @param string $htmlkey HTML id to make banner content unique - * @param Object $object Object (thirdparty, thirdparty of contact for contact, null for a member) - * @return string Full address string - */ - public function getBannerAddress($htmlkey, $object) - { - global $conf, $langs, $form, $extralanguages; - - $countriesusingstate = array('AU', 'US', 'IN', 'GB', 'ES', 'UK', 'TR'); // See also option MAIN_FORCE_STATE_INTO_ADDRESS - - $contactid = 0; - $thirdpartyid = 0; - $elementforaltlanguage = $this->element; - if ($this->element == 'societe') { - $thirdpartyid = $this->id; - } - if ($this->element == 'contact') { - $contactid = $this->id; - $thirdpartyid = empty($this->fk_soc) ? 0 : $this->fk_soc; - } - if ($this->element == 'user') { - $contactid = $this->contact_id; - $thirdpartyid = empty($object->fk_soc) ? 0 : $object->fk_soc; - } - - $out = ''; - - $outdone = 0; - $coords = $this->getFullAddress(1, ', ', (!empty($conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT) ? $conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT : 0)); - if ($coords) { - if (!empty($conf->use_javascript_ajax)) { - // Add picto with tooltip on map - $namecoords = ''; - if ($this->element == 'contact' && !empty($conf->global->MAIN_SHOW_COMPANY_NAME_IN_BANNER_ADDRESS)) { - $namecoords .= $object->name.'
'; - } - $namecoords .= $this->getFullName($langs, 1).'
'.$coords; - // hideonsmatphone because copyToClipboard call jquery dialog that does not work with jmobile - $out .= ''; - $out .= img_picto($langs->trans("Address"), 'map-marker-alt'); - $out .= ' '; - } - $address = dol_print_address($coords, 'address_'.$htmlkey.'_'.$this->id, $this->element, $this->id, 1, ', '); - if ($address) { - $out .= $address; - $outdone++; - } - $outdone++; - - // List of extra languages - $arrayoflangcode = array(); - if (!empty($conf->global->PDF_USE_ALSO_LANGUAGE_CODE)) { - $arrayoflangcode[] = $conf->global->PDF_USE_ALSO_LANGUAGE_CODE; - } - - if (is_array($arrayoflangcode) && count($arrayoflangcode)) { - if (!is_object($extralanguages)) { - include_once DOL_DOCUMENT_ROOT.'/core/class/extralanguages.class.php'; - $extralanguages = new ExtraLanguages($this->db); - } - $extralanguages->fetch_name_extralanguages($elementforaltlanguage); - - if (!empty($extralanguages->attributes[$elementforaltlanguage]['address']) || !empty($extralanguages->attributes[$elementforaltlanguage]['town'])) { - $out .= "\n"; - $this->fetchValuesForExtraLanguages(); - if (!is_object($form)) { - $form = new Form($this->db); - } - $htmltext = ''; - // If there is extra languages - foreach ($arrayoflangcode as $extralangcode) { - $s = picto_from_langcode($extralangcode, 'class="pictoforlang paddingright"'); - // This also call dol_format_address() - $coords = $this->getFullAddress(1, ', ', $conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT, $extralangcode); - $htmltext .= $s.dol_print_address($coords, 'address_'.$htmlkey.'_'.$this->id, $this->element, $this->id, 1, ', '); - } - $out .= $form->textwithpicto('', $htmltext, -1, 'language', 'opacitymedium paddingleft'); - } - } - } - - // If MAIN_FORCE_STATE_INTO_ADDRESS is on, state is already returned previously with getFullAddress - if (!in_array($this->country_code, $countriesusingstate) && empty($conf->global->MAIN_FORCE_STATE_INTO_ADDRESS) - && empty($conf->global->SOCIETE_DISABLE_STATE) && $this->state) { - if (!empty($conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT) && $conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT == 1 && $this->region) { - $out .= ($outdone ? ' - ' : '').$this->region.' - '.$this->state; - } else { - $out .= ($outdone ? ' - ' : '').$this->state; - } - $outdone++; - } - - if ($outdone) { - $out = '
'.$out.'
'; - } - - if (!empty($this->phone) || !empty($this->phone_pro) || !empty($this->phone_mobile) || !empty($this->phone_perso) || !empty($this->fax) || !empty($this->office_phone) || !empty($this->user_mobile) || !empty($this->office_fax)) { - $out .= ($outdone ? '
' : ''); - } - if (!empty($this->phone) && empty($this->phone_pro)) { // For objects that store pro phone into ->phone - $out .= dol_print_phone($this->phone, $this->country_code, $contactid, $thirdpartyid, 'AC_TEL', ' ', 'phone', $langs->trans("PhonePro")); - $outdone++; - } - if (!empty($this->phone_pro)) { - $out .= dol_print_phone($this->phone_pro, $this->country_code, $contactid, $thirdpartyid, 'AC_TEL', ' ', 'phone', $langs->trans("PhonePro")); - $outdone++; - } - if (!empty($this->phone_mobile)) { - $out .= dol_print_phone($this->phone_mobile, $this->country_code, $contactid, $thirdpartyid, 'AC_TEL', ' ', 'mobile', $langs->trans("PhoneMobile")); - $outdone++; - } - if (!empty($this->phone_perso)) { - $out .= dol_print_phone($this->phone_perso, $this->country_code, $contactid, $thirdpartyid, 'AC_TEL', ' ', 'phone', $langs->trans("PhonePerso")); - $outdone++; - } - if (!empty($this->office_phone)) { - $out .= dol_print_phone($this->office_phone, $this->country_code, $contactid, $thirdpartyid, 'AC_TEL', ' ', 'phone', $langs->trans("PhonePro")); - $outdone++; - } - if (!empty($this->user_mobile)) { - $out .= dol_print_phone($this->user_mobile, $this->country_code, $contactid, $thirdpartyid, 'AC_TEL', ' ', 'mobile', $langs->trans("PhoneMobile")); - $outdone++; - } - if (!empty($this->fax)) { - $out .= dol_print_phone($this->fax, $this->country_code, $contactid, $thirdpartyid, 'AC_FAX', ' ', 'fax', $langs->trans("Fax")); - $outdone++; - } - if (!empty($this->office_fax)) { - $out .= dol_print_phone($this->office_fax, $this->country_code, $contactid, $thirdpartyid, 'AC_FAX', ' ', 'fax', $langs->trans("Fax")); - $outdone++; - } - - if ($out) { - $out .= '
'; - } - $outdone = 0; - if (!empty($this->email)) { - $out .= dol_print_email($this->email, $this->id, $object->id, 'AC_EMAIL', 0, 0, 1); - $outdone++; - } - if (!empty($this->url)) { - //$out.=dol_print_url($this->url,'_goout',0,1);//steve changed to blank - $out .= dol_print_url($this->url, '_blank', 0, 1); - $outdone++; - } - - if (isModEnabled('socialnetworks')) { - $outsocialnetwork = ''; - - if (!empty($this->socialnetworks) && is_array($this->socialnetworks) && count($this->socialnetworks) > 0) { - $socialnetworksdict = getArrayOfSocialNetworks(); - foreach ($this->socialnetworks as $key => $value) { - if ($value) { - $outsocialnetwork .= dol_print_socialnetworks($value, $this->id, $object->id, $key, $socialnetworksdict); - } - $outdone++; - } - } - - if ($outsocialnetwork) { - $out .= '
'.$outsocialnetwork.'
'; - } - } - - if ($out) { - return ''."\n".$out.''."\n"; - } else { - return ''; - } - } - /** * Return the link of last main doc file for direct public download. * diff --git a/htdocs/core/class/commonpeople.class.php b/htdocs/core/class/commonpeople.class.php new file mode 100644 index 00000000000..d3b29fdb915 --- /dev/null +++ b/htdocs/core/class/commonpeople.class.php @@ -0,0 +1,267 @@ + + * + * 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 3 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, see . + */ + +/** + * \file htdocs/core/class/commonpeople.class.php + * \ingroup core + * \brief File of the superclass of object classes that support people + */ + + +/** + * Superclass for thirdparties, contacts, members or users + */ +trait CommonPeople +{ + /** + * Return full name (civility+' '+name+' '+lastname) + * + * @param Translate $langs Language object for translation of civility (used only if option is 1) + * @param int $option 0=No option, 1=Add civility + * @param int $nameorder -1=Auto, 0=Lastname+Firstname, 1=Firstname+Lastname, 2=Firstname, 3=Firstname if defined else lastname, 4=Lastname, 5=Lastname if defined else firstname + * @param int $maxlen Maximum length + * @return string String with full name + */ + public function getFullName($langs, $option = 0, $nameorder = -1, $maxlen = 0) + { + //print "lastname=".$this->lastname." name=".$this->name." nom=".$this->nom."
\n"; + $lastname = $this->lastname; + $firstname = $this->firstname; + if (empty($lastname)) { + $lastname = (isset($this->lastname) ? $this->lastname : (isset($this->name) ? $this->name : (isset($this->nom) ? $this->nom : (isset($this->societe) ? $this->societe : (isset($this->company) ? $this->company : ''))))); + } + + $ret = ''; + if (!empty($option) && !empty($this->civility_code)) { + if ($langs->transnoentitiesnoconv("Civility".$this->civility_code) != "Civility".$this->civility_code) { + $ret .= $langs->transnoentitiesnoconv("Civility".$this->civility_code).' '; + } else { + $ret .= $this->civility_code.' '; + } + } + + $ret .= dolGetFirstLastname($firstname, $lastname, $nameorder); + + return dol_trunc($ret, $maxlen); + } + + /** + * Return full address for banner + * + * @param string $htmlkey HTML id to make banner content unique + * @param Object $object Object (thirdparty, thirdparty of contact for contact, null for a member) + * @return string Full address string + */ + public function getBannerAddress($htmlkey, $object) + { + global $conf, $langs, $form, $extralanguages; + + $countriesusingstate = array('AU', 'US', 'IN', 'GB', 'ES', 'UK', 'TR'); // See also option MAIN_FORCE_STATE_INTO_ADDRESS + + $contactid = 0; + $thirdpartyid = 0; + $elementforaltlanguage = $this->element; + if ($this->element == 'societe') { + $thirdpartyid = $this->id; + } + if ($this->element == 'contact') { + $contactid = $this->id; + $thirdpartyid = empty($this->fk_soc) ? 0 : $this->fk_soc; + } + if ($this->element == 'user') { + $contactid = $this->contact_id; + $thirdpartyid = empty($object->fk_soc) ? 0 : $object->fk_soc; + } + + $out = ''; + + $outdone = 0; + $coords = $this->getFullAddress(1, ', ', (!empty($conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT) ? $conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT : 0)); + if ($coords) { + if (!empty($conf->use_javascript_ajax)) { + // Add picto with tooltip on map + $namecoords = ''; + if ($this->element == 'contact' && !empty($conf->global->MAIN_SHOW_COMPANY_NAME_IN_BANNER_ADDRESS)) { + $namecoords .= $object->name.'
'; + } + $namecoords .= $this->getFullName($langs, 1).'
'.$coords; + // hideonsmatphone because copyToClipboard call jquery dialog that does not work with jmobile + $out .= ''; + $out .= img_picto($langs->trans("Address"), 'map-marker-alt'); + $out .= ' '; + } + $address = dol_print_address($coords, 'address_'.$htmlkey.'_'.$this->id, $this->element, $this->id, 1, ', '); + if ($address) { + $out .= $address; + $outdone++; + } + $outdone++; + + // List of extra languages + $arrayoflangcode = array(); + if (!empty($conf->global->PDF_USE_ALSO_LANGUAGE_CODE)) { + $arrayoflangcode[] = $conf->global->PDF_USE_ALSO_LANGUAGE_CODE; + } + + if (is_array($arrayoflangcode) && count($arrayoflangcode)) { + if (!is_object($extralanguages)) { + include_once DOL_DOCUMENT_ROOT.'/core/class/extralanguages.class.php'; + $extralanguages = new ExtraLanguages($this->db); + } + $extralanguages->fetch_name_extralanguages($elementforaltlanguage); + + if (!empty($extralanguages->attributes[$elementforaltlanguage]['address']) || !empty($extralanguages->attributes[$elementforaltlanguage]['town'])) { + $out .= "\n"; + $this->fetchValuesForExtraLanguages(); + if (!is_object($form)) { + $form = new Form($this->db); + } + $htmltext = ''; + // If there is extra languages + foreach ($arrayoflangcode as $extralangcode) { + $s = picto_from_langcode($extralangcode, 'class="pictoforlang paddingright"'); + // This also call dol_format_address() + $coords = $this->getFullAddress(1, ', ', $conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT, $extralangcode); + $htmltext .= $s.dol_print_address($coords, 'address_'.$htmlkey.'_'.$this->id, $this->element, $this->id, 1, ', '); + } + $out .= $form->textwithpicto('', $htmltext, -1, 'language', 'opacitymedium paddingleft'); + } + } + } + + // If MAIN_FORCE_STATE_INTO_ADDRESS is on, state is already returned previously with getFullAddress + if (!in_array($this->country_code, $countriesusingstate) && empty($conf->global->MAIN_FORCE_STATE_INTO_ADDRESS) + && empty($conf->global->SOCIETE_DISABLE_STATE) && $this->state) { + if (!empty($conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT) && $conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT == 1 && $this->region) { + $out .= ($outdone ? ' - ' : '').$this->region.' - '.$this->state; + } else { + $out .= ($outdone ? ' - ' : '').$this->state; + } + $outdone++; + } + + if ($outdone) { + $out = '
'.$out.'
'; + } + + if (!empty($this->phone) || !empty($this->phone_pro) || !empty($this->phone_mobile) || !empty($this->phone_perso) || !empty($this->fax) || !empty($this->office_phone) || !empty($this->user_mobile) || !empty($this->office_fax)) { + $out .= ($outdone ? '
' : ''); + } + if (!empty($this->phone) && empty($this->phone_pro)) { // For objects that store pro phone into ->phone + $out .= dol_print_phone($this->phone, $this->country_code, $contactid, $thirdpartyid, 'AC_TEL', ' ', 'phone', $langs->trans("PhonePro")); + $outdone++; + } + if (!empty($this->phone_pro)) { + $out .= dol_print_phone($this->phone_pro, $this->country_code, $contactid, $thirdpartyid, 'AC_TEL', ' ', 'phone', $langs->trans("PhonePro")); + $outdone++; + } + if (!empty($this->phone_mobile)) { + $out .= dol_print_phone($this->phone_mobile, $this->country_code, $contactid, $thirdpartyid, 'AC_TEL', ' ', 'mobile', $langs->trans("PhoneMobile")); + $outdone++; + } + if (!empty($this->phone_perso)) { + $out .= dol_print_phone($this->phone_perso, $this->country_code, $contactid, $thirdpartyid, 'AC_TEL', ' ', 'phone', $langs->trans("PhonePerso")); + $outdone++; + } + if (!empty($this->office_phone)) { + $out .= dol_print_phone($this->office_phone, $this->country_code, $contactid, $thirdpartyid, 'AC_TEL', ' ', 'phone', $langs->trans("PhonePro")); + $outdone++; + } + if (!empty($this->user_mobile)) { + $out .= dol_print_phone($this->user_mobile, $this->country_code, $contactid, $thirdpartyid, 'AC_TEL', ' ', 'mobile', $langs->trans("PhoneMobile")); + $outdone++; + } + if (!empty($this->fax)) { + $out .= dol_print_phone($this->fax, $this->country_code, $contactid, $thirdpartyid, 'AC_FAX', ' ', 'fax', $langs->trans("Fax")); + $outdone++; + } + if (!empty($this->office_fax)) { + $out .= dol_print_phone($this->office_fax, $this->country_code, $contactid, $thirdpartyid, 'AC_FAX', ' ', 'fax', $langs->trans("Fax")); + $outdone++; + } + + if ($out) { + $out .= '
'; + } + $outdone = 0; + if (!empty($this->email)) { + $out .= dol_print_email($this->email, $this->id, $object->id, 'AC_EMAIL', 0, 0, 1); + $outdone++; + } + if (!empty($this->url)) { + //$out.=dol_print_url($this->url,'_goout',0,1);//steve changed to blank + $out .= dol_print_url($this->url, '_blank', 0, 1); + $outdone++; + } + + if (isModEnabled('socialnetworks')) { + $outsocialnetwork = ''; + + if (!empty($this->socialnetworks) && is_array($this->socialnetworks) && count($this->socialnetworks) > 0) { + $socialnetworksdict = getArrayOfSocialNetworks(); + foreach ($this->socialnetworks as $key => $value) { + if ($value) { + $outsocialnetwork .= dol_print_socialnetworks($value, $this->id, $object->id, $key, $socialnetworksdict); + } + $outdone++; + } + } + + if ($outsocialnetwork) { + $out .= '
'.$outsocialnetwork.'
'; + } + } + + if ($out) { + return ''."\n".$out.''."\n"; + } else { + return ''; + } + } + + /** + * Set to upper or ucwords/lower if needed + * + * @return void; + */ + public function setUpperOrLowerCase() + { + global $conf; + + if (!empty($conf->global->MAIN_FIRST_TO_UPPER)) { + $this->lastname = dol_ucwords(dol_strtolower($this->lastname)); + $this->firstname = dol_ucwords(dol_strtolower($this->firstname)); + $this->name = dol_ucwords(dol_strtolower($this->name)); + $this->name_alias = isset($this->name_alias)?dol_ucwords(dol_strtolower($this->name_alias)):''; + } + if (!empty($conf->global->MAIN_ALL_TO_UPPER)) { + $this->lastname = dol_strtoupper($this->lastname); + $this->name = dol_strtoupper($this->name); + $this->name_alias = dol_strtoupper($this->name_alias); + } + if (!empty($conf->global->MAIN_ALL_TOWN_TO_UPPER)) { + $this->address = dol_strtoupper($this->address); + $this->town = dol_strtoupper($this->town); + } + if (isset($this->email)) { + $this->email = dol_strtolower($this->email); + } + if (isset($this->personal_email)) { + $this->personal_email = dol_strtolower($this->personal_email); + } + } +} diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index 4ab00102105..acc8694fbd2 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -41,6 +41,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/commonincoterm.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/commonsocialnetworks.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/commonpeople.class.php'; require_once DOL_DOCUMENT_ROOT.'/multicurrency/class/multicurrency.class.php'; @@ -51,6 +52,7 @@ class Societe extends CommonObject { use CommonIncoterm; use CommonSocialNetworks; + use CommonPeople; /** * @var string ID of module. diff --git a/htdocs/user/class/user.class.php b/htdocs/user/class/user.class.php index 5edd08db8b1..1d005da50ab 100644 --- a/htdocs/user/class/user.class.php +++ b/htdocs/user/class/user.class.php @@ -38,6 +38,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/security.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php'; require_once DOL_DOCUMENT_ROOT.'/user/class/usergroup.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/commonpeople.class.php'; /** @@ -45,6 +46,8 @@ require_once DOL_DOCUMENT_ROOT.'/user/class/usergroup.class.php'; */ class User extends CommonObject { + use CommonPeople; + /** * @var string ID to identify managed object */