Пример #1
0
function DBUpdateContest($param, $c = null)
{
    if (isset($param['contestnumber']) && !isset($param['number'])) {
        $param['number'] = $param['contestnumber'];
    }
    $ac = array('number');
    $ac1 = array('updatetime', 'atualizasites', 'scorelevel', 'mainsite', 'localsite', 'mainsiteurl', 'keys', 'unlockkey', 'name', 'active', 'lastmileanswer', 'lastmilescore', 'penalty', 'startdate', 'duration', 'maxfilesize');
    $type['number'] = 1;
    $type['scorelevel'] = 1;
    $type['startdate'] = 1;
    $type['updatetime'] = 1;
    $type['duration'] = 1;
    $type['penalty'] = 1;
    $type['maxfilesize'] = 1;
    $type['active'] = 1;
    $type['lastmilescore'] = 1;
    $type['lastmileanswer'] = 1;
    $type['mainsite'] = 1;
    $type['localsite'] = 1;
    foreach ($ac as $key) {
        if (!isset($param[$key])) {
            MSGError("DBUpdateContest param error: {$key} is not set");
            return false;
        }
        ${$key} = sanitizeText($param[$key]);
        if (isset($type[$key]) && !is_numeric($param[$key])) {
            MSGError("DBUpdateContest param error: {$key} is not numeric");
            return false;
        }
    }
    $name = '';
    $atualizasites = false;
    $mainsiteurl = '';
    $keys = '';
    $unlockkey = '';
    $mainsite = -1;
    $duration = -1;
    $lastmilescore = -1;
    $lastmileanswer = -1;
    $penalty = -1;
    $maxfilesize = -1;
    $active = 0;
    $startdate = -1;
    $localsite = -1;
    $updatetime = -1;
    foreach ($ac1 as $key) {
        if (isset($param[$key])) {
            ${$key} = sanitizeText($param[$key]);
            if (isset($type[$key]) && !is_numeric($param[$key])) {
                MSGError("DBUpdateContest param error: {$key} is not numeric");
                return false;
            }
        }
    }
    $t = time();
    if ($updatetime <= 0) {
        $updatetime = $t;
    }
    $cw = false;
    if ($c == null) {
        $cw = true;
        $c = DBConnect();
        DBExec($c, "begin work", "DBUpdateContest(begin)");
    }
    $a = DBGetRow("select * from contesttable where contestnumber={$number} for update", 0, $c, "DBUpdateContest(get for update)");
    if ($a == null) {
        MSGError("Error updating contest {$number} -- not found");
        LOGError("DBUpdateContest contest {$number} not found");
        return false;
    }
    $ret = 1;
    if ($active == 1) {
        $ret = 2;
        DBExec($c, "update contesttable set contestactive='f'", "DBUpdateContest(deactivate)");
        DBExec($c, "update contesttable set contestactive='t' where contestnumber={$number}", "DBUpdateContest(active)");
        LOGLevel("User " . $_SESSION["usertable"]["username"] . "/" . $_SESSION["usertable"]["usersitenumber"] . " activated contest {$number}.", 2);
    }
    $chd = false;
    if ($updatetime > $a['updatetime']) {
        $ret = 2;
        $sql = "update contesttable set updatetime=" . $updatetime;
        if ($name != '') {
            $sql .= ", contestname='{$name}'";
        }
        if ($maxfilesize > 0) {
            $sql .= ", contestmaxfilesize={$maxfilesize}";
        }
        if ($penalty > 0) {
            $sql .= ", contestpenalty={$penalty}";
        }
        if ($lastmileanswer > 0) {
            $sql .= ", contestlastmileanswer={$lastmileanswer}";
        }
        if ($lastmilescore > 0) {
            $sql .= ", contestlastmilescore={$lastmilescore}";
        }
        if ($startdate > 0) {
            $sql .= ", conteststartdate={$startdate}";
        }
        if ($duration > 0) {
            $sql .= ", contestduration={$duration}";
        }
        if ($mainsite > 0) {
            $sql .= ", contestmainsite={$mainsite}";
        }
        if ($mainsiteurl != '') {
            $sql .= ", contestmainsiteurl='{$mainsiteurl}'";
        }
        if ($unlockkey != '') {
            $sql .= ", contestunlockkey='{$unlockkey}'";
        }
        if ($keys != '') {
            $sql .= ", contestkeys='{$keys}'";
        }
        if ($localsite > 0) {
            $sql .= ", contestlocalsite={$localsite}";
        }
        $sql .= " where contestnumber={$number}";
        DBExec($c, $sql, "DBUpdateContest(update contest)");
        if ($localsite > 0) {
            $param['contestnumber'] = $number;
            $param['sitename'] = 'Local site';
            if ($duration > 0) {
                $param['siteduration'] = $duration;
            }
            if (isset($param['scorelevel'])) {
                $param['sitescorelevel'] = $scorelevel;
            }
            if ($lastmileanswer > 0) {
                $param['sitelastmileanswer'] = $lastmileanswer;
            }
            if ($lastmilescore > 0) {
                $param['sitelastmilescore'] = $lastmilescore;
            }
            $param['number'] = $localsite;
            DBNewSite($number, $c, $param);
        }
        if ($mainsite > 0) {
            $param['contestnumber'] = $number;
            $param['sitename'] = 'Main site';
            if ($duration > 0) {
                $param['siteduration'] = $duration;
            }
            if (isset($param['scorelevel'])) {
                $param['sitescorelevel'] = $scorelevel;
            }
            if ($lastmileanswer > 0) {
                $param['sitelastmileanswer'] = $lastmileanswer;
            }
            if ($lastmilescore > 0) {
                $param['sitelastmilescore'] = $lastmilescore;
            }
            $param['number'] = $mainsite;
            DBNewSite($number, $c, $param);
        }
        if ($atualizasites) {
            $s = DBAllSiteInfo($number, $c);
            for ($i = 0; $i < count($s); $i++) {
                $param = $s[$i];
                $param['contestnumber'] = $number;
                if ($duration > 0) {
                    $param['siteduration'] = $duration;
                }
                if (isset($param['scorelevel'])) {
                    $param['sitescorelevel'] = $scorelevel;
                }
                if ($lastmileanswer > 0) {
                    $param['sitelastmileanswer'] = $lastmileanswer;
                }
                if ($lastmilescore > 0) {
                    $param['sitelastmilescore'] = $lastmilescore;
                }
                unset($param['updatetime']);
                DBUpdateSite($param, $c);
                if ($startdate > 0) {
                    $p = array();
                    $p['contest'] = $number;
                    $p['site'] = $s[$i]["sitenumber"];
                    $p['start'] = $startdate;
                    DBRenewSiteTime($p, $c);
                }
            }
        }
        $chd = true;
    }
    if ($cw) {
        DBExec($c, "commit work", "DBUpdateContest(commit)");
    }
    if ($chd) {
        LOGLevel("User " . $_SESSION["usertable"]["username"] . "/" . $_SESSION["usertable"]["usersitenumber"] . " changed the contest {$number} settings.", 2);
    }
    return $ret;
}
Пример #2
0
        k=document.form1.site[document.form1.site.selectedIndex].value;
	if(k=='new') newsite();
        else document.location='site.php?site='+k;
      } else {
        document.location='site.php?site='+n;
      }
    }
  </script>
  <center>
    <table border="0">
      <tr>
        <td width="35%" align=right>Site number:</td>
        <td width="65%">
<?php 
echo "<select onChange=\"sitech()\" name=\"site\">\n";
$cs = DBAllSiteInfo($_SESSION["usertable"]["contestnumber"]);
for ($i = 0; $i < count($cs); $i++) {
    echo "<option value=\"" . $cs[$i]["sitenumber"] . "\" ";
    if ($site == $cs[$i]["sitenumber"]) {
        echo "selected";
    }
    echo ">" . $cs[$i]["sitenumber"] . "</option>\n";
}
if ($main) {
    echo "<option value=\"new\">new</option>\n";
}
echo "</select>\n";
//else
//  echo "<input type=\"text\" readonly name=\"site\" value=\"$site\" size=\"2\" maxlength=\"2\" />\n";
if ($ct["contestlocalsite"] == $site) {
    echo "(local site)";