From a791deb65658efd45d9fcf76831a42ee5b9c16ac Mon Sep 17 00:00:00 2001 From: "Michael Kaufmann (d00p)" Date: Sat, 30 Jan 2010 15:30:47 +0000 Subject: [PATCH] move customer-tickets to archive if customer gets deleted --- admin_customers.php | 19 +++++++++++++++++++ admin_tickets.php | 14 ++++++++++++-- lib/classes/ticket/class.ticket.php | 26 ++++++++++++++++++++++++++ lng/english.lng.php | 1 + lng/german.lng.php | 1 + 5 files changed, 59 insertions(+), 2 deletions(-) diff --git a/admin_customers.php b/admin_customers.php index 10c7a7bb..0b23ecc5 100644 --- a/admin_customers.php +++ b/admin_customers.php @@ -237,6 +237,25 @@ if($page == 'customers' inserttask('6', $result['loginname']); } + /* + * move old tickets to archive + */ + $tickets = ticket::customerHasTickets($db, $id); + if($tickets !== false && isset($tickets[0])) + { + foreach($tickets as $ticket) + { + $now = time(); + $mainticket = ticket::getInstanceOf($userinfo, $db, $settings, (int)$ticket); + $mainticket->Set('lastchange', $now, true, true); + $mainticket->Set('lastreplier', '1', true, true); + $mainticket->Set('status', '3', true, true); + $mainticket->Update(); + $mainticket->Archive(); + $log->logAction(ADM_ACTION, LOG_NOTICE, "archived ticket '" . $mainticket->Get('subject') . "'"); + } + } + redirectTo($filename, Array('page' => $page, 's' => $s)); } else diff --git a/admin_tickets.php b/admin_tickets.php index 1108b4c5..01782756 100644 --- a/admin_tickets.php +++ b/admin_tickets.php @@ -99,7 +99,12 @@ if($page == 'tickets' $cid = $row['customerid']; $usr = $db->query_first('SELECT `firstname`, `name`, `loginname` FROM `' . TABLE_PANEL_CUSTOMERS . '` WHERE `customerid` = "' . (int)$cid . '"'); - $customer = $usr['firstname'] . " " . $usr['name'] . " (" . $usr['loginname'] . ")"; + + if(isset($usr['loginname'])) { + $customer = $usr['firstname'] . " " . $usr['name'] . " (" . $usr['loginname'] . ")"; + } else { + $customer = $lng['ticket']['nonexistingcustomer']; + } eval("\$tickets.=\"" . getTemplate("ticket/tickets_customer") . "\";"); } @@ -626,7 +631,12 @@ elseif($page == 'archive' $cid = $ticket['customerid']; $usr = $db->query_first('SELECT `firstname`, `name`, `loginname` FROM `' . TABLE_PANEL_CUSTOMERS . '` WHERE `customerid` = "' . (int)$cid . '"'); - $customer = $usr['firstname'] . " " . $usr['name'] . " (" . $usr['loginname'] . ")"; + + if(isset($usr['loginname'])) { + $customer = $usr['firstname'] . " " . $usr['name'] . " (" . $usr['loginname'] . ")"; + } else { + $customer = $lng['ticket']['nonexistingcustomer']; + } eval("\$tickets.=\"" . getTemplate("ticket/tickets_customer") . "\";"); } diff --git a/lib/classes/ticket/class.ticket.php b/lib/classes/ticket/class.ticket.php index 3a177c7d..37a752c5 100644 --- a/lib/classes/ticket/class.ticket.php +++ b/lib/classes/ticket/class.ticket.php @@ -625,6 +625,32 @@ class ticket return $str; } + /* + * function customerHasTickets + * + * @param object mysql-db-object + * @param int customer-id + * + * @return array/bool array of ticket-ids if customer has any, else false + */ + static public function customerHasTickets($_db = null, $_cid = 0) + { + if($_cid != 0) + { + $result = $_db->query('SELECT `id` FROM `' . TABLE_PANEL_TICKETS . '` WHERE `customer` ="'.(int)$_cid.'"'); + + $tickets = array(); + while($row = $_db->fetch_array($result)) + { + $tickets[] = $row['id']; + } + + return $tickets; + } + + return false; + } + /** * Get a data-var */ diff --git a/lng/english.lng.php b/lng/english.lng.php index 39e7dfe1..46a73628 100644 --- a/lng/english.lng.php +++ b/lng/english.lng.php @@ -1287,5 +1287,6 @@ $lng['tasks']['rebuild_bindconfig'] = 'Rebuilding bind-configuration'; $lng['tasks']['creating_ftpdir'] = 'Creating directory for new ftp-user'; $lng['tasks']['deleting_customerfiles'] = 'Deleting customer-files %loginname%'; $lng['tasks']['noneoutstanding'] = 'There are currently no outstanding tasks for Froxlor'; +$lng['ticket']['nonexistingcustomer'] = '(deleted customer)'; ?> diff --git a/lng/german.lng.php b/lng/german.lng.php index 84bfdb59..1fa1ef3d 100644 --- a/lng/german.lng.php +++ b/lng/german.lng.php @@ -1267,5 +1267,6 @@ $lng['tasks']['rebuild_bindconfig'] = 'Neuerstellung der Bind-Konfiguration'; $lng['tasks']['creating_ftpdir'] = 'Erstelle Verzeichnis für neuen FTP-Benutzer'; $lng['tasks']['deleting_customerfiles'] = 'Löschen von Kunden-Dateien %loginname%'; $lng['tasks']['noneoutstanding'] = 'Zur Zeit gibt es keine ausstehenden Aufgaben für Froxlor'; +$lng['ticket']['nonexistingcustomer'] = '(gelöschter Kunde)'; ?>