function merge() { $source_id = FSS_Input::getInt('source_id'); $dest_id = FSS_Input::getInt('dest_id'); if ($source_id < 1) { return $this->cancel(); } if ($dest_id < 1) { return $this->cancel(); } $source = new SupportTicket(); if (!$source->load($source_id)) { return $this->cancel(); } $dest = new SupportTicket(); if (!$dest->load($dest_id)) { return $this->cancel(); } //print_p($source); // need to copy messages $db = JFactory::getDBO(); $sql = "SELECT * FROM #__fss_ticket_messages WHERE ticket_ticket_id = " . $db->escape($source_id); $db->setQuery($sql); $messages = $db->loadObjectList(); $msg_map = array(); foreach ($messages as $message) { $old_id = $message->id; unset($message->id); $message->ticket_ticket_id = $dest_id; $new_id = $this->Insert("#__fss_ticket_messages", $message); $msg_map[$old_id] = $new_id; } // add time $qry = "UPDATE #__fss_ticket_ticket SET timetaken = timetaken + " . (int) $source->timetaken . " WHERE id = " . $dest_id; $db->setQuery($qry); $db->Query(); if ($source->timetaken > 0) { $qry = "UPDATE #__fss_ticket_ticket SET timetaken = 0 WHERE id = " . $source_id; $db->setQuery($qry); $db->Query(); $source->addAuditNote("Time taken cleared as merged with another ticket"); } // copy files $sql = "SELECT * FROM #__fss_ticket_attach WHERE ticket_ticket_id = " . $db->escape($source_id); $db->setQuery($sql); $attachments = $db->loadObjectList(); foreach ($attachments as $attachment) { unset($attachment->id); $attachment->ticket_ticket_id = $dest_id; // change id to that of new message if (array_key_exists($attachment->message_id, $msg_map)) { $attachment->message_id = $msg_map[$attachment->message_id]; } $new_id = $this->Insert("#__fss_ticket_attach", $attachment); } // add audit messages to both $source->addAuditNote("Ticket merged into another ticket then closed. Dest Ticket: " . $dest->reference . " - " . $dest->title); $dest->addAuditNote("Ticket merged into this one. Merged Ticket: " . $source->reference . " - " . $source->title); // close source ticket $closed = FSS_Ticket_Helper::GetStatusID('def_closed'); // add merge tag to source ticket $now = FSS_Helper::CurDate(); $qry = "UPDATE #__fss_ticket_ticket SET merged = " . (int) $dest_id . ", ticket_status_id = " . (int) $closed . ", lastupdate = '{$now}', closed = '{$now}' WHERE id = " . (int) $source_id; $db->setQuery($qry); $db->Query(); // redirect to new ticket // TODO: /* Need to copy cc information on the ticket */ $session = JFactory::getSession(); $session->clear('merge'); $session->clear('merge_ticket_id'); ?> <script> window.location = '<?php echo FSSRoute::_('index.php?option=com_fss&view=admin_support&layout=ticket&ticketid=' . $dest_id, false); ?> '; </script> <?php exit; }