Skip to content

Commit

Permalink
Merge pull request #220 from interduo/interduo
Browse files Browse the repository at this point in the history
Helpdesk+Event module integration.
  • Loading branch information
chilek committed Mar 13, 2017
2 parents a997450 + 69687c4 commit ded7c28
Show file tree
Hide file tree
Showing 30 changed files with 467 additions and 68 deletions.
6 changes: 4 additions & 2 deletions doc/lms.mysql
Original file line number Diff line number Diff line change
Expand Up @@ -2081,10 +2081,12 @@ CREATE TABLE events (
moduserid int(11) NOT NULL DEFAULT '0',
type smallint NOT NULL DEFAULT 1,
nodeid int(11) DEFAULT NULL,
ticketid int(11)
PRIMARY KEY (id),
INDEX date (date),
KEY nodeid (nodeid),
FOREIGN KEY (nodeid) REFERENCES nodes (id) ON DELETE SET NULL ON UPDATE CASCADE
FOREIGN KEY (nodeid) REFERENCES nodes (id) ON DELETE SET NULL ON UPDATE CASCADE,
CONSTRAINT 'event_ticketid_ritickets_id_fk' FOREIGN KEY (ticketid) REFERENCES rttickets(id) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB;

# --------------------------------------------------------
Expand Down Expand Up @@ -2864,4 +2866,4 @@ INSERT INTO netdevicemodels (name, alternative_name, netdeviceproducerid) VALUES
('XR7', 'XR7 MINI PCI PCBA', 2),
('XR9', 'MINI PCI 600MW 900MHZ', 2);

INSERT INTO dbinfo (keytype, keyvalue) VALUES ('dbversion', '2017030800');
INSERT INTO dbinfo (keytype, keyvalue) VALUES ('dbversion', '2017031000');
4 changes: 3 additions & 1 deletion doc/lms.pgsql
Original file line number Diff line number Diff line change
Expand Up @@ -1735,6 +1735,8 @@ CREATE TABLE events (
type smallint DEFAULT 1 NOT NULL,
nodeid integer DEFAULT NULL
REFERENCES nodes (id) ON DELETE SET NULL ON UPDATE CASCADE,
ticketid integer DEFAULT NULL,
CONSTRAINT event_ticketid_ritickets_id_fk REFERENCES rttickets (id) ON DELETE SET NULL ON UPDATE CASCADE,
PRIMARY KEY (id)
);
CREATE INDEX events_date_idx ON events(date);
Expand Down Expand Up @@ -2932,6 +2934,6 @@ INSERT INTO netdevicemodels (name, alternative_name, netdeviceproducerid) VALUES
('XR7', 'XR7 MINI PCI PCBA', 2),
('XR9', 'MINI PCI 600MW 900MHZ', 2);

INSERT INTO dbinfo (keytype, keyvalue) VALUES ('dbversion', '2017030800');
INSERT INTO dbinfo (keytype, keyvalue) VALUES ('dbversion', '2017031000');

COMMIT;
Binary file added img/event-add.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added img/event-close.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added img/helpdesk.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added img/schedule.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
17 changes: 17 additions & 0 deletions lib/LMS.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -1348,6 +1348,12 @@ public function GetQueueIdByName($queue)
return $manager->GetQueueIdByName($id);
}

public function GetQueueNameByTicketId($id)
{
$manager = $this->getHelpdeskManager();
return $manager->GetQueueNameByTicketId($id);
}

public function GetQueueName($id)
{
$manager = $this->getHelpdeskManager();
Expand Down Expand Up @@ -2136,6 +2142,17 @@ public function EventSearch($search, $order = 'date,asc', $simple = false)
return $manager->EventSearch($search, $order, $simple);
}

public function GetCustomerIdByTicketId($id)
{
$manager = $this->getEventManager();
return $manager->GetCustomerIdByTicketId($id);
}

public function GetEventsByTicketId($id)
{
$manager = $this->getHelpdeskManager();
return $manager->GetEventsByTicketId($id);
}
public function GetNumberPlans($properties)
{
$manager = $this->getDocumentManager();
Expand Down
2 changes: 1 addition & 1 deletion lib/LMSDB_common.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
* $Id$
*/

define('DBVERSION', '2017030800'); // here should be always the newest version of database!
define('DBVERSION', '2017031000'); // here should be always the newest version of database!
// it placed here to avoid read disk every time when we call this file.

/**
Expand Down
5 changes: 5 additions & 0 deletions lib/LMSManagers/LMSEventManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -125,4 +125,9 @@ public function EventSearch($search, $order = 'date,asc', $simple = false)
return $list2;
}
}

public function GetCustomerIdByTicketId($id)
{
return $this->db->GetOne('SELECT customerid FROM rttickets WHERE id=?', array($id));
}
}
2 changes: 2 additions & 0 deletions lib/LMSManagers/LMSEventManagerInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,6 @@
interface LMSEventManagerInterface
{
public function EventSearch($search, $order = 'date,asc', $simple = false);

public function GetCustomerIdByTicketId($id);
}
21 changes: 21 additions & 0 deletions lib/LMSManagers/LMSHelpdeskManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ public function GetQueueContents($ids, $order = 'createtime,desc', $state = NULL
. ($owner ? ' AND t.owner = ' . intval($owner) : '')
. ($sqlord != '' ? $sqlord . ' ' . $direction : ''))) {
foreach ($result as $idx => $ticket) {
$ticket['eventcount'] = $this->db->GetOne('SELECT COUNT(id) FROM events WHERE ticketid = ?', array($ticket['id']));
//$ticket['requestoremail'] = preg_replace('/^.*<(.*@.*)>$/', '\1',$ticket['requestor']);
//$ticket['requestor'] = str_replace(' <'.$ticket['requestoremail'].'>','',$ticket['requestor']);
if (!$ticket['customerid'])
Expand Down Expand Up @@ -178,6 +179,26 @@ public function GetQueueIdByName($queue)
return $this->db->GetOne('SELECT id FROM rtqueues WHERE name=?', array($queue));
}

public function GetQueueNameByTicketId($id)
{
return $this->db->GetOne('SELECT name FROM rtqueues '
. 'WHERE id=(SELECT queueid FROM rttickets WHERE id=?)', array($id));
}

public function GetEventsByTicketId($id)
{
return $this->db->GetAll('SELECT events.id as id, title, description, note, date, begintime, endtime, '
. 'userid, userid AS uad, customerid, private, closed, closeduserid, events.type, '
. ''.$this->db->Concat('customers.name',"' '",'customers.lastname').' AS customername, '
. ''.$this->db->Concat('users.firstname',"' '",'users.lastname').' AS username, '
. ''.$this->db->Concat('u.firstname',"' '",'u.lastname').' AS closedusername '
. 'FROM events '
. 'LEFT JOIN customers ON (customerid = customers.id) '
. 'LEFT JOIN users ON (userid = users.id) '
. 'LEFT JOIN users u ON (closeduserid = u.id) '
. 'WHERE ticketid = ? ORDER BY events.id ASC', array($id));
}

public function GetQueueName($id)
{
return $this->db->GetOne('SELECT name FROM rtqueues WHERE id=?', array($id));
Expand Down
4 changes: 4 additions & 0 deletions lib/LMSManagers/LMSHelpdeskManagerInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,10 @@ public function RTStats();

public function GetQueueByTicketId($id);

public function GetEventsByTicketId($id);

public function GetQueueNameByTicketId($id);

public function TicketExists($id);

public function TicketAdd($ticket, $files = NULL);
Expand Down
11 changes: 11 additions & 0 deletions lib/locale/pl/strings.php
Original file line number Diff line number Diff line change
Expand Up @@ -3612,4 +3612,15 @@

$_LANG['SMS from $a'] = 'SMS od $a';

$_LANG['Add new request to Helpdesk'] = 'Dodaj nowe zgłoszenie do Helpdesk';
$_LANG['Request Number'] = 'Nr zgłoszenia';
$_LANG['Timetable assigned events'] = 'Przypisane zdarzenia w terminarzu';
$_LANG['Add new event to request:'] = 'Dodaj nowe zdarzenie do zgłoszenia:';
$_LANG['Close all events assigned to request:'] = 'Zamknij wszystkie zdarzenia przypisane do zgłoszenia:';
$_LANG['Assign this event to Helpdesk request'] = 'Przypisz zdarzenie do zgłoszenia w Helpdesk:';
$_LANG['Request not assigned to any event.'] = 'Zgłoszenie nie przypisane do żadnego zdarzenia.';
$_LANG['Helpdesk assignment:'] = 'Przypisanie do Helpdesk:';
$_LANG['This event is not assigned to any helpdesk request.'] = 'Zdarzenie nie jest przypisane do żadnego zgłoszenia w helpdesk.';
$_LANG['Request not assigned to any customer.'] = 'Zgłoszenie nie jest przypisane do żadnego klienta.';
$_LANG['Request not assigned to any customer location.'] = 'Zgłoszenie nie jest przypisane do żadnej lokalizacji klienta.';
?>
32 changes: 32 additions & 0 deletions lib/upgradedb/mysql.2017031000.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<?php

/*
* LMS version 1.11-git
*
* (C) Copyright 2001-2016 LMS Developers
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License Version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*
*/

$this->BeginTrans();

$this->Execute("ALTER TABLE events ADD COLUMN ticketid int(11)");
$this->Execute("ALTER TABLE events ADD CONSTRAINT 'event_ticketid_ritickets_id_fk' FOREIGN KEY (ticketid) REFERENCES ticketid (id) ON DELETE SET NULL ON UPDATE CASCADE");
$this->Execute("UPDATE dbinfo SET keyvalue = ? WHERE keytype = ?", array('2017031000', 'dbversion'));

$this->CommitTrans();

?>
32 changes: 32 additions & 0 deletions lib/upgradedb/postgres.2017031000.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<?php

/*
* LMS version 1.11-git
*
* (C) Copyright 2001-2016 LMS Developers
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License Version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*
*/

$this->BeginTrans();

$this->Execute("ALTER TABLE events ADD COLUMN ticketid integer");
$this->Execute("ALTER TABLE events ADD CONSTRAINT event_ticketid_ritickets_id_fk REFERENCES rttickets (id) ON DELETE SET NULL ON UPDATE CASCADE");
$this->Execute("UPDATE dbinfo SET keyvalue = ? WHERE keytype = ?", array('2017031000', 'dbversion'));

$this->CommitTrans();

?>
39 changes: 35 additions & 4 deletions modules/eventadd.php
Original file line number Diff line number Diff line change
Expand Up @@ -54,10 +54,19 @@ function getUsersForGroup($groupid) {
$LMS->RegisterXajaxFunction(array('select_customer', 'getUsersForGroup'));
$SMARTY->assign('xajax', $LMS->RunXajax());

if(empty($event['ticketid']) && !empty($_GET['ticketid']))
{
$eventticketid = intval($_GET['ticketid']);
$tqname = $LMS->GetQueueNameByTicketId($eventticketid);
}

if(isset($_POST['event']))
{
$event = $_POST['event'];

if(count($event['categories'])==0)
$error['categories'] = trans('You have to select category!');

if (!isset($event['usergroup']))
$event['usergroup'] = 0;
$SESSION->save('eventgid', $event['usergroup']);
Expand Down Expand Up @@ -98,13 +107,26 @@ function getUsersForGroup($groupid) {
$event['custid'] = $event['customerid'];
if ($event['custid'] == '')
$event['custid'] = 0;

$event['nodeid'] = (isset($event['customer_location'])||is_null($event['nodeid'])) ? NULL : $event['nodeid'];

if(!empty($event['helpdesk']))
{
$ticket['queue'] = $event['rtqueue'];
$ticket['customerid'] = $event['customerid'];
$ticket['requestor'] = $event['name']." ".$event['surname'];
$ticket['subject'] = $event['title'];
$ticket['mailfrom'] = $event['email'];
$ticket['categories'] = $event['categories'];
$ticket['owner'] = '0';
$event['ticketid'] = $LMS->TicketAdd($ticket);
}

$DB->BeginTrans();

$DB->Execute('INSERT INTO events (title, description, date, begintime, enddate, endtime,
userid, creationdate, private, customerid, type, nodeid)
VALUES (?, ?, ?, ?, ?, ?, ?, ?NOW?, ?, ?, ?, ?)',
$DB->Execute('INSERT INTO events (title, description, date, begintime, enddate,
endtime, userid, creationdate, private, customerid, type, nodeid, ticketid)
VALUES (?, ?, ?, ?, ?, ?, ?, ?NOW?, ?, ?, ?, ?, ?)',
array($event['title'],
$event['description'],
$date,
Expand All @@ -115,7 +137,8 @@ function getUsersForGroup($groupid) {
$event['status'],
intval($event['custid']),
$event['type'],
$event['nodeid']
$id,
$event['ticketid']
));

if (!empty($event['userlist'])) {
Expand All @@ -134,6 +157,7 @@ function getUsersForGroup($groupid) {

unset($event['title']);
unset($event['description']);
unset($event['categories']);
}
}

Expand Down Expand Up @@ -161,8 +185,13 @@ function getUsersForGroup($groupid) {
if (!ConfigHelper::checkConfig('phpui.big_networks'))
$SMARTY->assign('customerlist', $LMS->GetCustomerNames());

$categories = $LMS->GetCategoryListByUser($AUTH->id);
$SMARTY->assign('max_userlist_size', ConfigHelper::getConfig('phpui.event_max_userlist_size'));
$SMARTY->assign('userlist', $userlist);
$SMARTY->assign('customerid',$event[customerid]);
$SMARTY->assign('customername',$event[customername]);
$SMARTY->assign('tqname',$tqname);
$SMARTY->assign('eventticketid', $eventticketid);
$SMARTY->assign('usergroups', $usergroups);
$SMARTY->assign('error', $error);
$SMARTY->assign('event', $event);
Expand All @@ -172,6 +201,8 @@ function getUsersForGroup($groupid) {
1200,1230,1300,1330,1400,1430,1500,1530,1600,1630,1700,1730,
1800,1830,1900,1930,2000,2030,2100,2130,2200,2230,2300,2330
));
$SMARTY->assign('queuelist', $LMS->GetQueueNames());
$SMARTY->assign('categories', $categories);
$SMARTY->display('event/eventadd.html');

?>
5 changes: 5 additions & 0 deletions modules/eventedit.php
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,11 @@ function getUsersForGroup($groupid) {
$DB->Execute('UPDATE events SET closed = 0, closeduserid = 0, closeddate = 0 WHERE id = ?',array($_GET['id']));
$SESSION->redirect('?'.$SESSION->get('backto'));
}
elseif(isset($_GET['action']) && $_GET['action'] == 'close' && isset($_GET['ticketid']) )
{
$DB->Execute('UPDATE events SET closed = 1, closeduserid = ?, closeddate = ?NOW? WHERE ticketid = ?',array($AUTH->id, $_GET['ticketid']));
$SESSION->redirect('?'.$SESSION->get('backto'));
}
elseif(isset($_GET['action']) && $_GET['action'] == 'close')
{
$DB->Execute('UPDATE events SET closed = 1, closeduserid = ?, closeddate = ?NOW? WHERE id = ?',array($AUTH->id, $_GET['id']));
Expand Down
3 changes: 2 additions & 1 deletion modules/eventinfo.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,8 @@
vusers.name AS username, events.moddate, events.moduserid, events.closeddate, events.closeduserid, nodes.location AS location, '
.$DB->Concat('c.city',"', '",'c.address').' AS customerlocation,
(SELECT name FROM vusers WHERE id=events.moduserid) AS modusername,
(SELECT name FROM vusers WHERE id=events.closeduserid) AS closedusername
(SELECT name FROM vusers WHERE id=events.closeduserid) AS closedusername,
ticketid
FROM events
LEFT JOIN vnodes nodes ON (nodeid = nodes.id)
LEFT JOIN customerview c ON (c.id = customerid)
Expand Down
3 changes: 2 additions & 1 deletion modules/eventlist.php
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,8 @@ function GetEventList($year=NULL, $month=NULL, $day=NULL, $forward=0, $customeri
$list = $DB->GetAll(
'SELECT events.id AS id, title, note, description, date, begintime, enddate, endtime, customerid, closed, events.type, '
.$DB->Concat('UPPER(c.lastname)',"' '",'c.name').' AS customername,
userid, vusers.name AS username, '.$DB->Concat('c.city',"', '",'c.address').' AS customerlocation, nodeid, vn.location AS location
userid, vusers.name AS username, '.$DB->Concat('c.city',"', '",'c.address').' AS customerlocation,
nodeid, vn.location AS location, ticketid
FROM events
LEFT JOIN vnodes as vn ON (nodeid = vn.id)
LEFT JOIN customerview c ON (customerid = c.id)
Expand Down
3 changes: 2 additions & 1 deletion modules/eventprint.php
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,8 @@ function GetEvents($date=NULL, $userid=0, $customerid=0, $privacy = 0, $closed =
.$DB->Concat('c.city',"', '",'c.address').' AS customerlocation,
nodes.location AS nodelocation,
(SELECT contact FROM customercontacts WHERE customerid = c.id
AND (customercontacts.type & ?) > 0 AND (customercontacts.type & ?) <> ? ORDER BY id LIMIT 1) AS customerphone
AND (customercontacts.type & ?) > 0 AND (customercontacts.type & ?) <> ? ORDER BY id LIMIT 1) AS customerphone,
ticketid
FROM events LEFT JOIN customerview c ON (customerid = c.id) LEFT JOIN vnodes nodes ON (nodeid = nodes.id)
WHERE ((date >= ? AND date < ?) OR (enddate <> 0 AND date < ? AND enddate >= ?)) AND ' . $privacy_condition
.($customerid ? 'AND customerid = '.intval($customerid) : '')
Expand Down
12 changes: 9 additions & 3 deletions modules/rtticketview.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,13 @@
{
$SESSION->redirect('?m=rtqueuelist');
}
else
{
$id = $_GET['id'];
}

$rights = $LMS->GetUserRightsRT($AUTH->id, 0, $_GET['id']);
$catrights = $LMS->GetUserRightsToCategory($AUTH->id, 0, $_GET['id']);
$rights = $LMS->GetUserRightsRT($AUTH->id, 0, $id);
$catrights = $LMS->GetUserRightsToCategory($AUTH->id, 0, $id);

if(!$rights || !$catrights)
{
Expand All @@ -39,7 +43,7 @@
die;
}

$ticket = $LMS->GetTicketContents($_GET['id']);
$ticket = $LMS->GetTicketContents($id);
$categories = $LMS->GetCategoryListByUser($AUTH->id);

if ($ticket['customerid'] && ConfigHelper::checkConfig('phpui.helpdesk_stats')) {
Expand Down Expand Up @@ -85,13 +89,15 @@
$ncategories[] = $category;
}
$categories = $ncategories;
$assignedevents = $LMS->GetEventsByTicketId($id);

$layout['pagetitle'] = trans('Ticket Review: $a',sprintf("%06d", $ticket['ticketid']));

$SESSION->save('backto', $_SERVER['QUERY_STRING']);

$SMARTY->assign('ticket', $ticket);
$SMARTY->assign('categories', $categories);
$SMARTY->assign('assignedevents', $assignedevents);
$SMARTY->display('rt/rtticketview.html');

?>
Loading

0 comments on commit ded7c28

Please sign in to comment.