dolibarr 18.0.6
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
39if (GETPOST('actioncode', 'array')) {
40 $actioncode = GETPOST('actioncode', 'array', 3);
41 if (!count($actioncode)) {
42 $actioncode = '0';
43 }
44} else {
45 $actioncode = GETPOST("actioncode", "alpha", 3) ?GETPOST("actioncode", "alpha", 3) : (GETPOST("actioncode") == '0' ? '0' : getDolGlobalString('AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT'));
46}
47
48$search_rowid = GETPOST('search_rowid');
49$search_agenda_label = GETPOST('search_agenda_label');
50
51$action = GETPOST('action', 'alpha');
52$confirm = GETPOST('confirm', 'alpha');
53$id = GETPOST('id', 'int');
54$ref = GETPOST('ref', 'alpha');
55
56// Security check
57if ($user->socid) {
58 $socid = $user->socid;
59}
60
61// Security check
62$fieldvalue = (!empty($id) ? $id : (!empty($ref) ? $ref : ''));
63$fieldtype = (!empty($id) ? 'rowid' : 'ref');
64$result = restrictedArea($user, 'contrat', $fieldvalue, '', '', '', $fieldtype);
65
66$limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit;
67$sortfield = GETPOST('sortfield', 'aZ09comma');
68$sortorder = GETPOST('sortorder', 'aZ09comma');
69$page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int');
70if (empty($page) || $page == -1) {
71 $page = 0;
72} // If $page is not defined, or '' or -1
73$offset = $limit * $page;
74$pageprev = $page - 1;
75$pagenext = $page + 1;
76if (!$sortfield) {
77 $sortfield = 'a.datep,a.id';
78}
79if (!$sortorder) {
80 $sortorder = 'DESC,DESC';
81}
82
83
84$object = new Contrat($db);
85
86if ($id > 0 || !empty($ref)) {
87 $result = $object->fetch($id, $ref);
88}
89
90// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context
91$hookmanager->initHooks(array('agendacontract', 'globalcard'));
92
93$permissiontoadd = $user->hasRight('contrat', 'creer'); // Used by the include of actions_addupdatedelete.inc.php and actions_lineupdown.inc.php
94
95
96/*
97 * Actions
98 */
99
100$parameters = array('id' => $id, 'ref' => $ref);
101$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
102if ($reshook < 0) {
103 setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
104}
105
106if (empty($reshook)) {
107 // Cancel
108 if (GETPOST('cancel', 'alpha') && !empty($backtopage)) {
109 header("Location: ".$backtopage);
110 exit;
111 }
112
113 // Purge search criteria
114 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
115 $actioncode = '';
116 $search_agenda_label = '';
117 }
118}
119
120
121/*
122 * View
123 */
124
125$form = new Form($db);
126$formfile = new FormFile($db);
127if (isModEnabled('project')) {
128 $formproject = new FormProjets($db);
129}
130
131if ($object->id > 0) {
132 // Load object modContract
133 $module = (!empty($conf->global->CONTRACT_ADDON) ? $conf->global->CONTRACT_ADDON : 'mod_contract_serpis');
134 if (substr($module, 0, 13) == 'mod_contract_' && substr($module, -3) == 'php') {
135 $module = substr($module, 0, dol_strlen($module) - 4);
136 }
137 $result = dol_include_once('/core/modules/contract/'.$module.'.php');
138 if ($result > 0) {
139 $modCodeContract = new $module();
140 }
141
142 require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
143 require_once DOL_DOCUMENT_ROOT.'/contrat/class/contrat.class.php';
144
145 $object->fetch_thirdparty();
146
147 $title = $langs->trans("Agenda");
148 if (!empty($conf->global->MAIN_HTML_TITLE) && preg_match('/contractrefonly/', $conf->global->MAIN_HTML_TITLE) && $object->ref) {
149 $title = $object->ref." - ".$title;
150 }
151 llxHeader('', $title);
152
153 if (isModEnabled('notification')) {
154 $langs->load("mails");
155 }
156 $head = contract_prepare_head($object);
157
158 print dol_get_fiche_head($head, 'agenda', $langs->trans("Contract"), -1, 'contract');
159
160 $linkback = '<a href="'.DOL_URL_ROOT.'/societe/list.php?restore_lastsearch_values=1">'.$langs->trans("BackToList").'</a>';
161
162 $morehtmlref = '';
163 if (!empty($modCodeContract->code_auto)) {
164 $morehtmlref .= $object->ref;
165 } else {
166 $morehtmlref .= $form->editfieldkey("", 'ref', $object->ref, $object, $user->rights->contrat->creer, 'string', '', 0, 3);
167 $morehtmlref .= $form->editfieldval("", 'ref', $object->ref, $object, $user->rights->contrat->creer, 'string', '', 0, 2);
168 }
169
170 $permtoedit = 0;
171
172 $morehtmlref .= '<div class="refidno">';
173 // Ref customer
174 $morehtmlref .= $form->editfieldkey("RefCustomer", 'ref_customer', $object->ref_customer, $object, $permtoedit, 'string', '', 0, 1);
175 $morehtmlref .= $form->editfieldval("RefCustomer", 'ref_customer', $object->ref_customer, $object, $permtoedit, 'string', '', null, null, '', 1, 'getFormatedCustomerRef');
176 // Ref supplier
177 $morehtmlref .= '<br>';
178 $morehtmlref .= $form->editfieldkey("RefSupplier", 'ref_supplier', $object->ref_supplier, $object, $permtoedit, 'string', '', 0, 1);
179 $morehtmlref .= $form->editfieldval("RefSupplier", 'ref_supplier', $object->ref_supplier, $object, $permtoedit, 'string', '', null, null, '', 1, 'getFormatedSupplierRef');
180 // Thirdparty
181 $morehtmlref .= '<br>'.$object->thirdparty->getNomUrl(1);
182 if (empty($conf->global->MAIN_DISABLE_OTHER_LINK) && $object->thirdparty->id > 0) {
183 $morehtmlref .= ' (<a href="'.DOL_URL_ROOT.'/contrat/list.php?socid='.$object->thirdparty->id.'&search_name='.urlencode($object->thirdparty->name).'">'.$langs->trans("OtherContracts").'</a>)';
184 }
185 // Project
186 if (isModEnabled('project')) {
187 $langs->load("projects");
188 $morehtmlref .= '<br>';
189 if (0) {
190 $morehtmlref .= img_picto($langs->trans("Project"), 'project', 'class="pictofixedwidth"');
191 if ($action != 'classify') {
192 $morehtmlref .= '<a class="editfielda" href="'.$_SERVER['PHP_SELF'].'?action=classify&token='.newToken().'&id='.$object->id.'">'.img_edit($langs->transnoentitiesnoconv('SetProject')).'</a> ';
193 }
194 $morehtmlref .= $form->form_project($_SERVER['PHP_SELF'].'?id='.$object->id, $object->socid, $object->fk_project, ($action == 'classify' ? 'projectid' : 'none'), 0, 0, 0, 1, '', 'maxwidth300');
195 } else {
196 if (!empty($object->fk_project)) {
197 $proj = new Project($db);
198 $proj->fetch($object->fk_project);
199 $morehtmlref .= $proj->getNomUrl(1);
200 if ($proj->title) {
201 $morehtmlref .= '<span class="opacitymedium"> - '.dol_escape_htmltag($proj->title).'</span>';
202 }
203 }
204 }
205 }
206 $morehtmlref .= '</div>';
207
208 dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'none', $morehtmlref);
209
210 print '<div class="fichecenter">';
211
212 print '<div class="underbanner clearboth"></div>';
213
214 $object->info($object->id);
215 dol_print_object_info($object, 1);
216
217 print '</div>';
218
219 print dol_get_fiche_end();
220
221
222
223 // Actions buttons
224
225 /*$objthirdparty=$object;
226 $objcon=new stdClass();
227
228 $out='';
229 $permok=$user->rights->agenda->myactions->create;
230 if ((!empty($objthirdparty->id) || !empty($objcon->id)) && $permok)
231 {
232 //$out.='<a href="'.DOL_URL_ROOT.'/comm/action/card.php?action=create';
233 if (get_class($objthirdparty) == 'Societe') $out.='&amp;socid='.$objthirdparty->id;
234 $out.=(!empty($objcon->id)?'&amp;contactid='.$objcon->id:'').'&amp;backtopage=1';
235 //$out.=$langs->trans("AddAnAction").' ';
236 //$out.=img_picto($langs->trans("AddAnAction"),'filenew');
237 //$out.="</a>";
238 }*/
239
240
241 //print '<div class="tabsAction">';
242 //print '</div>';
243
244
245 $newcardbutton = '';
246 if (isModEnabled('agenda')) {
247 if ($user->hasRight('agenda', 'myactions', 'create') || $user->hasRight('agenda', 'allactions', 'create')) {
248 $backtopage = $_SERVER['PHP_SELF'].'?id='.$object->id;
249 $out = '&origin='.$object->element.'&originid='.$object->id.'&backtopage='.urlencode($backtopage);
250 $newcardbutton .= dolGetButtonTitle($langs->trans('AddAction'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/comm/action/card.php?action=create'.$out);
251 }
252 }
253
254 if (isModEnabled('agenda') && ($user->hasRight('agenda', 'myactions', 'read') || $user->hasRight('agenda', 'allactions', 'read'))) {
255 print '<br>';
256
257 $param = '&id='.$object->id;
258 if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) {
259 $param .= '&contextpage='.$contextpage;
260 }
261 if ($limit > 0 && $limit != $conf->liste_limit) {
262 $param .= '&limit='.$limit;
263 }
264
265 // Try to know count of actioncomm from cache
266 require_once DOL_DOCUMENT_ROOT.'/core/lib/memory.lib.php';
267 $cachekey = 'count_events_thirdparty_'.$object->id;
268 $nbEvent = dol_getcache($cachekey);
269
270 print load_fiche_titre($langs->trans("ActionsOnContract").(is_numeric($nbEvent) ? '<span class="opacitymedium colorblack paddingleft">('.$nbEvent.')</span>': ''), $newcardbutton, '');
271 //print_barre_liste($langs->trans("ActionsOnCompany"), 0, $_SERVER["PHP_SELF"], '', $sortfield, $sortorder, '', 0, -1, '', 0, $newcardbutton, '', 0, 1, 1);
272
273 // List of all actions
274 $filters = array();
275 $filters['search_agenda_label'] = $search_agenda_label;
276 $filters['search_rowid'] = $search_rowid;
277
278 // TODO Replace this with same code than into list.php
279 show_actions_done($conf, $langs, $db, $object, null, 0, $actioncode, '', $filters, $sortfield, $sortorder);
280 }
281}
282
283llxFooter();
284$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:56
llxFooter()
Empty footer.
Definition wrapper.php:70
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='', $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 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.
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.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
if(!function_exists( 'dol_getprefix')) dol_include_once($relpath, $classname='')
Make an include_once using default root and alternate root if it fails.
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 editer/modifier 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.