Passed
Push — add/multiplan ( 15cba9...22afe1 )
by Virginia
04:24
created
classes/post-types/class-plan.php 1 patch
Indentation   +522 added lines, -522 removed lines patch added patch discarded remove patch
@@ -10,207 +10,207 @@  discard block
 block discarded – undo
10 10
  */
11 11
 class Plan {
12 12
 
13
-	/**
14
-	 * Holds class instance
15
-	 *
16
-	 * @since 1.0.0
17
-	 *
18
-	 * @var      object \lsx_health_plan\classes\Plan()
19
-	 */
20
-	protected static $instance = null;
21
-
22
-	/**
23
-	 * Holds post_type slug used as an index
24
-	 *
25
-	 * @since 1.0.0
26
-	 *
27
-	 * @var      string
28
-	 */
29
-	public $slug = 'plan';
30
-
31
-	/**
32
-	 * Constructor
33
-	 */
34
-	public function __construct() {
35
-
36
-		add_action( 'init', array( $this, 'register_post_type' ) );
37
-		add_action( 'init', array( $this, 'plan_type_taxonomy_setup' ) );
38
-		add_action( 'init', array( $this, 'week_taxonomy_setup' ) );
39
-
40
-		// Icons for the plan types.
41
-		add_action( 'create_term', array( $this, 'save_meta' ), 10, 2 );
42
-		add_action( 'edit_term', array( $this, 'save_meta' ), 10, 2 );
43
-		$prefix_taxonomy = 'plan-type';
44
-		add_action( sprintf( '%s_edit_form_fields', $prefix_taxonomy ), array( $this, 'add_thumbnail_form_field' ), 3, 1 );
45
-
46
-		// Register the Metaboxes.
47
-		add_action( 'cmb2_admin_init', array( $this, 'featured_metabox' ), 5 );
48
-		add_action( 'cmb2_admin_init', array( $this, 'details_metaboxes' ), 5 );
49
-		add_action( 'cmb2_admin_init', array( $this, 'plan_connections' ), 5 );
50
-		add_action( 'cmb2_admin_init', array( $this, 'sections_metabox_loop' ), 1 );
51
-
52
-		add_filter( 'get_the_archive_title', array( $this, 'get_the_archive_title' ), 100 );
53
-		//add_filter( 'lsx_global_header_title', array( $this, 'hp_recipe_header_title' ), 200, 1 );
54
-
55
-		// Template Redirects.
56
-		add_filter( 'lsx_health_plan_archive_template', array( $this, 'enable_post_type' ), 10, 1 );
57
-		add_filter( 'lsx_health_plan_single_template', array( $this, 'enable_post_type' ), 10, 1 );
58
-
59
-		// Plan Archive Actions.
60
-		add_action( 'pre_get_posts', array( $this, 'set_parent_only' ), 10, 1 );
61
-		add_filter( 'get_the_archive_title', array( $this, 'get_the_archive_title' ), 100 );
62
-		add_action( 'lsx_content_top', 'lsx_hp_plan_archive_filters', 10, 1 );
63
-		add_filter( 'lsx_hp_disable_plan_archive_filters', '\lsx_health_plan\functions\plan\is_search_enabled', 10, 1 );
64
-		add_filter( 'lsx_hp_disable_plan_archive_filters', '\lsx_health_plan\functions\plan\is_filters_disabled', 10, 1 );
65
-
66
-		//Breadcrumbs
67
-		add_filter( 'woocommerce_get_breadcrumb', array( $this, 'plan_breadcrumb_filter' ), 30, 1 );
13
+     /**
14
+      * Holds class instance
15
+      *
16
+      * @since 1.0.0
17
+      *
18
+      * @var      object \lsx_health_plan\classes\Plan()
19
+      */
20
+     protected static $instance = null;
21
+
22
+     /**
23
+      * Holds post_type slug used as an index
24
+      *
25
+      * @since 1.0.0
26
+      *
27
+      * @var      string
28
+      */
29
+     public $slug = 'plan';
30
+
31
+     /**
32
+      * Constructor
33
+      */
34
+     public function __construct() {
35
+
36
+          add_action( 'init', array( $this, 'register_post_type' ) );
37
+          add_action( 'init', array( $this, 'plan_type_taxonomy_setup' ) );
38
+          add_action( 'init', array( $this, 'week_taxonomy_setup' ) );
39
+
40
+          // Icons for the plan types.
41
+          add_action( 'create_term', array( $this, 'save_meta' ), 10, 2 );
42
+          add_action( 'edit_term', array( $this, 'save_meta' ), 10, 2 );
43
+          $prefix_taxonomy = 'plan-type';
44
+          add_action( sprintf( '%s_edit_form_fields', $prefix_taxonomy ), array( $this, 'add_thumbnail_form_field' ), 3, 1 );
45
+
46
+          // Register the Metaboxes.
47
+          add_action( 'cmb2_admin_init', array( $this, 'featured_metabox' ), 5 );
48
+          add_action( 'cmb2_admin_init', array( $this, 'details_metaboxes' ), 5 );
49
+          add_action( 'cmb2_admin_init', array( $this, 'plan_connections' ), 5 );
50
+          add_action( 'cmb2_admin_init', array( $this, 'sections_metabox_loop' ), 1 );
51
+
52
+          add_filter( 'get_the_archive_title', array( $this, 'get_the_archive_title' ), 100 );
53
+          //add_filter( 'lsx_global_header_title', array( $this, 'hp_recipe_header_title' ), 200, 1 );
54
+
55
+          // Template Redirects.
56
+          add_filter( 'lsx_health_plan_archive_template', array( $this, 'enable_post_type' ), 10, 1 );
57
+          add_filter( 'lsx_health_plan_single_template', array( $this, 'enable_post_type' ), 10, 1 );
58
+
59
+          // Plan Archive Actions.
60
+          add_action( 'pre_get_posts', array( $this, 'set_parent_only' ), 10, 1 );
61
+          add_filter( 'get_the_archive_title', array( $this, 'get_the_archive_title' ), 100 );
62
+          add_action( 'lsx_content_top', 'lsx_hp_plan_archive_filters', 10, 1 );
63
+          add_filter( 'lsx_hp_disable_plan_archive_filters', '\lsx_health_plan\functions\plan\is_search_enabled', 10, 1 );
64
+          add_filter( 'lsx_hp_disable_plan_archive_filters', '\lsx_health_plan\functions\plan\is_filters_disabled', 10, 1 );
65
+
66
+          //Breadcrumbs
67
+          add_filter( 'woocommerce_get_breadcrumb', array( $this, 'plan_breadcrumb_filter' ), 30, 1 );
68 68
 		
69
-	}
70
-
71
-	/**
72
-	 * Return an instance of this class.
73
-	 *
74
-	 * @since 1.0.0
75
-	 *
76
-	 * @return    object \lsx_health_plan\classes\Meal_Plan()    A single instance of this class.
77
-	 */
78
-	public static function get_instance() {
79
-		// If the single instance hasn't been set, set it now.
80
-		if ( null === self::$instance ) {
81
-			self::$instance = new self();
82
-		}
83
-		return self::$instance;
84
-	}
85
-	/**
86
-	 * Register the post type.
87
-	 */
88
-	public function register_post_type() {
89
-		$labels = array(
90
-			'name'               => esc_html__( 'Plans', 'lsx-health-plan' ),
91
-			'singular_name'      => esc_html__( 'Plan', 'lsx-health-plan' ),
92
-			'add_new'            => esc_html_x( 'Add New', 'post type general name', 'lsx-health-plan' ),
93
-			'add_new_item'       => esc_html__( 'Add New', 'lsx-health-plan' ),
94
-			'edit_item'          => esc_html__( 'Edit', 'lsx-health-plan' ),
95
-			'new_item'           => esc_html__( 'New', 'lsx-health-plan' ),
96
-			'all_items'          => esc_html__( 'All Plans', 'lsx-health-plan' ),
97
-			'view_item'          => esc_html__( 'View', 'lsx-health-plan' ),
98
-			'search_items'       => esc_html__( 'Search', 'lsx-health-plan' ),
99
-			'not_found'          => esc_html__( 'None found', 'lsx-health-plan' ),
100
-			'not_found_in_trash' => esc_html__( 'None found in Trash', 'lsx-health-plan' ),
101
-			'parent_item_colon'  => '',
102
-			'menu_name'          => esc_html__( 'Plans', 'lsx-health-plan' ),
103
-		);
104
-		$args   = array(
105
-			'labels'             => $labels,
106
-			'public'             => true,
107
-			'publicly_queryable' => true,
108
-			'show_ui'            => true,
109
-			'show_in_menu'       => true,
110
-			'show_in_rest'       => true,
111
-			'menu_icon'          => 'dashicons-welcome-write-blog',
112
-			'query_var'          => true,
113
-			'rewrite'            => array(
114
-				'slug' => \lsx_health_plan\functions\get_option( 'plan_single_slug', 'plan' ),
115
-			),
116
-			'capability_type'    => 'page',
117
-			'has_archive'        => \lsx_health_plan\functions\get_option( 'endpoint_plan_archive', 'plans' ),
118
-			'hierarchical'       => false,
119
-			'menu_position'      => null,
120
-			'supports'           => array(
121
-				'title',
122
-				'editor',
123
-				'thumbnail',
124
-				'page-attributes',
125
-				'custom-fields',
126
-			),
127
-		);
128
-		register_post_type( 'plan', $args );
129
-	}
130
-
131
-	/**
132
-	 * Register the Type taxonomy.
133
-	 */
134
-	public function plan_type_taxonomy_setup() {
135
-		$labels = array(
136
-			'name'              => esc_html_x( 'Plan Type', 'taxonomy general name', 'lsx-health-plan' ),
137
-			'singular_name'     => esc_html_x( 'Plan Type', 'taxonomy singular name', 'lsx-health-plan' ),
138
-			'search_items'      => esc_html__( 'Search', 'lsx-health-plan' ),
139
-			'all_items'         => esc_html__( 'All', 'lsx-health-plan' ),
140
-			'parent_item'       => esc_html__( 'Parent', 'lsx-health-plan' ),
141
-			'parent_item_colon' => esc_html__( 'Parent:', 'lsx-health-plan' ),
142
-			'edit_item'         => esc_html__( 'Edit', 'lsx-health-plan' ),
143
-			'update_item'       => esc_html__( 'Update', 'lsx-health-plan' ),
144
-			'add_new_item'      => esc_html__( 'Add New', 'lsx-health-plan' ),
145
-			'new_item_name'     => esc_html__( 'New Name', 'lsx-health-plan' ),
146
-			'menu_name'         => esc_html__( 'Plan Types', 'lsx-health-plan' ),
147
-		);
148
-
149
-		$args = array(
150
-			'hierarchical'      => true,
151
-			'labels'            => $labels,
152
-			'show_ui'           => true,
153
-			'show_admin_column' => true,
154
-			'query_var'         => true,
155
-			'rewrite'           => array(
156
-				'slug' => 'plan-type',
157
-			),
158
-		);
159
-
160
-		register_taxonomy( 'plan-type', array( 'plan' ), $args );
161
-	}
162
-
163
-	/**
164
-	 * Register the Week taxonomy.
165
-	 */
166
-	public function week_taxonomy_setup() {
167
-		$labels = array(
168
-			'name'              => esc_html_x( 'Week', 'taxonomy general name', 'lsx-health-plan' ),
169
-			'singular_name'     => esc_html_x( 'Week', 'taxonomy singular name', 'lsx-health-plan' ),
170
-			'search_items'      => esc_html__( 'Search', 'lsx-health-plan' ),
171
-			'all_items'         => esc_html__( 'All', 'lsx-health-plan' ),
172
-			'parent_item'       => esc_html__( 'Parent', 'lsx-health-plan' ),
173
-			'parent_item_colon' => esc_html__( 'Parent:', 'lsx-health-plan' ),
174
-			'edit_item'         => esc_html__( 'Edit', 'lsx-health-plan' ),
175
-			'update_item'       => esc_html__( 'Update', 'lsx-health-plan' ),
176
-			'add_new_item'      => esc_html__( 'Add New', 'lsx-health-plan' ),
177
-			'new_item_name'     => esc_html__( 'New Name', 'lsx-health-plan' ),
178
-			'menu_name'         => esc_html__( 'Weeks', 'lsx-health-plan' ),
179
-		);
180
-
181
-		$args = array(
182
-			'hierarchical'      => true,
183
-			'labels'            => $labels,
184
-			'show_ui'           => true,
185
-			'show_admin_column' => true,
186
-			'query_var'         => true,
187
-			'show_in_rest'      => true,
188
-			'rewrite'           => array(
189
-				'slug' => 'week',
190
-			),
191
-		);
192
-
193
-		register_taxonomy( 'week', array( 'plan' ), $args );
194
-	}
195
-
196
-	/**
197
-	 * Output the form field for this metadata when adding a new term
198
-	 *
199
-	 * @since 0.1.0
200
-	 */
201
-	public function add_thumbnail_form_field( $term = false ) {
202
-		if ( is_object( $term ) ) {
203
-			$value         = get_term_meta( $term->term_id, 'thumbnail', true );
204
-			$image_preview = wp_get_attachment_image_src( $value, 'thumbnail' );
205
-
206
-			if ( is_array( $image_preview ) ) {
207
-				$image_preview = '<img style="height: 50px; width: 50px;" src="' . esc_url( $image_preview[0] ) . '" width="' . $image_preview[1] . '" height="' . $image_preview[2] . '" class="alignnone size-thumbnail d wp-image-' . $value . '" />';
208
-			}
209
-		} else {
210
-			$image_preview = false;
211
-			$value         = false;
212
-		}
213
-		?>
69
+     }
70
+
71
+     /**
72
+      * Return an instance of this class.
73
+      *
74
+      * @since 1.0.0
75
+      *
76
+      * @return    object \lsx_health_plan\classes\Meal_Plan()    A single instance of this class.
77
+      */
78
+     public static function get_instance() {
79
+          // If the single instance hasn't been set, set it now.
80
+          if ( null === self::$instance ) {
81
+               self::$instance = new self();
82
+          }
83
+          return self::$instance;
84
+     }
85
+     /**
86
+      * Register the post type.
87
+      */
88
+     public function register_post_type() {
89
+          $labels = array(
90
+               'name'               => esc_html__( 'Plans', 'lsx-health-plan' ),
91
+               'singular_name'      => esc_html__( 'Plan', 'lsx-health-plan' ),
92
+               'add_new'            => esc_html_x( 'Add New', 'post type general name', 'lsx-health-plan' ),
93
+               'add_new_item'       => esc_html__( 'Add New', 'lsx-health-plan' ),
94
+               'edit_item'          => esc_html__( 'Edit', 'lsx-health-plan' ),
95
+               'new_item'           => esc_html__( 'New', 'lsx-health-plan' ),
96
+               'all_items'          => esc_html__( 'All Plans', 'lsx-health-plan' ),
97
+               'view_item'          => esc_html__( 'View', 'lsx-health-plan' ),
98
+               'search_items'       => esc_html__( 'Search', 'lsx-health-plan' ),
99
+               'not_found'          => esc_html__( 'None found', 'lsx-health-plan' ),
100
+               'not_found_in_trash' => esc_html__( 'None found in Trash', 'lsx-health-plan' ),
101
+               'parent_item_colon'  => '',
102
+               'menu_name'          => esc_html__( 'Plans', 'lsx-health-plan' ),
103
+          );
104
+          $args   = array(
105
+               'labels'             => $labels,
106
+               'public'             => true,
107
+               'publicly_queryable' => true,
108
+               'show_ui'            => true,
109
+               'show_in_menu'       => true,
110
+               'show_in_rest'       => true,
111
+               'menu_icon'          => 'dashicons-welcome-write-blog',
112
+               'query_var'          => true,
113
+               'rewrite'            => array(
114
+                    'slug' => \lsx_health_plan\functions\get_option( 'plan_single_slug', 'plan' ),
115
+               ),
116
+               'capability_type'    => 'page',
117
+               'has_archive'        => \lsx_health_plan\functions\get_option( 'endpoint_plan_archive', 'plans' ),
118
+               'hierarchical'       => false,
119
+               'menu_position'      => null,
120
+               'supports'           => array(
121
+                    'title',
122
+                    'editor',
123
+                    'thumbnail',
124
+                    'page-attributes',
125
+                    'custom-fields',
126
+               ),
127
+          );
128
+          register_post_type( 'plan', $args );
129
+     }
130
+
131
+     /**
132
+      * Register the Type taxonomy.
133
+      */
134
+     public function plan_type_taxonomy_setup() {
135
+          $labels = array(
136
+               'name'              => esc_html_x( 'Plan Type', 'taxonomy general name', 'lsx-health-plan' ),
137
+               'singular_name'     => esc_html_x( 'Plan Type', 'taxonomy singular name', 'lsx-health-plan' ),
138
+               'search_items'      => esc_html__( 'Search', 'lsx-health-plan' ),
139
+               'all_items'         => esc_html__( 'All', 'lsx-health-plan' ),
140
+               'parent_item'       => esc_html__( 'Parent', 'lsx-health-plan' ),
141
+               'parent_item_colon' => esc_html__( 'Parent:', 'lsx-health-plan' ),
142
+               'edit_item'         => esc_html__( 'Edit', 'lsx-health-plan' ),
143
+               'update_item'       => esc_html__( 'Update', 'lsx-health-plan' ),
144
+               'add_new_item'      => esc_html__( 'Add New', 'lsx-health-plan' ),
145
+               'new_item_name'     => esc_html__( 'New Name', 'lsx-health-plan' ),
146
+               'menu_name'         => esc_html__( 'Plan Types', 'lsx-health-plan' ),
147
+          );
148
+
149
+          $args = array(
150
+               'hierarchical'      => true,
151
+               'labels'            => $labels,
152
+               'show_ui'           => true,
153
+               'show_admin_column' => true,
154
+               'query_var'         => true,
155
+               'rewrite'           => array(
156
+                    'slug' => 'plan-type',
157
+               ),
158
+          );
159
+
160
+          register_taxonomy( 'plan-type', array( 'plan' ), $args );
161
+     }
162
+
163
+     /**
164
+      * Register the Week taxonomy.
165
+      */
166
+     public function week_taxonomy_setup() {
167
+          $labels = array(
168
+               'name'              => esc_html_x( 'Week', 'taxonomy general name', 'lsx-health-plan' ),
169
+               'singular_name'     => esc_html_x( 'Week', 'taxonomy singular name', 'lsx-health-plan' ),
170
+               'search_items'      => esc_html__( 'Search', 'lsx-health-plan' ),
171
+               'all_items'         => esc_html__( 'All', 'lsx-health-plan' ),
172
+               'parent_item'       => esc_html__( 'Parent', 'lsx-health-plan' ),
173
+               'parent_item_colon' => esc_html__( 'Parent:', 'lsx-health-plan' ),
174
+               'edit_item'         => esc_html__( 'Edit', 'lsx-health-plan' ),
175
+               'update_item'       => esc_html__( 'Update', 'lsx-health-plan' ),
176
+               'add_new_item'      => esc_html__( 'Add New', 'lsx-health-plan' ),
177
+               'new_item_name'     => esc_html__( 'New Name', 'lsx-health-plan' ),
178
+               'menu_name'         => esc_html__( 'Weeks', 'lsx-health-plan' ),
179
+          );
180
+
181
+          $args = array(
182
+               'hierarchical'      => true,
183
+               'labels'            => $labels,
184
+               'show_ui'           => true,
185
+               'show_admin_column' => true,
186
+               'query_var'         => true,
187
+               'show_in_rest'      => true,
188
+               'rewrite'           => array(
189
+                    'slug' => 'week',
190
+               ),
191
+          );
192
+
193
+          register_taxonomy( 'week', array( 'plan' ), $args );
194
+     }
195
+
196
+     /**
197
+      * Output the form field for this metadata when adding a new term
198
+      *
199
+      * @since 0.1.0
200
+      */
201
+     public function add_thumbnail_form_field( $term = false ) {
202
+          if ( is_object( $term ) ) {
203
+               $value         = get_term_meta( $term->term_id, 'thumbnail', true );
204
+               $image_preview = wp_get_attachment_image_src( $value, 'thumbnail' );
205
+
206
+               if ( is_array( $image_preview ) ) {
207
+                    $image_preview = '<img style="height: 50px; width: 50px;" src="' . esc_url( $image_preview[0] ) . '" width="' . $image_preview[1] . '" height="' . $image_preview[2] . '" class="alignnone size-thumbnail d wp-image-' . $value . '" />';
208
+               }
209
+          } else {
210
+               $image_preview = false;
211
+               $value         = false;
212
+          }
213
+          ?>
214 214
 		<tr class="form-field form-required term-thumbnail-wrap">
215 215
 			<th scope="row"><label for="thumbnail"><?php esc_html_e( 'Icon Image', 'lsx-health-plan' ); ?></label></th>
216 216
 			<td>
@@ -224,331 +224,331 @@  discard block
 block discarded – undo
224 224
 			</td>
225 225
 		</tr>
226 226
 		<?php
227
-	}
228
-
229
-	/**
230
-	 * Saves the Taxonomy term icon image
231
-	 *
232
-	 * @since 0.1.0
233
-	 *
234
-	 * @param  int    $term_id
235
-	 * @param  string $taxonomy
236
-	 */
237
-	public function save_meta( $term_id = 0, $taxonomy = '' ) {
238
-		if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
239
-			return;
240
-		}
241
-
242
-		if ( ! isset( $_POST['thumbnail'] ) ) {
243
-			return;
244
-		}
245
-
246
-		if ( check_admin_referer( 'lsx_hp_term_thumbnail_nonce', 'lsx_hp_term_thumbnail_nonce' ) ) {
247
-			if ( ! isset( $_POST['thumbnail'] ) ) {
248
-				return;
249
-			}
250
-
251
-			$thumbnail_meta = sanitize_text_field( $_POST['thumbnail'] );
252
-			$thumbnail_meta = ! empty( $thumbnail_meta ) ? $thumbnail_meta : '';
253
-
254
-			if ( empty( $thumbnail_meta ) ) {
255
-				delete_term_meta( $term_id, 'thumbnail' );
256
-			} else {
257
-				update_term_meta( $term_id, 'thumbnail', $thumbnail_meta );
258
-			}
259
-		}
260
-	}
261
-
262
-	/**
263
-	 * Define the metabox and field configurations.
264
-	 */
265
-	public function details_metaboxes() {
266
-		$cmb = new_cmb2_box( array(
267
-			'id'           => $this->slug . '_details_metabox',
268
-			'title'        => __( 'Details', 'lsx-health-plan' ),
269
-			'object_types' => array( $this->slug ), // Post type
270
-			'context'      => 'normal',
271
-			'priority'     => 'high',
272
-			'show_names'   => true,
273
-		) );
274
-
275
-		$cmb->add_field( array(
276
-			'name' => __( 'Plan Short Description', 'lsx-health-plan' ),
277
-			'id'   => $this->slug . '_short_description',
278
-			'type' => 'textarea_small',
279
-			'desc' => __( 'Add a small description for this plan (optional)', 'lsx-health-plan' ),
280
-		) );
281
-
282
-		$warmup_type = 'page';
283
-		if ( false !== \lsx_health_plan\functions\get_option( 'exercise_enabled', false ) ) {
284
-			$warmup_type = array( 'page', 'workout' );
285
-		}
286
-		$cmb->add_field( array(
287
-			'name'       => __( 'Warmup', 'lsx-health-plan' ),
288
-			'desc'       => __( 'Connect the warm up page that applies to this day plan using the field provided.', 'lsx-health-plan' ),
289
-			'id'         => $this->slug . '_warmup',
290
-			'type'       => 'post_search_ajax',
291
-			// Optional :
292
-			'limit'      => 3,  // Limit selection to X items only (default 1)
293
-			'sortable'   => true, // Allow selected items to be sortable (default false)
294
-			'query_args' => array(
295
-				'post_type'      => $warmup_type,
296
-				'post_status'    => array( 'publish' ),
297
-				'posts_per_page' => -1,
298
-			),
299
-		) );
300
-	}
301
-
302
-	/**
303
-	 * Adds the post type to the different arrays.
304
-	 *
305
-	 * @param array $post_types
306
-	 * @return array
307
-	 */
308
-	public function enable_post_type( $post_types = array() ) {
309
-		$post_types[] = $this->slug;
310
-		return $post_types;
311
-	}
312
-
313
-	/**
314
-	 * Registers the workout connections on the plan post type.
315
-	 *
316
-	 * @return void
317
-	 */
318
-	public function plan_connections() {
319
-		$cmb = new_cmb2_box(
320
-			array(
321
-				'id'           => $this->slug . '_connections_metabox',
322
-				'title'        => __( 'Plans', 'lsx-health-plan' ),
323
-				'object_types' => array( 'workout', 'meal', 'tip', 'recipe' ),
324
-				'context'      => 'normal',
325
-				'priority'     => 'high',
326
-				'show_names'   => true,
327
-			)
328
-		);
329
-		$cmb->add_field(
330
-			array(
331
-				'name'       => __( 'Plan', 'lsx-health-plan' ),
332
-				'id'         => 'connected_plans',
333
-				'desc'       => __( 'Connect this to the day plan it applies to, using the field provided.', 'lsx-health-plan' ),
334
-				'type'       => 'post_search_ajax',
335
-				'limit'      => 15,
336
-				'sortable'   => true,
337
-				'query_args' => array(
338
-					'post_type'      => array( 'plan' ),
339
-					'post_status'    => array( 'publish' ),
340
-					'posts_per_page' => -1,
341
-				),
342
-			)
343
-		);
344
-	}
345
-
346
-	/**
347
-	 * Remove the "Archives:" from the post type.
348
-	 *
349
-	 * @param string $title the term title.
350
-	 * @return string
351
-	 */
352
-	public function get_the_archive_title( $title ) {
353
-		if ( is_post_type_archive( 'plan' ) ) {
354
-			$title = __( 'Our health plans', 'lsx-health-plan' );
355
-		}
356
-		return $title;
357
-	}
358
-
359
-	/**
360
-	 * Set the post type archive to show the parent plans only.
361
-	 *
362
-	 * @param object $wp_query
363
-	 * @return array
364
-	 */
365
-	public function set_parent_only( $wp_query ) {
366
-		if ( ! is_admin() && $wp_query->is_main_query() && ( $wp_query->is_post_type_archive( 'plan' ) || $wp_query->is_tax( 'plan-type' ) ) ) {
367
-			$wp_query->set( 'post_parent', '0' );
368
-		}
369
-	}
370
-
371
-	/**
372
-	 * Define the metabox and field configurations.
373
-	 */
374
-	public function featured_metabox() {
375
-		$cmb = new_cmb2_box(
376
-			array(
377
-				'id'           => $this->slug . '_featured_metabox_plan',
378
-				'title'        => __( 'Featured Plan', 'lsx-health-plan' ),
379
-				'object_types' => array( $this->slug ), // Post type
380
-				'context'      => 'side',
381
-				'priority'     => 'high',
382
-				'show_names'   => true,
383
-			)
384
-		);
385
-		$cmb->add_field(
386
-			array(
387
-				'name'       => __( 'Featured Plan', 'lsx-health-plan' ),
388
-				'desc'       => __( 'Enable a featured plan' ),
389
-				'id'         => $this->slug . '_featured_plan',
390
-				'type'       => 'checkbox',
391
-				'show_on_cb' => 'cmb2_hide_if_no_cats',
392
-			)
393
-		);
394
-	}
395
-
396
-	/**
397
-	 * Define the metabox and field configurations.
398
-	 */
399
-	public function sections_metabox_loop() {
400
-		$cmb = new_cmb2_box(
401
-			array(
402
-				'id'           => $this->slug . '_sections_metabox',
403
-				'title'        => __( 'Sections', 'lsx-health-plan' ),
404
-				'object_types' => array( $this->slug ), // Post type.
405
-				'context'      => 'normal',
406
-				'priority'     => 'low',
407
-				'show_names'   => true,
408
-			)
409
-		);
410
-
411
-		/*
227
+     }
228
+
229
+     /**
230
+      * Saves the Taxonomy term icon image
231
+      *
232
+      * @since 0.1.0
233
+      *
234
+      * @param  int    $term_id
235
+      * @param  string $taxonomy
236
+      */
237
+     public function save_meta( $term_id = 0, $taxonomy = '' ) {
238
+          if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
239
+               return;
240
+          }
241
+
242
+          if ( ! isset( $_POST['thumbnail'] ) ) {
243
+               return;
244
+          }
245
+
246
+          if ( check_admin_referer( 'lsx_hp_term_thumbnail_nonce', 'lsx_hp_term_thumbnail_nonce' ) ) {
247
+               if ( ! isset( $_POST['thumbnail'] ) ) {
248
+                    return;
249
+               }
250
+
251
+               $thumbnail_meta = sanitize_text_field( $_POST['thumbnail'] );
252
+               $thumbnail_meta = ! empty( $thumbnail_meta ) ? $thumbnail_meta : '';
253
+
254
+               if ( empty( $thumbnail_meta ) ) {
255
+                    delete_term_meta( $term_id, 'thumbnail' );
256
+               } else {
257
+                    update_term_meta( $term_id, 'thumbnail', $thumbnail_meta );
258
+               }
259
+          }
260
+     }
261
+
262
+     /**
263
+      * Define the metabox and field configurations.
264
+      */
265
+     public function details_metaboxes() {
266
+          $cmb = new_cmb2_box( array(
267
+               'id'           => $this->slug . '_details_metabox',
268
+               'title'        => __( 'Details', 'lsx-health-plan' ),
269
+               'object_types' => array( $this->slug ), // Post type
270
+               'context'      => 'normal',
271
+               'priority'     => 'high',
272
+               'show_names'   => true,
273
+          ) );
274
+
275
+          $cmb->add_field( array(
276
+               'name' => __( 'Plan Short Description', 'lsx-health-plan' ),
277
+               'id'   => $this->slug . '_short_description',
278
+               'type' => 'textarea_small',
279
+               'desc' => __( 'Add a small description for this plan (optional)', 'lsx-health-plan' ),
280
+          ) );
281
+
282
+          $warmup_type = 'page';
283
+          if ( false !== \lsx_health_plan\functions\get_option( 'exercise_enabled', false ) ) {
284
+               $warmup_type = array( 'page', 'workout' );
285
+          }
286
+          $cmb->add_field( array(
287
+               'name'       => __( 'Warmup', 'lsx-health-plan' ),
288
+               'desc'       => __( 'Connect the warm up page that applies to this day plan using the field provided.', 'lsx-health-plan' ),
289
+               'id'         => $this->slug . '_warmup',
290
+               'type'       => 'post_search_ajax',
291
+               // Optional :
292
+               'limit'      => 3,  // Limit selection to X items only (default 1)
293
+               'sortable'   => true, // Allow selected items to be sortable (default false)
294
+               'query_args' => array(
295
+                    'post_type'      => $warmup_type,
296
+                    'post_status'    => array( 'publish' ),
297
+                    'posts_per_page' => -1,
298
+               ),
299
+          ) );
300
+     }
301
+
302
+     /**
303
+      * Adds the post type to the different arrays.
304
+      *
305
+      * @param array $post_types
306
+      * @return array
307
+      */
308
+     public function enable_post_type( $post_types = array() ) {
309
+          $post_types[] = $this->slug;
310
+          return $post_types;
311
+     }
312
+
313
+     /**
314
+      * Registers the workout connections on the plan post type.
315
+      *
316
+      * @return void
317
+      */
318
+     public function plan_connections() {
319
+          $cmb = new_cmb2_box(
320
+               array(
321
+                    'id'           => $this->slug . '_connections_metabox',
322
+                    'title'        => __( 'Plans', 'lsx-health-plan' ),
323
+                    'object_types' => array( 'workout', 'meal', 'tip', 'recipe' ),
324
+                    'context'      => 'normal',
325
+                    'priority'     => 'high',
326
+                    'show_names'   => true,
327
+               )
328
+          );
329
+          $cmb->add_field(
330
+               array(
331
+                    'name'       => __( 'Plan', 'lsx-health-plan' ),
332
+                    'id'         => 'connected_plans',
333
+                    'desc'       => __( 'Connect this to the day plan it applies to, using the field provided.', 'lsx-health-plan' ),
334
+                    'type'       => 'post_search_ajax',
335
+                    'limit'      => 15,
336
+                    'sortable'   => true,
337
+                    'query_args' => array(
338
+                         'post_type'      => array( 'plan' ),
339
+                         'post_status'    => array( 'publish' ),
340
+                         'posts_per_page' => -1,
341
+                    ),
342
+               )
343
+          );
344
+     }
345
+
346
+     /**
347
+      * Remove the "Archives:" from the post type.
348
+      *
349
+      * @param string $title the term title.
350
+      * @return string
351
+      */
352
+     public function get_the_archive_title( $title ) {
353
+          if ( is_post_type_archive( 'plan' ) ) {
354
+               $title = __( 'Our health plans', 'lsx-health-plan' );
355
+          }
356
+          return $title;
357
+     }
358
+
359
+     /**
360
+      * Set the post type archive to show the parent plans only.
361
+      *
362
+      * @param object $wp_query
363
+      * @return array
364
+      */
365
+     public function set_parent_only( $wp_query ) {
366
+          if ( ! is_admin() && $wp_query->is_main_query() && ( $wp_query->is_post_type_archive( 'plan' ) || $wp_query->is_tax( 'plan-type' ) ) ) {
367
+               $wp_query->set( 'post_parent', '0' );
368
+          }
369
+     }
370
+
371
+     /**
372
+      * Define the metabox and field configurations.
373
+      */
374
+     public function featured_metabox() {
375
+          $cmb = new_cmb2_box(
376
+               array(
377
+                    'id'           => $this->slug . '_featured_metabox_plan',
378
+                    'title'        => __( 'Featured Plan', 'lsx-health-plan' ),
379
+                    'object_types' => array( $this->slug ), // Post type
380
+                    'context'      => 'side',
381
+                    'priority'     => 'high',
382
+                    'show_names'   => true,
383
+               )
384
+          );
385
+          $cmb->add_field(
386
+               array(
387
+                    'name'       => __( 'Featured Plan', 'lsx-health-plan' ),
388
+                    'desc'       => __( 'Enable a featured plan' ),
389
+                    'id'         => $this->slug . '_featured_plan',
390
+                    'type'       => 'checkbox',
391
+                    'show_on_cb' => 'cmb2_hide_if_no_cats',
392
+               )
393
+          );
394
+     }
395
+
396
+     /**
397
+      * Define the metabox and field configurations.
398
+      */
399
+     public function sections_metabox_loop() {
400
+          $cmb = new_cmb2_box(
401
+               array(
402
+                    'id'           => $this->slug . '_sections_metabox',
403
+                    'title'        => __( 'Sections', 'lsx-health-plan' ),
404
+                    'object_types' => array( $this->slug ), // Post type.
405
+                    'context'      => 'normal',
406
+                    'priority'     => 'low',
407
+                    'show_names'   => true,
408
+               )
409
+          );
410
+
411
+          /*
412 412
 		This is where the repeatable group is defined, each field has the same ID as the legacy field.
413 413
 		There is a function which runs and adds to looped fields to individual fields for WP Query compatability.
414 414
 		*/
415
-		$group = $cmb->add_field(
416
-			array(
417
-				'id'      => $this->slug . '_sections',
418
-				'type'    => 'group',
419
-				'options' => array(
420
-					'group_title'   => __( 'Section', 'lsx-health-plan' ) . ' {#}', // {#} gets replaced by row number
421
-					'add_button'    => __( 'Add section', 'lsx-health-plan' ),
422
-					'remove_button' => __( 'Remove section', 'lsx-health-plan' ),
423
-					'sortable'      => true,
424
-					'closed'        => true, // true to have the groups closed by default
425
-				),
426
-				'classes' => 'lsx-admin-row',
415
+          $group = $cmb->add_field(
416
+               array(
417
+                    'id'      => $this->slug . '_sections',
418
+                    'type'    => 'group',
419
+                    'options' => array(
420
+                         'group_title'   => __( 'Section', 'lsx-health-plan' ) . ' {#}', // {#} gets replaced by row number
421
+                         'add_button'    => __( 'Add section', 'lsx-health-plan' ),
422
+                         'remove_button' => __( 'Remove section', 'lsx-health-plan' ),
423
+                         'sortable'      => true,
424
+                         'closed'        => true, // true to have the groups closed by default
425
+                    ),
426
+                    'classes' => 'lsx-admin-row',
427 427
 				
428
-			)
429
-		);
430
-
431
-		$cmb->add_group_field(
432
-			$group,
433
-			array(
434
-				'name'       => __( 'Title', 'lsx-health-plan' ),
435
-				'id'         => 'title',
436
-				'type'       => 'text',
437
-				'desc'       => __( 'e.g Day 1 / Week 1', 'lsx-health-plan' ),
438
-				'classes'    => 'lsx-field-col  lsx-field-col-50',
439
-			)
440
-		);
441
-
442
-		$cmb->add_group_field(
443
-			$group,
444
-			array(
445
-				'name'       => __( 'Group', 'lsx-health-plan' ),
446
-				'id'         => 'group',
447
-				'type'       => 'text',
448
-				'desc'       => __( 'e.g Week 1 / January', 'lsx-health-plan' ),
449
-				'classes'    => 'lsx-field-col  lsx-field-col-50',
450
-			)
451
-		);
452
-
453
-		$cmb->add_group_field(
454
-			$group,
455
-			array(
456
-				'name' => __( 'Overview', 'lsx-health-plan' ),
457
-				'id'   => 'description',
458
-				'type' => 'wysiwyg',
459
-			)
460
-		);
461
-
462
-		if ( post_type_exists( 'workout' ) ) {
463
-			$cmb->add_group_field(
464
-				$group,
465
-				array(
466
-					'name'       => __( 'Workouts', 'lsx-health-plan' ),
467
-					'id'         => 'connected_workouts',
468
-					'desc'       => __( 'Connect the workout(s) that apply to this section.', 'lsx-health-plan' ),
469
-					'type'       => 'post_search_ajax',
470
-					'limit'      => 15,
471
-					'sortable'   => true,
472
-					'query_args' => array(
473
-						'post_type'      => array( 'workout' ),
474
-						'post_status'    => array( 'publish' ),
475
-						'posts_per_page' => -1,
476
-					),
477
-					'classes'    => 'lsx-field-col lsx-field-add-field  lsx-field-col-50',
478
-				)
479
-			);
480
-		}
481
-
482
-		if ( post_type_exists( 'meal' ) ) {
483
-			$cmb->add_group_field(
484
-				$group,
485
-				array(
486
-					'name'       => __( 'Meals', 'lsx-health-plan' ),
487
-					'desc'       => __( 'Connect the meal(s) that apply to this section.', 'lsx-health-plan' ),
488
-					'id'         => 'connected_meals',
489
-					'type'       => 'post_search_ajax',
490
-					// Optional :
491
-					'limit'      => 15, // Limit selection to X items only (default 1)
492
-					'sortable'   => true, // Allow selected items to be sortable (default false)
493
-					'query_args' => array(
494
-						'post_type'      => array( 'meal' ),
495
-						'post_status'    => array( 'publish' ),
496
-						'posts_per_page' => -1,
497
-					),
498
-					'classes'    => 'lsx-field-col lsx-field-add-field  lsx-field-col-50',
499
-				)
500
-			);
501
-		}
502
-		if ( post_type_exists( 'tip' ) ) {
503
-			$cmb->add_group_field(
504
-				$group,
505
-				array(
506
-					'name'       => __( 'Tips', 'lsx-health-plan' ),
507
-					'id'         => 'connected_tips',
508
-					'desc'       => __( 'Connect the tip(s) that apply to this section.', 'lsx-health-plan' ),
509
-					'type'       => 'post_search_ajax',
510
-					// Optional :
511
-					'limit'      => 15,  // Limit selection to X items only (default 1)
512
-					'sortable'   => true,  // Allow selected items to be sortable (default false)
513
-					'query_args' => array(
514
-						'post_type'      => array( 'tip' ),
515
-						'post_status'    => array( 'publish' ),
516
-						'posts_per_page' => -1,
517
-					),
518
-					'classes'    => 'lsx-field-col lsx-field-add-field  lsx-field-col-50',
519
-				)
520
-			);
521
-		}
522
-	}
523
-
524
-	/**
525
-	 * Holds the array for the single plan breadcrumbs.
526
-	 *
527
-	 * @var array $crumbs
528
-	 * @return array
529
-	 */
530
-	public function plan_breadcrumb_filter( $crumbs ) {
531
-		if ( is_singular( 'plan' ) ) {
532
-			$plan          = \lsx_health_plan\functions\get_option( 'endpoint_plan', 'plan' );
533
-			$plans         = \lsx_health_plan\functions\get_option( 'endpoint_plan_archive', 'plan' );	
534
-			$plan_name     = get_the_title();
535
-			$url           = get_post_type_archive_link( $plan );
536
-			$term_obj_list = get_the_terms( get_the_ID(), 'plan-type' );
537
-			$plan_type     = $term_obj_list[0]->name;
538
-			$plan_type_url = get_term_link( $term_obj_list[0]->term_id );
428
+               )
429
+          );
430
+
431
+          $cmb->add_group_field(
432
+               $group,
433
+               array(
434
+                    'name'       => __( 'Title', 'lsx-health-plan' ),
435
+                    'id'         => 'title',
436
+                    'type'       => 'text',
437
+                    'desc'       => __( 'e.g Day 1 / Week 1', 'lsx-health-plan' ),
438
+                    'classes'    => 'lsx-field-col  lsx-field-col-50',
439
+               )
440
+          );
441
+
442
+          $cmb->add_group_field(
443
+               $group,
444
+               array(
445
+                    'name'       => __( 'Group', 'lsx-health-plan' ),
446
+                    'id'         => 'group',
447
+                    'type'       => 'text',
448
+                    'desc'       => __( 'e.g Week 1 / January', 'lsx-health-plan' ),
449
+                    'classes'    => 'lsx-field-col  lsx-field-col-50',
450
+               )
451
+          );
452
+
453
+          $cmb->add_group_field(
454
+               $group,
455
+               array(
456
+                    'name' => __( 'Overview', 'lsx-health-plan' ),
457
+                    'id'   => 'description',
458
+                    'type' => 'wysiwyg',
459
+               )
460
+          );
461
+
462
+          if ( post_type_exists( 'workout' ) ) {
463
+               $cmb->add_group_field(
464
+                    $group,
465
+                    array(
466
+                         'name'       => __( 'Workouts', 'lsx-health-plan' ),
467
+                         'id'         => 'connected_workouts',
468
+                         'desc'       => __( 'Connect the workout(s) that apply to this section.', 'lsx-health-plan' ),
469
+                         'type'       => 'post_search_ajax',
470
+                         'limit'      => 15,
471
+                         'sortable'   => true,
472
+                         'query_args' => array(
473
+                              'post_type'      => array( 'workout' ),
474
+                              'post_status'    => array( 'publish' ),
475
+                              'posts_per_page' => -1,
476
+                         ),
477
+                         'classes'    => 'lsx-field-col lsx-field-add-field  lsx-field-col-50',
478
+                    )
479
+               );
480
+          }
481
+
482
+          if ( post_type_exists( 'meal' ) ) {
483
+               $cmb->add_group_field(
484
+                    $group,
485
+                    array(
486
+                         'name'       => __( 'Meals', 'lsx-health-plan' ),
487
+                         'desc'       => __( 'Connect the meal(s) that apply to this section.', 'lsx-health-plan' ),
488
+                         'id'         => 'connected_meals',
489
+                         'type'       => 'post_search_ajax',
490
+                         // Optional :
491
+                         'limit'      => 15, // Limit selection to X items only (default 1)
492
+                         'sortable'   => true, // Allow selected items to be sortable (default false)
493
+                         'query_args' => array(
494
+                              'post_type'      => array( 'meal' ),
495
+                              'post_status'    => array( 'publish' ),
496
+                              'posts_per_page' => -1,
497
+                         ),
498
+                         'classes'    => 'lsx-field-col lsx-field-add-field  lsx-field-col-50',
499
+                    )
500
+               );
501
+          }
502
+          if ( post_type_exists( 'tip' ) ) {
503
+               $cmb->add_group_field(
504
+                    $group,
505
+                    array(
506
+                         'name'       => __( 'Tips', 'lsx-health-plan' ),
507
+                         'id'         => 'connected_tips',
508
+                         'desc'       => __( 'Connect the tip(s) that apply to this section.', 'lsx-health-plan' ),
509
+                         'type'       => 'post_search_ajax',
510
+                         // Optional :
511
+                         'limit'      => 15,  // Limit selection to X items only (default 1)
512
+                         'sortable'   => true,  // Allow selected items to be sortable (default false)
513
+                         'query_args' => array(
514
+                              'post_type'      => array( 'tip' ),
515
+                              'post_status'    => array( 'publish' ),
516
+                              'posts_per_page' => -1,
517
+                         ),
518
+                         'classes'    => 'lsx-field-col lsx-field-add-field  lsx-field-col-50',
519
+                    )
520
+               );
521
+          }
522
+     }
523
+
524
+     /**
525
+      * Holds the array for the single plan breadcrumbs.
526
+      *
527
+      * @var array $crumbs
528
+      * @return array
529
+      */
530
+     public function plan_breadcrumb_filter( $crumbs ) {
531
+          if ( is_singular( 'plan' ) ) {
532
+               $plan          = \lsx_health_plan\functions\get_option( 'endpoint_plan', 'plan' );
533
+               $plans         = \lsx_health_plan\functions\get_option( 'endpoint_plan_archive', 'plan' );	
534
+               $plan_name     = get_the_title();
535
+               $url           = get_post_type_archive_link( $plan );
536
+               $term_obj_list = get_the_terms( get_the_ID(), 'plan-type' );
537
+               $plan_type     = $term_obj_list[0]->name;
538
+               $plan_type_url = get_term_link( $term_obj_list[0]->term_id );
539 539
 		
540
-			$crumbs[1] = array(
541
-				0 => $plans,
542
-				1 => $url,
543
-			);
544
-			$crumbs[2] = array(
545
-				0 => $plan_type,
546
-				1 => $plan_type_url,
547
-			);
548
-			$crumbs[3] = array(
549
-				0 => $plan_name,
550
-			);
551
-		}
552
-		return $crumbs;
553
-	}
540
+               $crumbs[1] = array(
541
+                    0 => $plans,
542
+                    1 => $url,
543
+               );
544
+               $crumbs[2] = array(
545
+                    0 => $plan_type,
546
+                    1 => $plan_type_url,
547
+               );
548
+               $crumbs[3] = array(
549
+                    0 => $plan_name,
550
+               );
551
+          }
552
+          return $crumbs;
553
+     }
554 554
 }
Please login to merge, or discard this patch.