function Dongles_Modify()
{
    global $mysqli;
    $session =& $_SESSION['Dongles_Modify'];
    $smarty = smarty_init(dirname(__FILE__) . '/templates');
    //	myprint($_REQUEST);
    // Init message (Message)
    $Message = isset($_REQUEST['msg']) ? $_REQUEST['msg'] : "";
    // Init available outgoing rules (Rules)
    $query = "SELECT * FROM OutgoingRules ORDER BY Name";
    $result = $mysqli->query($query) or die($mysqli->errno());
    $Rules = array();
    while ($row = $result->fetch_assoc()) {
        $Rules[] = $row;
    }
    $discovery_response = explode("\n", asterisk_Cmd('dongle discovery'));
    $discovered_dongles = array();
    $discovered_i = -1;
    for ($i = 0; $i < sizeof($discovery_response); $i++) {
        if (substr($discovery_response[$i], 0, 1) == "[") {
            $discovered_i++;
            $discovered_dongles[$discovered_i] = array();
        } elseif (substr($discovery_response[$i], 0, 4) == "imsi") {
            $discovered_dongles[$discovered_i]["IMSI"] = substr($discovery_response[$i], 5);
        } elseif (substr($discovery_response[$i], 0, 4) == "imei") {
            $discovered_dongles[$discovered_i]["IMEI"] = substr($discovery_response[$i], 5);
        }
    }
    // Init form data (Providers)
    if ($_REQUEST['submit'] == 'save') {
        $Dongle = formdata_from_post();
        $Errors = formdata_validate($Dongle);
        if (count($Errors) == 0) {
            $id = formdata_save($Dongle);
            asterisk_UpdateConf('dongle.conf');
            asterisk_UpdateConf('extensions.conf');
            asterisk_Reload();
            header("Location: Dongles_List.php?msg=MODIFY_DONGLE&hilight={$id}");
            die;
        }
    } elseif ($_REQUEST['PK_Dongle'] != "") {
        $Dongle = formdata_from_db($_REQUEST['PK_Dongle']);
    } else {
        $Dongle = formdata_from_default();
    }
    $smarty->assign('Dongle', $Dongle);
    $smarty->assign('DiscoveredDongles', $discovered_dongles);
    $smarty->assign('Message', $Message);
    $smarty->assign('Errors', $Errors);
    $smarty->assign('Rules', $Rules);
    return $smarty->fetch('Dongles_Modify.tpl');
}
function dongle_get_status($Dongle)
{
    $Status = array('FK_Dongle' => $Dongle['PK_Dongle'], 'Status' => 'Unknown', 'RSSI' => 0, 'Mode' => 'Unknown', 'Provider' => 'Unknown');
    $response = asterisk_Cmd("dongle show device state dongle{$Dongle['PK_Dongle']}");
    $response = explode("\n", $response);
    foreach ($response as $line) {
        unset($regs);
        if (preg_match('/ *RSSI *: ([0-9]*)/', $line, $regs)) {
            $Status['RSSI'] = $regs['1'];
        }
        unset($regs);
        if (preg_match('/ *Provider Name *: (.*)/', $line, $regs)) {
            $Status['Provider'] = $regs[1];
        }
        unset($regs);
        if (preg_match('/ *Mode *: (.*)/', $line, $regs)) {
            $Status['Mode'] = $regs[1];
        }
        unset($regs);
        if (preg_match('/ *GSM Registration Status *: (.*)/', $line, $regs)) {
            $Status['Status'] = $regs[1];
        }
    }
    return $Status;
}