dolibarr  20.0.0-alpha
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 
25 require "../main.inc.php";
26 require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
27 require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
28 require_once DOL_DOCUMENT_ROOT.'/core/lib/contract.lib.php';
29 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
30 require_once DOL_DOCUMENT_ROOT.'/contrat/class/contrat.class.php';
31 if (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 if (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 = GETPOSTINT('id');
54 $ref = GETPOST('ref', 'alpha');
55 
56 // Security check
57 if ($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 = GETPOSTINT('limit') ? GETPOSTINT('limit') : $conf->liste_limit;
67 $sortfield = GETPOST('sortfield', 'aZ09comma');
68 $sortorder = GETPOST('sortorder', 'aZ09comma');
69 $page = GETPOSTISSET('pageplusone') ? (GETPOSTINT('pageplusone') - 1) : GETPOSTINT("page");
70 if (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;
76 if (!$sortfield) {
77  $sortfield = 'a.datep,a.id';
78 }
79 if (!$sortorder) {
80  $sortorder = 'DESC,DESC';
81 }
82 
83 
84 $object = new Contrat($db);
85 if ($id > 0 || !empty($ref)) {
86  $result = $object->fetch($id, $ref);
87 }
88 
89 // Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context
90 $hookmanager->initHooks(array('agendacontract', 'globalcard'));
91 
92 $permissiontoadd = $user->hasRight('contrat', 'creer'); // Used by the include of actions_addupdatedelete.inc.php and actions_lineupdown.inc.php
93 
94 $result = restrictedArea($user, 'contrat', $object->id);
95 
96 
97 /*
98  * Actions
99  */
100 
101 $parameters = array('id' => $id, 'ref' => $ref);
102 $reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
103 if ($reshook < 0) {
104  setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
105 }
106 
107 if (empty($reshook)) {
108  // Cancel
109  if (GETPOST('cancel', 'alpha') && !empty($backtopage)) {
110  header("Location: ".$backtopage);
111  exit;
112  }
113 
114  // Purge search criteria
115  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
116  $actioncode = '';
117  $search_agenda_label = '';
118  }
119 }
120 
121 
122 /*
123  * View
124  */
125 
126 $form = new Form($db);
127 $formfile = new FormFile($db);
128 if (isModEnabled('project')) {
129  $formproject = new FormProjets($db);
130 }
131 
132 if ($object->id > 0) {
133  // Load object modContract
134  $module = (getDolGlobalString('CONTRACT_ADDON') ? $conf->global->CONTRACT_ADDON : 'mod_contract_serpis');
135  if (substr($module, 0, 13) == 'mod_contract_' && substr($module, -3) == 'php') {
136  $module = substr($module, 0, dol_strlen($module) - 4);
137  }
138  $result = dol_include_once('/core/modules/contract/'.$module.'.php');
139  if ($result > 0) {
140  $modCodeContract = new $module();
141  }
142 
143  require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
144  require_once DOL_DOCUMENT_ROOT.'/contrat/class/contrat.class.php';
145 
146  $object->fetch_thirdparty();
147 
148  $title = $langs->trans("Agenda");
149  if (getDolGlobalString('MAIN_HTML_TITLE') && preg_match('/contractrefonly/', getDolGlobalString('MAIN_HTML_TITLE')) && $object->ref) {
150  $title = $object->ref." - ".$title;
151  }
152  $help_url = 'EN:Module_Contracts|FR:Module_Contrat';
153 
154  llxHeader('', $title, $help_url);
155 
156  if (isModEnabled('notification')) {
157  $langs->load("mails");
158  }
160 
161  print dol_get_fiche_head($head, 'agenda', $langs->trans("Contract"), -1, 'contract');
162 
163  $linkback = '<a href="'.DOL_URL_ROOT.'/contrat/list.php?restore_lastsearch_values=1">'.$langs->trans("BackToList").'</a>';
164 
165  $morehtmlref = '';
166  if (!empty($modCodeContract->code_auto)) {
167  $morehtmlref .= $object->ref;
168  } else {
169  $morehtmlref .= $form->editfieldkey("", 'ref', $object->ref, $object, $user->hasRight('contrat', 'creer'), 'string', '', 0, 3);
170  $morehtmlref .= $form->editfieldval("", 'ref', $object->ref, $object, $user->hasRight('contrat', 'creer'), 'string', '', 0, 2);
171  }
172 
173  $permtoedit = 0;
174 
175  $morehtmlref .= '<div class="refidno">';
176  // Ref customer
177  $morehtmlref .= $form->editfieldkey("RefCustomer", 'ref_customer', $object->ref_customer, $object, $permtoedit, 'string', '', 0, 1);
178  $morehtmlref .= $form->editfieldval("RefCustomer", 'ref_customer', $object->ref_customer, $object, $permtoedit, 'string', '', null, null, '', 1, 'getFormatedCustomerRef');
179  // Ref supplier
180  $morehtmlref .= '<br>';
181  $morehtmlref .= $form->editfieldkey("RefSupplier", 'ref_supplier', $object->ref_supplier, $object, $permtoedit, 'string', '', 0, 1);
182  $morehtmlref .= $form->editfieldval("RefSupplier", 'ref_supplier', $object->ref_supplier, $object, $permtoedit, 'string', '', null, null, '', 1, 'getFormatedSupplierRef');
183  // Thirdparty
184  $morehtmlref .= '<br>'.$object->thirdparty->getNomUrl(1);
185  if (!getDolGlobalString('MAIN_DISABLE_OTHER_LINK') && $object->thirdparty->id > 0) {
186  $morehtmlref .= ' (<a href="'.DOL_URL_ROOT.'/contrat/list.php?socid='.$object->thirdparty->id.'&search_name='.urlencode($object->thirdparty->name).'">'.$langs->trans("OtherContracts").'</a>)';
187  }
188  // Project
189  if (isModEnabled('project')) {
190  $langs->load("projects");
191  $morehtmlref .= '<br>';
192  if (0) {
193  $morehtmlref .= img_picto($langs->trans("Project"), 'project', 'class="pictofixedwidth"');
194  if ($action != 'classify') {
195  $morehtmlref .= '<a class="editfielda" href="'.$_SERVER['PHP_SELF'].'?action=classify&token='.newToken().'&id='.$object->id.'">'.img_edit($langs->transnoentitiesnoconv('SetProject')).'</a> ';
196  }
197  $morehtmlref .= $form->form_project($_SERVER['PHP_SELF'].'?id='.$object->id, $object->socid, $object->fk_project, ($action == 'classify' ? 'projectid' : 'none'), 0, 0, 0, 1, '', 'maxwidth300');
198  } else {
199  if (!empty($object->fk_project)) {
200  $proj = new Project($db);
201  $proj->fetch($object->fk_project);
202  $morehtmlref .= $proj->getNomUrl(1);
203  if ($proj->title) {
204  $morehtmlref .= '<span class="opacitymedium"> - '.dol_escape_htmltag($proj->title).'</span>';
205  }
206  }
207  }
208  }
209  $morehtmlref .= '</div>';
210 
211  dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'none', $morehtmlref);
212 
213  print '<div class="fichecenter">';
214 
215  print '<div class="underbanner clearboth"></div>';
216 
217  $object->info($object->id);
219 
220  print '</div>';
221 
222  print dol_get_fiche_end();
223 
224 
225 
226  // Actions buttons
227 
228  /*$objthirdparty=$object;
229  $objcon=new stdClass();
230 
231  $out='';
232  $permok=$user->rights->agenda->myactions->create;
233  if ((!empty($objthirdparty->id) || !empty($objcon->id)) && $permok)
234  {
235  //$out.='<a href="'.DOL_URL_ROOT.'/comm/action/card.php?action=create';
236  if (get_class($objthirdparty) == 'Societe') $out.='&amp;socid='.$objthirdparty->id;
237  $out.=(!empty($objcon->id)?'&amp;contactid='.$objcon->id:'').'&amp;backtopage=1';
238  //$out.=$langs->trans("AddAnAction").' ';
239  //$out.=img_picto($langs->trans("AddAnAction"),'filenew');
240  //$out.="</a>";
241  }*/
242 
243 
244  //print '<div class="tabsAction">';
245  //print '</div>';
246 
247 
248  $newcardbutton = '';
249  if (isModEnabled('agenda')) {
250  if ($user->hasRight('agenda', 'myactions', 'create') || $user->hasRight('agenda', 'allactions', 'create')) {
251  $backtopage = $_SERVER['PHP_SELF'].'?id='.$object->id;
252  $out = '&origin='.$object->element.'&originid='.$object->id.'&backtopage='.urlencode($backtopage);
253  $messagingUrl = DOL_URL_ROOT.'/contrat/messaging.php?id='.$object->id;
254  $newcardbutton .= dolGetButtonTitle($langs->trans('ShowAsConversation'), '', 'fa fa-comments imgforviewmode', $messagingUrl, '', 1);
255  $messagingUrl = DOL_URL_ROOT.'/contrat/agenda.php?id='.$object->id;
256  $newcardbutton .= dolGetButtonTitle($langs->trans('MessageListViewType'), '', 'fa fa-bars imgforviewmode', $messagingUrl, '', 2);
257  $newcardbutton .= dolGetButtonTitle($langs->trans('AddAction'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/comm/action/card.php?action=create'.$out);
258  }
259  }
260 
261  if (isModEnabled('agenda') && ($user->hasRight('agenda', 'myactions', 'read') || $user->hasRight('agenda', 'allactions', 'read'))) {
262  print '<br>';
263 
264  $param = '&id='.$object->id;
265  if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) {
266  $param .= '&contextpage='.$contextpage;
267  }
268  if ($limit > 0 && $limit != $conf->liste_limit) {
269  $param .= '&limit='.$limit;
270  }
271 
272  // Try to know count of actioncomm from cache
273  require_once DOL_DOCUMENT_ROOT.'/core/lib/memory.lib.php';
274  $cachekey = 'count_events_thirdparty_'.$object->id;
275  $nbEvent = dol_getcache($cachekey);
276 
277  print load_fiche_titre($langs->trans("ActionsOnContract").(is_numeric($nbEvent) ? '<span class="opacitymedium colorblack paddingleft">('.$nbEvent.')</span>' : ''), $newcardbutton, '');
278  //print_barre_liste($langs->trans("ActionsOnCompany"), 0, $_SERVER["PHP_SELF"], '', $sortfield, $sortorder, '', 0, -1, '', 0, $newcardbutton, '', 0, 1, 1);
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 
290 llxFooter();
291 $db->close();
if($user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
Definition: card.php:58
if(GETPOST('button_removefilter_x', 'alpha')||GETPOST('button_removefilter.x', 'alpha')||GETPOST('button_removefilter', 'alpha')) if(GETPOST('button_search_x', 'alpha')||GETPOST('button_search.x', 'alpha')||GETPOST('button_search', 'alpha')) if($action=="save" &&empty($cancel)) $help_url
View.
Definition: agenda.php:118
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=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).
if($cancel &&! $id) if($action=='add' &&! $cancel) if($action=='delete') if($id) $form
Actions.
Definition: card.php:143
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.
load_fiche_titre($titre, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
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'.
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.
GETPOSTISSET($paramname)
Return true if we are in a context of submitting the parameter $paramname from a POST of a form.
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
isModEnabled($module)
Is Dolibarr module enabled.
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.
Definition: memory.lib.php:141
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.