/**
 * Create a rendez vous in draft mode
 *
 * @package Rendez Vous
 * @subpackage Ajax
 *
 * @since Rendez Vous (1.0.0)
 */
function rendez_vous_ajax_create()
{
    check_ajax_referer('rendez-vous-editor', 'nonce');
    if (!bp_current_user_can('publish_rendez_vouss')) {
        wp_send_json_error(__('You cannot create a rendez-vous.', 'rendez-vous'));
    }
    // Init the create arguments
    $args = array('title' => '', 'venue' => '', 'type' => 0, 'description' => '', 'duration' => '', 'days' => array(), 'attendees' => array());
    // First attendees
    $attendees = array_map('absint', $_POST['attendees']);
    if (empty($attendees)) {
        wp_send_json_error(__('No users were selected.', 'rendez-vous'));
    }
    // Add to create arguments
    $args['attendees'] = $attendees;
    // Then fields
    if (empty($_POST['desc']) || !is_array($_POST['desc'])) {
        wp_send_json_error(__('Please describe your rendez-vous using the What tab.', 'rendez-vous'));
    } else {
        $fields = $_POST['desc'];
    }
    $required_fields_missing = array();
    foreach ($fields as $field) {
        if ('required' == $field['class'] && empty($field['value'])) {
            $required_fields_missing[] = $field['label'];
        }
        // Add to create arguments
        $args[$field['id']] = $field['value'];
    }
    // Required fields are missing
    if (!empty($required_fields_missing)) {
        wp_send_json_error(__('Please make sure to fill all required fields.', 'rendez-vous'));
    }
    // Then dates
    if (empty($_POST['maydates']) || !is_array($_POST['maydates'])) {
        wp_send_json_error(__('Please define dates for your rendez-vous using the When tab.', 'rendez-vous'));
    } else {
        $dates = $_POST['maydates'];
    }
    $maydates = array();
    $maydates_errors = array();
    foreach ($dates as $date) {
        $timestamp = false;
        if (!empty($date['hour1'])) {
            if (!preg_match('/^[0-2]?[0-9]:[0-5][0-9]$/', $date['hour1'])) {
                $maydates_errors[] = $date['hour1'];
                continue;
            }
            $timestamp = strtotime($date['mysql'] . ' ' . $date['hour1']);
            $maydates[$timestamp] = array();
        }
        if (!empty($date['hour2'])) {
            if (!preg_match('/^[0-2]?[0-9]:[0-5][0-9]$/', $date['hour2'])) {
                $maydates_errors[] = $date['hour2'];
                continue;
            }
            $timestamp = strtotime($date['mysql'] . ' ' . $date['hour2']);
            $maydates[$timestamp] = array();
        }
        if (!empty($date['hour3'])) {
            if (!preg_match('/^[0-2]?[0-9]:[0-5][0-9]$/', $date['hour3'])) {
                $maydates_errors[] = $date['hour3'];
                continue;
            }
            $timestamp = strtotime($date['mysql'] . ' ' . $date['hour3']);
            $maydates[$timestamp] = array();
        }
    }
    // Check duration format
    if (!empty($args['duration']) && !preg_match('/^[0-2]?[0-9]:[0-5][0-9]$/', $args['duration'])) {
        $maydates_errors[] = $args['duration'];
    }
    if (!empty($maydates_errors)) {
        wp_send_json_error(__('Please make sure to respect the format HH:MM when defining time.', 'rendez-vous'));
    }
    if (!empty($maydates)) {
        $args['days'] = $maydates;
    }
    if (!empty($_POST['group_id'])) {
        $args['group_id'] = absint($_POST['group_id']);
    }
    $rendez_vous_id = rendez_vous_save($args);
    if (empty($rendez_vous_id)) {
        wp_send_json_error(__('The rendez-vous was not created due to an error.', 'rendez-vous'));
    } else {
        // url to edit rendez-vous screen
        wp_send_json_success(esc_url_raw(rendez_vous_get_edit_link($rendez_vous_id, bp_loggedin_user_id())));
    }
}
/**
 * Output the submits for the Rendez Vous.
 *
 * @since Rendez Vous (1.0.0)
 */
function rendez_vous_single_the_submit($view = 'single')
{
    if (!bp_loggedin_user_id()) {
        return;
    }
    if ('edit' == $view) {
        $caption = 'draft' == rendez_vous()->item->status ? __('Publish Rendez-vous', 'rendez-vous') : __('Edit Rendez-vous', 'rendez-vous');
        if (current_user_can('delete_rendez_vous', rendez_vous()->item->id)) {
            $delete_link = rendez_vous_get_delete_link(rendez_vous()->item->id, rendez_vous()->item->organizer);
            if (!empty($delete_link)) {
                ?>

			<a href="<?php 
                echo esc_url($delete_link);
                ?>
" class="button delete-rendez-vous bp-secondary-action" id="delete-rendez-vous-<?php 
                echo rendez_vous()->item->id;
                ?>
"><?php 
                esc_html_e('Cancel Rendez-vous', 'rendez-vous');
                ?>
</a>

			<?php 
            }
        }
        if (current_user_can('edit_rendez_vous', rendez_vous()->item->id)) {
            ?>
			<input type="submit" name="_rendez_vous_edit[submit]" id="rendez-vous-edit-submit" value="<?php 
            echo esc_attr($caption);
            ?>
" class="bp-primary-action"/>
		<?php 
        }
    } else {
        if (current_user_can('subscribe_rendez_vous')) {
            if ('publish' != rendez_vous()->item->status && !in_array(bp_loggedin_user_id(), rendez_vous()->item->attendees) && bp_loggedin_user_id() != rendez_vous()->item->organizer) {
                return;
            }
            ?>
		<input type="submit" name="_rendez_vous_prefs[submit]" id="rendez-vous-prefs-submit" value="<?php 
            echo esc_attr(__('Save preferences', 'rendez-vous'));
            ?>
" class="bp-primary-action"/>
		<?php 
            if ('edit' != $view && current_user_can('edit_rendez_vous', rendez_vous()->item->id) && empty(rendez_vous()->item->def_date)) {
                ?>
			<a href="<?php 
                echo esc_url(rendez_vous_get_edit_link(rendez_vous()->item->id, rendez_vous()->item->organizer));
                ?>
#rendez-vous-set" class="button bp-secondary-action last"><?php 
                esc_html_e('Set the date', 'rendez-vous');
                ?>
</a>
			<div class="clear"/>
			<?php 
            }
        }
    }
}