Tribe__Events__Community__Main::doOrganizerForm( int $organizer_id )

The front-end “edit organizer” form.


Parameters

$organizer_id

(int) (Required) The organizer's ID.


Top ↑

Return

(string) The form.


Top ↑

Source

File: src/Tribe/Main.php

		public function doOrganizerForm( $organizer_id ) {
			$valid        = false;
			$organizer_id = intval( $organizer_id );

			add_filter( 'tribe-post-origin', array( $this, 'filterPostOrigin' ) );

			// Some preliminary checks to ensure editing the organizer is allowed.
			if ( ! $organizer_id ) {
				return '<p>' . esc_html__( 'Organizer not found.', 'tribe-events-community' ) . '</p>';
			}

			if ( Tribe__Events__Main::ORGANIZER_POST_TYPE !== get_post_type( $organizer_id ) ) {
				return '<p>' . esc_html__( 'Only an Organizer can be edited on this page.', 'tribe-events-community' ) . '</p>';
			}

			if ( ! is_user_logged_in() ) {
				return $this->login_form( esc_html__( 'Please log in to edit this organizer', 'tribe-events-community' ) );
			}

			if ( ! current_user_can( 'edit_post', $organizer_id ) ) {
				return '<p>' . esc_html__( 'You do not have permission to edit this organizer.', 'tribe-events-community' ) . '</p>';
			}

			/**
			 * Filter Community Events Required Organizer Fields
			 *
			 * @param array of fields to validate - Organizer, Phone, Website, Email
			 */
			$required_organizer_fields = apply_filters( 'tribe_events_community_required_organizer_fields', array() );

			// Begin the actual edit-organizer form now that user is confirmed to be allowed to be here.
			$this->loadScripts  = true;
			$output             = '<div id="tribe-community-events" class="form organizer">';

			if ( Tribe__Utils__Array::get( $_POST, 'community-event', false ) ) {

				if ( ! check_admin_referer( 'ecp_organizer_submission' ) ) {
					$this->enqueueOutputMessage( esc_html__( 'There was a problem updating this organizer, please try again.', 'tribe-events-community' ), 'error' );
				}

				if ( ! isset( $_POST[ 'post_title' ] ) ) {
					$this->enqueueOutputMessage( esc_html__( 'Organizer name cannot be blank.', 'tribe-events-community' ), 'error' );
				}

				$_POST['ID']             = $organizer_id;
				$scrubber                = new Tribe__Events__Community__Organizer_Submission_Scrubber( $_POST );
				$_POST                   = $scrubber->scrub();
				$invalid_fields          = array();
				$has_all_required_fields = true;

				foreach ( $required_organizer_fields as $field ) {

					// This array of required fields is shared with the submission form, on which the existence of an Organizer is not a given.
					// Here on the edit-organizer form, though, it *is* a given, so we can skip checking the parent 'Organizer' field to prevent unnecessary messages about it.
					if ( 'Organizer' === $field ) {
						continue;
					}

					$required_field = Tribe__Utils__Array::get( $_POST, array( 'organizer', $field ), '' );

					if ( empty( $required_field ) ) {
						$this->enqueueOutputMessage( sprintf( esc_html__( '%1$s required', '"{Field name} required" text for error message above edit-organizer form in Community Events.', 'tribe-events-community' ), $field ), 'error' );
						$has_all_required_fields = false;
					}
				}

				remove_action( 'save_post_'.Tribe__Events__Main::ORGANIZER_POST_TYPE, array( Tribe__Events__Main::instance(), 'save_organizer_data' ), 16, 2 );

				if ( $has_all_required_fields ) {

					wp_update_post( array(
						'post_title'   => $_POST[ 'post_title' ],
						'ID'           => $organizer_id,
						'post_content' => $_POST[ 'post_content' ],
					) );

					Tribe__Events__API::updateOrganizer( $organizer_id, $_POST['organizer'] );
					$this->enqueueOutputMessage( esc_html__( 'Organizer updated.', 'tribe-events-community' ) );
				}
			}

			global $post;
			$post = get_post( $organizer_id );

			ob_start();
			include Tribe__Events__Templates::getTemplateHierarchy( 'community/edit-organizer' );

			$output .= ob_get_clean();

			$output .= '</div>';

			remove_filter( 'tribe-post-origin', array( $this, 'filterPostOrigin' ) );

			return $output;
		}

Top ↑

Changelog

Changelog
Version Description
1.0 Introduced.