Passed
Push — add/multiplan ( 0b796a...90de42 )
by Ashley
08:47
created
classes/post-types/class-recipe.php 1 patch
Indentation   +378 added lines, -378 removed lines patch added patch discarded remove patch
@@ -8,402 +8,402 @@
 block discarded – undo
8 8
  */
9 9
 class Recipe {
10 10
 
11
-	/**
12
-	 * Holds class instance
13
-	 *
14
-	 * @since 1.0.0
15
-	 *
16
-	 * @var      object \lsx_health_plan\classes\Recipe()
17
-	 */
18
-	protected static $instance = null;
11
+     /**
12
+      * Holds class instance
13
+      *
14
+      * @since 1.0.0
15
+      *
16
+      * @var      object \lsx_health_plan\classes\Recipe()
17
+      */
18
+     protected static $instance = null;
19 19
 
20
-	/**
21
-	 * Holds post_type slug used as an index
22
-	 *
23
-	 * @since 1.0.0
24
-	 *
25
-	 * @var      string
26
-	 */
27
-	public $slug = 'recipe';
20
+     /**
21
+      * Holds post_type slug used as an index
22
+      *
23
+      * @since 1.0.0
24
+      *
25
+      * @var      string
26
+      */
27
+     public $slug = 'recipe';
28 28
 
29
-	/**
30
-	 * Holds post_type labels
31
-	 *
32
-	 * @since 1.0.0
33
-	 *
34
-	 * @var      string
35
-	 */
36
-	public $labels = array();
29
+     /**
30
+      * Holds post_type labels
31
+      *
32
+      * @since 1.0.0
33
+      *
34
+      * @var      string
35
+      */
36
+     public $labels = array();
37 37
 
38
-	/**
39
-	 * Constructor
40
-	 */
41
-	public function __construct() {
42
-		add_action( 'init', array( $this, 'register_post_type' ) );
43
-		add_action( 'init', array( $this, 'taxonomy_setup' ) );
44
-		add_action( 'admin_menu', array( $this, 'register_menus' ) );
38
+     /**
39
+      * Constructor
40
+      */
41
+     public function __construct() {
42
+          add_action( 'init', array( $this, 'register_post_type' ) );
43
+          add_action( 'init', array( $this, 'taxonomy_setup' ) );
44
+          add_action( 'admin_menu', array( $this, 'register_menus' ) );
45 45
 
46
-		// Frontend Actions and Filters.
47
-		add_action( 'lsx_content_wrap_before', 'lsx_health_plan_recipe_archive_description', 11 );
48
-		add_filter( 'lsx_health_plan_archive_template', array( $this, 'enable_post_type' ), 10, 1 );
49
-		add_filter( 'lsx_health_plan_single_template', array( $this, 'enable_post_type' ), 10, 1 );
50
-		add_filter( 'lsx_health_plan_connections', array( $this, 'enable_connections' ), 10, 1 );
51
-		add_filter( 'get_the_archive_title', array( $this, 'get_the_archive_title' ), 100 );
52
-		add_filter( 'lsx_display_global_header_description', array( $this, 'disable_global_header_description' ), 100 );
53
-		add_filter( 'woocommerce_get_breadcrumb', array( $this, 'recipes_breadcrumb_filter' ), 30, 1 );
46
+          // Frontend Actions and Filters.
47
+          add_action( 'lsx_content_wrap_before', 'lsx_health_plan_recipe_archive_description', 11 );
48
+          add_filter( 'lsx_health_plan_archive_template', array( $this, 'enable_post_type' ), 10, 1 );
49
+          add_filter( 'lsx_health_plan_single_template', array( $this, 'enable_post_type' ), 10, 1 );
50
+          add_filter( 'lsx_health_plan_connections', array( $this, 'enable_connections' ), 10, 1 );
51
+          add_filter( 'get_the_archive_title', array( $this, 'get_the_archive_title' ), 100 );
52
+          add_filter( 'lsx_display_global_header_description', array( $this, 'disable_global_header_description' ), 100 );
53
+          add_filter( 'woocommerce_get_breadcrumb', array( $this, 'recipes_breadcrumb_filter' ), 30, 1 );
54 54
 
55
-		// Backend Actions and Filters.
56
-		add_action( 'cmb2_admin_init', array( $this, 'featured_metabox' ) );
57
-		add_action( 'cmb2_admin_init', array( $this, 'details_metaboxes' ) );
58
-	}
55
+          // Backend Actions and Filters.
56
+          add_action( 'cmb2_admin_init', array( $this, 'featured_metabox' ) );
57
+          add_action( 'cmb2_admin_init', array( $this, 'details_metaboxes' ) );
58
+     }
59 59
 
60
-	/**
61
-	 * Return an instance of this class.
62
-	 *
63
-	 * @since 1.0.0
64
-	 *
65
-	 * @return    object \lsx_health_plan\classes\Recipe()    A single instance of this class.
66
-	 */
67
-	public static function get_instance() {
60
+     /**
61
+      * Return an instance of this class.
62
+      *
63
+      * @since 1.0.0
64
+      *
65
+      * @return    object \lsx_health_plan\classes\Recipe()    A single instance of this class.
66
+      */
67
+     public static function get_instance() {
68 68
 
69
-		// If the single instance hasn't been set, set it now.
70
-		if ( null === self::$instance ) {
71
-			self::$instance = new self();
72
-		}
69
+          // If the single instance hasn't been set, set it now.
70
+          if ( null === self::$instance ) {
71
+               self::$instance = new self();
72
+          }
73 73
 
74
-		return self::$instance;
74
+          return self::$instance;
75 75
 
76
-	}
76
+     }
77 77
 
78
-	/**
79
-	 * Register the post type.
80
-	 */
81
-	public function register_post_type() {
82
-		$this->labels = array(
83
-			'name'               => esc_html__( 'Recipes', 'lsx-health-plan' ),
84
-			'singular_name'      => esc_html__( 'Recipe', 'lsx-health-plan' ),
85
-			'add_new'            => esc_html_x( 'Add New', 'post type general name', 'lsx-health-plan' ),
86
-			'add_new_item'       => esc_html__( 'Add New', 'lsx-health-plan' ),
87
-			'edit_item'          => esc_html__( 'Edit', 'lsx-health-plan' ),
88
-			'new_item'           => esc_html__( 'New', 'lsx-health-plan' ),
89
-			'all_items'          => esc_html__( 'All Recipes', 'lsx-health-plan' ),
90
-			'view_item'          => esc_html__( 'View', 'lsx-health-plan' ),
91
-			'search_items'       => esc_html__( 'Search', 'lsx-health-plan' ),
92
-			'not_found'          => esc_html__( 'None found', 'lsx-health-plan' ),
93
-			'not_found_in_trash' => esc_html__( 'None found in Trash', 'lsx-health-plan' ),
94
-			'parent_item_colon'  => '',
95
-			'menu_name'          => esc_html__( 'Recipes', 'lsx-health-plan' ),
96
-		);
97
-		$args         = array(
98
-			'labels'             => $this->labels,
99
-			'public'             => true,
100
-			'publicly_queryable' => true,
101
-			'show_ui'            => true,
102
-			'show_in_menu'       => false,
103
-			'show_in_rest'       => true,
104
-			'menu_icon'          => 'dashicons-editor-ul',
105
-			'query_var'          => true,
106
-			'rewrite'            => array(
107
-				'slug' => 'recipe',
108
-			),
109
-			'capability_type'    => 'post',
110
-			'has_archive'        => 'recipes',
111
-			'hierarchical'       => false,
112
-			'menu_position'      => null,
113
-			'supports'           => array(
114
-				'title',
115
-				'editor',
116
-				'thumbnail',
117
-				'custom-fields',
118
-			),
119
-		);
120
-		register_post_type( 'recipe', $args );
121
-	}
78
+     /**
79
+      * Register the post type.
80
+      */
81
+     public function register_post_type() {
82
+          $this->labels = array(
83
+               'name'               => esc_html__( 'Recipes', 'lsx-health-plan' ),
84
+               'singular_name'      => esc_html__( 'Recipe', 'lsx-health-plan' ),
85
+               'add_new'            => esc_html_x( 'Add New', 'post type general name', 'lsx-health-plan' ),
86
+               'add_new_item'       => esc_html__( 'Add New', 'lsx-health-plan' ),
87
+               'edit_item'          => esc_html__( 'Edit', 'lsx-health-plan' ),
88
+               'new_item'           => esc_html__( 'New', 'lsx-health-plan' ),
89
+               'all_items'          => esc_html__( 'All Recipes', 'lsx-health-plan' ),
90
+               'view_item'          => esc_html__( 'View', 'lsx-health-plan' ),
91
+               'search_items'       => esc_html__( 'Search', 'lsx-health-plan' ),
92
+               'not_found'          => esc_html__( 'None found', 'lsx-health-plan' ),
93
+               'not_found_in_trash' => esc_html__( 'None found in Trash', 'lsx-health-plan' ),
94
+               'parent_item_colon'  => '',
95
+               'menu_name'          => esc_html__( 'Recipes', 'lsx-health-plan' ),
96
+          );
97
+          $args         = array(
98
+               'labels'             => $this->labels,
99
+               'public'             => true,
100
+               'publicly_queryable' => true,
101
+               'show_ui'            => true,
102
+               'show_in_menu'       => false,
103
+               'show_in_rest'       => true,
104
+               'menu_icon'          => 'dashicons-editor-ul',
105
+               'query_var'          => true,
106
+               'rewrite'            => array(
107
+                    'slug' => 'recipe',
108
+               ),
109
+               'capability_type'    => 'post',
110
+               'has_archive'        => 'recipes',
111
+               'hierarchical'       => false,
112
+               'menu_position'      => null,
113
+               'supports'           => array(
114
+                    'title',
115
+                    'editor',
116
+                    'thumbnail',
117
+                    'custom-fields',
118
+               ),
119
+          );
120
+          register_post_type( 'recipe', $args );
121
+     }
122 122
 
123
-	/**
124
-	 * Registers the Recipes under the Meals Post type menu.
125
-	 *
126
-	 * @return void
127
-	 */
128
-	public function register_menus() {
129
-		add_submenu_page( 'edit.php?post_type=meal', esc_html__( 'Recipes', 'lsx-health-plan' ), esc_html__( 'Recipes', 'lsx-health-plan' ), 'edit_posts', 'edit.php?post_type=recipe' );
130
-		add_submenu_page( 'edit.php?post_type=meal', esc_html__( 'Recipe Types', 'lsx-health-plan' ), esc_html__( 'Recipe Types', 'lsx-health-plan' ), 'edit_posts', 'edit-tags.php?taxonomy=recipe-type&post_type=recipe' );
131
-		add_submenu_page( 'edit.php?post_type=meal', esc_html__( 'Cuisines', 'lsx-health-plan' ), esc_html__( 'Cuisines', 'lsx-health-plan' ), 'edit_posts', 'edit-tags.php?taxonomy=recipe-cuisine&post_type=recipe' );
132
-	}
123
+     /**
124
+      * Registers the Recipes under the Meals Post type menu.
125
+      *
126
+      * @return void
127
+      */
128
+     public function register_menus() {
129
+          add_submenu_page( 'edit.php?post_type=meal', esc_html__( 'Recipes', 'lsx-health-plan' ), esc_html__( 'Recipes', 'lsx-health-plan' ), 'edit_posts', 'edit.php?post_type=recipe' );
130
+          add_submenu_page( 'edit.php?post_type=meal', esc_html__( 'Recipe Types', 'lsx-health-plan' ), esc_html__( 'Recipe Types', 'lsx-health-plan' ), 'edit_posts', 'edit-tags.php?taxonomy=recipe-type&post_type=recipe' );
131
+          add_submenu_page( 'edit.php?post_type=meal', esc_html__( 'Cuisines', 'lsx-health-plan' ), esc_html__( 'Cuisines', 'lsx-health-plan' ), 'edit_posts', 'edit-tags.php?taxonomy=recipe-cuisine&post_type=recipe' );
132
+     }
133 133
 
134
-	/**
135
-	 * Register the Week taxonomy.
136
-	 */
137
-	public function taxonomy_setup() {
138
-		$labels = array(
139
-			'name'              => esc_html_x( 'Cuisine', 'taxonomy general name', 'lsx-health-plan' ),
140
-			'singular_name'     => esc_html_x( 'Cuisines', 'taxonomy singular name', 'lsx-health-plan' ),
141
-			'search_items'      => esc_html__( 'Search', 'lsx-health-plan' ),
142
-			'all_items'         => esc_html__( 'All', 'lsx-health-plan' ),
143
-			'parent_item'       => esc_html__( 'Parent', 'lsx-health-plan' ),
144
-			'parent_item_colon' => esc_html__( 'Parent:', 'lsx-health-plan' ),
145
-			'edit_item'         => esc_html__( 'Edit', 'lsx-health-plan' ),
146
-			'update_item'       => esc_html__( 'Update', 'lsx-health-plan' ),
147
-			'add_new_item'      => esc_html__( 'Add New', 'lsx-health-plan' ),
148
-			'new_item_name'     => esc_html__( 'New Name', 'lsx-health-plan' ),
149
-			'menu_name'         => esc_html__( 'Cuisines', 'lsx-health-plan' ),
150
-		);
151
-		$args   = array(
152
-			'hierarchical'      => true,
153
-			'labels'            => $labels,
154
-			'show_ui'           => true,
155
-			'show_admin_column' => true,
156
-			'show_in_menu'      => 'edit.php?post_type=meal',
157
-			'query_var'         => true,
158
-			'rewrite'           => array(
159
-				'slug' => 'recipe-cuisine',
160
-			),
161
-		);
162
-		register_taxonomy( 'recipe-cuisine', array( $this->slug ), $args );
134
+     /**
135
+      * Register the Week taxonomy.
136
+      */
137
+     public function taxonomy_setup() {
138
+          $labels = array(
139
+               'name'              => esc_html_x( 'Cuisine', 'taxonomy general name', 'lsx-health-plan' ),
140
+               'singular_name'     => esc_html_x( 'Cuisines', 'taxonomy singular name', 'lsx-health-plan' ),
141
+               'search_items'      => esc_html__( 'Search', 'lsx-health-plan' ),
142
+               'all_items'         => esc_html__( 'All', 'lsx-health-plan' ),
143
+               'parent_item'       => esc_html__( 'Parent', 'lsx-health-plan' ),
144
+               'parent_item_colon' => esc_html__( 'Parent:', 'lsx-health-plan' ),
145
+               'edit_item'         => esc_html__( 'Edit', 'lsx-health-plan' ),
146
+               'update_item'       => esc_html__( 'Update', 'lsx-health-plan' ),
147
+               'add_new_item'      => esc_html__( 'Add New', 'lsx-health-plan' ),
148
+               'new_item_name'     => esc_html__( 'New Name', 'lsx-health-plan' ),
149
+               'menu_name'         => esc_html__( 'Cuisines', 'lsx-health-plan' ),
150
+          );
151
+          $args   = array(
152
+               'hierarchical'      => true,
153
+               'labels'            => $labels,
154
+               'show_ui'           => true,
155
+               'show_admin_column' => true,
156
+               'show_in_menu'      => 'edit.php?post_type=meal',
157
+               'query_var'         => true,
158
+               'rewrite'           => array(
159
+                    'slug' => 'recipe-cuisine',
160
+               ),
161
+          );
162
+          register_taxonomy( 'recipe-cuisine', array( $this->slug ), $args );
163 163
 
164
-		$labels = array(
165
-			'name'              => esc_html_x( 'Recipe Type', 'taxonomy general name', 'lsx-health-plan' ),
166
-			'singular_name'     => esc_html_x( 'Recipe Types', 'taxonomy singular name', 'lsx-health-plan' ),
167
-			'search_items'      => esc_html__( 'Search', 'lsx-health-plan' ),
168
-			'all_items'         => esc_html__( 'All', 'lsx-health-plan' ),
169
-			'parent_item'       => esc_html__( 'Parent', 'lsx-health-plan' ),
170
-			'parent_item_colon' => esc_html__( 'Parent:', 'lsx-health-plan' ),
171
-			'edit_item'         => esc_html__( 'Edit', 'lsx-health-plan' ),
172
-			'update_item'       => esc_html__( 'Update', 'lsx-health-plan' ),
173
-			'add_new_item'      => esc_html__( 'Add New', 'lsx-health-plan' ),
174
-			'new_item_name'     => esc_html__( 'New Name', 'lsx-health-plan' ),
175
-			'menu_name'         => esc_html__( 'Types', 'lsx-health-plan' ),
176
-		);
177
-		$args   = array(
178
-			'hierarchical'      => true,
179
-			'labels'            => $labels,
180
-			'show_ui'           => true,
181
-			'show_in_menu'      => 'edit.php?post_type=meal',
182
-			'show_admin_column' => true,
183
-			'query_var'         => true,
184
-			'rewrite'           => array(
185
-				'slug' => 'recipe-type',
186
-			),
187
-		);
188
-		register_taxonomy( 'recipe-type', array( $this->slug ), $args );
189
-	}
164
+          $labels = array(
165
+               'name'              => esc_html_x( 'Recipe Type', 'taxonomy general name', 'lsx-health-plan' ),
166
+               'singular_name'     => esc_html_x( 'Recipe Types', 'taxonomy singular name', 'lsx-health-plan' ),
167
+               'search_items'      => esc_html__( 'Search', 'lsx-health-plan' ),
168
+               'all_items'         => esc_html__( 'All', 'lsx-health-plan' ),
169
+               'parent_item'       => esc_html__( 'Parent', 'lsx-health-plan' ),
170
+               'parent_item_colon' => esc_html__( 'Parent:', 'lsx-health-plan' ),
171
+               'edit_item'         => esc_html__( 'Edit', 'lsx-health-plan' ),
172
+               'update_item'       => esc_html__( 'Update', 'lsx-health-plan' ),
173
+               'add_new_item'      => esc_html__( 'Add New', 'lsx-health-plan' ),
174
+               'new_item_name'     => esc_html__( 'New Name', 'lsx-health-plan' ),
175
+               'menu_name'         => esc_html__( 'Types', 'lsx-health-plan' ),
176
+          );
177
+          $args   = array(
178
+               'hierarchical'      => true,
179
+               'labels'            => $labels,
180
+               'show_ui'           => true,
181
+               'show_in_menu'      => 'edit.php?post_type=meal',
182
+               'show_admin_column' => true,
183
+               'query_var'         => true,
184
+               'rewrite'           => array(
185
+                    'slug' => 'recipe-type',
186
+               ),
187
+          );
188
+          register_taxonomy( 'recipe-type', array( $this->slug ), $args );
189
+     }
190 190
 
191
-	/**
192
-	 * Adds the post type to the different arrays.
193
-	 *
194
-	 * @param array $post_types
195
-	 * @return array
196
-	 */
197
-	public function enable_post_type( $post_types = array() ) {
198
-		$post_types[] = $this->slug;
199
-		return $post_types;
200
-	}
191
+     /**
192
+      * Adds the post type to the different arrays.
193
+      *
194
+      * @param array $post_types
195
+      * @return array
196
+      */
197
+     public function enable_post_type( $post_types = array() ) {
198
+          $post_types[] = $this->slug;
199
+          return $post_types;
200
+     }
201 201
 
202
-	/**
203
-	 * Enables the Bi Directional relationships
204
-	 *
205
-	 * @param array $connections
206
-	 * @return void
207
-	 */
208
-	public function enable_connections( $connections = array() ) {
209
-		$connections['recipe']['connected_plans'] = 'connected_recipes';
210
-		$connections['plan']['connected_recipes'] = 'connected_plans';
211
-		return $connections;
212
-	}
202
+     /**
203
+      * Enables the Bi Directional relationships
204
+      *
205
+      * @param array $connections
206
+      * @return void
207
+      */
208
+     public function enable_connections( $connections = array() ) {
209
+          $connections['recipe']['connected_plans'] = 'connected_recipes';
210
+          $connections['plan']['connected_recipes'] = 'connected_plans';
211
+          return $connections;
212
+     }
213 213
 
214
-	/**
215
-	 * Remove the "Archives:" from the post type recipes.
216
-	 *
217
-	 * @param string $title the term title.
218
-	 * @return string
219
-	 */
220
-	public function get_the_archive_title( $title ) {
221
-		if ( is_post_type_archive( 'recipe' ) ) {
222
-			$title = __( 'Recipes', 'lsx-health-plan' );
223
-		}
224
-		if ( is_post_type_archive( 'exercise' ) ) {
225
-			$title = __( 'Exercises', 'lsx-health-plan' );
226
-		}
227
-		if ( is_tax( 'recipe-type' ) ) {
228
-			$queried_object = get_queried_object();
229
-			if ( isset( $queried_object->name ) ) {
230
-				$title = $queried_object->name . ' ' . __( 'Recipes', 'lsx-health-plan' );
231
-			}
232
-		}
233
-		return $title;
234
-	}
214
+     /**
215
+      * Remove the "Archives:" from the post type recipes.
216
+      *
217
+      * @param string $title the term title.
218
+      * @return string
219
+      */
220
+     public function get_the_archive_title( $title ) {
221
+          if ( is_post_type_archive( 'recipe' ) ) {
222
+               $title = __( 'Recipes', 'lsx-health-plan' );
223
+          }
224
+          if ( is_post_type_archive( 'exercise' ) ) {
225
+               $title = __( 'Exercises', 'lsx-health-plan' );
226
+          }
227
+          if ( is_tax( 'recipe-type' ) ) {
228
+               $queried_object = get_queried_object();
229
+               if ( isset( $queried_object->name ) ) {
230
+                    $title = $queried_object->name . ' ' . __( 'Recipes', 'lsx-health-plan' );
231
+               }
232
+          }
233
+          return $title;
234
+     }
235 235
 
236
-	/**
237
-	 * Disables the global header description
238
-	 *
239
-	 * @param boolean $disable
240
-	 * @return boolean
241
-	 */
242
-	public function disable_global_header_description( $disable ) {
243
-		if ( is_tax( 'recipe-type' ) ) {
244
-			$disable = true;
245
-		}
246
-		return $disable;
247
-	}
236
+     /**
237
+      * Disables the global header description
238
+      *
239
+      * @param boolean $disable
240
+      * @return boolean
241
+      */
242
+     public function disable_global_header_description( $disable ) {
243
+          if ( is_tax( 'recipe-type' ) ) {
244
+               $disable = true;
245
+          }
246
+          return $disable;
247
+     }
248 248
 
249
-	/**
250
-	 * Holds the array for the breadcrumbs.
251
-	 *
252
-	 * @var array $crumbs
253
-	 * @return array
254
-	 */
255
-	public function recipes_breadcrumb_filter( $crumbs ) {
256
-		if ( is_tax( 'recipe-type' ) ) {
257
-			$text = $this->labels['singular_name'];
258
-			$url  = get_post_type_archive_link( 'recipe' );
259
-			if ( function_exists( 'woocommerce_breadcrumb' ) ) {
260
-				$crumbs[1] = array(
261
-					0 => $text,
262
-					1 => $url,
263
-				);
264
-			} else {
265
-				$crumbs[1] = array(
266
-					'text' => $text,
267
-					'url'  => $url,
268
-				);
269
-			}
270
-		}
271
-		return $crumbs;
272
-	}
249
+     /**
250
+      * Holds the array for the breadcrumbs.
251
+      *
252
+      * @var array $crumbs
253
+      * @return array
254
+      */
255
+     public function recipes_breadcrumb_filter( $crumbs ) {
256
+          if ( is_tax( 'recipe-type' ) ) {
257
+               $text = $this->labels['singular_name'];
258
+               $url  = get_post_type_archive_link( 'recipe' );
259
+               if ( function_exists( 'woocommerce_breadcrumb' ) ) {
260
+                    $crumbs[1] = array(
261
+                         0 => $text,
262
+                         1 => $url,
263
+                    );
264
+               } else {
265
+                    $crumbs[1] = array(
266
+                         'text' => $text,
267
+                         'url'  => $url,
268
+                    );
269
+               }
270
+          }
271
+          return $crumbs;
272
+     }
273 273
 
274
-	/**
275
-	 * Define the metabox and field configurations.
276
-	 */
277
-	public function featured_metabox() {
278
-		$cmb = new_cmb2_box(
279
-			array(
280
-				'id'           => $this->slug . '_featured_metabox',
281
-				'title'        => __( 'Featured', 'lsx-health-plan' ),
282
-				'object_types' => array( $this->slug ),
283
-				'context'      => 'side',
284
-				'priority'     => 'high',
285
-				'show_names'   => true,
286
-			)
287
-		);
288
-		$cmb->add_field(
289
-			array(
290
-				'name'       => __( 'Featured', 'lsx-health-plan' ),
291
-				'desc'       => __( 'Enable the checkbox to feature this recipe, featured recipes display in any page that has the recipe shortcode: [lsx_health_plan_featured_recipes_block]', 'lsx-health-plan' ),
292
-				'id'         => $this->slug . '_featured',
293
-				'type'       => 'checkbox',
294
-				'show_on_cb' => 'cmb2_hide_if_no_cats',
295
-			)
296
-		);
297
-	}
274
+     /**
275
+      * Define the metabox and field configurations.
276
+      */
277
+     public function featured_metabox() {
278
+          $cmb = new_cmb2_box(
279
+               array(
280
+                    'id'           => $this->slug . '_featured_metabox',
281
+                    'title'        => __( 'Featured', 'lsx-health-plan' ),
282
+                    'object_types' => array( $this->slug ),
283
+                    'context'      => 'side',
284
+                    'priority'     => 'high',
285
+                    'show_names'   => true,
286
+               )
287
+          );
288
+          $cmb->add_field(
289
+               array(
290
+                    'name'       => __( 'Featured', 'lsx-health-plan' ),
291
+                    'desc'       => __( 'Enable the checkbox to feature this recipe, featured recipes display in any page that has the recipe shortcode: [lsx_health_plan_featured_recipes_block]', 'lsx-health-plan' ),
292
+                    'id'         => $this->slug . '_featured',
293
+                    'type'       => 'checkbox',
294
+                    'show_on_cb' => 'cmb2_hide_if_no_cats',
295
+               )
296
+          );
297
+     }
298 298
 
299
-	/**
300
-	 * Define the metabox and field configurations.
301
-	 */
302
-	public function details_metaboxes() {
303
-		$cmb = new_cmb2_box(
304
-			array(
305
-				'id'           => $this->slug . '_details_metabox',
306
-				'title'        => __( 'Cooking Info', 'lsx-health-plan' ),
307
-				'object_types' => array( $this->slug ), // Post type
308
-				'context'      => 'normal',
309
-				'priority'     => 'high',
310
-				'show_names'   => true,
311
-			)
312
-		);
313
-		$cmb->add_field(
314
-			array(
315
-				'name'       => __( 'Prep Time', 'lsx-health-plan' ),
316
-				'id'         => $this->slug . '_prep_time',
317
-				'desc'       => __( 'Add the preparation time for the entire meal i.e: 25 mins', 'lsx-health-plan' ),
318
-				'type'       => 'text',
319
-				'show_on_cb' => 'cmb2_hide_if_no_cats',
320
-			)
321
-		);
322
-		$cmb->add_field(
323
-			array(
324
-				'name'       => __( 'Cooking Time', 'lsx-health-plan' ),
325
-				'id'         => $this->slug . '_cooking_time',
326
-				'desc'       => __( 'Add the cooking time i.e: 15 mins', 'lsx-health-plan' ),
327
-				'type'       => 'text',
328
-				'show_on_cb' => 'cmb2_hide_if_no_cats',
329
-			)
330
-		);
331
-		$cmb->add_field(
332
-			array(
333
-				'name'       => __( 'Serves', 'lsx-health-plan' ),
334
-				'id'         => $this->slug . '_serves',
335
-				'desc'       => __( 'Add the recommended serving size i.e: 6', 'lsx-health-plan' ),
336
-				'type'       => 'text',
337
-				'show_on_cb' => 'cmb2_hide_if_no_cats',
338
-				'attributes' => array(
339
-					'type'    => 'number',
340
-					'pattern' => '\d*',
341
-				),
342
-			)
343
-		);
344
-		$cmb->add_field(
345
-			array(
346
-				'name'       => __( 'Portion', 'lsx-health-plan' ),
347
-				'desc'       => __( 'Add the recommended portion size i.e: 200mg', 'lsx-health-plan' ),
348
-				'id'         => $this->slug . '_portion',
349
-				'type'       => 'text',
350
-				'show_on_cb' => 'cmb2_hide_if_no_cats',
351
-			)
352
-		);
353
-		$cmb = new_cmb2_box(
354
-			array(
355
-				'id'           => $this->slug . '_nutritional_metabox',
356
-				'title'        => __( 'Nutritional Info', 'lsx-health-plan' ),
357
-				'object_types' => array( $this->slug ), // Post type
358
-				'context'      => 'normal',
359
-				'priority'     => 'high',
360
-				'show_names'   => true,
361
-			)
362
-		);
363
-		$cmb->add_field(
364
-			array(
365
-				'name'       => __( 'Energy', 'lsx-health-plan' ),
366
-				'id'         => $this->slug . '_energy',
367
-				'desc'       => __( 'Add the energy amount for the entire meal i.e: 700 kj', 'lsx-health-plan' ),
368
-				'type'       => 'text',
369
-				'show_on_cb' => 'cmb2_hide_if_no_cats',
370
-			)
371
-		);
372
-		$cmb->add_field(
373
-			array(
374
-				'name'       => __( 'Protein', 'lsx-health-plan' ),
375
-				'id'         => $this->slug . '_protein',
376
-				'desc'       => __( 'Add the protein amount for the entire meal i.e: 50 g', 'lsx-health-plan' ),
377
-				'type'       => 'text',
378
-				'show_on_cb' => 'cmb2_hide_if_no_cats',
379
-			)
380
-		);
381
-		$cmb->add_field(
382
-			array(
383
-				'name'       => __( 'Carbohydrates', 'lsx-health-plan' ),
384
-				'id'         => $this->slug . '_carbohydrates',
385
-				'desc'       => __( 'Add the carbohydrates amount for the entire meal i.e: 5 g', 'lsx-health-plan' ),
386
-				'type'       => 'text',
387
-				'show_on_cb' => 'cmb2_hide_if_no_cats',
388
-			)
389
-		);
390
-		$cmb->add_field(
391
-			array(
392
-				'name'       => __( 'Fibre', 'lsx-health-plan' ),
393
-				'id'         => $this->slug . '_fibre',
394
-				'desc'       => __( 'Add the fibre amount for the entire meal i.e: 5 g', 'lsx-health-plan' ),
395
-				'type'       => 'text',
396
-				'show_on_cb' => 'cmb2_hide_if_no_cats',
397
-			)
398
-		);
399
-		$cmb->add_field(
400
-			array(
401
-				'name'       => __( 'Fat', 'lsx-health-plan' ),
402
-				'id'         => $this->slug . '_fat',
403
-				'desc'       => __( 'Add the fat amount for the entire meal i.e: 20 g', 'lsx-health-plan' ),
404
-				'type'       => 'text',
405
-				'show_on_cb' => 'cmb2_hide_if_no_cats',
406
-			)
407
-		);
408
-	}
299
+     /**
300
+      * Define the metabox and field configurations.
301
+      */
302
+     public function details_metaboxes() {
303
+          $cmb = new_cmb2_box(
304
+               array(
305
+                    'id'           => $this->slug . '_details_metabox',
306
+                    'title'        => __( 'Cooking Info', 'lsx-health-plan' ),
307
+                    'object_types' => array( $this->slug ), // Post type
308
+                    'context'      => 'normal',
309
+                    'priority'     => 'high',
310
+                    'show_names'   => true,
311
+               )
312
+          );
313
+          $cmb->add_field(
314
+               array(
315
+                    'name'       => __( 'Prep Time', 'lsx-health-plan' ),
316
+                    'id'         => $this->slug . '_prep_time',
317
+                    'desc'       => __( 'Add the preparation time for the entire meal i.e: 25 mins', 'lsx-health-plan' ),
318
+                    'type'       => 'text',
319
+                    'show_on_cb' => 'cmb2_hide_if_no_cats',
320
+               )
321
+          );
322
+          $cmb->add_field(
323
+               array(
324
+                    'name'       => __( 'Cooking Time', 'lsx-health-plan' ),
325
+                    'id'         => $this->slug . '_cooking_time',
326
+                    'desc'       => __( 'Add the cooking time i.e: 15 mins', 'lsx-health-plan' ),
327
+                    'type'       => 'text',
328
+                    'show_on_cb' => 'cmb2_hide_if_no_cats',
329
+               )
330
+          );
331
+          $cmb->add_field(
332
+               array(
333
+                    'name'       => __( 'Serves', 'lsx-health-plan' ),
334
+                    'id'         => $this->slug . '_serves',
335
+                    'desc'       => __( 'Add the recommended serving size i.e: 6', 'lsx-health-plan' ),
336
+                    'type'       => 'text',
337
+                    'show_on_cb' => 'cmb2_hide_if_no_cats',
338
+                    'attributes' => array(
339
+                         'type'    => 'number',
340
+                         'pattern' => '\d*',
341
+                    ),
342
+               )
343
+          );
344
+          $cmb->add_field(
345
+               array(
346
+                    'name'       => __( 'Portion', 'lsx-health-plan' ),
347
+                    'desc'       => __( 'Add the recommended portion size i.e: 200mg', 'lsx-health-plan' ),
348
+                    'id'         => $this->slug . '_portion',
349
+                    'type'       => 'text',
350
+                    'show_on_cb' => 'cmb2_hide_if_no_cats',
351
+               )
352
+          );
353
+          $cmb = new_cmb2_box(
354
+               array(
355
+                    'id'           => $this->slug . '_nutritional_metabox',
356
+                    'title'        => __( 'Nutritional Info', 'lsx-health-plan' ),
357
+                    'object_types' => array( $this->slug ), // Post type
358
+                    'context'      => 'normal',
359
+                    'priority'     => 'high',
360
+                    'show_names'   => true,
361
+               )
362
+          );
363
+          $cmb->add_field(
364
+               array(
365
+                    'name'       => __( 'Energy', 'lsx-health-plan' ),
366
+                    'id'         => $this->slug . '_energy',
367
+                    'desc'       => __( 'Add the energy amount for the entire meal i.e: 700 kj', 'lsx-health-plan' ),
368
+                    'type'       => 'text',
369
+                    'show_on_cb' => 'cmb2_hide_if_no_cats',
370
+               )
371
+          );
372
+          $cmb->add_field(
373
+               array(
374
+                    'name'       => __( 'Protein', 'lsx-health-plan' ),
375
+                    'id'         => $this->slug . '_protein',
376
+                    'desc'       => __( 'Add the protein amount for the entire meal i.e: 50 g', 'lsx-health-plan' ),
377
+                    'type'       => 'text',
378
+                    'show_on_cb' => 'cmb2_hide_if_no_cats',
379
+               )
380
+          );
381
+          $cmb->add_field(
382
+               array(
383
+                    'name'       => __( 'Carbohydrates', 'lsx-health-plan' ),
384
+                    'id'         => $this->slug . '_carbohydrates',
385
+                    'desc'       => __( 'Add the carbohydrates amount for the entire meal i.e: 5 g', 'lsx-health-plan' ),
386
+                    'type'       => 'text',
387
+                    'show_on_cb' => 'cmb2_hide_if_no_cats',
388
+               )
389
+          );
390
+          $cmb->add_field(
391
+               array(
392
+                    'name'       => __( 'Fibre', 'lsx-health-plan' ),
393
+                    'id'         => $this->slug . '_fibre',
394
+                    'desc'       => __( 'Add the fibre amount for the entire meal i.e: 5 g', 'lsx-health-plan' ),
395
+                    'type'       => 'text',
396
+                    'show_on_cb' => 'cmb2_hide_if_no_cats',
397
+               )
398
+          );
399
+          $cmb->add_field(
400
+               array(
401
+                    'name'       => __( 'Fat', 'lsx-health-plan' ),
402
+                    'id'         => $this->slug . '_fat',
403
+                    'desc'       => __( 'Add the fat amount for the entire meal i.e: 20 g', 'lsx-health-plan' ),
404
+                    'type'       => 'text',
405
+                    'show_on_cb' => 'cmb2_hide_if_no_cats',
406
+               )
407
+          );
408
+     }
409 409
 }
Please login to merge, or discard this patch.
classes/post-types/class-plan.php 1 patch
Indentation   +489 added lines, -489 removed lines patch added patch discarded remove patch
@@ -10,203 +10,203 @@  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
-
67
-	/**
68
-	 * Return an instance of this class.
69
-	 *
70
-	 * @since 1.0.0
71
-	 *
72
-	 * @return    object \lsx_health_plan\classes\Meal_Plan()    A single instance of this class.
73
-	 */
74
-	public static function get_instance() {
75
-		// If the single instance hasn't been set, set it now.
76
-		if ( null === self::$instance ) {
77
-			self::$instance = new self();
78
-		}
79
-		return self::$instance;
80
-	}
81
-	/**
82
-	 * Register the post type.
83
-	 */
84
-	public function register_post_type() {
85
-		$labels = array(
86
-			'name'               => esc_html__( 'Plans', 'lsx-health-plan' ),
87
-			'singular_name'      => esc_html__( 'Plan', 'lsx-health-plan' ),
88
-			'add_new'            => esc_html_x( 'Add New', 'post type general name', 'lsx-health-plan' ),
89
-			'add_new_item'       => esc_html__( 'Add New', 'lsx-health-plan' ),
90
-			'edit_item'          => esc_html__( 'Edit', 'lsx-health-plan' ),
91
-			'new_item'           => esc_html__( 'New', 'lsx-health-plan' ),
92
-			'all_items'          => esc_html__( 'All Plans', 'lsx-health-plan' ),
93
-			'view_item'          => esc_html__( 'View', 'lsx-health-plan' ),
94
-			'search_items'       => esc_html__( 'Search', 'lsx-health-plan' ),
95
-			'not_found'          => esc_html__( 'None found', 'lsx-health-plan' ),
96
-			'not_found_in_trash' => esc_html__( 'None found in Trash', 'lsx-health-plan' ),
97
-			'parent_item_colon'  => '',
98
-			'menu_name'          => esc_html__( 'Plans', 'lsx-health-plan' ),
99
-		);
100
-		$args   = array(
101
-			'labels'             => $labels,
102
-			'public'             => true,
103
-			'publicly_queryable' => true,
104
-			'show_ui'            => true,
105
-			'show_in_menu'       => true,
106
-			'show_in_rest'       => true,
107
-			'menu_icon'          => 'dashicons-welcome-write-blog',
108
-			'query_var'          => true,
109
-			'rewrite'            => array(
110
-				'slug' => \lsx_health_plan\functions\get_option( 'plan_single_slug', 'plan' ),
111
-			),
112
-			'capability_type'    => 'page',
113
-			'has_archive'        => \lsx_health_plan\functions\get_option( 'endpoint_plan_archive', 'plans' ),
114
-			'hierarchical'       => false,
115
-			'menu_position'      => null,
116
-			'supports'           => array(
117
-				'title',
118
-				'editor',
119
-				'thumbnail',
120
-				'page-attributes',
121
-				'custom-fields',
122
-			),
123
-		);
124
-		register_post_type( 'plan', $args );
125
-	}
126
-
127
-	/**
128
-	 * Register the Type taxonomy.
129
-	 */
130
-	public function plan_type_taxonomy_setup() {
131
-		$labels = array(
132
-			'name'              => esc_html_x( 'Plan Type', 'taxonomy general name', 'lsx-health-plan' ),
133
-			'singular_name'     => esc_html_x( 'Plan Type', 'taxonomy singular name', 'lsx-health-plan' ),
134
-			'search_items'      => esc_html__( 'Search', 'lsx-health-plan' ),
135
-			'all_items'         => esc_html__( 'All', 'lsx-health-plan' ),
136
-			'parent_item'       => esc_html__( 'Parent', 'lsx-health-plan' ),
137
-			'parent_item_colon' => esc_html__( 'Parent:', 'lsx-health-plan' ),
138
-			'edit_item'         => esc_html__( 'Edit', 'lsx-health-plan' ),
139
-			'update_item'       => esc_html__( 'Update', 'lsx-health-plan' ),
140
-			'add_new_item'      => esc_html__( 'Add New', 'lsx-health-plan' ),
141
-			'new_item_name'     => esc_html__( 'New Name', 'lsx-health-plan' ),
142
-			'menu_name'         => esc_html__( 'Plan Types', 'lsx-health-plan' ),
143
-		);
144
-
145
-		$args = array(
146
-			'hierarchical'      => true,
147
-			'labels'            => $labels,
148
-			'show_ui'           => true,
149
-			'show_admin_column' => true,
150
-			'query_var'         => true,
151
-			'rewrite'           => array(
152
-				'slug' => 'plan-type',
153
-			),
154
-		);
155
-
156
-		register_taxonomy( 'plan-type', array( 'plan' ), $args );
157
-	}
158
-
159
-	/**
160
-	 * Register the Week taxonomy.
161
-	 */
162
-	public function week_taxonomy_setup() {
163
-		$labels = array(
164
-			'name'              => esc_html_x( 'Week', 'taxonomy general name', 'lsx-health-plan' ),
165
-			'singular_name'     => esc_html_x( 'Week', 'taxonomy singular name', 'lsx-health-plan' ),
166
-			'search_items'      => esc_html__( 'Search', 'lsx-health-plan' ),
167
-			'all_items'         => esc_html__( 'All', 'lsx-health-plan' ),
168
-			'parent_item'       => esc_html__( 'Parent', 'lsx-health-plan' ),
169
-			'parent_item_colon' => esc_html__( 'Parent:', 'lsx-health-plan' ),
170
-			'edit_item'         => esc_html__( 'Edit', 'lsx-health-plan' ),
171
-			'update_item'       => esc_html__( 'Update', 'lsx-health-plan' ),
172
-			'add_new_item'      => esc_html__( 'Add New', 'lsx-health-plan' ),
173
-			'new_item_name'     => esc_html__( 'New Name', 'lsx-health-plan' ),
174
-			'menu_name'         => esc_html__( 'Weeks', 'lsx-health-plan' ),
175
-		);
176
-
177
-		$args = array(
178
-			'hierarchical'      => true,
179
-			'labels'            => $labels,
180
-			'show_ui'           => true,
181
-			'show_admin_column' => true,
182
-			'query_var'         => true,
183
-			'show_in_rest'      => true,
184
-			'rewrite'           => array(
185
-				'slug' => 'week',
186
-			),
187
-		);
188
-
189
-		register_taxonomy( 'week', array( 'plan' ), $args );
190
-	}
191
-
192
-	/**
193
-	 * Output the form field for this metadata when adding a new term
194
-	 *
195
-	 * @since 0.1.0
196
-	 */
197
-	public function add_thumbnail_form_field( $term = false ) {
198
-		if ( is_object( $term ) ) {
199
-			$value         = get_term_meta( $term->term_id, 'thumbnail', true );
200
-			$image_preview = wp_get_attachment_image_src( $value, 'thumbnail' );
201
-
202
-			if ( is_array( $image_preview ) ) {
203
-				$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 . '" />';
204
-			}
205
-		} else {
206
-			$image_preview = false;
207
-			$value         = false;
208
-		}
209
-		?>
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
+
67
+     /**
68
+      * Return an instance of this class.
69
+      *
70
+      * @since 1.0.0
71
+      *
72
+      * @return    object \lsx_health_plan\classes\Meal_Plan()    A single instance of this class.
73
+      */
74
+     public static function get_instance() {
75
+          // If the single instance hasn't been set, set it now.
76
+          if ( null === self::$instance ) {
77
+               self::$instance = new self();
78
+          }
79
+          return self::$instance;
80
+     }
81
+     /**
82
+      * Register the post type.
83
+      */
84
+     public function register_post_type() {
85
+          $labels = array(
86
+               'name'               => esc_html__( 'Plans', 'lsx-health-plan' ),
87
+               'singular_name'      => esc_html__( 'Plan', 'lsx-health-plan' ),
88
+               'add_new'            => esc_html_x( 'Add New', 'post type general name', 'lsx-health-plan' ),
89
+               'add_new_item'       => esc_html__( 'Add New', 'lsx-health-plan' ),
90
+               'edit_item'          => esc_html__( 'Edit', 'lsx-health-plan' ),
91
+               'new_item'           => esc_html__( 'New', 'lsx-health-plan' ),
92
+               'all_items'          => esc_html__( 'All Plans', 'lsx-health-plan' ),
93
+               'view_item'          => esc_html__( 'View', 'lsx-health-plan' ),
94
+               'search_items'       => esc_html__( 'Search', 'lsx-health-plan' ),
95
+               'not_found'          => esc_html__( 'None found', 'lsx-health-plan' ),
96
+               'not_found_in_trash' => esc_html__( 'None found in Trash', 'lsx-health-plan' ),
97
+               'parent_item_colon'  => '',
98
+               'menu_name'          => esc_html__( 'Plans', 'lsx-health-plan' ),
99
+          );
100
+          $args   = array(
101
+               'labels'             => $labels,
102
+               'public'             => true,
103
+               'publicly_queryable' => true,
104
+               'show_ui'            => true,
105
+               'show_in_menu'       => true,
106
+               'show_in_rest'       => true,
107
+               'menu_icon'          => 'dashicons-welcome-write-blog',
108
+               'query_var'          => true,
109
+               'rewrite'            => array(
110
+                    'slug' => \lsx_health_plan\functions\get_option( 'plan_single_slug', 'plan' ),
111
+               ),
112
+               'capability_type'    => 'page',
113
+               'has_archive'        => \lsx_health_plan\functions\get_option( 'endpoint_plan_archive', 'plans' ),
114
+               'hierarchical'       => false,
115
+               'menu_position'      => null,
116
+               'supports'           => array(
117
+                    'title',
118
+                    'editor',
119
+                    'thumbnail',
120
+                    'page-attributes',
121
+                    'custom-fields',
122
+               ),
123
+          );
124
+          register_post_type( 'plan', $args );
125
+     }
126
+
127
+     /**
128
+      * Register the Type taxonomy.
129
+      */
130
+     public function plan_type_taxonomy_setup() {
131
+          $labels = array(
132
+               'name'              => esc_html_x( 'Plan Type', 'taxonomy general name', 'lsx-health-plan' ),
133
+               'singular_name'     => esc_html_x( 'Plan Type', 'taxonomy singular name', 'lsx-health-plan' ),
134
+               'search_items'      => esc_html__( 'Search', 'lsx-health-plan' ),
135
+               'all_items'         => esc_html__( 'All', 'lsx-health-plan' ),
136
+               'parent_item'       => esc_html__( 'Parent', 'lsx-health-plan' ),
137
+               'parent_item_colon' => esc_html__( 'Parent:', 'lsx-health-plan' ),
138
+               'edit_item'         => esc_html__( 'Edit', 'lsx-health-plan' ),
139
+               'update_item'       => esc_html__( 'Update', 'lsx-health-plan' ),
140
+               'add_new_item'      => esc_html__( 'Add New', 'lsx-health-plan' ),
141
+               'new_item_name'     => esc_html__( 'New Name', 'lsx-health-plan' ),
142
+               'menu_name'         => esc_html__( 'Plan Types', 'lsx-health-plan' ),
143
+          );
144
+
145
+          $args = array(
146
+               'hierarchical'      => true,
147
+               'labels'            => $labels,
148
+               'show_ui'           => true,
149
+               'show_admin_column' => true,
150
+               'query_var'         => true,
151
+               'rewrite'           => array(
152
+                    'slug' => 'plan-type',
153
+               ),
154
+          );
155
+
156
+          register_taxonomy( 'plan-type', array( 'plan' ), $args );
157
+     }
158
+
159
+     /**
160
+      * Register the Week taxonomy.
161
+      */
162
+     public function week_taxonomy_setup() {
163
+          $labels = array(
164
+               'name'              => esc_html_x( 'Week', 'taxonomy general name', 'lsx-health-plan' ),
165
+               'singular_name'     => esc_html_x( 'Week', 'taxonomy singular name', 'lsx-health-plan' ),
166
+               'search_items'      => esc_html__( 'Search', 'lsx-health-plan' ),
167
+               'all_items'         => esc_html__( 'All', 'lsx-health-plan' ),
168
+               'parent_item'       => esc_html__( 'Parent', 'lsx-health-plan' ),
169
+               'parent_item_colon' => esc_html__( 'Parent:', 'lsx-health-plan' ),
170
+               'edit_item'         => esc_html__( 'Edit', 'lsx-health-plan' ),
171
+               'update_item'       => esc_html__( 'Update', 'lsx-health-plan' ),
172
+               'add_new_item'      => esc_html__( 'Add New', 'lsx-health-plan' ),
173
+               'new_item_name'     => esc_html__( 'New Name', 'lsx-health-plan' ),
174
+               'menu_name'         => esc_html__( 'Weeks', 'lsx-health-plan' ),
175
+          );
176
+
177
+          $args = array(
178
+               'hierarchical'      => true,
179
+               'labels'            => $labels,
180
+               'show_ui'           => true,
181
+               'show_admin_column' => true,
182
+               'query_var'         => true,
183
+               'show_in_rest'      => true,
184
+               'rewrite'           => array(
185
+                    'slug' => 'week',
186
+               ),
187
+          );
188
+
189
+          register_taxonomy( 'week', array( 'plan' ), $args );
190
+     }
191
+
192
+     /**
193
+      * Output the form field for this metadata when adding a new term
194
+      *
195
+      * @since 0.1.0
196
+      */
197
+     public function add_thumbnail_form_field( $term = false ) {
198
+          if ( is_object( $term ) ) {
199
+               $value         = get_term_meta( $term->term_id, 'thumbnail', true );
200
+               $image_preview = wp_get_attachment_image_src( $value, 'thumbnail' );
201
+
202
+               if ( is_array( $image_preview ) ) {
203
+                    $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 . '" />';
204
+               }
205
+          } else {
206
+               $image_preview = false;
207
+               $value         = false;
208
+          }
209
+          ?>
210 210
 		<tr class="form-field form-required term-thumbnail-wrap">
211 211
 			<th scope="row"><label for="thumbnail"><?php esc_html_e( 'Icon Image', 'lsx-health-plan' ); ?></label></th>
212 212
 			<td>
@@ -220,300 +220,300 @@  discard block
 block discarded – undo
220 220
 			</td>
221 221
 		</tr>
222 222
 		<?php
223
-	}
224
-
225
-	/**
226
-	 * Saves the Taxonomy term icon image
227
-	 *
228
-	 * @since 0.1.0
229
-	 *
230
-	 * @param  int    $term_id
231
-	 * @param  string $taxonomy
232
-	 */
233
-	public function save_meta( $term_id = 0, $taxonomy = '' ) {
234
-		if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
235
-			return;
236
-		}
237
-
238
-		if ( ! isset( $_POST['thumbnail'] ) ) {
239
-			return;
240
-		}
241
-
242
-		if ( check_admin_referer( 'lsx_hp_term_thumbnail_nonce', 'lsx_hp_term_thumbnail_nonce' ) ) {
243
-			if ( ! isset( $_POST['thumbnail'] ) ) {
244
-				return;
245
-			}
246
-
247
-			$thumbnail_meta = sanitize_text_field( $_POST['thumbnail'] );
248
-			$thumbnail_meta = ! empty( $thumbnail_meta ) ? $thumbnail_meta : '';
249
-
250
-			if ( empty( $thumbnail_meta ) ) {
251
-				delete_term_meta( $term_id, 'thumbnail' );
252
-			} else {
253
-				update_term_meta( $term_id, 'thumbnail', $thumbnail_meta );
254
-			}
255
-		}
256
-	}
257
-
258
-	/**
259
-	 * Define the metabox and field configurations.
260
-	 */
261
-	public function details_metaboxes() {
262
-		$cmb = new_cmb2_box( array(
263
-			'id'           => $this->slug . '_details_metabox',
264
-			'title'        => __( 'Details', 'lsx-health-plan' ),
265
-			'object_types' => array( $this->slug ), // Post type
266
-			'context'      => 'normal',
267
-			'priority'     => 'high',
268
-			'show_names'   => true,
269
-		) );
270
-
271
-		$cmb->add_field( array(
272
-			'name' => __( 'Plan Short Description', 'lsx-health-plan' ),
273
-			'id'   => $this->slug . '_short_description',
274
-			'type' => 'textarea_small',
275
-			'desc' => __( 'Add a small description for this plan (optional)', 'lsx-health-plan' ),
276
-		) );
277
-
278
-		$warmup_type = 'page';
279
-		if ( false !== \lsx_health_plan\functions\get_option( 'exercise_enabled', false ) ) {
280
-			$warmup_type = array( 'page', 'workout' );
281
-		}
282
-		$cmb->add_field( array(
283
-			'name'       => __( 'Warmup', 'lsx-health-plan' ),
284
-			'desc'       => __( 'Connect the warm up page that applies to this day plan using the field provided.', 'lsx-health-plan' ),
285
-			'id'         => $this->slug . '_warmup',
286
-			'type'       => 'post_search_ajax',
287
-			// Optional :
288
-			'limit'      => 3,  // Limit selection to X items only (default 1)
289
-			'sortable'   => true, // Allow selected items to be sortable (default false)
290
-			'query_args' => array(
291
-				'post_type'      => $warmup_type,
292
-				'post_status'    => array( 'publish' ),
293
-				'posts_per_page' => -1,
294
-			),
295
-		) );
296
-	}
297
-
298
-	/**
299
-	 * Adds the post type to the different arrays.
300
-	 *
301
-	 * @param array $post_types
302
-	 * @return array
303
-	 */
304
-	public function enable_post_type( $post_types = array() ) {
305
-		$post_types[] = $this->slug;
306
-		return $post_types;
307
-	}
308
-
309
-	/**
310
-	 * Registers the workout connections on the plan post type.
311
-	 *
312
-	 * @return void
313
-	 */
314
-	public function plan_connections() {
315
-		$cmb = new_cmb2_box(
316
-			array(
317
-				'id'           => $this->slug . '_connections_metabox',
318
-				'title'        => __( 'Plans', 'lsx-health-plan' ),
319
-				'object_types' => array( 'workout', 'meal', 'tip', 'recipe' ),
320
-				'context'      => 'normal',
321
-				'priority'     => 'high',
322
-				'show_names'   => true,
323
-			)
324
-		);
325
-		$cmb->add_field(
326
-			array(
327
-				'name'       => __( 'Plan', 'lsx-health-plan' ),
328
-				'id'         => 'connected_plans',
329
-				'desc'       => __( 'Connect this to the day plan it applies to, using the field provided.', 'lsx-health-plan' ),
330
-				'type'       => 'post_search_ajax',
331
-				'limit'      => 15,
332
-				'sortable'   => true,
333
-				'query_args' => array(
334
-					'post_type'      => array( 'plan' ),
335
-					'post_status'    => array( 'publish' ),
336
-					'posts_per_page' => -1,
337
-				),
338
-			)
339
-		);
340
-	}
341
-
342
-	/**
343
-	 * Remove the "Archives:" from the post type.
344
-	 *
345
-	 * @param string $title the term title.
346
-	 * @return string
347
-	 */
348
-	public function get_the_archive_title( $title ) {
349
-		if ( is_post_type_archive( 'plan' ) ) {
350
-			$title = __( 'Our health plans', 'lsx-health-plan' );
351
-		}
352
-		return $title;
353
-	}
354
-
355
-	/**
356
-	 * Set the post type archive to show the parent plans only.
357
-	 *
358
-	 * @param object $wp_query
359
-	 * @return array
360
-	 */
361
-	public function set_parent_only( $wp_query ) {
362
-		if ( ! is_admin() && $wp_query->is_main_query() && ( $wp_query->is_post_type_archive( 'plan' ) || $wp_query->is_tax( 'plan-type' ) ) ) {
363
-			$wp_query->set( 'post_parent', '0' );
364
-		}
365
-	}
366
-
367
-	/**
368
-	 * Define the metabox and field configurations.
369
-	 */
370
-	public function featured_metabox() {
371
-		$cmb = new_cmb2_box(
372
-			array(
373
-				'id'           => $this->slug . '_featured_metabox_plan',
374
-				'title'        => __( 'Featured Plan', 'lsx-health-plan' ),
375
-				'object_types' => array( $this->slug ), // Post type
376
-				'context'      => 'side',
377
-				'priority'     => 'high',
378
-				'show_names'   => true,
379
-			)
380
-		);
381
-		$cmb->add_field(
382
-			array(
383
-				'name'       => __( 'Featured Plan', 'lsx-health-plan' ),
384
-				'desc'       => __( 'Enable a featured plan' ),
385
-				'id'         => $this->slug . '_featured_plan',
386
-				'type'       => 'checkbox',
387
-				'show_on_cb' => 'cmb2_hide_if_no_cats',
388
-			)
389
-		);
390
-	}
391
-
392
-	/**
393
-	 * Define the metabox and field configurations.
394
-	 */
395
-	public function sections_metabox_loop() {
396
-		$cmb = new_cmb2_box(
397
-			array(
398
-				'id'           => $this->slug . '_sections_metabox',
399
-				'title'        => __( 'Sections', 'lsx-health-plan' ),
400
-				'object_types' => array( $this->slug ), // Post type.
401
-				'context'      => 'normal',
402
-				'priority'     => 'low',
403
-				'show_names'   => true,
404
-			)
405
-		);
406
-
407
-		/*
223
+     }
224
+
225
+     /**
226
+      * Saves the Taxonomy term icon image
227
+      *
228
+      * @since 0.1.0
229
+      *
230
+      * @param  int    $term_id
231
+      * @param  string $taxonomy
232
+      */
233
+     public function save_meta( $term_id = 0, $taxonomy = '' ) {
234
+          if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
235
+               return;
236
+          }
237
+
238
+          if ( ! isset( $_POST['thumbnail'] ) ) {
239
+               return;
240
+          }
241
+
242
+          if ( check_admin_referer( 'lsx_hp_term_thumbnail_nonce', 'lsx_hp_term_thumbnail_nonce' ) ) {
243
+               if ( ! isset( $_POST['thumbnail'] ) ) {
244
+                    return;
245
+               }
246
+
247
+               $thumbnail_meta = sanitize_text_field( $_POST['thumbnail'] );
248
+               $thumbnail_meta = ! empty( $thumbnail_meta ) ? $thumbnail_meta : '';
249
+
250
+               if ( empty( $thumbnail_meta ) ) {
251
+                    delete_term_meta( $term_id, 'thumbnail' );
252
+               } else {
253
+                    update_term_meta( $term_id, 'thumbnail', $thumbnail_meta );
254
+               }
255
+          }
256
+     }
257
+
258
+     /**
259
+      * Define the metabox and field configurations.
260
+      */
261
+     public function details_metaboxes() {
262
+          $cmb = new_cmb2_box( array(
263
+               'id'           => $this->slug . '_details_metabox',
264
+               'title'        => __( 'Details', 'lsx-health-plan' ),
265
+               'object_types' => array( $this->slug ), // Post type
266
+               'context'      => 'normal',
267
+               'priority'     => 'high',
268
+               'show_names'   => true,
269
+          ) );
270
+
271
+          $cmb->add_field( array(
272
+               'name' => __( 'Plan Short Description', 'lsx-health-plan' ),
273
+               'id'   => $this->slug . '_short_description',
274
+               'type' => 'textarea_small',
275
+               'desc' => __( 'Add a small description for this plan (optional)', 'lsx-health-plan' ),
276
+          ) );
277
+
278
+          $warmup_type = 'page';
279
+          if ( false !== \lsx_health_plan\functions\get_option( 'exercise_enabled', false ) ) {
280
+               $warmup_type = array( 'page', 'workout' );
281
+          }
282
+          $cmb->add_field( array(
283
+               'name'       => __( 'Warmup', 'lsx-health-plan' ),
284
+               'desc'       => __( 'Connect the warm up page that applies to this day plan using the field provided.', 'lsx-health-plan' ),
285
+               'id'         => $this->slug . '_warmup',
286
+               'type'       => 'post_search_ajax',
287
+               // Optional :
288
+               'limit'      => 3,  // Limit selection to X items only (default 1)
289
+               'sortable'   => true, // Allow selected items to be sortable (default false)
290
+               'query_args' => array(
291
+                    'post_type'      => $warmup_type,
292
+                    'post_status'    => array( 'publish' ),
293
+                    'posts_per_page' => -1,
294
+               ),
295
+          ) );
296
+     }
297
+
298
+     /**
299
+      * Adds the post type to the different arrays.
300
+      *
301
+      * @param array $post_types
302
+      * @return array
303
+      */
304
+     public function enable_post_type( $post_types = array() ) {
305
+          $post_types[] = $this->slug;
306
+          return $post_types;
307
+     }
308
+
309
+     /**
310
+      * Registers the workout connections on the plan post type.
311
+      *
312
+      * @return void
313
+      */
314
+     public function plan_connections() {
315
+          $cmb = new_cmb2_box(
316
+               array(
317
+                    'id'           => $this->slug . '_connections_metabox',
318
+                    'title'        => __( 'Plans', 'lsx-health-plan' ),
319
+                    'object_types' => array( 'workout', 'meal', 'tip', 'recipe' ),
320
+                    'context'      => 'normal',
321
+                    'priority'     => 'high',
322
+                    'show_names'   => true,
323
+               )
324
+          );
325
+          $cmb->add_field(
326
+               array(
327
+                    'name'       => __( 'Plan', 'lsx-health-plan' ),
328
+                    'id'         => 'connected_plans',
329
+                    'desc'       => __( 'Connect this to the day plan it applies to, using the field provided.', 'lsx-health-plan' ),
330
+                    'type'       => 'post_search_ajax',
331
+                    'limit'      => 15,
332
+                    'sortable'   => true,
333
+                    'query_args' => array(
334
+                         'post_type'      => array( 'plan' ),
335
+                         'post_status'    => array( 'publish' ),
336
+                         'posts_per_page' => -1,
337
+                    ),
338
+               )
339
+          );
340
+     }
341
+
342
+     /**
343
+      * Remove the "Archives:" from the post type.
344
+      *
345
+      * @param string $title the term title.
346
+      * @return string
347
+      */
348
+     public function get_the_archive_title( $title ) {
349
+          if ( is_post_type_archive( 'plan' ) ) {
350
+               $title = __( 'Our health plans', 'lsx-health-plan' );
351
+          }
352
+          return $title;
353
+     }
354
+
355
+     /**
356
+      * Set the post type archive to show the parent plans only.
357
+      *
358
+      * @param object $wp_query
359
+      * @return array
360
+      */
361
+     public function set_parent_only( $wp_query ) {
362
+          if ( ! is_admin() && $wp_query->is_main_query() && ( $wp_query->is_post_type_archive( 'plan' ) || $wp_query->is_tax( 'plan-type' ) ) ) {
363
+               $wp_query->set( 'post_parent', '0' );
364
+          }
365
+     }
366
+
367
+     /**
368
+      * Define the metabox and field configurations.
369
+      */
370
+     public function featured_metabox() {
371
+          $cmb = new_cmb2_box(
372
+               array(
373
+                    'id'           => $this->slug . '_featured_metabox_plan',
374
+                    'title'        => __( 'Featured Plan', 'lsx-health-plan' ),
375
+                    'object_types' => array( $this->slug ), // Post type
376
+                    'context'      => 'side',
377
+                    'priority'     => 'high',
378
+                    'show_names'   => true,
379
+               )
380
+          );
381
+          $cmb->add_field(
382
+               array(
383
+                    'name'       => __( 'Featured Plan', 'lsx-health-plan' ),
384
+                    'desc'       => __( 'Enable a featured plan' ),
385
+                    'id'         => $this->slug . '_featured_plan',
386
+                    'type'       => 'checkbox',
387
+                    'show_on_cb' => 'cmb2_hide_if_no_cats',
388
+               )
389
+          );
390
+     }
391
+
392
+     /**
393
+      * Define the metabox and field configurations.
394
+      */
395
+     public function sections_metabox_loop() {
396
+          $cmb = new_cmb2_box(
397
+               array(
398
+                    'id'           => $this->slug . '_sections_metabox',
399
+                    'title'        => __( 'Sections', 'lsx-health-plan' ),
400
+                    'object_types' => array( $this->slug ), // Post type.
401
+                    'context'      => 'normal',
402
+                    'priority'     => 'low',
403
+                    'show_names'   => true,
404
+               )
405
+          );
406
+
407
+          /*
408 408
 		This is where the repeatable group is defined, each field has the same ID as the legacy field.
409 409
 		There is a function which runs and adds to looped fields to individual fields for WP Query compatability.
410 410
 		*/
411
-		$group = $cmb->add_field(
412
-			array(
413
-				'id'      => $this->slug . '_sections',
414
-				'type'    => 'group',
415
-				'options' => array(
416
-					'group_title'   => __( 'Section', 'lsx-health-plan' ) . ' {#}', // {#} gets replaced by row number
417
-					'add_button'    => __( 'Add section', 'lsx-health-plan' ),
418
-					'remove_button' => __( 'Remove section', 'lsx-health-plan' ),
419
-					'sortable'      => true,
420
-					'closed'        => true, // true to have the groups closed by default
421
-				),
422
-				'classes' => 'lsx-admin-row',
411
+          $group = $cmb->add_field(
412
+               array(
413
+                    'id'      => $this->slug . '_sections',
414
+                    'type'    => 'group',
415
+                    'options' => array(
416
+                         'group_title'   => __( 'Section', 'lsx-health-plan' ) . ' {#}', // {#} gets replaced by row number
417
+                         'add_button'    => __( 'Add section', 'lsx-health-plan' ),
418
+                         'remove_button' => __( 'Remove section', 'lsx-health-plan' ),
419
+                         'sortable'      => true,
420
+                         'closed'        => true, // true to have the groups closed by default
421
+                    ),
422
+                    'classes' => 'lsx-admin-row',
423 423
 				
424
-			)
425
-		);
426
-
427
-		$cmb->add_group_field(
428
-			$group,
429
-			array(
430
-				'name'       => __( 'Title', 'lsx-health-plan' ),
431
-				'id'         => 'title',
432
-				'type'       => 'text',
433
-				'desc'       => __( 'e.g Day 1 / Week 1', 'lsx-health-plan' ),
434
-				'classes'    => 'lsx-field-col  lsx-field-col-50',
435
-			)
436
-		);
437
-
438
-		$cmb->add_group_field(
439
-			$group,
440
-			array(
441
-				'name'       => __( 'Group', 'lsx-health-plan' ),
442
-				'id'         => 'group',
443
-				'type'       => 'text',
444
-				'desc'       => __( 'e.g Week 1 / January', 'lsx-health-plan' ),
445
-				'classes'    => 'lsx-field-col  lsx-field-col-50',
446
-			)
447
-		);
448
-
449
-		$cmb->add_group_field(
450
-			$group,
451
-			array(
452
-				'name' => __( 'Overview', 'lsx-health-plan' ),
453
-				'id'   => 'description',
454
-				'type' => 'wysiwyg',
455
-			)
456
-		);
457
-
458
-		if ( post_type_exists( 'workout' ) ) {
459
-			$cmb->add_group_field(
460
-				$group,
461
-				array(
462
-					'name'       => __( 'Workouts', 'lsx-health-plan' ),
463
-					'id'         => 'connected_workouts',
464
-					'desc'       => __( 'Connect the workout(s) that apply to this section.', 'lsx-health-plan' ),
465
-					'type'       => 'post_search_ajax',
466
-					'limit'      => 15,
467
-					'sortable'   => true,
468
-					'query_args' => array(
469
-						'post_type'      => array( 'workout' ),
470
-						'post_status'    => array( 'publish' ),
471
-						'posts_per_page' => -1,
472
-					),
473
-					'classes'    => 'lsx-field-col lsx-field-add-field  lsx-field-col-33',
474
-				)
475
-			);
476
-		}
477
-
478
-		if ( post_type_exists( 'meal' ) ) {
479
-			$cmb->add_group_field(
480
-				$group,
481
-				array(
482
-					'name'       => __( 'Meals', 'lsx-health-plan' ),
483
-					'desc'       => __( 'Connect the meal(s) that apply to this section.', 'lsx-health-plan' ),
484
-					'id'         => 'connected_meals',
485
-					'type'       => 'post_search_ajax',
486
-					// Optional :
487
-					'limit'      => 15, // Limit selection to X items only (default 1)
488
-					'sortable'   => true, // Allow selected items to be sortable (default false)
489
-					'query_args' => array(
490
-						'post_type'      => array( 'meal' ),
491
-						'post_status'    => array( 'publish' ),
492
-						'posts_per_page' => -1,
493
-					),
494
-					'classes'    => 'lsx-field-col lsx-field-add-field  lsx-field-col-33',
495
-				)
496
-			);
497
-		}
498
-		if ( post_type_exists( 'tip' ) ) {
499
-			$cmb->add_group_field(
500
-				$group,
501
-				array(
502
-					'name'       => __( 'Tips', 'lsx-health-plan' ),
503
-					'id'         => 'connected_tips',
504
-					'desc'       => __( 'Connect the tip(s) that apply to this section.', 'lsx-health-plan' ),
505
-					'type'       => 'post_search_ajax',
506
-					// Optional :
507
-					'limit'      => 15,  // Limit selection to X items only (default 1)
508
-					'sortable'   => true,  // Allow selected items to be sortable (default false)
509
-					'query_args' => array(
510
-						'post_type'      => array( 'tip' ),
511
-						'post_status'    => array( 'publish' ),
512
-						'posts_per_page' => -1,
513
-					),
514
-					'classes'    => 'lsx-field-col lsx-field-add-field  lsx-field-col-33',
515
-				)
516
-			);
517
-		}
518
-	}
424
+               )
425
+          );
426
+
427
+          $cmb->add_group_field(
428
+               $group,
429
+               array(
430
+                    'name'       => __( 'Title', 'lsx-health-plan' ),
431
+                    'id'         => 'title',
432
+                    'type'       => 'text',
433
+                    'desc'       => __( 'e.g Day 1 / Week 1', 'lsx-health-plan' ),
434
+                    'classes'    => 'lsx-field-col  lsx-field-col-50',
435
+               )
436
+          );
437
+
438
+          $cmb->add_group_field(
439
+               $group,
440
+               array(
441
+                    'name'       => __( 'Group', 'lsx-health-plan' ),
442
+                    'id'         => 'group',
443
+                    'type'       => 'text',
444
+                    'desc'       => __( 'e.g Week 1 / January', 'lsx-health-plan' ),
445
+                    'classes'    => 'lsx-field-col  lsx-field-col-50',
446
+               )
447
+          );
448
+
449
+          $cmb->add_group_field(
450
+               $group,
451
+               array(
452
+                    'name' => __( 'Overview', 'lsx-health-plan' ),
453
+                    'id'   => 'description',
454
+                    'type' => 'wysiwyg',
455
+               )
456
+          );
457
+
458
+          if ( post_type_exists( 'workout' ) ) {
459
+               $cmb->add_group_field(
460
+                    $group,
461
+                    array(
462
+                         'name'       => __( 'Workouts', 'lsx-health-plan' ),
463
+                         'id'         => 'connected_workouts',
464
+                         'desc'       => __( 'Connect the workout(s) that apply to this section.', 'lsx-health-plan' ),
465
+                         'type'       => 'post_search_ajax',
466
+                         'limit'      => 15,
467
+                         'sortable'   => true,
468
+                         'query_args' => array(
469
+                              'post_type'      => array( 'workout' ),
470
+                              'post_status'    => array( 'publish' ),
471
+                              'posts_per_page' => -1,
472
+                         ),
473
+                         'classes'    => 'lsx-field-col lsx-field-add-field  lsx-field-col-33',
474
+                    )
475
+               );
476
+          }
477
+
478
+          if ( post_type_exists( 'meal' ) ) {
479
+               $cmb->add_group_field(
480
+                    $group,
481
+                    array(
482
+                         'name'       => __( 'Meals', 'lsx-health-plan' ),
483
+                         'desc'       => __( 'Connect the meal(s) that apply to this section.', 'lsx-health-plan' ),
484
+                         'id'         => 'connected_meals',
485
+                         'type'       => 'post_search_ajax',
486
+                         // Optional :
487
+                         'limit'      => 15, // Limit selection to X items only (default 1)
488
+                         'sortable'   => true, // Allow selected items to be sortable (default false)
489
+                         'query_args' => array(
490
+                              'post_type'      => array( 'meal' ),
491
+                              'post_status'    => array( 'publish' ),
492
+                              'posts_per_page' => -1,
493
+                         ),
494
+                         'classes'    => 'lsx-field-col lsx-field-add-field  lsx-field-col-33',
495
+                    )
496
+               );
497
+          }
498
+          if ( post_type_exists( 'tip' ) ) {
499
+               $cmb->add_group_field(
500
+                    $group,
501
+                    array(
502
+                         'name'       => __( 'Tips', 'lsx-health-plan' ),
503
+                         'id'         => 'connected_tips',
504
+                         'desc'       => __( 'Connect the tip(s) that apply to this section.', 'lsx-health-plan' ),
505
+                         'type'       => 'post_search_ajax',
506
+                         // Optional :
507
+                         'limit'      => 15,  // Limit selection to X items only (default 1)
508
+                         'sortable'   => true,  // Allow selected items to be sortable (default false)
509
+                         'query_args' => array(
510
+                              'post_type'      => array( 'tip' ),
511
+                              'post_status'    => array( 'publish' ),
512
+                              'posts_per_page' => -1,
513
+                         ),
514
+                         'classes'    => 'lsx-field-col lsx-field-add-field  lsx-field-col-33',
515
+                    )
516
+               );
517
+          }
518
+     }
519 519
 }
Please login to merge, or discard this patch.
classes/post-types/class-video.php 1 patch
Indentation   +175 added lines, -175 removed lines patch added patch discarded remove patch
@@ -8,188 +8,188 @@
 block discarded – undo
8 8
  */
9 9
 class Video {
10 10
 
11
-	/**
12
-	 * Holds class instance
13
-	 *
14
-	 * @since 1.0.0
15
-	 *
16
-	 * @var      object \lsx_health_plan\classes\Video()
17
-	 */
18
-	protected static $instance = null;
11
+     /**
12
+      * Holds class instance
13
+      *
14
+      * @since 1.0.0
15
+      *
16
+      * @var      object \lsx_health_plan\classes\Video()
17
+      */
18
+     protected static $instance = null;
19 19
 
20
-	/**
21
-	 * Holds post_type slug used as an index
22
-	 *
23
-	 * @since 1.0.0
24
-	 *
25
-	 * @var      string
26
-	 */
27
-	public $slug = 'video';
20
+     /**
21
+      * Holds post_type slug used as an index
22
+      *
23
+      * @since 1.0.0
24
+      *
25
+      * @var      string
26
+      */
27
+     public $slug = 'video';
28 28
 
29
-	/**
30
-	 * Constructor
31
-	 */
32
-	public function __construct() {
33
-		add_action( 'init', array( $this, 'register_post_type' ) );
34
-		add_action( 'admin_menu', array( $this, 'register_menus' ) );
35
-		add_filter( 'lsx_health_plan_single_template', array( $this, 'enable_post_type' ), 10, 1 );
36
-		add_filter( 'lsx_health_plan_connections', array( $this, 'enable_connections' ), 10, 1 );
37
-		add_action( 'cmb2_admin_init', array( $this, 'details_metaboxes' ) );
38
-	}
29
+     /**
30
+      * Constructor
31
+      */
32
+     public function __construct() {
33
+          add_action( 'init', array( $this, 'register_post_type' ) );
34
+          add_action( 'admin_menu', array( $this, 'register_menus' ) );
35
+          add_filter( 'lsx_health_plan_single_template', array( $this, 'enable_post_type' ), 10, 1 );
36
+          add_filter( 'lsx_health_plan_connections', array( $this, 'enable_connections' ), 10, 1 );
37
+          add_action( 'cmb2_admin_init', array( $this, 'details_metaboxes' ) );
38
+     }
39 39
 
40
-	/**
41
-	 * Return an instance of this class.
42
-	 *
43
-	 * @since 1.0.0
44
-	 *
45
-	 * @return    object \lsx_health_plan\classes\Video()    A single instance of this class.
46
-	 */
47
-	public static function get_instance() {
48
-		// If the single instance hasn't been set, set it now.
49
-		if ( null === self::$instance ) {
50
-			self::$instance = new self();
51
-		}
52
-		return self::$instance;
53
-	}
54
-	/**
55
-	 * Register the post type.
56
-	 */
57
-	public function register_post_type() {
58
-		$labels = array(
59
-			'name'               => esc_html__( 'Videos', 'lsx-health-plan' ),
60
-			'singular_name'      => esc_html__( 'Video', 'lsx-health-plan' ),
61
-			'add_new'            => esc_html_x( 'Add New', 'post type general name', 'lsx-health-plan' ),
62
-			'add_new_item'       => esc_html__( 'Add New', 'lsx-health-plan' ),
63
-			'edit_item'          => esc_html__( 'Edit', 'lsx-health-plan' ),
64
-			'new_item'           => esc_html__( 'New', 'lsx-health-plan' ),
65
-			'all_items'          => esc_html__( 'All Videos', 'lsx-health-plan' ),
66
-			'view_item'          => esc_html__( 'View', 'lsx-health-plan' ),
67
-			'search_items'       => esc_html__( 'Search', 'lsx-health-plan' ),
68
-			'not_found'          => esc_html__( 'None found', 'lsx-health-plan' ),
69
-			'not_found_in_trash' => esc_html__( 'None found in Trash', 'lsx-health-plan' ),
70
-			'parent_item_colon'  => '',
71
-			'menu_name'          => esc_html__( 'Videos', 'lsx-health-plan' ),
72
-		);
73
-		$args   = array(
74
-			'labels'             => $labels,
75
-			'public'             => true,
76
-			'publicly_queryable' => true,
77
-			'show_ui'            => true,
78
-			'show_in_menu'       => false,
79
-			'show_in_rest'       => true,
80
-			'menu_icon'          => 'dashicons-format-video',
81
-			'query_var'          => true,
82
-			'rewrite'            => false,
83
-			'capability_type'    => 'post',
84
-			'has_archive'        => false,
85
-			'hierarchical'       => false,
86
-			'menu_position'      => null,
87
-			'supports'           => array(
88
-				'title',
89
-				'editor',
90
-				'custom-fields',
91
-			),
92
-		);
93
-		register_post_type( 'video', $args );
94
-	}
40
+     /**
41
+      * Return an instance of this class.
42
+      *
43
+      * @since 1.0.0
44
+      *
45
+      * @return    object \lsx_health_plan\classes\Video()    A single instance of this class.
46
+      */
47
+     public static function get_instance() {
48
+          // If the single instance hasn't been set, set it now.
49
+          if ( null === self::$instance ) {
50
+               self::$instance = new self();
51
+          }
52
+          return self::$instance;
53
+     }
54
+     /**
55
+      * Register the post type.
56
+      */
57
+     public function register_post_type() {
58
+          $labels = array(
59
+               'name'               => esc_html__( 'Videos', 'lsx-health-plan' ),
60
+               'singular_name'      => esc_html__( 'Video', 'lsx-health-plan' ),
61
+               'add_new'            => esc_html_x( 'Add New', 'post type general name', 'lsx-health-plan' ),
62
+               'add_new_item'       => esc_html__( 'Add New', 'lsx-health-plan' ),
63
+               'edit_item'          => esc_html__( 'Edit', 'lsx-health-plan' ),
64
+               'new_item'           => esc_html__( 'New', 'lsx-health-plan' ),
65
+               'all_items'          => esc_html__( 'All Videos', 'lsx-health-plan' ),
66
+               'view_item'          => esc_html__( 'View', 'lsx-health-plan' ),
67
+               'search_items'       => esc_html__( 'Search', 'lsx-health-plan' ),
68
+               'not_found'          => esc_html__( 'None found', 'lsx-health-plan' ),
69
+               'not_found_in_trash' => esc_html__( 'None found in Trash', 'lsx-health-plan' ),
70
+               'parent_item_colon'  => '',
71
+               'menu_name'          => esc_html__( 'Videos', 'lsx-health-plan' ),
72
+          );
73
+          $args   = array(
74
+               'labels'             => $labels,
75
+               'public'             => true,
76
+               'publicly_queryable' => true,
77
+               'show_ui'            => true,
78
+               'show_in_menu'       => false,
79
+               'show_in_rest'       => true,
80
+               'menu_icon'          => 'dashicons-format-video',
81
+               'query_var'          => true,
82
+               'rewrite'            => false,
83
+               'capability_type'    => 'post',
84
+               'has_archive'        => false,
85
+               'hierarchical'       => false,
86
+               'menu_position'      => null,
87
+               'supports'           => array(
88
+                    'title',
89
+                    'editor',
90
+                    'custom-fields',
91
+               ),
92
+          );
93
+          register_post_type( 'video', $args );
94
+     }
95 95
 
96
-	/**
97
-	 * Registers the Recipes under the Meals Post type menu.
98
-	 *
99
-	 * @return void
100
-	 */
101
-	public function register_menus() {
102
-		add_submenu_page( 'edit.php?post_type=workout', esc_html__( 'Videos', 'lsx-health-plan' ), esc_html__( 'Videos', 'lsx-health-plan' ), 'edit_posts', 'edit.php?post_type=video' );
103
-	}
96
+     /**
97
+      * Registers the Recipes under the Meals Post type menu.
98
+      *
99
+      * @return void
100
+      */
101
+     public function register_menus() {
102
+          add_submenu_page( 'edit.php?post_type=workout', esc_html__( 'Videos', 'lsx-health-plan' ), esc_html__( 'Videos', 'lsx-health-plan' ), 'edit_posts', 'edit.php?post_type=video' );
103
+     }
104 104
 
105
-	/**
106
-	 * Adds the post type to the different arrays.
107
-	 *
108
-	 * @param array $post_types
109
-	 * @return array
110
-	 */
111
-	public function enable_post_type( $post_types = array() ) {
112
-		$post_types[] = $this->slug;
113
-		return $post_types;
114
-	}
105
+     /**
106
+      * Adds the post type to the different arrays.
107
+      *
108
+      * @param array $post_types
109
+      * @return array
110
+      */
111
+     public function enable_post_type( $post_types = array() ) {
112
+          $post_types[] = $this->slug;
113
+          return $post_types;
114
+     }
115 115
 
116
-	/**
117
-	 * Enables the Bi Directional relationships
118
-	 *
119
-	 * @param array $connections
120
-	 * @return void
121
-	 */
122
-	public function enable_connections( $connections = array() ) {
123
-		$connections['video']['connected_plans']    = 'connected_videos';
124
-		$connections['plan']['connected_videos']    = 'connected_plans';
125
-		$connections['video']['connected_workouts'] = 'connected_videos';
126
-		$connections['plan']['connected_videos']    = 'connected_workouts';
127
-		return $connections;
128
-	}
116
+     /**
117
+      * Enables the Bi Directional relationships
118
+      *
119
+      * @param array $connections
120
+      * @return void
121
+      */
122
+     public function enable_connections( $connections = array() ) {
123
+          $connections['video']['connected_plans']    = 'connected_videos';
124
+          $connections['plan']['connected_videos']    = 'connected_plans';
125
+          $connections['video']['connected_workouts'] = 'connected_videos';
126
+          $connections['plan']['connected_videos']    = 'connected_workouts';
127
+          return $connections;
128
+     }
129 129
 
130
-	/**
131
-	 * Define the metabox and field configurations.
132
-	 */
133
-	public function details_metaboxes() {
134
-		$cmb = new_cmb2_box( array(
135
-			'id'           => $this->slug . '_details_metabox',
136
-			'title'        => __( 'Video Details', 'lsx-health-plan' ),
137
-			'object_types' => array( $this->slug ), // Post type
138
-			'context'      => 'normal',
139
-			'priority'     => 'high',
140
-			'show_names'   => true,
141
-		) );
142
-		$cmb->add_field( array(
143
-			'name'       => __( 'Featured Video', 'lsx-health-plan' ),
144
-			'desc'       => __( 'Enable the checkbox to feature this video, featured videos display in any page that has the video shortcode: [lsx_health_plan_featured_videos_block]', 'lsx-health-plan' ),
145
-			'id'         => $this->slug . '_featured_video',
146
-			'type'       => 'checkbox',
147
-			'show_on_cb' => 'cmb2_hide_if_no_cats',
148
-		) );
149
-		$cmb->add_field( array(
150
-			'name'       => __( 'Youtube Source', 'lsx-health-plan' ),
151
-			'desc'       => __( 'Drop in the url for your video from YouTube in this field, i.e: "https://www.youtube.com/watch?v=9xwazD5SyVg"', 'lsx-health-plan' ),
152
-			'id'         => $this->slug . '_youtube_source',
153
-			'type'       => 'oembed',
154
-			'show_on_cb' => 'cmb2_hide_if_no_cats',
155
-		) );
156
-		$cmb->add_field( array(
157
-			'name'       => __( 'Giphy Source', 'lsx-health-plan' ),
158
-			'desc'       => __( 'Drop in the iFrame embed code from Giphy in this field, i.e: &lt;iframe src="https://giphy.com/embed/3o7527Rn1HxXWqgxuo" width="480" height="270" frameborder="0" class="giphy-embed" allowfullscreen&gt;&lt;/iframe&gt;', 'lsx-health-plan' ),
159
-			'id'         => $this->slug . '_giphy_source',
160
-			'type'       => 'textarea_code',
161
-			'show_on_cb' => 'cmb2_hide_if_no_cats',
162
-		) );
163
-	}
130
+     /**
131
+      * Define the metabox and field configurations.
132
+      */
133
+     public function details_metaboxes() {
134
+          $cmb = new_cmb2_box( array(
135
+               'id'           => $this->slug . '_details_metabox',
136
+               'title'        => __( 'Video Details', 'lsx-health-plan' ),
137
+               'object_types' => array( $this->slug ), // Post type
138
+               'context'      => 'normal',
139
+               'priority'     => 'high',
140
+               'show_names'   => true,
141
+          ) );
142
+          $cmb->add_field( array(
143
+               'name'       => __( 'Featured Video', 'lsx-health-plan' ),
144
+               'desc'       => __( 'Enable the checkbox to feature this video, featured videos display in any page that has the video shortcode: [lsx_health_plan_featured_videos_block]', 'lsx-health-plan' ),
145
+               'id'         => $this->slug . '_featured_video',
146
+               'type'       => 'checkbox',
147
+               'show_on_cb' => 'cmb2_hide_if_no_cats',
148
+          ) );
149
+          $cmb->add_field( array(
150
+               'name'       => __( 'Youtube Source', 'lsx-health-plan' ),
151
+               'desc'       => __( 'Drop in the url for your video from YouTube in this field, i.e: "https://www.youtube.com/watch?v=9xwazD5SyVg"', 'lsx-health-plan' ),
152
+               'id'         => $this->slug . '_youtube_source',
153
+               'type'       => 'oembed',
154
+               'show_on_cb' => 'cmb2_hide_if_no_cats',
155
+          ) );
156
+          $cmb->add_field( array(
157
+               'name'       => __( 'Giphy Source', 'lsx-health-plan' ),
158
+               'desc'       => __( 'Drop in the iFrame embed code from Giphy in this field, i.e: &lt;iframe src="https://giphy.com/embed/3o7527Rn1HxXWqgxuo" width="480" height="270" frameborder="0" class="giphy-embed" allowfullscreen&gt;&lt;/iframe&gt;', 'lsx-health-plan' ),
159
+               'id'         => $this->slug . '_giphy_source',
160
+               'type'       => 'textarea_code',
161
+               'show_on_cb' => 'cmb2_hide_if_no_cats',
162
+          ) );
163
+     }
164 164
 
165
-	// /**
166
-	//  * Registers the workout connections on the workout post type.
167
-	//  *
168
-	//  * @return void
169
-	//  */
170
-	// public function videos_connections() {
171
-	// 	$cmb = new_cmb2_box( array(
172
-	// 		'id'           => $this->slug . '_videos_connections_metabox',
173
-	// 		'title'        => __( 'Videos', 'lsx-health-plan' ),
174
-	// 		'desc'         => __( 'Start typing to search for your workouts', 'lsx-health-plan' ),
175
-	// 		'object_types' => array( 'workout' ), // Post type
176
-	// 		'context'      => 'normal',
177
-	// 		'priority'     => 'high',
178
-	// 		'show_names'   => false,
179
-	// 	) );
180
-	// 	$cmb->add_field( array(
181
-	// 		'name'       => __( 'Videos', 'lsx-health-plan' ),
182
-	// 		'id'         => 'connected_videos',
183
-	// 		'type'       => 'post_search_ajax',
184
-	// 		// Optional :
185
-	// 		'limit'      => 15, // Limit selection to X items only (default 1)
186
-	// 		'sortable'   => true, // Allow selected items to be sortable (default false)
187
-	// 		'query_args' => array(
188
-	// 			'post_type'      => array( 'video' ),
189
-	// 			'post_status'    => array( 'publish' ),
190
-	// 			'posts_per_page' => -1,
191
-	// 		),
192
-	// 	) );
193
-	// }
165
+     // /**
166
+     //  * Registers the workout connections on the workout post type.
167
+     //  *
168
+     //  * @return void
169
+     //  */
170
+     // public function videos_connections() {
171
+     // 	$cmb = new_cmb2_box( array(
172
+     // 		'id'           => $this->slug . '_videos_connections_metabox',
173
+     // 		'title'        => __( 'Videos', 'lsx-health-plan' ),
174
+     // 		'desc'         => __( 'Start typing to search for your workouts', 'lsx-health-plan' ),
175
+     // 		'object_types' => array( 'workout' ), // Post type
176
+     // 		'context'      => 'normal',
177
+     // 		'priority'     => 'high',
178
+     // 		'show_names'   => false,
179
+     // 	) );
180
+     // 	$cmb->add_field( array(
181
+     // 		'name'       => __( 'Videos', 'lsx-health-plan' ),
182
+     // 		'id'         => 'connected_videos',
183
+     // 		'type'       => 'post_search_ajax',
184
+     // 		// Optional :
185
+     // 		'limit'      => 15, // Limit selection to X items only (default 1)
186
+     // 		'sortable'   => true, // Allow selected items to be sortable (default false)
187
+     // 		'query_args' => array(
188
+     // 			'post_type'      => array( 'video' ),
189
+     // 			'post_status'    => array( 'publish' ),
190
+     // 			'posts_per_page' => -1,
191
+     // 		),
192
+     // 	) );
193
+     // }
194 194
 
195 195
 }
Please login to merge, or discard this patch.
classes/integrations/class-download-monitor.php 1 patch
Indentation   +150 added lines, -150 removed lines patch added patch discarded remove patch
@@ -8,161 +8,161 @@
 block discarded – undo
8 8
  */
9 9
 class Download_Monitor {
10 10
 
11
-	/**
12
-	 * Holds class instance
13
-	 *
14
-	 * @since 1.0.0
15
-	 *
16
-	 * @var      object \lsx_health_plan\classes\Download_Monitor()
17
-	 */
18
-	protected static $instance = null;
11
+     /**
12
+      * Holds class instance
13
+      *
14
+      * @since 1.0.0
15
+      *
16
+      * @var      object \lsx_health_plan\classes\Download_Monitor()
17
+      */
18
+     protected static $instance = null;
19 19
 
20
-	/**
21
-	 * Holds post_type slug used as an index
22
-	 *
23
-	 * @since 1.0.0
24
-	 *
25
-	 * @var      string
26
-	 */
27
-	public $slug = 'download';
20
+     /**
21
+      * Holds post_type slug used as an index
22
+      *
23
+      * @since 1.0.0
24
+      *
25
+      * @var      string
26
+      */
27
+     public $slug = 'download';
28 28
 
29
-	/**
30
-	 * Constructor
31
-	 */
32
-	public function __construct() {
33
-		add_action( 'cmb2_admin_init', array( $this, 'downloads_post_type_metaboxes' ), 5 );
34
-		add_action( 'cmb2_admin_init', array( $this, 'download_connections' ), 5 );
35
-		add_filter( 'lsx_health_plan_connections', array( $this, 'enable_connections' ), 10, 1 );
36
-	}
29
+     /**
30
+      * Constructor
31
+      */
32
+     public function __construct() {
33
+          add_action( 'cmb2_admin_init', array( $this, 'downloads_post_type_metaboxes' ), 5 );
34
+          add_action( 'cmb2_admin_init', array( $this, 'download_connections' ), 5 );
35
+          add_filter( 'lsx_health_plan_connections', array( $this, 'enable_connections' ), 10, 1 );
36
+     }
37 37
 
38
-	/**
39
-	 * Return an instance of this class.
40
-	 *
41
-	 * @since 1.0.0
42
-	 *
43
-	 * @return    object \lsx_health_plan\classes\Download_Monitor()    A single instance of this class.
44
-	 */
45
-	public static function get_instance() {
46
-		// If the single instance hasn't been set, set it now.
47
-		if ( null === self::$instance ) {
48
-			self::$instance = new self();
49
-		}
50
-		return self::$instance;
51
-	}
38
+     /**
39
+      * Return an instance of this class.
40
+      *
41
+      * @since 1.0.0
42
+      *
43
+      * @return    object \lsx_health_plan\classes\Download_Monitor()    A single instance of this class.
44
+      */
45
+     public static function get_instance() {
46
+          // If the single instance hasn't been set, set it now.
47
+          if ( null === self::$instance ) {
48
+               self::$instance = new self();
49
+          }
50
+          return self::$instance;
51
+     }
52 52
 
53
-	/**
54
-	 * Enables the Bi Directional relationships
55
-	 *
56
-	 * @param array $connections
57
-	 * @return void
58
-	 */
59
-	public function enable_connections( $connections = array() ) {
60
-		$connections['dlm_download']['connected_pages']     = 'connected_downloads';
61
-		$connections['dlm_download']['connected_workouts']  = 'connected_downloads';
62
-		$connections['dlm_download']['connected_meals']     = 'connected_downloads';
63
-		$connections['dlm_download']['connected_recipes']   = 'connected_downloads';
53
+     /**
54
+      * Enables the Bi Directional relationships
55
+      *
56
+      * @param array $connections
57
+      * @return void
58
+      */
59
+     public function enable_connections( $connections = array() ) {
60
+          $connections['dlm_download']['connected_pages']     = 'connected_downloads';
61
+          $connections['dlm_download']['connected_workouts']  = 'connected_downloads';
62
+          $connections['dlm_download']['connected_meals']     = 'connected_downloads';
63
+          $connections['dlm_download']['connected_recipes']   = 'connected_downloads';
64 64
 
65
-		//Post Type Connections
66
-		$connections['workout']['connected_downloads'] = 'connected_workouts';
67
-		$connections['meal']['connected_downloads']    = 'connected_meals';
68
-		$connections['recipe']['connected_downloads']  = 'connected_recipes';
69
-		$connections['page']['connected_downloads']    = 'connected_pages';
70
-		return $connections;
71
-	}
65
+          //Post Type Connections
66
+          $connections['workout']['connected_downloads'] = 'connected_workouts';
67
+          $connections['meal']['connected_downloads']    = 'connected_meals';
68
+          $connections['recipe']['connected_downloads']  = 'connected_recipes';
69
+          $connections['page']['connected_downloads']    = 'connected_pages';
70
+          return $connections;
71
+     }
72 72
 
73
-	/**
74
-	 * Define the metabox and field configurations.
75
-	 */
76
-	public function downloads_post_type_metaboxes() {
77
-		$cmb = new_cmb2_box( array(
78
-			'id'           => $this->slug . '_connections_metabox',
79
-			'title'        => __( 'Connections', 'lsx-health-plan' ),
80
-			'object_types' => array( 'dlm_download' ), // Post type
81
-			'context'      => 'normal',
82
-			'priority'     => 'high',
83
-			'show_names'   => true,
84
-		) );
85
-		$cmb->add_field( array(
86
-			'name'       => __( 'Pages', 'lsx-health-plan' ),
87
-			'id'         => 'connected_pages',
88
-			'type'       => 'post_search_ajax',
89
-			// Optional :
90
-			'limit'      => 10,  // Limit selection to X items only (default 1)
91
-			'sortable'   => true, // Allow selected items to be sortable (default false)
92
-			'query_args' => array(
93
-				'post_type'      => array( 'page' ),
94
-				'post_status'    => array( 'publish' ),
95
-				'posts_per_page' => -1,
96
-			),
97
-		) );
98
-		$cmb->add_field( array(
99
-			'name'       => __( 'Workouts', 'lsx-health-plan' ),
100
-			'id'         => 'connected_workouts',
101
-			'type'       => 'post_search_ajax',
102
-			// Optional :
103
-			'limit'      => 10,  // Limit selection to X items only (default 1)
104
-			'sortable'   => true, // Allow selected items to be sortable (default false)
105
-			'query_args' => array(
106
-				'post_type'      => array( 'workout' ),
107
-				'post_status'    => array( 'publish' ),
108
-				'posts_per_page' => -1,
109
-			),
110
-		) );
111
-		$cmb->add_field( array(
112
-			'name'       => __( 'Meals', 'lsx-health-plan' ),
113
-			'id'         => 'connected_meals',
114
-			'type'       => 'post_search_ajax',
115
-			// Optional :
116
-			'limit'      => 10,  // Limit selection to X items only (default 1)
117
-			'sortable'   => true,  // Allow selected items to be sortable (default false)
118
-			'query_args' => array(
119
-				'post_type'      => array( 'meal' ),
120
-				'post_status'    => array( 'publish' ),
121
-				'posts_per_page' => -1,
122
-			),
123
-		) );
124
-		$cmb->add_field( array(
125
-			'name'       => __( 'Recipe', 'lsx-health-plan' ),
126
-			'id'         => 'connected_recipes',
127
-			'type'       => 'post_search_ajax',
128
-			// Optional :
129
-			'limit'      => 10, // Limit selection to X items only (default 1)
130
-			'sortable'   => true, // Allow selected items to be sortable (default false)
131
-			'query_args' => array(
132
-				'post_type'      => array( 'recipe' ),
133
-				'post_status'    => array( 'publish' ),
134
-				'posts_per_page' => -1,
135
-			),
136
-		) );
137
-	}
73
+     /**
74
+      * Define the metabox and field configurations.
75
+      */
76
+     public function downloads_post_type_metaboxes() {
77
+          $cmb = new_cmb2_box( array(
78
+               'id'           => $this->slug . '_connections_metabox',
79
+               'title'        => __( 'Connections', 'lsx-health-plan' ),
80
+               'object_types' => array( 'dlm_download' ), // Post type
81
+               'context'      => 'normal',
82
+               'priority'     => 'high',
83
+               'show_names'   => true,
84
+          ) );
85
+          $cmb->add_field( array(
86
+               'name'       => __( 'Pages', 'lsx-health-plan' ),
87
+               'id'         => 'connected_pages',
88
+               'type'       => 'post_search_ajax',
89
+               // Optional :
90
+               'limit'      => 10,  // Limit selection to X items only (default 1)
91
+               'sortable'   => true, // Allow selected items to be sortable (default false)
92
+               'query_args' => array(
93
+                    'post_type'      => array( 'page' ),
94
+                    'post_status'    => array( 'publish' ),
95
+                    'posts_per_page' => -1,
96
+               ),
97
+          ) );
98
+          $cmb->add_field( array(
99
+               'name'       => __( 'Workouts', 'lsx-health-plan' ),
100
+               'id'         => 'connected_workouts',
101
+               'type'       => 'post_search_ajax',
102
+               // Optional :
103
+               'limit'      => 10,  // Limit selection to X items only (default 1)
104
+               'sortable'   => true, // Allow selected items to be sortable (default false)
105
+               'query_args' => array(
106
+                    'post_type'      => array( 'workout' ),
107
+                    'post_status'    => array( 'publish' ),
108
+                    'posts_per_page' => -1,
109
+               ),
110
+          ) );
111
+          $cmb->add_field( array(
112
+               'name'       => __( 'Meals', 'lsx-health-plan' ),
113
+               'id'         => 'connected_meals',
114
+               'type'       => 'post_search_ajax',
115
+               // Optional :
116
+               'limit'      => 10,  // Limit selection to X items only (default 1)
117
+               'sortable'   => true,  // Allow selected items to be sortable (default false)
118
+               'query_args' => array(
119
+                    'post_type'      => array( 'meal' ),
120
+                    'post_status'    => array( 'publish' ),
121
+                    'posts_per_page' => -1,
122
+               ),
123
+          ) );
124
+          $cmb->add_field( array(
125
+               'name'       => __( 'Recipe', 'lsx-health-plan' ),
126
+               'id'         => 'connected_recipes',
127
+               'type'       => 'post_search_ajax',
128
+               // Optional :
129
+               'limit'      => 10, // Limit selection to X items only (default 1)
130
+               'sortable'   => true, // Allow selected items to be sortable (default false)
131
+               'query_args' => array(
132
+                    'post_type'      => array( 'recipe' ),
133
+                    'post_status'    => array( 'publish' ),
134
+                    'posts_per_page' => -1,
135
+               ),
136
+          ) );
137
+     }
138 138
 
139
-	/**
140
-	 * Registers the workout connections on the plan post type.
141
-	 *
142
-	 * @return void
143
-	 */
144
-	public function download_connections() {
145
-		$cmb = new_cmb2_box( array(
146
-			'id'           => $this->slug . '_metabox',
147
-			'title'        => __( 'Downloads', 'lsx-health-plan' ),
148
-			'object_types' => array( 'workout', 'meal', 'recipe' ), // Post type
149
-			'context'      => 'normal',
150
-			'priority'     => 'high',
151
-			'show_names'   => true,
152
-		) );
153
-		$cmb->add_field( array(
154
-			'name'       => __( 'Downloads', 'lsx-health-plan' ),
155
-			'desc'       => __( "Add the pdf's connected to this day plan, using the field provided.", 'lsx-health-plan' ),
156
-			'id'         => 'connected_downloads',
157
-			'type'       => 'post_search_ajax',
158
-			// Optional
159
-			'limit'      => 15,  // Limit selection to X items only (default 1)
160
-			'sortable'   => true, // Allow selected items to be sortable (default false)
161
-			'query_args' => array(
162
-				'post_type'      => array( 'dlm_download' ),
163
-				'post_status'    => array( 'publish' ),
164
-				'posts_per_page' => -1,
165
-			),
166
-		) );
167
-	}
139
+     /**
140
+      * Registers the workout connections on the plan post type.
141
+      *
142
+      * @return void
143
+      */
144
+     public function download_connections() {
145
+          $cmb = new_cmb2_box( array(
146
+               'id'           => $this->slug . '_metabox',
147
+               'title'        => __( 'Downloads', 'lsx-health-plan' ),
148
+               'object_types' => array( 'workout', 'meal', 'recipe' ), // Post type
149
+               'context'      => 'normal',
150
+               'priority'     => 'high',
151
+               'show_names'   => true,
152
+          ) );
153
+          $cmb->add_field( array(
154
+               'name'       => __( 'Downloads', 'lsx-health-plan' ),
155
+               'desc'       => __( "Add the pdf's connected to this day plan, using the field provided.", 'lsx-health-plan' ),
156
+               'id'         => 'connected_downloads',
157
+               'type'       => 'post_search_ajax',
158
+               // Optional
159
+               'limit'      => 15,  // Limit selection to X items only (default 1)
160
+               'sortable'   => true, // Allow selected items to be sortable (default false)
161
+               'query_args' => array(
162
+                    'post_type'      => array( 'dlm_download' ),
163
+                    'post_status'    => array( 'publish' ),
164
+                    'posts_per_page' => -1,
165
+               ),
166
+          ) );
167
+     }
168 168
 }
Please login to merge, or discard this patch.
classes/integrations/woocommerce/class-plans.php 1 patch
Indentation   +121 added lines, -121 removed lines patch added patch discarded remove patch
@@ -8,137 +8,137 @@
 block discarded – undo
8 8
  */
9 9
 class Plans {
10 10
 
11
-	/**
12
-	 * Holds class instance
13
-	 *
14
-	 * @since 1.0.0
15
-	 *
16
-	 * @var      object \lsx_health_plan\classes\integrations\woocommerce\Plans()
17
-	 */
18
-	protected static $instance = null;
11
+     /**
12
+      * Holds class instance
13
+      *
14
+      * @since 1.0.0
15
+      *
16
+      * @var      object \lsx_health_plan\classes\integrations\woocommerce\Plans()
17
+      */
18
+     protected static $instance = null;
19 19
 
20
-	/**
21
-	 * Holds the current screen var if it is active.
22
-	 *
23
-	 * @var string
24
-	 */
25
-	public $screen = '';
20
+     /**
21
+      * Holds the current screen var if it is active.
22
+      *
23
+      * @var string
24
+      */
25
+     public $screen = '';
26 26
 
27
-	/**
28
-	 * Holds the current array of product IDS.
29
-	 *
30
-	 * @var array
31
-	 */
32
-	public $product_ids = array();
27
+     /**
28
+      * Holds the current array of product IDS.
29
+      *
30
+      * @var array
31
+      */
32
+     public $product_ids = array();
33 33
 
34
-	/**
35
-	 * Holds the curret parent ID.
36
-	 *
37
-	 * @var int
38
-	 */
39
-	public $parent_id = 0;
34
+     /**
35
+      * Holds the curret parent ID.
36
+      *
37
+      * @var int
38
+      */
39
+     public $parent_id = 0;
40 40
 
41
-	/**
42
-	 * Constructor
43
-	 */
44
-	public function __construct() {
45
-		// Remove the default restrictions, as we will add our own.
46
-		add_action( 'wp', array( $this, 'set_screen' ), 1 );
47
-		add_action( 'wp', array( $this, 'disable_parent_plan_restrictions' ), 2 );
48
-		add_action( 'wp', array( $this, 'child_plan_redirect_restrictions' ), 2 );
41
+     /**
42
+      * Constructor
43
+      */
44
+     public function __construct() {
45
+          // Remove the default restrictions, as we will add our own.
46
+          add_action( 'wp', array( $this, 'set_screen' ), 1 );
47
+          add_action( 'wp', array( $this, 'disable_parent_plan_restrictions' ), 2 );
48
+          add_action( 'wp', array( $this, 'child_plan_redirect_restrictions' ), 2 );
49 49
 
50
-		// Initiate the WP Head functions.
51
-		add_action( 'wp_head', array( $this, 'set_screen' ) );
52
-		add_action( 'lsx_content_top', 'lsx_hp_single_plan_products' );
50
+          // Initiate the WP Head functions.
51
+          add_action( 'wp_head', array( $this, 'set_screen' ) );
52
+          add_action( 'lsx_content_top', 'lsx_hp_single_plan_products' );
53 53
 
54
-		// Plan Archive Actions.
55
-		add_action( 'lsx_entry_before', array( $this, 'set_product_ids' ) );
56
-	}
54
+          // Plan Archive Actions.
55
+          add_action( 'lsx_entry_before', array( $this, 'set_product_ids' ) );
56
+     }
57 57
 
58
-	/**
59
-	 * Return an instance of this class.
60
-	 *
61
-	 * @since 1.0.0
62
-	 *
63
-	 * @return    object \lsx_health_plan\classes\integrations\woocommerce\Plans()    A single instance of this class.
64
-	 */
65
-	public static function get_instance() {
66
-		// If the single instance hasn't been set, set it now.
67
-		if ( null === self::$instance ) {
68
-			self::$instance = new self();
69
-		}
70
-		return self::$instance;
71
-	}
58
+     /**
59
+      * Return an instance of this class.
60
+      *
61
+      * @since 1.0.0
62
+      *
63
+      * @return    object \lsx_health_plan\classes\integrations\woocommerce\Plans()    A single instance of this class.
64
+      */
65
+     public static function get_instance() {
66
+          // If the single instance hasn't been set, set it now.
67
+          if ( null === self::$instance ) {
68
+               self::$instance = new self();
69
+          }
70
+          return self::$instance;
71
+     }
72 72
 
73
-	/**
74
-	 * Define the product metabox on the plan post type
75
-	 */
76
-	public function set_screen() {
77
-		if ( is_singular( 'plan' ) ) {
78
-			$section = get_query_var( 'section' );
79
-			if ( ! empty( $section ) ) {
80
-				$this->screen = 'child_plan';
81
-			} else {
82
-				$this->screen = 'parent_plan';
83
-			}
84
-			$product_ids = get_post_meta( get_the_ID(), 'plan_product', true );
85
-			if ( false !== $product_ids && ! empty( $product_ids ) ) {
86
-				$this->product_ids = $product_ids;
87
-			}
88
-		}
89
-		if ( is_post_type_archive( 'plan' ) ) {
90
-			$this->screen = 'plan_archive';
91
-		}
92
-	}
73
+     /**
74
+      * Define the product metabox on the plan post type
75
+      */
76
+     public function set_screen() {
77
+          if ( is_singular( 'plan' ) ) {
78
+               $section = get_query_var( 'section' );
79
+               if ( ! empty( $section ) ) {
80
+                    $this->screen = 'child_plan';
81
+               } else {
82
+                    $this->screen = 'parent_plan';
83
+               }
84
+               $product_ids = get_post_meta( get_the_ID(), 'plan_product', true );
85
+               if ( false !== $product_ids && ! empty( $product_ids ) ) {
86
+                    $this->product_ids = $product_ids;
87
+               }
88
+          }
89
+          if ( is_post_type_archive( 'plan' ) ) {
90
+               $this->screen = 'plan_archive';
91
+          }
92
+     }
93 93
 
94
-	/**
95
-	 * Sets the post type archive product ids.
96
-	 *
97
-	 * @return void
98
-	 */
99
-	public function set_product_ids() {
100
-		$this->product_ids = false;
101
-		if ( 'plan' === get_post_type() ) {
102
-			$product_ids = get_post_meta( get_the_ID(), 'plan_product', true );
103
-			if ( false !== $product_ids && ! empty( $product_ids ) ) {
104
-				$this->product_ids = $product_ids;
105
-			}
106
-		}
107
-	}
94
+     /**
95
+      * Sets the post type archive product ids.
96
+      *
97
+      * @return void
98
+      */
99
+     public function set_product_ids() {
100
+          $this->product_ids = false;
101
+          if ( 'plan' === get_post_type() ) {
102
+               $product_ids = get_post_meta( get_the_ID(), 'plan_product', true );
103
+               if ( false !== $product_ids && ! empty( $product_ids ) ) {
104
+                    $this->product_ids = $product_ids;
105
+               }
106
+          }
107
+     }
108 108
 
109
-	/**
110
-	 * Disable WC Memberships restrictions for plan parents. We add our own custom
111
-	 * restriction functionality elsewhere.
112
-	 */
113
-	public function disable_parent_plan_restrictions() {
114
-		if ( '' === $this->screen ) {
115
-			return;
116
-		}
117
-		$restrictions = wc_memberships()->get_restrictions_instance()->get_posts_restrictions_instance();
118
-		remove_action( 'wp', array( $restrictions, 'handle_restriction_modes' ) );
119
-	}
109
+     /**
110
+      * Disable WC Memberships restrictions for plan parents. We add our own custom
111
+      * restriction functionality elsewhere.
112
+      */
113
+     public function disable_parent_plan_restrictions() {
114
+          if ( '' === $this->screen ) {
115
+               return;
116
+          }
117
+          $restrictions = wc_memberships()->get_restrictions_instance()->get_posts_restrictions_instance();
118
+          remove_action( 'wp', array( $restrictions, 'handle_restriction_modes' ) );
119
+     }
120 120
 
121
-	/**
122
-	 * Disable WC Memberships restrictions for plan parents. We add our own custom
123
-	 * restriction functionality elsewhere.
124
-	 */
125
-	public function child_plan_redirect_restrictions() {
126
-		if ( ! is_singular( 'plan' ) || 'child_plan' !== $this->screen || ! function_exists( 'wc_memberships_is_post_content_restricted' ) ) {
127
-			return;
128
-		}
129
-		$restricted = wc_memberships_is_post_content_restricted() && ! current_user_can( 'wc_memberships_view_restricted_post_content', get_the_ID() );
130
-		if ( true === $restricted ) {
131
-			wp_redirect( get_permalink( get_the_ID() ) );
132
-			exit;
133
-		}
134
-	}
121
+     /**
122
+      * Disable WC Memberships restrictions for plan parents. We add our own custom
123
+      * restriction functionality elsewhere.
124
+      */
125
+     public function child_plan_redirect_restrictions() {
126
+          if ( ! is_singular( 'plan' ) || 'child_plan' !== $this->screen || ! function_exists( 'wc_memberships_is_post_content_restricted' ) ) {
127
+               return;
128
+          }
129
+          $restricted = wc_memberships_is_post_content_restricted() && ! current_user_can( 'wc_memberships_view_restricted_post_content', get_the_ID() );
130
+          if ( true === $restricted ) {
131
+               wp_redirect( get_permalink( get_the_ID() ) );
132
+               exit;
133
+          }
134
+     }
135 135
 
136
-	/**
137
-	 * Returns the ids of the attached products.
138
-	 *
139
-	 * @return array
140
-	 */
141
-	public function get_products() {
142
-		return $this->product_ids;
143
-	}
136
+     /**
137
+      * Returns the ids of the attached products.
138
+      *
139
+      * @return array
140
+      */
141
+     public function get_products() {
142
+          return $this->product_ids;
143
+     }
144 144
 }
Please login to merge, or discard this patch.
classes/integrations/woocommerce/class-checkout.php 1 patch
Indentation   +161 added lines, -161 removed lines patch added patch discarded remove patch
@@ -8,110 +8,110 @@  discard block
 block discarded – undo
8 8
  */
9 9
 class Checkout {
10 10
 
11
-	/**
12
-	 * Holds class instance
13
-	 *
14
-	 * @since 1.0.0
15
-	 *
16
-	 * @var      object \lsx_health_plan\classes\integrations\woocommerce\Checkout()
17
-	 */
18
-	protected static $instance = null;
19
-
20
-	/**
21
-	 * @var string
22
-	 */
23
-	public $plan_id = '';
24
-
25
-	/**
26
-	 * Constructor
27
-	 */
28
-	public function __construct() {
29
-		add_filter( 'woocommerce_order_button_text', array( $this, 'checkout_button_text' ), 10, 1 );
30
-
31
-		// Checkout.
32
-		add_action( 'woocommerce_after_checkout_form', array( $this, 'payment_gateway_logos' ) );
33
-		add_action( 'body_class', array( $this, 'hp_wc_add_body_classes' ) );
34
-		add_action( 'lsx_nav_before', array( $this, 'hp_link_lsx_navbar_header' ), 99 );
35
-		add_action( 'wp_head', array( $this, 'hp_simple_checkout' ), 99 );
36
-
37
-		// Cart Messages.
38
-		add_action( 'lsx_content_wrap_before', array( $this, 'cart_notices' ) );
39
-		add_filter( 'wc_add_to_cart_message_html', array( $this, 'add_to_cart_message' ), 10, 3 );
40
-	}
41
-
42
-	/**
43
-	 * Return an instance of this class.
44
-	 *
45
-	 * @since 1.0.0
46
-	 *
47
-	 * @return    object \lsx_health_plan\classes\integrations\woocommerce\Checkout()    A single instance of this class.
48
-	 */
49
-	public static function get_instance() {
50
-		// If the single instance hasn't been set, set it now.
51
-		if ( null === self::$instance ) {
52
-			self::$instance = new self();
53
-		}
54
-		return self::$instance;
55
-	}
56
-
57
-	/**
58
-	 * Return the Place Order Text
59
-	 *
60
-	 * @param string $label
61
-	 * @return void
62
-	 */
63
-	public function checkout_button_text( $label = '' ) {
64
-		$label = __( 'Place order', 'lsx-health-plan' );
65
-		return $label;
66
-	}
67
-
68
-	/**
69
-	 * Adding the 'Home' link to the checkout.
70
-	 *
71
-	 * @return void
72
-	 */
73
-	public function hp_link_lsx_navbar_header() {
74
-		if ( is_checkout() ) {
75
-			$home_ulr = '<nav class="checkout-navbar"><ul class="nav navbar-nav"><li><a href="' . home_url() . '">' . __( 'Home', 'lsx-health-plan' ) . '</a></li></ul></nav>';
76
-			echo wp_kses_post( $home_ulr );
77
-		}
78
-	}
79
-
80
-	/**
81
-	 * Add 'lsx-simple-checkout' class to body if it is woocommerce checkout page.
82
-	 *
83
-	 * @param array $classes
84
-	 * @return void
85
-	 */
86
-	public function hp_wc_add_body_classes( $classes = array() ) {
87
-		global $post;
88
-		if ( is_checkout() ) {
89
-			$classes[] = 'lsx-hp-simple-checkout';
90
-		}
91
-		return $classes;
92
-	}
93
-
94
-	/**
95
-	 * Remove unnecessary items for simple woocommerce checkout page.
96
-	 *
97
-	 * @param array $classes
98
-	 * @return void
99
-	 */
100
-	public function hp_simple_checkout() {
101
-		if ( is_checkout() ) {
102
-			remove_action( 'lsx_footer_before', 'lsx_add_footer_sidebar_area' );
103
-		}
104
-	}
105
-
106
-	/**
107
-	 * Add Lets Enrypt and PayFast logos to cart.
108
-	**/
109
-	public function payment_gateway_logos() {
110
-		$encript_image = LSX_HEALTH_PLAN_URL . 'assets/images/lets-encript.svg';
111
-		$payfast_image = LSX_HEALTH_PLAN_URL . 'assets/images/payfast-footer-logo.svg';
112
-		$payment_logos = LSX_HEALTH_PLAN_URL . 'assets/images/payment-logos.svg';
113
-		$payment_logos_mobile = LSX_HEALTH_PLAN_URL . 'assets/images/payment-logos-mobile.svg';
114
-		?>
11
+     /**
12
+      * Holds class instance
13
+      *
14
+      * @since 1.0.0
15
+      *
16
+      * @var      object \lsx_health_plan\classes\integrations\woocommerce\Checkout()
17
+      */
18
+     protected static $instance = null;
19
+
20
+     /**
21
+      * @var string
22
+      */
23
+     public $plan_id = '';
24
+
25
+     /**
26
+      * Constructor
27
+      */
28
+     public function __construct() {
29
+          add_filter( 'woocommerce_order_button_text', array( $this, 'checkout_button_text' ), 10, 1 );
30
+
31
+          // Checkout.
32
+          add_action( 'woocommerce_after_checkout_form', array( $this, 'payment_gateway_logos' ) );
33
+          add_action( 'body_class', array( $this, 'hp_wc_add_body_classes' ) );
34
+          add_action( 'lsx_nav_before', array( $this, 'hp_link_lsx_navbar_header' ), 99 );
35
+          add_action( 'wp_head', array( $this, 'hp_simple_checkout' ), 99 );
36
+
37
+          // Cart Messages.
38
+          add_action( 'lsx_content_wrap_before', array( $this, 'cart_notices' ) );
39
+          add_filter( 'wc_add_to_cart_message_html', array( $this, 'add_to_cart_message' ), 10, 3 );
40
+     }
41
+
42
+     /**
43
+      * Return an instance of this class.
44
+      *
45
+      * @since 1.0.0
46
+      *
47
+      * @return    object \lsx_health_plan\classes\integrations\woocommerce\Checkout()    A single instance of this class.
48
+      */
49
+     public static function get_instance() {
50
+          // If the single instance hasn't been set, set it now.
51
+          if ( null === self::$instance ) {
52
+               self::$instance = new self();
53
+          }
54
+          return self::$instance;
55
+     }
56
+
57
+     /**
58
+      * Return the Place Order Text
59
+      *
60
+      * @param string $label
61
+      * @return void
62
+      */
63
+     public function checkout_button_text( $label = '' ) {
64
+          $label = __( 'Place order', 'lsx-health-plan' );
65
+          return $label;
66
+     }
67
+
68
+     /**
69
+      * Adding the 'Home' link to the checkout.
70
+      *
71
+      * @return void
72
+      */
73
+     public function hp_link_lsx_navbar_header() {
74
+          if ( is_checkout() ) {
75
+               $home_ulr = '<nav class="checkout-navbar"><ul class="nav navbar-nav"><li><a href="' . home_url() . '">' . __( 'Home', 'lsx-health-plan' ) . '</a></li></ul></nav>';
76
+               echo wp_kses_post( $home_ulr );
77
+          }
78
+     }
79
+
80
+     /**
81
+      * Add 'lsx-simple-checkout' class to body if it is woocommerce checkout page.
82
+      *
83
+      * @param array $classes
84
+      * @return void
85
+      */
86
+     public function hp_wc_add_body_classes( $classes = array() ) {
87
+          global $post;
88
+          if ( is_checkout() ) {
89
+               $classes[] = 'lsx-hp-simple-checkout';
90
+          }
91
+          return $classes;
92
+     }
93
+
94
+     /**
95
+      * Remove unnecessary items for simple woocommerce checkout page.
96
+      *
97
+      * @param array $classes
98
+      * @return void
99
+      */
100
+     public function hp_simple_checkout() {
101
+          if ( is_checkout() ) {
102
+               remove_action( 'lsx_footer_before', 'lsx_add_footer_sidebar_area' );
103
+          }
104
+     }
105
+
106
+     /**
107
+      * Add Lets Enrypt and PayFast logos to cart.
108
+      **/
109
+     public function payment_gateway_logos() {
110
+          $encript_image = LSX_HEALTH_PLAN_URL . 'assets/images/lets-encript.svg';
111
+          $payfast_image = LSX_HEALTH_PLAN_URL . 'assets/images/payfast-footer-logo.svg';
112
+          $payment_logos = LSX_HEALTH_PLAN_URL . 'assets/images/payment-logos.svg';
113
+          $payment_logos_mobile = LSX_HEALTH_PLAN_URL . 'assets/images/payment-logos-mobile.svg';
114
+          ?>
115 115
 		<div class="row text-center vertical-align lsx-full-width-base-small checkout-cta-bottom">
116 116
 			<div class="col-md-12 img-payfast">
117 117
 				<img loading="lazy" src="<?php echo esc_url( $payfast_image ); ?>" alt="payfast"/>
@@ -128,61 +128,61 @@  discard block
 block discarded – undo
128 128
 		</div>
129 129
 
130 130
 		<?php
131
-	}
132
-
133
-	/**
134
-	 * Saves the Plan ID to the cart data, so we can attach it to the order later.
135
-	 *
136
-	 * @param array $cart_item_data
137
-	 * @param string $product_id
138
-	 * @param string $variation_id
139
-	 * @return void
140
-	 */
141
-	public function add_plan_id_to_cart( $cart_item_data, $product_id, $variation_id ) {
142
-		$plan_id = filter_input( INPUT_GET, 'plan_id' );
143
-		if ( empty( $plan_id ) || '' === $plan_id ) {
144
-			return $cart_item_data;
145
-		}
146
-		$cart_item_data['plan_id'] = $plan_id;
147
-		return $cart_item_data;
148
-	}
149
-
150
-	/**
151
-	 * Output the WooCommerce Cart Notices.
152
-	 *
153
-	 * @return void
154
-	 */
155
-	public function cart_notices() {
156
-		if ( function_exists( 'woocommerce_output_all_notices' ) && is_post_type_archive( 'plan' ) ) {
157
-			echo wp_kses_post( '<div class="col-md-12 col-sm-12 woocommerce-notices-wrapper">' );
158
-			wc_print_notices();
159
-			echo wp_kses_post( '</div>' );
160
-		}
161
-	}
162
-
163
-	/**
164
-	 * Changes the add to cart message and adds our course name.
165
-	 *
166
-	 * @param  string  $message
167
-	 * @param  array   $products
168
-	 * @param  boolean $show_qty
169
-	 * @return string
170
-	 */
171
-	public function add_to_cart_message( $message, $products, $show_qty ) {
172
-		if ( isset( $_GET['plan_id'] ) ) { // @codingStandardsIgnoreLine.
173
-			$this->plan_id = sanitize_text_field( wp_slash( $_GET['plan_id'] ) ); // @codingStandardsIgnoreLine.
174
-
175
-			$title = '<strong>' . get_the_title( $this->plan_id ) . '</strong>';
176
-			$title = sprintf( _n( '%s has been added to your cart.', '%s have been added to your cart.', 1, 'lsx-health-plan' ), $title );
177
-
178
-			// Output success messages.
179
-			if ( 'yes' === get_option( 'woocommerce_cart_redirect_after_add' ) ) {
180
-				$return_to = apply_filters( 'woocommerce_continue_shopping_redirect', wc_get_raw_referer() ? wp_validate_redirect( wc_get_raw_referer(), false ) : wc_get_page_permalink( 'shop' ) );
181
-				$message   = sprintf( '<a href="%s" tabindex="1" class="btn button wc-forward">%s</a> %s', esc_url( $return_to ), esc_html__( 'Continue shopping', 'lsx-health-plan' ), $title );
182
-			} else {
183
-				$message = sprintf( '<a href="%s" tabindex="1" class="btn button wc-forward">%s</a> %s', esc_url( wc_get_cart_url() ), esc_html__( 'View cart', 'lsx-health-plan' ), $title );
184
-			}
185
-		}
186
-		return $message;
187
-	}
131
+     }
132
+
133
+     /**
134
+      * Saves the Plan ID to the cart data, so we can attach it to the order later.
135
+      *
136
+      * @param array $cart_item_data
137
+      * @param string $product_id
138
+      * @param string $variation_id
139
+      * @return void
140
+      */
141
+     public function add_plan_id_to_cart( $cart_item_data, $product_id, $variation_id ) {
142
+          $plan_id = filter_input( INPUT_GET, 'plan_id' );
143
+          if ( empty( $plan_id ) || '' === $plan_id ) {
144
+               return $cart_item_data;
145
+          }
146
+          $cart_item_data['plan_id'] = $plan_id;
147
+          return $cart_item_data;
148
+     }
149
+
150
+     /**
151
+      * Output the WooCommerce Cart Notices.
152
+      *
153
+      * @return void
154
+      */
155
+     public function cart_notices() {
156
+          if ( function_exists( 'woocommerce_output_all_notices' ) && is_post_type_archive( 'plan' ) ) {
157
+               echo wp_kses_post( '<div class="col-md-12 col-sm-12 woocommerce-notices-wrapper">' );
158
+               wc_print_notices();
159
+               echo wp_kses_post( '</div>' );
160
+          }
161
+     }
162
+
163
+     /**
164
+      * Changes the add to cart message and adds our course name.
165
+      *
166
+      * @param  string  $message
167
+      * @param  array   $products
168
+      * @param  boolean $show_qty
169
+      * @return string
170
+      */
171
+     public function add_to_cart_message( $message, $products, $show_qty ) {
172
+          if ( isset( $_GET['plan_id'] ) ) { // @codingStandardsIgnoreLine.
173
+               $this->plan_id = sanitize_text_field( wp_slash( $_GET['plan_id'] ) ); // @codingStandardsIgnoreLine.
174
+
175
+               $title = '<strong>' . get_the_title( $this->plan_id ) . '</strong>';
176
+               $title = sprintf( _n( '%s has been added to your cart.', '%s have been added to your cart.', 1, 'lsx-health-plan' ), $title );
177
+
178
+               // Output success messages.
179
+               if ( 'yes' === get_option( 'woocommerce_cart_redirect_after_add' ) ) {
180
+                    $return_to = apply_filters( 'woocommerce_continue_shopping_redirect', wc_get_raw_referer() ? wp_validate_redirect( wc_get_raw_referer(), false ) : wc_get_page_permalink( 'shop' ) );
181
+                    $message   = sprintf( '<a href="%s" tabindex="1" class="btn button wc-forward">%s</a> %s', esc_url( $return_to ), esc_html__( 'Continue shopping', 'lsx-health-plan' ), $title );
182
+               } else {
183
+                    $message = sprintf( '<a href="%s" tabindex="1" class="btn button wc-forward">%s</a> %s', esc_url( wc_get_cart_url() ), esc_html__( 'View cart', 'lsx-health-plan' ), $title );
184
+               }
185
+          }
186
+          return $message;
187
+     }
188 188
 }
Please login to merge, or discard this patch.
classes/integrations/woocommerce/class-login.php 1 patch
Indentation   +63 added lines, -63 removed lines patch added patch discarded remove patch
@@ -8,76 +8,76 @@
 block discarded – undo
8 8
  */
9 9
 class Login {
10 10
 
11
-	/**
12
-	 * Holds class instance
13
-	 *
14
-	 * @since 1.0.0
15
-	 *
16
-	 * @var      object \lsx_health_plan\classes\integrations\woocommerce\Login()
17
-	 */
18
-	protected static $instance = null;
11
+     /**
12
+      * Holds class instance
13
+      *
14
+      * @since 1.0.0
15
+      *
16
+      * @var      object \lsx_health_plan\classes\integrations\woocommerce\Login()
17
+      */
18
+     protected static $instance = null;
19 19
 
20
-	/**
21
-	 * Constructor
22
-	 */
23
-	public function __construct() {
24
-		// Lost Password fields
25
-		add_action( 'woocommerce_before_lost_password_form', array( $this, 'lost_password_page_title' ), 10 );
20
+     /**
21
+      * Constructor
22
+      */
23
+     public function __construct() {
24
+          // Lost Password fields
25
+          add_action( 'woocommerce_before_lost_password_form', array( $this, 'lost_password_page_title' ), 10 );
26 26
 
27
-		add_action( 'wp', array( $this, 'allow_reset_password_page' ), 9 );
28
-	}
27
+          add_action( 'wp', array( $this, 'allow_reset_password_page' ), 9 );
28
+     }
29 29
 
30
-	/**
31
-	 * Return an instance of this class.
32
-	 *
33
-	 * @since 1.0.0
34
-	 *
35
-	 * @return    object \lsx_health_plan\classes\integrations\woocommerce\Login()    A single instance of this class.
36
-	 */
37
-	public static function get_instance() {
38
-		// If the single instance hasn't been set, set it now.
39
-		if ( null === self::$instance ) {
40
-			self::$instance = new self();
41
-		}
42
-		return self::$instance;
43
-	}
30
+     /**
31
+      * Return an instance of this class.
32
+      *
33
+      * @since 1.0.0
34
+      *
35
+      * @return    object \lsx_health_plan\classes\integrations\woocommerce\Login()    A single instance of this class.
36
+      */
37
+     public static function get_instance() {
38
+          // If the single instance hasn't been set, set it now.
39
+          if ( null === self::$instance ) {
40
+               self::$instance = new self();
41
+          }
42
+          return self::$instance;
43
+     }
44 44
 
45
-	public function lost_password_page_title() {
46
-		?>
45
+     public function lost_password_page_title() {
46
+          ?>
47 47
 		<h1 class="lost-your-password-title"><?php esc_html_e( 'Lost your password?', 'lsx-health-plan' ); ?></h1>
48 48
 		<?php
49
-	}
49
+     }
50 50
 
51
-	/**
52
-	 * Removes the content restriction class to allow the password page to show.
53
-	 *
54
-	 * @return void
55
-	 */
56
-	public function allow_reset_password_page() {
57
-		if ( ! is_user_logged_in() && function_exists( 'wc_memberships' ) && is_wc_endpoint_url( 'lost-password' ) ) {
51
+     /**
52
+      * Removes the content restriction class to allow the password page to show.
53
+      *
54
+      * @return void
55
+      */
56
+     public function allow_reset_password_page() {
57
+          if ( ! is_user_logged_in() && function_exists( 'wc_memberships' ) && is_wc_endpoint_url( 'lost-password' ) ) {
58 58
 
59
-			$members_instance           = wc_memberships();
60
-			$restriction_instance       = $members_instance->get_restrictions_instance();
61
-			$post_restrictions_instance = $restriction_instance->get_posts_restrictions_instance();
62
-			remove_action( 'wp', array( $post_restrictions_instance, 'handle_restriction_modes' ), 10, 1 );
63
-			add_action( 'body_class', array( $this, 'remove_body_classes' ) );
64
-		}
65
-	}
59
+               $members_instance           = wc_memberships();
60
+               $restriction_instance       = $members_instance->get_restrictions_instance();
61
+               $post_restrictions_instance = $restriction_instance->get_posts_restrictions_instance();
62
+               remove_action( 'wp', array( $post_restrictions_instance, 'handle_restriction_modes' ), 10, 1 );
63
+               add_action( 'body_class', array( $this, 'remove_body_classes' ) );
64
+          }
65
+     }
66 66
 
67
-	/**
68
-	 * Remove the gutenberg classes from the lost password page.
69
-	 *
70
-	 * @param array $classes
71
-	 * @return void
72
-	 */
73
-	public function remove_body_classes( $classes = array() ) {
74
-		if ( ! empty( $classes ) ) {
75
-			foreach ( $classes as $class_key => $class_value ) {
76
-				if ( 'gutenberg-compatible-template' === $class_value || 'using-gutenberg' === $class_value ) {
77
-					unset( $classes[ $class_key ] );
78
-				}
79
-			}
80
-		}
81
-		return $classes;
82
-	}
67
+     /**
68
+      * Remove the gutenberg classes from the lost password page.
69
+      *
70
+      * @param array $classes
71
+      * @return void
72
+      */
73
+     public function remove_body_classes( $classes = array() ) {
74
+          if ( ! empty( $classes ) ) {
75
+               foreach ( $classes as $class_key => $class_value ) {
76
+                    if ( 'gutenberg-compatible-template' === $class_value || 'using-gutenberg' === $class_value ) {
77
+                         unset( $classes[ $class_key ] );
78
+                    }
79
+               }
80
+          }
81
+          return $classes;
82
+     }
83 83
 }
Please login to merge, or discard this patch.
classes/integrations/woocommerce/class-account.php 1 patch
Indentation   +514 added lines, -514 removed lines patch added patch discarded remove patch
@@ -8,326 +8,326 @@  discard block
 block discarded – undo
8 8
  */
9 9
 class Account {
10 10
 
11
-	/**
12
-	 * Holds class instance
13
-	 *
14
-	 * @since 1.0.0
15
-	 *
16
-	 * @var      object \lsx_health_plan\classes\integrations\woocommerce\Account()
17
-	 */
18
-	protected static $instance = null;
19
-
20
-	/**
21
-	 * Constructor
22
-	 */
23
-	public function __construct() {
24
-		add_action( 'init', array( $this, 'init' ), 20, 1 );
25
-
26
-		// Redirect to the Edit Account Template.
27
-		add_filter( 'template_include', array( $this, 'account_endpoint_redirect' ), 99 );
28
-
29
-		add_action( 'woocommerce_edit_account_form', array( $this, 'print_user_frontend_fields' ), 10 );
30
-
31
-		add_filter( 'lsx_hp_profile_fields', array( $this, 'add_post_data_to_account_fields' ), 10, 1 );
32
-		add_action( 'show_user_profile', array( $this, 'print_user_admin_fields' ), 30 );
33
-
34
-		add_action( 'personal_options_update', array( $this, 'save_account_fields' ) );
35
-		add_action( 'edit_user_profile_update', array( $this, 'save_account_fields' ) );
36
-
37
-		add_action( 'woocommerce_save_account_details', array( $this, 'save_account_fields' ) );
38
-		add_filter( 'woocommerce_save_account_details_errors', array( $this, 'validate_user_frontend_fields' ), 10 );
39
-
40
-		// Profile Fields.
41
-		add_filter( 'woocommerce_form_field_text', array( $this, 'lsx_profile_photo_field_filter' ), 10, 4 );
42
-		add_action( 'woocommerce_after_edit_account_form', array( $this, 'action_woocommerce_after_edit_account_form' ), 10, 0 );
43
-	}
44
-
45
-	/**
46
-	 * Return an instance of this class.
47
-	 *
48
-	 * @since 1.0.0
49
-	 *
50
-	 * @return    object \lsx_health_plan\classes\integration\woocommerce\Account()    A single instance of this class.
51
-	 */
52
-	public static function get_instance() {
53
-		// If the single instance hasn't been set, set it now.
54
-		if ( null === self::$instance ) {
55
-			self::$instance = new self();
56
-		}
57
-		return self::$instance;
58
-	}
59
-
60
-	/**
61
-	 * Runs on init
62
-	 *
63
-	 * @return void
64
-	 */
65
-	public function init() {
66
-		remove_action( 'woocommerce_account_navigation', 'woocommerce_account_navigation' );
67
-	}
68
-
69
-	/**
70
-	 * Redirects to the my account template.
71
-	 *
72
-	 * @param string $template
73
-	 * @return string
74
-	 */
75
-	public function account_endpoint_redirect( $template ) {
76
-		if ( function_exists( 'is_account_page' ) && is_account_page() ) {
77
-			if ( empty( locate_template( array( 'page-template-my-plan.php' ) ) ) && file_exists( LSX_HEALTH_PLAN_PATH . 'templates/page-template-my-plan.php' ) ) {
78
-				$template = LSX_HEALTH_PLAN_PATH . 'templates/page-template-my-plan.php';
79
-			}
80
-		}
81
-		return $template;
82
-	}
83
-
84
-	/**
85
-	 * Add post values to account fields if set.
86
-	 *
87
-	 * @param array $fields
88
-	 *
89
-	 * @return array
90
-	 */
91
-	public function add_post_data_to_account_fields( $fields ) {
92
-		if ( empty( $_POST ) && wp_verify_nonce( sanitize_key( $_POST ) ) ) {
93
-			return $fields;
94
-		}
95
-
96
-		foreach ( $fields as $key => $field_args ) {
97
-			if ( isset( $_POST[ $key ] ) && empty( $_POST[ $key ] ) && wp_verify_nonce( sanitize_key( $_POST[ $key ] ) ) ) {
98
-				$fields[ $key ]['value'] = '';
99
-				continue;
100
-			}
101
-
102
-			if ( isset( $_POST[ $key ] ) ) {
103
-				$fields[ $key ]['value'] = sanitize_key( $_POST[ $key ] );
104
-			}
105
-		}
106
-
107
-		return $fields;
108
-	}
109
-
110
-	/**
111
-	 * Add fields to registration form and account area.
112
-	 */
113
-	public function print_user_frontend_fields() {
114
-		$fields            = $this->get_account_fields();
115
-		$is_user_logged_in = is_user_logged_in();
116
-
117
-		$all_disabled = \lsx_health_plan\functions\get_option( 'disable_all_stats', false );
118
-		if ( 'on' !== $all_disabled ) {
119
-			echo wp_kses_post( '<h2 class="title-lined my-stats-title">' . __( 'My Stats', 'lsx-health-plan' ) . '</h2><p><strong>' . __( 'My physical info', 'lsx-health-plan' ) . '</strong></p>' );
120
-			echo wp_kses_post( '<div class="my-stats-wrap"><div class="my-stats">' );
121
-			foreach ( $fields as $key => $field_args ) {
122
-				$value = null;
123
-				if ( ! $this->is_field_visible( $field_args ) ) {
124
-					continue;
125
-				}
126
-				if ( $is_user_logged_in ) {
127
-					$user_id = $this->get_edit_user_id();
128
-					$value   = $this->get_userdata( $user_id, $key );
129
-				}
130
-				$value = ( isset( $field_args['value'] ) && '' !== $field_args['value'] ) ? $field_args['value'] : $value;
131
-				woocommerce_form_field( $key, $field_args, $value );
132
-			}
133
-			$is_bmi_disabled = \lsx_health_plan\functions\get_option( 'disable_bmi_checkbox', false );
134
-			if ( 'on' !== $is_bmi_disabled ) {
135
-				echo wp_kses_post( '<p class="form-row calculate-bmi"><label>BMI</label><button class="btn border-btn">' . __( 'Calculate', 'lsx-health-plan' ) . '<i class="fa fa-calculator" aria-hidden="true"></i></button></p>' );
136
-				echo wp_kses_post( '</div>' );
137
-				echo wp_kses_post( '<div class="description"><p class="bmi-title"><strong>' . __( 'Your BMI score', 'lsx-health-plan' ) . '</strong></p>' );
138
-				echo wp_kses_post( '<p>' . __( "BMI is a measurement of a person's leanness or corpulence based on their height and weight, and is intended to quantify tissue mass. It is widely used as a general indicator of whether a person has a healthy body weight for their height.", 'lsx-health-plan' ) . '</p></div></div>' );
139
-			}
11
+     /**
12
+      * Holds class instance
13
+      *
14
+      * @since 1.0.0
15
+      *
16
+      * @var      object \lsx_health_plan\classes\integrations\woocommerce\Account()
17
+      */
18
+     protected static $instance = null;
19
+
20
+     /**
21
+      * Constructor
22
+      */
23
+     public function __construct() {
24
+          add_action( 'init', array( $this, 'init' ), 20, 1 );
25
+
26
+          // Redirect to the Edit Account Template.
27
+          add_filter( 'template_include', array( $this, 'account_endpoint_redirect' ), 99 );
28
+
29
+          add_action( 'woocommerce_edit_account_form', array( $this, 'print_user_frontend_fields' ), 10 );
30
+
31
+          add_filter( 'lsx_hp_profile_fields', array( $this, 'add_post_data_to_account_fields' ), 10, 1 );
32
+          add_action( 'show_user_profile', array( $this, 'print_user_admin_fields' ), 30 );
33
+
34
+          add_action( 'personal_options_update', array( $this, 'save_account_fields' ) );
35
+          add_action( 'edit_user_profile_update', array( $this, 'save_account_fields' ) );
36
+
37
+          add_action( 'woocommerce_save_account_details', array( $this, 'save_account_fields' ) );
38
+          add_filter( 'woocommerce_save_account_details_errors', array( $this, 'validate_user_frontend_fields' ), 10 );
39
+
40
+          // Profile Fields.
41
+          add_filter( 'woocommerce_form_field_text', array( $this, 'lsx_profile_photo_field_filter' ), 10, 4 );
42
+          add_action( 'woocommerce_after_edit_account_form', array( $this, 'action_woocommerce_after_edit_account_form' ), 10, 0 );
43
+     }
44
+
45
+     /**
46
+      * Return an instance of this class.
47
+      *
48
+      * @since 1.0.0
49
+      *
50
+      * @return    object \lsx_health_plan\classes\integration\woocommerce\Account()    A single instance of this class.
51
+      */
52
+     public static function get_instance() {
53
+          // If the single instance hasn't been set, set it now.
54
+          if ( null === self::$instance ) {
55
+               self::$instance = new self();
56
+          }
57
+          return self::$instance;
58
+     }
59
+
60
+     /**
61
+      * Runs on init
62
+      *
63
+      * @return void
64
+      */
65
+     public function init() {
66
+          remove_action( 'woocommerce_account_navigation', 'woocommerce_account_navigation' );
67
+     }
68
+
69
+     /**
70
+      * Redirects to the my account template.
71
+      *
72
+      * @param string $template
73
+      * @return string
74
+      */
75
+     public function account_endpoint_redirect( $template ) {
76
+          if ( function_exists( 'is_account_page' ) && is_account_page() ) {
77
+               if ( empty( locate_template( array( 'page-template-my-plan.php' ) ) ) && file_exists( LSX_HEALTH_PLAN_PATH . 'templates/page-template-my-plan.php' ) ) {
78
+                    $template = LSX_HEALTH_PLAN_PATH . 'templates/page-template-my-plan.php';
79
+               }
80
+          }
81
+          return $template;
82
+     }
83
+
84
+     /**
85
+      * Add post values to account fields if set.
86
+      *
87
+      * @param array $fields
88
+      *
89
+      * @return array
90
+      */
91
+     public function add_post_data_to_account_fields( $fields ) {
92
+          if ( empty( $_POST ) && wp_verify_nonce( sanitize_key( $_POST ) ) ) {
93
+               return $fields;
94
+          }
95
+
96
+          foreach ( $fields as $key => $field_args ) {
97
+               if ( isset( $_POST[ $key ] ) && empty( $_POST[ $key ] ) && wp_verify_nonce( sanitize_key( $_POST[ $key ] ) ) ) {
98
+                    $fields[ $key ]['value'] = '';
99
+                    continue;
100
+               }
101
+
102
+               if ( isset( $_POST[ $key ] ) ) {
103
+                    $fields[ $key ]['value'] = sanitize_key( $_POST[ $key ] );
104
+               }
105
+          }
106
+
107
+          return $fields;
108
+     }
109
+
110
+     /**
111
+      * Add fields to registration form and account area.
112
+      */
113
+     public function print_user_frontend_fields() {
114
+          $fields            = $this->get_account_fields();
115
+          $is_user_logged_in = is_user_logged_in();
116
+
117
+          $all_disabled = \lsx_health_plan\functions\get_option( 'disable_all_stats', false );
118
+          if ( 'on' !== $all_disabled ) {
119
+               echo wp_kses_post( '<h2 class="title-lined my-stats-title">' . __( 'My Stats', 'lsx-health-plan' ) . '</h2><p><strong>' . __( 'My physical info', 'lsx-health-plan' ) . '</strong></p>' );
120
+               echo wp_kses_post( '<div class="my-stats-wrap"><div class="my-stats">' );
121
+               foreach ( $fields as $key => $field_args ) {
122
+                    $value = null;
123
+                    if ( ! $this->is_field_visible( $field_args ) ) {
124
+                         continue;
125
+                    }
126
+                    if ( $is_user_logged_in ) {
127
+                         $user_id = $this->get_edit_user_id();
128
+                         $value   = $this->get_userdata( $user_id, $key );
129
+                    }
130
+                    $value = ( isset( $field_args['value'] ) && '' !== $field_args['value'] ) ? $field_args['value'] : $value;
131
+                    woocommerce_form_field( $key, $field_args, $value );
132
+               }
133
+               $is_bmi_disabled = \lsx_health_plan\functions\get_option( 'disable_bmi_checkbox', false );
134
+               if ( 'on' !== $is_bmi_disabled ) {
135
+                    echo wp_kses_post( '<p class="form-row calculate-bmi"><label>BMI</label><button class="btn border-btn">' . __( 'Calculate', 'lsx-health-plan' ) . '<i class="fa fa-calculator" aria-hidden="true"></i></button></p>' );
136
+                    echo wp_kses_post( '</div>' );
137
+                    echo wp_kses_post( '<div class="description"><p class="bmi-title"><strong>' . __( 'Your BMI score', 'lsx-health-plan' ) . '</strong></p>' );
138
+                    echo wp_kses_post( '<p>' . __( "BMI is a measurement of a person's leanness or corpulence based on their height and weight, and is intended to quantify tissue mass. It is widely used as a general indicator of whether a person has a healthy body weight for their height.", 'lsx-health-plan' ) . '</p></div></div>' );
139
+               }
140 140
 			
141
-		}
142
-	}
143
-
144
-	/**
145
-	 * Get user data.
146
-	 *
147
-	 * @param $user_id
148
-	 * @param $key
149
-	 *
150
-	 * @return mixed|string
151
-	 */
152
-	public function get_userdata( $user_id, $key ) {
153
-		if ( ! $this->is_userdata( $key ) ) {
154
-			return get_user_meta( $user_id, $key, true );
155
-		}
156
-
157
-		$userdata = get_userdata( $user_id );
158
-
159
-		if ( ! $userdata || ! isset( $userdata->{$key} ) ) {
160
-			return '';
161
-		}
162
-
163
-		return $userdata->{$key};
164
-	}
165
-
166
-	/**
167
-	 * Get currently editing user ID (frontend account/edit profile/edit other user).
168
-	 *
169
-	 * @return int
170
-	 */
171
-	public function get_edit_user_id() {
172
-		return ( isset( $_GET['user_id'] ) && wp_verify_nonce( sanitize_key( $_GET['user_id'] ) ) ) ? (int) $_GET['user_id'] : get_current_user_id();
173
-	}
174
-
175
-
176
-	/**
177
-	 * Save registration fields.
178
-	 *
179
-	 * @param int $customer_id
180
-	 */
181
-	public function save_account_fields( $customer_id ) {
182
-		$nonce_value = wc_get_var( $_REQUEST['save-account-details-nonce'], wc_get_var( $_REQUEST['_wpnonce'], '' ) ); // @codingStandardsIgnoreLine.
183
-		if ( ! wp_verify_nonce( $nonce_value, 'save_account_details' ) ) {
184
-			return;
185
-		}
186
-
187
-		$fields         = $this->get_account_fields();
188
-		$sanitized_data = array();
189
-		foreach ( $fields as $key => $field_args ) {
190
-			if ( ! $this->is_field_visible( $field_args ) ) {
191
-				continue;
192
-			}
193
-
194
-			$sanitize = isset( $field_args['sanitize'] ) ? $field_args['sanitize'] : 'wc_clean';
195
-			$value    = ( isset( $_POST[ $key ] ) ) ? call_user_func( $sanitize, $_POST[ $key ] ) : '';
196
-			if ( $this->is_userdata( $key ) ) {
197
-
198
-				$sanitized_data[ $key ] = $value;
199
-				continue;
200
-			}
201
-
202
-			if ( 'profile_photo' === $key ) {
203
-				// This handles the image uploads.
204
-				require_once ABSPATH . 'wp-admin/includes/image.php';
205
-				require_once ABSPATH . 'wp-admin/includes/file.php';
206
-				require_once ABSPATH . 'wp-admin/includes/media.php';
207
-
208
-				$id = media_handle_upload( $key, 0, '' );
209
-				if ( ! is_wp_error( $id ) ) {
210
-					update_term_meta( $customer_id, $key . '_id', $id );
211
-					update_term_meta( $customer_id, $key, $id );
212
-				}
213
-			} else {
214
-				delete_user_meta( $customer_id, $key );
215
-				update_user_meta( $customer_id, $key, $value );
216
-			}
217
-		}
218
-
219
-		if ( ! empty( $sanitized_data ) ) {
220
-			$sanitized_data['ID'] = $customer_id;
221
-			wp_update_user( $sanitized_data );
222
-		}
223
-	}
224
-
225
-
226
-	/**
227
-	 * Is this field core user data.
228
-	 *
229
-	 * @param $key
230
-	 *
231
-	 * @return bool
232
-	 */
233
-	public function is_userdata( $key ) {
234
-		$userdata = array(
235
-			'user_pass',
236
-			'user_login',
237
-			'user_nicename',
238
-			'user_url',
239
-			'user_email',
240
-			'display_name',
241
-			'nickname',
242
-			'first_name',
243
-			'last_name',
244
-			'description',
245
-			'rich_editing',
246
-			'user_registered',
247
-			'role',
248
-			'jabber',
249
-			'aim',
250
-			'yim',
251
-			'show_admin_bar_front',
252
-		);
253
-
254
-		return in_array( $key, $userdata, true );
255
-	}
256
-
257
-	/**
258
-	 * Is field visible.
259
-	 *
260
-	 * @param $field_args
261
-	 *
262
-	 * @return bool
263
-	 */
264
-	public function is_field_visible( $field_args ) {
265
-		$visible = true;
266
-		$action  = filter_input( INPUT_POST, 'action' );
267
-
268
-		if ( is_admin() && ! empty( $field_args['hide_in_admin'] ) ) {
269
-			$visible = false;
270
-		} elseif ( ( is_account_page() || 'save_account_details' === $action ) && is_user_logged_in() && ! empty( $field_args['hide_in_account'] ) ) {
271
-			$visible = false;
272
-		} elseif ( ( is_account_page() || 'save_account_details' === $action ) && ! is_user_logged_in() && ! empty( $field_args['hide_in_registration'] ) ) {
273
-			$visible = false;
274
-		} elseif ( is_checkout() && ! empty( $field_args['hide_in_checkout'] ) ) {
275
-			$visible = false;
276
-		}
277
-
278
-		// Disable the fitness fields if needed.
279
-		$weight_key  = __( 'Weight:' );
280
-		$waist_key   = __( 'Waist:' );
281
-		$fitness_key = __( 'BMI Score:' );
282
-		if ( $weight_key === $field_args['label'] || $waist_key === $field_args['label'] || $fitness_key === $field_args['label'] ) {
283
-
284
-			// Check if all stats are disabled.
285
-			$all_disabled = \lsx_health_plan\functions\get_option( 'disable_all_stats', false );
286
-
287
-			$option_key = '';
288
-			switch ( $field_args['label'] ) {
289
-				case $weight_key:
290
-					$option_key = 'disable_weight_checkbox';
291
-					break;
292
-
293
-				case $weight_key:
294
-					$option_key = 'disable_height_checkbox';
295
-					break;
141
+          }
142
+     }
143
+
144
+     /**
145
+      * Get user data.
146
+      *
147
+      * @param $user_id
148
+      * @param $key
149
+      *
150
+      * @return mixed|string
151
+      */
152
+     public function get_userdata( $user_id, $key ) {
153
+          if ( ! $this->is_userdata( $key ) ) {
154
+               return get_user_meta( $user_id, $key, true );
155
+          }
156
+
157
+          $userdata = get_userdata( $user_id );
158
+
159
+          if ( ! $userdata || ! isset( $userdata->{$key} ) ) {
160
+               return '';
161
+          }
162
+
163
+          return $userdata->{$key};
164
+     }
165
+
166
+     /**
167
+      * Get currently editing user ID (frontend account/edit profile/edit other user).
168
+      *
169
+      * @return int
170
+      */
171
+     public function get_edit_user_id() {
172
+          return ( isset( $_GET['user_id'] ) && wp_verify_nonce( sanitize_key( $_GET['user_id'] ) ) ) ? (int) $_GET['user_id'] : get_current_user_id();
173
+     }
174
+
175
+
176
+     /**
177
+      * Save registration fields.
178
+      *
179
+      * @param int $customer_id
180
+      */
181
+     public function save_account_fields( $customer_id ) {
182
+          $nonce_value = wc_get_var( $_REQUEST['save-account-details-nonce'], wc_get_var( $_REQUEST['_wpnonce'], '' ) ); // @codingStandardsIgnoreLine.
183
+          if ( ! wp_verify_nonce( $nonce_value, 'save_account_details' ) ) {
184
+               return;
185
+          }
186
+
187
+          $fields         = $this->get_account_fields();
188
+          $sanitized_data = array();
189
+          foreach ( $fields as $key => $field_args ) {
190
+               if ( ! $this->is_field_visible( $field_args ) ) {
191
+                    continue;
192
+               }
193
+
194
+               $sanitize = isset( $field_args['sanitize'] ) ? $field_args['sanitize'] : 'wc_clean';
195
+               $value    = ( isset( $_POST[ $key ] ) ) ? call_user_func( $sanitize, $_POST[ $key ] ) : '';
196
+               if ( $this->is_userdata( $key ) ) {
197
+
198
+                    $sanitized_data[ $key ] = $value;
199
+                    continue;
200
+               }
201
+
202
+               if ( 'profile_photo' === $key ) {
203
+                    // This handles the image uploads.
204
+                    require_once ABSPATH . 'wp-admin/includes/image.php';
205
+                    require_once ABSPATH . 'wp-admin/includes/file.php';
206
+                    require_once ABSPATH . 'wp-admin/includes/media.php';
207
+
208
+                    $id = media_handle_upload( $key, 0, '' );
209
+                    if ( ! is_wp_error( $id ) ) {
210
+                         update_term_meta( $customer_id, $key . '_id', $id );
211
+                         update_term_meta( $customer_id, $key, $id );
212
+                    }
213
+               } else {
214
+                    delete_user_meta( $customer_id, $key );
215
+                    update_user_meta( $customer_id, $key, $value );
216
+               }
217
+          }
218
+
219
+          if ( ! empty( $sanitized_data ) ) {
220
+               $sanitized_data['ID'] = $customer_id;
221
+               wp_update_user( $sanitized_data );
222
+          }
223
+     }
224
+
225
+
226
+     /**
227
+      * Is this field core user data.
228
+      *
229
+      * @param $key
230
+      *
231
+      * @return bool
232
+      */
233
+     public function is_userdata( $key ) {
234
+          $userdata = array(
235
+               'user_pass',
236
+               'user_login',
237
+               'user_nicename',
238
+               'user_url',
239
+               'user_email',
240
+               'display_name',
241
+               'nickname',
242
+               'first_name',
243
+               'last_name',
244
+               'description',
245
+               'rich_editing',
246
+               'user_registered',
247
+               'role',
248
+               'jabber',
249
+               'aim',
250
+               'yim',
251
+               'show_admin_bar_front',
252
+          );
253
+
254
+          return in_array( $key, $userdata, true );
255
+     }
256
+
257
+     /**
258
+      * Is field visible.
259
+      *
260
+      * @param $field_args
261
+      *
262
+      * @return bool
263
+      */
264
+     public function is_field_visible( $field_args ) {
265
+          $visible = true;
266
+          $action  = filter_input( INPUT_POST, 'action' );
267
+
268
+          if ( is_admin() && ! empty( $field_args['hide_in_admin'] ) ) {
269
+               $visible = false;
270
+          } elseif ( ( is_account_page() || 'save_account_details' === $action ) && is_user_logged_in() && ! empty( $field_args['hide_in_account'] ) ) {
271
+               $visible = false;
272
+          } elseif ( ( is_account_page() || 'save_account_details' === $action ) && ! is_user_logged_in() && ! empty( $field_args['hide_in_registration'] ) ) {
273
+               $visible = false;
274
+          } elseif ( is_checkout() && ! empty( $field_args['hide_in_checkout'] ) ) {
275
+               $visible = false;
276
+          }
277
+
278
+          // Disable the fitness fields if needed.
279
+          $weight_key  = __( 'Weight:' );
280
+          $waist_key   = __( 'Waist:' );
281
+          $fitness_key = __( 'BMI Score:' );
282
+          if ( $weight_key === $field_args['label'] || $waist_key === $field_args['label'] || $fitness_key === $field_args['label'] ) {
283
+
284
+               // Check if all stats are disabled.
285
+               $all_disabled = \lsx_health_plan\functions\get_option( 'disable_all_stats', false );
286
+
287
+               $option_key = '';
288
+               switch ( $field_args['label'] ) {
289
+                    case $weight_key:
290
+                         $option_key = 'disable_weight_checkbox';
291
+                         break;
292
+
293
+                    case $weight_key:
294
+                         $option_key = 'disable_height_checkbox';
295
+                         break;
296 296
 				
297
-				case $waist_key:
298
-					$option_key = 'disable_waist_checkbox';
299
-					break;
300
-
301
-				case $fitness_key:
302
-					$option_key = 'disable_bmi_checkbox';
303
-					break;
304
-			}
305
-			$is_disabled = \lsx_health_plan\functions\get_option( $option_key, false );
306
-			if ( 'on' === $all_disabled || 'on' === $is_disabled ) {
307
-				$visible = false;
308
-			}
309
-		}
310
-		return $visible;
311
-	}
312
-
313
-	/**
314
-	 * Add fields to admin area.
315
-	 */
316
-	public function print_user_admin_fields() {
317
-		$fields = $this->get_account_fields();
318
-		?>
297
+                    case $waist_key:
298
+                         $option_key = 'disable_waist_checkbox';
299
+                         break;
300
+
301
+                    case $fitness_key:
302
+                         $option_key = 'disable_bmi_checkbox';
303
+                         break;
304
+               }
305
+               $is_disabled = \lsx_health_plan\functions\get_option( $option_key, false );
306
+               if ( 'on' === $all_disabled || 'on' === $is_disabled ) {
307
+                    $visible = false;
308
+               }
309
+          }
310
+          return $visible;
311
+     }
312
+
313
+     /**
314
+      * Add fields to admin area.
315
+      */
316
+     public function print_user_admin_fields() {
317
+          $fields = $this->get_account_fields();
318
+          ?>
319 319
 		<h2><?php esc_html_e( 'Additional Information', 'lsx-health-plan' ); ?></h2>
320 320
 		<table class="form-table" id="iconic-additional-information">
321 321
 			<tbody>
322 322
 			<?php foreach ( $fields as $key => $field_args ) { ?>
323 323
 				<?php
324
-				if ( ! $this->is_field_visible( $field_args ) ) {
325
-					continue;
326
-				}
324
+                    if ( ! $this->is_field_visible( $field_args ) ) {
325
+                         continue;
326
+                    }
327 327
 
328
-				$user_id = $this->get_edit_user_id();
329
-				$value   = get_user_meta( $user_id, $key, true );
330
-				?>
328
+                    $user_id = $this->get_edit_user_id();
329
+                    $value   = get_user_meta( $user_id, $key, true );
330
+                    ?>
331 331
 				<tr>
332 332
 					<th>
333 333
 						<label for="<?php echo esc_html( $key ); ?>"><?php echo esc_html( $field_args['label'] ); ?></label>
@@ -341,209 +341,209 @@  discard block
 block discarded – undo
341 341
 			</tbody>
342 342
 		</table>
343 343
 		<?php
344
-	}
345
-
346
-	/**
347
-	 * Validate fields on frontend.
348
-	 *
349
-	 * @param WP_Error $errors
350
-	 *
351
-	 * @return WP_Error
352
-	 */
353
-	public function validate_user_frontend_fields( $errors ) {
354
-		$fields = $this->get_account_fields();
355
-
356
-		foreach ( $fields as $key => $field_args ) {
357
-			if ( empty( $field_args['required'] ) ) {
358
-				continue;
359
-			}
360
-
361
-			/*if ( ! isset( $_POST['register'] ) && wp_verify_nonce( sanitize_key( $_POST['register'] ) ) && ! empty( $field_args['hide_in_account'] ) ) {
344
+     }
345
+
346
+     /**
347
+      * Validate fields on frontend.
348
+      *
349
+      * @param WP_Error $errors
350
+      *
351
+      * @return WP_Error
352
+      */
353
+     public function validate_user_frontend_fields( $errors ) {
354
+          $fields = $this->get_account_fields();
355
+
356
+          foreach ( $fields as $key => $field_args ) {
357
+               if ( empty( $field_args['required'] ) ) {
358
+                    continue;
359
+               }
360
+
361
+               /*if ( ! isset( $_POST['register'] ) && wp_verify_nonce( sanitize_key( $_POST['register'] ) ) && ! empty( $field_args['hide_in_account'] ) ) {
362 362
 				continue;
363 363
 			}*/
364 364
 
365
-			if ( isset( $_POST['register'] ) && wp_verify_nonce( sanitize_key( $_POST['register'] ) ) && ! empty( $field_args['hide_in_registration'] ) ) {
366
-				continue;
367
-			}
368
-
369
-			if ( empty( $_POST[ $key ] ) ) {
370
-				/* translators: %s: field */
371
-				$message = sprintf( __( '%s is a required field.', 'lsx-health-plan' ), '<strong>' . $field_args['label'] . '</strong>' );
372
-				$errors->add( $key, $message );
373
-			}
374
-		}
375
-
376
-		return $errors;
377
-	}
378
-
379
-	/**
380
-	 * Changes the text into a file upload.
381
-	 * @param $field
382
-	 * @param $key
383
-	 * @param $args
384
-	 * @param $value
385
-	 *
386
-	 * @return mixed
387
-	 */
388
-	public function lsx_profile_photo_field_filter( $field, $key, $args, $value ) {
389
-		if ( 'profile_photo' === $args['id'] ) {
390
-
391
-			if ( $args['required'] ) {
392
-				$args['class'][] = 'validate-required';
393
-				$required        = ' <abbr class="required" title="' . esc_attr__( 'required', 'lsx-health-plan' ) . '">*</abbr>';
394
-			} else {
395
-				$required = '';
396
-			}
397
-
398
-			if ( is_string( $args['label_class'] ) ) {
399
-				$args['label_class'] = array( $args['label_class'] );
400
-			}
401
-
402
-			if ( is_null( $value ) ) {
403
-				$value = $args['default'];
404
-			}
405
-
406
-			// Custom attribute handling.
407
-			$custom_attributes         = array();
408
-			$args['custom_attributes'] = array_filter( (array) $args['custom_attributes'], 'strlen' );
409
-
410
-			if ( $args['maxlength'] ) {
411
-				$args['custom_attributes']['maxlength'] = absint( $args['maxlength'] );
412
-			}
413
-
414
-			if ( ! empty( $args['autocomplete'] ) ) {
415
-				$args['custom_attributes']['autocomplete'] = $args['autocomplete'];
416
-			}
417
-
418
-			if ( true === $args['autofocus'] ) {
419
-				$args['custom_attributes']['autofocus'] = 'autofocus';
420
-			}
421
-
422
-			if ( ! empty( $args['custom_attributes'] ) && is_array( $args['custom_attributes'] ) ) {
423
-				foreach ( $args['custom_attributes'] as $attribute => $attribute_value ) {
424
-					$custom_attributes[] = esc_attr( $attribute ) . '="' . esc_attr( $attribute_value ) . '"';
425
-				}
426
-			}
427
-
428
-			if ( ! empty( $args['validate'] ) ) {
429
-				foreach ( $args['validate'] as $validate ) {
430
-					$args['class'][] = 'validate-' . $validate;
431
-				}
432
-			}
433
-
434
-			$field_html      = '';
435
-			$field           = '';
436
-			$label_id        = $args['id'];
437
-			$sort            = $args['priority'] ? $args['priority'] : '';
438
-			$field_container = '<p class="form-row %1$s" id="%2$s" data-priority="' . esc_attr( $sort ) . '">%3$s</p>';
439
-			$args['class'][] = 'validate-required';
440
-			$required        = ' <abbr class="required" title="' . esc_attr__( 'required', 'lsx-health-plan' ) . '">*</abbr>';
441
-
442
-			$field .= '<input accept="image/*" type="file" class="input-text ' . esc_attr( implode( ' ', $args['input_class'] ) ) . '" name="' . esc_attr( $key ) . '" id="' . esc_attr( $args['id'] ) . '" placeholder="' . esc_attr( $args['placeholder'] ) . '"  value="" ' . implode( ' ', $custom_attributes ) . ' />';
443
-
444
-			if ( '' !== $value && $value !== $args['default'] ) {
445
-				$field .= '<input type="text" class="input-text ' . esc_attr( implode( ' ', $args['input_class'] ) ) . '" name="' . esc_attr( $key ) . '_id" id="' . esc_attr( $args['id'] ) . '_id" placeholder="' . esc_attr( $args['placeholder'] ) . '_id"  value="' . esc_attr( $value ) . '" ' . implode( ' ', $custom_attributes ) . ' />';
446
-			}
447
-
448
-			$field .= '<input type="hidden" name="MAX_FILE_SIZE" value="500000" />';
449
-
450
-			if ( $args['label'] && 'checkbox' !== $args['type'] ) {
451
-				$field_html .= '<label for="' . esc_attr( $label_id ) . '" class="' . esc_attr( implode( ' ', $args['label_class'] ) ) . '">' . $args['label'] . $required . '</label>';
452
-			}
453
-
454
-			$field_html .= $field;
455
-
456
-			if ( $args['description'] ) {
457
-				$field_html .= '<span class="description">' . esc_html( $args['description'] ) . '</span>';
458
-			}
459
-
460
-			$container_class = esc_attr( implode( ' ', $args['class'] ) );
461
-			$container_id    = esc_attr( $args['id'] ) . '_field';
462
-			$field           = sprintf( $field_container, $container_class, $container_id, $field_html );
463
-		}
464
-		return $field;
465
-	}
466
-
467
-
468
-	public function action_woocommerce_after_edit_account_form() {
469
-		echo do_shortcode( '[avatar_upload /]' );
470
-	}
471
-
472
-	/**
473
-	 * Get additional account fields.
474
-	 *
475
-	 * @return array
476
-	 */
477
-	public function get_account_fields() {
478
-		$account_fields = apply_filters( 'lsx_hp_profile_fields', array(
479
-			'age'  => array(
480
-				'type'                 => 'text',
481
-				'label'                => __( 'Age:', 'lsx-health-plan' ),
482
-				'placeholder'          => __( '#', 'lsx-health-plan' ),
483
-				'hide_in_account'      => false,
484
-				'hide_in_admin'        => false,
485
-				'hide_in_checkout'     => false,
486
-				'hide_in_registration' => false,
487
-				'required'             => false,
488
-			),
489
-			'weight'  => array(
490
-				'type'                 => 'text',
491
-				'label'                => __( 'Weight:', 'lsx-health-plan' ),
492
-				'placeholder'          => __( 'kg', 'lsx-health-plan' ),
493
-				'hide_in_account'      => false,
494
-				'hide_in_admin'        => false,
495
-				'hide_in_checkout'     => false,
496
-				'hide_in_registration' => false,
497
-				'required'             => false,
498
-			),
499
-			'gender'   => array(
500
-				'type'                 => 'select',
501
-				'label'                => __( 'Gender:', 'lsx-health-plan' ),
502
-				'placeholder'          => __( 'm/f', 'lsx-health-plan' ),
503
-				'hide_in_account'      => false,
504
-				'hide_in_admin'        => false,
505
-				'hide_in_checkout'     => false,
506
-				'hide_in_registration' => false,
507
-				'required'             => false,
508
-				'options'     => array(
509
-					'male'   => __( 'Male', 'lsx-health-plan' ),
510
-					'female' => __( 'Female', 'lsx-health-plan' ),
511
-				),
512
-			),
513
-			'waist'   => array(
514
-				'type'                 => 'text',
515
-				'label'                => __( 'Waist:', 'lsx-health-plan' ),
516
-				'placeholder'          => __( 'cm', 'lsx-health-plan' ),
517
-				'hide_in_account'      => false,
518
-				'hide_in_admin'        => false,
519
-				'hide_in_checkout'     => false,
520
-				'hide_in_registration' => false,
521
-				'required'             => false,
522
-			),
523
-			'height'     => array(
524
-				'type'                 => 'text',
525
-				'label'                => __( 'Height:', 'lsx-health-plan' ),
526
-				'placeholder'          => __( 'cm', 'lsx-health-plan' ),
527
-				'hide_in_account'      => false,
528
-				'hide_in_admin'        => false,
529
-				'hide_in_checkout'     => false,
530
-				'hide_in_registration' => false,
531
-				'required'             => false,
532
-			),
533
-		) );
534
-
535
-		$is_weight_disabled = \lsx_health_plan\functions\get_option( 'disable_weight_checkbox', false );
536
-		if ( 'on' === $is_weight_disabled ) {
537
-			$account_fields['weight']['required'] = false;
538
-		}
539
-		$is_height_disabled = \lsx_health_plan\functions\get_option( 'disable_height_checkbox', false );
540
-		if ( 'on' === $is_height_disabled ) {
541
-			$account_fields['height']['required'] = false;
542
-		}
543
-		$is_waist_disabled = \lsx_health_plan\functions\get_option( 'disable_waist_checkbox', false );
544
-		if ( 'on' === $is_waist_disabled ) {
545
-			$account_fields['waist']['required'] = false;
546
-		}
547
-		return $account_fields;
548
-	}
365
+               if ( isset( $_POST['register'] ) && wp_verify_nonce( sanitize_key( $_POST['register'] ) ) && ! empty( $field_args['hide_in_registration'] ) ) {
366
+                    continue;
367
+               }
368
+
369
+               if ( empty( $_POST[ $key ] ) ) {
370
+                    /* translators: %s: field */
371
+                    $message = sprintf( __( '%s is a required field.', 'lsx-health-plan' ), '<strong>' . $field_args['label'] . '</strong>' );
372
+                    $errors->add( $key, $message );
373
+               }
374
+          }
375
+
376
+          return $errors;
377
+     }
378
+
379
+     /**
380
+      * Changes the text into a file upload.
381
+      * @param $field
382
+      * @param $key
383
+      * @param $args
384
+      * @param $value
385
+      *
386
+      * @return mixed
387
+      */
388
+     public function lsx_profile_photo_field_filter( $field, $key, $args, $value ) {
389
+          if ( 'profile_photo' === $args['id'] ) {
390
+
391
+               if ( $args['required'] ) {
392
+                    $args['class'][] = 'validate-required';
393
+                    $required        = ' <abbr class="required" title="' . esc_attr__( 'required', 'lsx-health-plan' ) . '">*</abbr>';
394
+               } else {
395
+                    $required = '';
396
+               }
397
+
398
+               if ( is_string( $args['label_class'] ) ) {
399
+                    $args['label_class'] = array( $args['label_class'] );
400
+               }
401
+
402
+               if ( is_null( $value ) ) {
403
+                    $value = $args['default'];
404
+               }
405
+
406
+               // Custom attribute handling.
407
+               $custom_attributes         = array();
408
+               $args['custom_attributes'] = array_filter( (array) $args['custom_attributes'], 'strlen' );
409
+
410
+               if ( $args['maxlength'] ) {
411
+                    $args['custom_attributes']['maxlength'] = absint( $args['maxlength'] );
412
+               }
413
+
414
+               if ( ! empty( $args['autocomplete'] ) ) {
415
+                    $args['custom_attributes']['autocomplete'] = $args['autocomplete'];
416
+               }
417
+
418
+               if ( true === $args['autofocus'] ) {
419
+                    $args['custom_attributes']['autofocus'] = 'autofocus';
420
+               }
421
+
422
+               if ( ! empty( $args['custom_attributes'] ) && is_array( $args['custom_attributes'] ) ) {
423
+                    foreach ( $args['custom_attributes'] as $attribute => $attribute_value ) {
424
+                         $custom_attributes[] = esc_attr( $attribute ) . '="' . esc_attr( $attribute_value ) . '"';
425
+                    }
426
+               }
427
+
428
+               if ( ! empty( $args['validate'] ) ) {
429
+                    foreach ( $args['validate'] as $validate ) {
430
+                         $args['class'][] = 'validate-' . $validate;
431
+                    }
432
+               }
433
+
434
+               $field_html      = '';
435
+               $field           = '';
436
+               $label_id        = $args['id'];
437
+               $sort            = $args['priority'] ? $args['priority'] : '';
438
+               $field_container = '<p class="form-row %1$s" id="%2$s" data-priority="' . esc_attr( $sort ) . '">%3$s</p>';
439
+               $args['class'][] = 'validate-required';
440
+               $required        = ' <abbr class="required" title="' . esc_attr__( 'required', 'lsx-health-plan' ) . '">*</abbr>';
441
+
442
+               $field .= '<input accept="image/*" type="file" class="input-text ' . esc_attr( implode( ' ', $args['input_class'] ) ) . '" name="' . esc_attr( $key ) . '" id="' . esc_attr( $args['id'] ) . '" placeholder="' . esc_attr( $args['placeholder'] ) . '"  value="" ' . implode( ' ', $custom_attributes ) . ' />';
443
+
444
+               if ( '' !== $value && $value !== $args['default'] ) {
445
+                    $field .= '<input type="text" class="input-text ' . esc_attr( implode( ' ', $args['input_class'] ) ) . '" name="' . esc_attr( $key ) . '_id" id="' . esc_attr( $args['id'] ) . '_id" placeholder="' . esc_attr( $args['placeholder'] ) . '_id"  value="' . esc_attr( $value ) . '" ' . implode( ' ', $custom_attributes ) . ' />';
446
+               }
447
+
448
+               $field .= '<input type="hidden" name="MAX_FILE_SIZE" value="500000" />';
449
+
450
+               if ( $args['label'] && 'checkbox' !== $args['type'] ) {
451
+                    $field_html .= '<label for="' . esc_attr( $label_id ) . '" class="' . esc_attr( implode( ' ', $args['label_class'] ) ) . '">' . $args['label'] . $required . '</label>';
452
+               }
453
+
454
+               $field_html .= $field;
455
+
456
+               if ( $args['description'] ) {
457
+                    $field_html .= '<span class="description">' . esc_html( $args['description'] ) . '</span>';
458
+               }
459
+
460
+               $container_class = esc_attr( implode( ' ', $args['class'] ) );
461
+               $container_id    = esc_attr( $args['id'] ) . '_field';
462
+               $field           = sprintf( $field_container, $container_class, $container_id, $field_html );
463
+          }
464
+          return $field;
465
+     }
466
+
467
+
468
+     public function action_woocommerce_after_edit_account_form() {
469
+          echo do_shortcode( '[avatar_upload /]' );
470
+     }
471
+
472
+     /**
473
+      * Get additional account fields.
474
+      *
475
+      * @return array
476
+      */
477
+     public function get_account_fields() {
478
+          $account_fields = apply_filters( 'lsx_hp_profile_fields', array(
479
+               'age'  => array(
480
+                    'type'                 => 'text',
481
+                    'label'                => __( 'Age:', 'lsx-health-plan' ),
482
+                    'placeholder'          => __( '#', 'lsx-health-plan' ),
483
+                    'hide_in_account'      => false,
484
+                    'hide_in_admin'        => false,
485
+                    'hide_in_checkout'     => false,
486
+                    'hide_in_registration' => false,
487
+                    'required'             => false,
488
+               ),
489
+               'weight'  => array(
490
+                    'type'                 => 'text',
491
+                    'label'                => __( 'Weight:', 'lsx-health-plan' ),
492
+                    'placeholder'          => __( 'kg', 'lsx-health-plan' ),
493
+                    'hide_in_account'      => false,
494
+                    'hide_in_admin'        => false,
495
+                    'hide_in_checkout'     => false,
496
+                    'hide_in_registration' => false,
497
+                    'required'             => false,
498
+               ),
499
+               'gender'   => array(
500
+                    'type'                 => 'select',
501
+                    'label'                => __( 'Gender:', 'lsx-health-plan' ),
502
+                    'placeholder'          => __( 'm/f', 'lsx-health-plan' ),
503
+                    'hide_in_account'      => false,
504
+                    'hide_in_admin'        => false,
505
+                    'hide_in_checkout'     => false,
506
+                    'hide_in_registration' => false,
507
+                    'required'             => false,
508
+                    'options'     => array(
509
+                         'male'   => __( 'Male', 'lsx-health-plan' ),
510
+                         'female' => __( 'Female', 'lsx-health-plan' ),
511
+                    ),
512
+               ),
513
+               'waist'   => array(
514
+                    'type'                 => 'text',
515
+                    'label'                => __( 'Waist:', 'lsx-health-plan' ),
516
+                    'placeholder'          => __( 'cm', 'lsx-health-plan' ),
517
+                    'hide_in_account'      => false,
518
+                    'hide_in_admin'        => false,
519
+                    'hide_in_checkout'     => false,
520
+                    'hide_in_registration' => false,
521
+                    'required'             => false,
522
+               ),
523
+               'height'     => array(
524
+                    'type'                 => 'text',
525
+                    'label'                => __( 'Height:', 'lsx-health-plan' ),
526
+                    'placeholder'          => __( 'cm', 'lsx-health-plan' ),
527
+                    'hide_in_account'      => false,
528
+                    'hide_in_admin'        => false,
529
+                    'hide_in_checkout'     => false,
530
+                    'hide_in_registration' => false,
531
+                    'required'             => false,
532
+               ),
533
+          ) );
534
+
535
+          $is_weight_disabled = \lsx_health_plan\functions\get_option( 'disable_weight_checkbox', false );
536
+          if ( 'on' === $is_weight_disabled ) {
537
+               $account_fields['weight']['required'] = false;
538
+          }
539
+          $is_height_disabled = \lsx_health_plan\functions\get_option( 'disable_height_checkbox', false );
540
+          if ( 'on' === $is_height_disabled ) {
541
+               $account_fields['height']['required'] = false;
542
+          }
543
+          $is_waist_disabled = \lsx_health_plan\functions\get_option( 'disable_waist_checkbox', false );
544
+          if ( 'on' === $is_waist_disabled ) {
545
+               $account_fields['waist']['required'] = false;
546
+          }
547
+          return $account_fields;
548
+     }
549 549
 }
Please login to merge, or discard this patch.
classes/integrations/woocommerce/class-admin.php 1 patch
Indentation   +58 added lines, -58 removed lines patch added patch discarded remove patch
@@ -8,66 +8,66 @@
 block discarded – undo
8 8
  */
9 9
 class Admin {
10 10
 
11
-	/**
12
-	 * Holds class instance
13
-	 *
14
-	 * @since 1.0.0
15
-	 *
16
-	 * @var      object \lsx_health_plan\classes\integrations\woocommerce\Admin()
17
-	 */
18
-	protected static $instance = null;
11
+     /**
12
+      * Holds class instance
13
+      *
14
+      * @since 1.0.0
15
+      *
16
+      * @var      object \lsx_health_plan\classes\integrations\woocommerce\Admin()
17
+      */
18
+     protected static $instance = null;
19 19
 
20
-	/**
21
-	 * Constructor
22
-	 */
23
-	public function __construct() {
24
-		add_action( 'cmb2_admin_init', array( $this, 'products_metaboxes' ), 5 );
25
-	}
20
+     /**
21
+      * Constructor
22
+      */
23
+     public function __construct() {
24
+          add_action( 'cmb2_admin_init', array( $this, 'products_metaboxes' ), 5 );
25
+     }
26 26
 
27
-	/**
28
-	 * Return an instance of this class.
29
-	 *
30
-	 * @since 1.0.0
31
-	 *
32
-	 * @return    object \lsx_health_plan\classes\integrations\woocommerce\Admin()    A single instance of this class.
33
-	 */
34
-	public static function get_instance() {
35
-		// If the single instance hasn't been set, set it now.
36
-		if ( null === self::$instance ) {
37
-			self::$instance = new self();
38
-		}
39
-		return self::$instance;
40
-	}
27
+     /**
28
+      * Return an instance of this class.
29
+      *
30
+      * @since 1.0.0
31
+      *
32
+      * @return    object \lsx_health_plan\classes\integrations\woocommerce\Admin()    A single instance of this class.
33
+      */
34
+     public static function get_instance() {
35
+          // If the single instance hasn't been set, set it now.
36
+          if ( null === self::$instance ) {
37
+               self::$instance = new self();
38
+          }
39
+          return self::$instance;
40
+     }
41 41
 
42
-	/**
43
-	 * Define the product metabox on the plan post type
44
-	 */
45
-	public function products_metaboxes() {
46
-		$cmb = new_cmb2_box(
47
-			array(
48
-				'id'           => 'plan_product_metabox',
49
-				'title'        => __( 'Products', 'lsx-health-plan' ),
50
-				'object_types' => array( 'plan' ), // Post type.
51
-				'context'      => 'side',
52
-				'priority'     => 'low',
53
-				'show_names'   => true,
54
-			)
55
-		);
42
+     /**
43
+      * Define the product metabox on the plan post type
44
+      */
45
+     public function products_metaboxes() {
46
+          $cmb = new_cmb2_box(
47
+               array(
48
+                    'id'           => 'plan_product_metabox',
49
+                    'title'        => __( 'Products', 'lsx-health-plan' ),
50
+                    'object_types' => array( 'plan' ), // Post type.
51
+                    'context'      => 'side',
52
+                    'priority'     => 'low',
53
+                    'show_names'   => true,
54
+               )
55
+          );
56 56
 
57
-		$cmb->add_field(
58
-			array(
59
-				'name'       => __( 'Search your products', 'lsx-health-plan' ),
60
-				'desc'       => __( 'Connect the product(s) which sell access to this plan.', 'lsx-health-plan' ),
61
-				'id'         => 'plan_product',
62
-				'type'       => 'post_search_ajax',
63
-				'limit'      => 5,  // Limit selection to X items only (default 1).
64
-				'sortable'   => false, // Allow selected items to be sortable (default false).
65
-				'query_args' => array(
66
-					'post_type'      => 'product',
67
-					'post_status'    => array( 'publish' ),
68
-					'posts_per_page' => -1,
69
-				),
70
-			)
71
-		);
72
-	}
57
+          $cmb->add_field(
58
+               array(
59
+                    'name'       => __( 'Search your products', 'lsx-health-plan' ),
60
+                    'desc'       => __( 'Connect the product(s) which sell access to this plan.', 'lsx-health-plan' ),
61
+                    'id'         => 'plan_product',
62
+                    'type'       => 'post_search_ajax',
63
+                    'limit'      => 5,  // Limit selection to X items only (default 1).
64
+                    'sortable'   => false, // Allow selected items to be sortable (default false).
65
+                    'query_args' => array(
66
+                         'post_type'      => 'product',
67
+                         'post_status'    => array( 'publish' ),
68
+                         'posts_per_page' => -1,
69
+                    ),
70
+               )
71
+          );
72
+     }
73 73
 }
Please login to merge, or discard this patch.