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

', $messages[$m] ); } function page_scripts(){ $action = $this->current_action(); $screen = get_current_screen(); if ( in_array( $action,array( 'create', 'edit', 'add', 'update' ) ) ): wp_enqueue_script( 'eo_venue' ); wp_localize_script( 'eo_venue', 'EO_Venue', array( 'location' => get_option( 'timezone_string' ), 'draggable' => true, 'screen_id' => $screen->id) ); wp_enqueue_style( 'eventorganiser-style' ); wp_enqueue_script( 'media-upload' ); wp_enqueue_script( 'postbox' ); add_thickbox(); endif; } function set_per_page( $validated_value, $option, $value ){ //Workaround for bug http://core.trac.wordpress.org/ticket/18958 if ( 'edit_event_venue_per_page' != $option ) return $validated_value; $value = (int) $value; if ( $value < 1 || $value > 999 ) return false; return $value; } function display(){ $action = $this->current_action(); $venue = ( isset( $_REQUEST['event-venue'] ) ? $_REQUEST['event-venue'] : false ); ?>
edit_form( $venue ); else: //Else we are not creating or editing. Display table $venue_table = new EO_Venue_List_Table(); $venue_table->prepare_items(); //Check if we have searched the venues $search_term = ( isset( $_REQUEST['s'] ) ? esc_attr( $_REQUEST['s']) : '' );?>

' . __( 'Search results for “%s”' ) . '', $search_term ) ?>

search_box( __( 'Search Venues', 'eventorganiser' ), 's' ); ?> display(); ?>
term_id ) ? (int) $venue->term_id : 0; $do = ( $this->current_action() == 'edit' ? 'update' : 'add' ); $nonce = ( $do == 'update' ? 'eventorganiser_update_venue_'.$venue->slug : 'eventorganiser_add_venue' ); if ( $this->current_action() == 'edit' ) : ?>

get_columns() ? '1' : '2' ); ?>

'eo_venue[description]', 'dfw' => false, 'tabindex' => 7 ) ); ?>

get_extra_permastruct( 'event-venue' ); if ( empty( $termlink ) ){ $t = get_taxonomy( 'event-venue' ); $termlink = "?$t->query_var="; } else{ $termlink = preg_replace( '/%event-venue%/', '', $termlink ); } $termlink = home_url( $termlink ); return $termlink; } //Submit metabox function eventorganiser_venue_submit( $venue ){ $value = $venue ? __( 'Update Venue', 'eventorganiser' ) : __( 'Add Venue', 'eventorganiser' ); ?>
term_id ) ? (int) $venue->term_id : 0; $address = eo_get_venue_address( $term_id );?> $label ){ //Keys are prefixed by '_'. $key = trim( $key, '_' ); printf( '', $label, esc_attr( $key ), esc_attr( $address[$key] ), $tabindex++ ); } ?>
term_id) ? (int) $venue->term_id : 0; $name = isset( $venue->name ) ? $venue->name : ''; ?>
'', //Render a checkbox instead of text 'name' => __( 'Venue', 'eventorganiser' ), ); $address_columns = _eventorganiser_get_venue_address_fields(); foreach( $address_columns as $key => $label ) $columns['venue'.$key] = $label; $columns += array( 'venue_slug' => __( 'Slug' ), 'posts' => __( 'Events', 'eventorganiser' ), ); return $columns; }