28 if (empty($object) || !is_object($object)) {
29 print
"Error, template page can't be called as URL";
33 if (empty($preselectedtypeofcontact)) {
34 $preselectedtypeofcontact = 0;
37 require_once DOL_DOCUMENT_ROOT.
'/contact/class/contact.class.php';
38 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formcompany.class.php';
40 $module = $object->element;
43 if ($module ==
'propal') {
44 $permission = $user->rights->propal->creer;
45 } elseif ($module ==
'fichinter') {
46 $permission = $user->rights->ficheinter->creer;
47 } elseif ($module ==
'order_supplier') {
48 if (empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) {
49 $permission = $user->rights->fournisseur->commande->creer;
51 $permission = $user->rights->supplier_order->creer;
53 } elseif ($module ==
'invoice_supplier' && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) {
54 if (empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) {
55 $permission = $user->rights->fournisseur->facture->creer;
57 $permission = $user->rights->supplier_invoice->creer;
59 } elseif ($module ==
'project') {
60 $permission = $user->rights->projet->creer;
61 } elseif ($module ==
'action') {
62 $permission = $user->rights->agenda->myactions->create;
63 } elseif ($module ==
'shipping') {
64 $permission = $user->rights->expedition->creer;
65 } elseif ($module ==
'reception') {
66 $permission = $user->rights->reception->creer;
67 } elseif ($module ==
'project_task') {
68 $permission = $user->rights->projet->creer;
69 } elseif (!isset($permission) && isset($user->rights->$module->creer)) {
70 $permission = $user->rights->$module->creer;
71 } elseif (!isset($permission) && isset($user->rights->$module->write)) {
72 $permission = $user->rights->$module->write;
76 $companystatic =
new Societe($db);
77 $contactstatic =
new Contact($db);
78 $userstatic =
new User($db);
82 <!-- BEGIN PHP TEMPLATE CONTACTS -->
85 print
'<div class="underbanner clearboth"></div>'.
"\n";
87 print
'<div class="div-table-responsive-no-min">'.
"\n";
88 print
'<div class="tagtable tableforcontact centpercent noborder nobordertop allwidth">'.
"\n";
91 <form
class=
"tagtr liste_titre">
92 <div
class=
"tagtd liste_titre"><?php echo
img_object(
'',
'company',
'class="optiongrey paddingright"').$langs->trans(
"ThirdParty"); ?></div>
93 <div
class=
"tagtd liste_titre"><?php echo
img_picto($langs->trans(
"Users"),
'user',
'class="optiongrey paddingright"').$langs->trans(
"Users").
' | '.
img_picto($langs->trans(
"Contacts"),
'contact',
'class="optiongrey paddingright"').$langs->trans(
"Contacts"); ?></div>
94 <div
class=
"tagtd liste_titre"><?php echo $langs->trans(
"ContactType"); ?></div>
95 <div
class=
"tagtd liste_titre"> </div>
96 <div
class=
"tagtd liste_titre"> </div>
101 if (empty($hideaddcontactforuser)) {
103 <form
class=
"tagtr impair nohover" action=
"<?php echo $_SERVER["PHP_SELF
"].'?id='.$object->id; ?>" method=
"POST">
104 <input
type=
"hidden" name=
"token" value=
"<?php echo newToken(); ?>" />
105 <input
type=
"hidden" name=
"id" value=
"<?php echo $object->id; ?>" />
106 <input
type=
"hidden" name=
"action" value=
"addcontact" />
107 <input
type=
"hidden" name=
"source" value=
"internal" />
108 <?php
if (!empty($withproject)) {
109 print
'<input type="hidden" name="withproject" value="'.$withproject.
'">';
112 <div
class=
"tagtd"><?php echo $conf->global->MAIN_INFO_SOCIETE_NOM; ?></div>
113 <!-- <div
class=
"nowrap tagtd"><?php echo
img_object(
'',
'user').
' '.$langs->trans(
"Users"); ?></div> -->
114 <div
class=
"tagtd maxwidthonsmartphone"><?php echo
img_object(
'',
'user',
'class="pictofixedwidth"').$form->select_dolusers($user->id,
'userid', 0, (!empty($userAlreadySelected) ? $userAlreadySelected :
null), 0,
null,
null, 0, 56, 0,
'', 0,
'',
'minwidth100imp widthcentpercentminusxx maxwidth400'); ?></div>
115 <div
class=
"tagtd maxwidthonsmartphone">
117 $tmpobject = $object;
118 if (($object->element ==
'shipping' || $object->element ==
'reception') && is_object($objectsrc)) {
119 $tmpobject = $objectsrc;
121 $formcompany->selectTypeContact($tmpobject,
'',
'type',
'internal',
'position', 0,
'minwidth125imp widthcentpercentminusx maxwidth400');
123 <div
class=
"tagtd"> </div>
124 <div
class=
"tagtd center"><input
type=
"submit" class=
"button small" value=
"<?php echo $langs->trans("Add
"); ?>"></div>
130 if (empty($hideaddcontactforthirdparty)) {
133 <form
class=
"tagtr pair nohover" action=
"<?php echo $_SERVER["PHP_SELF
"].'?id='.$object->id; ?>" method=
"POST">
134 <input
type=
"hidden" name=
"token" value=
"<?php echo newToken(); ?>" />
135 <input
type=
"hidden" name=
"id" value=
"<?php echo $object->id; ?>" />
136 <input
type=
"hidden" name=
"action" value=
"addcontact" />
137 <input
type=
"hidden" name=
"source" value=
"external" />
138 <input
type=
"hidden" name=
"page_y" value=
"" />
139 <?php
if (!empty($withproject)) {
140 print
'<input type="hidden" name="withproject" value="'.$withproject.
'">';
143 <div
class=
"tagtd nowrap noborderbottom">
145 $selectedCompany =
GETPOSTISSET(
"newcompany") ?
GETPOST(
"newcompany",
'int') : (empty($object->socid) ? 0 : $object->socid);
146 $selectedCompany = $formcompany->selectCompaniesForNewContact($object,
'id', $selectedCompany,
'newcompany',
'', 0,
'',
'minwidth300imp'); ?>
148 <div
class=
"tagtd noborderbottom minwidth500imp">
150 print
img_object(
'',
'contact',
'class="pictofixedwidth"').$form->selectcontacts(($selectedCompany > 0 ? $selectedCompany : -1),
'',
'contactid', 3,
'',
'', 1,
'minwidth100imp widthcentpercentminusxx maxwidth400');
151 $nbofcontacts =
$form->num;
154 if (!empty($object->socid) && $object->socid > 1 && $user->rights->societe->creer) {
155 $newcardbutton .=
'<a href="'.DOL_URL_ROOT.
'/contact/card.php?socid='.$selectedCompany.
'&action=create&backtopage='.urlencode($_SERVER[
"PHP_SELF"].
'?id='.$object->id).
'" title="'.$langs->trans(
'NewContact').
'"><span class="fa fa-plus-circle valignmiddle paddingleft"></span></a>';
157 print $newcardbutton;
160 <div
class=
"tagtd noborderbottom">
162 $tmpobject = $object;
163 if (($object->element ==
'shipping' || $object->element ==
'reception') && is_object($objectsrc)) {
164 $tmpobject = $objectsrc;
166 $formcompany->selectTypeContact($tmpobject, $preselectedtypeofcontact,
'typecontact',
'external',
'position', 0,
'minwidth125imp widthcentpercentminusx maxwidth400');
169 <div
class=
"tagtd noborderbottom"> </div>
170 <div
class=
"tagtd center noborderbottom">
171 <input
type=
"submit" id=
"add-customer-contact" class=
"button small" value=
"<?php echo $langs->trans("Add
"); ?>"<?php
if (!$nbofcontacts) {
191 foreach (array(
'internal',
'external') as $source) {
192 if (($object->element ==
'shipping' || $object->element ==
'reception') && is_object($objectsrc)) {
193 $contactlist = $objectsrc->liste_contact(-1, $source);
195 $contactlist = $object->liste_contact(-1, $source);
198 foreach ($contactlist as $contact) {
199 $entry =
new stdClass();
200 $entry->id = $contact[
'rowid'];
201 $entry->type = $contact[
'libelle'];
203 $entry->thirdparty_html =
"";
204 $entry->thirdparty_name =
"";
205 $entry->contact_html =
"";
206 $entry->contact_name =
"";
209 if ($contact[
'source'] ==
'internal') {
210 $entry->nature = $langs->trans(
"User");
211 } elseif ($contact[
'source'] ==
'external') {
212 $entry->nature = $langs->trans(
"ThirdPartyContact");
215 if ($contact[
'socid'] > 0) {
216 $companystatic->fetch($contact[
'socid']);
217 $entry->thirdparty_html = $companystatic->getNomUrl(1);
218 $entry->thirdparty_name = strtolower($companystatic->getFullName($langs));
219 } elseif ($contact[
'socid'] < 0) {
220 $entry->thirdparty_html = $conf->global->MAIN_INFO_SOCIETE_NOM;
221 $entry->thirdparty_name = strtolower($conf->global->MAIN_INFO_SOCIETE_NOM);
224 if ($contact[
'source'] ==
'internal') {
225 $userstatic->fetch($contact[
'id']);
226 $entry->contact_html = $userstatic->getNomUrl(-1,
'', 0, 0, 0, 0,
'',
'valignmiddle');
227 $entry->contact_name = strtolower($userstatic->getFullName($langs));
228 } elseif ($contact[
'source'] ==
'external') {
229 $contactstatic->fetch($contact[
'id']);
230 $entry->contact_html = $contactstatic->getNomUrl(1,
'', 0,
'', 0, 0);
231 $entry->contact_name = strtolower($contactstatic->getFullName($langs));
234 if ($contact[
'source'] ==
'internal') {
235 $entry->status = $userstatic->LibStatut($contact[
'statuscontact'], 3);
236 } elseif ($contact[
'source'] ==
'external') {
237 $entry->status = $contactstatic->LibStatut($contact[
'statuscontact'], 3);
245 $sortfield =
GETPOST(
"sortfield",
"aZ09comma");
246 $sortorder =
GETPOST(
"sortorder",
'aZ09comma');
249 $sortfield =
"nature";
258 $arrayfields = array(
259 'rowid' => array(
'label'=>$langs->trans(
"Id"),
'checked'=>1),
260 'nature' => array(
'label'=>$langs->trans(
"NatureOfContact"),
'checked'=>1),
261 'thirdparty' => array(
'label'=>$langs->trans(
"ThirdParty"),
'checked'=>1),
262 'contact' => array(
'label'=>$langs->trans(
"Users").
' | '.$langs->trans(
"Contacts"),
'checked'=>1),
263 'type' => array(
'label'=>$langs->trans(
"ContactType"),
'checked'=>1),
264 'status' => array(
'label'=>$langs->trans(
"Status"),
'checked'=>1),
265 'link' => array(
'label'=>$langs->trans(
"Link"),
'checked'=>1),
268 $param =
'id='.$object->id.
'&mainmenu=home';
273 print
'<form method="POST" id="searchFormList" action="'.$_SERVER[
"PHP_SELF"].
'">';
274 print
'<input type="hidden" name="token" value="'.newToken().
'">';
275 print
'<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
276 print
'<input type="hidden" name="action" value="list">';
277 print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
278 print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
280 print
'<div class="div-table-responsive-no-min">'.
"\n";
281 print
'<table class="tagtable nobottomiftotal liste">';
286 print
'<tr class="liste_titre">';
287 print_liste_field_titre($arrayfields[
'thirdparty'][
'label'], $_SERVER[
"PHP_SELF"],
"thirdparty_name",
"", $param,
"", $sortfield, $sortorder);
288 print_liste_field_titre($arrayfields[
'contact'][
'label'], $_SERVER[
"PHP_SELF"],
"contact_name",
"", $param,
"", $sortfield, $sortorder);
289 print_liste_field_titre($arrayfields[
'nature'][
'label'], $_SERVER[
"PHP_SELF"],
"nature",
"", $param,
"", $sortfield, $sortorder);
290 print_liste_field_titre($arrayfields[
'type'][
'label'], $_SERVER[
"PHP_SELF"],
"type",
"", $param,
"", $sortfield, $sortorder);
291 print_liste_field_titre($arrayfields[
'status'][
'label'], $_SERVER[
"PHP_SELF"],
"statut",
"", $param,
"", $sortfield, $sortorder,
'center ');
292 print_liste_field_titre(
'', $_SERVER[
"PHP_SELF"],
"",
"",
"",
"", $sortfield, $sortorder,
'center maxwidthsearch ');
295 foreach ($list as $entry) {
296 print
'<tr class="oddeven">';
298 print
'<td class="tdoverflowmax200">'.$entry->thirdparty_html.
'</td>';
299 print
'<td class="tdoverflowmax200">'.$entry->contact_html.
'</td>';
300 print
'<td class="nowrap"><span class="opacitymedium">'.$entry->nature.
'</span></td>';
301 print
'<td class="tdoverflowmax200">'.$entry->type.
'</td>';
302 print
'<td class="tdoverflowmax200 center">'.$entry->status.
'</td>';
305 $href = $_SERVER[
"PHP_SELF"];
306 $href .=
'?id='.((int) $object->id);
307 $href .=
'&action=deletecontact&token='.newToken();
308 $href .=
'&lineid='.((int) $entry->id);
310 print
'<td class="center">';
311 print
'<a href="'.$href.
'">';
312 print
img_picto($langs->trans(
"Unlink"),
"unlink");
325 print
"<!-- TEMPLATE CONTACTS HOOK BEGIN HERE -->\n";
326 if (is_object($hookmanager)) {
327 $hookmanager->initHooks(array(
'contacttpl'));
328 $parameters = array();
329 $reshook = $hookmanager->executeHooks(
'formContactTpl', $parameters, $object, $action);
331 print
"<!-- END PHP TEMPLATE CONTACTS -->\n";
Class to manage third parties objects (customers, suppliers, prospects...)
Class to manage Dolibarr users.
if($cancel &&! $id) if($action=='add' &&! $cancel) if($action=='delete') if($id) $form
Actions.
img_object($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0)
Show a picto called object_picto (generic function)
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
dol_sort_array(&$array, $index, $order='asc', $natsort=0, $case_sensitive=0, $keepindex=0)
Advanced sort array by second index function, which produces ascending (default) or descending output...
print_liste_field_titre($name, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $tooltip="", $forcenowrapcolumntitle=0)
Show title line of an array.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
GETPOSTISSET($paramname)
Return true if we are in a context of submitting the parameter $paramname from a POST of a form.
if(preg_match('/crypted:/i', $dolibarr_main_db_pass)||!empty($dolibarr_main_db_encrypted_pass)) $conf db type
$conf db name
Only used if Module[ID]Name translation string is not found.