function validate_event_creation($ticker, $code) { validate_ticker_passcode($ticker, $code); if (check_ticker_finished($ticker)) { throw new Exception(); } if (!check_ticker_running($ticker)) { throw new Exception(); } }
/** * @param int id The liveticker's id. * @param string code The passcode for the liveticker. * @return bool Whether or not the ticker is running after the toggle, or null if toggling failed. */ function toggle_ticker_running($id, $code) { //this is only possible under the following circumstances: // //1. The current event hasn't started yet. In this case, the first half will be started. // //2. The current event is in overtime (either first or second half). in this case, // the event is going to be stopped. If it's in the second half's overtime, the // event is going to be marked as finished. TODO: if tie, ask for match extension // //3. the current event is in the half time break. In this case, the second half will be started. global $con; if (check_ticker_finished($id)) { error_log("ticker finished"); return null; //disallow if finished } $curtime = get_current_time($id); if (check_ticker_running($id)) { //if ticker is running, it can only be toggled if in overtime if ($curtime["overtime"] == 0) { error_log("not in overtime"); return null; } } $running = check_ticker_running($id); $new_running = !$running; $timestamp = time(); $sql = "INSERT INTO timer VALUES (?, ?, ?)"; $stmt = $con->prepare($sql); $stmt->bindParam(1, $id); $stmt->bindParam(2, $timestamp); $stmt->bindParam(3, $new_running); $stmt->execute(); if (sizeof(get_timing_values($id)) >= 4) { $sql = "UPDATE tickers SET finished=1 WHERE id=?"; $stmt = $con->prepare($sql); $stmt->bindParam(1, $id); $stmt->execute(); } $sql = "UPDATE tickers SET running=? WHERE id=?"; $stmt = $con->prepare($sql); $stmt->bindParam(1, $new_running); $stmt->bindParam(2, $id); $stmt->execute(); error_log("ne running " . $new_running); return $new_running; }