$centreon_provider->setWidgetId($get_information['form']['widgetId']);
// We get Host or Service
require_once $centreon_path . 'www/class/centreonDuration.class.php';
$selected_values = explode(',', $get_information['form']['selection']);
$db_storage = new centreonDBManager('centstorage');
$selected = $rule->loadSelection($db_storage, $get_information['form']['cmd'], $get_information['form']['selection']);
try {
    $contact_infos = get_contact_information();
    $resultat['result'] = $centreon_provider->submitTicket($db_storage, $contact_infos, $selected['host_selected'], $selected['service_selected']);
    if ($resultat['result']['ticket_is_ok'] == 1) {
        require_once $centreon_path . 'www/class/centreonExternalCommand.class.php';
        $oreon = $_SESSION['centreon'];
        $external_cmd = new CentreonExternalCommand($oreon);
        foreach ($selected['host_selected'] as $value) {
            $command = "CHANGE_CUSTOM_HOST_VAR;%s;%s;%s";
            $external_cmd->set_process_command(sprintf($command, $value['name'], $centreon_provider->getMacroTicketId(), $resultat['result']['ticket_id']), $value['instance_id']);
            if ($centreon_provider->doAck()) {
                $command = "ACKNOWLEDGE_HOST_PROBLEM;%s;%s;%s;%s;%s;%s;%";
                $external_cmd->set_process_command(sprintf($command, $value['name'], 2, 0, 1, $contact_infos['alias'], 'open ticket: ' . $resultat['result']['ticket_id']), $value['instance_id']);
            }
        }
        foreach ($selected['service_selected'] as $value) {
            $command = "CHANGE_CUSTOM_SVC_VAR;%s;%s;%s;%s";
            $external_cmd->set_process_command(sprintf($command, $value['host_name'], $value['description'], $centreon_provider->getMacroTicketId(), $resultat['result']['ticket_id']), $value['instance_id']);
            if ($centreon_provider->doAck()) {
                $command = "ACKNOWLEDGE_SVC_PROBLEM;%s;%s;%s;%s;%s;%s;%s";
                $external_cmd->set_process_command(sprintf($command, $value['host_name'], $value['description'], 2, 0, 1, $contact_infos['alias'], 'open ticket: ' . $resultat['result']['ticket_id']), $value['instance_id']);
            }
        }
        $external_cmd->write();
    }
    $external_cmd = new CentreonExternalCommand($oreon);
    $removed_tickets = array();
    $error_msg = array();
    foreach ($problems as $row) {
        # an error in ticket close
        if (isset($tickets[$row['ticket_value']]) && $tickets[$row['ticket_value']]['status'] == -1) {
            $error_msg[] = $tickets[$row['ticket_value']]['msg_error'];
            continue;
        }
        # ticket is really closed
        if ($tickets[$row['ticket_value']]['status'] == 2 && !isset($removed_tickets[$row['ticket_value']])) {
            $removed_tickets[$row['ticket_value']] = 1;
        }
        if (is_null($row['description']) || $row['description'] == '') {
            $command = "CHANGE_CUSTOM_HOST_VAR;%s;%s;%s";
            $external_cmd->set_process_command(sprintf($command, $row['host_name'], $centreon_provider->getMacroTicketId(), ''), $row['instance_id']);
            $command = "REMOVE_HOST_ACKNOWLEDGEMENT;%s";
            $external_cmd->set_process_command(sprintf($command, $row['host_name']), $row['instance_id']);
            continue;
        }
        $command = "CHANGE_CUSTOM_SVC_VAR;%s;%s;%s;%s";
        $external_cmd->set_process_command(sprintf($command, $row['host_name'], $row['description'], $centreon_provider->getMacroTicketId(), ''), $row['instance_id']);
        if ($centreon_provider->doAck()) {
            $command = "REMOVE_SVC_ACKNOWLEDGEMENT;%s;%s";
            $external_cmd->set_process_command(sprintf($command, $row['host_name'], $row['description']), $row['instance_id']);
        }
    }
    $external_cmd->write();
} catch (Exception $e) {
    $resultat['code'] = 1;
    $resultat['msg'] = $e->getMessage();