Beispiel #1
0
function DBExecute($query)
{
    $link = DBConnect();
    $result = mysqli_query($link, $query) or die(mysqli_error($link));
    DBClose($link);
    return $result;
}
function DBInsert_Candidato(array $candidato)
{
    $link = DBConnect();
    $query_inserir = "INSERT INTO candidato (idcandidato, nome, cpf, rua, num, bairro, cidade, cep, fixo, cel, email, curso1, curso2, datahora) VALUES (NULL, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW())";
    $stmt = $link->prepare($query_inserir) or die(mysqli_error($link));
    if ($stmt) {
        $stmt->bind_param("sssissssssss", $candidato["nome"], $candidato["cpf"], $candidato["rua"], $candidato["num"], $candidato["bairro"], $candidato["cidade"], $candidato["cep"], $candidato["fixo"], $candidato["cel"], $candidato["email"], $candidato["opc1"], $candidato["opc2"]);
        $resultado = $stmt->execute() ? 1 : 0;
        $stmt->store_result();
        $stmt->close();
    }
    DBClose($link);
    return $resultado;
}
function DBInsert_Curso(array $curso, $foto1, $foto2, $foto3)
{
    $link = DBConnect();
    $query_curso = "INSERT INTO curso (idcurso, cod, nome, duracao, periodo, mensalidade, descricao, foto1, foto2, foto3) VALUES (NULL, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
    $stmt = $link->prepare($query_curso) or die(mysqli_error($link));
    if ($stmt) {
        $stmt->bind_param("ssissssss", $curso["cod"], $curso["nome"], $curso["duracao"], $curso["periodo"], $curso["mensalidade"], $curso["descricao"], $foto1, $foto2, $foto3);
        $resultado = $stmt->execute() ? 1 : 0;
        $stmt->store_result();
        $stmt->close();
    }
    DBClose($link);
    return $resultado;
}
Beispiel #4
0
function DBEscape($dados)
{
    $link = DBConnect();
    if (!is_array($dados)) {
        $dados = mysqli_real_escape_string($link, $dados);
    } else {
        $arr = $dados;
        foreach ($arr as $key => $value) {
            $key = mysqli_real_escape_string($link, $key);
            $value = mysqli_real_escape_string($link, $value);
            $dados[$key] = $value;
        }
    }
    DBClose($link);
}
Beispiel #5
0
function DBEscape($data)
{
    $link = DBConnect();
    if (!is_array($data)) {
        $data = mysqli_real_escape_string($link, $data);
    } else {
        $arr = $data;
        foreach ($arr as $key => $value) {
            $key = DBEscape($key);
            $value = DBEscape($value);
            $data[$key] = $value;
        }
    }
    DBClose($link);
    return $data;
}
Beispiel #6
0
function DBProtect($dados)
{
    //Protege contra SQL Inject
    $link = DBConnect();
    if (!is_array($dados)) {
        $dados = mysqli_real_escape_string($link, $dados);
    } else {
        $arr = $dados;
        foreach ($arr as $key => $value) {
            $key = mysqli_real_escape_string($link, $key);
            $value = mysqli_real_escape_string($link, $value);
            $dados[$key] = $value;
        }
    }
    DBClose($link);
    return $dados;
}
Beispiel #7
0
function importFromXML($ar, $acr, $contest = 0, $localsite = 0)
{
    $data = implode("", explode("\n", $ar));
    $parser = xml_parser_create();
    xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 1);
    xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
    xml_parse_into_struct($parser, $data, $values, $tags);
    xml_parser_free($parser);
    //	print_r($tags);
    //	print_r($values);
    $orderkeys = array('CONTESTREC', 'SITETIME', 'SITEREC', 'USERREC', 'ANSWERREC', 'LANGUAGEREC', 'PROBLEMREC', 'CLARREC', 'RUNREC', 'TASKREC');
    $norderkeys = 10;
    $nc = 0;
    unset($sitetime);
    unset($nsitetime);
    $conn = DBConnect();
    if ($conn == null) {
        return false;
    }
    //	DBExec($conn,"begin work","importFromXML(begin)");
    //	DBExec($conn,"lock","importFromXML(lock)");
    if ($contest != 0) {
        $r = DBExec($conn, "select * from contesttable where contestnumber={$contest}");
        if (DBnLines($r) == 0) {
            echo "Unable to find the contest {$contest} in the database.\n";
            DBExec($conn, "rollback work");
            return false;
        }
        $ct = DBRow($r, 0);
        if ($localsite == 0) {
            $localsite = $ct["contestlocalsite"];
        }
    } else {
        if ($localsite == 0) {
            $localsite = 1;
        }
    }
    //	$mainsite = $ct["contestmainsite"];
    DBClose($conn);
    $conn = null;
    for ($keyindex = 0; $keyindex < $norderkeys; $keyindex++) {
        foreach ($tags as $key => $val) {
            if ($values[$val[0]]['type'] != 'open') {
                continue;
            }
            if ($key == "XML") {
                continue;
            }
            if ($key != $orderkeys[$keyindex]) {
                continue;
            }
            if (isset($acr[$key])) {
                $ac = $acr[$key];
            } else {
                continue;
            }
            foreach ($val as $k => $v) {
                if ($values[$v]['type'] != 'open') {
                    continue;
                }
                if (count($val) > $k + 1) {
                    $param = array();
                    if (isset($ac['site'])) {
                        for ($i = $v; $i < $val[$k + 1]; $i++) {
                            $p = strtolower($values[$i]["tag"]);
                            if ($p == 'site') {
                                if ($values[$i]["type"] == "complete" && isset($values[$i]["value"])) {
                                    $tmp = sanitizeText(trim(implode('', explode('\\n', $values[$i]["value"]))));
                                    if (is_array($ac['site']) && in_array($tmp, $ac['site'])) {
                                        $param['site'] = $tmp;
                                    } else {
                                        if ($ac['site'] == -1 || $ac['site'] == -2 && $tmp == $localsite || $ac['site'] == -3 && $tmp != $localsite || $ac['site'] > 0 && $ac['site'] == $tmp) {
                                            $param['site'] = $tmp;
                                        }
                                    }
                                }
                            }
                        }
                    }
                    for ($i = $v; $i < $val[$k + 1]; $i++) {
                        $p = strtolower($values[$i]["tag"]);
                        if (isset($ac[$p]) && $p != 'site') {
                            if ($values[$i]["type"] == "complete" && isset($values[$i]["value"])) {
                                if (is_string($ac[$p])) {
                                    $param[$p] = $ac[$p];
                                } else {
                                    $tmp = sanitizeText(trim(implode('', explode('\\n', $values[$i]["value"]))));
                                    if (is_array($ac[$p]) && in_array($tmp, $ac[$p])) {
                                        $param[$p] = $tmp;
                                    } else {
                                        if ($ac[$p] == -1 || $ac[$p] == -2 && $tmp == $localsite || $ac[$p] == -3 && $tmp != $localsite || $ac[$p] == 0 && isset($param['site']) || $ac[$p] > 0 && $ac[$p] == $tmp) {
                                            $param[$p] = $tmp;
                                        }
                                    }
                                }
                            }
                        }
                    }
                    //		  echo "\nKEY KEY KEY\n";
                    //		  print_r($key);
                    //		  echo "\nVAL VAL VAL\n";
                    //		  print_r($val);
                    //		  echo "\n";
                    //				print_r($param);
                    $param['contestnumber'] = $contest;
                    if ($key == "CONTESTREC") {
                        $param['number'] = $contest;
                        if ($contest == 0) {
                            $nc = 1;
                            $contest = DBNewContest($param, $conn);
                            if ($contest > 0) {
                                echo "<br><u>Contest {$contest} created</u> (not active by default)<br>";
                            } else {
                                echo "<br>Error creating contest<br>";
                                if ($conn != null) {
                                    DBExec($conn, "rollback work");
                                }
                                return false;
                            }
                        }
                        $param['number'] = $contest;
                        $param['contestnumber'] = $contest;
                        if ($ret = DBUpdateContest($param, $conn)) {
                            if ($ret == 2) {
                                echo "<br>Contest {$contest} updated<br>";
                            }
                        } else {
                            if ($conn != null) {
                                DBExec($conn, "rollback work");
                            }
                            return false;
                        }
                    }
                    if (!isset($param['number']) || count($param) < 2) {
                        continue;
                    }
                    if ($key == "SITEREC") {
                        if (!DBNewSite($contest, $conn, $param)) {
                            if ($conn != null) {
                                DBExec($conn, "rollback work");
                            }
                            return false;
                        }
                        if ($ret = DBUpdateSite($param, $conn)) {
                            if ($ret == 2) {
                                echo "Site " . $param["number"] . " updated<br>";
                            }
                        } else {
                            if ($conn != null) {
                                DBExec($conn, "rollback work");
                            }
                            return false;
                        }
                        if (isset($nsitetime[$param["number"]])) {
                            if ($qtd = DBRenewSiteTime($sitetime[$param["number"]], $conn)) {
                                if ($qtd == 2) {
                                    echo "Time for site " . $param["number"] . " updated<br>";
                                }
                            } else {
                                if ($conn != null) {
                                    DBExec($conn, "rollback work");
                                }
                                return false;
                            }
                        }
                    }
                    if ($key == "SITETIME") {
                        if (isset($param['site']) && is_numeric($param['site'])) {
                            $s = $param['site'];
                            if (!isset($nsitetime[$s])) {
                                $nsitetime[$s] = 0;
                            }
                            $sitetime[$s][$nsitetime[$s]] = $param;
                            $nsitetime[$s]++;
                        }
                    }
                    if ($key == "USERREC") {
                        if ($ret = DBNewUser($param, $conn)) {
                            if ($ret == 2) {
                                echo "User " . $param["number"] . "/" . $param['site'] . " updated<br>";
                            }
                        } else {
                            if ($conn != null) {
                                DBExec($conn, "rollback work");
                            }
                            return false;
                        }
                    }
                    if ($key == "ANSWERREC") {
                        if ($ret = DBNewAnswer($contest, $param, $conn)) {
                            if ($ret == 2) {
                                echo "Answer " . $param["number"] . " updated<br>";
                            }
                        } else {
                            if ($conn != null) {
                                DBExec($conn, "rollback work");
                            }
                            return false;
                        }
                    }
                    if ($key == "LANGUAGEREC") {
                        if ($ret = DBNewLanguage($contest, $param, $conn)) {
                            if ($ret == 2) {
                                echo "Language " . $param['number'] . " updated<br>";
                            }
                        } else {
                            if ($conn != null) {
                                DBExec($conn, "rollback work");
                            }
                            return false;
                        }
                    }
                    if ($key == "PROBLEMREC") {
                        if ($ret = DBNewProblem($contest, $param, $conn)) {
                            if ($ret == 2) {
                                echo "Problem " . $param['number'] . " updated<br>";
                            }
                        } else {
                            if ($conn != null) {
                                DBExec($conn, "rollback work");
                            }
                            return false;
                        }
                    }
                    if ($key == "TASKREC") {
                        if ($ret = DBNewTask($param, $conn)) {
                            if ($ret == 2) {
                                echo "Task " . $param['number'] . "/" . $param['site'] . " updated<br>";
                            }
                        } else {
                            if ($conn != null) {
                                DBExec($conn, "rollback work");
                            }
                            return false;
                        }
                    }
                    if ($key == "CLARREC") {
                        if ($ret = DBNewClar($param, $conn)) {
                            if ($ret == 2) {
                                echo "Clarification " . $param['number'] . "/" . $param['site'] . " updated<br>";
                            }
                        } else {
                            if ($conn != null) {
                                DBExec($conn, "rollback work");
                            }
                            return false;
                        }
                    }
                    if ($key == "RUNREC") {
                        if ($ret = DBNewRun($param, $conn)) {
                            if ($ret == 2) {
                                echo "Run " . $param['number'] . "/" . $param['site'] . " updated<br>";
                            }
                        } else {
                            if ($conn != null) {
                                DBExec($conn, "rollback work");
                            }
                            return false;
                        }
                    }
                }
            }
        }
    }
    //	DBExec($conn,"commit work","importFromXML(commit)");
    return true;
}
<?php

session_start();
if (!isset($_SESSION['login']) && !isset($_SESSION['senha'])) {
    session_destroy();
    unset($_SESSION['login']);
    unset($_SESSION['senha']);
    header('location: ../../portal/login.php');
}
?>


<?php 
require '../banco/db_curso.php';
$link = DBConnect();
$id = $_GET['id'];
if (isset($id)) {
    $query = $link->query("DELETE FROM curso WHERE idcurso = {$id}");
    if ($query) {
        echo "<script>location.href='../cursos.php';</script>";
    } else {
        header('location: ../cursos.php');
    }
}
$stmt->close();
DBClose($link);
Beispiel #9
0
        LOGError("Unable to open file (" . basename($fname) . ")");
        MSGError("Unable to open file (" . basename($fname) . ")");
        echo "<script>window.close();</script></html>";
        exit;
    }
    ob_end_flush();
    //  echo "</pre>\n";
    DB_lo_close($lo);
    if ($msg != '') {
        //    echo " <a href=\"#\" onClick=\"window.print()\"><h1>".$_GET["msg"]."</h1></a>";
        echo "\n\n\n" . $msg . "\n";
        echo $msg . "\n";
        echo $msg . "\n";
    }
    DBExec($c, "commit work");
    DBClose($c);
} else {
    header("Expires: " . gmdate("D, d M Y H:i:s") . " GMT");
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
    header("Cache-Control: no-cache, must-revalidate");
    header("Pragma: no-cache");
    if (($str = file_get_contents($fname)) === false) {
        header("Content-type: text/html");
        echo "<html><head><title>View Page</title>";
        MSGError("Unable to open file (" . basename($fname) . ")");
        LOGError("Unable to open file (" . basename($fname) . ")");
        echo "<script>window.close();</script></html>";
        exit;
    }
    header("Content-type: text/plain");
    echo decryptData($str, $cf["key"]);
        //
        $PDFCompanyLogoHeight = $f['PDF_COMPANY_LOGO_HEIGHT'];
        // Company Logo Width PDF
        //
        $PDFCompanyLogoWidth = $f['PDF_COMPANY_LOGO_WIDTH'];
        // PDF Font
        //
        $PDFFont = $f['PDF_FONT'];
        // TEMP Directory for PDF's
        // The Webserver must have write access
        // for this directory
        //
        $PDFDirectory = $f['PDF_DIR'];
        // PDF Fontsize 1
        //
        $PDFFontsize1 = $f['PDF_FONT_SIZE1'];
        // PDF Fontsize 2
        //
        $PDFFontsize2 = $f['PDF_FONT_SIZE2'];
        // PDF Text Height e. g. Invoice / Offer
        //
        $PDFTypeHeight = $f['PDF_TYPE_HEIGHT'];
        // PDF Attachment Text
        //
        $PDFAttachmentText = $f['PDF_ATTACHMENT_TEXT'];
    }
}
// Close Database Connection ( optional )
//
DBClose();
Beispiel #11
0
function GetExternalData($contest)
{
    $c = DBConnect();
    if ($c == null) {
        return;
    }
    $r = DBExec($c, "select * from contesttable where contestnumber={$contest}");
    if (DBnLines($r) == 0) {
        echo "Unable to find the contest {$contest} in the database.\n";
        exit;
    }
    $ct = DBRow($r, 0);
    $localsite = $ct["contestlocalsite"];
    $mainsite = $ct["contestmainsite"];
    if ($mainsite != $localsite) {
        $r = DBExec($c, "select * from sitetable where sitenumber=" . $ct["contestmainsite"] . " and contestnumber={$contest}");
        if (DBnLines($r) == 0) {
            echo "Unable to find the main site in the database (site={$site}, contest={$contest}).\n";
            exit;
        }
        $st = DBRow($r, 0);
        if (($t = DBExtConnect($c, $contest, $st["sitenumber"])) != null) {
            DBExec($c, "begin work");
            // sincronizando contest
            $r = DBExec($t, "select * from contesttable where contestnumber={$contest}");
            $n = DBnLines($r);
            $atual = DBRow($r, 0);
            if ($atual["updatetime"] == "") {
                $atual["updatetime"] = time();
            }
            DBExec($c, "update contesttable set " . "contestduration=" . $atual["contestduration"] . "," . "conteststartdate=" . $atual["conteststartdate"] . "," . "contestmaxfilesize=" . $atual["contestmaxfilesize"] . "," . "contestactive='" . $atual["contestactive"] . "'," . "contestname='" . escape_string($atual["contestname"]) . "'," . "contestlastmileanswer=" . $atual["contestlastmileanswer"] . "," . "contestlastmilescore=" . $atual["contestlastmilescore"] . "," . "contestpenalty=" . $atual["contestpenalty"] . "," . "updatetime=" . $atual["updatetime"] . " where contestnumber={$contest} and updatetime<" . $atual["updatetime"]);
            // sincronizando answers
            $r = DBExec($t, "select * from answertable where contestnumber={$contest}");
            $rr = DBExec($c, "select * from answertable where contestnumber={$contest} for update");
            $n = DBnLines($r);
            $nn = DBnLines($rr);
            echo "answers: external(site={$mainsite}, reading={$mainsite})={$n}, local={$nn}\n";
            for ($k = 0; $k < $nn; $k++) {
                $needed[$k] = false;
            }
            for ($j = 0; $j < $n; $j++) {
                $la = DBRow($r, $j);
                for ($k = 0; $k < $nn; $k++) {
                    $aqui = DBRow($rr, $k);
                    if ($la["answernumber"] == $aqui["answernumber"] && $la["contestnumber"] == $aqui["contestnumber"]) {
                        $needed[$k] = true;
                        if ($la["updatetime"] > $aqui["updatetime"]) {
                            $situacao[$j] = "atualizar";
                        } else {
                            $situacao[$j] = "ok";
                        }
                        break;
                    }
                }
                if ($k >= $nn) {
                    $situacao[$j] = "inserir";
                }
            }
            $del = 0;
            $upd = 0;
            $ins = 0;
            for ($k = 0; $k < $nn; $k++) {
                $atual = DBRow($rr, $k);
                if (!$needed[$k]) {
                    DBExec($c, "delete from answertable where contestnumber={$contest} and answernumber=" . $atual["answernumber"]);
                    $del++;
                }
            }
            for ($j = 0; $j < $n; $j++) {
                $atual = DBRow($r, $j);
                if ($atual["updatetime"] == "") {
                    $atual["updatetime"] = time();
                }
                if ($situacao[$j] == "atualizar") {
                    $upd++;
                    DBExec($c, "update answertable set " . "runanswer='" . $atual["runanswer"] . "'," . "yes='" . $atual["yes"] . "'," . "fake='" . $atual["fake"] . "'," . "updatetime=" . $atual["updatetime"] . " where contestnumber={$contest} and answernumber=" . $atual["answernumber"] . " and updatetime<" . $atual["updatetime"]);
                } else {
                    if ($situacao[$j] == "inserir") {
                        $ins++;
                        DBExec($c, "insert into answertable (contestnumber, answernumber, runanswer, yes, fake, updatetime) values (" . $contest . "," . $atual["answernumber"] . ",'" . $atual["runanswer"] . "','" . $atual["yes"] . "'," . "'" . $atual["fake"] . "'," . $atual["updatetime"] . ")");
                    }
                }
            }
            echo "   deletions={$del}, updates={$upd}, insertions={$ins}\n\n";
            // sincronizando languages
            $r = DBExec($t, "select * from langtable where contestnumber={$contest}");
            $rr = DBExec($c, "select * from langtable where contestnumber={$contest} for update");
            $n = DBnLines($r);
            $nn = DBnLines($rr);
            echo "languages: external(site={$mainsite}, reading={$mainsite})={$n}, local={$nn}\n";
            for ($k = 0; $k < $nn; $k++) {
                $needed[$k] = false;
            }
            for ($j = 0; $j < $n; $j++) {
                $la = DBRow($r, $j);
                for ($k = 0; $k < $nn; $k++) {
                    $aqui = DBRow($rr, $k);
                    if ($la["langnumber"] == $aqui["langnumber"] && $la["contestnumber"] == $aqui["contestnumber"]) {
                        $needed[$k] = true;
                        if ($la["updatetime"] > $aqui["updatetime"]) {
                            $situacao[$j] = "atualizar";
                        } else {
                            $situacao[$j] = "ok";
                        }
                        break;
                    }
                }
                if ($k >= $nn) {
                    $situacao[$j] = "inserir";
                }
            }
            $del = 0;
            $upd = 0;
            $ins = 0;
            for ($k = 0; $k < $nn; $k++) {
                $atual = DBRow($rr, $k);
                if (!$needed[$k]) {
                    DBExec($c, "delete from langtable where contestnumber={$contest} and langnumber=" . $atual["langnumber"]);
                    $del++;
                }
            }
            for ($j = 0; $j < $n; $j++) {
                $atual = DBRow($r, $j);
                if ($atual["updatetime"] == "") {
                    $atual["updatetime"] = time();
                }
                if ($situacao[$j] == "atualizar") {
                    $upd++;
                    DBExec($c, "update langtable set " . "langname='" . escape_string($atual["langname"]) . "'," . "updatetime=" . $atual["updatetime"] . " where contestnumber={$contest} and langnumber=" . $atual["langnumber"] . " and updatetime<" . $atual["updatetime"]);
                } else {
                    if ($situacao[$j] == "inserir") {
                        $ins++;
                        DBExec($c, "insert into langtable (contestnumber, langnumber, langname, updatetime) values ({$contest}," . $atual["langnumber"] . ",'" . escape_string($atual["langname"]) . "'," . $atual["updatetime"] . ")");
                    }
                }
            }
            echo "   deletions={$del}, updates={$upd}, insertions={$ins}\n\n";
            // sincronizando problems
            $r = DBExec($t, "select * from problemtable where contestnumber={$contest}");
            $rr = DBExec($c, "select * from problemtable where contestnumber={$contest} for update");
            $n = DBnLines($r);
            $nn = DBnLines($rr);
            echo "problems: external(site={$mainsite}, reading={$mainsite})={$n}, local={$nn}\n";
            for ($k = 0; $k < $nn; $k++) {
                $needed[$k] = false;
            }
            for ($j = 0; $j < $n; $j++) {
                $la = DBRow($r, $j);
                for ($k = 0; $k < $nn; $k++) {
                    $aqui = DBRow($rr, $k);
                    if ($la["problemnumber"] == $aqui["problemnumber"] && $la["contestnumber"] == $aqui["contestnumber"]) {
                        $needed[$k] = true;
                        if ($la["updatetime"] > $aqui["updatetime"]) {
                            $situacao[$j] = "atualizar";
                        } else {
                            $situacao[$j] = "ok";
                        }
                        break;
                    }
                }
                if ($k >= $nn) {
                    $situacao[$j] = "inserir";
                }
            }
            $del = 0;
            $upd = 0;
            $ins = 0;
            for ($k = 0; $k < $nn; $k++) {
                $atual = DBRow($rr, $k);
                if (!$needed[$k]) {
                    DBExec($c, "delete from problemtable where contestnumber={$contest} and problemnumber=" . $atual["problemnumber"]);
                    $del++;
                }
            }
            for ($j = 0; $j < $n; $j++) {
                $atual = DBRow($r, $j);
                if ($atual["updatetime"] == "") {
                    $atual["updatetime"] = time();
                }
                if ($situacao[$j] == "inserir") {
                    $ins++;
                    $upd--;
                    DBExec($c, "insert into problemtable (contestnumber, problemnumber, problemname, updatetime) values ({$contest}," . $atual["problemnumber"] . ",'" . escape_string($atual["problemname"]) . "', 0)");
                }
                if ($situacao[$j] == "atualizar" || $situacao[$j] == "inserir") {
                    $upd++;
                    $p = DBRow($r2, 0);
                    if ($p["probleminputfile"] > 0) {
                        DB_lo_unlink($c, $p["probleminputfile"]);
                    }
                    if ($p["problemsolfile"] > 0) {
                        DB_lo_unlink($c, $p["problemsolfile"]);
                    }
                    DBExec($t, "begin work");
                    if ($atual["probleminputfile"] == "") {
                        $inputfile = "null";
                    } else {
                        $in = DB_lo_open($t, $atual["probleminputfile"], "r");
                        if (!$in) {
                            $inputfile = "null";
                        } else {
                            $inputfile = DB_lo_create($c);
                            $out = DB_lo_open($c, $inputfile, "w");
                            while (($buf = DB_lo_read($in, 100000)) != false) {
                                DB_lo_write($out, $buf);
                            }
                            DB_lo_close($out);
                            DB_lo_close($in);
                        }
                    }
                    if ($atual["problemsolfile"] == "") {
                        $solfile = "null";
                    } else {
                        $in = DB_lo_open($t, $atual["problemsolfile"], "r");
                        if (!$in) {
                            $solfile = "null";
                        } else {
                            $solfile = DB_lo_create($c);
                            $out = DB_lo_open($c, $solfile, "w");
                            while (($buf = DB_lo_read($in, 100000)) != false) {
                                DB_lo_write($out, $buf);
                            }
                            DB_lo_close($out);
                            DB_lo_close($in);
                        }
                    }
                    DBExec($t, "commit work");
                    DBExec($c, "update problemtable set " . "problemname='" . escape_string($atual["problemname"]) . "'," . "problemfullname='" . escape_string($atual["problemfullname"]) . "'," . "problembasefilename='" . escape_string($atual["problembasefilename"]) . "'," . "probleminputfilename='" . escape_string($atual["probleminputfilename"]) . "'," . "problemsolfilename='" . escape_string($atual["problemsolfilename"]) . "'," . "fake='" . $atual["fake"] . "'," . "probleminputfile=" . $inputfile . "," . "problemsolfile=" . $solfile . "," . "updatetime=" . $atual["updatetime"] . " where contestnumber={$contest} and problemnumber=" . $atual["problemnumber"] . " and updatetime<" . $atual["updatetime"]);
                }
            }
            echo "   deletions={$del}, updates={$upd}, insertions={$ins}\n\n";
            DBExec($c, "commit work");
        }
    }
    $r = DBExec($c, "select * from sitetable where contestnumber={$contest}");
    $n = DBnlines($r);
    if ($n == 0) {
        echo "Unable to find sites in the database.\n";
        exit;
    }
    $st = array();
    for ($i = 0; $i < $n; $i++) {
        $st[$i] = DBRow($r, $i);
    }
    for ($i = 0; $i < count($st); $i++) {
        $site = $st[$i]["sitenumber"];
        if ($site == $ct["contestlocalsite"]) {
            continue;
        }
        if (($t = DBExtConnect($c, $contest, $site)) == null) {
            continue;
        }
        DBExec($c, "begin work");
        // sincronizando site
        $r = DBExec($t, "select * from sitetable where contestnumber={$contest} and sitenumber={$site}");
        $rr = DBExec($c, "select * from sitetable where contestnumber={$contest} and sitenumber={$site} for update");
        $n = DBnLines($r);
        $nn = DBnLines($rr);
        $atual = DBRow($r, 0);
        $p = DBRow($rr, 0);
        //		if ($p["updatetime"]<$atual["updatetime"]) {
        if ($atual["sitestartdate"] == "") {
            $atual["sitestartdate"] = "null";
        }
        if ($atual["sitelastmilescore"] == "") {
            $atual["sitelastmilescore"] = "null";
        }
        if ($atual["sitelastmileanswer"] == "") {
            $atual["sitelastmileanswer"] = "null";
        }
        if ($atual["siteenddate"] == "") {
            $atual["siteenddate"] = "null";
        }
        if ($atual["siteendeddate"] == "") {
            $atual["siteendeddate"] = "null";
        }
        if ($atual["siteautoend"] != "t") {
            $atual["siteautoend"] = "f";
        }
        if ($atual["updatetime"] == "") {
            $atual["updatetime"] = time();
        }
        DBExec($c, "update sitetable set " . "sitename='" . escape_string($atual["sitename"]) . "'," . "siteactive='" . escape_string($atual["siteactive"]) . "'," . "sitepermitlogins='" . escape_string($atual["sitepermitlogins"]) . "'," . "sitestartdate=" . $atual["sitestartdate"] . "," . "sitelastmilescore=" . $atual["sitelastmilescore"] . "," . "sitelastmileanswer=" . $atual["sitelastmileanswer"] . "," . "siteenddate=" . $atual["siteenddate"] . "," . "siteendeddate=" . $atual["siteendeddate"] . "," . "siteautoend='" . escape_string($atual["siteautoend"]) . "'," . "sitejudging='" . escape_string($atual["sitejudging"]) . "'," . "siteglobalscore='" . escape_string($atual["siteglobalscore"]) . "'," . "sitescorelevel=" . $atual["sitescorelevel"] . "," . "sitenextuser="******"sitenextuser"] . "," . "sitenextclar=" . $atual["sitenextclar"] . "," . "sitenextrun=" . $atual["sitenextrun"] . "," . "updatetime=" . $atual["updatetime"] . " where contestnumber={$contest} and sitenumber=" . $atual["sitenumber"]);
        //				." and updatetime<".$atual["updatetime"]);
        //		}
        // sincronizando users
        $r = DBExec($t, "select * from usertable where contestnumber={$contest} and usersitenumber={$site}");
        $rr = DBExec($c, "select * from usertable where contestnumber={$contest} and usersitenumber={$site}");
        $n = DBnLines($r);
        $nn = DBnLines($rr);
        echo "users: external(site={$site}, reading={$site})={$n}, local={$nn}\n";
        for ($k = 0; $k < $nn; $k++) {
            $needed[$k] = false;
        }
        for ($j = 0; $j < $n; $j++) {
            $la = DBRow($r, $j);
            for ($k = 0; $k < $nn; $k++) {
                $aqui = DBRow($rr, $k);
                if ($la["usernumber"] == $aqui["usernumber"] && $la["contestnumber"] == $aqui["contestnumber"] && $la["usersitenumber"] == $aqui["usersitenumber"]) {
                    $needed[$k] = true;
                    if ($la["updatetime"] > $aqui["updatetime"]) {
                        $situacao[$j] = "atualizar";
                    } else {
                        $situacao[$j] = "ok";
                    }
                    break;
                }
            }
            if ($k >= $nn) {
                $situacao[$j] = "inserir";
            }
        }
        $del = 0;
        for ($k = 0; $k < $nn; $k++) {
            $atual = DBRow($rr, $k);
            if (!$needed[$k]) {
                DBExec($c, "delete from usertable where contestnumber={$contest} and usersitenumber={$site} and usernumber=" . $atual["usernumber"]);
                $del++;
            }
        }
        $upd = 0;
        $ins = 0;
        for ($j = 0; $j < $n; $j++) {
            $atual = DBRow($r, $j);
            if ($atual["userlastlogin"] == "") {
                $atual["userlastlogin"] = "******";
            }
            if ($atual["userlastlogout"] == "") {
                $atual["userlastlogout"] = "null";
            }
            if ($atual["updatetime"] == "") {
                $atual["updatetime"] = time();
            }
            if ($situacao[$j] == "atualizar") {
                DBExec($c, "update usertable set " . "username='******'," . "userfullname='" . escape_string($atual["userfullname"]) . "'," . "userdesc='" . escape_string($atual["userdesc"]) . "'," . "usertype='" . escape_string($atual["usertype"]) . "'," . "userenabled='" . $atual["userenabled"] . "'," . "usermultilogin='******'," . "userpassword='******'," . "userip='" . $atual["userip"] . "'," . "userlastlogin="******"userlastlogin"] . "," . "userlastlogout=" . $atual["userlastlogout"] . "," . "usersession='" . $atual["usersession"] . "'," . "userpermitip='" . $atual["userpermitip"] . "'," . "updatetime=" . $atual["updatetime"] . " where contestnumber={$contest} and usersitenumber=" . $atual["usersitenumber"] . " and usernumber=" . $atual["usernumber"] . " and updatetime<" . $atual["updatetime"]);
                $upd++;
            } else {
                if ($situacao[$j] == "inserir") {
                    DBExec($c, "insert into usertable (username, userfullname, userdesc, usertype, userenabled, usermultilogin, " . "userpassword, userip, userlastlogin, userlastlogout, usersession, userpermitip, updatetime, " . "contestnumber, usersitenumber, usernumber) values (" . "'" . escape_string($atual["username"]) . "'," . "'" . escape_string($atual["userfullname"]) . "'," . "'" . escape_string($atual["userdesc"]) . "'," . "'" . $atual["usertype"] . "'," . "'" . $atual["userenabled"] . "'," . "'" . $atual["usermultilogin"] . "'," . "'" . $atual["userpassword"] . "'," . "'" . $atual["userip"] . "'," . $atual["userlastlogin"] . "," . $atual["userlastlogout"] . "," . "'" . $atual["usersession"] . "'," . "'" . $atual["userpermitip"] . "'," . $atual["updatetime"] . ",{$contest}," . $atual["usersitenumber"] . "," . $atual["usernumber"] . ")");
                    $ins++;
                }
            }
        }
        echo "   deletions={$del}, updates={$upd}, insertions={$ins}\n\n";
        // sincronizando clars
        $r = DBExec($t, "select * from clartable where contestnumber={$contest} and clarsitenumber={$site}");
        $rr = DBExec($c, "select * from clartable where contestnumber={$contest} and clarsitenumber={$site}");
        $n = DBnLines($r);
        $nn = DBnLines($rr);
        echo "clars: external(site={$site}, reading={$site})={$n}, local={$nn}\n";
        for ($k = 0; $k < $nn; $k++) {
            $needed[$k] = false;
        }
        for ($j = 0; $j < $n; $j++) {
            $la = DBRow($r, $j);
            for ($k = 0; $k < $nn; $k++) {
                $aqui = DBRow($rr, $k);
                if ($la["clarnumber"] == $aqui["clarnumber"] && $la["contestnumber"] == $aqui["contestnumber"] && $la["clarsitenumber"] == $aqui["clarsitenumber"]) {
                    $needed[$k] = true;
                    if ($la["updatetime"] > $aqui["updatetime"]) {
                        $situacao[$j] = "atualizar";
                    } else {
                        $situacao[$j] = "ok";
                    }
                    break;
                }
            }
            if ($k >= $nn) {
                $situacao[$j] = "inserir";
            }
        }
        $del = 0;
        for ($k = 0; $k < $nn; $k++) {
            $atual = DBRow($rr, $k);
            if (!$needed[$k]) {
                DBExec($c, "delete from clartable where contestnumber={$contest} and clarsitenumber={$site} and clarnumber=" . $atual["clarnumber"]);
                $del++;
            }
        }
        $upd = 0;
        $ins = 0;
        for ($j = 0; $j < $n; $j++) {
            $atual = DBRow($r, $j);
            if ($atual["claranswer"] == "") {
                $atual["claranswer"] = "null";
            } else {
                $atual["claranswer"] = "'" . escape_string($atual["claranswer"]) . "'";
            }
            if ($atual["clarjudge"] == "") {
                $atual["clarjudge"] = "null";
            }
            if ($atual["clarjudgesite"] == "") {
                $atual["clarjudgesite"] = "null";
            }
            if ($atual["updatetime"] == "") {
                $atual["updatetime"] = time();
            }
            if ($situacao[$j] == "atualizar") {
                DBExec($c, "update clartable set " . "usernumber=" . $atual["usernumber"] . "," . "clardate=" . $atual["clardate"] . "," . "clardatediff=" . $atual["clardatediff"] . "," . "clardatediffans=" . $atual["clardatediffans"] . "," . "clarproblem=" . $atual["clarproblem"] . "," . "clardata='" . escape_string($atual["clardata"]) . "'," . "claranswer=" . $atual["claranswer"] . "," . "clarstatus='" . escape_string($atual["clarstatus"]) . "'," . "clarjudge=" . $atual["clarjudge"] . "," . "clarjudgesite=" . $atual["clarjudgesite"] . "," . "updatetime=" . $atual["updatetime"] . " where contestnumber={$contest} and clarsitenumber=" . $atual["clarsitenumber"] . " and clarnumber=" . $atual["clarnumber"] . " and updatetime<" . $atual["updatetime"]);
                $upd++;
            } else {
                if ($situacao[$j] == "inserir") {
                    DBExec($c, "insert into clartable (contestnumber, clarsitenumber, clarnumber, usernumber, clardate," . "clardatediff, clardatediffans, clarproblem, clardata, claranswer, clarstatus, clarjudge, clarjudgesite, updatetime) " . "values (" . $contest . "," . $atual["clarsitenumber"] . "," . $atual["clarnumber"] . "," . $atual["usernumber"] . "," . $atual["clardate"] . "," . $atual["clardatediff"] . "," . $atual["clardatediffans"] . "," . $atual["clarproblem"] . "," . "'" . escape_string($atual["clardata"]) . "'," . $atual["claranswer"] . "," . "'" . escape_string($atual["clarstatus"]) . "'," . $atual["clarjudge"] . "," . $atual["clarjudgesite"] . "," . $atual["updatetime"] . ")");
                    $ins++;
                }
            }
        }
        echo "   deletions={$del}, updates={$upd}, insertions={$ins}\n\n";
        // sincronizando clars
        $r = DBExec($t, "select * from clartable where contestnumber={$contest} and clarsitenumber={$localsite}");
        $rr = DBExec($c, "select * from clartable where contestnumber={$contest} and clarsitenumber={$localsite}");
        $n = DBnLines($r);
        $nn = DBnLines($rr);
        echo "clars: external(site={$site}, reading={$localsite})={$n}, local={$nn}\n";
        for ($k = 0; $k < $nn; $k++) {
            $needed[$k] = false;
        }
        for ($j = 0; $j < $n; $j++) {
            $la = DBRow($r, $j);
            for ($k = 0; $k < $nn; $k++) {
                $aqui = DBRow($rr, $k);
                if ($la["clarnumber"] == $aqui["clarnumber"] && $la["contestnumber"] == $aqui["contestnumber"] && $la["clarsitenumber"] == $aqui["clarsitenumber"]) {
                    $needed[$k] = true;
                    if ($la["updatetime"] > $aqui["updatetime"]) {
                        $situacao[$j] = "atualizar";
                    } else {
                        $situacao[$j] = "ok";
                    }
                    break;
                }
            }
            if ($k >= $nn) {
                $situacao[$j] = "inserir";
            }
        }
        $upd = 0;
        $ins = 0;
        for ($j = 0; $j < $n; $j++) {
            $atual = DBRow($r, $j);
            if ($atual["claranswer"] == "") {
                $atual["claranswer"] = "null";
            } else {
                $atual["claranswer"] = "'" . escape_string($atual["claranswer"]) . "'";
            }
            if ($atual["clarjudge"] == "") {
                $atual["clarjudge"] = "null";
            }
            if ($atual["clarjudgesite"] == "") {
                $atual["clarjudgesite"] = "null";
            }
            if ($atual["updatetime"] == "") {
                $atual["updatetime"] = time();
            }
            if ($situacao[$j] == "atualizar") {
                DBExec($c, "update clartable set " . "usernumber=" . $atual["usernumber"] . "," . "clardate=" . $atual["clardate"] . "," . "clardatediff=" . $atual["clardatediff"] . "," . "clardatediffans=" . $atual["clardatediffans"] . "," . "clarproblem=" . $atual["clarproblem"] . "," . "clardata='" . escape_string($atual["clardata"]) . "'," . "claranswer=" . $atual["claranswer"] . "," . "clarstatus='" . escape_string($atual["clarstatus"]) . "'," . "clarjudge=" . $atual["clarjudge"] . "," . "clarjudgesite=" . $atual["clarjudgesite"] . "," . "updatetime=" . $atual["updatetime"] . " where contestnumber={$contest} and clarsitenumber=" . $atual["clarsitenumber"] . " and clarnumber=" . $atual["clarnumber"] . " and updatetime<" . $atual["updatetime"]);
                $upd++;
            } else {
                if ($situacao[$j] == "inserir") {
                    $ins++;
                    echo "Clar inserts shouldn't exist (clarnumber=" . $atual["clarnumber"] . ")...\n";
                }
            }
        }
        echo "   updates={$upd}, insertions={$ins}\n\n";
        // sincronizando runs
        $r = DBExec($t, "select * from runtable where contestnumber={$contest} and runsitenumber={$site}");
        $rr = DBExec($c, "select * from runtable where contestnumber={$contest} and runsitenumber={$site}");
        $n = DBnLines($r);
        $nn = DBnLines($rr);
        echo "runs: external(site={$site}, reading={$site})={$n}, local={$nn}\n";
        for ($k = 0; $k < $nn; $k++) {
            $needed[$k] = false;
        }
        for ($j = 0; $j < $n; $j++) {
            $la = DBRow($r, $j);
            for ($k = 0; $k < $nn; $k++) {
                $aqui = DBRow($rr, $k);
                if ($la["runnumber"] == $aqui["runnumber"] && $la["contestnumber"] == $aqui["contestnumber"] && $la["runsitenumber"] == $aqui["runsitenumber"]) {
                    $needed[$k] = true;
                    if ($la["updatetime"] > $aqui["updatetime"]) {
                        $situacao[$j] = "atualizar";
                    } else {
                        $situacao[$j] = "ok";
                    }
                    break;
                }
            }
            if ($k >= $nn) {
                $situacao[$j] = "inserir";
            }
        }
        $del = 0;
        for ($k = 0; $k < $nn; $k++) {
            $atual = DBRow($rr, $k);
            if (!$needed[$k]) {
                $del++;
                DBExec($c, "delete from runtable where contestnumber={$contest} and runsitenumber={$site} and runnumber=" . $atual["runnumber"]);
            }
        }
        $upd = 0;
        $ins = 0;
        for ($j = 0; $j < $n; $j++) {
            $atual = DBRow($r, $j);
            /*
            			$r2 = DBExec ($c,"select * from runtable where contestnumber=$contest and runsitenumber=".$atual["runsitenumber"].
                                                    " and runnumber=".$atual["runnumber"]." for update");
            			if (DBnLines($r2)>0) {
            				$p = DBRow($r2, 0);
            				DB_lo_unlink($c, $p["rundata"]);
            			}
            */
            if ($atual["runjudge"] == "") {
                $atual["runjudge"] = "null";
            }
            if ($atual["runjudgesite"] == "") {
                $atual["runjudgesite"] = "null";
            }
            if ($atual["updatetime"] == "") {
                $atual["updatetime"] = time();
            }
            if ($situacao[$j] == "atualizar") {
                $upd++;
                DBExec($c, "update runtable set " . "usernumber=" . $atual["usernumber"] . "," . "rundate=" . $atual["rundate"] . "," . "rundatediff=" . $atual["rundatediff"] . "," . "rundatediffans=" . $atual["rundatediffans"] . "," . "runproblem=" . $atual["runproblem"] . "," . "runlangnumber=" . $atual["runlangnumber"] . "," . "runanswer=" . $atual["runanswer"] . "," . "runstatus='" . escape_string($atual["runstatus"]) . "'," . "runjudge=" . $atual["runjudge"] . "," . "runjudgesite=" . $atual["runjudgesite"] . "," . "runfilename='" . escape_string($atual["runfilename"]) . "'," . "updatetime=" . $atual["updatetime"] . " where contestnumber={$contest} and runsitenumber=" . $atual["runsitenumber"] . " and runnumber=" . $atual["runnumber"] . " and updatetime<" . $atual["updatetime"]);
            } else {
                if ($situacao[$j] == "inserir") {
                    $ins++;
                    DBExec($t, "begin work");
                    $in = DB_lo_open($t, $atual["rundata"], "r");
                    if (!$in) {
                        $o = "0";
                    } else {
                        $o = DB_lo_create($c);
                        $out = DB_lo_open($c, $o, "w");
                        while (($buf = DB_lo_read($in, 1000)) != false) {
                            DB_lo_write($out, $buf);
                        }
                        DB_lo_close($out);
                        DB_lo_close($in);
                        $in = DB_lo_open($t, $atual["rundata"], "r");
                        if (!$in) {
                            $o = "0";
                            LOGLevel("Run not saved as file (run=" . $atual["runnumber"] . ",site=" . $atual["runsitenumber"] . ",contest={$contest}", 1);
                        } else {
                            $sitess = $atual["runsitenumber"];
                            $nss = $atual["runnumber"];
                            $user = $atual["usernumber"];
                            $problem = $atual["runproblem"];
                            $filename = escape_string($atual["runfilename"]);
                            $ttimet = $atual["rundate"];
                            $fp = fopen("/tmp/boca/contest{$contest}.site{$sitess}.run{$nss}.user{$user}." . "problem{$problem}.time{$ttimet}.{$filename}", "w");
                            if ($fp) {
                                while (($buf = DB_lo_read($in, 1000)) != false) {
                                    fwrite($fp, $buf);
                                }
                                fclose($fp);
                                $fp = fopen("/tmp/check/contest{$contest}.site{$sitess}.run{$nss}.user{$user}." . "problem{$problem}.time{$ttimet}.{$filename}.check", "w");
                                if ($fp) {
                                    fwrite($fp, "1");
                                    fclose($fp);
                                } else {
                                    LOGLevel("Run not saved as check file (run=" . $atual["runnumber"] . ",site=" . $atual["runsitenumber"] . ",contest={$contest}", 1);
                                }
                            } else {
                                LOGLevel("Run not saved as file (run=" . $atual["runnumber"] . ",site=" . $atual["runsitenumber"] . ",contest={$contest}", 1);
                            }
                            DB_lo_close($out);
                        }
                    }
                    DBExec($c, "insert into runtable (contestnumber, runsitenumber, runnumber, usernumber, rundate," . "rundatediff, rundatediffans, runproblem, runfilename, rundata, runanswer, runstatus, runjudge," . "runjudgesite, runlangnumber, updatetime) " . "values (" . $contest . "," . $atual["runsitenumber"] . "," . $atual["runnumber"] . "," . $atual["usernumber"] . "," . $atual["rundate"] . "," . $atual["rundatediff"] . "," . $atual["rundatediffans"] . "," . $atual["runproblem"] . "," . "'" . escape_string($atual["runfilename"]) . "',{$o}," . $atual["runanswer"] . "," . "'" . escape_string($atual["runstatus"]) . "'," . $atual["runjudge"] . "," . $atual["runjudgesite"] . "," . $atual["runlangnumber"] . "," . $atual["updatetime"] . ")");
                    DBExec($t, "commit work");
                }
            }
        }
        echo "   deletions={$del}, updates={$upd}, insertions={$ins}\n\n";
        // sincronizando runs
        $r = DBExec($t, "select * from runtable where contestnumber={$contest} and runsitenumber={$localsite}");
        $rr = DBExec($c, "select * from runtable where contestnumber={$contest} and runsitenumber={$localsite}");
        $n = DBnLines($r);
        $nn = DBnLines($rr);
        echo "runs: external(site={$site}, reading={$localsite})={$n}, local={$nn}\n";
        for ($k = 0; $k < $nn; $k++) {
            $needed[$k] = false;
        }
        for ($j = 0; $j < $n; $j++) {
            $la = DBRow($r, $j);
            for ($k = 0; $k < $nn; $k++) {
                $aqui = DBRow($rr, $k);
                if ($la["runnumber"] == $aqui["runnumber"] && $la["contestnumber"] == $aqui["contestnumber"] && $la["runsitenumber"] == $aqui["runsitenumber"]) {
                    $needed[$k] = true;
                    if ($la["updatetime"] > $aqui["updatetime"]) {
                        $situacao[$j] = "atualizar";
                        if ($la["runanswer"] != "") {
                            $rrr = DBExec($c, "select * from answertable where answernumber=" . $la["runanswer"] . " and contestnumber=" . $la["contestnumber"]);
                            $ans = DBnLines($rrr) > 0 ? DBRow($rrr, 0) : null;
                            if ($ans == null) {
                                echo "Problem with the answer table. Unable to send balloon because the answer was " . "not found (run=" . $la["runnumber"] . ", site=" . $la["runsite"] . ", contest=" . $la["contestnumber"] . ", answer=" . $la["runanswer"] . ").";
                                $yesla = 'x';
                            } else {
                                $yesla = $ans["yes"];
                            }
                        } else {
                            $yesla = 'f';
                        }
                        if ($aqui["runanswer"] != "") {
                            $rrr = DBExec($c, "select * from answertable where answernumber=" . $aqui["runanswer"] . " and contestnumber=" . $aqui["contestnumber"]);
                            $ans = DBnLines($rrr) > 0 ? DBRow($rrr, 0) : null;
                            if ($ans == null) {
                                echo "Problem with the answer table. Unable to send balloon because the answer was " . "not found (run=" . $aqui["runnumber"] . ", site=" . $aqui["runsite"] . ", contest=" . $aqui["contestnumber"] . ", answer=" . $aqui["runanswer"] . ").";
                                $yesaqui = 'x';
                            } else {
                                $yesaqui = $ans["yes"];
                            }
                        } else {
                            $yesaqui = 'f';
                        }
                        if ($yesla == 't' && $yesaqui == 'f') {
                            $rrr = DBExec($c, "select * from sitetable where contestnumber=" . $aqui["contestnumber"] . " and sitenumber={$localsite}");
                            if (DBnLines($rrr) <= 0) {
                                echo "Site info not found (contest={$aqui["contestnumber"]}, site={$localsite}).";
                            } else {
                                $b = DBRow($rrr, 0);
                                $ti = $b["sitestartdate"];
                                $tempo = time();
                                $ta = $tempo - $ti;
                                $tf = $b["sitelastmileanswer"];
                                //						                if ($ta < $tf) {
                                $rrr = DBExec($c, "select * from usertable where contestnumber=" . $aqui["contestnumber"] . " and usersitenumber={$localsite} and usernumber=" . $aqui["usernumber"]);
                                if (DBnLines($rrr) <= 0) {
                                    echo "User info not found (contest={$aqui["contestnumber"]}, " . "site={$localsite}, user={$aqui["runusernumber"]}).";
                                } else {
                                    $u = DBRow($rrr, 0);
                                    $rrr = DBExec($c, "select * from problemtable where contestnumber=" . $aqui["contestnumber"] . " and problemnumber=" . $aqui["runproblem"]);
                                    if (DBnLines($rrr) <= 0) {
                                        echo "Problem info not found (contest={$aqui["contestnumber"]}, " . "problem={$aqui["runproblem"]}).";
                                    } else {
                                        $p = DBRow($rrr, 0);
                                        mail("balloon@mainserver", "YES: team=" . $u["username"] . ", problem=" . $p["problemname"], "User " . $u["username"] . " should receive a balloon for " . $p["problemfullname"] . "\n");
                                    }
                                }
                                //								}
                            }
                        } else {
                            if ($yesla == 'f' && $yesaqui == 't') {
                                $rrr = DBExec($c, "select * from usertable where contestnumber=" . $aqui["contestnumber"] . " and usersitenumber={$localsite} and usernumber=" . $aqui["usernumber"]);
                                if (DBnLines($rrr) <= 0) {
                                    echo "User info not found (contest={$aqui["contestnumber"]}, " . "site={$localsite}, user={$aqui["runusernumber"]}).";
                                } else {
                                    $u = DBRow($rrr, 0);
                                    $rrr = DBExec($c, "select * from problemtable where contestnumber=" . $aqui["contestnumber"] . " and problemnumber=" . $aqui["runproblem"]);
                                    if (DBnLines($rrr) <= 0) {
                                        echo "Problem info not found (contest={$aqui["contestnumber"]}, " . "problem={$aqui["runproblem"]}).";
                                    } else {
                                        $p = DBRow($rrr, 0);
                                        mail("balloon@mainserver", "NO: team=" . $u["username"] . ", problem=" . $p["problemname"], "Remove the balloon from user " . $u["username"] . " for " . $p["problemfullname"] . "\n");
                                    }
                                }
                            }
                        }
                    } else {
                        $situacao[$j] = "ok";
                    }
                    break;
                }
            }
            if ($k >= $nn) {
                $situacao[$j] = "inserir";
            }
        }
        $upd = 0;
        $ins = 0;
        for ($j = 0; $j < $n; $j++) {
            $atual = DBRow($r, $j);
            if ($atual["runjudge"] == "") {
                $atual["runjudge"] = "null";
            }
            if ($atual["runjudgesite"] == "") {
                $atual["runjudgesite"] = "null";
            }
            if ($atual["updatetime"] == "") {
                $atual["updatetime"] = time();
            }
            if ($situacao[$j] == "atualizar") {
                $upd++;
                DBExec($c, "update runtable set " . "usernumber=" . $atual["usernumber"] . "," . "rundate=" . $atual["rundate"] . "," . "rundatediff=" . $atual["rundatediff"] . "," . "rundatediffans=" . $atual["rundatediffans"] . "," . "runproblem=" . $atual["runproblem"] . "," . "runlangnumber=" . $atual["runlangnumber"] . "," . "runanswer=" . $atual["runanswer"] . "," . "runstatus='" . escape_string($atual["runstatus"]) . "'," . "runjudge=" . $atual["runjudge"] . "," . "runjudgesite=" . $atual["runjudgesite"] . "," . "runfilename='" . escape_string($atual["runfilename"]) . "'," . "updatetime=" . $atual["updatetime"] . " where contestnumber={$contest} and runsitenumber=" . $atual["runsitenumber"] . " and runnumber=" . $atual["runnumber"] . " and updatetime<" . $atual["updatetime"]);
            } else {
                if ($situacao[$j] == "inserir") {
                    $ins++;
                    echo "Run Inserts shouldn't exist (run=" . $atual["runnumber"] . ")...";
                }
            }
        }
        echo "   updates={$upd}, insertions={$ins}\n\n";
        DBExec($c, "commit work");
        DBClose($t);
    }
    DBClose($c);
}
function Logout()
{
    global $db, $TBLName;
    DBConnect();
    $db->Execute("DELETE FROM {$TBLName}tmp_invoice WHERE USERNAME='******'Username']}'");
    $db->Execute("DELETE FROM {$TBLName}tmp_offer WHERE USERNAME='******'Username']}'");
    DBClose();
}