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; }
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)";