1
0
mirror of https://github.com/php/web-php.git synced 2026-03-24 07:12:16 +01:00
Files
archived-web-php/submit-event.php
Gabor Hojtsy 9755f2f748 XHTML fixes: <p> cannot contain <ul> and <pre>,
<ul> needs to have an <li>, <select> has no
width="" param, etc.
2003-06-14 19:01:00 +00:00

252 lines
8.2 KiB
PHP

<?php
/* $Id$ */
require_once './include/prepend.inc';
require_once './include/posttohost.inc';
require_once './include/email-validation.inc';
commonHeader("Submit an Event");
$errors = array();
$process = FALSE;
if (isset($in)) { $process = TRUE; }
if (!isset($in['type'])) { $in['type'] = ""; }
if (!isset($in['sday'])) { $in['sday'] = ""; }
if (!isset($in['smonth'])) { $in['smonth'] = ""; }
if (!isset($in['syear'])) { $in['syear'] = ""; }
if (!isset($in['eday'])) { $in['eday'] = ""; }
if (!isset($in['emonth'])) { $in['emonth'] = ""; }
if (!isset($in['eyear'])) { $in['eyear'] = ""; }
if (!isset($in['recur'])) { $in['recur'] = ""; }
if (!isset($in['recur_day'])) { $in['recur_day'] = ""; }
if (!isset($in['country'])) { $in['country'] = ""; }
if (!isset($in['category'])) { $in['category'] = ""; }
if (!isset($in['email'])) { $in['email'] = ""; }
if (!isset($in['url'])) { $in['url'] = ""; }
if (!isset($in['ldesc'])) { $in['ldesc'] = ""; }
if (!isset($in['sdesc'])) { $in['sdesc'] = ""; }
if (isset($in) && $process) {
# clean up magic quotes, if they were inserted
if (get_magic_quotes_gpc()) {
foreach ($in as $k => $v) {
$in[$k] = stripslashes($v);
}
}
# clean and validate data
if(preg_match("/\btest\b/i", $in['sdesc'])) {
$errors[] = 'We know this works. Please do not test the system.';
}
if(preg_match("/\btest\b/i", $in['ldesc'])) {
$errors[] = 'We know this works. Please do not test the system.';
}
if (!is_emailable_address($in['email'])) {
$errors[] = 'You must supply a valid email address.';
}
$in['sdesc'] = trim($in['sdesc']);
if (!$in['sdesc']) {
$errors[] = "You must supply a short description of the event.";
}
$in['ldesc'] = trim(strip_tags($in['ldesc'],'<a><i><b><br /><p>'));
$in['ldesc'] = preg_replace("/(style|on\\w+?)\s*=\s*(\"|').+?\\2/i","",$in['ldesc']);
if (!$in['ldesc']) {
$errors[] = "You must supply a long description of the event.";
}
$in['url'] = trim($in['url']);
if (!$in['url']) {
$errors[] = "You must supply a URL with more information about the event.";
}
elseif (!preg_match('/^\w+:/',$in['url'])) {
$errors[] = "The URL you supplied was incomplete.";
}
if (!$in['country']) {
$errors[] = 'You must specify a country for the event.';
}
if (!$in['category']) {
$errors[] = 'You must specify a category for the event.';
}
if (!checkdate($in['smonth'], $in['sday'], $in['syear'])) {
$errors[] = "You must specify a valid start date.";
}
else {
$sdate = mktime(0,0,1,$in['smonth'], $in['sday'], $in['syear']);
if ($sdate < time()) {
$errors[] = "You must specify a start date that is in the future.";
}
}
if ($in['type'] == 'multi' && !checkdate($in['emonth'], $in['eday'], $in['eyear'])) {
$errors[] = "You must specify a valid end date for a multi-day event.";
}
elseif ($in['type'] == 'multi' && checkdate($in['smonth'], $in['sday'], $in['syear'])) {
$sdate = mktime(0,0,1,$in['smonth'], $in['sday'], $in['syear']);
$edate = mktime(0,0,1,$in['emonth'], $in['eday'], $in['eyear']);
if ($edate < time()) {
$errors[] = "You must specify an end date that is in the future.";
}
elseif ($edate < $sdate) {
$errors[] = "You must specify an end date that is after the start date.";
}
}
if ($in['type'] == 'recur' && !($in['recur'] && $in['recur_day'])) {
$errors[] = "You must specify a valid day of the month for a recurring event.";
}
if (preg_match("/submit/i", $action)) {
# submit to master.php.net
$result = posttohost("http://master.php.net/entry/event.php", $in);
if ($result) {
$errors[] = "There was an error processing your submission: $result";
}
if (!$errors) {?>
<p>Thank you for your submission! You should hear back soon as to whether your
event has been accepted for inclusion in our calendar.</p>
<?php
commonFooter();
exit;
}
}
if (!$errors) {?>
<p>The following is a preview of your event submission. Please double-check it
to make sure all of the information is correct.</p>
<?php
}
}
else {?>
<p>Have an upcoming PHP user group meeting? Holding a PHP training session?
Submit your event here, and after it has been approved, it will be listed on
the PHP.net homepage and appear in our full event listings.</p>
<?php
}
if ($errors) display_errors($errors);
for ($i = 1; $i <= 7; $i++) {
$days[$i] = strftime('%A',mktime(12,0,0,4,$i,2001));
}
for ($i = 1; $i <= 12; $i++) {
$months[$i] = strftime('%B',mktime(12,0,0,$i,1,2001));
}
$re = array(1=>'First',2=>'Second',3=>'Third',4=>'Fourth',-1=>'Last',-2=>'2nd Last',-3=>'3rd Last');
if (isset($in) && $process) {
echo "<p><b>Preview:</b></p>\n";
display_event($in);
?>
<p><b>Change:</b></p>
<?php
}
?>
<form action="<?php echo $PHP_SELF?>" method="post">
<table bgcolor="#eeeeee" border="0" cellspacing="0" cellpadding="3" width="100%">
<tr>
<th>Start Date</th>
<td>
<select name="in[smonth]"><option></option><?php display_options($months,$in['smonth'])?></select>
<input type="text" name="in[sday]" size="2" maxlength="2" value="<?php echo htmlentities($in['sday'])?>" />
<input type="text" name="in[syear]" size="4" maxlength="4" value="<?php echo $in['syear'] ? htmlentities($in['syear']) : date("Y")?>" />
<input type="radio" id="single" name="in[type]" value="single"<?php if ($in['type'] == 'single' || !$in['type']) echo ' checked="checked"';?> />
<label for="single">One day (no end-date required)</label>
</td>
</tr>
<tr>
<th>End Date</th>
<td>
<select name="in[emonth]"><option></option><?php display_options($months,$in['emonth'])?></select>
<input type="text" name="in[eday]" size="2" maxlength="2" value="<?php echo htmlentities($in['eday'])?>" />
<input type="text" name="in[eyear]" size="4" maxlength="4" value="<?php echo $in['eyear'] ? htmlentities($in['eyear']) : date("Y")?>" />
<input type="radio" id="multi" name="in[type]" value="multi"<?php if ($in['type'] == 'multi') echo ' checked="checked"';?> />
<label for="multi">Multi-day event</label>
</td>
</tr>
<tr>
<th>OR<br />Recurring</th>
<td>
<select name="in[recur]"><option></option><?php display_options($re,$in['recur'])?></select>
<select name="in[recur_day]"><option></option><?php display_options($days,$in['recur_day'])?></select>
<input type="radio" id="recur" name="in[type]" value="recur"<?php if ($in['type'] == 'recur') echo ' checked="checked"';?> />
<label for="recur">Recurring (every month)</label>
</td>
</tr>
<tr>
<th>Short<br />Description</th>
<td><input type="text" name="in[sdesc]" value="<?php echo htmlentities($in['sdesc'])?>" size="32" maxlength="32" /></td>
</tr>
<tr>
<th>URL</th>
<td><input type="text" name="in[url]" size="40" maxlength="128" value="<?php echo htmlentities($in['url'])?>" /></td>
</tr>
<tr>
<th>Country</th>
<td>
<select name="in[country]">
<option value="">- Select a country -</option>
<?php display_options($COUNTRIES,$in['country']);?>
</select>
</td>
</tr>
<tr>
<th>Event Category</th>
<td>
<select name="in[category]">
<?php
$cat = array("- Select a category -", "User Group Event", "Conference", "Training");
display_options($cat,$in['category']);
?>
</select>
</td>
</tr>
<tr>
<th>Email</th>
<td><input type="text" name="in[email]" size="40" maxlength="128" value="<?php echo htmlentities($in['email'])?>" /></td>
</tr>
<tr>
<th>&nbsp;</th>
<td><small>This email address is only used to contact you about the listing, it will not displayed along with the listing.</small></td>
</tr>
<tr>
<th colspan="2" align="left">Long Description</th>
</tr>
<tr>
<td colspan="2"><textarea name="in[ldesc]" cols="60" rows="10" wrap="virtual"><?php echo htmlentities($in['ldesc']);?></textarea></td>
</tr>
<tr>
<td align="center" colspan="2">
<input type="submit" name="action" value="Preview" />
<?php if (isset($in) && $process && !$errors) {?>
<input type="submit" name="action" value="Submit" />
<?php }?>
</td>
</tr>
</table>
</form>
<?php
commonFooter();
function display_options($options,$current) {
foreach ($options as $k => $v) {
echo '<option value="', $k, '"',
($k == $current ? ' selected="selected"' : ''),
'>', htmlentities($v), "</option>\n";
}
}
/* vim: set noet ts=4 sw=4 ft=php: : */