function page_actions() { global $EO_Errors; add_action('admin_notices', array($this, 'admin_notices')); //Determine action if any $action = $this->current_action(); $venue = isset($_REQUEST['event-venue']) ? $_REQUEST['event-venue'] : false; if ($action && $venue || $action == 'add') { if (!current_user_can('manage_venues')) { wp_die(__('You do not have permission to manage venues', 'eventorganiser')); } switch ($action) { case 'update': if (!check_admin_referer('eventorganiser_update_venue_' . $venue)) { wp_die(__('You do not have permission to edit this venue.', 'eventorganiser')); } $venue = get_term_by('slug', esc_attr($venue), 'event-venue'); $return = eo_update_venue($venue->term_id, $_POST['eo_venue']); if (is_wp_error($return)) { $EO_Errors->add('eo_error', __('Venue <strong>was not</strong> updated', 'eventorganiser') . ': ' . $return->get_error_message()); } else { $term_id = (int) $return['term_id']; $venue = get_term($term_id, 'event-venue'); $url = add_query_arg(array('page' => 'venues', 'action' => 'edit', 'event-venue' => $venue->slug, 'message' => 2), admin_url('edit.php?post_type=event')); wp_redirect(esc_url_raw($url)); exit; } break; case 'add': if (!check_admin_referer('eventorganiser_add_venue')) { wp_die(__('You do not have permission to edit this venue.', 'eventorganiser')); } $args = $_POST['eo_venue']; $name = isset($args['name']) ? $args['name'] : ''; //Venue may already exist in database since it may have been added via ajax (by pro plug-in); if (!empty($args['venue_id']) && ($_venue = eo_get_venue_by('id', $args['venue_id']))) { //Since we're updating, need to explicitly provide slug to update it. Slug will be 'new-venue'. $args['slug'] = sanitize_title($args['name']); $return = eo_update_venue($_venue->term_id, $args); } else { $return = eo_insert_venue($name, $args); } if (is_wp_error($return)) { $EO_Errors->add('eo_error', __('Venue <strong>was not</strong> created', 'eventorganiser') . ': ' . $return->get_error_message()); $_REQUEST['action'] = 'create'; } else { $term_id = (int) $return['term_id']; $venue = get_term($term_id, 'event-venue'); $url = add_query_arg(array('page' => 'venues', 'action' => 'edit', 'event-venue' => $venue->slug, 'message' => 1), admin_url('edit.php?post_type=event')); wp_redirect(esc_url_raw($url)); exit; } break; case 'delete': if (is_array($_REQUEST['event-venue'])) { $nonce = 'bulk-venues'; } else { $nonce = 'eventorganiser_delete_venue_' . $venue; } if (!check_admin_referer($nonce)) { wp_die(__('You do not have permission to delete this venue', 'eventorganiser')); } $venues = (array) $venue; //Count the number of deleted venues $deleted = 0; foreach ($venues as $venue) { $venue = get_term_by('slug', esc_attr($venue), 'event-venue'); $resp = eo_delete_venue($venue->term_id); if (!is_wp_error($resp) && true === $resp) { $deleted++; } } if ($deleted > 0) { $url = add_query_arg(array('page' => 'venues', 'message' => 3), admin_url('edit.php?post_type=event')); wp_redirect(esc_url_raw($url)); exit; } else { $EO_Errors = new WP_Error('eo_error', __('Venue(s) <strong>were not </strong> deleted', 'eventorganiser')); } break; } } $action = $this->current_action(); if (in_array($action, array('edit', 'update', 'create'))) { $venue = isset($_REQUEST['event-venue']) ? $_REQUEST['event-venue'] : false; //Venued edit page add_meta_box('submitdiv', __('Save', 'eventorganiser'), 'eventorganiser_venue_submit', 'event_page_venues', 'side', 'high'); /** * Fires after all built-in meta boxes for venues have been added. * * @param Object $venue Venue (term object) */ do_action('add_meta_boxes_event_page_venues', $venue); /** * @ignore */ do_action('add_meta_boxes', 'event_page_venues', $venue); add_screen_option('layout_columns', array('max' => 2, 'default' => 2)); } else { //Venue admin list require_once 'classes/class-eo-venue-list-table.php'; add_filter('manage_event_page_venues_columns', 'eventorganiser_venue_admin_columns'); add_screen_option('per_page', array('option' => 'edit_event_venue_per_page', 'label' => __('Venues', 'eventorganiser'), 'default' => 20)); } }
function page_actions() { global $EO_Errors; //Determine action if any $action = $this->current_action(); $venue = isset($_REQUEST['event-venue']) ? $_REQUEST['event-venue'] : false; if ($action && $venue || $action == 'add') { if (!current_user_can('manage_venues')) { wp_die(__("You do not have permission to manage venues", 'eventorganiser')); } switch ($action) { case 'update': if (!check_admin_referer('eventorganiser_update_venue_' . $venue)) { wp_die(__("You do not have permission to edit this venue.", 'eventorganiser')); } $venue = get_term_by('slug', esc_attr($venue), 'event-venue'); $return = eo_update_venue($venue->term_id, $_POST['eo_venue']); if (is_wp_error($return)) { $EO_Errors->add('eo_error', __("Venue <strong>was not</strong> updated", 'eventorganiser') . ": " . $return->get_error_message()); } else { $term_id = (int) $return['term_id']; $venue = get_term($term_id, 'event-venue'); $_REQUEST['event-venue'] = $venue->slug; $EO_Errors->add('eo_notice', __("Venue <strong>updated</strong>", 'eventorganiser')); } $_REQUEST['action'] = 'edit'; break; case 'add': if (!check_admin_referer('eventorganiser_add_venue')) { wp_die(__("You do not have permission to edit this venue.", 'eventorganiser')); } $args = $_POST['eo_venue']; $name = isset($args['name']) ? $args['name'] : ''; $return = eo_insert_venue($name, $args); if (is_wp_error($return)) { $EO_Errors->add('eo_error', __("Venue <strong>was not</strong> created", 'eventorganiser') . ": " . $return->get_error_message()); $_REQUEST['action'] = 'create'; } else { $EO_Errors->add('eo_notice', __("Venue <strong>created</strong>", 'eventorganiser')); $term_id = (int) $return['term_id']; $venue = get_term($term_id, 'event-venue'); $_REQUEST['action'] = 'edit'; $_REQUEST['event-venue'] = $venue->slug; } break; case 'delete': if (is_array($_REQUEST['event-venue'])) { $nonce = 'bulk-venues'; } else { $nonce = 'eventorganiser_delete_venue_' . $venue; } if (!check_admin_referer($nonce)) { wp_die(__("You do not have permission to delete this venue", 'eventorganiser')); } $venues = (array) $venue; //Count the number of deleted venues $deleted = 0; foreach ($venues as $venue) { $venue = get_term_by('slug', esc_attr($venue), 'event-venue'); $resp = eo_delete_venue($venue->term_id); if (!is_wp_error($resp) && true === $resp) { $deleted++; } } if ($deleted > 0) { $EO_Errors = new WP_Error('eo_notice', __("Venue(s) <strong>deleted</strong>", 'eventorganiser')); } else { $EO_Errors = new WP_Error('eo_error', __("Venue(s) <strong>were not </strong> deleted", 'eventorganiser')); } break; } } $action = $this->current_action(); if (in_array($action, array('edit', 'update', 'create'))) { $venue = isset($_REQUEST['event-venue']) ? $_REQUEST['event-venue'] : false; //Venued edit page add_meta_box('submitdiv', __('Save', 'eventorganiser'), 'eventorganiser_venue_submit', 'event_page_venues', 'side', 'high'); do_action('add_meta_boxes_event_page_venues', $venue); do_action('add_meta_boxes', 'event_page_venues', $venue); } else { //Venue admin list require_once "classes/class-eo-venue-list-table.php"; add_filter('manage_event_page_venues_columns', 'eventorganiser_venue_admin_columns'); add_screen_option('per_page', array('option' => 'edit_event_venue_per_page', 'label' => __('Venues', 'eventorganiser'), 'default' => 20)); } }