function add_dates() { global $wpdb; global $current_user; if ($_POST) { if (!wp_verify_nonce($_POST['add_recur'], 'recur')) { die("Security error"); } if ($_POST["recur-title"]) { $my_post['post_title'] = $_POST["recur-title"]; $my_post['post_content'] = $_POST["recur-body"]; $my_post['post_status'] = current_user_can('publish_rsvpmakers') ? 'publish' : 'draft'; $my_post['post_author'] = $current_user->ID; $my_post['post_type'] = 'rsvpmaker'; foreach ($_POST["recur_checked"] as $index => $on) { $year = $_POST["recur_year"][$index]; if ($_POST["recur_day"][$index]) { $cddate = $year . "-" . $_POST["recur_month"][$index] . "-" . $_POST["recur_day"][$index] . " " . $_POST["event_hour"] . ":" . $_POST["event_minutes"] . ":00"; $dpart = explode(':', $_POST["event_duration"]); if (is_numeric($dpart[0])) { $dtext = $cddate . ' +' . $dpart[0] . ' hours'; if ($dpart[1]) { $dtext .= ' +' . $dpart[1] . ' minutes'; } $dt = strtotime($dtext); $duration = date('Y-m-d H:i:s', $dt); //printf('<p>%s %s</p>',$dtext,$duration); } else { $duration = $_POST["event_duration"]; } // empty or all day // Insert the post into the database if ($postID = wp_insert_post($my_post)) { $sql = "INSERT INTO " . $wpdb->prefix . "rsvp_dates SET datetime='{$cddate}', duration='{$duration}', postID=" . $postID; $wpdb->show_errors(); $return = $wpdb->query($sql); if ($return == false) { echo '<div class="updated">' . "Error: {$sql}.</div>\n"; } else { echo '<div class="updated">Posted: event for ' . $cddate . ' <a href="post.php?action=edit&post=' . $postID . '">Edit</a> / <a href="' . site_url() . '/?p=' . $postID . '">View</a></div>'; } if ($_POST["setrsvp"]["on"]) { save_rsvp_meta($postID); } } } } } } global $rsvp_options; ?> <div class="wrap"> <div id="icon-edit" class="icon32"><br /></div> <h2>Recurring Event</h2> <?php $defaulthour = isset($_GET["hour"]) ? (int) $_GET["hour"] : 19; $defaultmin = isset($_GET["minutes"]) ? (int) $_GET["minutes"] : 0; $houropt = $minopt = ''; for ($i = 0; $i < 24; $i++) { $selected = $i == $defaulthour ? ' selected="selected" ' : ''; $padded = $i < 10 ? '0' . $i : $i; if ($i == 0) { $twelvehour = "12 a.m."; } elseif ($i == 12) { $twelvehour = "12 p.m."; } elseif ($i > 12) { $twelvehour = $i - 12 . " p.m."; } else { $twelvehour = $i . " a.m."; } $houropt .= sprintf('<option value="%s" %s>%s / %s:</option>', $padded, $selected, $twelvehour, $padded); } for ($i = 0; $i < 60; $i += 5) { $selected = $i == $defaultmin ? ' selected="selected" ' : ''; $padded = $i < 10 ? '0' . $i : $i; $minopt .= sprintf('<option value="%s" %s>%s</option>', $padded, $selected, $padded); } $cm = date('n'); $y = date('Y'); $y2 = $y + 1; if (!isset($_GET["week"])) { ?> <p>Use this form to create multiple events with the same headline, description, and RSVP paramaters. You can have the program automatically calculate dates for a regular montly schedule.</p> <p><em>Optional: Calculate dates for a recurring schedule ...</em></p> <form method="get" action="<?php echo admin_url("edit.php"); ?> " id="recursked"> <p>Regular schedule: <select name="week" id="week"> <option value="+0 week">First</option> <option value="+1 week">Second</option> <option value="+2 week">Third</option> <option value="+3 week">Fourth</option> <option value="Last">Last</option> </select> <select name="dayofweek" id="dayofweek"> <option value="Sunday">Sunday</option> <option value="Monday">Monday</option> <option value="Tuesday">Tuesday</option> <option value="Wednesday">Wednesday</option> <option value="Thursday">Thursday</option> <option value="Friday">Friday</option> <option value="Saturday">Saturday</option> </select> </p> <table border="0"> <tr><td> Time:</td> <td>Hour: <select name="hour" id="hour"> <?php echo $houropt; ?> </select> Minutes: <select id="minutes" name="minutes"> <?php echo $minopt; ?> </select> <em>For an event starting at 12:30 p.m., you would select 12 p.m. and 30 minutes.</em> </td> </tr> </table> <input type="hidden" name="post_type" value="rsvpmaker" /> <input type="hidden" name="page" value="add_dates" /> <input type="submit" value="Get Dates" /> </form> <p><em>... or enter dates individually.</em></p> <?php $futuremonths = 12; for ($i = 0; $i < $futuremonths; $i++) { $projected[$i] = mktime(0, 0, 0, $cm + $i, 1); } // first day of month } else { $week = $_GET["week"]; $dow = $_GET["dayofweek"]; $futuremonths = 12; for ($i = 0; $i < $futuremonths; $i++) { $thisdate = mktime(0, 0, 0, $cm + $i, 1); // first day of month $datetext = "{$week} {$dow} " . date("F Y", $thisdate); $projected[$i] = strtotime($datetext); $datetexts[$i] = $datetext; } //end for loop echo "<p>Loading recurring series of dates for {$week} {$dow}. To omit a date in the series, change the day field to "Not Set"</p>\n"; } ?> <h3><?php _e('Enter Recurring Events', 'rsvpmaker'); ?> </h3> <form id="form1" name="form1" method="post" action="<?php echo admin_url("edit.php?post_type=rsvpmaker&page=add_dates"); ?> "> <p>Headline: <input type="text" name="recur-title" size="60" value="<?php if (isset($_POST["recur-title"])) { echo stripslashes($_POST["recur-title"]); } ?> " /></p> <p><textarea name="recur-body" rows="5" cols="80"><?php echo isset($_POST["recur-body"]) && $_POST["recur-body"] ? stripslashes($_POST["recur-body"]) : $rsvp_options["default_content"]; ?> </textarea></p> <?php wp_nonce_field('recur', 'add_recur'); foreach ($projected as $i => $ts) { $today = date('d', $ts); $cm = date('n', $ts); $y = date('Y', $ts); $y2 = $y + 1; ?> <div id="recur_date<?php echo $i; ?> " style="margin-bottom: 5px;"> <input type="checkbox" name="recur_checked[<?php echo $i; ?> ]" value="<?php echo $i; ?> " /> <?php _e('Month', 'rsvpmaker'); ?> : <select name="recur_month[<?php echo $i; ?> ]"> <option value="<?php echo $cm; ?> "><?php echo $cm; ?> </option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">9</option> <option value="10">10</option> <option value="11">11</option> <option value="12">12</option> </select> <?php _e('Day', 'rsvpmaker'); ?> <select name="recur_day[<?php echo $i; ?> ]"> <?php if ($week) { echo sprintf('<option value="%s">%s</option>', $today, $today); } ?> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">9</option> <option value="10">10</option> <option value="11">11</option> <option value="12">12</option> <option value="13">13</option> <option value="14">14</option> <option value="15">15</option> <option value="16">16</option> <option value="17">17</option> <option value="18">18</option> <option value="19">19</option> <option value="20">20</option> <option value="21">21</option> <option value="22">22</option> <option value="23">23</option> <option value="24">24</option> <option value="25">25</option> <option value="26">26</option> <option value="27">27</option> <option value="28">28</option> <option value="29">29</option> <option value="30">30</option> <option value="31">31</option> </select> <?php _e('Year', 'rsvpmaker'); ?> <select name="recur_year[<?php echo $i; ?> ]"> <option value="<?php echo $y; ?> "><?php echo $y; ?> </option> <option value="<?php echo $y2; ?> "><?php echo $y2; ?> </option> </select> </div> <?php } // end for loop ?> <p><?php echo __('Hour:', 'rsvpmaker'); ?> <select name="event_hour"> <?php echo $houropt; ?> </select> <?php echo __('Minutes:', 'rsvpmaker'); ?> <select name="event_minutes"> <?php echo $minopt; ?> </select> - <?php echo __('Duration', 'rsvpmaker'); ?> <select name="event_duration"> <option value=""><?php echo __('Not set (optional)', 'rsvpmaker'); ?> </option> <option value="allday"><?php echo __("All day/don't show time in headline", 'rsvpmaker'); ?> </option> <?php for ($h = 1; $h < 24; $h++) { ?> <option value="<?php echo $h; ?> "><?php echo $h; ?> hours</option> <option value="<?php echo $h; ?> :15"><?php echo $h; ?> :15</option> <option value="<?php echo $h; ?> :30"><?php echo $h; ?> :30</option> <option value="<?php echo $h; ?> :45"><?php echo $h; ?> :45</option> <?php } ?> </select> </p> <?php echo GetRSVPAdminForm(0); ?> <input type="submit" name="button" id="button" value="Submit" /> </form> </div><!-- wrap --> <?php }
function draw_eventdates() { global $post; global $wpdb; global $rsvp_options; global $custom_fields; $custom_fields = get_post_custom($post->ID); if (isset($custom_fields["_sked"][0]) || isset($_GET["new_template"])) { ?> <p><em><strong><?php _e('Event Template', 'rsvpmaker'); ?> :</strong> <?php _e('This form is for entering generic / boilerplate information, not specific details for an event on a specific date. Groups that meet on a monthly basis can post their standard meeting schedule, location, and contact details to make entering the individual events easier. You can also post multiple future meetings using the generic template and update those event listings as needed when the event date grows closer.', 'rsvpmaker'); ?> </em></p> <?php $template = get_post_meta($post->ID, '_sked', true); template_schedule($template); GetRSVPAdminForm($post->ID); return; } if (isset($custom_fields["_meet_recur"][0])) { $t = (int) $custom_fields["_meet_recur"][0]; printf('<p><a href="%s">%s</a> | <a href="%s">%s</a></p>', admin_url('post.php?action=edit&post=' . $t), __('Edit Template', 'rsvpmaker'), admin_url('edit.php?post_type=rsvpmaker&page=rsvpmaker_template_list&t=' . $t), __('See Related Events', 'rsvpmaker')); } if (isset($post->ID)) { $results = $wpdb->get_results("SELECT * FROM " . $wpdb->prefix . "rsvp_dates WHERE postID=" . $post->ID . ' ORDER BY datetime', ARRAY_A); } else { $results = false; } if ($results) { $start = 2; foreach ($results as $row) { echo "\n<div class=\"event_dates\"> \n"; $t = strtotime($row["datetime"]); if ($rsvp_options["long_date"]) { echo date($rsvp_options["long_date"], $t); } $dur = $row["duration"]; if (strpos($dur, ':')) { $dur = strtotime($dur); } if ($dur != 'allday') { echo date(' ' . $rsvp_options["time_format"], $t); } if (is_numeric($dur)) { echo " to " . date($rsvp_options["time_format"], $dur); } echo sprintf(' <input type="checkbox" name="delete_date[]" value="%d" /> %s<br />', $row["id"], __('Delete', 'rsvpmaker')); rsvpmaker_date_option($row); echo "</div>\n"; } } else { echo '<p><em>' . __('Enter one or more dates. For an event starting at 1:30 p.m., you would select 1 p.m. (or 13: for 24-hour format) and then 30 minutes. Specifying the duration is optional.', 'rsvpmaker') . '</em> </p>'; } if (!isset($start)) { $start = 1; $date = isset($_GET["add_date"]) ? $_GET["add_date"] : 'today'; } for ($i = $start; $i < 6; $i++) { if ($i == 2) { do_action('rsvpmaker_datebox_message'); echo "<p><a onclick=\"document.getElementById('additional_dates').style.display='block'\" >" . __('Add More Dates', 'rsvpmaker') . "</a> </p>\n\t<div id=\"additional_dates\" style=\"display: none;\">"; $date = NULL; } rsvpmaker_date_option($date, $i); } // end for loop echo "\n</div><!--add dates-->\n"; GetRSVPAdminForm($post->ID); }