Exemple #1
0
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 &quot;Not Set&quot;</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);
    }