diff --git a/cal.php b/cal.php index 7ee5f8508..a29fb3685 100644 --- a/cal.php +++ b/cal.php @@ -1,331 +1,225 @@ -

Sorry, the event calendar is temporarily unavailable.

-", date("F j, Y", $date), "\n"; + foreach ($events as $event) { + display_event($event, 0); + } + $begun++; + } + else { + $errors[] = "There are no events for the specified date (".date("F j, Y",$date).")."; } - */ - header("Location: http://php2.chek.com/cal.php"); - exit; } - if (!isset($format)) { - $format = 'html'; + else { + $errors[] = "The specified date (".htmlentities("$cy/$cm/$cd").") was not valid."; + unset($cm); unset($cd); unset($cy); } - - if ($format == 'html') { - commonHeader("Event Calendar",1); - - include_once 'cvs-auth.inc'; - if (isset($save) && isset($pw)) { # non-developers don't have $user set - setcookie("MAGIC_COOKIE",base64_encode("$user:$pw"),time()+3600*24*20,'/'); - } - if (isset($MAGIC_COOKIE) && !isset($user) && !isset($pw)) { - list($user,$pw) = explode(":", base64_decode($MAGIC_COOKIE)); - } - } - - @mysql_connect('localhost') or die('unable to connect to database'); - @mysql_select_db('php3'); - - $re = array(1=>'First',2=>'Second',3=>'Third',4=>'Fourth',-1=>'Last',-2=>'2nd Last',-3=>'3rd Last'); -/* -CREATE TABLE phpcal ( - id int(8) NOT NULL, - sdato date, - edato date, - recur char(12), - sdesc char(16) NOT NULL, - url varchar(128), - ldesc text, - tipo int(1) NOT NULL, - approved int(1) NOT NULL DEFAULT 0, - app_by char(16), - PRIMARY KEY(id), - INDEX (sdato), - INDEX (edato) -) -*/ - /* - * Find the first, second, third, last, second-last etc. weekday of a month - * - * args: day 1 = Monday - * which 1 = first - * 2 = second - * 3 = third - * -1 = last - * -2 = second-last - */ - function weekday($year, $month, $day, $which) { - $ts = mktime(12,0,0,$month+(($which>0)?0:1),($which>0)?1:0,$year); - $done = false; - $match = 0; - $inc = 3600*24; - while(!$done) { - if(strftime('%w',$ts)==$day-1) { - $match++; - } - if($match==abs($which)) $done=true; - else $ts += (($which>0)?1:-1)*$inc; - } - return $ts; - } - - function load_unapproved_events() { - global $re; - $days = days(); - $result = mysql_query("select phpcal.*, country.name as name from phpcal, country where phpcal.country=country.id and approved=0 order by sdato"); - if(!$result) echo mysql_error(); - else { - while($row = mysql_fetch_array($result)) { - switch($row['tipo']) { - case 1: - $events[] = array($row['id'],$row['sdato'],$row['sdesc'],$row['ldesc'],$row['url'], $row['name'], $row['category']); - break; - case 2: - $events[] = array($row['id'],$row['sdato'].' to '.$row['edato'],$row['sdesc'],$row['ldesc'],$row['url'], $row['name'], $row['category']); - break; - case 3: - list($which,$day) = explode(':',$row['recur']); - $events[] = array($row['id'],'Every '.$re[(int)$which].' '.$days[$day],$row['sdesc'],$row['ldesc'],$row['url'], $row['name'], $row['category']); - break; - } - } - } - return $events; - } - - function load_month($year, $month) { - $result = mysql_query("select * from phpcal where (((MONTH(sdato)=$month or MONTH(edato)=$month) and (YEAR(sdato)=$year or YEAR(edato)=$year) and tipo<3) or tipo=3) and approved=1"); - if(!$result) echo mysql_error(); - else { - while($row = mysql_fetch_array($result)) { - switch($row['tipo']) { - case 1: - list(,,$dd) = explode('-',$row['sdato']); - $events[(int)$dd][] = $row; - break; - case 2: - list(,$mm,$dd) = explode('-',$row['sdato']); - list(,$m2,$d2) = explode('-',$row['edato']); - if((int)$mm==(int)$m2) { - for($i=(int)$dd; $i<=(int)$d2; $i++) { - $events[$i][] = $row; - } - } elseif((int)$mm==$month) { - for($i=(int)$dd; $i<32; $i++) { - $events[$i][] = $row; - } - } else { - for($i=1; $i<=(int)$d2; $i++) { - $events[$i][] = $row; - } - } - break; - case 3: - list($which,$dd) = explode(':',$row['recur']); - $ts = weekday($year,$month,$dd,$which); - $events[(int)strftime('%d',$ts)][] = $row; - break; - } - } - } - return($events); - } - - function start_month($year, $month) { - $ts = mktime(12,0,0,$month,1,$year); - return strftime('%w',$ts); - } - - function last_day($year,$month) { - $ts = mktime(12,0,0,$month+1,0,$year); - return strftime('%e',$ts); - } - - function months() { - static $months=NULL; - - if(!$months) for($i=1;$i<=12;$i++) { - $months[$i] = strftime('%B',mktime(12,0,0,$i,1)); - } - return $months; - } - - /* returns array of Days starting with 1 = Sunday */ - function days() { - static $days=NULL; - if(!$days) for($i=1;$i<=7;$i++) { - $days[$i] = strftime('%A',mktime(12,0,0,4,$i,2001)); - } - return $days; - } - - function draw_cal($y,$m) { - global $ev, $cm, $cy; - - $months = months(); - $m=(int)$m; - $month=$months[$m]; - $events = load_month($y,$m); - $pm=$m-1; - $nm=$m+1; - $py = $ny = $y; - if($m==1) { - $pm = 12; - $py = $y-1; - } else { - $pm = $m-1; - } - if($m==12) { - $nm = 1; - $ny = $y+1; - } - ?> - - - - +
+

If you would like to suggest an upcoming event to be listed on this +calendar, you can use our event submission +form.

+

You can click on each of the events for details, or on the number for a day +to get the details for all of the events taking place that day.

+
Event Calendar"; - draw_cal($cy,$cm); - echo "
"; - commonFooter(); - break; +$events = load_events($date,1); - case 'csv': - while($nm) { - $entries = load_month($cy,$cm); - $last = last_day($cy,$cm); - for($i=$cd; $i<=$last; $i++) { - if(is_array($entries[$i])) foreach($entries[$i] as $row) { - if($data) $data.="\n"; - $data .= "$i,$cm,$cy,\"http://php.net/cal.php?cm=$cm&cy=$cy&ev=".$row['id']."\",\"".addslashes($row['sdesc']).'"'; - } - } - $nm--; - $cd = 1; - if($nm) { - $cm++; - if($cm==13) { $cy++; $cm=1; } - } - } - echo $data; - break; +if ($errors) display_errors($errors); + +# beginning and end of this month +$bom = mktime(0,0,1,$cm, 1,$cy); +$eom = mktime(0,0,1,$cm+1,0,$cy); + +# last month and next month +$lm = mktime(0,0,1,$cm,0,$cy); +$nm = mktime(0,0,1,$cm+1,1,$cy); + +echo '
- - -
- -30) || ($start==6 && $last>29)) $rows=7; else $rows=6; - for($j=0;$j<$rows; $j++) { - echo ''; - for($i=1; $i<=7; $i++) { - if($j==0) echo '\n"; - else { - if($j==1 && ($i-1)==$start) $day = 1; - if($day && $day<=$last) { - $label=$day; - $col = '#f0f0f0'; - $bcol=$col; - $data = ' '; - if(is_array($events[$day])) { - $data = ''; - foreach($events[$day] as $row) { - if($data) $data .= "
\n"; - $data .= "".$row['sdesc'].''; - } - } - } - else { $label=''; $data=''; $col='#d0d0d0'; $bcol=$col; } - echo "\n"; - } - if($day) $day++; - } - echo "\n"; - } -?> -
'.$days[$i].""; - echo "
$label
$data
- -\n"; } -function draw_event($ev) { - global $re; - $stmt = "select phpcal.*,country.name as cname from phpcal,country where phpcal.country = country.id and phpcal.id=$ev"; - $result = mysql_query($stmt); - if(!$result) echo mysql_error(); - else $event = mysql_fetch_array($result); - $days=days(); - $cat = $event['category']; - switch($cat) { - case 1: - $category = "regional"; - break; - case 2: - $category = "national"; - break; - case 3: - $category = "international"; - break; - default: - $category = "unknown"; - } -?> -
- - - - - -
-Country: ". $event['cname'] : "" ; - -echo ((!isset($category)) || ($category != "unknown")) ? "
Event Type: ". $category : "" ; - -if(strlen($event['url'])) { - echo "
URL: ".$event['url']."\n"; +if ($cm && $cy && !checkdate($cm,1,$cy)) { + $errors[] = "The specified year and month (".htmlentities("$cy, $cm").") are not valid."; + unset($cm); unset($cy); } + +if (!$cm) $cm = date("m"); +if (!$cy) $cy = date("Y"); + +$date = mktime(0,0,1,$cm,1,$cy); + +if (!$begun) { + commonHeader("Events: ".date("F Y", $date)); ?> -
- -
Approved by:
-
', + "\n", '', $lm), + '', $bom), + '', $nm), + "\n
%B, %Y', strftime('%B, %Y%B, %Y
\n"; + +# begin the calendar +echo '', + "\n",'',"\n"; +for ($i = 0; $i < 7; $i++) { + echo '\n"; +} +echo "\n"; + +# generate the requisite number of blank days to get things started +for ($days = $i = date("w",$bom); $i > 0; $i--) { + echo ''; +} + +for ($i = 1; $i <= date("t",$bom); $i++) { + echo ''; + if (++$days % 7 == 0) echo "\n"; +} + +# generate the requisite number of blank days to wrap things up +for (; $days % 7; $days++) { + echo ''; +} +echo "\n
', date("l",mktime(0,0,1,4,$i+1,2001)), "
 ',$i,''; + display_events_for_day(date("Y-m-",$bom).sprintf("%02d",$i),$events); + echo '
 
\n"; + +commonFooter(); + +# FUNCTIONS + +/* generate the date on which a recurring event falls for a given month */ +/* $bom and $eom are the first and last day of the month to look at */ +function date_for_recur($recur,$day,$bom,$eom) { + /* $day == 1 == 'Sunday' == date("w",'some sunday')+1 */ + + if ($recur > 0) { /* ${recur}th $day of the month */ + $bomd = date("w",$bom) + 1; + $days = (($day - $bomd + 7) % 7) + (($recur - 1) * 7); + + return mktime(0,0,1, date("m",$bom), $days + 1, date("Y",$bom)); } + else { /* ${recur}th to last $day of the month */ + $eomd = date("w",$eom) + 1; + $days = (($eomd - $day + 7) % 7) + ((abs($recur) - 1) * 7); + + return mktime(0,0,1, date("m",$bom)+1, -$days, date("Y",$bom)); + } +} + +/* display a
for each of the events that fall on a given day */ +function display_events_for_day($day,$events) { + global $PHP_SELF,$cm,$cy; + foreach ($events as $event) { + if (($event['type'] == 2 && $event['start'] <= $day && $event['end'] >= $day) + || ($event['start'] == $day)) { + echo '
', + '', + htmlentities($event['sdesc']), + '
'; + } + } +} + +/* load a single event from the event list, by id */ +function load_event($id) { + $fp = @fopen("backend/events.csv",'r'); + if (!$fp) return; + while (!feof($fp)) { + $event = read_event($fp); + if ($event['id'] == $id) { + fclose($fp); + return $event; + } + } + fclose($fp); + return; +} + +/* load a list of events, either for a particular day or a whole month */ +function load_events($from, $whole_month=0) { + /* we'll take advantage of the equality behavior of this date format */ + $from_date = date("Y-m-d", $from); + $bom = mktime(0,0,1,date("m",$from),1,date("Y",$from)); + $eom = mktime(0,0,1,date("m",$from)+1,0,date("Y",$from)); + $to_date = date("Y-m-d", $whole_month ? $eom : $from); + + $events = $seen = array(); + $fp = @fopen("backend/events.csv",'r'); + if (!$fp) return; + + while (!feof($fp)) { + $event = read_event($fp); + + if ($seen[$event['id']]++) continue; # only want each event once! + + switch ($event['type']) { + case 3: /* recurring event */ + $date = date_for_recur($event['recur'],$event['recur_day'],$bom,$eom); + $event['start'] = date("Y-m-d", $date); + /* falls through: now it is just like a single-day event */ + case 1: /* single-day event */ + if ($event['start'] >= $from_date && $event['start'] <= $to_date) { + $events[] = $event; + } + break; + case 2: /* multi-day event */ + if (($event['start'] >= $from_date && $event['start'] <= $to_date) + || ($event['end'] >= $from_date && $event['end'] <= $to_date) + || ($event['start'] <= $from_date && $event['end'] >= $to_date)) { + $events[] = $event; + } + break; + } + } + fclose($fp); + return $events; +} + +/* read an event from the event listing */ +function read_event($fp) { + list(,,,,$sdesc,$id,$ldesc,$url,$recur,$tipo,$sdato,$edato) + = fgetcsv($fp,8192); + list($recur,$recur_day) = explode(":",$recur,2); + return array( + 'id' => $id, + 'type' => $tipo, + 'start' => $sdato, + 'end' => $edato, + 'recur' => $recur, + 'recur_day' => $recur_day, + 'sdesc' => $sdesc, + 'url' => $url, + 'ldesc' => base64_decode($ldesc), + ); +} + ?> diff --git a/cal.sql b/cal.sql deleted file mode 100644 index e86782e0e..000000000 --- a/cal.sql +++ /dev/null @@ -1,256 +0,0 @@ -#drop table phpcal; -CREATE TABLE phpcal ( - id int(8) NOT NULL AUTO_INCREMENT, - sdato date, - edato date, - recur char(12), - sdesc char(16) NOT NULL, - url varchar(128), - ldesc text, - tipo int(1) NOT NULL, - country char(3) NOT NULL, - category TINYINT NOT NULL, - approved int(1) NOT NULL DEFAULT 0, - app_by char(16), - PRIMARY KEY(id), - INDEX (sdato), - INDEX (edato), - INDEX (country), - INDEX (category) -); - -CREATE TABLE country ( - id char(3) NOT NULL, - name varchar(55), - PRIMARY KEY (id) -); - -INSERT INTO country VALUES ('AFG','Afghanistan'); -INSERT INTO country VALUES ('ALB','Albania'); -INSERT INTO country VALUES ('DZA','Algeria'); -INSERT INTO country VALUES ('ASM','American Samoa'); -INSERT INTO country VALUES ('AND','Andorra'); -INSERT INTO country VALUES ('AGO','Angola'); -INSERT INTO country VALUES ('AIA','Anguilla'); -INSERT INTO country VALUES ('ATG','Antigua and Barbuda'); -INSERT INTO country VALUES ('ARG','Argentina'); -INSERT INTO country VALUES ('ARM','Armenia'); -INSERT INTO country VALUES ('ABW','Aruba'); -INSERT INTO country VALUES ('AUS','Australia'); -INSERT INTO country VALUES ('AUT','Austria'); -INSERT INTO country VALUES ('AZE','Azerbaijan'); -INSERT INTO country VALUES ('BHS','Bahamas'); -INSERT INTO country VALUES ('BHR','Bahrain'); -INSERT INTO country VALUES ('BGD','Bangladesh'); -INSERT INTO country VALUES ('BRB','Barbados'); -INSERT INTO country VALUES ('BLR','Belarus'); -INSERT INTO country VALUES ('BEL','Belgium'); -INSERT INTO country VALUES ('BLZ','Belize'); -INSERT INTO country VALUES ('BEN','Benin'); -INSERT INTO country VALUES ('BMU','Bermuda'); -INSERT INTO country VALUES ('BTN','Bhutan'); -INSERT INTO country VALUES ('BOL','Bolivia'); -INSERT INTO country VALUES ('BIH','Bosnia and Herzegovina'); -INSERT INTO country VALUES ('BWA','Botswana'); -INSERT INTO country VALUES ('BRA','Brazil'); -INSERT INTO country VALUES ('VGB','British Virgin Islands'); -INSERT INTO country VALUES ('BRN','Brunei Darussalam'); -INSERT INTO country VALUES ('BGR','Bulgaria'); -INSERT INTO country VALUES ('BFA','Burkina Faso'); -INSERT INTO country VALUES ('BDI','Burundi'); -INSERT INTO country VALUES ('KHM','Cambodia'); -INSERT INTO country VALUES ('CMR','Cameroon'); -INSERT INTO country VALUES ('CAN','Canada'); -INSERT INTO country VALUES ('CPV','Cape Verde'); -INSERT INTO country VALUES ('CYM','Cayman Islands'); -INSERT INTO country VALUES ('CAF','Central African Republic'); -INSERT INTO country VALUES ('TCD','Chad'); -INSERT INTO country VALUES ('CHL','Chile'); -INSERT INTO country VALUES ('CHN','China'); -INSERT INTO country VALUES ('HKG','Hong Kong Special Administrative'); -INSERT INTO country VALUES ('MAC','Macao Special Administrative Region of China'); -INSERT INTO country VALUES ('COL','Colombia'); -INSERT INTO country VALUES ('COM','Comoros'); -INSERT INTO country VALUES ('COG','Congo'); -INSERT INTO country VALUES ('COK','Cook Islands'); -INSERT INTO country VALUES ('CRI','Costa Rica'); -INSERT INTO country VALUES ('CIV','Cote d\'Ivoire'); -INSERT INTO country VALUES ('HRV','Croatia'); -INSERT INTO country VALUES ('CUB','Cuba'); -INSERT INTO country VALUES ('CYP','Cyprus'); -INSERT INTO country VALUES ('CZE','Czech Republic'); -INSERT INTO country VALUES ('PRK','Democratic People\'s Republic of Korea'); -INSERT INTO country VALUES ('COD','Democratic Republic of the Congo'); -INSERT INTO country VALUES ('DNK','Denmark'); -INSERT INTO country VALUES ('DJI','Djibouti'); -INSERT INTO country VALUES ('DMA','Dominica'); -INSERT INTO country VALUES ('DOM','Dominican Republic'); -INSERT INTO country VALUES ('TMP','East Timor'); -INSERT INTO country VALUES ('ECU','Ecuador'); -INSERT INTO country VALUES ('EGY','Egypt'); -INSERT INTO country VALUES ('SLV','El Salvador'); -INSERT INTO country VALUES ('GNQ','Equatorial Guinea'); -INSERT INTO country VALUES ('ERI','Eritrea'); -INSERT INTO country VALUES ('EST','Estonia'); -INSERT INTO country VALUES ('ETH','Ethiopia'); -INSERT INTO country VALUES ('FRO','Faeroe Islands'); -INSERT INTO country VALUES ('FLK','Falkland Islands (Malvinas)'); -INSERT INTO country VALUES ('FJI','Fiji'); -INSERT INTO country VALUES ('FIN','Finland'); -INSERT INTO country VALUES ('FRA','France'); -INSERT INTO country VALUES ('GUF','French Guiana'); -INSERT INTO country VALUES ('PYF','French Polynesia'); -INSERT INTO country VALUES ('GAB','Gabon'); -INSERT INTO country VALUES ('GMB','Gambia'); -INSERT INTO country VALUES ('GEO','Georgia'); -INSERT INTO country VALUES ('DEU','Germany'); -INSERT INTO country VALUES ('GHA','Ghana'); -INSERT INTO country VALUES ('GIB','Gibraltar'); -INSERT INTO country VALUES ('GRC','Greece'); -INSERT INTO country VALUES ('GRL','Greenland'); -INSERT INTO country VALUES ('GRD','Grenada'); -INSERT INTO country VALUES ('GLP','Guadeloupe'); -INSERT INTO country VALUES ('GUM','Guam'); -INSERT INTO country VALUES ('GTM','Guatemala'); -INSERT INTO country VALUES ('GIN','Guinea'); -INSERT INTO country VALUES ('GNB','Guinea-Bissau'); -INSERT INTO country VALUES ('GUY','Guyana'); -INSERT INTO country VALUES ('HTI','Haiti'); -INSERT INTO country VALUES ('VAT','Holy See'); -INSERT INTO country VALUES ('HND','Honduras'); -INSERT INTO country VALUES ('HUN','Hungary'); -INSERT INTO country VALUES ('ISL','Iceland'); -INSERT INTO country VALUES ('IND','India'); -INSERT INTO country VALUES ('IDN','Indonesia'); -INSERT INTO country VALUES ('IRN','Iran (Islamic Republic of)'); -INSERT INTO country VALUES ('IRQ','Iraq'); -INSERT INTO country VALUES ('IRL','Ireland'); -INSERT INTO country VALUES ('ISR','Israel'); -INSERT INTO country VALUES ('ITA','Italy'); -INSERT INTO country VALUES ('JAM','Jamaica'); -INSERT INTO country VALUES ('JPN','Japan'); -INSERT INTO country VALUES ('JOR','Jordan'); -INSERT INTO country VALUES ('KAZ','Kazakhstan'); -INSERT INTO country VALUES ('KEN','Kenya'); -INSERT INTO country VALUES ('KIR','Kiribati'); -INSERT INTO country VALUES ('KWT','Kuwait'); -INSERT INTO country VALUES ('KGZ','Kyrgyzstan'); -INSERT INTO country VALUES ('LAO','Lao People\'s Democratic Republic'); -INSERT INTO country VALUES ('LVA','Latvia'); -INSERT INTO country VALUES ('LBN','Lebanon'); -INSERT INTO country VALUES ('LSO','Lesotho'); -INSERT INTO country VALUES ('LBR','Liberia'); -INSERT INTO country VALUES ('LBY','Libyan Arab Jamahiriya'); -INSERT INTO country VALUES ('LIE','Liechtenstein'); -INSERT INTO country VALUES ('LTU','Lithuania'); -INSERT INTO country VALUES ('LUX','Luxembourg'); -INSERT INTO country VALUES ('MDG','Madagascar'); -INSERT INTO country VALUES ('MWI','Malawi'); -INSERT INTO country VALUES ('MYS','Malaysia'); -INSERT INTO country VALUES ('MDV','Maldives'); -INSERT INTO country VALUES ('MLI','Mali'); -INSERT INTO country VALUES ('MLT','Malta'); -INSERT INTO country VALUES ('MHL','Marshall Islands'); -INSERT INTO country VALUES ('MTQ','Martinique'); -INSERT INTO country VALUES ('MRT','Mauritania'); -INSERT INTO country VALUES ('MUS','Mauritius'); -INSERT INTO country VALUES ('MEX','Mexico'); -INSERT INTO country VALUES ('FSM','Micronesia Federated States of,'); -INSERT INTO country VALUES ('MCO','Monaco'); -INSERT INTO country VALUES ('MNG','Mongolia'); -INSERT INTO country VALUES ('MSR','Montserrat'); -INSERT INTO country VALUES ('MAR','Morocco'); -INSERT INTO country VALUES ('MOZ','Mozambique'); -INSERT INTO country VALUES ('MMR','Myanmar'); -INSERT INTO country VALUES ('NAM','Namibia'); -INSERT INTO country VALUES ('NRU','Nauru'); -INSERT INTO country VALUES ('NPL','Nepal'); -INSERT INTO country VALUES ('NLD','Netherlands'); -INSERT INTO country VALUES ('ANT','Netherlands Antilles'); -INSERT INTO country VALUES ('NCL','New Caledonia'); -INSERT INTO country VALUES ('NZL','New Zealand'); -INSERT INTO country VALUES ('NIC','Nicaragua'); -INSERT INTO country VALUES ('NER','Niger'); -INSERT INTO country VALUES ('NGA','Nigeria'); -INSERT INTO country VALUES ('NIU','Niue'); -INSERT INTO country VALUES ('NFK','Norfolk Island'); -INSERT INTO country VALUES ('MNP','Northern Mariana Islands'); -INSERT INTO country VALUES ('NOR','Norway'); -INSERT INTO country VALUES ('PSE','Occupied Palestinian Territory'); -INSERT INTO country VALUES ('OMN','Oman'); -INSERT INTO country VALUES ('PAK','Pakistan'); -INSERT INTO country VALUES ('PLW','Palau'); -INSERT INTO country VALUES ('PAN','Panama'); -INSERT INTO country VALUES ('PNG','Papua New Guinea'); -INSERT INTO country VALUES ('PRY','Paraguay'); -INSERT INTO country VALUES ('PER','Peru'); -INSERT INTO country VALUES ('PHL','Philippines'); -INSERT INTO country VALUES ('PCN','Pitcairn'); -INSERT INTO country VALUES ('POL','Poland'); -INSERT INTO country VALUES ('PRT','Portugal'); -INSERT INTO country VALUES ('PRI','Puerto Rico'); -INSERT INTO country VALUES ('QAT','Qatar'); -INSERT INTO country VALUES ('KOR','Republic of Korea'); -INSERT INTO country VALUES ('MDA','Republic of Moldova'); -INSERT INTO country VALUES ('REU','Réunion'); -INSERT INTO country VALUES ('ROM','Romania'); -INSERT INTO country VALUES ('RUS','Russian Federation'); -INSERT INTO country VALUES ('RWA','Rwanda'); -INSERT INTO country VALUES ('SHN','Saint Helena'); -INSERT INTO country VALUES ('KNA','Saint Kitts and Nevis'); -INSERT INTO country VALUES ('LCA','Saint Lucia'); -INSERT INTO country VALUES ('SPM','Saint Pierre and Miquelon'); -INSERT INTO country VALUES ('VCT','Saint Vincent and the Grenadines'); -INSERT INTO country VALUES ('WSM','Samoa'); -INSERT INTO country VALUES ('SMR','San Marino'); -INSERT INTO country VALUES ('STP','Sao Tome and Principe'); -INSERT INTO country VALUES ('SAU','Saudi Arabia'); -INSERT INTO country VALUES ('SEN','Senegal'); -INSERT INTO country VALUES ('SYC','Seychelles'); -INSERT INTO country VALUES ('SLE','Sierra Leone'); -INSERT INTO country VALUES ('SGP','Singapore'); -INSERT INTO country VALUES ('SVK','Slovakia'); -INSERT INTO country VALUES ('SVN','Slovenia'); -INSERT INTO country VALUES ('SLB','Solomon Islands'); -INSERT INTO country VALUES ('SOM','Somalia'); -INSERT INTO country VALUES ('ZAF','South Africa'); -INSERT INTO country VALUES ('ESP','Spain'); -INSERT INTO country VALUES ('LKA','Sri Lanka'); -INSERT INTO country VALUES ('SDN','Sudan'); -INSERT INTO country VALUES ('SUR','Suriname'); -INSERT INTO country VALUES ('SJM','Svalbard and Jan Mayen Islands'); -INSERT INTO country VALUES ('SWZ','Swaziland'); -INSERT INTO country VALUES ('SWE','Sweden'); -INSERT INTO country VALUES ('CHE','Switzerland'); -INSERT INTO country VALUES ('SYR','Syrian Arab Republic'); -INSERT INTO country VALUES ('TWN','Taiwan Province of China'); -INSERT INTO country VALUES ('TJK','Tajikistan'); -INSERT INTO country VALUES ('THA','Thailand'); -INSERT INTO country VALUES ('MKD','The former Yugoslav Republic of Macedonia'); -INSERT INTO country VALUES ('TGO','Togo'); -INSERT INTO country VALUES ('TKL','Tokelau'); -INSERT INTO country VALUES ('TON','Tonga'); -INSERT INTO country VALUES ('TTO','Trinidad and Tobago'); -INSERT INTO country VALUES ('TUN','Tunisia'); -INSERT INTO country VALUES ('TUR','Turkey'); -INSERT INTO country VALUES ('TKM','Turkmenistan'); -INSERT INTO country VALUES ('TCA','Turks and Caicos Islands'); -INSERT INTO country VALUES ('TUV','Tuvalu'); -INSERT INTO country VALUES ('UGA','Uganda'); -INSERT INTO country VALUES ('UKR','Ukraine'); -INSERT INTO country VALUES ('ARE','United Arab Emirates'); -INSERT INTO country VALUES ('GBR','United Kingdom'); -INSERT INTO country VALUES ('TZA','United Republic of Tanzania'); -INSERT INTO country VALUES ('USA','United States'); -INSERT INTO country VALUES ('VIR','United States Virgin Islands'); -INSERT INTO country VALUES ('URY','Uruguay'); -INSERT INTO country VALUES ('UZB','Uzbekistan'); -INSERT INTO country VALUES ('VUT','Vanuatu'); -INSERT INTO country VALUES ('VEN','Venezuela'); -INSERT INTO country VALUES ('VNM','Viet Nam'); -INSERT INTO country VALUES ('WLF','Wallis and Futuna Islands'); -INSERT INTO country VALUES ('ESH','Western Sahara'); -INSERT INTO country VALUES ('YEM','Yemen'); -INSERT INTO country VALUES ('YUG','Yugoslavia'); -INSERT INTO country VALUES ('ZMB','Zambia'); -INSERT INTO country VALUES ('ZWE','Zimbabwe'); diff --git a/events.php b/events.php deleted file mode 100644 index de5e429fa..000000000 --- a/events.php +++ /dev/null @@ -1,74 +0,0 @@ - -

Upcoming Events

- -

-If you would like to see the list of events in a calendar format, -visit the complete event calendar. -You can also add events yourself with our "Add -an Event" form. -

- -'First',2=>'Second',3=>'Third',4=>'Fourth',-1=>'Last',-2=>'2nd Last',-3=>'3rd Last'); - - function load_events() { - global $re; - $days = days(); - $fp = @fopen("backend/events.csv",'r'); - while(!feof($fp)) { - list($d,$m,$y,,$sdesc,$id,$ldesc,$url,$recur,$tipo,$sdato,$edato) = fgetcsv($fp,8192); - if(!$seen[$m][$id]) { - switch($tipo) { - case 1: - $events[] = array($id,$sdato,$sdesc,$ldesc,$url,$d,$m,$y); - break; - case 2: - $events[] = array($id,$sdato.' to '.$edato,$sdesc,$ldesc,$url,$d,$m,$y); - break; - case 3: - list($which,$day) = explode(':',$recur); - $events[] = array($id,'Every '.$re[(int)$which].' '.$days[$day].' of the month',$sdesc,$ldesc,$url,$d,$m,$y); - break; - } - $seen[$m][$id] = true; - } - } - return $events; - } - - /* returns array of Days starting with 1 = Sunday */ - function days() { - static $days=NULL; - if(!$days) for($i=1;$i<=7;$i++) { - $days[$i] = strftime('%A',mktime(12,0,0,4,$i,2001)); - } - return $days; - } -?> - - - -

  $month

\n"; - } - echo '\n"; - echo '\n"; -} -?> -
'.$month.' '.$event[5].' '.$event[2].' ('.$event[1].")
 '.base64_decode($event[3])."
- - diff --git a/include/layout.inc b/include/layout.inc index 0f089896b..7a4675331 100644 --- a/include/layout.inc +++ b/include/layout.inc @@ -394,4 +394,41 @@ function display_errors($errors) echo '
'; } +function display_event($event,$include_date=1) +{ + for ($i = 0; $i < 7; $i++) { + $days[$i+1] = strftime('%A',mktime(12,0,0,4,$i,2001)); + } + + $re = array(1=>'First',2=>'Second',3=>'Third',4=>'Fourth',-1=>'Last',-2=>'2nd Last',-3=>'3rd Last'); + + $sday = $event['start'] ? strtotime($event['start']) + : mktime(0,0,1,$event['smonth'],$event['sday'],$event['syear']); + $eday = $event['end'] ? strtotime($event['end']) + : mktime(0,0,1,$event['emonth'],$event['eday'],$event['eyear']); +?> + + + +
+", date("F j, Y", $sday), "\n"; + if ($event['url']) echo ''; + echo "", htmlentities($event['sdesc']), ""; + if ($event['url']) echo ""; + switch ($event['type']) { + case 2: + case 'multi': + echo " (", date("Y-m-d",$sday), " to ", date("Y-m-d",$eday), ")"; + break; + case 3: + case 'recur': + echo " (Every ", $re[$event['recur']], " ", $days[$event['recur_day']], " of the month)"; + break; + } +?> +
+ diff --git a/index.php b/index.php index c4a6434a8..8888b25a1 100644 --- a/index.php +++ b/index.php @@ -57,7 +57,7 @@ $fp = @fopen("backend/events.csv",'r'); if($fp) { $cm=0; while(!feof($fp)) { - list($d,$m,$y,$url,$desc) = fgetcsv($fp,8192); + list($d,$m,$y,$url,$desc,$id) = fgetcsv($fp,8192); if($cm!=(int)$m) { if($cm) $RSIDEBAR_DATA.= "
\n"; else $RSIDEBAR_DATA.='

Upcoming Events
    [add event]

'; @@ -66,7 +66,7 @@ if($fp) { unset($seen); } if(!$seen[$desc]) { - $RSIDEBAR_DATA .= "$d. $desc
\n"; + $RSIDEBAR_DATA .= "$d. $desc
\n"; $seen[$desc] = true; } } diff --git a/style.css b/style.css index 721da0276..aa142a099 100644 --- a/style.css +++ b/style.css @@ -129,3 +129,26 @@ div.tip { background: #eef; padding: 0px 8px; } + +table#cal { + font-size: smaller; +} + +table#cal a { + text-decoration: none; +} +table#cal a:hover { + text-decoration: underline; +} + +table#cal a.day { + float: right; + font-weight: bold; + color: #666; +} + +table#cal div.event { + margin-bottom: 2px; + padding-bottom: 2px; + border-bottom: 1px dashed #000; +} diff --git a/submit-event.php b/submit-event.php index e44b40763..11c706dde 100644 --- a/submit-event.php +++ b/submit-event.php @@ -111,27 +111,10 @@ for ($i = 0; $i < 12; $i++) { $re = array(1=>'First',2=>'Second',3=>'Third',4=>'Fourth',-1=>'Last',-2=>'2nd Last',-3=>'3rd Last'); -if (isset($in)) {?> -

Preview:

- - - -
- -'; - echo htmlentities($in['sdesc']); - if ($in['url']) echo ""; - switch ($in['type']) { - case 'multi': - echo " ($in[syear]-$in[smonth]-$in[sday] to $in[eyear]-$in[emonth]-$in[eday])"; - break; - case 'recur': - echo " (Every ", $re[$in['recur']], " ", $days[$in['recur_day']], " of the month)"; - break; - } +if (isset($in)) { + echo "

Preview:

\n"; + display_event($in); ?> -

Change: