diff --git a/config/dates.php b/config/dates.php index ac3d6a06..db80d5b7 100644 --- a/config/dates.php +++ b/config/dates.php @@ -27,13 +27,16 @@ send_header("Configuration - Dates"); echo "<< ".i18n("Back to Configuration")."
"; +$error_ids = array(); + if($_POST['action']=="save") { if($_POST['savedates']) { foreach($_POST['savedates'] as $key=>$val) { - mysql_query("UPDATE dates SET date='".mysql_escape_string(stripslashes($val))."' WHERE year='".$config['FAIRYEAR']."' AND id='$key'"); + $v = mysql_escape_string(stripslashes($val)); + mysql_query("UPDATE dates SET date='$v' WHERE year='".$config['FAIRYEAR']."' AND id='$key'"); } } echo happy(i18n("Dates successfully saved")); @@ -45,13 +48,70 @@ echo ""; echo ""; +/* List the dates in the order we would like them to appear */ +$dates = array('fairdate' => array() , + 'regopen' => array(), + 'regclose' => array(), + 'postparticipants' => array(), + 'postwinners' => array(), + 'judgeregopen' => array(), + 'judgeregclose' => array(), + 'specawardregopen' => array(), + 'specawardregclose' => array()); + +/* Now copy the SQL data into the above array */ $q=mysql_query("SELECT * FROM dates WHERE year='".$config['FAIRYEAR']."' ORDER BY date"); while($r=mysql_fetch_object($q)) { - echo ""; - + $dates[$r->name]['description'] = $r->description; + $dates[$r->name]['id'] = $r->id; + $dates[$r->name]['date'] = $r->date; + $v = $r->date; + /* See if $v is something resembling a valid date */ + if(!ereg("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $v, $d)) { + $error_ids[$r->id] = "Invalid date format"; + } else if($d[3]==0 || $d[2]==0 || $d[1]==0) { + $error_ids[$r->id] = "Invalid date"; + } } + + +function chkafter($d1, $d2) +{ + global $dates; + global $error_ids; + + $id2 = $dates[$d2]['id']; + + /* Parse both dates 1, 2, 3, 4, 5, 6 */ + ereg("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2}) ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})",$dates[$d1]['date'], $p1); + ereg("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2}) ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})",$dates[$d2]['date'], $p2); + + // int mktime ( [int hour [, int minute [, int second [, int month [, int day [, int year [, int is_dst]]]]]]] ) + $u1 = mktime($p1[4], $p1[5], $p1[6], $p1[2], $p1[3], $p1[1]); + $u2 = mktime($p2[4], $p2[5], $p2[6], $p2[2], $p2[3], $p2[1]); + + if($u1 > $u2) { + /* Insert an error for $u2 */ + $error_ids[$id2] = i18n("Must come after \"%1\"", array($dates[$d1]['description'])); + } +} + +chkafter('regopen','regclose'); +chkafter('judgeregopen','judgeregclose'); +chkafter('specawardregopen','specawardregclose'); +chkafter('fairdate','postwinners'); + + /* And print the table with all the info in the correct order */ +foreach($dates as $d) { + $e = ''; + if($error_ids[$d['id']]) { + $e = "* ".i18n($error_ids[$d['id']]).""; + } + echo ""; +} + echo "

".i18n("Dates for fair year %1",array($config['FAIRYEAR']),array("fair year"))."

".i18n($r->description)."id]\" value=\"$r->date\" />
".i18n($d['description'])."{$e}
"; echo "\n"; echo "";