dolibarr 19.0.4
agenda.php
1<?php
2/* Copyright (C) 2004-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
3 * Copyright (C) 2004-2018 Laurent Destailleur <eldy@users.sourceforge.net>
4 * Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be>
5 * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@inodbox.com>
6 * Copyright (C) 2007 Franky Van Liedekerke <franky.van.liedekerke@telenet.be>
7 * Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
8 * Copyright (C) 2013-2016 Alexandre Spangaro <aspangaro@open-dsi.fr>
9 * Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>
10 * Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
11 *
12 * This program is free software; you can redistribute it and/or modify
13 * it under the terms of the GNU General Public License as published by
14 * the Free Software Foundation; either version 3 of the License, or
15 * (at your option) any later version.
16 *
17 * This program is distributed in the hope that it will be useful,
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 * GNU General Public License for more details.
21 *
22 * You should have received a copy of the GNU General Public License
23 * along with this program. If not, see <https://www.gnu.org/licenses/>.
24 */
25
33// Load Dolibarr environment
34require '../main.inc.php';
35require_once DOL_DOCUMENT_ROOT.'/comm/action/class/actioncomm.class.php';
36require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php';
37require_once DOL_DOCUMENT_ROOT.'/core/lib/contact.lib.php';
38require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
39require_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php';
40require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
41require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
42require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
43require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
44require_once DOL_DOCUMENT_ROOT.'/core/class/html.form.class.php';
45require_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php';
46require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php';
47require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
48
49// Load translation files required by the page
50$langs->loadLangs(array('companies', 'users', 'other', 'commercial'));
51
52$mesg = ''; $error = 0; $errors = array();
53
54// Get parameters
55$action = (GETPOST('action', 'alpha') ? GETPOST('action', 'alpha') : 'view');
56$confirm = GETPOST('confirm', 'alpha');
57$backtopage = GETPOST('backtopage', 'alpha');
58$id = GETPOST('id', 'int');
59$socid = GETPOST('socid', 'int');
60
61// Initialize objects
62$object = new Contact($db);
63$extrafields = new ExtraFields($db);
64
65// fetch optionals attributes and labels
66$extrafields->fetch_name_optionals_label($object->table_element);
67
68// Get object canvas (By default, this is not defined, so standard usage of dolibarr)
69$object->getCanvas($id);
70$objcanvas = null;
71$canvas = (!empty($object->canvas) ? $object->canvas : GETPOST("canvas"));
72if (!empty($canvas)) {
73 require_once DOL_DOCUMENT_ROOT.'/core/class/canvas.class.php';
74 $objcanvas = new Canvas($db, $action);
75 $objcanvas->getCanvas('contact', 'contactcard', $canvas);
76}
77
78if (GETPOST('actioncode', 'array')) {
79 $actioncode = GETPOST('actioncode', 'array', 3);
80 if (!count($actioncode)) {
81 $actioncode = '0';
82 }
83} else {
84 $actioncode = GETPOST("actioncode", "alpha", 3) ? GETPOST("actioncode", "alpha", 3) : (GETPOST("actioncode") == '0' ? '0' : getDolGlobalString('AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT'));
85}
86$search_rowid = GETPOST('search_rowid');
87$search_agenda_label = GETPOST('search_agenda_label');
88
89// Security check
90if ($user->socid) {
91 $socid = $user->socid;
92}
93$result = restrictedArea($user, 'contact', $id, 'socpeople&societe', '', '', 'rowid', 0); // If we create a contact with no company (shared contacts), no check on write permission
94
95$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit;
96$sortfield = GETPOST('sortfield', 'aZ09comma');
97$sortorder = GETPOST('sortorder', 'aZ09comma');
98$page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int');
99if (empty($page) || $page == -1) {
100 $page = 0;
101} // If $page is not defined, or '' or -1
102$offset = $limit * $page;
103$pageprev = $page - 1;
104$pagenext = $page + 1;
105if (!$sortfield) {
106 $sortfield = 'a.datep, a.id';
107}
108if (!$sortorder) {
109 $sortorder = 'DESC';
110}
111
112// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context
113$hookmanager->initHooks(array('contactagenda', 'globalcard'));
114
115
116/*
117 * Actions
118 */
119
120$parameters = array('id'=>$id, 'objcanvas'=>$objcanvas);
121$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
122if ($reshook < 0) {
123 setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
124}
125
126if (empty($reshook)) {
127 // Cancel
128 if (GETPOST('cancel', 'alpha') && !empty($backtopage)) {
129 header("Location: ".$backtopage);
130 exit;
131 }
132
133 // Purge search criteria
134 if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) { // All test are required to be compatible with all browsers
135 $actioncode = '';
136 $search_agenda_label = '';
137 }
138}
139
140
141/*
142 * View
143 */
144
145$form = new Form($db);
146
147$title = (getDolGlobalString('SOCIETE_ADDRESSES_MANAGEMENT') ? $langs->trans("Contacts") : $langs->trans("ContactsAddresses"));
148if (getDolGlobalString('MAIN_HTML_TITLE') && preg_match('/contactnameonly/', $conf->global->MAIN_HTML_TITLE) && $object->lastname) {
149 $title = $object->lastname;
150}
151$help_url = 'EN:Module_Third_Parties|FR:Module_Tiers|ES:Empresas|DE:Modul_Partner';
152llxHeader('', $title, $help_url);
153
154
155if ($socid > 0) {
156 $objsoc = new Societe($db);
157 $objsoc->fetch($socid);
158}
159
160if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) {
161 // -----------------------------------------
162 // When used with CANVAS
163 // -----------------------------------------
164 if (empty($object->error) && $id) {
165 $object = new Contact($db);
166 $result = $object->fetch($id);
167 if ($result <= 0) {
168 dol_print_error('', $object->error);
169 }
170 }
171 $objcanvas->assign_values($action, $object->id, $object->ref); // Set value for templates
172 $objcanvas->display_canvas($action); // Show template
173} else {
174 // -----------------------------------------
175 // When used in standard mode
176 // -----------------------------------------
177
178 // Confirm deleting contact
179 if ($user->hasRight('societe', 'contact', 'supprimer')) {
180 if ($action == 'delete') {
181 print $form->formconfirm($_SERVER["PHP_SELF"]."?id=".$id.($backtopage ? '&backtopage='.$backtopage : ''), $langs->trans("DeleteContact"), $langs->trans("ConfirmDeleteContact"), "confirm_delete", '', 0, 1);
182 }
183 }
184
185 /*
186 * Onglets
187 */
188 $head = array();
189 if ($id > 0) {
190 // Si edition contact deja existant
191 $object = new Contact($db);
192 $res = $object->fetch($id, $user);
193 if ($res < 0) {
194 dol_print_error($db, $object->error);
195 exit;
196 }
197 $res = $object->fetch_optionals();
198 if ($res < 0) {
199 dol_print_error($db, $object->error);
200 exit;
201 }
202
203 // Show tabs
204 $head = contact_prepare_head($object);
205
206 $title = (getDolGlobalString('SOCIETE_ADDRESSES_MANAGEMENT') ? $langs->trans("Contacts") : $langs->trans("ContactsAddresses"));
207 }
208
209 if (!empty($id) && $action != 'edit' && $action != 'create') {
210 $objsoc = new Societe($db);
211
212 /*
213 * Fiche en mode visualisation
214 */
215
216 dol_htmloutput_errors($error, $errors);
217
218 print dol_get_fiche_head($head, 'agenda', $title, -1, 'contact');
219
220 $linkback = '<a href="'.DOL_URL_ROOT.'/contact/list.php?restore_lastsearch_values=1">'.$langs->trans("BackToList").'</a>';
221
222 $morehtmlref = '<a href="'.DOL_URL_ROOT.'/contact/vcard.php?id='.$object->id.'" class="refid">';
223 $morehtmlref .= img_picto($langs->trans("Download").' '.$langs->trans("VCard"), 'vcard.png', 'class="valignmiddle marginleftonly paddingrightonly"');
224 $morehtmlref .= '</a>';
225
226 $morehtmlref .= '<div class="refidno">';
227 if (!getDolGlobalString('SOCIETE_DISABLE_CONTACTS')) {
228 $objsoc = new Societe($db);
229 $objsoc->fetch($object->socid);
230 // Thirdparty
231 if ($objsoc->id > 0) {
232 $morehtmlref .= $objsoc->getNomUrl(1);
233 } else {
234 $morehtmlref .= '<span class="opacitymedium">'.$langs->trans("ContactNotLinkedToCompany").'</span>';
235 }
236 }
237 $morehtmlref .= '</div>';
238
239 dol_banner_tab($object, 'id', $linkback, 1, 'rowid', 'ref', $morehtmlref);
240
241 print '<div class="fichecenter">';
242
243 print '<div class="underbanner clearboth"></div>';
244
245 $object->info($id);
246 dol_print_object_info($object, 1);
247
248 print '</div>';
249
250 print dol_get_fiche_end();
251
252
253 // Actions buttons
254
255 $objcon = $object;
256 $object->fetch_thirdparty();
257 $objthirdparty = $object->thirdparty;
258
259 $out = '';
260 $newcardbutton = '';
261 if (isModEnabled('agenda')) {
262 $permok = $user->hasRight('agenda', 'myactions', 'create');
263 if ((!empty($objthirdparty->id) || !empty($objcon->id)) && $permok) {
264 if (is_object($objthirdparty) && get_class($objthirdparty) == 'Societe') {
265 $out .= '&amp;originid='.$objthirdparty->id.($objthirdparty->id > 0 ? '&amp;socid='.$objthirdparty->id : '');
266 }
267 $out .= (!empty($objcon->id) ? '&amp;contactid='.$objcon->id : '').'&amp;origin=contact&amp;originid='.$object->id.'&amp;backtopage='.urlencode($_SERVER['PHP_SELF'].($objcon->id > 0 ? '?id='.$objcon->id : ''));
268 $out .= '&amp;datep='.urlencode(dol_print_date(dol_now(), 'dayhourlog'));
269 }
270
271 if ($user->hasRight('agenda', 'myactions', 'create') || $user->hasRight('agenda', 'allactions', 'create')) {
272 $newcardbutton .= dolGetButtonTitle($langs->trans('AddAction'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/comm/action/card.php?action=create'.$out);
273 }
274 }
275
276 if (isModEnabled('agenda') && ($user->hasRight('agenda', 'myactions', 'read') || $user->hasRight('agenda', 'allactions', 'read'))) {
277 print '<br>';
278
279 $param = '&id='.$id;
280 if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) {
281 $param .= '&contextpage='.$contextpage;
282 }
283 if ($limit > 0 && $limit != $conf->liste_limit) {
284 $param .= '&limit='.$limit;
285 }
286
287 print load_fiche_titre($langs->trans("ActionsOnContact"), $newcardbutton, '');
288 //print_barre_liste($langs->trans("ActionsOnCompany"), 0, $_SERVER["PHP_SELF"], '', $sortfield, $sortorder, $morehtmlcenter, 0, -1, '', '', '', '', 0, 1, 1);
289
290 // List of all actions
291 $filters = array();
292 $filters['search_agenda_label'] = $search_agenda_label;
293 $filters['search_rowid'] = $search_rowid;
294
295 show_actions_done($conf, $langs, $db, $objthirdparty, $object, 0, $actioncode, '', $filters, $sortfield, $sortorder);
296 }
297 }
298}
299
300
301llxFooter();
302
303$db->close();
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader()
Empty header.
Definition wrapper.php:55
llxFooter()
Empty footer.
Definition wrapper.php:69
Class to manage canvas.
Class to manage standard extra fields.
Class to manage generation of HTML components Only common components must be here.
Class to manage third parties objects (customers, suppliers, prospects...)
show_actions_done($conf, $langs, $db, $filterobj, $objcon='', $noprint=0, $actioncode='', $donetodo='done', $filters=array(), $sortfield='a.datep, a.id', $sortorder='DESC', $module='')
Show html area with actions (done or not, ignore the name of function).
contact_prepare_head(Contact $object)
Prepare array with list of tabs.
dol_print_object_info($object, $usetable=0)
Show informations on an object TODO Move this into html.formother.
dol_banner_tab($object, $paramid, $morehtml='', $shownav=1, $fieldid='rowid', $fieldref='ref', $morehtmlref='', $moreparam='', $nodbprefix=0, $morehtmlleft='', $morehtmlstatus='', $onlybanner=0, $morehtmlright='')
Show tab footer of a card.
load_fiche_titre($titre, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limittoshow=0, $moretabssuffix='', $dragdropfile=0)
Show tabs of a record.
dol_print_error($db='', $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
dolGetButtonTitle($label, $helpText='', $iconClass='fa fa-file', $url='', $id='', $status=1, $params=array())
Function dolGetButtonTitle : this kind of buttons are used in title in list.
dol_get_fiche_end($notab=0)
Return tab footer of a card.
dol_print_date($time, $format='', $tzoutput='auto', $outputlangs='', $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
dol_now($mode='auto')
Return date for now.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0)
Set event messages in dol_events session object.
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
dol_htmloutput_errors($mesgstring='', $mesgarray=array(), $keepembedded=0)
Print formated error messages to output (Used to show messages on html output).
restrictedArea(User $user, $features, $object=0, $tableandshare='', $feature2='', $dbt_keyfield='fk_soc', $dbt_select='rowid', $isdraft=0, $mode=0)
Check permissions of a user to show a page and an object.
Contact()
Old copy.
Definition index.php:572