hook = 'edit.php?post_type=event'; $this->title = __( 'Venues', 'eventorganiser' ); $this->menu = __( 'Venues', 'eventorganiser' ); $this->permissions = 'manage_venues'; $this->slug = 'venues'; //Workaround for bug http://core.trac.wordpress.org/ticket/18958 add_filter( 'set-screen-option', array( $this, 'set_per_page' ),10,3 ); } /* * Actions to be taken prior to page loading. Hooked on to load-{page} */ 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 was not 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( $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 was not 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( $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++; } endforeach; if ( $deleted > 0 ){ $url = add_query_arg( array( 'page' => 'venues', 'message' => 3, ), admin_url( 'edit.php?post_type=event' ) ); wp_redirect( $url ); exit(); } else{ $EO_Errors = new WP_Error( 'eo_error', __( 'Venue(s) were not deleted', 'eventorganiser' ) ); } break; endswitch; endif; $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 ); 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 admin_notices(){ $m = isset( $_GET['message'] ) ? (int) $_GET['message'] : 0; $messages = array( 1 => __( 'Venue created', 'eventorganiser' ), 2 => __( 'Venue updated', 'eventorganiser' ), 3 => __( 'Venue(s) deleted', 'eventorganiser' ) ); if( isset( $messages[$m]) ) printf( '
%s