Passed
Push — add/multiplan ( e46fc7...0a2963 )
by Warwick
04:26 queued 12s
created
classes/integrations/facetwp/class-connected-plans.php 1 patch
Indentation   +169 added lines, -169 removed lines patch added patch discarded remove patch
@@ -8,173 +8,173 @@
 block discarded – undo
8 8
  */
9 9
 class Connected_Plans {
10 10
 
11
-	/**
12
-	 * Holds class instance
13
-	 *
14
-	 * @since 1.0.0
15
-	 *
16
-	 * @var      object \lsx_health_plan\classes\integrations\facetwp\Connected_Plans()
17
-	 */
18
-	protected static $instance = null;
19
-
20
-	/**
21
-	 * This hold the current plan IDS, in case they need to be used in additional functions.
22
-	 *
23
-	 * @var array
24
-	 */
25
-	public $current_plan_ids = array();
26
-
27
-	/**
28
-	 * Contructor
29
-	 */
30
-	public function __construct() {
31
-		//add_filter( 'facetwp_index_row', array( $this, 'facetwp_index_row' ), 10, 2 );
32
-		add_filter( 'facetwp_indexer_post_facet', array( $this, 'facetwp_indexer_post_facet' ), 10, 2 );
33
-	}
34
-
35
-	/**
36
-	 * Return an instance of this class.
37
-	 *
38
-	 * @since 1.0.0
39
-	 *
40
-	 * @return    object \lsx_health_plan\classes\integration\facetwp\Connected_Plans()    A single instance of this class.
41
-	 */
42
-	public static function get_instance() {
43
-		// If the single instance hasn't been set, set it now.
44
-		if ( null === self::$instance ) {
45
-			self::$instance = new self();
46
-		}
47
-		return self::$instance;
48
-	}
49
-
50
-	/**
51
-	 * Index the connected plan
52
-	 *
53
-	 * @param array $return
54
-	 * @param array $params
55
-	 * @return array
56
-	 */
57
-	public function facetwp_indexer_post_facet( $return, $params ) {
58
-		$facet    = $params['facet'];
59
-		$source   = isset( $facet['source'] ) ? $facet['source'] : '';
60
-
61
-		if ( 'lsx_hp/connected_plans' === $source ) {
62
-			$post_type = get_post_type( $params['defaults']['post_id'] );
63
-			switch ( $post_type ) {
64
-				case 'workout':
65
-					$return = $this->index_connected_plans( $params['defaults'] );
66
-					$this->index_exercises( $params['defaults'] );
67
-					break;
68
-
69
-				case 'recipe':
70
-					$return = $this->index_connected_plans( $params['defaults'] );
71
-					break;
72
-
73
-				case 'meal':
74
-					$return = $this->index_connected_plans( $params['defaults'] );
75
-					break;
76
-
77
-				default:
78
-					break;
79
-			}
80
-		}
81
-
82
-		// Reset the current plan ids array.
83
-		$this->current_plan_ids = array();
84
-		return $return;
85
-	}
86
-
87
-	/**
88
-	 * Adds the connected plan to the list of rows.
89
-	 *
90
-	 * @param array $rows
91
-	 * @param array $params
92
-	 * @return boolean
93
-	 */
94
-	public function index_connected_plans( $row ) {
95
-		$indexed         = false;
96
-		$top_level_plans = array();
97
-		// Get meals this exercise is connected to.
98
-		$plans = get_post_meta( $row['post_id'], 'connected_plans', true );
99
-
100
-		if ( ! empty( $plans ) ) {
101
-			$plan       = end( $plans );
102
-			$has_parent = wp_get_post_parent_id( $plan );
103
-			if ( 0 === $has_parent ) {
104
-				$top_level_plans[] = $plan;
105
-			} elseif ( false !== $top_level_plans ) {
106
-				$top_level_plans[] = $has_parent;
107
-			}
108
-		}
109
-		if ( ! empty( $top_level_plans ) && ( '' !== $top_level_plans ) ) {
110
-			$top_level_plans        = array_unique( $top_level_plans );
111
-			$this->current_plan_ids = $top_level_plans;
112
-			$indexed                = true;
113
-			foreach ( $top_level_plans as $plan_id ) {
114
-				$row['facet_value']         = $plan_id;
115
-				$row['facet_display_value'] = get_the_title( $plan_id );
116
-				FWP()->indexer->index_row( $row );
117
-			}
118
-		}
119
-		return $indexed;
120
-	}
121
-
122
-	/**
123
-	 * We index the exercises from the workouts.
124
-	 *
125
-	 * @param array $rows
126
-	 * @param array $params
127
-	 * @return void
128
-	 */
129
-	public function index_exercises( $row ) {
130
-		if ( empty( $this->current_plan_ids ) ) {
131
-			return;
132
-		}
133
-		$i                  = 1;
134
-		$section_counter    = 6;
135
-		$unique_connections = array();
136
-
137
-		while ( $i <= $section_counter ) {
138
-			// Here we grab the exercises and we add them to the index with the plan IDS.
139
-			$groups = get_post_meta( $row['post_id'], 'workout_section_' . $i, true );
140
-			if ( ! empty( $groups ) ) {
141
-				foreach ( $groups as $group ) {
142
-					if ( isset( $group['connected_exercises'] ) && '' !== $group['connected_exercises'] ) {
143
-
144
-						if ( ! is_array( $group['connected_exercises'] ) ) {
145
-							$group['connected_exercises'] = array( $group['connected_exercises'] );
146
-						}
147
-
148
-						// Loop through each exercise and add it to the plan.
149
-						foreach ( $group['connected_exercises'] as $eid ) {
150
-							$exercise_default            = $row;
151
-							$exercise_default['post_id'] = $eid;
152
-
153
-							foreach ( $this->current_plan_ids as $plan_id ) {
154
-								// Check to see if this connection has been added already.
155
-								if ( isset( $unique_connections[ $eid . '_' . $plan_id ] ) ) {
156
-									continue;
157
-								}
158
-
159
-								$title = get_the_title( $plan_id );
160
-								if ( ! empty( $title ) ) {
161
-									$exercise_default['facet_value']             = $plan_id;
162
-									$exercise_default['facet_display_value']     = $title;
163
-									$unique_connections[ $eid . '_' . $plan_id ] = $exercise_default;
164
-								}
165
-							}
166
-						}
167
-					}
168
-				}
169
-			}
170
-			$i++;
171
-		}
172
-
173
-		// If we have some unique connections, we index them.
174
-		if ( ! empty( $unique_connections ) ) {
175
-			foreach ( $unique_connections as $unique_row ) {
176
-				FWP()->indexer->index_row( $unique_row );
177
-			}
178
-		}
179
-	}
11
+     /**
12
+      * Holds class instance
13
+      *
14
+      * @since 1.0.0
15
+      *
16
+      * @var      object \lsx_health_plan\classes\integrations\facetwp\Connected_Plans()
17
+      */
18
+     protected static $instance = null;
19
+
20
+     /**
21
+      * This hold the current plan IDS, in case they need to be used in additional functions.
22
+      *
23
+      * @var array
24
+      */
25
+     public $current_plan_ids = array();
26
+
27
+     /**
28
+      * Contructor
29
+      */
30
+     public function __construct() {
31
+          //add_filter( 'facetwp_index_row', array( $this, 'facetwp_index_row' ), 10, 2 );
32
+          add_filter( 'facetwp_indexer_post_facet', array( $this, 'facetwp_indexer_post_facet' ), 10, 2 );
33
+     }
34
+
35
+     /**
36
+      * Return an instance of this class.
37
+      *
38
+      * @since 1.0.0
39
+      *
40
+      * @return    object \lsx_health_plan\classes\integration\facetwp\Connected_Plans()    A single instance of this class.
41
+      */
42
+     public static function get_instance() {
43
+          // If the single instance hasn't been set, set it now.
44
+          if ( null === self::$instance ) {
45
+               self::$instance = new self();
46
+          }
47
+          return self::$instance;
48
+     }
49
+
50
+     /**
51
+      * Index the connected plan
52
+      *
53
+      * @param array $return
54
+      * @param array $params
55
+      * @return array
56
+      */
57
+     public function facetwp_indexer_post_facet( $return, $params ) {
58
+          $facet    = $params['facet'];
59
+          $source   = isset( $facet['source'] ) ? $facet['source'] : '';
60
+
61
+          if ( 'lsx_hp/connected_plans' === $source ) {
62
+               $post_type = get_post_type( $params['defaults']['post_id'] );
63
+               switch ( $post_type ) {
64
+                    case 'workout':
65
+                         $return = $this->index_connected_plans( $params['defaults'] );
66
+                         $this->index_exercises( $params['defaults'] );
67
+                         break;
68
+
69
+                    case 'recipe':
70
+                         $return = $this->index_connected_plans( $params['defaults'] );
71
+                         break;
72
+
73
+                    case 'meal':
74
+                         $return = $this->index_connected_plans( $params['defaults'] );
75
+                         break;
76
+
77
+                    default:
78
+                         break;
79
+               }
80
+          }
81
+
82
+          // Reset the current plan ids array.
83
+          $this->current_plan_ids = array();
84
+          return $return;
85
+     }
86
+
87
+     /**
88
+      * Adds the connected plan to the list of rows.
89
+      *
90
+      * @param array $rows
91
+      * @param array $params
92
+      * @return boolean
93
+      */
94
+     public function index_connected_plans( $row ) {
95
+          $indexed         = false;
96
+          $top_level_plans = array();
97
+          // Get meals this exercise is connected to.
98
+          $plans = get_post_meta( $row['post_id'], 'connected_plans', true );
99
+
100
+          if ( ! empty( $plans ) ) {
101
+               $plan       = end( $plans );
102
+               $has_parent = wp_get_post_parent_id( $plan );
103
+               if ( 0 === $has_parent ) {
104
+                    $top_level_plans[] = $plan;
105
+               } elseif ( false !== $top_level_plans ) {
106
+                    $top_level_plans[] = $has_parent;
107
+               }
108
+          }
109
+          if ( ! empty( $top_level_plans ) && ( '' !== $top_level_plans ) ) {
110
+               $top_level_plans        = array_unique( $top_level_plans );
111
+               $this->current_plan_ids = $top_level_plans;
112
+               $indexed                = true;
113
+               foreach ( $top_level_plans as $plan_id ) {
114
+                    $row['facet_value']         = $plan_id;
115
+                    $row['facet_display_value'] = get_the_title( $plan_id );
116
+                    FWP()->indexer->index_row( $row );
117
+               }
118
+          }
119
+          return $indexed;
120
+     }
121
+
122
+     /**
123
+      * We index the exercises from the workouts.
124
+      *
125
+      * @param array $rows
126
+      * @param array $params
127
+      * @return void
128
+      */
129
+     public function index_exercises( $row ) {
130
+          if ( empty( $this->current_plan_ids ) ) {
131
+               return;
132
+          }
133
+          $i                  = 1;
134
+          $section_counter    = 6;
135
+          $unique_connections = array();
136
+
137
+          while ( $i <= $section_counter ) {
138
+               // Here we grab the exercises and we add them to the index with the plan IDS.
139
+               $groups = get_post_meta( $row['post_id'], 'workout_section_' . $i, true );
140
+               if ( ! empty( $groups ) ) {
141
+                    foreach ( $groups as $group ) {
142
+                         if ( isset( $group['connected_exercises'] ) && '' !== $group['connected_exercises'] ) {
143
+
144
+                              if ( ! is_array( $group['connected_exercises'] ) ) {
145
+                                   $group['connected_exercises'] = array( $group['connected_exercises'] );
146
+                              }
147
+
148
+                              // Loop through each exercise and add it to the plan.
149
+                              foreach ( $group['connected_exercises'] as $eid ) {
150
+                                   $exercise_default            = $row;
151
+                                   $exercise_default['post_id'] = $eid;
152
+
153
+                                   foreach ( $this->current_plan_ids as $plan_id ) {
154
+                                        // Check to see if this connection has been added already.
155
+                                        if ( isset( $unique_connections[ $eid . '_' . $plan_id ] ) ) {
156
+                                             continue;
157
+                                        }
158
+
159
+                                        $title = get_the_title( $plan_id );
160
+                                        if ( ! empty( $title ) ) {
161
+                                             $exercise_default['facet_value']             = $plan_id;
162
+                                             $exercise_default['facet_display_value']     = $title;
163
+                                             $unique_connections[ $eid . '_' . $plan_id ] = $exercise_default;
164
+                                        }
165
+                                   }
166
+                              }
167
+                         }
168
+                    }
169
+               }
170
+               $i++;
171
+          }
172
+
173
+          // If we have some unique connections, we index them.
174
+          if ( ! empty( $unique_connections ) ) {
175
+               foreach ( $unique_connections as $unique_row ) {
176
+                    FWP()->indexer->index_row( $unique_row );
177
+               }
178
+          }
179
+     }
180 180
 }
Please login to merge, or discard this patch.
classes/admin/settings/class-plan.php 1 patch
Indentation   +46 added lines, -46 removed lines patch added patch discarded remove patch
@@ -12,54 +12,54 @@
 block discarded – undo
12 12
  */
13 13
 class Plan {
14 14
 
15
-	/**
16
-	 * Holds class instance
17
-	 *
18
-	 * @since 1.0.0
19
-	 *
20
-	 * @var      object \lsx_health_plan\classes\admin\Plan()
21
-	 */
22
-	protected static $instance = null;
15
+     /**
16
+      * Holds class instance
17
+      *
18
+      * @since 1.0.0
19
+      *
20
+      * @var      object \lsx_health_plan\classes\admin\Plan()
21
+      */
22
+     protected static $instance = null;
23 23
 
24
-	/**
25
-	 * Contructor
26
-	 */
27
-	public function __construct() {
28
-		add_action( 'lsx_hp_settings_page_plan_top', array( $this, 'settings' ), 1, 1 );
29
-	}
24
+     /**
25
+      * Contructor
26
+      */
27
+     public function __construct() {
28
+          add_action( 'lsx_hp_settings_page_plan_top', array( $this, 'settings' ), 1, 1 );
29
+     }
30 30
 
31
-	/**
32
-	 * Return an instance of this class.
33
-	 *
34
-	 * @since 1.0.0
35
-	 *
36
-	 * @return    object \lsx_health_plan\classes\admin\Plan()    A single instance of this class.
37
-	 */
38
-	public static function get_instance() {
39
-		// If the single instance hasn't been set, set it now.
40
-		if ( null === self::$instance ) {
41
-			self::$instance = new self();
42
-		}
43
-		return self::$instance;
44
-	}
31
+     /**
32
+      * Return an instance of this class.
33
+      *
34
+      * @since 1.0.0
35
+      *
36
+      * @return    object \lsx_health_plan\classes\admin\Plan()    A single instance of this class.
37
+      */
38
+     public static function get_instance() {
39
+          // If the single instance hasn't been set, set it now.
40
+          if ( null === self::$instance ) {
41
+               self::$instance = new self();
42
+          }
43
+          return self::$instance;
44
+     }
45 45
 
46
-	/**
47
-	 * Registers the general settings.
48
-	 *
49
-	 * @param object $cmb new_cmb2_box().
50
-	 * @return void
51
-	 */
52
-	public function settings( $cmb ) {
53
-		$cmb->add_field(
54
-			array(
55
-				'name'        => __( 'Plan Filters', 'lsx-health-plan' ),
56
-				'id'          => 'plan_filters_disabled',
57
-				'type'        => 'checkbox',
58
-				'value'       => 1,
59
-				'default'     => 0,
60
-				'description' => __( 'Toggle the display of the tab filters on the post type archive.', 'lsx-health-plan' ),
61
-			)
62
-		);
63
-	}
46
+     /**
47
+      * Registers the general settings.
48
+      *
49
+      * @param object $cmb new_cmb2_box().
50
+      * @return void
51
+      */
52
+     public function settings( $cmb ) {
53
+          $cmb->add_field(
54
+               array(
55
+                    'name'        => __( 'Plan Filters', 'lsx-health-plan' ),
56
+                    'id'          => 'plan_filters_disabled',
57
+                    'type'        => 'checkbox',
58
+                    'value'       => 1,
59
+                    'default'     => 0,
60
+                    'description' => __( 'Toggle the display of the tab filters on the post type archive.', 'lsx-health-plan' ),
61
+               )
62
+          );
63
+     }
64 64
 }
65 65
 Plan::get_instance();
Please login to merge, or discard this patch.
classes/class-integrations.php 1 patch
Indentation   +165 added lines, -165 removed lines patch added patch discarded remove patch
@@ -8,169 +8,169 @@
 block discarded – undo
8 8
  */
9 9
 class Integrations {
10 10
 
11
-	/**
12
-	 * Holds class instance
13
-	 *
14
-	 * @since 1.0.0
15
-	 *
16
-	 * @var      object \lsx_health_plan\classes\Integrations()
17
-	 */
18
-	protected static $instance = null;
19
-
20
-	/**
21
-	 * Holds class instance
22
-	 *
23
-	 * @since 1.0.0
24
-	 *
25
-	 * @var      object \MAG_CMB2_Field_Post_Search_Ajax()
26
-	 */
27
-	public $cmb2_post_search_ajax = false;
28
-
29
-	/**
30
-	 * Holds class instance
31
-	 *
32
-	 * @since 1.0.0
33
-	 *
34
-	 * @var      object \lsx_health_plan\classes\Download_Monitor()
35
-	 */
36
-	public $download_monitor = false;
37
-
38
-	/**
39
-	 * Holds class instance
40
-	 *
41
-	 * @since 1.0.0
42
-	 *
43
-	 * @var      object \lsx_health_plan\classes\Woocommerce()
44
-	 */
45
-	public $woocommerce = false;
46
-
47
-	/**
48
-	 * Holds class instance
49
-	 *
50
-	 * @since 1.0.0
51
-	 *
52
-	 * @var      object \lsx_health_plan\classes\WP_User_Avatar()
53
-	 */
54
-	public $wp_user_avatar = false;
55
-
56
-	/**
57
-	 * Holds class instance
58
-	 *
59
-	 * @since 1.0.0
60
-	 *
61
-	 * @var      object \lsx_health_plan\classes\FacetWP()
62
-	 */
63
-	public $facetwp = false;
64
-
65
-	/**
66
-	 * Contructor
67
-	 */
68
-	public function __construct() {
69
-		add_action( 'init', array( $this, 'cmb2_post_search_ajax' ) );
70
-		add_action( 'init', array( $this, 'download_monitor_init' ) );
71
-		add_action( 'init', array( $this, 'woocommerce_init' ) );
72
-		add_action( 'init', array( $this, 'wp_user_avatar_init' ) );
73
-		add_action( 'init', array( $this, 'facetwp_init' ) );
74
-		add_action( 'init', array( $this, 'lsx_team_init' ) );
75
-		add_action( 'init', array( $this, 'lsx_article_init' ) );
76
-	}
77
-
78
-	/**
79
-	 * Return an instance of this class.
80
-	 *
81
-	 * @since 1.0.0
82
-	 *
83
-	 * @return    object \lsx_health_plan\classes\Integrations()    A single instance of this class.
84
-	 */
85
-	public static function get_instance() {
86
-		// If the single instance hasn't been set, set it now.
87
-		if ( null === self::$instance ) {
88
-			self::$instance = new self();
89
-		}
90
-		return self::$instance;
91
-	}
92
-
93
-	/**
94
-	 * Includes the Post Search Ajax if it is there.
95
-	 *
96
-	 * @return void
97
-	 */
98
-	public function cmb2_post_search_ajax() {
99
-		require_once LSX_HEALTH_PLAN_PATH . 'vendor/lsx-field-post-search-ajax/cmb-field-post-search-ajax.php';
100
-		if ( method_exists( 'MAG_CMB2_Field_Post_Search_Ajax', 'get_instance' ) ) {
101
-			$this->cmb2_post_search_ajax = \MAG_CMB2_Field_Post_Search_Ajax::get_instance();
102
-		}
103
-	}
104
-
105
-	/**
106
-	 * Includes the Post Search Ajax if it is there.
107
-	 *
108
-	 * @return void
109
-	 */
110
-	public function download_monitor_init() {
111
-		if ( function_exists( 'download_monitor' ) ) {
112
-			require_once LSX_HEALTH_PLAN_PATH . 'classes/integrations/class-download-monitor.php';
113
-			$this->download_monitor = Download_Monitor::get_instance();
114
-		}
115
-	}
116
-
117
-	/**
118
-	 * Includes the Woocommerce functions.
119
-	 *
120
-	 * @return void
121
-	 */
122
-	public function woocommerce_init() {
123
-		if ( function_exists( 'WC' ) ) {
124
-			require_once LSX_HEALTH_PLAN_PATH . 'classes/integrations/class-woocommerce.php';
125
-			$this->woocommerce = Woocommerce::get_instance();
126
-		}
127
-	}
128
-
129
-	/**
130
-	 * Includes the Woocommerce functions.
131
-	 *
132
-	 * @return void
133
-	 */
134
-	public function wp_user_avatar_init() {
135
-		if ( class_exists( 'WP_User_Avatar_Setup' ) ) {
136
-			require_once LSX_HEALTH_PLAN_PATH . 'classes/integrations/class-wp-user-avatar.php';
137
-			$this->wp_user_avatar = WP_User_Avatar::get_instance();
138
-		}
139
-	}
140
-
141
-	/**
142
-	 * Includes the FacetWP Indexer Filters.
143
-	 *
144
-	 * @return void
145
-	 */
146
-	public function facetwp_init() {
147
-		if ( class_exists( 'FacetWP' ) ) {
148
-			require_once LSX_HEALTH_PLAN_PATH . 'classes/integrations/class-facetwp.php';
149
-			$this->facetwp = FacetWP::get_instance();
150
-		}
151
-	}
152
-
153
-	/**
154
-	 * Includes the LSX Team Integration.
155
-	 *
156
-	 * @return void
157
-	 */
158
-	public function lsx_team_init() {
159
-		if ( class_exists( 'LSX_Team' ) ) {
160
-			require_once LSX_HEALTH_PLAN_PATH . 'classes/integrations/class-team.php';
161
-			$this->team = LSX_Team::get_instance();
162
-		}
163
-	}
164
-
165
-	/**
166
-	 * Includes the Blog Integration.
167
-	 *
168
-	 * @return void
169
-	 */
170
-	public function lsx_article_init() {
171
-		if ( wp_count_posts()->publish > 0 ) {
172
-			require_once LSX_HEALTH_PLAN_PATH . 'classes/integrations/class-blog.php';
173
-			$this->article = Articles::get_instance();
174
-		}
175
-	}
11
+     /**
12
+      * Holds class instance
13
+      *
14
+      * @since 1.0.0
15
+      *
16
+      * @var      object \lsx_health_plan\classes\Integrations()
17
+      */
18
+     protected static $instance = null;
19
+
20
+     /**
21
+      * Holds class instance
22
+      *
23
+      * @since 1.0.0
24
+      *
25
+      * @var      object \MAG_CMB2_Field_Post_Search_Ajax()
26
+      */
27
+     public $cmb2_post_search_ajax = false;
28
+
29
+     /**
30
+      * Holds class instance
31
+      *
32
+      * @since 1.0.0
33
+      *
34
+      * @var      object \lsx_health_plan\classes\Download_Monitor()
35
+      */
36
+     public $download_monitor = false;
37
+
38
+     /**
39
+      * Holds class instance
40
+      *
41
+      * @since 1.0.0
42
+      *
43
+      * @var      object \lsx_health_plan\classes\Woocommerce()
44
+      */
45
+     public $woocommerce = false;
46
+
47
+     /**
48
+      * Holds class instance
49
+      *
50
+      * @since 1.0.0
51
+      *
52
+      * @var      object \lsx_health_plan\classes\WP_User_Avatar()
53
+      */
54
+     public $wp_user_avatar = false;
55
+
56
+     /**
57
+      * Holds class instance
58
+      *
59
+      * @since 1.0.0
60
+      *
61
+      * @var      object \lsx_health_plan\classes\FacetWP()
62
+      */
63
+     public $facetwp = false;
64
+
65
+     /**
66
+      * Contructor
67
+      */
68
+     public function __construct() {
69
+          add_action( 'init', array( $this, 'cmb2_post_search_ajax' ) );
70
+          add_action( 'init', array( $this, 'download_monitor_init' ) );
71
+          add_action( 'init', array( $this, 'woocommerce_init' ) );
72
+          add_action( 'init', array( $this, 'wp_user_avatar_init' ) );
73
+          add_action( 'init', array( $this, 'facetwp_init' ) );
74
+          add_action( 'init', array( $this, 'lsx_team_init' ) );
75
+          add_action( 'init', array( $this, 'lsx_article_init' ) );
76
+     }
77
+
78
+     /**
79
+      * Return an instance of this class.
80
+      *
81
+      * @since 1.0.0
82
+      *
83
+      * @return    object \lsx_health_plan\classes\Integrations()    A single instance of this class.
84
+      */
85
+     public static function get_instance() {
86
+          // If the single instance hasn't been set, set it now.
87
+          if ( null === self::$instance ) {
88
+               self::$instance = new self();
89
+          }
90
+          return self::$instance;
91
+     }
92
+
93
+     /**
94
+      * Includes the Post Search Ajax if it is there.
95
+      *
96
+      * @return void
97
+      */
98
+     public function cmb2_post_search_ajax() {
99
+          require_once LSX_HEALTH_PLAN_PATH . 'vendor/lsx-field-post-search-ajax/cmb-field-post-search-ajax.php';
100
+          if ( method_exists( 'MAG_CMB2_Field_Post_Search_Ajax', 'get_instance' ) ) {
101
+               $this->cmb2_post_search_ajax = \MAG_CMB2_Field_Post_Search_Ajax::get_instance();
102
+          }
103
+     }
104
+
105
+     /**
106
+      * Includes the Post Search Ajax if it is there.
107
+      *
108
+      * @return void
109
+      */
110
+     public function download_monitor_init() {
111
+          if ( function_exists( 'download_monitor' ) ) {
112
+               require_once LSX_HEALTH_PLAN_PATH . 'classes/integrations/class-download-monitor.php';
113
+               $this->download_monitor = Download_Monitor::get_instance();
114
+          }
115
+     }
116
+
117
+     /**
118
+      * Includes the Woocommerce functions.
119
+      *
120
+      * @return void
121
+      */
122
+     public function woocommerce_init() {
123
+          if ( function_exists( 'WC' ) ) {
124
+               require_once LSX_HEALTH_PLAN_PATH . 'classes/integrations/class-woocommerce.php';
125
+               $this->woocommerce = Woocommerce::get_instance();
126
+          }
127
+     }
128
+
129
+     /**
130
+      * Includes the Woocommerce functions.
131
+      *
132
+      * @return void
133
+      */
134
+     public function wp_user_avatar_init() {
135
+          if ( class_exists( 'WP_User_Avatar_Setup' ) ) {
136
+               require_once LSX_HEALTH_PLAN_PATH . 'classes/integrations/class-wp-user-avatar.php';
137
+               $this->wp_user_avatar = WP_User_Avatar::get_instance();
138
+          }
139
+     }
140
+
141
+     /**
142
+      * Includes the FacetWP Indexer Filters.
143
+      *
144
+      * @return void
145
+      */
146
+     public function facetwp_init() {
147
+          if ( class_exists( 'FacetWP' ) ) {
148
+               require_once LSX_HEALTH_PLAN_PATH . 'classes/integrations/class-facetwp.php';
149
+               $this->facetwp = FacetWP::get_instance();
150
+          }
151
+     }
152
+
153
+     /**
154
+      * Includes the LSX Team Integration.
155
+      *
156
+      * @return void
157
+      */
158
+     public function lsx_team_init() {
159
+          if ( class_exists( 'LSX_Team' ) ) {
160
+               require_once LSX_HEALTH_PLAN_PATH . 'classes/integrations/class-team.php';
161
+               $this->team = LSX_Team::get_instance();
162
+          }
163
+     }
164
+
165
+     /**
166
+      * Includes the Blog Integration.
167
+      *
168
+      * @return void
169
+      */
170
+     public function lsx_article_init() {
171
+          if ( wp_count_posts()->publish > 0 ) {
172
+               require_once LSX_HEALTH_PLAN_PATH . 'classes/integrations/class-blog.php';
173
+               $this->article = Articles::get_instance();
174
+          }
175
+     }
176 176
 }
Please login to merge, or discard this patch.
classes/class-admin.php 1 patch
Indentation   +430 added lines, -430 removed lines patch added patch discarded remove patch
@@ -8,434 +8,434 @@  discard block
 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\Admin()
17
-	 */
18
-	protected static $instance = null;
19
-
20
-	/**
21
-	 * The post relation fields
22
-	 *
23
-	 * @var array
24
-	 */
25
-	public $connections = array();
26
-
27
-	/**
28
-	 * Stores the previous values needed to remove the post relations
29
-	 *
30
-	 * @var array
31
-	 */
32
-	public $previous_values = array();
33
-
34
-	/**
35
-	 * @var object \lsx_health_plan\classes\admin\Settings();
36
-	 */
37
-	public $settings;
38
-
39
-	/**
40
-	 * @var object \lsx_health_plan\classes\admin\Help_Page();
41
-	 */
42
-	public $help;
43
-
44
-	/**
45
-	 * Holds the settings page theme functions
46
-	 *
47
-	 * @var object \lsx_health_plan\classes\admin\Settings_Theme();
48
-	 */
49
-	public $settings_theme;
50
-
51
-	/**
52
-	 * Contructor
53
-	 */
54
-	public function __construct() {
55
-		$this->load_classes();
56
-		add_action( 'admin_menu', array( $this, 'order_menus' ), 200 );
57
-		add_action( 'admin_enqueue_scripts', array( $this, 'assets' ) );
58
-		add_filter( 'cmb2_override_meta_save', array( $this, 'save_previous_values' ), 20, 4 );
59
-		add_filter( 'cmb2_override_meta_remove', array( $this, 'save_previous_values' ), 20, 4 );
60
-		add_action( 'cmb2_save_field', array( $this, 'post_relations' ), 20, 4 );
61
-		add_action( 'cmb2_save_field', array( $this, 'create_query_fields' ), 20, 4 );
62
-		add_action( 'before_delete_post', array( $this, 'delete_post_meta_connections' ), 20, 1 );
63
-		add_action( 'cmb2_save_post_fields', array( $this, 'extract_plan_fields' ), 10, 4 );
64
-
65
-		// Customizer.
66
-		add_filter( 'lsx_customizer_colour_selectors_body', array( $this, 'customizer_body_colours_handler' ), 15, 2 );
67
-	}
68
-
69
-	/**
70
-	 * Return an instance of this class.
71
-	 *
72
-	 * @return object \lsx\member_directory\classes\Admin()    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
-	/**
83
-	 * Loads the admin subclasses
84
-	 */
85
-	private function load_classes() {
86
-		require_once LSX_HEALTH_PLAN_PATH . 'classes/admin/class-settings.php';
87
-		$this->settings = admin\Settings::get_instance();
88
-
89
-		require_once LSX_HEALTH_PLAN_PATH . 'classes/admin/class-help-page.php';
90
-		$this->help = admin\Help_Page::get_instance();
91
-
92
-		require_once LSX_HEALTH_PLAN_PATH . 'classes/admin/class-settings-theme.php';
93
-		$this->settings_theme = admin\Settings_Theme::get_instance();
94
-	}
95
-
96
-	/**
97
-	 * Orders the HP menu Items
98
-	 *
99
-	 * @return void
100
-	 */
101
-	public function order_menus() {
102
-		global $menu, $submenu;
103
-		if ( ! empty( $submenu ) ) {
104
-			$parent_check = array(
105
-				'edit.php?post_type=plan',
106
-				'edit.php?post_type=workout',
107
-				'edit.php?post_type=meal',
108
-			);
109
-			foreach ( $submenu as $menu_id => $menu_values ) {
110
-				if ( in_array( $menu_id, $parent_check ) ) {
111
-					foreach ( $menu_values as $sub_menu_key => $sub_menu_values ) {
112
-						switch ( $sub_menu_values[0] ) {
113
-
114
-							case __( 'Add New', 'lsx-health-plan' ):
115
-								unset( $submenu[ $menu_id ][ $sub_menu_key ] );
116
-								break;
117
-
118
-							case __( 'All', 'lsx-health-plan' ):
119
-								$title = $sub_menu_values[0];
120
-								// Check and change the label.
121
-								switch ( $sub_menu_values[2] ) {
122
-									case 'edit.php?post_type=meal':
123
-										$title = esc_attr__( 'Meals', 'lsx-health-plan' );
124
-										break;
125
-
126
-									case 'edit.php?post_type=recipe':
127
-										$title = esc_attr__( 'Recipes', 'lsx-health-plan' );
128
-										break;
129
-
130
-									case 'edit.php?post_type=workout':
131
-										$title = esc_attr__( 'Workouts', 'lsx-health-plan' );
132
-										break;
133
-
134
-									case 'edit.php?post_type=plan':
135
-										$title = esc_attr__( 'Plans', 'lsx-health-plan' );
136
-										break;
137
-
138
-									case 'edit.php?post_type=video':
139
-										$title = esc_attr__( 'Videos', 'lsx-health-plan' );
140
-										break;
141
-
142
-									case 'edit.php?post_type=exercise':
143
-										$title = esc_attr__( 'Exercises', 'lsx-health-plan' );
144
-										break;
145
-
146
-									case 'edit.php?post_type=tip':
147
-										$title = esc_attr__( 'Tips', 'lsx-health-plan' );
148
-										break;
149
-
150
-									default:
151
-										break;
152
-								}
153
-								$submenu[ $menu_id ][ $sub_menu_key ][0] = $title; // @codingStandardsIgnoreLine
154
-								break;
155
-
156
-							default:
157
-								break;
158
-						}
159
-					}
160
-				}
161
-			}
162
-		}
163
-	}
164
-
165
-	/**
166
-	 * Undocumented function
167
-	 *
168
-	 * @return void
169
-	 */
170
-	public function assets() {
171
-		wp_enqueue_script( 'media-upload' );
172
-		wp_enqueue_script( 'thickbox' );
173
-		wp_enqueue_style( 'thickbox' );
174
-
175
-		wp_enqueue_script( 'lsx-health-plan-admin', LSX_HEALTH_PLAN_URL . 'assets/js/lsx-health-plan-admin.min.js', array( 'jquery' ), LSX_HEALTH_PLAN_VER, true );
176
-		wp_enqueue_style( 'lsx-health-plan-admin', LSX_HEALTH_PLAN_URL . 'assets/css/lsx-health-plan-admin.css', array(), LSX_HEALTH_PLAN_VER );
177
-	}
178
-
179
-	/**
180
-	 * Returns the registered connections.
181
-	 *
182
-	 * @return void
183
-	 */
184
-	public function get_connections() {
185
-		return apply_filters( 'lsx_health_plan_connections', $this->connections );
186
-	}
187
-
188
-	/**
189
-	 * Saves the previous values before they are overwritten by the new ones.
190
-	 *
191
-	 * @param [type] $value_to_save
192
-	 * @param [type] $a
193
-	 * @param [type] $args
194
-	 * @param [type] $cmb2
195
-	 * @return void
196
-	 */
197
-	public function save_previous_values( $value_to_save, $a, $args, $cmb2 ) {
198
-		if ( isset( $cmb2->data_to_save['ID'] ) ) {
199
-			$connections = $this->get_connections();
200
-			$post_type   = get_post_type( $cmb2->data_to_save['ID'] );
201
-			if ( isset( $connections[ $post_type ] ) && array_key_exists( $a['field_id'], $connections[ $post_type ] ) ) {
202
-				// Get the previous values if the field, so we can run through them and remove the current ID from them later.
203
-				$this->previous_values = get_post_meta( $a['id'], $a['field_id'], true );
204
-			}
205
-		}
206
-		return $value_to_save;
207
-	}
208
-
209
-	/**
210
-	 * Sets up the "post relations"
211
-	 *
212
-	 * @return    void
213
-	 */
214
-	public function post_relations( $field_id, $updated, $action, $cmb2 ) {
215
-		// If the connections are empty then skip this function.
216
-		$connections = $this->get_connections();
217
-		if ( empty( $connections ) ) {
218
-			return;
219
-		}
220
-
221
-		// If the field has been updated.
222
-		if ( isset( $cmb2->data_to_save['ID'] ) ) {
223
-			$post_type = get_post_type( $cmb2->data_to_save['ID'] );
224
-			if ( isset( $connections[ $post_type ] ) && array_key_exists( $field_id, $connections[ $post_type ] ) ) {
225
-				$saved_values = get_post_meta( $cmb2->data_to_save['ID'], $field_id, true );
226
-
227
-				if ( 'updated' === $action ) {
228
-					$this->add_connected_posts( $saved_values, $cmb2->data_to_save['ID'], $connections[ $post_type ][ $field_id ] );
229
-					// Check if any posts have been removed.
230
-					if ( count( $this->previous_values ) > count( $saved_values ) ) {
231
-						$posts_to_remove = array_diff( $this->previous_values, $saved_values );
232
-						if ( ! empty( $posts_to_remove ) ) {
233
-							$this->remove_connected_posts( $posts_to_remove, $cmb2->data_to_save['ID'], $connections[ $post_type ][ $field_id ] );
234
-						}
235
-					}
236
-				} else if ( 'removed' === $action && ! empty( $this->previous_values ) ) {
237
-					$this->remove_connected_posts( $this->previous_values, $cmb2->data_to_save['ID'], $connections[ $post_type ][ $field_id ] );
238
-				}
239
-			}
240
-		}
241
-	}
242
-
243
-	/**
244
-	 * Updates the connected posts witht he current post ID
245
-	 *
246
-	 * @param [type] $values
247
-	 * @param [type] $current_id
248
-	 * @param [type] $connected_key
249
-	 * @return void
250
-	 */
251
-	public function add_connected_posts( $values, $current_id, $connected_key ) {
252
-		foreach ( $values as $value ) {
253
-			$current_post_array = get_post_meta( $value, $connected_key, true );
254
-			$previous_values    = $current_post_array;
255
-
256
-			if ( ! empty( $current_post_array ) ) {
257
-				$current_post_array = array_map( 'strval', $current_post_array );
258
-				array_unique( $current_post_array );
259
-			}
260
-
261
-			// If the current connected post has no saved connections then we create it.
262
-			if ( false === $current_post_array || empty( $current_post_array ) ) {
263
-				$current_post_array = array( $current_id );
264
-			} elseif ( ! in_array( (string) $current_id, $current_post_array, true ) ) {
265
-				$current_post_array[] = $current_id;
266
-			}
267
-
268
-			// Check if the values are empty, if not update them.
269
-			if ( ! empty( $current_post_array ) ) {
270
-				update_post_meta( $value, $connected_key, $current_post_array, $previous_values );
271
-			}
272
-		}
273
-	}
274
-
275
-	/**
276
-	 * Removes the post ID from the connected posts.
277
-	 *
278
-	 * @param [type] $values
279
-	 * @param [type] $current_ID
280
-	 * @param [type] $connected_key
281
-	 * @return void
282
-	 */
283
-	public function remove_connected_posts( $values, $current_ID, $connected_key ) {
284
-		foreach ( $values as $value ) {
285
-			$current_post_array = get_post_meta( $value, $connected_key, true );
286
-			$new_array          = array();
287
-			// Loop through only if the current ID has been saved against the post.
288
-			if ( in_array( $current_ID, $current_post_array, false ) ) {
289
-
290
-				// Loop through all the connected saved IDS.
291
-				foreach ( $current_post_array as $cpa ) {
292
-					if ( (int) $cpa !== (int) $current_ID ) {
293
-						$new_array[] = $cpa;
294
-					}
295
-				}
296
-				if ( ! empty( $new_array ) ) {
297
-					$new_array = array_unique( $new_array );
298
-					delete_post_meta( $value, $connected_key );
299
-					add_post_meta( $value, $connected_key, $new_array, true );
300
-				} else {
301
-					delete_post_meta( $value, $connected_key );
302
-				}
303
-			}
304
-		}
305
-	}
306
-
307
-	/**
308
-	 * Runs on 'before_delete_post' to run through and remove this post ID from its connected values.
309
-	 *
310
-	 * @param string $item_id
311
-	 * @return void
312
-	 */
313
-	public function delete_post_meta_connections( $item_id = '' ) {
314
-		if ( '' !== $item_id ) {
315
-			$post_type   = get_post_type( $item_id );
316
-			$connections = $this->get_connections();
317
-			if ( isset( $connections[ $post_type ] ) && ! empty( $connections[ $post_type ] ) && is_array( $connections[ $post_type ] ) ) {
318
-				foreach ( $connections[ $post_type ] as $this_key => $connected_key ) {
319
-					$this->delete_connected_items( $item_id, $this_key, $connected_key );
320
-				}
321
-			}
322
-		}
323
-	}
324
-
325
-	/**
326
-	 * This function will remvoe the post id fomr its connected posts.
327
-	 *
328
-	 * @param string $item_id
329
-	 * @param string $this_key
330
-	 * @param string $connected_key
331
-	 * @return void
332
-	 */
333
-	public function delete_connected_items( $item_id = '', $this_key, $connected_key ) {
334
-		if ( '' !== $item_id ) {
335
-			$connected_items = get_post_meta( $item_id, $this_key, true );
336
-			if ( ! empty( $connected_items ) ) {
337
-				foreach ( $connected_items as $con_id ) {
338
-					// Get the connected item array from the connected item.
339
-					$their_connections = get_post_meta( $con_id, $connected_key, true );
340
-					if ( ! empty( $their_connections ) ) {
341
-						$new_connections = $their_connections;
342
-						// Run through the array and remove the post to be deleteds ID.
343
-						foreach ( $their_connections as $ckey => $cvalue ) {
344
-							if ( (int) $item_id === (int) $cvalue ) {
345
-								unset( $new_connections[ $ckey ] );
346
-							}
347
-						}
348
-						// Now we save the field.
349
-						update_post_meta( $con_id, $connected_key, $new_connections, $their_connections );
350
-					}
351
-				}
352
-			}
353
-		}
354
-	}
355
-
356
-	/**
357
-	 * Saves the serialized post ids in singular custom fields so they are easily queried using WP_Query
358
-	 *
359
-	 * @return    void
360
-	 */
361
-	public function create_query_fields( $field_id, $updated, $action, $cmb2 ) {
362
-		// If the connections are empty then skip this function.
363
-		$search_fields = array(
364
-			'plan_product',
365
-		);
366
-		if ( ! in_array( $field_id, $search_fields ) ) {
367
-			return;
368
-		}
369
-
370
-		// If the field has been updated.
371
-		if ( isset( $cmb2->data_to_save['ID'] ) && isset( $cmb2->data_to_save[ $field_id . '_results' ] ) && ! empty( $cmb2->data_to_save[ $field_id . '_results' ] ) ) {
372
-			delete_post_meta( $cmb2->data_to_save['ID'], '_' . $field_id . '_id' );
373
-			foreach ( $cmb2->data_to_save[ $field_id . '_results' ] as $temp ) {
374
-				add_post_meta( $cmb2->data_to_save['ID'], '_' . $field_id . '_id', $temp, false );
375
-			}
376
-		}
377
-	}
378
-
379
-	/**
380
-	 * Extract the plan fields so they save to an indexable array.
381
-	 *
382
-	 * @param [type] $object_id
383
-	 * @param [type] $cmb_id
384
-	 * @param [type] $updated
385
-	 * @param [type] $cmb2
386
-	 * @return void
387
-	 */
388
-	public function extract_plan_fields( $object_id, $cmb_id, $updated, $cmb2 ) {
389
-		if ( 'plan_sections_metabox' === $cmb_id ) {
390
-			// Check if our fields are available, and cycle through them.
391
-			if ( isset( $cmb2->data_to_save['plan_sections'] ) && ! empty( $cmb2->data_to_save['plan_sections'] ) ) {
392
-				$fields_to_save = array();
393
-				// Run through each row of fields.
394
-				foreach ( $cmb2->data_to_save['plan_sections'] as $field_index => $fields ) {
395
-					// Run through each field in that section.
396
-					foreach ( $fields as $field_key => $field_value ) {
397
-						$stored_values_key = 'plan_sections_' . $field_index . '_' . $field_key . '_store';
398
-						if ( isset( $cmb2->data_to_save[ $stored_values_key ] ) && ! empty( $cmb2->data_to_save[ $stored_values_key ] ) ) {
399
-							$stored_values = $cmb2->data_to_save[ $stored_values_key ];
400
-							$stored_values = explode( ',', $stored_values );
401
-							foreach ( $stored_values as $id_to_save ) {
402
-								$fields_to_save[ $field_key ][] = $id_to_save;
403
-							}
404
-						}
405
-					}
406
-				}
407
-				$this->save_field_array( $object_id, $fields_to_save );
408
-			}
409
-		}
410
-	}
411
-
412
-	/**
413
-	 * Runs through the supplied array and saved the fields to the current Object.
414
-	 *
415
-	 * @param integer $object_id
416
-	 * @param array   $fields_to_save
417
-	 * @return void
418
-	 */
419
-	public function save_field_array( $object_id = 0, $fields_to_save = array() ) {
420
-
421
-		// Run through the fields and save the meta items.
422
-		if ( ! empty( $fields_to_save ) ) {
423
-			foreach ( $fields_to_save as $field_key => $field_values ) {
424
-				delete_post_meta( $object_id, $field_key );
425
-
426
-				$field_values = array_unique( $field_values );
427
-				foreach ( $field_values as $field_value ) {
428
-					add_post_meta( $object_id, $field_key, $field_value, false );
429
-				}
430
-			}
431
-		}
432
-	}
433
-
434
-	/**
435
-	 * Handle body colours that might be change by LSX Customizer.
436
-	 */
437
-	public function customizer_body_colours_handler( $css, $colors ) {
438
-		$css .= '
11
+     /**
12
+      * Holds class instance
13
+      *
14
+      * @since 1.0.0
15
+      *
16
+      * @var      object \lsx_health_plan\classes\Admin()
17
+      */
18
+     protected static $instance = null;
19
+
20
+     /**
21
+      * The post relation fields
22
+      *
23
+      * @var array
24
+      */
25
+     public $connections = array();
26
+
27
+     /**
28
+      * Stores the previous values needed to remove the post relations
29
+      *
30
+      * @var array
31
+      */
32
+     public $previous_values = array();
33
+
34
+     /**
35
+      * @var object \lsx_health_plan\classes\admin\Settings();
36
+      */
37
+     public $settings;
38
+
39
+     /**
40
+      * @var object \lsx_health_plan\classes\admin\Help_Page();
41
+      */
42
+     public $help;
43
+
44
+     /**
45
+      * Holds the settings page theme functions
46
+      *
47
+      * @var object \lsx_health_plan\classes\admin\Settings_Theme();
48
+      */
49
+     public $settings_theme;
50
+
51
+     /**
52
+      * Contructor
53
+      */
54
+     public function __construct() {
55
+          $this->load_classes();
56
+          add_action( 'admin_menu', array( $this, 'order_menus' ), 200 );
57
+          add_action( 'admin_enqueue_scripts', array( $this, 'assets' ) );
58
+          add_filter( 'cmb2_override_meta_save', array( $this, 'save_previous_values' ), 20, 4 );
59
+          add_filter( 'cmb2_override_meta_remove', array( $this, 'save_previous_values' ), 20, 4 );
60
+          add_action( 'cmb2_save_field', array( $this, 'post_relations' ), 20, 4 );
61
+          add_action( 'cmb2_save_field', array( $this, 'create_query_fields' ), 20, 4 );
62
+          add_action( 'before_delete_post', array( $this, 'delete_post_meta_connections' ), 20, 1 );
63
+          add_action( 'cmb2_save_post_fields', array( $this, 'extract_plan_fields' ), 10, 4 );
64
+
65
+          // Customizer.
66
+          add_filter( 'lsx_customizer_colour_selectors_body', array( $this, 'customizer_body_colours_handler' ), 15, 2 );
67
+     }
68
+
69
+     /**
70
+      * Return an instance of this class.
71
+      *
72
+      * @return object \lsx\member_directory\classes\Admin()    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
+     /**
83
+      * Loads the admin subclasses
84
+      */
85
+     private function load_classes() {
86
+          require_once LSX_HEALTH_PLAN_PATH . 'classes/admin/class-settings.php';
87
+          $this->settings = admin\Settings::get_instance();
88
+
89
+          require_once LSX_HEALTH_PLAN_PATH . 'classes/admin/class-help-page.php';
90
+          $this->help = admin\Help_Page::get_instance();
91
+
92
+          require_once LSX_HEALTH_PLAN_PATH . 'classes/admin/class-settings-theme.php';
93
+          $this->settings_theme = admin\Settings_Theme::get_instance();
94
+     }
95
+
96
+     /**
97
+      * Orders the HP menu Items
98
+      *
99
+      * @return void
100
+      */
101
+     public function order_menus() {
102
+          global $menu, $submenu;
103
+          if ( ! empty( $submenu ) ) {
104
+               $parent_check = array(
105
+                    'edit.php?post_type=plan',
106
+                    'edit.php?post_type=workout',
107
+                    'edit.php?post_type=meal',
108
+               );
109
+               foreach ( $submenu as $menu_id => $menu_values ) {
110
+                    if ( in_array( $menu_id, $parent_check ) ) {
111
+                         foreach ( $menu_values as $sub_menu_key => $sub_menu_values ) {
112
+                              switch ( $sub_menu_values[0] ) {
113
+
114
+                                   case __( 'Add New', 'lsx-health-plan' ):
115
+                                        unset( $submenu[ $menu_id ][ $sub_menu_key ] );
116
+                                        break;
117
+
118
+                                   case __( 'All', 'lsx-health-plan' ):
119
+                                        $title = $sub_menu_values[0];
120
+                                        // Check and change the label.
121
+                                        switch ( $sub_menu_values[2] ) {
122
+                                             case 'edit.php?post_type=meal':
123
+                                                  $title = esc_attr__( 'Meals', 'lsx-health-plan' );
124
+                                                  break;
125
+
126
+                                             case 'edit.php?post_type=recipe':
127
+                                                  $title = esc_attr__( 'Recipes', 'lsx-health-plan' );
128
+                                                  break;
129
+
130
+                                             case 'edit.php?post_type=workout':
131
+                                                  $title = esc_attr__( 'Workouts', 'lsx-health-plan' );
132
+                                                  break;
133
+
134
+                                             case 'edit.php?post_type=plan':
135
+                                                  $title = esc_attr__( 'Plans', 'lsx-health-plan' );
136
+                                                  break;
137
+
138
+                                             case 'edit.php?post_type=video':
139
+                                                  $title = esc_attr__( 'Videos', 'lsx-health-plan' );
140
+                                                  break;
141
+
142
+                                             case 'edit.php?post_type=exercise':
143
+                                                  $title = esc_attr__( 'Exercises', 'lsx-health-plan' );
144
+                                                  break;
145
+
146
+                                             case 'edit.php?post_type=tip':
147
+                                                  $title = esc_attr__( 'Tips', 'lsx-health-plan' );
148
+                                                  break;
149
+
150
+                                             default:
151
+                                                  break;
152
+                                        }
153
+                                        $submenu[ $menu_id ][ $sub_menu_key ][0] = $title; // @codingStandardsIgnoreLine
154
+                                        break;
155
+
156
+                                   default:
157
+                                        break;
158
+                              }
159
+                         }
160
+                    }
161
+               }
162
+          }
163
+     }
164
+
165
+     /**
166
+      * Undocumented function
167
+      *
168
+      * @return void
169
+      */
170
+     public function assets() {
171
+          wp_enqueue_script( 'media-upload' );
172
+          wp_enqueue_script( 'thickbox' );
173
+          wp_enqueue_style( 'thickbox' );
174
+
175
+          wp_enqueue_script( 'lsx-health-plan-admin', LSX_HEALTH_PLAN_URL . 'assets/js/lsx-health-plan-admin.min.js', array( 'jquery' ), LSX_HEALTH_PLAN_VER, true );
176
+          wp_enqueue_style( 'lsx-health-plan-admin', LSX_HEALTH_PLAN_URL . 'assets/css/lsx-health-plan-admin.css', array(), LSX_HEALTH_PLAN_VER );
177
+     }
178
+
179
+     /**
180
+      * Returns the registered connections.
181
+      *
182
+      * @return void
183
+      */
184
+     public function get_connections() {
185
+          return apply_filters( 'lsx_health_plan_connections', $this->connections );
186
+     }
187
+
188
+     /**
189
+      * Saves the previous values before they are overwritten by the new ones.
190
+      *
191
+      * @param [type] $value_to_save
192
+      * @param [type] $a
193
+      * @param [type] $args
194
+      * @param [type] $cmb2
195
+      * @return void
196
+      */
197
+     public function save_previous_values( $value_to_save, $a, $args, $cmb2 ) {
198
+          if ( isset( $cmb2->data_to_save['ID'] ) ) {
199
+               $connections = $this->get_connections();
200
+               $post_type   = get_post_type( $cmb2->data_to_save['ID'] );
201
+               if ( isset( $connections[ $post_type ] ) && array_key_exists( $a['field_id'], $connections[ $post_type ] ) ) {
202
+                    // Get the previous values if the field, so we can run through them and remove the current ID from them later.
203
+                    $this->previous_values = get_post_meta( $a['id'], $a['field_id'], true );
204
+               }
205
+          }
206
+          return $value_to_save;
207
+     }
208
+
209
+     /**
210
+      * Sets up the "post relations"
211
+      *
212
+      * @return    void
213
+      */
214
+     public function post_relations( $field_id, $updated, $action, $cmb2 ) {
215
+          // If the connections are empty then skip this function.
216
+          $connections = $this->get_connections();
217
+          if ( empty( $connections ) ) {
218
+               return;
219
+          }
220
+
221
+          // If the field has been updated.
222
+          if ( isset( $cmb2->data_to_save['ID'] ) ) {
223
+               $post_type = get_post_type( $cmb2->data_to_save['ID'] );
224
+               if ( isset( $connections[ $post_type ] ) && array_key_exists( $field_id, $connections[ $post_type ] ) ) {
225
+                    $saved_values = get_post_meta( $cmb2->data_to_save['ID'], $field_id, true );
226
+
227
+                    if ( 'updated' === $action ) {
228
+                         $this->add_connected_posts( $saved_values, $cmb2->data_to_save['ID'], $connections[ $post_type ][ $field_id ] );
229
+                         // Check if any posts have been removed.
230
+                         if ( count( $this->previous_values ) > count( $saved_values ) ) {
231
+                              $posts_to_remove = array_diff( $this->previous_values, $saved_values );
232
+                              if ( ! empty( $posts_to_remove ) ) {
233
+                                   $this->remove_connected_posts( $posts_to_remove, $cmb2->data_to_save['ID'], $connections[ $post_type ][ $field_id ] );
234
+                              }
235
+                         }
236
+                    } else if ( 'removed' === $action && ! empty( $this->previous_values ) ) {
237
+                         $this->remove_connected_posts( $this->previous_values, $cmb2->data_to_save['ID'], $connections[ $post_type ][ $field_id ] );
238
+                    }
239
+               }
240
+          }
241
+     }
242
+
243
+     /**
244
+      * Updates the connected posts witht he current post ID
245
+      *
246
+      * @param [type] $values
247
+      * @param [type] $current_id
248
+      * @param [type] $connected_key
249
+      * @return void
250
+      */
251
+     public function add_connected_posts( $values, $current_id, $connected_key ) {
252
+          foreach ( $values as $value ) {
253
+               $current_post_array = get_post_meta( $value, $connected_key, true );
254
+               $previous_values    = $current_post_array;
255
+
256
+               if ( ! empty( $current_post_array ) ) {
257
+                    $current_post_array = array_map( 'strval', $current_post_array );
258
+                    array_unique( $current_post_array );
259
+               }
260
+
261
+               // If the current connected post has no saved connections then we create it.
262
+               if ( false === $current_post_array || empty( $current_post_array ) ) {
263
+                    $current_post_array = array( $current_id );
264
+               } elseif ( ! in_array( (string) $current_id, $current_post_array, true ) ) {
265
+                    $current_post_array[] = $current_id;
266
+               }
267
+
268
+               // Check if the values are empty, if not update them.
269
+               if ( ! empty( $current_post_array ) ) {
270
+                    update_post_meta( $value, $connected_key, $current_post_array, $previous_values );
271
+               }
272
+          }
273
+     }
274
+
275
+     /**
276
+      * Removes the post ID from the connected posts.
277
+      *
278
+      * @param [type] $values
279
+      * @param [type] $current_ID
280
+      * @param [type] $connected_key
281
+      * @return void
282
+      */
283
+     public function remove_connected_posts( $values, $current_ID, $connected_key ) {
284
+          foreach ( $values as $value ) {
285
+               $current_post_array = get_post_meta( $value, $connected_key, true );
286
+               $new_array          = array();
287
+               // Loop through only if the current ID has been saved against the post.
288
+               if ( in_array( $current_ID, $current_post_array, false ) ) {
289
+
290
+                    // Loop through all the connected saved IDS.
291
+                    foreach ( $current_post_array as $cpa ) {
292
+                         if ( (int) $cpa !== (int) $current_ID ) {
293
+                              $new_array[] = $cpa;
294
+                         }
295
+                    }
296
+                    if ( ! empty( $new_array ) ) {
297
+                         $new_array = array_unique( $new_array );
298
+                         delete_post_meta( $value, $connected_key );
299
+                         add_post_meta( $value, $connected_key, $new_array, true );
300
+                    } else {
301
+                         delete_post_meta( $value, $connected_key );
302
+                    }
303
+               }
304
+          }
305
+     }
306
+
307
+     /**
308
+      * Runs on 'before_delete_post' to run through and remove this post ID from its connected values.
309
+      *
310
+      * @param string $item_id
311
+      * @return void
312
+      */
313
+     public function delete_post_meta_connections( $item_id = '' ) {
314
+          if ( '' !== $item_id ) {
315
+               $post_type   = get_post_type( $item_id );
316
+               $connections = $this->get_connections();
317
+               if ( isset( $connections[ $post_type ] ) && ! empty( $connections[ $post_type ] ) && is_array( $connections[ $post_type ] ) ) {
318
+                    foreach ( $connections[ $post_type ] as $this_key => $connected_key ) {
319
+                         $this->delete_connected_items( $item_id, $this_key, $connected_key );
320
+                    }
321
+               }
322
+          }
323
+     }
324
+
325
+     /**
326
+      * This function will remvoe the post id fomr its connected posts.
327
+      *
328
+      * @param string $item_id
329
+      * @param string $this_key
330
+      * @param string $connected_key
331
+      * @return void
332
+      */
333
+     public function delete_connected_items( $item_id = '', $this_key, $connected_key ) {
334
+          if ( '' !== $item_id ) {
335
+               $connected_items = get_post_meta( $item_id, $this_key, true );
336
+               if ( ! empty( $connected_items ) ) {
337
+                    foreach ( $connected_items as $con_id ) {
338
+                         // Get the connected item array from the connected item.
339
+                         $their_connections = get_post_meta( $con_id, $connected_key, true );
340
+                         if ( ! empty( $their_connections ) ) {
341
+                              $new_connections = $their_connections;
342
+                              // Run through the array and remove the post to be deleteds ID.
343
+                              foreach ( $their_connections as $ckey => $cvalue ) {
344
+                                   if ( (int) $item_id === (int) $cvalue ) {
345
+                                        unset( $new_connections[ $ckey ] );
346
+                                   }
347
+                              }
348
+                              // Now we save the field.
349
+                              update_post_meta( $con_id, $connected_key, $new_connections, $their_connections );
350
+                         }
351
+                    }
352
+               }
353
+          }
354
+     }
355
+
356
+     /**
357
+      * Saves the serialized post ids in singular custom fields so they are easily queried using WP_Query
358
+      *
359
+      * @return    void
360
+      */
361
+     public function create_query_fields( $field_id, $updated, $action, $cmb2 ) {
362
+          // If the connections are empty then skip this function.
363
+          $search_fields = array(
364
+               'plan_product',
365
+          );
366
+          if ( ! in_array( $field_id, $search_fields ) ) {
367
+               return;
368
+          }
369
+
370
+          // If the field has been updated.
371
+          if ( isset( $cmb2->data_to_save['ID'] ) && isset( $cmb2->data_to_save[ $field_id . '_results' ] ) && ! empty( $cmb2->data_to_save[ $field_id . '_results' ] ) ) {
372
+               delete_post_meta( $cmb2->data_to_save['ID'], '_' . $field_id . '_id' );
373
+               foreach ( $cmb2->data_to_save[ $field_id . '_results' ] as $temp ) {
374
+                    add_post_meta( $cmb2->data_to_save['ID'], '_' . $field_id . '_id', $temp, false );
375
+               }
376
+          }
377
+     }
378
+
379
+     /**
380
+      * Extract the plan fields so they save to an indexable array.
381
+      *
382
+      * @param [type] $object_id
383
+      * @param [type] $cmb_id
384
+      * @param [type] $updated
385
+      * @param [type] $cmb2
386
+      * @return void
387
+      */
388
+     public function extract_plan_fields( $object_id, $cmb_id, $updated, $cmb2 ) {
389
+          if ( 'plan_sections_metabox' === $cmb_id ) {
390
+               // Check if our fields are available, and cycle through them.
391
+               if ( isset( $cmb2->data_to_save['plan_sections'] ) && ! empty( $cmb2->data_to_save['plan_sections'] ) ) {
392
+                    $fields_to_save = array();
393
+                    // Run through each row of fields.
394
+                    foreach ( $cmb2->data_to_save['plan_sections'] as $field_index => $fields ) {
395
+                         // Run through each field in that section.
396
+                         foreach ( $fields as $field_key => $field_value ) {
397
+                              $stored_values_key = 'plan_sections_' . $field_index . '_' . $field_key . '_store';
398
+                              if ( isset( $cmb2->data_to_save[ $stored_values_key ] ) && ! empty( $cmb2->data_to_save[ $stored_values_key ] ) ) {
399
+                                   $stored_values = $cmb2->data_to_save[ $stored_values_key ];
400
+                                   $stored_values = explode( ',', $stored_values );
401
+                                   foreach ( $stored_values as $id_to_save ) {
402
+                                        $fields_to_save[ $field_key ][] = $id_to_save;
403
+                                   }
404
+                              }
405
+                         }
406
+                    }
407
+                    $this->save_field_array( $object_id, $fields_to_save );
408
+               }
409
+          }
410
+     }
411
+
412
+     /**
413
+      * Runs through the supplied array and saved the fields to the current Object.
414
+      *
415
+      * @param integer $object_id
416
+      * @param array   $fields_to_save
417
+      * @return void
418
+      */
419
+     public function save_field_array( $object_id = 0, $fields_to_save = array() ) {
420
+
421
+          // Run through the fields and save the meta items.
422
+          if ( ! empty( $fields_to_save ) ) {
423
+               foreach ( $fields_to_save as $field_key => $field_values ) {
424
+                    delete_post_meta( $object_id, $field_key );
425
+
426
+                    $field_values = array_unique( $field_values );
427
+                    foreach ( $field_values as $field_value ) {
428
+                         add_post_meta( $object_id, $field_key, $field_value, false );
429
+                    }
430
+               }
431
+          }
432
+     }
433
+
434
+     /**
435
+      * Handle body colours that might be change by LSX Customizer.
436
+      */
437
+     public function customizer_body_colours_handler( $css, $colors ) {
438
+          $css .= '
439 439
 			@import "' . LSX_HEALTH_PLAN_PATH . '/assets/css/scss/partials/customizer-health-plan-body-colours";
440 440
 
441 441
 			/**
@@ -451,6 +451,6 @@  discard block
 block discarded – undo
451 451
 			);
452 452
 		';
453 453
 
454
-		return $css;
455
-	}
454
+          return $css;
455
+     }
456 456
 }
Please login to merge, or discard this patch.
classes/class-setup.php 1 patch
Indentation   +72 added lines, -72 removed lines patch added patch discarded remove patch
@@ -8,86 +8,86 @@
 block discarded – undo
8 8
  */
9 9
 class Setup {
10 10
 
11
-	/**
12
-	 * Holds class instance
13
-	 *
14
-	 * @since 1.0.0
15
-	 *
16
-	 * @var      object \lsx_health_plan\classes\Setup()
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\Setup()
17
+      */
18
+     protected static $instance = null;
19 19
 
20
-	/**
21
-	 * @var object \lsx_health_plan\classes\Post_Type();
22
-	 */
23
-	public $post_types;
20
+     /**
21
+      * @var object \lsx_health_plan\classes\Post_Type();
22
+      */
23
+     public $post_types;
24 24
 
25
-	/**
26
-	 * Contructor
27
-	 */
28
-	public function __construct() {
29
-		add_action( 'init', array( $this, 'load_plugin_textdomain' ) );
30
-		add_action( 'wp_head', array( $this, 'load_shortcodes' ) );
31
-		$this->load_classes();
32
-	}
25
+     /**
26
+      * Contructor
27
+      */
28
+     public function __construct() {
29
+          add_action( 'init', array( $this, 'load_plugin_textdomain' ) );
30
+          add_action( 'wp_head', array( $this, 'load_shortcodes' ) );
31
+          $this->load_classes();
32
+     }
33 33
 
34
-	/**
35
-	 * Return an instance of this class.
36
-	 *
37
-	 * @since 1.0.0
38
-	 *
39
-	 * @return    object \lsx_health_plan\classes\Setup()    A single instance of this class.
40
-	 */
41
-	public static function get_instance() {
34
+     /**
35
+      * Return an instance of this class.
36
+      *
37
+      * @since 1.0.0
38
+      *
39
+      * @return    object \lsx_health_plan\classes\Setup()    A single instance of this class.
40
+      */
41
+     public static function get_instance() {
42 42
 
43
-		// If the single instance hasn't been set, set it now.
44
-		if ( null === self::$instance ) {
45
-			self::$instance = new self();
46
-		}
43
+          // If the single instance hasn't been set, set it now.
44
+          if ( null === self::$instance ) {
45
+               self::$instance = new self();
46
+          }
47 47
 
48
-		return self::$instance;
48
+          return self::$instance;
49 49
 
50
-	}
50
+     }
51 51
 
52
-	/**
53
-	 * Adds text domain.
54
-	 */
55
-	public function load_plugin_textdomain() {
56
-		load_plugin_textdomain( 'lsx-health-plan', false, basename( LSX_HEALTH_PLAN_PATH ) . '/languages' );
57
-	}
52
+     /**
53
+      * Adds text domain.
54
+      */
55
+     public function load_plugin_textdomain() {
56
+          load_plugin_textdomain( 'lsx-health-plan', false, basename( LSX_HEALTH_PLAN_PATH ) . '/languages' );
57
+     }
58 58
 
59
-	/**
60
-	 * Registers our shortcodes.
61
-	 *
62
-	 * @return void
63
-	 */
64
-	public function load_classes() {
65
-		require_once LSX_HEALTH_PLAN_PATH . 'classes/class-post-type.php';
66
-		$this->post_types = Post_Type::get_instance();
67
-	}
59
+     /**
60
+      * Registers our shortcodes.
61
+      *
62
+      * @return void
63
+      */
64
+     public function load_classes() {
65
+          require_once LSX_HEALTH_PLAN_PATH . 'classes/class-post-type.php';
66
+          $this->post_types = Post_Type::get_instance();
67
+     }
68 68
 
69
-	/**
70
-	 * Registers our shortcodes.
71
-	 *
72
-	 * @return void
73
-	 */
74
-	public function load_shortcodes() {
75
-		add_shortcode( 'lsx_health_plan_restricted_content', '\lsx_health_plan\shortcodes\restricted_content' );
76
-		add_shortcode( 'lsx_health_plan_my_profile_tabs', '\lsx_health_plan\shortcodes\my_profile_tabs' );
77
-		add_shortcode( 'lsx_health_plan_my_profile_block', '\lsx_health_plan\shortcodes\my_profile_box' );
78
-		add_shortcode( 'lsx_health_plan_all_plans_block', '\lsx_health_plan\shortcodes\all_plans_box' );
79
-		add_shortcode( 'lsx_health_plan_day_plan_block', '\lsx_health_plan\shortcodes\day_plan_box' );
80
-		add_shortcode( 'lsx_health_plan_account_notices', '\lsx_health_plan\shortcodes\account_notices' );
69
+     /**
70
+      * Registers our shortcodes.
71
+      *
72
+      * @return void
73
+      */
74
+     public function load_shortcodes() {
75
+          add_shortcode( 'lsx_health_plan_restricted_content', '\lsx_health_plan\shortcodes\restricted_content' );
76
+          add_shortcode( 'lsx_health_plan_my_profile_tabs', '\lsx_health_plan\shortcodes\my_profile_tabs' );
77
+          add_shortcode( 'lsx_health_plan_my_profile_block', '\lsx_health_plan\shortcodes\my_profile_box' );
78
+          add_shortcode( 'lsx_health_plan_all_plans_block', '\lsx_health_plan\shortcodes\all_plans_box' );
79
+          add_shortcode( 'lsx_health_plan_day_plan_block', '\lsx_health_plan\shortcodes\day_plan_box' );
80
+          add_shortcode( 'lsx_health_plan_account_notices', '\lsx_health_plan\shortcodes\account_notices' );
81 81
 
82
-		if ( post_type_exists( 'video' ) ) {
83
-			add_shortcode( 'lsx_health_plan_featured_video_block', '\lsx_health_plan\shortcodes\feature_video_box' );
84
-		}
85
-		if ( post_type_exists( 'recipe' ) ) {
86
-			add_shortcode( 'lsx_health_plan_featured_recipes_block', '\lsx_health_plan\shortcodes\feature_recipes_box' );
87
-		}
88
-		if ( post_type_exists( 'tip' ) ) {
89
-			add_shortcode( 'lsx_health_plan_featured_tips_block', '\lsx_health_plan\shortcodes\feature_tips_box' );
90
-		}
91
-		add_shortcode( 'lsx_health_plan_items', '\lsx_health_plan\shortcodes\exercise_box' );
92
-	}
82
+          if ( post_type_exists( 'video' ) ) {
83
+               add_shortcode( 'lsx_health_plan_featured_video_block', '\lsx_health_plan\shortcodes\feature_video_box' );
84
+          }
85
+          if ( post_type_exists( 'recipe' ) ) {
86
+               add_shortcode( 'lsx_health_plan_featured_recipes_block', '\lsx_health_plan\shortcodes\feature_recipes_box' );
87
+          }
88
+          if ( post_type_exists( 'tip' ) ) {
89
+               add_shortcode( 'lsx_health_plan_featured_tips_block', '\lsx_health_plan\shortcodes\feature_tips_box' );
90
+          }
91
+          add_shortcode( 'lsx_health_plan_items', '\lsx_health_plan\shortcodes\exercise_box' );
92
+     }
93 93
 }
Please login to merge, or discard this patch.
lsx-health-plan.php 1 patch
Indentation   +20 added lines, -20 removed lines patch added patch discarded remove patch
@@ -13,7 +13,7 @@  discard block
 block discarded – undo
13 13
 
14 14
 // If this file is called directly, abort.
15 15
 if ( ! defined( 'WPINC' ) ) {
16
-	die;
16
+     die;
17 17
 }
18 18
 define( 'LSX_HEALTH_PLAN_PATH', plugin_dir_path( __FILE__ ) );
19 19
 define( 'LSX_HEALTH_PLAN_CORE', __FILE__ );
@@ -30,12 +30,12 @@  discard block
 block discarded – undo
30 30
  * @return void
31 31
  */
32 32
 function lsx_remove_extra_meta_box() {
33
-	global $wp_meta_boxes;
34
-	$all_post_types = [ 'plan', 'video', 'workout', 'tip', 'recipe', 'meal' ];
35
-	//remove_meta_box( 'wpseo_meta', $all_post_types, 'normal' );
36
-	remove_meta_box( 'commentsdiv', $all_post_types, 'normal' );
37
-	remove_meta_box( 'commentstatusdiv', $all_post_types, 'normal' );
38
-	remove_meta_box( 'lsx_blocks_title_meta', $all_post_types, 'side' );
33
+     global $wp_meta_boxes;
34
+     $all_post_types = [ 'plan', 'video', 'workout', 'tip', 'recipe', 'meal' ];
35
+     //remove_meta_box( 'wpseo_meta', $all_post_types, 'normal' );
36
+     remove_meta_box( 'commentsdiv', $all_post_types, 'normal' );
37
+     remove_meta_box( 'commentstatusdiv', $all_post_types, 'normal' );
38
+     remove_meta_box( 'lsx_blocks_title_meta', $all_post_types, 'side' );
39 39
 }
40 40
 add_action( 'add_meta_boxes', 'lsx_remove_extra_meta_box', 100 );
41 41
 
@@ -45,11 +45,11 @@  discard block
 block discarded – undo
45 45
  * @return void
46 46
  */
47 47
 function lsx_login_redirect() {
48
-	$plan_slug = \lsx_health_plan\functions\get_option( 'my_plan_slug', false );
49
-	if ( false === $plan_slug ) {
50
-		$plan_slug = 'my-plan';
51
-	}
52
-	return home_url( $plan_slug );
48
+     $plan_slug = \lsx_health_plan\functions\get_option( 'my_plan_slug', false );
49
+     if ( false === $plan_slug ) {
50
+          $plan_slug = 'my-plan';
51
+     }
52
+     return home_url( $plan_slug );
53 53
 }
54 54
 add_filter( 'woocommerce_login_redirect', 'lsx_login_redirect' );
55 55
 
@@ -59,7 +59,7 @@  discard block
 block discarded – undo
59 59
  * @return object lsx_health_plan\classes\Core::get_instance();
60 60
  */
61 61
 function lsx_health_plan() {
62
-	return \lsx_health_plan\classes\Core::get_instance();
62
+     return \lsx_health_plan\classes\Core::get_instance();
63 63
 }
64 64
 lsx_health_plan();
65 65
 
@@ -69,13 +69,13 @@  discard block
 block discarded – undo
69 69
  * @return void
70 70
  */
71 71
 function lsx_get_svg_icon( $icon ) {
72
-	$path = '/assets/images/';
72
+     $path = '/assets/images/';
73 73
 
74
-	if ( file_exists( LSX_HEALTH_PLAN_PATH . $path . $icon ) ) {
75
-		// Load and return the contents of the file
76
-		return include LSX_HEALTH_PLAN_PATH . $path . $icon;
77
-	}
74
+     if ( file_exists( LSX_HEALTH_PLAN_PATH . $path . $icon ) ) {
75
+          // Load and return the contents of the file
76
+          return include LSX_HEALTH_PLAN_PATH . $path . $icon;
77
+     }
78 78
 
79
-	// Return a blank string if we can't find the file.
80
-	return '';
79
+     // Return a blank string if we can't find the file.
80
+     return '';
81 81
 }
Please login to merge, or discard this patch.
classes/admin/class-settings.php 1 patch
Indentation   +684 added lines, -684 removed lines patch added patch discarded remove patch
@@ -12,688 +12,688 @@
 block discarded – undo
12 12
  */
13 13
 class Settings {
14 14
 
15
-	/**
16
-	 * Holds class instance
17
-	 *
18
-	 * @since 1.0.0
19
-	 *
20
-	 * @var      object \lsx_health_plan\classes\admin\Settings()
21
-	 */
22
-	protected static $instance = null;
23
-
24
-	/**
25
-	 * Option key, and option page slug
26
-	 *
27
-	 * @var string
28
-	 */
29
-	protected $screen_id = 'lsx_health_plan_settings';
30
-
31
-	/**
32
-	 * An array of the post types for the Global Downloads field.
33
-	 *
34
-	 * @var array
35
-	 */
36
-	public $download_types = array();
37
-
38
-	/**
39
-	 * An array of the post types for the Global Defaults field.
40
-	 *
41
-	 * @var array
42
-	 */
43
-	public $default_types = array();
44
-
45
-	/**
46
-	 * An array of the endpoints for the Endpoint Translation field.
47
-	 *
48
-	 * @var array
49
-	 */
50
-	public $endpoints = array();
51
-
52
-	/**
53
-	 * Constructor
54
-	 */
55
-	public function __construct() {
56
-		$this->load_classes();
57
-		add_action( 'cmb2_admin_init', array( $this, 'register_settings_page' ) );
58
-		add_action( 'lsx_hp_settings_page', array( $this, 'generate_tabs' ), 1, 1 );
59
-
60
-		add_action( 'lsx_hp_settings_page_general_top', array( $this, 'general_settings' ), 1, 1 );
61
-		add_action( 'lsx_hp_settings_page', array( $this, 'global_defaults' ), 3, 1 );
62
-		add_action( 'lsx_hp_settings_page', array( $this, 'global_downloads' ), 5, 1 );
63
-		add_action( 'lsx_hp_settings_page', array( $this, 'stat_disable' ), 6, 1 );
64
-		add_action( 'lsx_hp_settings_page', array( $this, 'endpoint_translations' ), 7, 1 );
65
-		add_action( 'lsx_hp_settings_page', array( $this, 'exercise_translations' ), 7, 1 );
66
-		add_action( 'lsx_hp_settings_page', array( $this, 'post_type_toggles' ), 9, 1 );
67
-	}
68
-
69
-	/**
70
-	 * Return an instance of this class.
71
-	 *
72
-	 * @since 1.0.0
73
-	 *
74
-	 * @return    object \lsx_health_plan\classes\admin\Settings()    A single instance of this class.
75
-	 */
76
-	public static function get_instance() {
77
-		// If the single instance hasn't been set, set it now.
78
-		if ( null === self::$instance ) {
79
-			self::$instance = new self();
80
-		}
81
-		return self::$instance;
82
-	}
83
-
84
-	/**
85
-	 * Loads the variable classes and the static classes.
86
-	 */
87
-	private function load_classes() {
88
-
89
-		$this->post_types = array(
90
-			'plan',
91
-			'workout',
92
-			'exercise',
93
-			//'meal',
94
-			'recipe',
95
-			//'tip',
96
-		);
97
-
98
-		foreach ( $this->post_types as $post_type ) {
99
-			$this->$post_type = require_once LSX_HEALTH_PLAN_PATH . 'classes/admin/settings/class-' . $post_type . '.php';
100
-		}
101
-	}
102
-
103
-	/**
104
-	 * Sets the variables needed for the fields.
105
-	 *
106
-	 * @return void
107
-	 */
108
-	public function set_vars() {
109
-
110
-		$this->default_types  = array(
111
-			'page' => array(
112
-				'title'       => __( 'Warm Up', 'lsx-health-plan' ),
113
-				'description' => __( 'Set a default warm up routine.', 'lsx-health-plan' ),
114
-				'limit'       => 1,
115
-				'id'          => 'plan_warmup',
116
-			),
117
-		);
118
-		$this->download_types = array(
119
-			'page' => array(
120
-				'title'       => __( 'Warm Up', 'lsx-health-plan' ),
121
-				'description' => __( 'Set a default warm up routine.', 'lsx-health-plan' ),
122
-				'limit'       => 1,
123
-			),
124
-		);
125
-		$this->endpoints      = array(
126
-			'endpoint_warm_up' => array(
127
-				'title'       => __( 'Warm Up Endpoint', 'lsx-health-plan' ),
128
-				'default'     => 'warm-up',
129
-			),
130
-		);
131
-
132
-		if ( post_type_exists( 'meal' ) ) {
133
-			$this->download_types['meal']     = array(
134
-				'title'       => __( 'Meal Plan', 'lsx-health-plan' ),
135
-				'description' => __( 'Set a default meal plan.', 'lsx-health-plan' ),
136
-			);
137
-			$this->default_types['meal']      = array(
138
-				'title'       => __( 'Meal Plan', 'lsx-health-plan' ),
139
-				'description' => __( 'Set a default meal plan.', 'lsx-health-plan' ),
140
-				'id'          => 'connected_meals',
141
-			);
142
-			$this->endpoints['endpoint_meal'] = array(
143
-				'title'       => __( 'Meal Endpoint', 'lsx-health-plan' ),
144
-				'default'     => 'meal',
145
-				'description' => __( 'Define the tab slug which shows on the single plan page.', 'lsx-health-plan' ),
146
-			);
147
-			$this->endpoints['endpoint_meal_archive'] = array(
148
-				'title'   => __( 'Meals Archive Endpoint', 'lsx-health-plan' ),
149
-				'default' => 'meals',
150
-			);
151
-			$this->endpoints['meal_single_slug'] = array(
152
-				'title'   => __( 'Single Meal Slug', 'lsx-health-plan' ),
153
-				'default' => 'meal',
154
-			);
155
-		}
156
-		if ( post_type_exists( 'recipe' ) ) {
157
-			$this->download_types['recipe'] = array(
158
-				'title'       => __( 'Recipe', 'lsx-health-plan' ),
159
-				'description' => __( 'Set a default recipe.', 'lsx-health-plan' ),
160
-			);
161
-			$this->default_types['recipe'] = array(
162
-				'title'       => __( 'Recipe', 'lsx-health-plan' ),
163
-				'description' => __( 'Set a default recipe.', 'lsx-health-plan' ),
164
-				'id'          => 'connected_recipes',
165
-			);
166
-			$this->endpoints['endpoint_recipe'] = array(
167
-				'title'   => __( 'Recipes Endpoint', 'lsx-health-plan' ),
168
-				'default' => 'recipe',
169
-			);
170
-		}
171
-		if ( post_type_exists( 'workout' ) ) {
172
-			$this->download_types['workout'] = array(
173
-				'title'       => __( 'Workout', 'lsx-health-plan' ),
174
-				'description' => __( 'Set a default workout routine PDF.', 'lsx-health-plan' ),
175
-			);
176
-			$this->default_types['workout'] = array(
177
-				'title'       => __( 'Workout', 'lsx-health-plan' ),
178
-				'description' => __( 'Set a default workout routine.', 'lsx-health-plan' ),
179
-				'id'          => 'connected_workouts',
180
-			);
181
-			$this->endpoints['endpoint_workout_archive'] = array(
182
-				'title'   => __( 'Workouts Archive Endpoint', 'lsx-health-plan' ),
183
-				'default' => '',
184
-			);
185
-			$this->endpoints['endpoint_workout'] = array(
186
-				'title'   => __( 'Single Workout Endpoint', 'lsx-health-plan' ),
187
-				'default' => 'workout',
188
-			);
189
-		}
190
-
191
-		$this->endpoints['login_slug'] = array(
192
-			'title'   => __( 'Login Slug', 'lsx-health-plan' ),
193
-			'default' => 'login',
194
-		);
195
-		$this->endpoints['my_plan_slug'] = array(
196
-			'title'   => __( 'My Plan Slug', 'lsx-health-plan' ),
197
-			'default' => 'my-plan',
198
-		);
199
-		$this->endpoints['plan_single_slug'] = array(
200
-			'title'   => __( 'Single Plan Slug', 'lsx-health-plan' ),
201
-			'default' => 'plan',
202
-		);
203
-		$this->endpoints['endpoint_plan_archive'] = array(
204
-			'title'   => __( 'Plans Archive Endpoint', 'lsx-health-plan' ),
205
-			'default' => 'plans',
206
-		);
207
-
208
-		if ( false !== \lsx_health_plan\functions\get_option( 'exercise_enabled', false ) ) {
209
-			$this->endpoints['exercise'] = array(
210
-				'exercise_single' => array(
211
-					'title'   => __( 'Single Exercise Slug', 'lsx-health-plan' ),
212
-					'default' => 'exercise',
213
-				),
214
-				'exercise_archive' => array(
215
-					'title'   => __( 'Archive Exercise Slug', 'lsx-health-plan' ),
216
-					'default' => 'exercises',
217
-				),
218
-				'exercise_type' => array(
219
-					'title'   => __( 'Exercise Type Slug', 'lsx-health-plan' ),
220
-					'default' => 'exercise-type',
221
-				),
222
-				'exercise_equipment' => array(
223
-					'title'   => __( 'Equipment Slug', 'lsx-health-plan' ),
224
-					'default' => 'equipment',
225
-				),
226
-				'exercise_musclegroup' => array(
227
-					'title'   => __( 'Muscle Group Slug', 'lsx-health-plan' ),
228
-					'default' => 'muscle-group',
229
-				),
230
-			);
231
-		}
232
-	}
233
-
234
-	/**
235
-	 * Hook in and register a submenu options page for the Page post-type menu.
236
-	 */
237
-	public function register_settings_page() {
238
-		$this->set_vars();
239
-		$cmb = new_cmb2_box(
240
-			array(
241
-				'id'           => $this->screen_id,
242
-				'title'        => esc_html__( 'Settings', 'lsx-health-plan' ),
243
-				'object_types' => array( 'options-page' ),
244
-				'option_key'   => 'lsx_health_plan_options', // The option key and admin menu page slug.
245
-				'parent_slug'  => 'edit.php?post_type=plan', // Make options page a submenu item of the themes menu.
246
-				'capability'   => 'manage_options', // Cap required to view options-page.
247
-			)
248
-		);
249
-		do_action( 'lsx_hp_settings_page', $cmb );
250
-	}
251
-
252
-	/**
253
-	 * Registers the general settings.
254
-	 *
255
-	 * @param object $cmb new_cmb2_box().
256
-	 * @return void
257
-	 */
258
-	public function general_settings( $cmb ) {
259
-		$cmb->add_field(
260
-			array(
261
-				'name'       => __( 'Membership Product', 'lsx-health-plan' ),
262
-				'id'         => 'membership_product',
263
-				'type'       => 'post_search_ajax',
264
-				'limit'      => 1,
265
-				'sortable'   => false,
266
-				'query_args' => array(
267
-					'post_type'      => array( 'product' ),
268
-					'post_status'    => array( 'publish' ),
269
-					'posts_per_page' => -1,
270
-				),
271
-			)
272
-		);
273
-
274
-		$cmb->add_field(
275
-			array(
276
-				'name'    => __( 'Your Warm-up Intro', 'lsx-health-plan' ),
277
-				'id'      => 'warmup_intro',
278
-				'type'    => 'textarea_small',
279
-				'value'   => '',
280
-				'default' => __( "Don't forget your warm-up! It's a vital part of your daily workout routine.", 'lsx-health-plan' ),
281
-			)
282
-		);
283
-		if ( post_type_exists( 'workout' ) ) {
284
-			$cmb->add_field(
285
-				array(
286
-					'name'    => __( 'Your Workout Intro', 'lsx-health-plan' ),
287
-					'id'      => 'workout_intro',
288
-					'type'    => 'textarea_small',
289
-					'value'   => '',
290
-					'default' => __( "Let's do this! Smash your daily workout and reach your fitness goals.", 'lsx-health-plan' ),
291
-				)
292
-			);
293
-		}
294
-		if ( post_type_exists( 'meal' ) ) {
295
-			$cmb->add_field(
296
-				array(
297
-					'name'    => __( 'Your Meal Plan Intro', 'lsx-health-plan' ),
298
-					'id'      => 'meal_plan_intro',
299
-					'type'    => 'textarea_small',
300
-					'value'   => '',
301
-					'default' => __( 'Get the right mix of nutrients to keep muscles strong & healthy.', 'lsx-health-plan' ),
302
-				)
303
-			);
304
-		}
305
-		if ( post_type_exists( 'recipe' ) ) {
306
-			$cmb->add_field(
307
-				array(
308
-					'name'    => __( 'Recipes Intro', 'lsx-health-plan' ),
309
-					'id'      => 'recipes_intro',
310
-					'type'    => 'textarea_small',
311
-					'value'   => '',
312
-					'default' => __( "Let's get cooking! Delicious and easy to follow recipes.", 'lsx-health-plan' ),
313
-				)
314
-			);
315
-		}
316
-	}
317
-
318
-	/**
319
-	 * Registers the global default settings.
320
-	 *
321
-	 * @param object $cmb new_cmb2_box().
322
-	 * @return void
323
-	 */
324
-	public function global_defaults( $cmb ) {
325
-		$cmb->add_field(
326
-			array(
327
-				'id'      => 'global_defaults_title',
328
-				'type'    => 'title',
329
-				'name'    => __( 'Global Defaults', 'lsx-health-plan' ),
330
-				'default' => __( 'Global Defaults', 'lsx-health-plan' ),
331
-				'description' => __( 'If you have not connected a specific post to your day plan, set a default option below.', 'lsx-health-plan' ),
332
-			)
333
-		);
334
-
335
-		foreach ( $this->default_types as $type => $default_type ) {
336
-			$limit    = 5;
337
-			$sortable = false;
338
-			if ( isset( $default_type['limit'] ) ) {
339
-				$limit    = $default_type['limit'];
340
-				$sortable = true;
341
-			}
342
-
343
-			if ( 'page' === $type && false !== \lsx_health_plan\functions\get_option( 'exercise_enabled', false ) ) {
344
-				$type = array( 'page', 'workout' );
345
-			}
346
-
347
-			$cmb->add_field(
348
-				array(
349
-					'name'       => $default_type['title'],
350
-					'desc'       => $default_type['description'],
351
-					'id'         => $default_type['id'],
352
-					'type'       => 'post_search_ajax',
353
-					'limit'      => $limit,
354
-					'sortable'   => $sortable,
355
-					'query_args' => array(
356
-						'post_type'      => $type,
357
-						'post_status'    => array( 'publish' ),
358
-						'posts_per_page' => -1,
359
-					),
360
-				)
361
-			);
362
-		}
363
-
364
-		$cmb->add_field(
365
-			array(
366
-				'id'   => 'settings_global_defaults_closing',
367
-				'type' => 'tab_closing',
368
-			)
369
-		);
370
-	}
371
-
372
-	/**
373
-	 * Registers the global dowloads settings
374
-	 *
375
-	 * @param object $cmb new_cmb2_box().
376
-	 * @return void
377
-	 */
378
-	public function global_downloads( $cmb ) {
379
-		$cmb->add_field(
380
-			array(
381
-				'id'      => 'global_downloads_title',
382
-				'type'    => 'title',
383
-				'name'    => __( 'Global Downloads', 'lsx-health-plan' ),
384
-				'default' => __( 'Global Downloads', 'lsx-health-plan' ),
385
-			)
386
-		);
387
-
388
-		foreach ( $this->download_types as $type => $download_type ) {
389
-			$limit    = 5;
390
-			$sortable = false;
391
-			if ( isset( $download_type['limit'] ) ) {
392
-				$limit    = $download_type['limit'];
393
-				$sortable = true;
394
-			}
395
-
396
-			$cmb->add_field(
397
-				array(
398
-					'name'       => $download_type['title'],
399
-					'id'         => 'download_' . $type,
400
-					'type'       => 'post_search_ajax',
401
-					'limit'      => $limit,
402
-					'sortable'   => $sortable,
403
-					'query_args' => array(
404
-						'post_type'      => array( 'dlm_download' ),
405
-						'post_status'    => array( 'publish' ),
406
-						'posts_per_page' => -1,
407
-					),
408
-				)
409
-			);
410
-		}
411
-		$cmb->add_field(
412
-			array(
413
-				'id'   => 'settings_global_downloads_closing',
414
-				'type' => 'tab_closing',
415
-			)
416
-		);
417
-	}
418
-
419
-	/**
420
-	 * Registers the endpoint translation settings.
421
-	 *
422
-	 * @param object $cmb new_cmb2_box().
423
-	 * @return void
424
-	 */
425
-	public function endpoint_translations( $cmb ) {
426
-		$cmb->add_field(
427
-			array(
428
-				'id'          => 'endpoints_title',
429
-				'type'        => 'title',
430
-				'name'        => __( 'Set Endpoint Translations', 'lsx-health-plan' ),
431
-				'default'     => __( 'Set Endpoint Translations', 'lsx-health-plan' ),
432
-				'description' => __( 'Endpoint is a web address (URL) at which the user can gain access to it. You need to resave your permalinks after changing the endpoint settings.', 'lsx-health-plan' ),
433
-			)
434
-		);
435
-		foreach ( $this->endpoints as $slug => $endpoint_vars ) {
436
-			if ( 'exercise' === $slug ) {
437
-				continue;
438
-			}
439
-
440
-			$cmb->add_field(
441
-				array(
442
-					'name'    => $endpoint_vars['title'],
443
-					'id'      => $slug,
444
-					'type'    => 'input',
445
-					'value'   => '',
446
-					'default' => $endpoint_vars['default'],
447
-				)
448
-			);
449
-		}
450
-		$cmb->add_field(
451
-			array(
452
-				'id'   => 'settings_endpoints_closing',
453
-				'type' => 'tab_closing',
454
-			)
455
-		);
456
-	}
457
-
458
-	/**
459
-	 * Registers the endpoint translation settings.
460
-	 *
461
-	 * @param object $cmb new_cmb2_box().
462
-	 * @return void
463
-	 */
464
-	public function exercise_translations( $cmb ) {
465
-		if ( isset( $this->endpoints['exercise'] ) && '' !== $this->endpoints['exercise'] && ! empty( $this->endpoints['exercise'] ) ) {
466
-			$cmb->add_field(
467
-				array(
468
-					'id'          => 'exercise_endpoints_title',
469
-					'type'        => 'title',
470
-					'name'        => __( 'Set Exercise Translations', 'lsx-health-plan' ),
471
-					'default'     => __( 'Set Exercise Translations', 'lsx-health-plan' ),
472
-					'description' => __( 'You need to resave your permalinks after changing the endpoint settings.', 'lsx-health-plan' ),
473
-				)
474
-			);
475
-
476
-			foreach ( $this->endpoints['exercise'] as $slug => $endpoint_vars ) {
477
-				$cmb->add_field(
478
-					array(
479
-						'name'    => $endpoint_vars['title'],
480
-						'id'      => 'endpoint_' . $slug,
481
-						'type'    => 'input',
482
-						'value'   => '',
483
-						'default' => $endpoint_vars['default'],
484
-					)
485
-				);
486
-			}
487
-			$cmb->add_field(
488
-				array(
489
-					'id'   => 'settings_exercise_closing',
490
-					'type' => 'tab_closing',
491
-				)
492
-			);
493
-		}
494
-	}
495
-
496
-	/**
497
-	 * Registers the post type toggle settings
498
-	 *
499
-	 * @param object $cmb new_cmb2_box().
500
-	 * @return void
501
-	 */
502
-	public function post_type_toggles( $cmb ) {
503
-		$post_types = apply_filters( 'lsx_health_plan_post_types', isset( $this->post_types ) );
504
-
505
-		$cmb->add_field(
506
-			array(
507
-				'id'          => 'post_type_toggles_title',
508
-				'type'        => 'title',
509
-				'name'        => __( 'Disable Post Types', 'lsx-health-plan' ),
510
-				'default'     => __( 'Disable Post Types', 'lsx-health-plan' ),
511
-				'description' => __( 'Disable post types if you are wanting a minimal site.', 'lsx-health-plan' ),
512
-			)
513
-		);
514
-
515
-		foreach ( $post_types as $post_type ) {
516
-			if ( 'plan' === $post_type || 'exercise' === $post_type || ( 'video' === $post_type && false !== \lsx_health_plan\functions\get_option( 'exercise_enabled', false ) ) ) {
517
-				continue;
518
-			}
519
-
520
-			$cmb->add_field(
521
-				array(
522
-					'name'    => ucwords( $post_type ),
523
-					'id'      => $post_type . '_disabled',
524
-					'type'    => 'checkbox',
525
-					'value'   => 1,
526
-					'default' => 0,
527
-				)
528
-			);
529
-		}
530
-
531
-		$cmb->add_field(
532
-			array(
533
-				'id'   => 'settings_post_type_toggles_closing',
534
-				'type' => 'tab_closing',
535
-			)
536
-		);
537
-
538
-		$cmb->add_field(
539
-			array(
540
-				'id'          => 'post_type_toggles_enable_title',
541
-				'type'        => 'title',
542
-				'name'        => __( 'Enable Post Types', 'lsx-health-plan' ),
543
-				'default'     => __( 'Enable Post Types', 'lsx-health-plan' ),
544
-				'description' => __( 'Enable new functionality like the "exercise" post type.', 'lsx-health-plan' ),
545
-			)
546
-		);
547
-		$cmb->add_field(
548
-			array(
549
-				'name'        => __( 'Exercises', 'lsx-health-plan' ),
550
-				'id'          => 'exercise_enabled',
551
-				'type'        => 'checkbox',
552
-				'value'       => 1,
553
-				'default'     => 0,
554
-				'description' => __( 'Enabling the exercise post type will automatically replace the Video post type.', 'lsx-health-plan' ),
555
-			)
556
-		);
557
-		$cmb->add_field(
558
-			array(
559
-				'id'   => 'settings_post_type_toggles_enable_closing',
560
-				'type' => 'tab_closing',
561
-			)
562
-		);
563
-	}
564
-	/**
565
-	 * Registers the Profile Stat Toggle settings
566
-	 *
567
-	 * @param object $cmb new_cmb2_box().
568
-	 * @return void
569
-	 */
570
-
571
-	public function stat_disable( $cmb ) {
572
-		$cmb->add_field(
573
-			array(
574
-				'id'      => 'stat_disable_title',
575
-				'type'    => 'title',
576
-				'name'    => __( 'Disable Profile Stats', 'lsx-health-plan' ),
577
-				'default' => __( 'Disable Profile Stats', 'lsx-health-plan' ),
578
-			)
579
-		);
580
-		$cmb->add_field(
581
-			array(
582
-				'name'    => __( 'Disable All Stats', 'lsx-health-plan' ),
583
-				'desc'    => 'Disable All Stats',
584
-				'id'      => 'disable_all_stats',
585
-				'type'    => 'checkbox',
586
-				'value'   => 1,
587
-				'default' => 0,
588
-			)
589
-		);
590
-		$cmb->add_field(
591
-			array(
592
-				'name'    => __( 'Disable Weight', 'lsx-health-plan' ),
593
-				'id'      => 'disable_weight_checkbox',
594
-				'type'    => 'checkbox',
595
-				'value'   => 1,
596
-				'default' => 0,
597
-			)
598
-		);
599
-		$cmb->add_field(
600
-			array(
601
-				'name'    => __( 'Disable Waist', 'lsx-health-plan' ),
602
-				'id'      => 'disable_waist_checkbox',
603
-				'type'    => 'checkbox',
604
-				'value'   => 1,
605
-				'default' => 0,
606
-			)
607
-		);
608
-		$cmb->add_field(
609
-			array(
610
-				'name'    => __( 'Disable Fitness', 'lsx-health-plan' ),
611
-				'id'      => 'disable_fitness_checkbox',
612
-				'type'    => 'checkbox',
613
-				'value'   => 1,
614
-				'default' => 0,
615
-			)
616
-		);
617
-		$cmb->add_field(
618
-			array(
619
-				'id'   => 'settings_stat_disable_closing',
620
-				'type' => 'tab_closing',
621
-			)
622
-		);
623
-	}
624
-
625
-	/**
626
-	 * Enable Business Directory Search settings only if LSX Search plugin is enabled.
627
-	 *
628
-	 * @param object $cmb The CMB2() class.
629
-	 * @param string $section either engine,archive or single.
630
-	 * @return void
631
-	 */
632
-	public function generate_tabs( $cmb ) {
633
-		$tabs = $this->get_settings_tabs();
634
-
635
-		foreach ( $tabs as $tab_key => $tab ) {
636
-			$cmb->add_field(
637
-				array(
638
-					'id'          => 'settings_' . $tab_key . '_title',
639
-					'type'        => 'title',
640
-					'name'        => $tab['title'],
641
-					'default'     => $tab['title'],
642
-					'description' => $tab['desc'],
643
-				)
644
-			);
645
-			do_action( 'lsx_hp_settings_page_' . $tab_key . '_top', $cmb );
646
-
647
-			do_action( 'lsx_hp_settings_page_' . $tab_key . '_middle', $cmb );
648
-
649
-			do_action( 'lsx_hp_settings_page_' . $tab_key . '_bottom', $cmb );
650
-
651
-			$cmb->add_field(
652
-				array(
653
-					'id'   => 'settings_' . $tab_key . '_closing',
654
-					'type' => 'tab_closing',
655
-				)
656
-			);
657
-		}
658
-	}
659
-
660
-
661
-	/**
662
-	 * Returns the tabs and their descriptions.
663
-	 *
664
-	 * @return array
665
-	 */
666
-	public function get_settings_tabs() {
667
-		$tabs = array(
668
-			'general' => array(
669
-				'title' => __( 'General', 'lsx-health-plan' ),
670
-				'desc'  => __( 'Control the sitewide settings for the LSX HP site.', 'lsx-health-plan' ),
671
-			),
672
-		);
673
-
674
-		foreach ( $this->post_types as $post_type ) {
675
-			switch ( $post_type ) {
676
-				default:
677
-					//if ( ! in_array( $post_type, \lsx\search\includes\get_restricted_post_types() ) ) {
678
-						$temp_post_type = get_post_type_object( $post_type );
679
-						if ( ! is_wp_error( $temp_post_type ) ) {
680
-							$page_url    = get_post_type_archive_link( $temp_post_type->name );
681
-							$description = sprintf(
682
-								/* translators: %s: The subscription info */
683
-								__( 'Control the settings for your <a target="_blank" href="%1$s">%2$s</a> archive.', 'lsx-search' ),
684
-								$page_url,
685
-								$temp_post_type->label
686
-							);
687
-
688
-							$tabs[ $post_type ] = array(
689
-								'title' => $temp_post_type->label,
690
-								'desc'  => $description,
691
-							);
692
-						}
693
-					//}
694
-					break;
695
-			}
696
-		}
697
-		return $tabs;
698
-	}
15
+     /**
16
+      * Holds class instance
17
+      *
18
+      * @since 1.0.0
19
+      *
20
+      * @var      object \lsx_health_plan\classes\admin\Settings()
21
+      */
22
+     protected static $instance = null;
23
+
24
+     /**
25
+      * Option key, and option page slug
26
+      *
27
+      * @var string
28
+      */
29
+     protected $screen_id = 'lsx_health_plan_settings';
30
+
31
+     /**
32
+      * An array of the post types for the Global Downloads field.
33
+      *
34
+      * @var array
35
+      */
36
+     public $download_types = array();
37
+
38
+     /**
39
+      * An array of the post types for the Global Defaults field.
40
+      *
41
+      * @var array
42
+      */
43
+     public $default_types = array();
44
+
45
+     /**
46
+      * An array of the endpoints for the Endpoint Translation field.
47
+      *
48
+      * @var array
49
+      */
50
+     public $endpoints = array();
51
+
52
+     /**
53
+      * Constructor
54
+      */
55
+     public function __construct() {
56
+          $this->load_classes();
57
+          add_action( 'cmb2_admin_init', array( $this, 'register_settings_page' ) );
58
+          add_action( 'lsx_hp_settings_page', array( $this, 'generate_tabs' ), 1, 1 );
59
+
60
+          add_action( 'lsx_hp_settings_page_general_top', array( $this, 'general_settings' ), 1, 1 );
61
+          add_action( 'lsx_hp_settings_page', array( $this, 'global_defaults' ), 3, 1 );
62
+          add_action( 'lsx_hp_settings_page', array( $this, 'global_downloads' ), 5, 1 );
63
+          add_action( 'lsx_hp_settings_page', array( $this, 'stat_disable' ), 6, 1 );
64
+          add_action( 'lsx_hp_settings_page', array( $this, 'endpoint_translations' ), 7, 1 );
65
+          add_action( 'lsx_hp_settings_page', array( $this, 'exercise_translations' ), 7, 1 );
66
+          add_action( 'lsx_hp_settings_page', array( $this, 'post_type_toggles' ), 9, 1 );
67
+     }
68
+
69
+     /**
70
+      * Return an instance of this class.
71
+      *
72
+      * @since 1.0.0
73
+      *
74
+      * @return    object \lsx_health_plan\classes\admin\Settings()    A single instance of this class.
75
+      */
76
+     public static function get_instance() {
77
+          // If the single instance hasn't been set, set it now.
78
+          if ( null === self::$instance ) {
79
+               self::$instance = new self();
80
+          }
81
+          return self::$instance;
82
+     }
83
+
84
+     /**
85
+      * Loads the variable classes and the static classes.
86
+      */
87
+     private function load_classes() {
88
+
89
+          $this->post_types = array(
90
+               'plan',
91
+               'workout',
92
+               'exercise',
93
+               //'meal',
94
+               'recipe',
95
+               //'tip',
96
+          );
97
+
98
+          foreach ( $this->post_types as $post_type ) {
99
+               $this->$post_type = require_once LSX_HEALTH_PLAN_PATH . 'classes/admin/settings/class-' . $post_type . '.php';
100
+          }
101
+     }
102
+
103
+     /**
104
+      * Sets the variables needed for the fields.
105
+      *
106
+      * @return void
107
+      */
108
+     public function set_vars() {
109
+
110
+          $this->default_types  = array(
111
+               'page' => array(
112
+                    'title'       => __( 'Warm Up', 'lsx-health-plan' ),
113
+                    'description' => __( 'Set a default warm up routine.', 'lsx-health-plan' ),
114
+                    'limit'       => 1,
115
+                    'id'          => 'plan_warmup',
116
+               ),
117
+          );
118
+          $this->download_types = array(
119
+               'page' => array(
120
+                    'title'       => __( 'Warm Up', 'lsx-health-plan' ),
121
+                    'description' => __( 'Set a default warm up routine.', 'lsx-health-plan' ),
122
+                    'limit'       => 1,
123
+               ),
124
+          );
125
+          $this->endpoints      = array(
126
+               'endpoint_warm_up' => array(
127
+                    'title'       => __( 'Warm Up Endpoint', 'lsx-health-plan' ),
128
+                    'default'     => 'warm-up',
129
+               ),
130
+          );
131
+
132
+          if ( post_type_exists( 'meal' ) ) {
133
+               $this->download_types['meal']     = array(
134
+                    'title'       => __( 'Meal Plan', 'lsx-health-plan' ),
135
+                    'description' => __( 'Set a default meal plan.', 'lsx-health-plan' ),
136
+               );
137
+               $this->default_types['meal']      = array(
138
+                    'title'       => __( 'Meal Plan', 'lsx-health-plan' ),
139
+                    'description' => __( 'Set a default meal plan.', 'lsx-health-plan' ),
140
+                    'id'          => 'connected_meals',
141
+               );
142
+               $this->endpoints['endpoint_meal'] = array(
143
+                    'title'       => __( 'Meal Endpoint', 'lsx-health-plan' ),
144
+                    'default'     => 'meal',
145
+                    'description' => __( 'Define the tab slug which shows on the single plan page.', 'lsx-health-plan' ),
146
+               );
147
+               $this->endpoints['endpoint_meal_archive'] = array(
148
+                    'title'   => __( 'Meals Archive Endpoint', 'lsx-health-plan' ),
149
+                    'default' => 'meals',
150
+               );
151
+               $this->endpoints['meal_single_slug'] = array(
152
+                    'title'   => __( 'Single Meal Slug', 'lsx-health-plan' ),
153
+                    'default' => 'meal',
154
+               );
155
+          }
156
+          if ( post_type_exists( 'recipe' ) ) {
157
+               $this->download_types['recipe'] = array(
158
+                    'title'       => __( 'Recipe', 'lsx-health-plan' ),
159
+                    'description' => __( 'Set a default recipe.', 'lsx-health-plan' ),
160
+               );
161
+               $this->default_types['recipe'] = array(
162
+                    'title'       => __( 'Recipe', 'lsx-health-plan' ),
163
+                    'description' => __( 'Set a default recipe.', 'lsx-health-plan' ),
164
+                    'id'          => 'connected_recipes',
165
+               );
166
+               $this->endpoints['endpoint_recipe'] = array(
167
+                    'title'   => __( 'Recipes Endpoint', 'lsx-health-plan' ),
168
+                    'default' => 'recipe',
169
+               );
170
+          }
171
+          if ( post_type_exists( 'workout' ) ) {
172
+               $this->download_types['workout'] = array(
173
+                    'title'       => __( 'Workout', 'lsx-health-plan' ),
174
+                    'description' => __( 'Set a default workout routine PDF.', 'lsx-health-plan' ),
175
+               );
176
+               $this->default_types['workout'] = array(
177
+                    'title'       => __( 'Workout', 'lsx-health-plan' ),
178
+                    'description' => __( 'Set a default workout routine.', 'lsx-health-plan' ),
179
+                    'id'          => 'connected_workouts',
180
+               );
181
+               $this->endpoints['endpoint_workout_archive'] = array(
182
+                    'title'   => __( 'Workouts Archive Endpoint', 'lsx-health-plan' ),
183
+                    'default' => '',
184
+               );
185
+               $this->endpoints['endpoint_workout'] = array(
186
+                    'title'   => __( 'Single Workout Endpoint', 'lsx-health-plan' ),
187
+                    'default' => 'workout',
188
+               );
189
+          }
190
+
191
+          $this->endpoints['login_slug'] = array(
192
+               'title'   => __( 'Login Slug', 'lsx-health-plan' ),
193
+               'default' => 'login',
194
+          );
195
+          $this->endpoints['my_plan_slug'] = array(
196
+               'title'   => __( 'My Plan Slug', 'lsx-health-plan' ),
197
+               'default' => 'my-plan',
198
+          );
199
+          $this->endpoints['plan_single_slug'] = array(
200
+               'title'   => __( 'Single Plan Slug', 'lsx-health-plan' ),
201
+               'default' => 'plan',
202
+          );
203
+          $this->endpoints['endpoint_plan_archive'] = array(
204
+               'title'   => __( 'Plans Archive Endpoint', 'lsx-health-plan' ),
205
+               'default' => 'plans',
206
+          );
207
+
208
+          if ( false !== \lsx_health_plan\functions\get_option( 'exercise_enabled', false ) ) {
209
+               $this->endpoints['exercise'] = array(
210
+                    'exercise_single' => array(
211
+                         'title'   => __( 'Single Exercise Slug', 'lsx-health-plan' ),
212
+                         'default' => 'exercise',
213
+                    ),
214
+                    'exercise_archive' => array(
215
+                         'title'   => __( 'Archive Exercise Slug', 'lsx-health-plan' ),
216
+                         'default' => 'exercises',
217
+                    ),
218
+                    'exercise_type' => array(
219
+                         'title'   => __( 'Exercise Type Slug', 'lsx-health-plan' ),
220
+                         'default' => 'exercise-type',
221
+                    ),
222
+                    'exercise_equipment' => array(
223
+                         'title'   => __( 'Equipment Slug', 'lsx-health-plan' ),
224
+                         'default' => 'equipment',
225
+                    ),
226
+                    'exercise_musclegroup' => array(
227
+                         'title'   => __( 'Muscle Group Slug', 'lsx-health-plan' ),
228
+                         'default' => 'muscle-group',
229
+                    ),
230
+               );
231
+          }
232
+     }
233
+
234
+     /**
235
+      * Hook in and register a submenu options page for the Page post-type menu.
236
+      */
237
+     public function register_settings_page() {
238
+          $this->set_vars();
239
+          $cmb = new_cmb2_box(
240
+               array(
241
+                    'id'           => $this->screen_id,
242
+                    'title'        => esc_html__( 'Settings', 'lsx-health-plan' ),
243
+                    'object_types' => array( 'options-page' ),
244
+                    'option_key'   => 'lsx_health_plan_options', // The option key and admin menu page slug.
245
+                    'parent_slug'  => 'edit.php?post_type=plan', // Make options page a submenu item of the themes menu.
246
+                    'capability'   => 'manage_options', // Cap required to view options-page.
247
+               )
248
+          );
249
+          do_action( 'lsx_hp_settings_page', $cmb );
250
+     }
251
+
252
+     /**
253
+      * Registers the general settings.
254
+      *
255
+      * @param object $cmb new_cmb2_box().
256
+      * @return void
257
+      */
258
+     public function general_settings( $cmb ) {
259
+          $cmb->add_field(
260
+               array(
261
+                    'name'       => __( 'Membership Product', 'lsx-health-plan' ),
262
+                    'id'         => 'membership_product',
263
+                    'type'       => 'post_search_ajax',
264
+                    'limit'      => 1,
265
+                    'sortable'   => false,
266
+                    'query_args' => array(
267
+                         'post_type'      => array( 'product' ),
268
+                         'post_status'    => array( 'publish' ),
269
+                         'posts_per_page' => -1,
270
+                    ),
271
+               )
272
+          );
273
+
274
+          $cmb->add_field(
275
+               array(
276
+                    'name'    => __( 'Your Warm-up Intro', 'lsx-health-plan' ),
277
+                    'id'      => 'warmup_intro',
278
+                    'type'    => 'textarea_small',
279
+                    'value'   => '',
280
+                    'default' => __( "Don't forget your warm-up! It's a vital part of your daily workout routine.", 'lsx-health-plan' ),
281
+               )
282
+          );
283
+          if ( post_type_exists( 'workout' ) ) {
284
+               $cmb->add_field(
285
+                    array(
286
+                         'name'    => __( 'Your Workout Intro', 'lsx-health-plan' ),
287
+                         'id'      => 'workout_intro',
288
+                         'type'    => 'textarea_small',
289
+                         'value'   => '',
290
+                         'default' => __( "Let's do this! Smash your daily workout and reach your fitness goals.", 'lsx-health-plan' ),
291
+                    )
292
+               );
293
+          }
294
+          if ( post_type_exists( 'meal' ) ) {
295
+               $cmb->add_field(
296
+                    array(
297
+                         'name'    => __( 'Your Meal Plan Intro', 'lsx-health-plan' ),
298
+                         'id'      => 'meal_plan_intro',
299
+                         'type'    => 'textarea_small',
300
+                         'value'   => '',
301
+                         'default' => __( 'Get the right mix of nutrients to keep muscles strong & healthy.', 'lsx-health-plan' ),
302
+                    )
303
+               );
304
+          }
305
+          if ( post_type_exists( 'recipe' ) ) {
306
+               $cmb->add_field(
307
+                    array(
308
+                         'name'    => __( 'Recipes Intro', 'lsx-health-plan' ),
309
+                         'id'      => 'recipes_intro',
310
+                         'type'    => 'textarea_small',
311
+                         'value'   => '',
312
+                         'default' => __( "Let's get cooking! Delicious and easy to follow recipes.", 'lsx-health-plan' ),
313
+                    )
314
+               );
315
+          }
316
+     }
317
+
318
+     /**
319
+      * Registers the global default settings.
320
+      *
321
+      * @param object $cmb new_cmb2_box().
322
+      * @return void
323
+      */
324
+     public function global_defaults( $cmb ) {
325
+          $cmb->add_field(
326
+               array(
327
+                    'id'      => 'global_defaults_title',
328
+                    'type'    => 'title',
329
+                    'name'    => __( 'Global Defaults', 'lsx-health-plan' ),
330
+                    'default' => __( 'Global Defaults', 'lsx-health-plan' ),
331
+                    'description' => __( 'If you have not connected a specific post to your day plan, set a default option below.', 'lsx-health-plan' ),
332
+               )
333
+          );
334
+
335
+          foreach ( $this->default_types as $type => $default_type ) {
336
+               $limit    = 5;
337
+               $sortable = false;
338
+               if ( isset( $default_type['limit'] ) ) {
339
+                    $limit    = $default_type['limit'];
340
+                    $sortable = true;
341
+               }
342
+
343
+               if ( 'page' === $type && false !== \lsx_health_plan\functions\get_option( 'exercise_enabled', false ) ) {
344
+                    $type = array( 'page', 'workout' );
345
+               }
346
+
347
+               $cmb->add_field(
348
+                    array(
349
+                         'name'       => $default_type['title'],
350
+                         'desc'       => $default_type['description'],
351
+                         'id'         => $default_type['id'],
352
+                         'type'       => 'post_search_ajax',
353
+                         'limit'      => $limit,
354
+                         'sortable'   => $sortable,
355
+                         'query_args' => array(
356
+                              'post_type'      => $type,
357
+                              'post_status'    => array( 'publish' ),
358
+                              'posts_per_page' => -1,
359
+                         ),
360
+                    )
361
+               );
362
+          }
363
+
364
+          $cmb->add_field(
365
+               array(
366
+                    'id'   => 'settings_global_defaults_closing',
367
+                    'type' => 'tab_closing',
368
+               )
369
+          );
370
+     }
371
+
372
+     /**
373
+      * Registers the global dowloads settings
374
+      *
375
+      * @param object $cmb new_cmb2_box().
376
+      * @return void
377
+      */
378
+     public function global_downloads( $cmb ) {
379
+          $cmb->add_field(
380
+               array(
381
+                    'id'      => 'global_downloads_title',
382
+                    'type'    => 'title',
383
+                    'name'    => __( 'Global Downloads', 'lsx-health-plan' ),
384
+                    'default' => __( 'Global Downloads', 'lsx-health-plan' ),
385
+               )
386
+          );
387
+
388
+          foreach ( $this->download_types as $type => $download_type ) {
389
+               $limit    = 5;
390
+               $sortable = false;
391
+               if ( isset( $download_type['limit'] ) ) {
392
+                    $limit    = $download_type['limit'];
393
+                    $sortable = true;
394
+               }
395
+
396
+               $cmb->add_field(
397
+                    array(
398
+                         'name'       => $download_type['title'],
399
+                         'id'         => 'download_' . $type,
400
+                         'type'       => 'post_search_ajax',
401
+                         'limit'      => $limit,
402
+                         'sortable'   => $sortable,
403
+                         'query_args' => array(
404
+                              'post_type'      => array( 'dlm_download' ),
405
+                              'post_status'    => array( 'publish' ),
406
+                              'posts_per_page' => -1,
407
+                         ),
408
+                    )
409
+               );
410
+          }
411
+          $cmb->add_field(
412
+               array(
413
+                    'id'   => 'settings_global_downloads_closing',
414
+                    'type' => 'tab_closing',
415
+               )
416
+          );
417
+     }
418
+
419
+     /**
420
+      * Registers the endpoint translation settings.
421
+      *
422
+      * @param object $cmb new_cmb2_box().
423
+      * @return void
424
+      */
425
+     public function endpoint_translations( $cmb ) {
426
+          $cmb->add_field(
427
+               array(
428
+                    'id'          => 'endpoints_title',
429
+                    'type'        => 'title',
430
+                    'name'        => __( 'Set Endpoint Translations', 'lsx-health-plan' ),
431
+                    'default'     => __( 'Set Endpoint Translations', 'lsx-health-plan' ),
432
+                    'description' => __( 'Endpoint is a web address (URL) at which the user can gain access to it. You need to resave your permalinks after changing the endpoint settings.', 'lsx-health-plan' ),
433
+               )
434
+          );
435
+          foreach ( $this->endpoints as $slug => $endpoint_vars ) {
436
+               if ( 'exercise' === $slug ) {
437
+                    continue;
438
+               }
439
+
440
+               $cmb->add_field(
441
+                    array(
442
+                         'name'    => $endpoint_vars['title'],
443
+                         'id'      => $slug,
444
+                         'type'    => 'input',
445
+                         'value'   => '',
446
+                         'default' => $endpoint_vars['default'],
447
+                    )
448
+               );
449
+          }
450
+          $cmb->add_field(
451
+               array(
452
+                    'id'   => 'settings_endpoints_closing',
453
+                    'type' => 'tab_closing',
454
+               )
455
+          );
456
+     }
457
+
458
+     /**
459
+      * Registers the endpoint translation settings.
460
+      *
461
+      * @param object $cmb new_cmb2_box().
462
+      * @return void
463
+      */
464
+     public function exercise_translations( $cmb ) {
465
+          if ( isset( $this->endpoints['exercise'] ) && '' !== $this->endpoints['exercise'] && ! empty( $this->endpoints['exercise'] ) ) {
466
+               $cmb->add_field(
467
+                    array(
468
+                         'id'          => 'exercise_endpoints_title',
469
+                         'type'        => 'title',
470
+                         'name'        => __( 'Set Exercise Translations', 'lsx-health-plan' ),
471
+                         'default'     => __( 'Set Exercise Translations', 'lsx-health-plan' ),
472
+                         'description' => __( 'You need to resave your permalinks after changing the endpoint settings.', 'lsx-health-plan' ),
473
+                    )
474
+               );
475
+
476
+               foreach ( $this->endpoints['exercise'] as $slug => $endpoint_vars ) {
477
+                    $cmb->add_field(
478
+                         array(
479
+                              'name'    => $endpoint_vars['title'],
480
+                              'id'      => 'endpoint_' . $slug,
481
+                              'type'    => 'input',
482
+                              'value'   => '',
483
+                              'default' => $endpoint_vars['default'],
484
+                         )
485
+                    );
486
+               }
487
+               $cmb->add_field(
488
+                    array(
489
+                         'id'   => 'settings_exercise_closing',
490
+                         'type' => 'tab_closing',
491
+                    )
492
+               );
493
+          }
494
+     }
495
+
496
+     /**
497
+      * Registers the post type toggle settings
498
+      *
499
+      * @param object $cmb new_cmb2_box().
500
+      * @return void
501
+      */
502
+     public function post_type_toggles( $cmb ) {
503
+          $post_types = apply_filters( 'lsx_health_plan_post_types', isset( $this->post_types ) );
504
+
505
+          $cmb->add_field(
506
+               array(
507
+                    'id'          => 'post_type_toggles_title',
508
+                    'type'        => 'title',
509
+                    'name'        => __( 'Disable Post Types', 'lsx-health-plan' ),
510
+                    'default'     => __( 'Disable Post Types', 'lsx-health-plan' ),
511
+                    'description' => __( 'Disable post types if you are wanting a minimal site.', 'lsx-health-plan' ),
512
+               )
513
+          );
514
+
515
+          foreach ( $post_types as $post_type ) {
516
+               if ( 'plan' === $post_type || 'exercise' === $post_type || ( 'video' === $post_type && false !== \lsx_health_plan\functions\get_option( 'exercise_enabled', false ) ) ) {
517
+                    continue;
518
+               }
519
+
520
+               $cmb->add_field(
521
+                    array(
522
+                         'name'    => ucwords( $post_type ),
523
+                         'id'      => $post_type . '_disabled',
524
+                         'type'    => 'checkbox',
525
+                         'value'   => 1,
526
+                         'default' => 0,
527
+                    )
528
+               );
529
+          }
530
+
531
+          $cmb->add_field(
532
+               array(
533
+                    'id'   => 'settings_post_type_toggles_closing',
534
+                    'type' => 'tab_closing',
535
+               )
536
+          );
537
+
538
+          $cmb->add_field(
539
+               array(
540
+                    'id'          => 'post_type_toggles_enable_title',
541
+                    'type'        => 'title',
542
+                    'name'        => __( 'Enable Post Types', 'lsx-health-plan' ),
543
+                    'default'     => __( 'Enable Post Types', 'lsx-health-plan' ),
544
+                    'description' => __( 'Enable new functionality like the "exercise" post type.', 'lsx-health-plan' ),
545
+               )
546
+          );
547
+          $cmb->add_field(
548
+               array(
549
+                    'name'        => __( 'Exercises', 'lsx-health-plan' ),
550
+                    'id'          => 'exercise_enabled',
551
+                    'type'        => 'checkbox',
552
+                    'value'       => 1,
553
+                    'default'     => 0,
554
+                    'description' => __( 'Enabling the exercise post type will automatically replace the Video post type.', 'lsx-health-plan' ),
555
+               )
556
+          );
557
+          $cmb->add_field(
558
+               array(
559
+                    'id'   => 'settings_post_type_toggles_enable_closing',
560
+                    'type' => 'tab_closing',
561
+               )
562
+          );
563
+     }
564
+     /**
565
+      * Registers the Profile Stat Toggle settings
566
+      *
567
+      * @param object $cmb new_cmb2_box().
568
+      * @return void
569
+      */
570
+
571
+     public function stat_disable( $cmb ) {
572
+          $cmb->add_field(
573
+               array(
574
+                    'id'      => 'stat_disable_title',
575
+                    'type'    => 'title',
576
+                    'name'    => __( 'Disable Profile Stats', 'lsx-health-plan' ),
577
+                    'default' => __( 'Disable Profile Stats', 'lsx-health-plan' ),
578
+               )
579
+          );
580
+          $cmb->add_field(
581
+               array(
582
+                    'name'    => __( 'Disable All Stats', 'lsx-health-plan' ),
583
+                    'desc'    => 'Disable All Stats',
584
+                    'id'      => 'disable_all_stats',
585
+                    'type'    => 'checkbox',
586
+                    'value'   => 1,
587
+                    'default' => 0,
588
+               )
589
+          );
590
+          $cmb->add_field(
591
+               array(
592
+                    'name'    => __( 'Disable Weight', 'lsx-health-plan' ),
593
+                    'id'      => 'disable_weight_checkbox',
594
+                    'type'    => 'checkbox',
595
+                    'value'   => 1,
596
+                    'default' => 0,
597
+               )
598
+          );
599
+          $cmb->add_field(
600
+               array(
601
+                    'name'    => __( 'Disable Waist', 'lsx-health-plan' ),
602
+                    'id'      => 'disable_waist_checkbox',
603
+                    'type'    => 'checkbox',
604
+                    'value'   => 1,
605
+                    'default' => 0,
606
+               )
607
+          );
608
+          $cmb->add_field(
609
+               array(
610
+                    'name'    => __( 'Disable Fitness', 'lsx-health-plan' ),
611
+                    'id'      => 'disable_fitness_checkbox',
612
+                    'type'    => 'checkbox',
613
+                    'value'   => 1,
614
+                    'default' => 0,
615
+               )
616
+          );
617
+          $cmb->add_field(
618
+               array(
619
+                    'id'   => 'settings_stat_disable_closing',
620
+                    'type' => 'tab_closing',
621
+               )
622
+          );
623
+     }
624
+
625
+     /**
626
+      * Enable Business Directory Search settings only if LSX Search plugin is enabled.
627
+      *
628
+      * @param object $cmb The CMB2() class.
629
+      * @param string $section either engine,archive or single.
630
+      * @return void
631
+      */
632
+     public function generate_tabs( $cmb ) {
633
+          $tabs = $this->get_settings_tabs();
634
+
635
+          foreach ( $tabs as $tab_key => $tab ) {
636
+               $cmb->add_field(
637
+                    array(
638
+                         'id'          => 'settings_' . $tab_key . '_title',
639
+                         'type'        => 'title',
640
+                         'name'        => $tab['title'],
641
+                         'default'     => $tab['title'],
642
+                         'description' => $tab['desc'],
643
+                    )
644
+               );
645
+               do_action( 'lsx_hp_settings_page_' . $tab_key . '_top', $cmb );
646
+
647
+               do_action( 'lsx_hp_settings_page_' . $tab_key . '_middle', $cmb );
648
+
649
+               do_action( 'lsx_hp_settings_page_' . $tab_key . '_bottom', $cmb );
650
+
651
+               $cmb->add_field(
652
+                    array(
653
+                         'id'   => 'settings_' . $tab_key . '_closing',
654
+                         'type' => 'tab_closing',
655
+                    )
656
+               );
657
+          }
658
+     }
659
+
660
+
661
+     /**
662
+      * Returns the tabs and their descriptions.
663
+      *
664
+      * @return array
665
+      */
666
+     public function get_settings_tabs() {
667
+          $tabs = array(
668
+               'general' => array(
669
+                    'title' => __( 'General', 'lsx-health-plan' ),
670
+                    'desc'  => __( 'Control the sitewide settings for the LSX HP site.', 'lsx-health-plan' ),
671
+               ),
672
+          );
673
+
674
+          foreach ( $this->post_types as $post_type ) {
675
+               switch ( $post_type ) {
676
+                    default:
677
+                         //if ( ! in_array( $post_type, \lsx\search\includes\get_restricted_post_types() ) ) {
678
+                              $temp_post_type = get_post_type_object( $post_type );
679
+                              if ( ! is_wp_error( $temp_post_type ) ) {
680
+                                   $page_url    = get_post_type_archive_link( $temp_post_type->name );
681
+                                   $description = sprintf(
682
+                                        /* translators: %s: The subscription info */
683
+                                        __( 'Control the settings for your <a target="_blank" href="%1$s">%2$s</a> archive.', 'lsx-search' ),
684
+                                        $page_url,
685
+                                        $temp_post_type->label
686
+                                   );
687
+
688
+                                   $tabs[ $post_type ] = array(
689
+                                        'title' => $temp_post_type->label,
690
+                                        'desc'  => $description,
691
+                                   );
692
+                              }
693
+                         //}
694
+                         break;
695
+               }
696
+          }
697
+          return $tabs;
698
+     }
699 699
 }
Please login to merge, or discard this patch.
classes/admin/settings/class-workout.php 1 patch
Indentation   +107 added lines, -107 removed lines patch added patch discarded remove patch
@@ -12,115 +12,115 @@
 block discarded – undo
12 12
  */
13 13
 class Workout {
14 14
 
15
-	/**
16
-	 * Holds class instance
17
-	 *
18
-	 * @since 1.0.0
19
-	 *
20
-	 * @var      object \lsx_health_plan\classes\admin\Workout()
21
-	 */
22
-	protected static $instance = null;
15
+     /**
16
+      * Holds class instance
17
+      *
18
+      * @since 1.0.0
19
+      *
20
+      * @var      object \lsx_health_plan\classes\admin\Workout()
21
+      */
22
+     protected static $instance = null;
23 23
 
24
-	/**
25
-	 * Contructor
26
-	 */
27
-	public function __construct() {
28
-		add_action( 'lsx_hp_settings_page_workout_top', array( $this, 'settings' ), 1, 1 );
29
-	}
24
+     /**
25
+      * Contructor
26
+      */
27
+     public function __construct() {
28
+          add_action( 'lsx_hp_settings_page_workout_top', array( $this, 'settings' ), 1, 1 );
29
+     }
30 30
 
31
-	/**
32
-	 * Return an instance of this class.
33
-	 *
34
-	 * @since 1.0.0
35
-	 *
36
-	 * @return    object \lsx_health_plan\classes\admin\Workout()    A single instance of this class.
37
-	 */
38
-	public static function get_instance() {
39
-		// If the single instance hasn't been set, set it now.
40
-		if ( null === self::$instance ) {
41
-			self::$instance = new self();
42
-		}
43
-		return self::$instance;
44
-	}
31
+     /**
32
+      * Return an instance of this class.
33
+      *
34
+      * @since 1.0.0
35
+      *
36
+      * @return    object \lsx_health_plan\classes\admin\Workout()    A single instance of this class.
37
+      */
38
+     public static function get_instance() {
39
+          // If the single instance hasn't been set, set it now.
40
+          if ( null === self::$instance ) {
41
+               self::$instance = new self();
42
+          }
43
+          return self::$instance;
44
+     }
45 45
 
46
-	/**
47
-	 * Registers the general settings.
48
-	 *
49
-	 * @param object $cmb new_cmb2_box().
50
-	 * @return void
51
-	 */
52
-	public function settings( $cmb ) {
53
-		$cmb->add_field(
54
-			array(
55
-				'id'          => 'workout_tab_layout',
56
-				'type'        => 'select',
57
-				'name'        => __( 'Workout Tab Layout', 'lsx-health-plan' ),
58
-				'description' => __( 'Choose the layout for the workouts.', 'lsx-health-plan' ),
59
-				'options'     => array(
60
-					'table' => __( 'Table', 'lsx-health-plan' ),
61
-					'list'  => __( 'List', 'lsx-health-plan' ),
62
-					'grid'  => __( 'Grid', 'lsx-health-plan' ),
63
-				),
64
-			)
65
-		);
66
-		$cmb->add_field(
67
-			array(
68
-				'id'          => 'workout_tab_link',
69
-				'type'        => 'select',
70
-				'name'        => __( 'Workout Tab Link', 'lsx-health-plan' ),
71
-				'description' => __( 'Choose to show the excerpt, full content or nothing.', 'lsx-health-plan' ),
72
-				'options'     => array(
73
-					''       => __( 'None', 'lsx-health-plan' ),
74
-					'single' => __( 'Single', 'lsx-health-plan' ),
75
-					'modal'  => __( 'Modal', 'lsx-health-plan' ),
76
-				),
77
-				'default' => 'modal',
78
-			)
79
-		);
80
-		$cmb->add_field(
81
-			array(
82
-				'id'          => 'workout_tab_modal_content',
83
-				'type'        => 'select',
84
-				'name'        => __( 'Modal Content', 'lsx-health-plan' ),
85
-				'description' => __( 'Choose to show the excerpt, full content or nothing. For the modal content only', 'lsx-health-plan' ),
86
-				'options'     => array(
87
-					''        => __( 'None', 'lsx-health-plan' ),
88
-					'excerpt' => __( 'Excerpt', 'lsx-health-plan' ),
89
-					'full'    => __( 'Full Content', 'lsx-health-plan' ),
90
-				),
91
-				'default' => '',
92
-			)
93
-		);
94
-		$cmb->add_field(
95
-			array(
96
-				'id'          => 'workout_tab_columns',
97
-				'type'        => 'select',
98
-				'name'        => __( 'Grid Columns', 'lsx-health-plan' ),
99
-				'description' => __( 'If you are displaying a grid, set the amount of columns you want to use.', 'lsx-health-plan' ),
100
-				'options'     => array(
101
-					'12' => __( '1', 'lsx-health-plan' ),
102
-					'6'  => __( '2', 'lsx-health-plan' ),
103
-					'4'  => __( '3', 'lsx-health-plan' ),
104
-					'3'  => __( '4', 'lsx-health-plan' ),
105
-					'2'  => __( '6', 'lsx-health-plan' ),
106
-				),
107
-				'default' => '4',
108
-			)
109
-		);
110
-		$cmb->add_field(
111
-			array(
112
-				'id'          => 'workout_tab_content',
113
-				'type'        => 'select',
114
-				'name'        => __( 'Grid Content', 'lsx-health-plan' ),
115
-				'description' => __( 'Choose to show the excerpt, full content or nothing. For the grid layout only', 'lsx-health-plan' ),
116
-				'options'     => array(
117
-					''        => __( 'None', 'lsx-health-plan' ),
118
-					'excerpt' => __( 'Excerpt', 'lsx-health-plan' ),
119
-					'full'    => __( 'Full Content', 'lsx-health-plan' ),
120
-				),
121
-				'default' => '',
122
-			)
123
-		);
124
-	}
46
+     /**
47
+      * Registers the general settings.
48
+      *
49
+      * @param object $cmb new_cmb2_box().
50
+      * @return void
51
+      */
52
+     public function settings( $cmb ) {
53
+          $cmb->add_field(
54
+               array(
55
+                    'id'          => 'workout_tab_layout',
56
+                    'type'        => 'select',
57
+                    'name'        => __( 'Workout Tab Layout', 'lsx-health-plan' ),
58
+                    'description' => __( 'Choose the layout for the workouts.', 'lsx-health-plan' ),
59
+                    'options'     => array(
60
+                         'table' => __( 'Table', 'lsx-health-plan' ),
61
+                         'list'  => __( 'List', 'lsx-health-plan' ),
62
+                         'grid'  => __( 'Grid', 'lsx-health-plan' ),
63
+                    ),
64
+               )
65
+          );
66
+          $cmb->add_field(
67
+               array(
68
+                    'id'          => 'workout_tab_link',
69
+                    'type'        => 'select',
70
+                    'name'        => __( 'Workout Tab Link', 'lsx-health-plan' ),
71
+                    'description' => __( 'Choose to show the excerpt, full content or nothing.', 'lsx-health-plan' ),
72
+                    'options'     => array(
73
+                         ''       => __( 'None', 'lsx-health-plan' ),
74
+                         'single' => __( 'Single', 'lsx-health-plan' ),
75
+                         'modal'  => __( 'Modal', 'lsx-health-plan' ),
76
+                    ),
77
+                    'default' => 'modal',
78
+               )
79
+          );
80
+          $cmb->add_field(
81
+               array(
82
+                    'id'          => 'workout_tab_modal_content',
83
+                    'type'        => 'select',
84
+                    'name'        => __( 'Modal Content', 'lsx-health-plan' ),
85
+                    'description' => __( 'Choose to show the excerpt, full content or nothing. For the modal content only', 'lsx-health-plan' ),
86
+                    'options'     => array(
87
+                         ''        => __( 'None', 'lsx-health-plan' ),
88
+                         'excerpt' => __( 'Excerpt', 'lsx-health-plan' ),
89
+                         'full'    => __( 'Full Content', 'lsx-health-plan' ),
90
+                    ),
91
+                    'default' => '',
92
+               )
93
+          );
94
+          $cmb->add_field(
95
+               array(
96
+                    'id'          => 'workout_tab_columns',
97
+                    'type'        => 'select',
98
+                    'name'        => __( 'Grid Columns', 'lsx-health-plan' ),
99
+                    'description' => __( 'If you are displaying a grid, set the amount of columns you want to use.', 'lsx-health-plan' ),
100
+                    'options'     => array(
101
+                         '12' => __( '1', 'lsx-health-plan' ),
102
+                         '6'  => __( '2', 'lsx-health-plan' ),
103
+                         '4'  => __( '3', 'lsx-health-plan' ),
104
+                         '3'  => __( '4', 'lsx-health-plan' ),
105
+                         '2'  => __( '6', 'lsx-health-plan' ),
106
+                    ),
107
+                    'default' => '4',
108
+               )
109
+          );
110
+          $cmb->add_field(
111
+               array(
112
+                    'id'          => 'workout_tab_content',
113
+                    'type'        => 'select',
114
+                    'name'        => __( 'Grid Content', 'lsx-health-plan' ),
115
+                    'description' => __( 'Choose to show the excerpt, full content or nothing. For the grid layout only', 'lsx-health-plan' ),
116
+                    'options'     => array(
117
+                         ''        => __( 'None', 'lsx-health-plan' ),
118
+                         'excerpt' => __( 'Excerpt', 'lsx-health-plan' ),
119
+                         'full'    => __( 'Full Content', 'lsx-health-plan' ),
120
+                    ),
121
+                    'default' => '',
122
+               )
123
+          );
124
+     }
125 125
 }
126 126
 Workout::get_instance();
Please login to merge, or discard this patch.
classes/admin/settings/class-exercise.php 1 patch
Indentation   +44 added lines, -44 removed lines patch added patch discarded remove patch
@@ -12,52 +12,52 @@
 block discarded – undo
12 12
  */
13 13
 class Exercise {
14 14
 
15
-	/**
16
-	 * Holds class instance
17
-	 *
18
-	 * @since 1.0.0
19
-	 *
20
-	 * @var      object \lsx_health_plan\classes\admin\Exercise()
21
-	 */
22
-	protected static $instance = null;
15
+     /**
16
+      * Holds class instance
17
+      *
18
+      * @since 1.0.0
19
+      *
20
+      * @var      object \lsx_health_plan\classes\admin\Exercise()
21
+      */
22
+     protected static $instance = null;
23 23
 
24
-	/**
25
-	 * Contructor
26
-	 */
27
-	public function __construct() {
28
-		add_action( 'lsx_hp_settings_page_exercise_top', array( $this, 'settings' ), 1, 1 );
29
-	}
24
+     /**
25
+      * Contructor
26
+      */
27
+     public function __construct() {
28
+          add_action( 'lsx_hp_settings_page_exercise_top', array( $this, 'settings' ), 1, 1 );
29
+     }
30 30
 
31
-	/**
32
-	 * Return an instance of this class.
33
-	 *
34
-	 * @since 1.0.0
35
-	 *
36
-	 * @return    object \lsx_health_plan\classes\admin\Exercise()    A single instance of this class.
37
-	 */
38
-	public static function get_instance() {
39
-		// If the single instance hasn't been set, set it now.
40
-		if ( null === self::$instance ) {
41
-			self::$instance = new self();
42
-		}
43
-		return self::$instance;
44
-	}
31
+     /**
32
+      * Return an instance of this class.
33
+      *
34
+      * @since 1.0.0
35
+      *
36
+      * @return    object \lsx_health_plan\classes\admin\Exercise()    A single instance of this class.
37
+      */
38
+     public static function get_instance() {
39
+          // If the single instance hasn't been set, set it now.
40
+          if ( null === self::$instance ) {
41
+               self::$instance = new self();
42
+          }
43
+          return self::$instance;
44
+     }
45 45
 
46
-	/**
47
-	 * Registers the general settings.
48
-	 *
49
-	 * @param object $cmb new_cmb2_box().
50
-	 * @return void
51
-	 */
52
-	public function settings( $cmb ) {
53
-		$cmb->add_field(
54
-			array(
55
-				'id'          => 'exercise_archive_description',
56
-				'type'        => 'wysiwyg',
57
-				'name'        => __( 'Archive Description', 'lsx-health-plan' ),
58
-				'description' => __( 'This will show up on the post type archive.', 'lsx-health-plan' ),
59
-			)
60
-		);
61
-	}
46
+     /**
47
+      * Registers the general settings.
48
+      *
49
+      * @param object $cmb new_cmb2_box().
50
+      * @return void
51
+      */
52
+     public function settings( $cmb ) {
53
+          $cmb->add_field(
54
+               array(
55
+                    'id'          => 'exercise_archive_description',
56
+                    'type'        => 'wysiwyg',
57
+                    'name'        => __( 'Archive Description', 'lsx-health-plan' ),
58
+                    'description' => __( 'This will show up on the post type archive.', 'lsx-health-plan' ),
59
+               )
60
+          );
61
+     }
62 62
 }
63 63
 Exercise::get_instance();
Please login to merge, or discard this patch.