Transfer::transferTickets PHP Method

transferTickets() public method

Transfer tickets
public transferTickets ( $itemtype, $ID, $newID )
$itemtype type of transfered item
$ID original ID of the ticket
$newID new ID of the ticket
    function transferTickets($itemtype, $ID, $newID)
    {
        global $DB;
        $job = new Ticket();
        $rel = new Item_Ticket();
        $query = "SELECT `glpi_tickets`.*, `glpi_items_tickets`.`id` as _relid\n                FROM `glpi_tickets`\n                LEFT JOIN `glpi_items_tickets`\n                   ON `glpi_items_tickets`.`tickets_id` = `glpi_tickets`.`id`\n                WHERE `items_id` = '{$ID}'\n                      AND `itemtype` = '{$itemtype}'";
        if ($result = $DB->query($query)) {
            if ($DB->numrows($result) != 0) {
                switch ($this->options['keep_ticket']) {
                    // Transfer
                    case 2:
                        // Same Item / Copy Item -> update entity
                        while ($data = $DB->fetch_assoc($result)) {
                            $input = $this->transferHelpdeskAdditionalInformations($data);
                            $input['id'] = $data['id'];
                            $input['entities_id'] = $this->to;
                            $job->update($input);
                            $input = array();
                            $input['id'] = $data['_relid'];
                            $input['items_id'] = $newID;
                            $input['itemtype'] = $itemtype;
                            $rel->update($input);
                            $this->addToAlreadyTransfer('Ticket', $data['id'], $data['id']);
                            $this->transferTaskCategory('Ticket', $data['id'], $data['id']);
                        }
                        break;
                        // Clean ref : keep ticket but clean link
                    // Clean ref : keep ticket but clean link
                    case 1:
                        // Same Item / Copy Item : keep and clean ref
                        while ($data = $DB->fetch_assoc($result)) {
                            $rel->delete(array('id' => $data['relid']));
                            $this->addToAlreadyTransfer('Ticket', $data['id'], $data['id']);
                        }
                        break;
                        // Delete
                    // Delete
                    case 0:
                        // Same item -> delete
                        if ($ID == $newID) {
                            while ($data = $DB->fetch_assoc($result)) {
                                $job->delete(array('id' => $data['id']));
                            }
                        }
                        // Copy Item : nothing to do
                        break;
                }
            }
        }
    }