function settings()
{
    extract($_POST);
    db_conn('cubit');
    $err = "";
    $save = false;
    if (isset($from)) {
        $save = true;
        require_lib("validate");
        $v = new validate();
        $v->isOk($sig, "string", 0, 255, "Invalid signature.");
        $v->isOk($from, "email", 1, 255, "Invalid from e-mail address.");
        $v->isOk($reply, "email", 0, 255, "Invalid reply e-mail address.");
        $v->isOk($host, "string", 1, 255, "Invalid smtp server. You need to fill in the SMTP HOST field, you can get this from your ISP.<br>\n\t\t\t\tExamples: smtp.saix.net OR smtp.mweb.co.za");
        if ($v->isError()) {
            $err = $v->genErrors();
        } else {
            $sig = remval($sig);
            $from = remval($from);
            $reply = remval($reply);
            $host = remval($host);
            $Sl = "SELECT * FROM esettings";
            $Ri = db_exec($Sl);
            if (pg_num_rows($Ri) < 1) {
                $Sl = "INSERT INTO esettings(sig,fromname,reply,smtp_host,smtp_auth,smtp_user,smtp_pass) VALUES\n\t\t\t\t('{$sig}','{$from}','{$reply}','{$host}','0','','')";
                $Ri = db_exec($Sl);
            } else {
                $Sl = "UPDATE esettings SET sig='{$sig}',fromname='{$from}',reply='{$reply}',smtp_host='{$host}'";
                $Ri = db_exec($Sl);
            }
            r2sListRestore("emailsettings");
        }
    }
    $Sl = "SELECT * FROM esettings";
    $Ri = db_exec($Sl);
    $sd = pg_fetch_array($Ri);
    if (!$save) {
        $ex = "<li class=err>Please set your email settings & then click 'Update'</li>";
    } else {
        $ex = "<li class=err>Email settings saved</li>";
    }
    if (pg_num_rows($Ri) < 1) {
        $sd['sig'] = "";
        $sd['fromname'] = "";
        $sd['reply'] = "";
        $sd['smtp_host'] = "smtp.saix.net";
        $exx = "<li class=err>These are default settings. If these settings do not work, contact your ISP for correct details.</li>";
    } else {
        $exx = "";
    }
    $sd = array_merge($sd, $_POST);
    if (!isset($retdata)) {
        $retdata = "";
    }
    $out = "<h3>Email Settings</h3>\n\t{$exx}\n\t{$ex}\n\t<br />\n\t{$err}\n\t<table " . TMPL_tblDflts . ">\n\t<form action='" . SELF . "' method=post>\n\t{$retdata}\n\t<tr>\n\t\t<th colspan='2'>Settings</th>\n\t</tr>\n\t<tr class='" . bg_class() . "'>\n\t\t<td align='center' colspan='2'><b>An asterisk (" . REQ . ") symbol marks required fields.</b></td>\n\t</tr>\n\t<tr class='" . bg_class() . "'>\n\t\t<td>Signature</td>\n\t\t<td><input type='text' size='25' name='sig' value='{$sd['sig']}'></td>\n\t</tr>\n\t<tr class='" . bg_class() . "'>\n\t\t<td>" . REQ . " From E-mail Address</td>\n\t\t<td><input type='text' size='25' name='from' value='{$sd['fromname']}'></td>\n\t</tr>\n\t<tr class='" . bg_class() . "'>\n\t\t<td>Reply To E-mail Address</td>\n\t\t<td><input type='text' size='25' name='reply' value='{$sd['reply']}'></td>\n\t</tr>\n\t<tr class='" . bg_class() . "'>\n\t\t<td>" . REQ . " SMTP Server</td>\n\t\t<td><input type='text' size='25' name='host' value='{$sd['smtp_host']}'></td>\n\t</tr>\n\t<tr>\n\t\t<td colspan=2 align=right><input type=submit value='Update &raquo;'></td>\n\t</tr>\n\t</form>\n\t</table>\n\t<p>\n\t<table boder=0 cellpadding='" . TMPL_tblCellPadding . "' cellspacing='" . TMPL_tblCellSpacing . "'>\n\t<tr><th>Quick Links</th></tr>\n\t<tr class='bg-odd'><td><a href='main.php'>Main Menu</a></td></tr>\n\t</table>";
    return $out;
}
function write()
{
    extract($_POST);
    $qry = new dbSelect("config", "trh", grp(m("where", "readonly='f'")));
    $qry->run();
    $upd = new dbUpdate("config", "trh");
    while ($row = $qry->fetch_array()) {
        if (isset(${$row["name"]})) {
            $cols = grp(m("value", ${$row["name"]}["value"]));
            $upd->setOpt($cols, "name='{$row['name']}'");
            $upd->run(DB_UPDATE);
        }
    }
    r2sListRestore("trh_comminit");
    $OUT = "\n\t<h3>Transactioning Configuration</h3>\n\tSuccessfully updated configuration.";
    return $OUT;
}