1<?php 2/* Copyright (C) 2017 Laurent Destailleur <eldy@users.sourceforge.net> 3 * Copyright (C) ---Put here your own copyright and developer email--- 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 19/** 20 * \file knowledgerecord_agenda.php 21 * \ingroup knowledgemanagement 22 * \brief Tab of events on KnowledgeRecord 23 */ 24 25// Load Dolibarr environment 26require '../main.inc.php'; 27 28require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php'; 29require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; 30require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; 31require_once DOL_DOCUMENT_ROOT.'/knowledgemanagement/class/knowledgerecord.class.php'; 32require_once DOL_DOCUMENT_ROOT.'/knowledgemanagement/lib/knowledgemanagement_knowledgerecord.lib.php'; 33 34 35// Load translation files required by the page 36$langs->loadLangs(array("knowledgemanagement", "other")); 37 38// Get parameters 39$id = GETPOST('id', 'int'); 40$ref = GETPOST('ref', 'alpha'); 41$action = GETPOST('action', 'aZ09'); 42$cancel = GETPOST('cancel', 'aZ09'); 43$backtopage = GETPOST('backtopage', 'alpha'); 44 45if (GETPOST('actioncode', 'array')) { 46 $actioncode = GETPOST('actioncode', 'array', 3); 47 if (!count($actioncode)) { 48 $actioncode = '0'; 49 } 50} else { 51 $actioncode = GETPOST("actioncode", "alpha", 3) ? GETPOST("actioncode", "alpha", 3) : (GETPOST("actioncode") == '0' ? '0' : (empty($conf->global->AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT) ? '' : $conf->global->AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT)); 52} 53$search_agenda_label = GETPOST('search_agenda_label'); 54 55$limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; 56$sortfield = GETPOST("sortfield", 'alpha'); 57$sortorder = GETPOST("sortorder", 'alpha'); 58$page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); 59if (empty($page) || $page == -1) { 60 $page = 0; 61} // If $page is not defined, or '' or -1 62$offset = $limit * $page; 63$pageprev = $page - 1; 64$pagenext = $page + 1; 65if (!$sortfield) { 66 $sortfield = 'a.datep,a.id'; 67} 68if (!$sortorder) { 69 $sortorder = 'DESC,DESC'; 70} 71 72// Initialize technical objects 73$object = new KnowledgeRecord($db); 74$extrafields = new ExtraFields($db); 75$diroutputmassaction = $conf->knowledgemanagement->dir_output.'/temp/massgeneration/'.$user->id; 76$hookmanager->initHooks(array('knowledgerecordagenda', 'globalcard')); // Note that conf->hooks_modules contains array 77// Fetch optionals attributes and labels 78$extrafields->fetch_name_optionals_label($object->table_element); 79 80// Load object 81include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not include_once // Must be include, not include_once. Include fetch and fetch_thirdparty but not fetch_optionals 82if ($id > 0 || !empty($ref)) { 83 $upload_dir = $conf->knowledgemanagement->multidir_output[$object->entity]."/".$object->id; 84} 85 86// Security check - Protection if external user 87//if ($user->socid > 0) accessforbidden(); 88//if ($user->socid > 0) $socid = $user->socid; 89//$result = restrictedArea($user, 'knowledgemanagement', $object->id); 90 91$permissiontoadd = $user->rights->knowledgemanagement->knowledgerecord->write; // Used by the include of actions_addupdatedelete.inc.php 92 93 94/* 95 * Actions 96 */ 97 98$parameters = array('id'=>$id); 99$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks 100if ($reshook < 0) { 101 setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); 102} 103 104if (empty($reshook)) { 105 // Cancel 106 if (GETPOST('cancel', 'alpha') && !empty($backtopage)) { 107 header("Location: ".$backtopage); 108 exit; 109 } 110 111 // Purge search criteria 112 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 113 $actioncode = ''; 114 $search_agenda_label = ''; 115 } 116} 117 118 119 120/* 121 * View 122 */ 123 124$form = new Form($db); 125 126if ($object->id > 0) { 127 $title = $langs->trans("Agenda"); 128 //if (! empty($conf->global->MAIN_HTML_TITLE) && preg_match('/thirdpartynameonly/',$conf->global->MAIN_HTML_TITLE) && $object->name) $title=$object->name." - ".$title; 129 $help_url = ''; 130 llxHeader('', $title, $help_url); 131 132 if (!empty($conf->notification->enabled)) { 133 $langs->load("mails"); 134 } 135 $head = knowledgerecordPrepareHead($object); 136 137 138 print dol_get_fiche_head($head, 'agenda', $langs->trans("KnowledgeRecord"), -1, $object->picto); 139 140 // Object card 141 // ------------------------------------------------------------ 142 $linkback = '<a href="'.dol_buildpath('/knowledgemanagement/knowledgerecord_list.php', 1).'?restore_lastsearch_values=1'.(!empty($socid) ? '&socid='.$socid : '').'">'.$langs->trans("BackToList").'</a>'; 143 144 $morehtmlref = '<div class="refidno">'; 145 /* 146 // Ref customer 147 $morehtmlref.=$form->editfieldkey("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', 0, 1); 148 $morehtmlref.=$form->editfieldval("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', null, null, '', 1); 149 // Thirdparty 150 $morehtmlref.='<br>'.$langs->trans('ThirdParty') . ' : ' . (is_object($object->thirdparty) ? $object->thirdparty->getNomUrl(1) : ''); 151 // Project 152 if (! empty($conf->projet->enabled)) { 153 $langs->load("projects"); 154 $morehtmlref.='<br>'.$langs->trans('Project') . ' '; 155 if ($permissiontoadd) { 156 if ($action != 'classify') { 157 //$morehtmlref.='<a class="editfielda" href="' . $_SERVER['PHP_SELF'] . '?action=classify&id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetProject')) . '</a> : '; 158 } 159 $morehtmlref.=' : '; 160 if ($action == 'classify') { 161 //$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1); 162 $morehtmlref.='<form method="post" action="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'">'; 163 $morehtmlref.='<input type="hidden" name="action" value="classin">'; 164 $morehtmlref.='<input type="hidden" name="token" value="'.newToken().'">'; 165 $morehtmlref.=$formproject->select_projects($object->socid, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1); 166 $morehtmlref.='<input type="submit" class="button valignmiddle" value="'.$langs->trans("Modify").'">'; 167 $morehtmlref.='</form>'; 168 } else { 169 $morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1); 170 } 171 } else { 172 if (! empty($object->fk_project)) { 173 $proj = new Project($db); 174 $proj->fetch($object->fk_project); 175 $morehtmlref .= ': '.$proj->getNomUrl(); 176 } else { 177 $morehtmlref .= ''; 178 } 179 } 180 }*/ 181 $morehtmlref .= '</div>'; 182 183 184 dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref); 185 186 print '<div class="fichecenter">'; 187 print '<div class="underbanner clearboth"></div>'; 188 189 $object->info($object->id); 190 dol_print_object_info($object, 1); 191 192 print '</div>'; 193 194 print dol_get_fiche_end(); 195 196 197 198 // Actions buttons 199 200 $objthirdparty = $object; 201 $objcon = new stdClass(); 202 203 $out = '&origin='.urlencode($object->element.'@'.$object->module).'&originid='.urlencode($object->id); 204 $urlbacktopage = $_SERVER['PHP_SELF'].'?id='.$object->id; 205 $out .= '&backtopage='.urlencode($urlbacktopage); 206 $permok = $user->rights->agenda->myactions->create; 207 if ((!empty($objthirdparty->id) || !empty($objcon->id)) && $permok) { 208 //$out.='<a href="'.DOL_URL_ROOT.'/comm/action/card.php?action=create'; 209 if (get_class($objthirdparty) == 'Societe') { 210 $out .= '&socid='.urlencode($objthirdparty->id); 211 } 212 $out .= (!empty($objcon->id) ? '&contactid='.urlencode($objcon->id) : '').'&percentage=-1'; 213 //$out.=$langs->trans("AddAnAction").' '; 214 //$out.=img_picto($langs->trans("AddAnAction"),'filenew'); 215 //$out.="</a>"; 216 } 217 218 219 print '<div class="tabsAction">'; 220 221 if (!empty($conf->agenda->enabled)) { 222 if (!empty($user->rights->agenda->myactions->create) || !empty($user->rights->agenda->allactions->create)) { 223 print '<a class="butAction" href="'.DOL_URL_ROOT.'/comm/action/card.php?action=create'.$out.'">'.$langs->trans("AddAction").'</a>'; 224 } else { 225 print '<a class="butActionRefused classfortooltip" href="#">'.$langs->trans("AddAction").'</a>'; 226 } 227 } 228 229 print '</div>'; 230 231 if (!empty($conf->agenda->enabled) && (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read))) { 232 $param = '&id='.$object->id.'&socid='.$socid; 233 if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) { 234 $param .= '&contextpage='.urlencode($contextpage); 235 } 236 if ($limit > 0 && $limit != $conf->liste_limit) { 237 $param .= '&limit='.urlencode($limit); 238 } 239 240 241 //print load_fiche_titre($langs->trans("ActionsOnKnowledgeRecord"), '', ''); 242 243 // List of all actions 244 $filters = array(); 245 $filters['search_agenda_label'] = $search_agenda_label; 246 247 // TODO Replace this with same code than into list.php 248 show_actions_done($conf, $langs, $db, $object, null, 0, $actioncode, '', $filters, $sortfield, $sortorder, $object->module); 249 } 250} 251 252// End of page 253llxFooter(); 254$db->close(); 255