/** * 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 } } } }