dolibarr 20.0.0
agenda.php
Go to the documentation of this file.
1<?php
2/* Copyright (C) 2004-2009 Laurent Destailleur <eldy@users.sourceforge.net>
3 * Copyright (C) 2017 Ferran Marcet <fmarcet@2byte.es>
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 3 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <https://www.gnu.org/licenses/>.
17 */
18
25require "../main.inc.php";
26require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
27require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
28require_once DOL_DOCUMENT_ROOT.'/core/lib/contract.lib.php';
29require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
30require_once DOL_DOCUMENT_ROOT.'/contrat/class/contrat.class.php';
31if (isModEnabled('project')) {
32 require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
33 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php';
34}
35
36// Load translation files required by the page
37$langs->loadLangs(array("companies", "contracts"));
38
39$action = GETPOST('action', 'alpha');
40$confirm = GETPOST('confirm', 'alpha');
41$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'contratagenda';
42
43if (GETPOST('actioncode', 'array')) {
44 $actioncode = GETPOST('actioncode', 'array', 3);
45 if (!count($actioncode)) {
46 $actioncode = '0';
47 }
48} else {
49 $actioncode = GETPOST("actioncode", "alpha", 3) ? GETPOST("actioncode", "alpha", 3) : (GETPOST("actioncode") == '0' ? '0' : getDolGlobalString('AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT'));
50}
51
52$search_rowid = GETPOST('search_rowid');
53$search_agenda_label = GETPOST('search_agenda_label');
54
55$id = GETPOSTINT('id');
56$ref = GETPOST('ref', 'alpha');
57
58// Security check
59if ($user->socid) {
60 $socid = $user->socid;
61}
62
63// Security check
64$fieldvalue = (!empty($id) ? $id : (!empty($ref) ? $ref : ''));
65$fieldtype = (!empty($id) ? 'rowid' : 'ref');
66$result = restrictedArea($user, 'contrat', $fieldvalue, '', '', '', $fieldtype);
67
68$limit = GETPOSTINT('limit') ? GETPOSTINT('limit') : $conf->liste_limit;
69$sortfield = GETPOST('sortfield', 'aZ09comma');
70$sortorder = GETPOST('sortorder', 'aZ09comma');
71$page = GETPOSTISSET('pageplusone') ? (GETPOSTINT('pageplusone') - 1) : GETPOSTINT("page");
72if (empty($page) || $page == -1) {
73 $page = 0;
74} // If $page is not defined, or '' or -1
75$offset = $limit * $page;
76$pageprev = $page - 1;
77$pagenext = $page + 1;
78if (!$sortfield) {
79 $sortfield = 'a.datep,a.id';
80}
81if (!$sortorder) {
82 $sortorder = 'DESC,DESC';
83}
84
85
86$object = new Contrat($db);
87if ($id > 0 || !empty($ref)) {
88 $result = $object->fetch($id, $ref);
89}
90
91// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context
92$hookmanager->initHooks(array('agendacontract', 'globalcard'));
93
94$permissiontoadd = $user->hasRight('contrat', 'creer'); // Used by the include of actions_addupdatedelete.inc.php and actions_lineupdown.inc.php
95
96$result = restrictedArea($user, 'contrat', $object->id);
97
98
99/*
100 * Actions
101 */
102
103$parameters = array('id' => $id, 'ref' => $ref);
104$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
105if ($reshook < 0) {
106 setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
107}
108
109if (empty($reshook)) {
110 // Cancel
111 if (GETPOST('cancel', 'alpha') && !empty($backtopage)) {
112 header("Location: ".$backtopage);
113 exit;
114 }
115
116 // Purge search criteria
117 if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) { // All tests are required to be compatible with all browsers
118 $actioncode = '';
119 $search_agenda_label = '';
120 }
121}
122
123
124/*
125 * View
126 */
127
128$form = new Form($db);
129$formfile = new FormFile($db);
130if (isModEnabled('project')) {
131 $formproject = new FormProjets($db);
132}
133
134if ($object->id > 0) {
135 // Load object modContract
136 $module = (getDolGlobalString('CONTRACT_ADDON') ? $conf->global->CONTRACT_ADDON : 'mod_contract_serpis');
137 if (substr($module, 0, 13) == 'mod_contract_' && substr($module, -3) == 'php') {
138 $module = substr($module, 0, dol_strlen($module) - 4);
139 }
140 $result = dol_include_once('/core/modules/contract/'.$module.'.php');
141 if ($result > 0) {
142 $modCodeContract = new $module();
143 }
144
145 require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
146 require_once DOL_DOCUMENT_ROOT.'/contrat/class/contrat.class.php';
147
148 $object->fetch_thirdparty();
149
150 $title = $langs->trans("Agenda");
151 if (getDolGlobalString('MAIN_HTML_TITLE') && preg_match('/contractrefonly/', getDolGlobalString('MAIN_HTML_TITLE')) && $object->ref) {
152 $title = $object->ref." - ".$title;
153 }
154 $help_url = 'EN:Module_Contracts|FR:Module_Contrat';
155
156 llxHeader('', $title, $help_url);
157
158 if (isModEnabled('notification')) {
159 $langs->load("mails");
160 }
161 $head = contract_prepare_head($object);
162
163 print dol_get_fiche_head($head, 'agenda', $langs->trans("Contract"), -1, 'contract');
164
165 $linkback = '<a href="'.DOL_URL_ROOT.'/contrat/list.php?restore_lastsearch_values=1">'.$langs->trans("BackToList").'</a>';
166
167 $morehtmlref = '';
168 if (!empty($modCodeContract->code_auto)) {
169 $morehtmlref .= $object->ref;
170 } else {
171 $morehtmlref .= $form->editfieldkey("", 'ref', $object->ref, $object, $user->hasRight('contrat', 'creer'), 'string', '', 0, 3);
172 $morehtmlref .= $form->editfieldval("", 'ref', $object->ref, $object, $user->hasRight('contrat', 'creer'), 'string', '', 0, 2);
173 }
174
175 $permtoedit = 0;
176
177 $morehtmlref .= '<div class="refidno">';
178 // Ref customer
179 $morehtmlref .= $form->editfieldkey("RefCustomer", 'ref_customer', $object->ref_customer, $object, $permtoedit, 'string', '', 0, 1);
180 $morehtmlref .= $form->editfieldval("RefCustomer", 'ref_customer', $object->ref_customer, $object, $permtoedit, 'string', '', null, null, '', 1, 'getFormatedCustomerRef');
181 // Ref supplier
182 $morehtmlref .= '<br>';
183 $morehtmlref .= $form->editfieldkey("RefSupplier", 'ref_supplier', $object->ref_supplier, $object, $permtoedit, 'string', '', 0, 1);
184 $morehtmlref .= $form->editfieldval("RefSupplier", 'ref_supplier', $object->ref_supplier, $object, $permtoedit, 'string', '', null, null, '', 1, 'getFormatedSupplierRef');
185 // Thirdparty
186 $morehtmlref .= '<br>'.$object->thirdparty->getNomUrl(1);
187 if (!getDolGlobalString('MAIN_DISABLE_OTHER_LINK') && $object->thirdparty->id > 0) {
188 $morehtmlref .= ' (<a href="'.DOL_URL_ROOT.'/contrat/list.php?socid='.$object->thirdparty->id.'&search_name='.urlencode($object->thirdparty->name).'">'.$langs->trans("OtherContracts").'</a>)';
189 }
190 // Project
191 if (isModEnabled('project')) {
192 $langs->load("projects");
193 $morehtmlref .= '<br>';
194 if (0) {
195 $morehtmlref .= img_picto($langs->trans("Project"), 'project', 'class="pictofixedwidth"');
196 if ($action != 'classify') {
197 $morehtmlref .= '<a class="editfielda" href="'.$_SERVER['PHP_SELF'].'?action=classify&token='.newToken().'&id='.$object->id.'">'.img_edit($langs->transnoentitiesnoconv('SetProject')).'</a> ';
198 }
199 $morehtmlref .= $form->form_project($_SERVER['PHP_SELF'].'?id='.$object->id, $object->socid, $object->fk_project, ($action == 'classify' ? 'projectid' : 'none'), 0, 0, 0, 1, '', 'maxwidth300');
200 } else {
201 if (!empty($object->fk_project)) {
202 $proj = new Project($db);
203 $proj->fetch($object->fk_project);
204 $morehtmlref .= $proj->getNomUrl(1);
205 if ($proj->title) {
206 $morehtmlref .= '<span class="opacitymedium"> - '.dol_escape_htmltag($proj->title).'</span>';
207 }
208 }
209 }
210 }
211 $morehtmlref .= '</div>';
212
213 dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'none', $morehtmlref);
214
215 print '<div class="fichecenter">';
216
217 print '<div class="underbanner clearboth"></div>';
218
219 $object->info($object->id);
220 dol_print_object_info($object, 1);
221
222 print '</div>';
223
224 print dol_get_fiche_end();
225
226
227 // Actions buttons
228
229 /*$objthirdparty=$object;
230 $objcon=new stdClass();
231
232 $out='';
233 $permok=$user->rights->agenda->myactions->create;
234 if ((!empty($objthirdparty->id) || !empty($objcon->id)) && $permok)
235 {
236 //$out.='<a href="'.DOL_URL_ROOT.'/comm/action/card.php?action=create';
237 if (get_class($objthirdparty) == 'Societe') $out.='&amp;socid='.$objthirdparty->id;
238 $out.=(!empty($objcon->id)?'&amp;contactid='.$objcon->id:'').'&amp;backtopage=1';
239 //$out.=$langs->trans("AddAnAction").' ';
240 //$out.=img_picto($langs->trans("AddAnAction"),'filenew');
241 //$out.="</a>";
242 }*/
243
244
245 //print '<div class="tabsAction">';
246 //print '</div>';
247
248
249 $newcardbutton = '';
250 if (isModEnabled('agenda')) {
251 if ($user->hasRight('agenda', 'myactions', 'create') || $user->hasRight('agenda', 'allactions', 'create')) {
252 $backtopage = $_SERVER['PHP_SELF'].'?id='.$object->id;
253 $out = '&origin='.$object->element.'&originid='.$object->id.'&backtopage='.urlencode($backtopage);
254 $messagingUrl = DOL_URL_ROOT.'/contrat/messaging.php?id='.$object->id;
255 $newcardbutton .= dolGetButtonTitle($langs->trans('ShowAsConversation'), '', 'fa fa-comments imgforviewmode', $messagingUrl, '', 1);
256 $messagingUrl = DOL_URL_ROOT.'/contrat/agenda.php?id='.$object->id;
257 $newcardbutton .= dolGetButtonTitle($langs->trans('MessageListViewType'), '', 'fa fa-bars imgforviewmode', $messagingUrl, '', 2);
258 $newcardbutton .= dolGetButtonTitle($langs->trans('AddAction'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/comm/action/card.php?action=create'.$out);
259 }
260 }
261
262 if (isModEnabled('agenda') && ($user->hasRight('agenda', 'myactions', 'read') || $user->hasRight('agenda', 'allactions', 'read'))) {
263 print '<br>';
264
265 $param = '&id='.$object->id;
266 if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) {
267 $param .= '&contextpage='.$contextpage;
268 }
269 if ($limit > 0 && $limit != $conf->liste_limit) {
270 $param .= '&limit='.$limit;
271 }
272
273 // Try to know count of actioncomm from cache
274 require_once DOL_DOCUMENT_ROOT.'/core/lib/memory.lib.php';
275 $cachekey = 'count_events_thirdparty_'.$object->id;
276 $nbEvent = dol_getcache($cachekey);
277
278 print_barre_liste($langs->trans("ActionsOnContract"), 0, $_SERVER["PHP_SELF"], '', $sortfield, $sortorder, '', 0, -1, '', 0, $newcardbutton, '', 0, 1, 0);
279
280 // List of all actions
281 $filters = array();
282 $filters['search_agenda_label'] = $search_agenda_label;
283 $filters['search_rowid'] = $search_rowid;
284
285 // TODO Replace this with same code than into list.php
286 show_actions_done($conf, $langs, $db, $object, null, 0, $actioncode, '', $filters, $sortfield, $sortorder);
287 }
288}
289
290llxFooter();
291$db->close();
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
Definition card.php:58
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 contracts.
Class to offer components to list and upload files.
Class to manage generation of HTML components Only common components must be here.
Class to manage building of HTML components.
Class to manage projects.
show_actions_done($conf, $langs, $db, $filterobj, $objcon=null, $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).
contract_prepare_head(Contrat $object)
Prepare array with list of tabs.
dol_print_object_info($object, $usetable=0)
Show information on an object TODO Move this into html.formother.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
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.
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_strlen($string, $stringencoding='UTF-8')
Make a strlen call.
if(!function_exists( 'dol_getprefix')) dol_include_once($relpath, $classname='')
Make an include_once using default root and alternate root if it fails.
newToken()
Return the value of token currently saved into session with name 'newtoken'.
print_barre_liste($title, $page, $file, $options='', $sortfield='', $sortorder='', $morehtmlcenter='', $num=-1, $totalnboflines='', $picto='generic', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limit=-1, $hideselectlimit=0, $hidenavigation=0, $pagenavastextinput=0, $morehtmlrightbeforearrow='')
Print a title with navigation controls for pagination.
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.
img_edit($titlealt='default', $float=0, $other='')
Show logo edit/modify fiche.
dol_getcache($memoryid)
Read a memory area shared by all users, all sessions on server.
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.