/** * Update a gig's venue and the gig count for any modified venues. * * @since 1.0.0 */ function set_audiotheme_gig_venue($gig_id, $venue_name) { $gig = get_audiotheme_gig($gig_id); // Retrieve current venue info. $venue_name = trim(stripslashes($venue_name)); if (empty($venue_name)) { p2p_delete_connections('audiotheme_venue_to_gig', array('to' => $gig_id)); } elseif (!isset($gig->venue->name) || $venue_name !== $gig->venue->name) { p2p_delete_connections('audiotheme_venue_to_gig', array('to' => $gig_id)); $new_venue = get_audiotheme_venue_by('name', $venue_name); if (!$new_venue) { $new_venue = array('name' => $venue_name, 'gig_count' => 1); // Timezone is important, so retrieve it from the global $_POST array if it exists. if (!empty($_POST['audiotheme_venue']['timezone_string'])) { $new_venue['timezone_string'] = $_POST['audiotheme_venue']['timezone_string']; } $venue_id = save_audiotheme_venue($new_venue); if ($venue_id) { p2p_create_connection('audiotheme_venue_to_gig', array('from' => $venue_id, 'to' => $gig_id)); } } else { $venue_id = $new_venue->ID; p2p_create_connection('audiotheme_venue_to_gig', array('from' => $new_venue->ID, 'to' => $gig_id)); update_audiotheme_venue_gig_count($new_venue->ID); } } if (isset($gig->venue->ID)) { $venue_id = $gig->venue->ID; update_audiotheme_venue_gig_count($venue_id); } return empty($venue_id) ? false : get_audiotheme_venue($venue_id); }
/** * Process venue add/edit actions. * * @since 1.0.0 */ function audiotheme_venue_edit_screen_process_actions() { $action = ''; if (isset($_POST['audiotheme_venue']) && isset($_POST['audiotheme_venue_nonce'])) { $data = $_POST['audiotheme_venue']; $nonce_action = empty($data['ID']) ? 'add-venue' : 'update-venue_' . $data['ID']; // Should die on error. if (check_admin_referer($nonce_action, 'audiotheme_venue_nonce')) { $action = !empty($data['ID']) ? 'edit' : 'add'; } } if (!empty($action)) { $venue_id = save_audiotheme_venue($data); $sendback = get_edit_post_link($venue_id); if ($venue_id && 'add' === $action) { $sendback = add_query_arg('message', 1, $sendback); } elseif ($venue_id && 'edit' === $action) { $sendback = add_query_arg('message', 2, $sendback); } wp_safe_redirect(esc_url_raw($sendback)); exit; } }
/** * Process actions. * * @since 1.0.0 * @see wp-admin/edit.php */ function process_actions() { global $wpdb; $action = ''; $current_user = wp_get_current_user(); $post_type_object = get_post_type_object('audiotheme_venue'); $sendback = remove_query_arg(array('deleted', 'ids', 'message', 'venue_id'), wp_get_referer()); if (!$sendback) { $sendback = get_audiotheme_venues_admin_url(); } $sendback = add_query_arg('paged', $this->get_pagenum(), $sendback); if (isset($_POST['audiotheme_venue']) && isset($_POST['audiotheme_venue_nonce'])) { $data = $_POST['audiotheme_venue']; $nonce_action = empty($data['ID']) ? 'add-venue' : 'update-venue_' . $data['ID']; // Should die on error. if (check_admin_referer($nonce_action, 'audiotheme_venue_nonce')) { $action = !empty($data['ID']) ? 'edit' : 'add'; } } elseif (isset($_REQUEST['action']) && 'delete' === $_REQUEST['action'] && !empty($_REQUEST['venue_id'])) { $post_ids = array(absint($_REQUEST['venue_id'])); if (wp_verify_nonce($_REQUEST['_wpnonce'], 'delete-venue_' . $post_ids[0])) { $action = 'delete'; $sendback = get_audiotheme_venues_admin_url(); } } elseif (!empty($_REQUEST['ids'])) { $post_ids = is_array($_REQUEST['ids']) ? $_REQUEST['ids'] : explode(',', $_REQUEST['ids']); $post_ids = array_map('absint', $post_ids); if (check_admin_referer('bulk-' . $this->_args['plural'])) { $action = $this->current_action(); } } if (!empty($action)) { switch ($action) { case 'add': case 'edit': $venue_id = save_audiotheme_venue($data); if ($venue_id && 'add' === $action) { $sendback = add_query_arg('message', 1, $sendback); } elseif ($venue_id && 'edit' === $action) { $sendback = add_query_arg('updated', 1, $sendback); } break; case 'delete': $deleted = 0; foreach ($post_ids as $post_id) { if (!current_user_can($post_type_object->cap->delete_post, $post_id)) { wp_die(__('You are not allowed to delete this item.', 'audiotheme')); } if (!wp_delete_post($post_id)) { wp_die(__('Error in deleting…', 'audiotheme')); } $deleted++; } $sendback = add_query_arg('deleted', $deleted, $sendback); break; default: break; } $sendback = remove_query_arg(array('action', 'action2'), $sendback); wp_safe_redirect(esc_url_raw($sendback)); exit; } if (!empty($_REQUEST['_wp_http_referer'])) { $redirect = remove_query_arg(array('_wp_http_referer', '_wpnonce'), stripslashes($_SERVER['REQUEST_URI'])); wp_safe_redirect(esc_url_raw($redirect)); exit; } }