27 require_once DOL_DOCUMENT_ROOT.
"/core/modules/DolibarrModules.class.php";
49 $this->numero = 56000;
51 $this->rights_class =
'ticket';
55 $this->family =
"crm";
57 $this->module_position =
'60';
61 $this->
name = preg_replace(
'/^mod/i',
'', get_class($this));
65 $this->
description =
"Incident/support ticket management";
67 $this->version =
'dolibarr';
70 $this->const_name =
'MAIN_MODULE_'.strtoupper($this->
name);
76 $this->picto =
'ticket';
81 $this->module_parts = array(
88 $this->dirs = array();
92 $this->config_page_url = array(
"ticket.php");
95 $this->hidden =
false;
96 $this->depends = array(
'modAgenda');
97 $this->requiredby = array();
98 $this->conflictwith = array();
99 $this->phpmin = array(5, 4);
100 $this->langfiles = array(
"ticket");
106 $this->
const = array(
107 1 => array(
'TICKET_ENABLE_PUBLIC_INTERFACE',
'chaine',
'0',
'Enable ticket public interface', 0),
108 2 => array(
'TICKET_ADDON',
'chaine',
'mod_ticket_simple',
'Ticket ref module', 0),
109 3 => array(
'TICKET_ADDON_PDF_ODT_PATH',
'chaine',
'DOL_DATA_ROOT/doctemplates/tickets',
'Ticket templates ODT/ODS directory for templates', 0)
114 'thirdparty:+ticket:Tickets:@ticket:$user->rights->ticket->read:/ticket/list.php?socid=__ID__',
115 'project:+ticket:Tickets:@ticket:$user->rights->ticket->read:/ticket/list.php?projectid=__ID__',
119 if (!isset($conf->ticket->enabled)) {
120 $conf->ticket =
new stdClass();
121 $conf->ticket->enabled = 0;
123 $this->dictionaries = array(
125 'tabname' => array(MAIN_DB_PREFIX.
"c_ticket_type", MAIN_DB_PREFIX.
"c_ticket_severity", MAIN_DB_PREFIX.
"c_ticket_category", MAIN_DB_PREFIX.
"c_ticket_resolution"),
126 'tablib' => array(
"TicketDictType",
"TicketDictSeverity",
"TicketDictCategory",
"TicketDictResolution"),
128 'SELECT f.rowid as rowid, f.code, f.pos, f.label, f.active, f.use_default FROM '.MAIN_DB_PREFIX.
'c_ticket_type as f',
129 'SELECT f.rowid as rowid, f.code, f.pos, f.label, f.active, f.use_default FROM '.MAIN_DB_PREFIX.
'c_ticket_severity as f',
130 'SELECT f.rowid as rowid, f.code, f.pos, f.label, f.active, f.use_default FROM '.MAIN_DB_PREFIX.
'c_ticket_category as f',
131 'SELECT f.rowid as rowid, f.code, f.pos, f.label, f.active, f.use_default FROM '.MAIN_DB_PREFIX.
'c_ticket_resolution as f'
133 'tabsqlsort' => array(
"pos ASC",
"pos ASC",
"pos ASC",
"pos ASC"),
134 'tabfield' => array(
"code,label,pos,use_default",
"code,label,pos,use_default",
"code,label,pos,use_default",
"code,label,pos,use_default"),
135 'tabfieldvalue' => array(
"code,label,pos,use_default",
"code,label,pos,use_default",
"code,label,pos,use_default",
"code,label,pos,use_default"),
136 'tabfieldinsert' => array(
"code,label,pos,use_default",
"code,label,pos,use_default",
"code,label,pos,use_default",
"code,label,pos,use_default"),
137 'tabrowid' => array(
"rowid",
"rowid",
"rowid",
"rowid"),
138 'tabcond' => array($conf->ticket->enabled, $conf->ticket->enabled, $conf->ticket->enabled, $conf->ticket->enabled),
139 'tabhelp' => array(array(
'code'=>$langs->trans(
"EnterAnyCode"),
'use_default'=>$langs->trans(
"Enter0or1")), array(
'code'=>$langs->trans(
"EnterAnyCode"),
'use_default'=>$langs->trans(
"Enter0or1")), array(
'code'=>$langs->trans(
"EnterAnyCode"),
'use_default'=>$langs->trans(
"Enter0or1")), array(
'code'=>$langs->trans(
"EnterAnyCode"),
'use_default'=>$langs->trans(
"Enter0or1"))),
144 $this->boxes = array(
145 0=>array(
'file'=>
'box_last_ticket.php',
'enabledbydefaulton'=>
'Home'),
146 1=>array(
'file'=>
'box_last_modified_ticket.php',
'enabledbydefaulton'=>
'Home')
150 $this->rights = array();
153 $this->rights[$r][0] = 56001;
154 $this->rights[$r][1] =
"Read ticket";
155 $this->rights[$r][2] =
'r';
156 $this->rights[$r][3] = 0;
157 $this->rights[$r][4] =
'read';
160 $this->rights[$r][0] = 56002;
161 $this->rights[$r][1] =
"Create les tickets";
162 $this->rights[$r][2] =
'w';
163 $this->rights[$r][3] = 0;
164 $this->rights[$r][4] =
'write';
167 $this->rights[$r][0] = 56003;
168 $this->rights[$r][1] =
"Delete les tickets";
169 $this->rights[$r][2] =
'd';
170 $this->rights[$r][3] = 0;
171 $this->rights[$r][4] =
'delete';
174 $this->rights[$r][0] = 56004;
175 $this->rights[$r][1] =
"Manage tickets";
177 $this->rights[$r][3] = 0;
178 $this->rights[$r][4] =
'manage';
191 $this->menus = array();
194 $this->menu[$r] = array(
'fk_menu' => 0,
197 'mainmenu' =>
'ticket',
199 'url' =>
'/ticket/index.php',
202 'enabled' =>
'$conf->ticket->enabled',
203 'perms' =>
'$user->rights->ticket->read',
208 $this->menu[$r] = array(
'fk_menu' =>
'fk_mainmenu=ticket',
211 'mainmenu' =>
'ticket',
212 'leftmenu' =>
'ticket',
213 'url' =>
'/ticket/index.php',
216 'enabled' =>
'$conf->ticket->enabled',
217 'perms' =>
'$user->rights->ticket->read',
222 $this->menu[$r] = array(
'fk_menu' =>
'fk_mainmenu=ticket,fk_leftmenu=ticket',
224 'titre' =>
'NewTicket',
225 'mainmenu' =>
'ticket',
226 'url' =>
'/ticket/card.php?action=create',
229 'enabled' =>
'$conf->ticket->enabled',
230 'perms' =>
'$user->rights->ticket->write',
235 $this->menu[$r] = array(
'fk_menu' =>
'fk_mainmenu=ticket,fk_leftmenu=ticket',
238 'mainmenu' =>
'ticket',
239 'leftmenu' =>
'ticketlist',
240 'url' =>
'/ticket/list.php?search_fk_status=non_closed',
243 'enabled' =>
'$conf->ticket->enabled',
244 'perms' =>
'$user->rights->ticket->read',
249 $this->menu[$r] = array(
'fk_menu' =>
'fk_mainmenu=ticket,fk_leftmenu=ticket',
251 'titre' =>
'MenuTicketMyAssign',
252 'mainmenu' =>
'ticket',
253 'leftmenu' =>
'ticketmy',
254 'url' =>
'/ticket/list.php?mode=mine&search_fk_status=non_closed',
257 'enabled' =>
'$conf->ticket->enabled',
258 'perms' =>
'$user->rights->ticket->read',
263 $this->menu[$r] = array(
'fk_menu' =>
'fk_mainmenu=ticket,fk_leftmenu=ticket',
265 'titre' =>
'Statistics',
266 'mainmenu' =>
'ticket',
267 'url' =>
'/ticket/stats/index.php',
270 'enabled' =>
'$conf->ticket->enabled',
271 'perms' =>
'$user->rights->ticket->read',
285 public function init($options =
'')
287 global $conf, $langs;
290 $this->
remove($options);
293 $src = DOL_DOCUMENT_ROOT.
'/install/doctemplates/tickets/template_ticket.odt';
294 $dirodt = DOL_DATA_ROOT.
'/doctemplates/tickets';
295 $dest = $dirodt.
'/template_order.odt';
297 if (file_exists($src) && !file_exists($dest))
299 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
301 $result =
dol_copy($src, $dest, 0, 0);
304 $langs->load(
"errors");
305 $this->error = $langs->trans(
'ErrorFailToCopyFile', $src, $dest);
311 array(
"sql" =>
"insert into llx_c_type_contact(rowid, element, source, code, libelle, active ) values (110120, 'ticket', 'internal', 'SUPPORTTEC', 'Utilisateur assigné au ticket', 1);",
"ignoreerror" => 1),
312 array(
"sql" =>
"insert into llx_c_type_contact(rowid, element, source, code, libelle, active ) values (110121, 'ticket', 'internal', 'CONTRIBUTOR', 'Intervenant', 1);",
"ignoreerror" => 1),
313 array(
"sql" =>
"insert into llx_c_type_contact(rowid, element, source, code, libelle, active ) values (110122, 'ticket', 'external', 'SUPPORTCLI', 'Contact client suivi incident', 1);",
"ignoreerror" => 1),
314 array(
"sql" =>
"insert into llx_c_type_contact(rowid, element, source, code, libelle, active ) values (110123, 'ticket', 'external', 'CONTRIBUTOR', 'Intervenant', 1);",
"ignoreerror" => 1),
315 "DELETE FROM ".MAIN_DB_PREFIX.
"document_model WHERE nom = 'TICKET_ADDON_PDF_ODT_PATH' AND type = 'ticket' AND entity = ".$conf->entity,
316 "INSERT INTO ".MAIN_DB_PREFIX.
"document_model (nom, type, entity) VALUES('TICKET_ADDON_PDF_ODT_PATH','ticket',".$conf->entity.
")"
319 return $this->
_init($sql, $options);
Description and activation class for module Ticket.
dol_copy($srcfile, $destfile, $newmask=0, $overwriteifexists=1)
Copy a file to another file.
</td > param sortfield sortorder printFieldListOption< tdclass="liste_titremaxwidthsearchright"></td ></tr >< trclass="liste_titre">< inputtype="checkbox"onClick="toggle(this)"/> Ref p ref Label p label Duration p duration center DesiredStock p desiredstock right StockLimitShort p seuil_stock_alerte right stock_physique right stock_real_warehouse right Ordered right StockToBuy right SupplierRef right param sortfield sortorder printFieldListTitle warehouseinternal SELECT description FROM product_lang WHERE qty< br > qty qty qty StockTooLow StockTooLow help help help< trclass="oddeven">< td >< inputtype="checkbox"class="check"name="choose'.$i.'"></td >< tdclass="nowrap"> stock</td >< td >< inputtype="hidden"name="desc'.$i.'"value="'.dol_escape_htmltag($objp-> description
Only used if Module[ID]Desc translation string is not found.
$conf db name
Only used if Module[ID]Name translation string is not found.
$conf db
API class for accounts.
__construct($db)
Constructor.
_init($array_sql, $options= '')
Enables a module.
init($options= '')
Function called when module is enabled.
dol_mkdir($dir, $dataroot= '', $newmask=null)
Creation of a directory (this can create recursive subdir)