Passed
Push — master ( cd540b...1aca7f )
by Ashley
03:04
created
classes/admin/class-settings.php 1 patch
Indentation   +179 added lines, -179 removed lines patch added patch discarded remove patch
@@ -9,184 +9,184 @@
 block discarded – undo
9 9
 
10 10
 class Settings {
11 11
 
12
-	/**
13
-	 * Holds class instance
14
-	 *
15
-	 * @since 1.0.0
16
-	 *
17
-	 * @var      object \lsx_team\classes\admin\Settings()
18
-	 */
19
-	protected static $instance = null;
20
-
21
-	/**
22
-	 * Option key, and option page slug
23
-	 *
24
-	 * @var string
25
-	 */
26
-	protected $screen_id = 'lsx_team_settings';
27
-
28
-	/**
29
-	 * Contructor
30
-	 */
31
-	public function __construct() {
32
-		add_action( 'cmb2_admin_init', array( $this, 'register_settings_page' ) );
33
-		add_action( 'lsx_team_settings_page', array( $this, 'general_settings' ), 1, 1 );
34
-		add_action( 'lsx_team_settings_page', array( $this, 'global_defaults' ), 3, 1 );
35
-	}
36
-
37
-	/**
38
-	 * Return an instance of this class.
39
-	 *
40
-	 * @since 1.0.0
41
-	 *
42
-	 * @return    object Settings()    A single instance of this class.
43
-	 */
44
-	public static function get_instance() {
45
-		// If the single instance hasn't been set, set it now.
46
-		if ( null === self::$instance ) {
47
-			self::$instance = new self();
48
-		}
49
-		return self::$instance;
50
-	}
51
-
52
-	/**
53
-	 * Hook in and register a submenu options page for the Page post-type menu.
54
-	 */
55
-	public function register_settings_page() {
56
-		$cmb = new_cmb2_box(
57
-			array(
58
-				'id'           => $this->screen_id,
59
-				'title'        => esc_html__( 'Settings', 'lsx-team' ),
60
-				'object_types' => array( 'options-page' ),
61
-				'option_key'   => 'lsx_team_options', // The option key and admin menu page slug.
62
-				'parent_slug'  => 'edit.php?post_type=team', // Make options page a submenu item of the themes menu.
63
-				'capability'   => 'manage_options', // Cap required to view options-page.
64
-			)
65
-		);
66
-		do_action( 'lsx_team_settings_page', $cmb );
67
-	}
68
-
69
-	/**
70
-	 * Registers the general settings.
71
-	 *
72
-	 * @param object $cmb new_cmb2_box().
73
-	 * @return void
74
-	 */
75
-	public function general_settings( $cmb ) {
76
-		$cmb->add_field(
77
-			array(
78
-				'id'      => 'settings_general_title',
79
-				'type'    => 'title',
80
-				'name'    => __( 'General', 'lsx-team' ),
81
-				'default' => __( 'General', 'lsx-team' ),
82
-			)
83
-		);
84
-		$cmb->add_field(
85
-			array(
86
-				'name'        => __( 'Disable Single Posts', 'lsx-team' ),
87
-				'id'          => 'team_disable_single',
88
-				'type'        => 'checkbox',
89
-				'value'       => 1,
90
-				'default'     => 0,
91
-				'description' => __( 'Disable Single Posts.', 'lsx-health-plan' ),
92
-			)
93
-		);
94
-
95
-		$cmb->add_field(
96
-			array(
97
-				'name'        => __( 'Group By Role', 'lsx-team' ),
98
-				'id'          => 'group_by_role',
99
-				'type'        => 'checkbox',
100
-				'value'       => 1,
101
-				'default'     => 0,
102
-				'description' => __( 'This setting creates Role sub-headings on the Team Member archive.', 'lsx-health-plan' ),
103
-			)
104
-		);
105
-		$cmb->add_field( array(
106
-			'name'    => 'Placeholder',
107
-			'desc'    => __( 'This image displays on the archive, search results and team members single if no featured image is set.', 'lsx-health-plan' ),
108
-			'id'      => 'team_placeholder',
109
-			'type'    => 'file',
110
-			'options' => array(
111
-				'url' => false, // Hide the text input for the url.
112
-			),
113
-			'text'    => array(
114
-				'add_upload_file_text' => 'Choose Image',
115
-			),
116
-		) );
117
-		$cmb->add_field(
118
-			array(
119
-				'id'   => 'settings_general_closing',
120
-				'type' => 'tab_closing',
121
-			)
122
-		);
123
-	}
124
-
125
-	/**
126
-	 * Registers the global default settings.
127
-	 *
128
-	 * @param object $cmb new_cmb2_box().
129
-	 * @return void
130
-	 */
131
-	public function global_defaults( $cmb ) {
132
-		$cmb->add_field(
133
-			array(
134
-				'id'      => 'global_defaults_title',
135
-				'type'    => 'title',
136
-				'name'    => __( 'Careers CTA', 'lsx-team' ),
137
-				'default' => __( 'Careers CTA', 'lsx-team' ),
138
-			)
139
-		);
140
-
141
-		$cmb->add_field(
142
-			array(
143
-				'name'        => __( 'Enable careers CTA', 'lsx-team' ),
144
-				'id'          => 'team_careers_cta_enable',
145
-				'type'        => 'checkbox',
146
-				'value'       => 1,
147
-				'default'     => 0,
148
-				'description' => __( 'Displays careers CTA mystery man on team archive.', 'lsx-health-plan' ),
149
-			)
150
-		);
151
-
152
-		$cmb->add_field(
153
-			array(
154
-				'name' => __( 'Title', 'lsx-team' ),
155
-				'id'   => 'team_careers_cta_title',
156
-				'type' => 'text',
157
-			)
158
-		);
159
-
160
-		$cmb->add_field(
161
-			array(
162
-				'name' => __( 'Tagline', 'lsx-team' ),
163
-				'id'   => 'team_careers_cta_tagline',
164
-				'type' => 'text',
165
-			)
166
-		);
167
-
168
-		$cmb->add_field(
169
-			array(
170
-				'name' => __( 'Link Text', 'lsx-team' ),
171
-				'id'   => 'team_careers_cta_link_text',
172
-				'type' => 'text',
173
-			)
174
-		);
175
-
176
-		$cmb->add_field(
177
-			array(
178
-				'name' => __( 'Careers page link', 'lsx-team' ),
179
-				'id'   => 'team_careers_cta_link',
180
-				'type' => 'text',
181
-			)
182
-		);
183
-
184
-		$cmb->add_field(
185
-			array(
186
-				'id'   => 'settings_global_defaults_closing',
187
-				'type' => 'tab_closing',
188
-			)
189
-		);
190
-	}
12
+     /**
13
+      * Holds class instance
14
+      *
15
+      * @since 1.0.0
16
+      *
17
+      * @var      object \lsx_team\classes\admin\Settings()
18
+      */
19
+     protected static $instance = null;
20
+
21
+     /**
22
+      * Option key, and option page slug
23
+      *
24
+      * @var string
25
+      */
26
+     protected $screen_id = 'lsx_team_settings';
27
+
28
+     /**
29
+      * Contructor
30
+      */
31
+     public function __construct() {
32
+          add_action( 'cmb2_admin_init', array( $this, 'register_settings_page' ) );
33
+          add_action( 'lsx_team_settings_page', array( $this, 'general_settings' ), 1, 1 );
34
+          add_action( 'lsx_team_settings_page', array( $this, 'global_defaults' ), 3, 1 );
35
+     }
36
+
37
+     /**
38
+      * Return an instance of this class.
39
+      *
40
+      * @since 1.0.0
41
+      *
42
+      * @return    object Settings()    A single instance of this class.
43
+      */
44
+     public static function get_instance() {
45
+          // If the single instance hasn't been set, set it now.
46
+          if ( null === self::$instance ) {
47
+               self::$instance = new self();
48
+          }
49
+          return self::$instance;
50
+     }
51
+
52
+     /**
53
+      * Hook in and register a submenu options page for the Page post-type menu.
54
+      */
55
+     public function register_settings_page() {
56
+          $cmb = new_cmb2_box(
57
+               array(
58
+                    'id'           => $this->screen_id,
59
+                    'title'        => esc_html__( 'Settings', 'lsx-team' ),
60
+                    'object_types' => array( 'options-page' ),
61
+                    'option_key'   => 'lsx_team_options', // The option key and admin menu page slug.
62
+                    'parent_slug'  => 'edit.php?post_type=team', // Make options page a submenu item of the themes menu.
63
+                    'capability'   => 'manage_options', // Cap required to view options-page.
64
+               )
65
+          );
66
+          do_action( 'lsx_team_settings_page', $cmb );
67
+     }
68
+
69
+     /**
70
+      * Registers the general settings.
71
+      *
72
+      * @param object $cmb new_cmb2_box().
73
+      * @return void
74
+      */
75
+     public function general_settings( $cmb ) {
76
+          $cmb->add_field(
77
+               array(
78
+                    'id'      => 'settings_general_title',
79
+                    'type'    => 'title',
80
+                    'name'    => __( 'General', 'lsx-team' ),
81
+                    'default' => __( 'General', 'lsx-team' ),
82
+               )
83
+          );
84
+          $cmb->add_field(
85
+               array(
86
+                    'name'        => __( 'Disable Single Posts', 'lsx-team' ),
87
+                    'id'          => 'team_disable_single',
88
+                    'type'        => 'checkbox',
89
+                    'value'       => 1,
90
+                    'default'     => 0,
91
+                    'description' => __( 'Disable Single Posts.', 'lsx-health-plan' ),
92
+               )
93
+          );
94
+
95
+          $cmb->add_field(
96
+               array(
97
+                    'name'        => __( 'Group By Role', 'lsx-team' ),
98
+                    'id'          => 'group_by_role',
99
+                    'type'        => 'checkbox',
100
+                    'value'       => 1,
101
+                    'default'     => 0,
102
+                    'description' => __( 'This setting creates Role sub-headings on the Team Member archive.', 'lsx-health-plan' ),
103
+               )
104
+          );
105
+          $cmb->add_field( array(
106
+               'name'    => 'Placeholder',
107
+               'desc'    => __( 'This image displays on the archive, search results and team members single if no featured image is set.', 'lsx-health-plan' ),
108
+               'id'      => 'team_placeholder',
109
+               'type'    => 'file',
110
+               'options' => array(
111
+                    'url' => false, // Hide the text input for the url.
112
+               ),
113
+               'text'    => array(
114
+                    'add_upload_file_text' => 'Choose Image',
115
+               ),
116
+          ) );
117
+          $cmb->add_field(
118
+               array(
119
+                    'id'   => 'settings_general_closing',
120
+                    'type' => 'tab_closing',
121
+               )
122
+          );
123
+     }
124
+
125
+     /**
126
+      * Registers the global default settings.
127
+      *
128
+      * @param object $cmb new_cmb2_box().
129
+      * @return void
130
+      */
131
+     public function global_defaults( $cmb ) {
132
+          $cmb->add_field(
133
+               array(
134
+                    'id'      => 'global_defaults_title',
135
+                    'type'    => 'title',
136
+                    'name'    => __( 'Careers CTA', 'lsx-team' ),
137
+                    'default' => __( 'Careers CTA', 'lsx-team' ),
138
+               )
139
+          );
140
+
141
+          $cmb->add_field(
142
+               array(
143
+                    'name'        => __( 'Enable careers CTA', 'lsx-team' ),
144
+                    'id'          => 'team_careers_cta_enable',
145
+                    'type'        => 'checkbox',
146
+                    'value'       => 1,
147
+                    'default'     => 0,
148
+                    'description' => __( 'Displays careers CTA mystery man on team archive.', 'lsx-health-plan' ),
149
+               )
150
+          );
151
+
152
+          $cmb->add_field(
153
+               array(
154
+                    'name' => __( 'Title', 'lsx-team' ),
155
+                    'id'   => 'team_careers_cta_title',
156
+                    'type' => 'text',
157
+               )
158
+          );
159
+
160
+          $cmb->add_field(
161
+               array(
162
+                    'name' => __( 'Tagline', 'lsx-team' ),
163
+                    'id'   => 'team_careers_cta_tagline',
164
+                    'type' => 'text',
165
+               )
166
+          );
167
+
168
+          $cmb->add_field(
169
+               array(
170
+                    'name' => __( 'Link Text', 'lsx-team' ),
171
+                    'id'   => 'team_careers_cta_link_text',
172
+                    'type' => 'text',
173
+               )
174
+          );
175
+
176
+          $cmb->add_field(
177
+               array(
178
+                    'name' => __( 'Careers page link', 'lsx-team' ),
179
+                    'id'   => 'team_careers_cta_link',
180
+                    'type' => 'text',
181
+               )
182
+          );
183
+
184
+          $cmb->add_field(
185
+               array(
186
+                    'id'   => 'settings_global_defaults_closing',
187
+                    'type' => 'tab_closing',
188
+               )
189
+          );
190
+     }
191 191
 
192 192
 }
Please login to merge, or discard this patch.
classes/class-lsx-team-admin.php 1 patch
Indentation   +439 added lines, -439 removed lines patch added patch discarded remove patch
@@ -11,445 +11,445 @@
 block discarded – undo
11 11
 
12 12
 class LSX_Team_Admin {
13 13
 
14
-	public function __construct() {
15
-		$this->load_classes();
16
-
17
-		add_action( 'init', array( $this, 'post_type_setup' ) );
18
-		add_action( 'init', array( $this, 'taxonomy_setup' ) );
19
-
20
-		add_action( 'cmb2_admin_init', array( $this, 'details_metabox' ) );
21
-		add_action( 'cmb2_admin_init', array( $this, 'projects_details_metabox' ) );
22
-		add_action( 'cmb2_admin_init', array( $this, 'services_details_metabox' ) );
23
-		add_action( 'cmb2_admin_init', array( $this, 'testimonials_details_metabox' ) );
24
-
25
-		add_action( 'admin_enqueue_scripts', array( $this, 'assets' ) );
26
-
27
-		add_filter( 'type_url_form_media', array( $this, 'change_attachment_field_button' ), 20, 1 );
28
-		add_filter( 'enter_title_here', array( $this, 'change_title_text' ) );
29
-	}
30
-
31
-	/**
32
-	 * Loads the admin subclasses
33
-	 */
34
-	private function load_classes() {
35
-		require_once LSX_TEAM_PATH . 'classes/admin/class-settings.php';
36
-		$this->settings = \lsx\team\classes\admin\Settings::get_instance();
37
-
38
-		require_once LSX_TEAM_PATH . 'classes/admin/class-settings-theme.php';
39
-		$this->settings_theme = \lsx\team\classes\admin\Settings_Theme::get_instance();
40
-	}
41
-
42
-	public function post_type_setup() {
43
-		$labels = array(
44
-			'name'               => esc_html_x( 'Team Members', 'post type general name', 'lsx-team' ),
45
-			'singular_name'      => esc_html_x( 'Team Member', 'post type singular name', 'lsx-team' ),
46
-			'add_new'            => esc_html_x( 'Add New', 'post type general name', 'lsx-team' ),
47
-			'add_new_item'       => esc_html__( 'Add New Team Member', 'lsx-team' ),
48
-			'edit_item'          => esc_html__( 'Edit Team Member', 'lsx-team' ),
49
-			'new_item'           => esc_html__( 'New Team Member', 'lsx-team' ),
50
-			'all_items'          => esc_html__( 'All Team Members', 'lsx-team' ),
51
-			'view_item'          => esc_html__( 'View Team Member', 'lsx-team' ),
52
-			'search_items'       => esc_html__( 'Search Team Members', 'lsx-team' ),
53
-			'not_found'          => esc_html__( 'No team members found', 'lsx-team' ),
54
-			'not_found_in_trash' => esc_html__( 'No team members found in Trash', 'lsx-team' ),
55
-			'parent_item_colon'  => '',
56
-			'menu_name'          => esc_html_x( 'Team Members', 'admin menu', 'lsx-team' ),
57
-		);
58
-
59
-		$args = array(
60
-			'labels'             => $labels,
61
-			'public'             => true,
62
-			'publicly_queryable' => true,
63
-			'show_ui'            => true,
64
-			'show_in_menu'       => true,
65
-			'menu_icon'          => 'dashicons-groups',
66
-			'query_var'          => true,
67
-			'rewrite'            => array(
68
-				'slug' => 'team',
69
-			),
70
-			'capability_type'    => 'post',
71
-			'has_archive'        => 'team',
72
-			'hierarchical'       => false,
73
-			'menu_position'      => null,
74
-			'supports'           => array(
75
-				'title',
76
-				'editor',
77
-				'excerpt',
78
-				'thumbnail',
79
-				'custom-fields',
80
-			),
81
-			'show_in_rest'          => true,
82
-		);
83
-
84
-		register_post_type( 'team', $args );
85
-	}
86
-
87
-	public function taxonomy_setup() {
88
-		$labels = array(
89
-			'name'              => esc_html_x( 'Roles', 'taxonomy general name', 'lsx-team' ),
90
-			'singular_name'     => esc_html_x( 'Role', 'taxonomy singular name', 'lsx-team' ),
91
-			'search_items'      => esc_html__( 'Search Roles', 'lsx-team' ),
92
-			'all_items'         => esc_html__( 'All Roles', 'lsx-team' ),
93
-			'parent_item'       => esc_html__( 'Parent Role', 'lsx-team' ),
94
-			'parent_item_colon' => esc_html__( 'Parent Role:', 'lsx-team' ),
95
-			'edit_item'         => esc_html__( 'Edit Role', 'lsx-team' ),
96
-			'update_item'       => esc_html__( 'Update Role', 'lsx-team' ),
97
-			'add_new_item'      => esc_html__( 'Add New Role', 'lsx-team' ),
98
-			'new_item_name'     => esc_html__( 'New Role Name', 'lsx-team' ),
99
-			'menu_name'         => esc_html__( 'Roles', 'lsx-team' ),
100
-		);
101
-
102
-		$args = array(
103
-			'hierarchical'      => true,
104
-			'labels'            => $labels,
105
-			'show_ui'           => true,
106
-			'show_admin_column' => true,
107
-			'query_var'         => true,
108
-			'rewrite'           => array(
109
-				'slug' => 'team-role',
110
-			),
111
-			'show_in_rest'          => true,
112
-		);
113
-
114
-		register_taxonomy( 'team_role', array( 'team' ), $args );
115
-	}
116
-
117
-	/**
118
-	 * Define the metabox and field configurations.
119
-	 */
120
-	public function details_metabox() {
121
-
122
-		$prefix = 'lsx_';
123
-
124
-		$users = get_transient( 'lsx_team_users' );
125
-
126
-		if ( false === $users || '' === $users ) {
127
-			$users = get_users( array(
128
-				'role__in' => array( 'administrator', 'editor', 'author' ),
129
-			) );
130
-			set_transient( 'lsx_team_users', $users, 5 * 60 );
131
-		}
132
-
133
-		foreach ( $users as $user ) {
134
-			$user_array[$user->ID] = $user->user_login;
135
-		}
136
-
137
-		$cmb = new_cmb2_box(
138
-			array(
139
-				'id'           => $prefix . '_team',
140
-				'title'        => esc_html__( 'Team Member Details', 'lsx-team' ),
141
-				'object_types' => 'team',
142
-				'context'      => 'normal',
143
-				'priority'     => 'low',
144
-				'show_names'   => true,
145
-			)
146
-		);
147
-
148
-		$cmb->add_field(
149
-			array(
150
-				'name'         => esc_html__( 'Featured:', 'lsx-team' ),
151
-				'id'           => $prefix . 'featured',
152
-				'type'         => 'checkbox',
153
-				'value'        => 1,
154
-				'default'      => 0,
155
-				'show_in_rest' => true,
156
-			)
157
-		);
158
-
159
-		$cmb->add_field(
160
-			array(
161
-				'name'         => esc_html__( 'Site User', 'lsx-team' ),
162
-				'id'           => $prefix . 'site_user',
163
-				'allow_none'   => true,
164
-				'type'         => 'select',
165
-				'options'      => $user_array,
166
-				'show_in_rest' => true,
167
-			)
168
-		);
169
-
170
-		$cmb->add_field(
171
-			array(
172
-				'name'         => esc_html__( 'Job Title:', 'lsx-team' ),
173
-				'id'           => $prefix . 'job_title',
174
-				'type'         => 'text',
175
-				'show_in_rest' => true,
176
-			)
177
-		);
178
-
179
-		$cmb->add_field(
180
-			array(
181
-				'name'         => esc_html__( 'Location:', 'lsx-team' ),
182
-				'id'           => $prefix . 'location',
183
-				'type'         => 'text',
184
-				'show_in_rest' => true,
185
-			)
186
-		);
187
-
188
-		$cmb->add_field(
189
-			array(
190
-				'name'         => esc_html__( 'Contact Email Address:', 'lsx-team' ),
191
-				'id'           => $prefix . 'email_contact',
192
-				'type'         => 'text',
193
-				'show_in_rest' => true,
194
-			)
195
-		);
196
-
197
-		$cmb->add_field(
198
-			array(
199
-				'name'         => esc_html__( 'Gravatar Email Address:', 'lsx-team' ),
200
-				'desc'         => esc_html__( 'Used for Gravatar if a featured image is not set', 'lsx-team' ),
201
-				'id'           => $prefix . 'email_gravatar',
202
-				'type'         => 'text',
203
-				'show_in_rest' => true,
204
-			)
205
-		);
206
-
207
-		$cmb->add_field(
208
-			array(
209
-				'name'         => esc_html__( 'Telephone Number:', 'lsx-team' ),
210
-				'id'           => $prefix . 'tel',
211
-				'type'         => 'text',
212
-				'show_in_rest' => true,
213
-			)
214
-		);
215
-
216
-		$cmb->add_field(
217
-			array(
218
-				'name'         => esc_html__( 'Skype Name:', 'lsx-team' ),
219
-				'id'           => $prefix . 'skype',
220
-				'type'         => 'text',
221
-				'show_in_rest' => true,
222
-			)
223
-		);
224
-
225
-		$cmb->add_field(
226
-			array(
227
-				'name'         => esc_html__( 'Facebook URL', 'lsx-team' ),
228
-				'id'           => $prefix . 'facebook',
229
-				'type'         => 'text_url',
230
-				'show_in_rest' => true,
231
-			)
232
-		);
233
-
234
-		$cmb->add_field(
235
-			array(
236
-				'name'         => esc_html__( 'Twitter URL', 'lsx-team' ),
237
-				'id'           => $prefix . 'twitter',
238
-				'type'         => 'text_url',
239
-				'show_in_rest' => true,
240
-			)
241
-		);
242
-
243
-		$cmb->add_field(
244
-			array(
245
-				'name'         => esc_html__( 'LinkedIn URL', 'lsx-team' ),
246
-				'id'           => $prefix . 'linkedin',
247
-				'type'         => 'text_url',
248
-				'show_in_rest' => true,
249
-			)
250
-		);
251
-
252
-		$cmb->add_field(
253
-			array(
254
-				'name'         => esc_html__( 'Github URL', 'lsx-team' ),
255
-				'id'           => $prefix . 'github',
256
-				'type'         => 'text_url',
257
-				'show_in_rest' => true,
258
-			)
259
-		);
260
-
261
-		$cmb->add_field(
262
-			array(
263
-				'name'         => esc_html__( 'WordPress URL', 'lsx-team' ),
264
-				'id'           => $prefix . 'wordpress',
265
-				'type'         => 'text_url',
266
-				'show_in_rest' => true,
267
-			)
268
-		);
269
-	}
270
-
271
-	/**
272
-	 * Define the metabox and field configurations.
273
-	 */
274
-	public function projects_details_metabox() {
275
-
276
-		if ( class_exists( 'LSX_Projects' ) ) {
277
-
278
-			$prefix = 'lsx_';
279
-
280
-			$cmb = new_cmb2_box(
281
-				array(
282
-					'id'           => $prefix . '_team',
283
-					'context'      => 'normal',
284
-					'priority'     => 'low',
285
-					'show_names'   => true,
286
-					'object_types' => array( 'team' ),
287
-				)
288
-			);
289
-			$cmb->add_field(
290
-				array(
291
-					'name'       => __( 'Projects:', 'lsx-team' ),
292
-					'id'         => 'project_to_team',
293
-					'type'       => 'post_search_ajax',
294
-					'limit'      => 15,
295
-					'sortable'   => true,
296
-					'query_args' => array(
297
-						'post_type'      => array( 'project' ),
298
-						'post_status'    => array( 'publish' ),
299
-						'posts_per_page' => -1,
300
-					),
301
-				)
302
-			);
303
-		}
304
-	}
305
-
306
-	/**
307
-	 * Define the metabox and field configurations.
308
-	 */
309
-	public function services_details_metabox() {
310
-
311
-		if ( class_exists( 'LSX_Services' ) ) {
312
-
313
-			$prefix = 'lsx_';
314
-
315
-			$cmb = new_cmb2_box(
316
-				array(
317
-					'id'           => $prefix . '_team',
318
-					'context'      => 'normal',
319
-					'priority'     => 'low',
320
-					'show_names'   => true,
321
-					'object_types' => array( 'team' ),
322
-				)
323
-			);
324
-			$cmb->add_field(
325
-				array(
326
-					'name'       => __( 'Services:', 'lsx-team' ),
327
-					'id'         => 'service_to_team',
328
-					'type'       => 'post_search_ajax',
329
-					'limit'      => 15,
330
-					'sortable'   => true,
331
-					'query_args' => array(
332
-						'post_type'      => array( 'service' ),
333
-						'post_status'    => array( 'publish' ),
334
-						'posts_per_page' => -1,
335
-					),
336
-				)
337
-			);
338
-		}
339
-	}
340
-
341
-	/**
342
-	 * Define the metabox and field configurations.
343
-	 */
344
-	public function testimonials_details_metabox() {
345
-
346
-		if ( class_exists( 'LSX_Testimonials' ) ) {
347
-
348
-			$prefix = 'lsx_';
349
-
350
-			$cmb = new_cmb2_box(
351
-				array(
352
-					'id'           => $prefix . '_team',
353
-					'context'      => 'normal',
354
-					'priority'     => 'low',
355
-					'show_names'   => true,
356
-					'object_types' => array( 'team' ),
357
-				)
358
-			);
359
-			$cmb->add_field(
360
-				array(
361
-					'name'       => __( 'Testimonials:', 'lsx-team' ),
362
-					'id'         => 'testimonial_to_team',
363
-					'type'       => 'post_search_ajax',
364
-					'limit'      => 15,
365
-					'sortable'   => true,
366
-					'query_args' => array(
367
-						'post_type'      => array( 'testimonial' ),
368
-						'post_status'    => array( 'publish' ),
369
-						'posts_per_page' => -1,
370
-					),
371
-				)
372
-			);
373
-		}
374
-
375
-	}
376
-
377
-	/**
378
-	 * Sets up the "post relations".
379
-	 */
380
-	public function post_relations( $post_id, $field, $value ) {
381
-		$connections = array(
382
-			'team_to_testimonial',
383
-			'testimonial_to_team',
384
-
385
-			'team_to_project',
386
-			'project_to_team',
387
-
388
-			'team_to_service',
389
-			'service_to_team',
390
-		);
391
-
392
-		if ( in_array( $field['id'], $connections ) ) {
393
-			$this->save_related_post( $connections, $post_id, $field, $value );
394
-		}
395
-	}
396
-
397
-	/**
398
-	 * Save the reverse post relation.
399
-	 */
400
-	public function save_related_post( $connections, $post_id, $field, $value ) {
401
-		$ids = explode( '_to_', $field['id'] );
402
-		$relation = $ids[1] . '_to_' . $ids[0];
403
-
404
-		if ( in_array( $relation, $connections ) ) {
405
-			$previous_values = get_post_meta( $post_id, $field['id'], false );
406
-
407
-			if ( ! empty( $previous_values ) ) {
408
-				foreach ( $previous_values as $v ) {
409
-					delete_post_meta( $v, $relation, $post_id );
410
-				}
411
-			}
412
-
413
-			if ( is_array( $value ) ) {
414
-				foreach ( $value as $v ) {
415
-					if ( ! empty( $v ) ) {
416
-						add_post_meta( $v, $relation, $post_id );
417
-					}
418
-				}
419
-			}
420
-		}
421
-	}
422
-
423
-	public function assets() {
424
-		//wp_enqueue_media();
425
-		wp_enqueue_script( 'media-upload' );
426
-		wp_enqueue_script( 'thickbox' );
427
-		wp_enqueue_style( 'thickbox' );
428
-
429
-		wp_enqueue_script( 'lsx-team-admin', LSX_TEAM_URL . 'assets/js/lsx-team-admin.min.js', array( 'jquery' ), LSX_TEAM_VER );
430
-		wp_enqueue_style( 'lsx-team-admin', LSX_TEAM_URL . 'assets/css/lsx-team-admin.css', array(), LSX_TEAM_VER );
431
-	}
432
-
433
-	/**
434
-	 * Change the "Insert into Post" button text when media modal is used for feature images
435
-	 */
436
-	public function change_attachment_field_button( $html ) {
437
-		if ( isset( $_GET['feature_image_text_button'] ) ) {
438
-			$html = str_replace( 'value="Insert into Post"', sprintf( 'value="%s"', esc_html__( 'Select featured image', 'lsx-team' ) ), $html );
439
-		}
440
-
441
-		return $html;
442
-	}
443
-
444
-	public function change_title_text( $title ) {
445
-		$screen = get_current_screen();
446
-
447
-		if ( 'team' === $screen->post_type ) {
448
-			$title = esc_attr__( 'Enter team member name', 'lsx-team' );
449
-		}
450
-
451
-		return $title;
452
-	}
14
+     public function __construct() {
15
+          $this->load_classes();
16
+
17
+          add_action( 'init', array( $this, 'post_type_setup' ) );
18
+          add_action( 'init', array( $this, 'taxonomy_setup' ) );
19
+
20
+          add_action( 'cmb2_admin_init', array( $this, 'details_metabox' ) );
21
+          add_action( 'cmb2_admin_init', array( $this, 'projects_details_metabox' ) );
22
+          add_action( 'cmb2_admin_init', array( $this, 'services_details_metabox' ) );
23
+          add_action( 'cmb2_admin_init', array( $this, 'testimonials_details_metabox' ) );
24
+
25
+          add_action( 'admin_enqueue_scripts', array( $this, 'assets' ) );
26
+
27
+          add_filter( 'type_url_form_media', array( $this, 'change_attachment_field_button' ), 20, 1 );
28
+          add_filter( 'enter_title_here', array( $this, 'change_title_text' ) );
29
+     }
30
+
31
+     /**
32
+      * Loads the admin subclasses
33
+      */
34
+     private function load_classes() {
35
+          require_once LSX_TEAM_PATH . 'classes/admin/class-settings.php';
36
+          $this->settings = \lsx\team\classes\admin\Settings::get_instance();
37
+
38
+          require_once LSX_TEAM_PATH . 'classes/admin/class-settings-theme.php';
39
+          $this->settings_theme = \lsx\team\classes\admin\Settings_Theme::get_instance();
40
+     }
41
+
42
+     public function post_type_setup() {
43
+          $labels = array(
44
+               'name'               => esc_html_x( 'Team Members', 'post type general name', 'lsx-team' ),
45
+               'singular_name'      => esc_html_x( 'Team Member', 'post type singular name', 'lsx-team' ),
46
+               'add_new'            => esc_html_x( 'Add New', 'post type general name', 'lsx-team' ),
47
+               'add_new_item'       => esc_html__( 'Add New Team Member', 'lsx-team' ),
48
+               'edit_item'          => esc_html__( 'Edit Team Member', 'lsx-team' ),
49
+               'new_item'           => esc_html__( 'New Team Member', 'lsx-team' ),
50
+               'all_items'          => esc_html__( 'All Team Members', 'lsx-team' ),
51
+               'view_item'          => esc_html__( 'View Team Member', 'lsx-team' ),
52
+               'search_items'       => esc_html__( 'Search Team Members', 'lsx-team' ),
53
+               'not_found'          => esc_html__( 'No team members found', 'lsx-team' ),
54
+               'not_found_in_trash' => esc_html__( 'No team members found in Trash', 'lsx-team' ),
55
+               'parent_item_colon'  => '',
56
+               'menu_name'          => esc_html_x( 'Team Members', 'admin menu', 'lsx-team' ),
57
+          );
58
+
59
+          $args = array(
60
+               'labels'             => $labels,
61
+               'public'             => true,
62
+               'publicly_queryable' => true,
63
+               'show_ui'            => true,
64
+               'show_in_menu'       => true,
65
+               'menu_icon'          => 'dashicons-groups',
66
+               'query_var'          => true,
67
+               'rewrite'            => array(
68
+                    'slug' => 'team',
69
+               ),
70
+               'capability_type'    => 'post',
71
+               'has_archive'        => 'team',
72
+               'hierarchical'       => false,
73
+               'menu_position'      => null,
74
+               'supports'           => array(
75
+                    'title',
76
+                    'editor',
77
+                    'excerpt',
78
+                    'thumbnail',
79
+                    'custom-fields',
80
+               ),
81
+               'show_in_rest'          => true,
82
+          );
83
+
84
+          register_post_type( 'team', $args );
85
+     }
86
+
87
+     public function taxonomy_setup() {
88
+          $labels = array(
89
+               'name'              => esc_html_x( 'Roles', 'taxonomy general name', 'lsx-team' ),
90
+               'singular_name'     => esc_html_x( 'Role', 'taxonomy singular name', 'lsx-team' ),
91
+               'search_items'      => esc_html__( 'Search Roles', 'lsx-team' ),
92
+               'all_items'         => esc_html__( 'All Roles', 'lsx-team' ),
93
+               'parent_item'       => esc_html__( 'Parent Role', 'lsx-team' ),
94
+               'parent_item_colon' => esc_html__( 'Parent Role:', 'lsx-team' ),
95
+               'edit_item'         => esc_html__( 'Edit Role', 'lsx-team' ),
96
+               'update_item'       => esc_html__( 'Update Role', 'lsx-team' ),
97
+               'add_new_item'      => esc_html__( 'Add New Role', 'lsx-team' ),
98
+               'new_item_name'     => esc_html__( 'New Role Name', 'lsx-team' ),
99
+               'menu_name'         => esc_html__( 'Roles', 'lsx-team' ),
100
+          );
101
+
102
+          $args = array(
103
+               'hierarchical'      => true,
104
+               'labels'            => $labels,
105
+               'show_ui'           => true,
106
+               'show_admin_column' => true,
107
+               'query_var'         => true,
108
+               'rewrite'           => array(
109
+                    'slug' => 'team-role',
110
+               ),
111
+               'show_in_rest'          => true,
112
+          );
113
+
114
+          register_taxonomy( 'team_role', array( 'team' ), $args );
115
+     }
116
+
117
+     /**
118
+      * Define the metabox and field configurations.
119
+      */
120
+     public function details_metabox() {
121
+
122
+          $prefix = 'lsx_';
123
+
124
+          $users = get_transient( 'lsx_team_users' );
125
+
126
+          if ( false === $users || '' === $users ) {
127
+               $users = get_users( array(
128
+                    'role__in' => array( 'administrator', 'editor', 'author' ),
129
+               ) );
130
+               set_transient( 'lsx_team_users', $users, 5 * 60 );
131
+          }
132
+
133
+          foreach ( $users as $user ) {
134
+               $user_array[$user->ID] = $user->user_login;
135
+          }
136
+
137
+          $cmb = new_cmb2_box(
138
+               array(
139
+                    'id'           => $prefix . '_team',
140
+                    'title'        => esc_html__( 'Team Member Details', 'lsx-team' ),
141
+                    'object_types' => 'team',
142
+                    'context'      => 'normal',
143
+                    'priority'     => 'low',
144
+                    'show_names'   => true,
145
+               )
146
+          );
147
+
148
+          $cmb->add_field(
149
+               array(
150
+                    'name'         => esc_html__( 'Featured:', 'lsx-team' ),
151
+                    'id'           => $prefix . 'featured',
152
+                    'type'         => 'checkbox',
153
+                    'value'        => 1,
154
+                    'default'      => 0,
155
+                    'show_in_rest' => true,
156
+               )
157
+          );
158
+
159
+          $cmb->add_field(
160
+               array(
161
+                    'name'         => esc_html__( 'Site User', 'lsx-team' ),
162
+                    'id'           => $prefix . 'site_user',
163
+                    'allow_none'   => true,
164
+                    'type'         => 'select',
165
+                    'options'      => $user_array,
166
+                    'show_in_rest' => true,
167
+               )
168
+          );
169
+
170
+          $cmb->add_field(
171
+               array(
172
+                    'name'         => esc_html__( 'Job Title:', 'lsx-team' ),
173
+                    'id'           => $prefix . 'job_title',
174
+                    'type'         => 'text',
175
+                    'show_in_rest' => true,
176
+               )
177
+          );
178
+
179
+          $cmb->add_field(
180
+               array(
181
+                    'name'         => esc_html__( 'Location:', 'lsx-team' ),
182
+                    'id'           => $prefix . 'location',
183
+                    'type'         => 'text',
184
+                    'show_in_rest' => true,
185
+               )
186
+          );
187
+
188
+          $cmb->add_field(
189
+               array(
190
+                    'name'         => esc_html__( 'Contact Email Address:', 'lsx-team' ),
191
+                    'id'           => $prefix . 'email_contact',
192
+                    'type'         => 'text',
193
+                    'show_in_rest' => true,
194
+               )
195
+          );
196
+
197
+          $cmb->add_field(
198
+               array(
199
+                    'name'         => esc_html__( 'Gravatar Email Address:', 'lsx-team' ),
200
+                    'desc'         => esc_html__( 'Used for Gravatar if a featured image is not set', 'lsx-team' ),
201
+                    'id'           => $prefix . 'email_gravatar',
202
+                    'type'         => 'text',
203
+                    'show_in_rest' => true,
204
+               )
205
+          );
206
+
207
+          $cmb->add_field(
208
+               array(
209
+                    'name'         => esc_html__( 'Telephone Number:', 'lsx-team' ),
210
+                    'id'           => $prefix . 'tel',
211
+                    'type'         => 'text',
212
+                    'show_in_rest' => true,
213
+               )
214
+          );
215
+
216
+          $cmb->add_field(
217
+               array(
218
+                    'name'         => esc_html__( 'Skype Name:', 'lsx-team' ),
219
+                    'id'           => $prefix . 'skype',
220
+                    'type'         => 'text',
221
+                    'show_in_rest' => true,
222
+               )
223
+          );
224
+
225
+          $cmb->add_field(
226
+               array(
227
+                    'name'         => esc_html__( 'Facebook URL', 'lsx-team' ),
228
+                    'id'           => $prefix . 'facebook',
229
+                    'type'         => 'text_url',
230
+                    'show_in_rest' => true,
231
+               )
232
+          );
233
+
234
+          $cmb->add_field(
235
+               array(
236
+                    'name'         => esc_html__( 'Twitter URL', 'lsx-team' ),
237
+                    'id'           => $prefix . 'twitter',
238
+                    'type'         => 'text_url',
239
+                    'show_in_rest' => true,
240
+               )
241
+          );
242
+
243
+          $cmb->add_field(
244
+               array(
245
+                    'name'         => esc_html__( 'LinkedIn URL', 'lsx-team' ),
246
+                    'id'           => $prefix . 'linkedin',
247
+                    'type'         => 'text_url',
248
+                    'show_in_rest' => true,
249
+               )
250
+          );
251
+
252
+          $cmb->add_field(
253
+               array(
254
+                    'name'         => esc_html__( 'Github URL', 'lsx-team' ),
255
+                    'id'           => $prefix . 'github',
256
+                    'type'         => 'text_url',
257
+                    'show_in_rest' => true,
258
+               )
259
+          );
260
+
261
+          $cmb->add_field(
262
+               array(
263
+                    'name'         => esc_html__( 'WordPress URL', 'lsx-team' ),
264
+                    'id'           => $prefix . 'wordpress',
265
+                    'type'         => 'text_url',
266
+                    'show_in_rest' => true,
267
+               )
268
+          );
269
+     }
270
+
271
+     /**
272
+      * Define the metabox and field configurations.
273
+      */
274
+     public function projects_details_metabox() {
275
+
276
+          if ( class_exists( 'LSX_Projects' ) ) {
277
+
278
+               $prefix = 'lsx_';
279
+
280
+               $cmb = new_cmb2_box(
281
+                    array(
282
+                         'id'           => $prefix . '_team',
283
+                         'context'      => 'normal',
284
+                         'priority'     => 'low',
285
+                         'show_names'   => true,
286
+                         'object_types' => array( 'team' ),
287
+                    )
288
+               );
289
+               $cmb->add_field(
290
+                    array(
291
+                         'name'       => __( 'Projects:', 'lsx-team' ),
292
+                         'id'         => 'project_to_team',
293
+                         'type'       => 'post_search_ajax',
294
+                         'limit'      => 15,
295
+                         'sortable'   => true,
296
+                         'query_args' => array(
297
+                              'post_type'      => array( 'project' ),
298
+                              'post_status'    => array( 'publish' ),
299
+                              'posts_per_page' => -1,
300
+                         ),
301
+                    )
302
+               );
303
+          }
304
+     }
305
+
306
+     /**
307
+      * Define the metabox and field configurations.
308
+      */
309
+     public function services_details_metabox() {
310
+
311
+          if ( class_exists( 'LSX_Services' ) ) {
312
+
313
+               $prefix = 'lsx_';
314
+
315
+               $cmb = new_cmb2_box(
316
+                    array(
317
+                         'id'           => $prefix . '_team',
318
+                         'context'      => 'normal',
319
+                         'priority'     => 'low',
320
+                         'show_names'   => true,
321
+                         'object_types' => array( 'team' ),
322
+                    )
323
+               );
324
+               $cmb->add_field(
325
+                    array(
326
+                         'name'       => __( 'Services:', 'lsx-team' ),
327
+                         'id'         => 'service_to_team',
328
+                         'type'       => 'post_search_ajax',
329
+                         'limit'      => 15,
330
+                         'sortable'   => true,
331
+                         'query_args' => array(
332
+                              'post_type'      => array( 'service' ),
333
+                              'post_status'    => array( 'publish' ),
334
+                              'posts_per_page' => -1,
335
+                         ),
336
+                    )
337
+               );
338
+          }
339
+     }
340
+
341
+     /**
342
+      * Define the metabox and field configurations.
343
+      */
344
+     public function testimonials_details_metabox() {
345
+
346
+          if ( class_exists( 'LSX_Testimonials' ) ) {
347
+
348
+               $prefix = 'lsx_';
349
+
350
+               $cmb = new_cmb2_box(
351
+                    array(
352
+                         'id'           => $prefix . '_team',
353
+                         'context'      => 'normal',
354
+                         'priority'     => 'low',
355
+                         'show_names'   => true,
356
+                         'object_types' => array( 'team' ),
357
+                    )
358
+               );
359
+               $cmb->add_field(
360
+                    array(
361
+                         'name'       => __( 'Testimonials:', 'lsx-team' ),
362
+                         'id'         => 'testimonial_to_team',
363
+                         'type'       => 'post_search_ajax',
364
+                         'limit'      => 15,
365
+                         'sortable'   => true,
366
+                         'query_args' => array(
367
+                              'post_type'      => array( 'testimonial' ),
368
+                              'post_status'    => array( 'publish' ),
369
+                              'posts_per_page' => -1,
370
+                         ),
371
+                    )
372
+               );
373
+          }
374
+
375
+     }
376
+
377
+     /**
378
+      * Sets up the "post relations".
379
+      */
380
+     public function post_relations( $post_id, $field, $value ) {
381
+          $connections = array(
382
+               'team_to_testimonial',
383
+               'testimonial_to_team',
384
+
385
+               'team_to_project',
386
+               'project_to_team',
387
+
388
+               'team_to_service',
389
+               'service_to_team',
390
+          );
391
+
392
+          if ( in_array( $field['id'], $connections ) ) {
393
+               $this->save_related_post( $connections, $post_id, $field, $value );
394
+          }
395
+     }
396
+
397
+     /**
398
+      * Save the reverse post relation.
399
+      */
400
+     public function save_related_post( $connections, $post_id, $field, $value ) {
401
+          $ids = explode( '_to_', $field['id'] );
402
+          $relation = $ids[1] . '_to_' . $ids[0];
403
+
404
+          if ( in_array( $relation, $connections ) ) {
405
+               $previous_values = get_post_meta( $post_id, $field['id'], false );
406
+
407
+               if ( ! empty( $previous_values ) ) {
408
+                    foreach ( $previous_values as $v ) {
409
+                         delete_post_meta( $v, $relation, $post_id );
410
+                    }
411
+               }
412
+
413
+               if ( is_array( $value ) ) {
414
+                    foreach ( $value as $v ) {
415
+                         if ( ! empty( $v ) ) {
416
+                              add_post_meta( $v, $relation, $post_id );
417
+                         }
418
+                    }
419
+               }
420
+          }
421
+     }
422
+
423
+     public function assets() {
424
+          //wp_enqueue_media();
425
+          wp_enqueue_script( 'media-upload' );
426
+          wp_enqueue_script( 'thickbox' );
427
+          wp_enqueue_style( 'thickbox' );
428
+
429
+          wp_enqueue_script( 'lsx-team-admin', LSX_TEAM_URL . 'assets/js/lsx-team-admin.min.js', array( 'jquery' ), LSX_TEAM_VER );
430
+          wp_enqueue_style( 'lsx-team-admin', LSX_TEAM_URL . 'assets/css/lsx-team-admin.css', array(), LSX_TEAM_VER );
431
+     }
432
+
433
+     /**
434
+      * Change the "Insert into Post" button text when media modal is used for feature images
435
+      */
436
+     public function change_attachment_field_button( $html ) {
437
+          if ( isset( $_GET['feature_image_text_button'] ) ) {
438
+               $html = str_replace( 'value="Insert into Post"', sprintf( 'value="%s"', esc_html__( 'Select featured image', 'lsx-team' ) ), $html );
439
+          }
440
+
441
+          return $html;
442
+     }
443
+
444
+     public function change_title_text( $title ) {
445
+          $screen = get_current_screen();
446
+
447
+          if ( 'team' === $screen->post_type ) {
448
+               $title = esc_attr__( 'Enter team member name', 'lsx-team' );
449
+          }
450
+
451
+          return $title;
452
+     }
453 453
 }
454 454
 
455 455
 $lsx_team_admin = new LSX_Team_Admin();
Please login to merge, or discard this patch.
templates/taxonomy-team_role.php 1 patch
Indentation   +6 added lines, -6 removed lines patch added patch discarded remove patch
@@ -23,13 +23,13 @@
 block discarded – undo
23 23
 				<div class="row row-flex">
24 24
 
25 25
 					<?php
26
-						while ( have_posts() ) {
27
-							the_post();
28
-							include( LSX_TEAM_PATH . '/templates/content-archive-team.php' );
29
-						}
26
+                              while ( have_posts() ) {
27
+                                   the_post();
28
+                                   include( LSX_TEAM_PATH . '/templates/content-archive-team.php' );
29
+                              }
30 30
 
31
-						include( LSX_TEAM_PATH . '/templates/content-archive-team-careers-cta.php' );
32
-					?>
31
+                              include( LSX_TEAM_PATH . '/templates/content-archive-team-careers-cta.php' );
32
+                         ?>
33 33
 
34 34
 				</div>
35 35
 			</div>
Please login to merge, or discard this patch.
templates/content-single-team.php 1 patch
Indentation   +130 added lines, -130 removed lines patch added patch discarded remove patch
@@ -5,136 +5,136 @@
 block discarded – undo
5 5
 ?>
6 6
 
7 7
 <?php
8
-	global $lsx_team;
9
-
10
-	$thumbnail = $lsx_team->get_thumbnail( get_the_ID(), 'lsx-team-single' );
11
-
12
-	$job_title = get_post_meta( get_the_ID(), 'lsx_job_title', true );
13
-
14
-	$links = array(
15
-		'facebook'  => get_post_meta( get_the_ID(), 'lsx_facebook', true ),
16
-		'twitter'   => get_post_meta( get_the_ID(), 'lsx_twitter', true ),
17
-		'linkedin'  => get_post_meta( get_the_ID(), 'lsx_linkedin', true ),
18
-		'github'    => get_post_meta( get_the_ID(), 'lsx_github', true ),
19
-		'wordpress' => get_post_meta( get_the_ID(), 'lsx_wordpress', true ),
20
-	);
21
-
22
-	foreach ( $links as $service => $link ) {
23
-		if ( empty( $link ) ) {
24
-			unset( $links[ $service ] );
25
-		}
26
-	}
27
-
28
-	$email = get_post_meta( get_the_ID(), 'lsx_email_contact', true );
29
-	$phone = get_post_meta( get_the_ID(), 'lsx_tel', true );
30
-	$skype = get_post_meta( get_the_ID(), 'lsx_skype', true );
31
-
32
-	$phone_attr = $phone;
33
-	$phone_attr = str_replace( ' ', '', $phone_attr );
34
-	$phone_attr = str_replace( '+', '', $phone_attr );
35
-	$phone_attr = str_replace( '(', '', $phone_attr );
36
-	$phone_attr = str_replace( ')', '', $phone_attr );
37
-	$phone_attr = str_replace( '.', '', $phone_attr );
38
-
39
-	// Tabs
40
-
41
-	$tabs = array();
42
-
43
-	// Tab Posts
44
-
45
-	$site_user = get_post_meta( get_the_ID(), 'lsx_site_user', true );
46
-
47
-	if ( ! empty( $site_user ) ) {
48
-		if ( is_user_member_of_blog( $site_user ) ) {
49
-			$user_posts = count_user_posts( $site_user, 'post' );
50
-
51
-			if ( $user_posts > 0 ) {
52
-				$params = array(
53
-					'post_type' => 'post',
54
-					'author' => $site_user,
55
-					'posts_per_page' => 9,
56
-					'order' => 'DESC',
57
-					'orderby' => 'date',
58
-					'fields' => 'ids',
59
-					'tax_query' => array(
60
-						array(
61
-							'taxonomy' => 'post_format',
62
-							'field' => 'slug',
63
-							'terms' => array(
64
-								'post-format-aside',
65
-								'post-format-audio',
66
-								'post-format-chat',
67
-								'post-format-gallery',
68
-								'post-format-image',
69
-								'post-format-link',
70
-								'post-format-quote',
71
-								'post-format-status',
72
-								'post-format-video',
73
-							),
74
-							'operator' => 'NOT IN',
75
-						),
76
-					),
77
-				);
78
-
79
-				$posts_query = new \WP_Query( $params );
80
-
81
-				if ( $posts_query->have_posts() ) {
82
-					$tab_post['post_type'] = 'post';
83
-					$tab_post['title'] = esc_html__( 'Posts', 'lsx-team' );
84
-					$tab_post['posts'] = $posts_query->posts;
85
-
86
-					if ( ! empty( $tab_post['posts'] ) ) {
87
-						$post_ids = join( ',', $tab_post['posts'] );
88
-						$tab_post['shortcode'] = '[lsx_posts columns="3" limit="9" include="' . $post_ids . '"]';
89
-						$tabs[] = $tab_post;
90
-					}
91
-				}
92
-			}
93
-		}
94
-	}
95
-
96
-	// Tab Projects
97
-
98
-	$tab_project['post_type'] = 'project';
99
-	$tab_project['title'] = esc_html__( 'Projects', 'lsx-team' );
100
-	$tab_project['posts'] = get_post_meta( get_the_ID(), 'project_to_team', true );
101
-	if ( is_plugin_active( 'lsx-projects/lsx-projects.php' ) && ( ! empty( $tab_project['posts'] ) ) ) {
102
-		$post_ids = join( ',', $tab_project['posts'] );
103
-		$tab_project['shortcode'] = '[lsx_projects columns="3" include="' . $post_ids . '"]';
104
-		$tabs[] = $tab_project;
105
-	}
106
-
107
-	// Tab Services
108
-
109
-	if ( is_plugin_active( 'lsx-services/lsx-services.php' ) ) {
110
-		$tab_service['post_type'] = 'service';
111
-		$tab_service['title'] = esc_html__( 'Services', 'lsx-team' );
112
-		$tab_service['posts'] = get_post_meta( get_the_ID(), 'service_to_team', true );
113
-
114
-		if ( ! empty( $tab_service['posts'] ) ) {
115
-			$post_ids = join( ',', $tab_service['posts'] );
116
-			$tab_service['shortcode'] = '[lsx_services columns="3" include="' . $post_ids . '"]';
117
-			$tabs[] = $tab_service;
118
-		}
119
-	}
120
-
121
-	// Tab Testimonials
122
-
123
-	$tab_testimonial['post_type'] = 'testimonial';
124
-	$tab_testimonial['title'] = esc_html__( 'Testimonials', 'lsx-team' );
125
-	$tab_testimonial['posts'] = get_post_meta( get_the_ID(), 'testimonial_to_team', true );
126
-
127
-	if ( is_plugin_active( 'lsx-testimonials/lsx-testimonials.php' ) && ( ! empty( $tab_testimonial['posts'] ) ) ) {
128
-		if ( count( $tab_testimonial['posts'] ) <= 2 ) {
129
-			$columns = count( $tab_testimonial['posts'] );
130
-		} else {
131
-			$columns = 2;
132
-		}
133
-
134
-		$post_ids = join( ',', $tab_testimonial['posts'] );
135
-		$tab_testimonial['shortcode'] = '[lsx_testimonials columns="' . $columns . '" include="' . $post_ids . '" orderby="date" order="DESC" display="excerpt"]';
136
-		$tabs[] = $tab_testimonial;
137
-	}
8
+     global $lsx_team;
9
+
10
+     $thumbnail = $lsx_team->get_thumbnail( get_the_ID(), 'lsx-team-single' );
11
+
12
+     $job_title = get_post_meta( get_the_ID(), 'lsx_job_title', true );
13
+
14
+     $links = array(
15
+          'facebook'  => get_post_meta( get_the_ID(), 'lsx_facebook', true ),
16
+          'twitter'   => get_post_meta( get_the_ID(), 'lsx_twitter', true ),
17
+          'linkedin'  => get_post_meta( get_the_ID(), 'lsx_linkedin', true ),
18
+          'github'    => get_post_meta( get_the_ID(), 'lsx_github', true ),
19
+          'wordpress' => get_post_meta( get_the_ID(), 'lsx_wordpress', true ),
20
+     );
21
+
22
+     foreach ( $links as $service => $link ) {
23
+          if ( empty( $link ) ) {
24
+               unset( $links[ $service ] );
25
+          }
26
+     }
27
+
28
+     $email = get_post_meta( get_the_ID(), 'lsx_email_contact', true );
29
+     $phone = get_post_meta( get_the_ID(), 'lsx_tel', true );
30
+     $skype = get_post_meta( get_the_ID(), 'lsx_skype', true );
31
+
32
+     $phone_attr = $phone;
33
+     $phone_attr = str_replace( ' ', '', $phone_attr );
34
+     $phone_attr = str_replace( '+', '', $phone_attr );
35
+     $phone_attr = str_replace( '(', '', $phone_attr );
36
+     $phone_attr = str_replace( ')', '', $phone_attr );
37
+     $phone_attr = str_replace( '.', '', $phone_attr );
38
+
39
+     // Tabs
40
+
41
+     $tabs = array();
42
+
43
+     // Tab Posts
44
+
45
+     $site_user = get_post_meta( get_the_ID(), 'lsx_site_user', true );
46
+
47
+     if ( ! empty( $site_user ) ) {
48
+          if ( is_user_member_of_blog( $site_user ) ) {
49
+               $user_posts = count_user_posts( $site_user, 'post' );
50
+
51
+               if ( $user_posts > 0 ) {
52
+                    $params = array(
53
+                         'post_type' => 'post',
54
+                         'author' => $site_user,
55
+                         'posts_per_page' => 9,
56
+                         'order' => 'DESC',
57
+                         'orderby' => 'date',
58
+                         'fields' => 'ids',
59
+                         'tax_query' => array(
60
+                              array(
61
+                                   'taxonomy' => 'post_format',
62
+                                   'field' => 'slug',
63
+                                   'terms' => array(
64
+                                        'post-format-aside',
65
+                                        'post-format-audio',
66
+                                        'post-format-chat',
67
+                                        'post-format-gallery',
68
+                                        'post-format-image',
69
+                                        'post-format-link',
70
+                                        'post-format-quote',
71
+                                        'post-format-status',
72
+                                        'post-format-video',
73
+                                   ),
74
+                                   'operator' => 'NOT IN',
75
+                              ),
76
+                         ),
77
+                    );
78
+
79
+                    $posts_query = new \WP_Query( $params );
80
+
81
+                    if ( $posts_query->have_posts() ) {
82
+                         $tab_post['post_type'] = 'post';
83
+                         $tab_post['title'] = esc_html__( 'Posts', 'lsx-team' );
84
+                         $tab_post['posts'] = $posts_query->posts;
85
+
86
+                         if ( ! empty( $tab_post['posts'] ) ) {
87
+                              $post_ids = join( ',', $tab_post['posts'] );
88
+                              $tab_post['shortcode'] = '[lsx_posts columns="3" limit="9" include="' . $post_ids . '"]';
89
+                              $tabs[] = $tab_post;
90
+                         }
91
+                    }
92
+               }
93
+          }
94
+     }
95
+
96
+     // Tab Projects
97
+
98
+     $tab_project['post_type'] = 'project';
99
+     $tab_project['title'] = esc_html__( 'Projects', 'lsx-team' );
100
+     $tab_project['posts'] = get_post_meta( get_the_ID(), 'project_to_team', true );
101
+     if ( is_plugin_active( 'lsx-projects/lsx-projects.php' ) && ( ! empty( $tab_project['posts'] ) ) ) {
102
+          $post_ids = join( ',', $tab_project['posts'] );
103
+          $tab_project['shortcode'] = '[lsx_projects columns="3" include="' . $post_ids . '"]';
104
+          $tabs[] = $tab_project;
105
+     }
106
+
107
+     // Tab Services
108
+
109
+     if ( is_plugin_active( 'lsx-services/lsx-services.php' ) ) {
110
+          $tab_service['post_type'] = 'service';
111
+          $tab_service['title'] = esc_html__( 'Services', 'lsx-team' );
112
+          $tab_service['posts'] = get_post_meta( get_the_ID(), 'service_to_team', true );
113
+
114
+          if ( ! empty( $tab_service['posts'] ) ) {
115
+               $post_ids = join( ',', $tab_service['posts'] );
116
+               $tab_service['shortcode'] = '[lsx_services columns="3" include="' . $post_ids . '"]';
117
+               $tabs[] = $tab_service;
118
+          }
119
+     }
120
+
121
+     // Tab Testimonials
122
+
123
+     $tab_testimonial['post_type'] = 'testimonial';
124
+     $tab_testimonial['title'] = esc_html__( 'Testimonials', 'lsx-team' );
125
+     $tab_testimonial['posts'] = get_post_meta( get_the_ID(), 'testimonial_to_team', true );
126
+
127
+     if ( is_plugin_active( 'lsx-testimonials/lsx-testimonials.php' ) && ( ! empty( $tab_testimonial['posts'] ) ) ) {
128
+          if ( count( $tab_testimonial['posts'] ) <= 2 ) {
129
+               $columns = count( $tab_testimonial['posts'] );
130
+          } else {
131
+               $columns = 2;
132
+          }
133
+
134
+          $post_ids = join( ',', $tab_testimonial['posts'] );
135
+          $tab_testimonial['shortcode'] = '[lsx_testimonials columns="' . $columns . '" include="' . $post_ids . '" orderby="date" order="DESC" display="excerpt"]';
136
+          $tabs[] = $tab_testimonial;
137
+     }
138 138
 ?>
139 139
 
140 140
 <?php lsx_entry_before(); ?>
Please login to merge, or discard this patch.
classes/class-lsx-team-frontend.php 1 patch
Indentation   +306 added lines, -306 removed lines patch added patch discarded remove patch
@@ -13,172 +13,172 @@  discard block
 block discarded – undo
13 13
 
14 14
 class LSX_Team_Frontend {
15 15
 
16
-	/**
17
-	 * Holds the previous role, so we know when to output a new title.
18
-	 */
19
-	var $previous_role = '';
20
-
21
-
22
-	public function __construct() {
23
-
24
-		$this->options = team_get_options();
25
-
26
-		add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ), 5 );
27
-		add_filter( 'wp_kses_allowed_html', array( $this, 'wp_kses_allowed_html' ), 10, 2 );
28
-		add_filter( 'template_include', array( $this, 'single_template_include' ), 99 );
29
-		add_filter( 'template_include', array( $this, 'archive_template_include' ), 99 );
30
-
31
-		if ( ! empty( $this->options['display']['team_disable_single'] ) ) {
32
-			add_action( 'template_redirect', array( $this, 'disable_single' ) );
33
-		}
34
-
35
-		if ( ! empty( $this->options['display']['group_by_role'] ) ) {
36
-			add_action( 'pre_get_posts', array( $this, 'pre_get_posts_order_by_role' ) );
37
-			add_action( 'lsx_entry_before', array( $this, 'entry_before' ) );
38
-		}
39
-
40
-		add_action( 'pre_get_posts', array( $this, 'disable_pagination_on_archive' ) );
41
-
42
-		if ( is_admin() ) {
43
-			add_filter( 'lsx_customizer_colour_selectors_body', array( $this, 'customizer_body_colours_handler' ), 15, 2 );
44
-		}
45
-
46
-		add_filter( 'lsx_fonts_css', array( $this, 'customizer_fonts_handler' ), 15 );
47
-		add_filter( 'lsx_banner_title', array( $this, 'lsx_banner_archive_title' ), 15 );
48
-		add_filter( 'lsx_banner_title', array( $this, 'lsx_banner_single_title' ), 15 );
49
-		add_filter( 'get_the_archive_title', array( $this, 'get_the_archive_title' ), 100 );
50
-
51
-		add_filter( 'excerpt_more_p', array( $this, 'change_excerpt_more' ) );
52
-		add_filter( 'excerpt_length', array( $this, 'change_excerpt_length' ) );
53
-		add_filter( 'excerpt_strip_tags', array( $this, 'change_excerpt_strip_tags' ) );
54
-
55
-		add_filter( 'wpseo_schema_graph_pieces', array( $this, 'add_graph_pieces' ), 11, 2 );
56
-	}
57
-
58
-	/**
59
-	 * Return an instance of this class.
60
-	 *
61
-	 * @since 1.0.0
62
-	 *
63
-	 * @return    object lsx_team\classes    A single instance of this class.
64
-	 */
65
-	public static function get_instance() {
66
-		// If the single instance hasn't been set, set it now.
67
-		if ( null === self::$instance ) {
68
-			self::$instance = new self();
69
-		}
70
-		return self::$instance;
71
-	}
72
-
73
-	public function enqueue_scripts( $plugins ) {
74
-		$has_slick = wp_script_is( 'slick', 'queue' );
75
-
76
-		if ( ! $has_slick ) {
77
-			wp_enqueue_style( 'slick', LSX_TEAM_URL . 'assets/css/vendor/slick.css', array(), LSX_TEAM_VER, null );
78
-			wp_enqueue_script( 'slick', LSX_TEAM_URL . 'assets/js/vendor/slick.min.js', array( 'jquery' ), null, LSX_TEAM_VER, true );
79
-		}
80
-
81
-		wp_enqueue_script( 'lsx-team', LSX_TEAM_URL . 'assets/js/lsx-team.min.js', array( 'jquery', 'slick' ), LSX_TEAM_VER, true );
82
-
83
-		$params = apply_filters( 'lsx_team_js_params', array(
84
-			'ajax_url' => admin_url( 'admin-ajax.php' ),
85
-		));
86
-
87
-		wp_localize_script( 'lsx-team', 'lsx_team_params', $params );
88
-
89
-		wp_enqueue_style( 'lsx-team', LSX_TEAM_URL . 'assets/css/lsx-team.css', array(), LSX_TEAM_VER );
90
-		wp_style_add_data( 'lsx-team', 'rtl', 'replace' );
91
-	}
92
-
93
-	/**
94
-	 * Allow data params for Slick slider addon.
95
-	 */
96
-	public function wp_kses_allowed_html( $allowedtags, $context ) {
97
-		$allowedtags['div']['data-slick'] = true;
98
-		return $allowedtags;
99
-	}
100
-
101
-	/**
102
-	 * Single template.
103
-	 */
104
-	public function single_template_include( $template ) {
105
-		if ( is_main_query() && is_singular( 'team' ) ) {
106
-			if ( empty( locate_template( array( 'single-team.php' ) ) ) && file_exists( LSX_TEAM_PATH . 'templates/single-team.php' ) ) {
107
-				$template = LSX_TEAM_PATH . 'templates/single-team.php';
108
-			}
109
-		}
110
-
111
-		return $template;
112
-	}
113
-
114
-	/**
115
-	 * Archive template.
116
-	 */
117
-	public function archive_template_include( $template ) {
118
-		if ( is_main_query() && is_post_type_archive( 'team' ) ) {
119
-			if ( empty( locate_template( array( 'archive-team.php' ) ) ) && file_exists( LSX_TEAM_PATH . 'templates/archive-team.php' ) ) {
120
-				$template = LSX_TEAM_PATH . 'templates/archive-team.php';
121
-			}
122
-		}
123
-
124
-		if ( is_tax( 'team_role' ) ) {
125
-			if ( empty( locate_template( array( 'taxonomy-team_role.php' ) ) ) && file_exists( LSX_TEAM_PATH . 'templates/taxonomy-team_role.php' ) ) {
126
-				$template = LSX_TEAM_PATH . 'templates/taxonomy-team_role.php';
127
-			}
128
-		}
129
-
130
-		return $template;
131
-	}
132
-
133
-	/**
134
-	 * Removes access to single team member posts.
135
-	 */
136
-	public function disable_single() {
137
-		$queried_post_type = get_query_var( 'post_type' );
138
-
139
-		if ( is_single() && 'team' === $queried_post_type ) {
140
-			wp_redirect( home_url(), 301 );
141
-			exit;
142
-		}
143
-	}
144
-
145
-	/**
146
-	 * Disable pagination.
147
-	 */
148
-	public function disable_pagination_on_archive( $query ) {
149
-		if ( $query->is_main_query() && $query->is_post_type_archive( 'team' ) ) {
150
-			$query->set( 'posts_per_page', -1 );
151
-			$query->set( 'no_found_rows', true );
152
-		}
153
-	}
154
-
155
-	/**
156
-	 * Handle fonts that might be change by LSX Customiser.
157
-	 */
158
-	public function customizer_fonts_handler( $css_fonts ) {
159
-		global $wp_filesystem;
160
-
161
-		$css_fonts_file = LSX_TEAM_PATH . '/assets/css/lsx-team-fonts.css';
162
-
163
-		if ( file_exists( $css_fonts_file ) ) {
164
-			if ( empty( $wp_filesystem ) ) {
165
-				require_once( ABSPATH . 'wp-admin/includes/file.php' );
166
-				WP_Filesystem();
167
-			}
168
-
169
-			if ( $wp_filesystem ) {
170
-				$css_fonts .= $wp_filesystem->get_contents( $css_fonts_file );
171
-			}
172
-		}
173
-
174
-		return $css_fonts;
175
-	}
176
-
177
-	/**
178
-	 * Handle body colours that might be change by LSX Customiser.
179
-	 */
180
-	public function customizer_body_colours_handler( $css, $colors ) {
181
-		$css .= '
16
+     /**
17
+      * Holds the previous role, so we know when to output a new title.
18
+      */
19
+     var $previous_role = '';
20
+
21
+
22
+     public function __construct() {
23
+
24
+          $this->options = team_get_options();
25
+
26
+          add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ), 5 );
27
+          add_filter( 'wp_kses_allowed_html', array( $this, 'wp_kses_allowed_html' ), 10, 2 );
28
+          add_filter( 'template_include', array( $this, 'single_template_include' ), 99 );
29
+          add_filter( 'template_include', array( $this, 'archive_template_include' ), 99 );
30
+
31
+          if ( ! empty( $this->options['display']['team_disable_single'] ) ) {
32
+               add_action( 'template_redirect', array( $this, 'disable_single' ) );
33
+          }
34
+
35
+          if ( ! empty( $this->options['display']['group_by_role'] ) ) {
36
+               add_action( 'pre_get_posts', array( $this, 'pre_get_posts_order_by_role' ) );
37
+               add_action( 'lsx_entry_before', array( $this, 'entry_before' ) );
38
+          }
39
+
40
+          add_action( 'pre_get_posts', array( $this, 'disable_pagination_on_archive' ) );
41
+
42
+          if ( is_admin() ) {
43
+               add_filter( 'lsx_customizer_colour_selectors_body', array( $this, 'customizer_body_colours_handler' ), 15, 2 );
44
+          }
45
+
46
+          add_filter( 'lsx_fonts_css', array( $this, 'customizer_fonts_handler' ), 15 );
47
+          add_filter( 'lsx_banner_title', array( $this, 'lsx_banner_archive_title' ), 15 );
48
+          add_filter( 'lsx_banner_title', array( $this, 'lsx_banner_single_title' ), 15 );
49
+          add_filter( 'get_the_archive_title', array( $this, 'get_the_archive_title' ), 100 );
50
+
51
+          add_filter( 'excerpt_more_p', array( $this, 'change_excerpt_more' ) );
52
+          add_filter( 'excerpt_length', array( $this, 'change_excerpt_length' ) );
53
+          add_filter( 'excerpt_strip_tags', array( $this, 'change_excerpt_strip_tags' ) );
54
+
55
+          add_filter( 'wpseo_schema_graph_pieces', array( $this, 'add_graph_pieces' ), 11, 2 );
56
+     }
57
+
58
+     /**
59
+      * Return an instance of this class.
60
+      *
61
+      * @since 1.0.0
62
+      *
63
+      * @return    object lsx_team\classes    A single instance of this class.
64
+      */
65
+     public static function get_instance() {
66
+          // If the single instance hasn't been set, set it now.
67
+          if ( null === self::$instance ) {
68
+               self::$instance = new self();
69
+          }
70
+          return self::$instance;
71
+     }
72
+
73
+     public function enqueue_scripts( $plugins ) {
74
+          $has_slick = wp_script_is( 'slick', 'queue' );
75
+
76
+          if ( ! $has_slick ) {
77
+               wp_enqueue_style( 'slick', LSX_TEAM_URL . 'assets/css/vendor/slick.css', array(), LSX_TEAM_VER, null );
78
+               wp_enqueue_script( 'slick', LSX_TEAM_URL . 'assets/js/vendor/slick.min.js', array( 'jquery' ), null, LSX_TEAM_VER, true );
79
+          }
80
+
81
+          wp_enqueue_script( 'lsx-team', LSX_TEAM_URL . 'assets/js/lsx-team.min.js', array( 'jquery', 'slick' ), LSX_TEAM_VER, true );
82
+
83
+          $params = apply_filters( 'lsx_team_js_params', array(
84
+               'ajax_url' => admin_url( 'admin-ajax.php' ),
85
+          ));
86
+
87
+          wp_localize_script( 'lsx-team', 'lsx_team_params', $params );
88
+
89
+          wp_enqueue_style( 'lsx-team', LSX_TEAM_URL . 'assets/css/lsx-team.css', array(), LSX_TEAM_VER );
90
+          wp_style_add_data( 'lsx-team', 'rtl', 'replace' );
91
+     }
92
+
93
+     /**
94
+      * Allow data params for Slick slider addon.
95
+      */
96
+     public function wp_kses_allowed_html( $allowedtags, $context ) {
97
+          $allowedtags['div']['data-slick'] = true;
98
+          return $allowedtags;
99
+     }
100
+
101
+     /**
102
+      * Single template.
103
+      */
104
+     public function single_template_include( $template ) {
105
+          if ( is_main_query() && is_singular( 'team' ) ) {
106
+               if ( empty( locate_template( array( 'single-team.php' ) ) ) && file_exists( LSX_TEAM_PATH . 'templates/single-team.php' ) ) {
107
+                    $template = LSX_TEAM_PATH . 'templates/single-team.php';
108
+               }
109
+          }
110
+
111
+          return $template;
112
+     }
113
+
114
+     /**
115
+      * Archive template.
116
+      */
117
+     public function archive_template_include( $template ) {
118
+          if ( is_main_query() && is_post_type_archive( 'team' ) ) {
119
+               if ( empty( locate_template( array( 'archive-team.php' ) ) ) && file_exists( LSX_TEAM_PATH . 'templates/archive-team.php' ) ) {
120
+                    $template = LSX_TEAM_PATH . 'templates/archive-team.php';
121
+               }
122
+          }
123
+
124
+          if ( is_tax( 'team_role' ) ) {
125
+               if ( empty( locate_template( array( 'taxonomy-team_role.php' ) ) ) && file_exists( LSX_TEAM_PATH . 'templates/taxonomy-team_role.php' ) ) {
126
+                    $template = LSX_TEAM_PATH . 'templates/taxonomy-team_role.php';
127
+               }
128
+          }
129
+
130
+          return $template;
131
+     }
132
+
133
+     /**
134
+      * Removes access to single team member posts.
135
+      */
136
+     public function disable_single() {
137
+          $queried_post_type = get_query_var( 'post_type' );
138
+
139
+          if ( is_single() && 'team' === $queried_post_type ) {
140
+               wp_redirect( home_url(), 301 );
141
+               exit;
142
+          }
143
+     }
144
+
145
+     /**
146
+      * Disable pagination.
147
+      */
148
+     public function disable_pagination_on_archive( $query ) {
149
+          if ( $query->is_main_query() && $query->is_post_type_archive( 'team' ) ) {
150
+               $query->set( 'posts_per_page', -1 );
151
+               $query->set( 'no_found_rows', true );
152
+          }
153
+     }
154
+
155
+     /**
156
+      * Handle fonts that might be change by LSX Customiser.
157
+      */
158
+     public function customizer_fonts_handler( $css_fonts ) {
159
+          global $wp_filesystem;
160
+
161
+          $css_fonts_file = LSX_TEAM_PATH . '/assets/css/lsx-team-fonts.css';
162
+
163
+          if ( file_exists( $css_fonts_file ) ) {
164
+               if ( empty( $wp_filesystem ) ) {
165
+                    require_once( ABSPATH . 'wp-admin/includes/file.php' );
166
+                    WP_Filesystem();
167
+               }
168
+
169
+               if ( $wp_filesystem ) {
170
+                    $css_fonts .= $wp_filesystem->get_contents( $css_fonts_file );
171
+               }
172
+          }
173
+
174
+          return $css_fonts;
175
+     }
176
+
177
+     /**
178
+      * Handle body colours that might be change by LSX Customiser.
179
+      */
180
+     public function customizer_body_colours_handler( $css, $colors ) {
181
+          $css .= '
182 182
 			@import "' . LSX_TEAM_PATH . '/assets/css/scss/customizer-team-body-colours";
183 183
 
184 184
 			/**
@@ -194,109 +194,109 @@  discard block
 block discarded – undo
194 194
 			);
195 195
 		';
196 196
 
197
-		return $css;
198
-	}
199
-
200
-	/**
201
-	 * Change the LSX Banners title for team archive.
202
-	 */
203
-	public function lsx_banner_archive_title( $title ) {
204
-		if ( is_main_query() && is_post_type_archive( 'team' ) ) {
205
-			$title = '<h1 class="page-title">' . esc_html__( 'Team', 'lsx-team' ) . '</h1>';
206
-		}
207
-
208
-		return $title;
209
-	}
210
-
211
-	/**
212
-	 * Change the LSX Banners title for team single.
213
-	 */
214
-	public function lsx_banner_single_title( $title ) {
215
-		if ( is_main_query() && is_singular( 'team' ) ) {
216
-			$title = '<h1 class="page-title">' . esc_html__( 'Team', 'lsx-team' ) . '</h1>';
217
-		}
218
-
219
-		return $title;
220
-	}
221
-
222
-	/**
223
-	 * Remove the "Archives:" from the post type recipes.
224
-	 *
225
-	 * @param string $title the term title.
226
-	 * @return string
227
-	 */
228
-	public function get_the_archive_title( $title ) {
229
-		if ( is_post_type_archive( 'team' ) ) {
230
-			$title = __( 'Team', 'lsx-health-plan' );
231
-		}
232
-		return $title;
233
-	}
234
-
235
-	/**
236
-	 * Remove the "continue reading" when the single is disabled.
237
-	 */
238
-	public function change_excerpt_more( $excerpt_more ) {
239
-		global $post;
240
-
241
-		if ( 'team' === $post->post_type ) {
242
-			if ( ! empty( team_get_option( 'team_disable_single' ) ) ) {
243
-				$excerpt_more = '';
244
-			}
245
-		}
246
-
247
-		return $excerpt_more;
248
-	}
249
-
250
-	/**
251
-	 * Change the word count when crop the content to excerpt (single team relations).
252
-	 */
253
-	public function change_excerpt_length( $excerpt_word_count ) {
254
-		global $post;
255
-
256
-		if ( is_singular( 'team' ) && ( 'project' === $post->post_type || 'testimonial' === $post->post_type ) ) {
257
-			$excerpt_word_count = 20;
258
-		}
259
-
260
-		return $excerpt_word_count;
261
-	}
262
-
263
-	/**
264
-	 * Change the allowed tags crop the content to excerpt (single team relations).
265
-	 */
266
-	public function change_excerpt_strip_tags( $allowed_tags ) {
267
-		global $post;
268
-
269
-		if ( is_singular( 'team' ) && ( 'project' === $post->post_type || 'testimonial' === $post->post_type ) ) {
270
-			$allowed_tags = '<p>,<br>,<b>,<strong>,<i>,<u>,<ul>,<ol>,<li>,<span>';
271
-		}
272
-
273
-		return $allowed_tags;
274
-	}
275
-
276
-	/**
277
-	 * @param $query \WP_Query()
278
-	 *
279
-	 * @return mixed
280
-	 */
281
-	public function pre_get_posts_order_by_role( $query ) {
282
-		if ( ! is_admin() && $query->is_main_query() && $query->is_post_type_archive( 'team' ) ) {
283
-			$post_ids = $this->order_by_role_query();
284
-			if ( ! empty( $post_ids ) ) {
285
-				$query->set( 'post__in', $post_ids );
286
-				$query->set( 'orderby', 'post__in' );
287
-			}
288
-		}
289
-		return $query;
290
-	}
291
-
292
-	/**
293
-	 * Grabs the team members ordered by the Roles Slug and the title alphabetical
294
-	 */
295
-	public function order_by_role_query() {
296
-		global $wpdb;
297
-		$post_ids = array();
298
-
299
-		$results = $wpdb->get_results( $wpdb->prepare("
197
+          return $css;
198
+     }
199
+
200
+     /**
201
+      * Change the LSX Banners title for team archive.
202
+      */
203
+     public function lsx_banner_archive_title( $title ) {
204
+          if ( is_main_query() && is_post_type_archive( 'team' ) ) {
205
+               $title = '<h1 class="page-title">' . esc_html__( 'Team', 'lsx-team' ) . '</h1>';
206
+          }
207
+
208
+          return $title;
209
+     }
210
+
211
+     /**
212
+      * Change the LSX Banners title for team single.
213
+      */
214
+     public function lsx_banner_single_title( $title ) {
215
+          if ( is_main_query() && is_singular( 'team' ) ) {
216
+               $title = '<h1 class="page-title">' . esc_html__( 'Team', 'lsx-team' ) . '</h1>';
217
+          }
218
+
219
+          return $title;
220
+     }
221
+
222
+     /**
223
+      * Remove the "Archives:" from the post type recipes.
224
+      *
225
+      * @param string $title the term title.
226
+      * @return string
227
+      */
228
+     public function get_the_archive_title( $title ) {
229
+          if ( is_post_type_archive( 'team' ) ) {
230
+               $title = __( 'Team', 'lsx-health-plan' );
231
+          }
232
+          return $title;
233
+     }
234
+
235
+     /**
236
+      * Remove the "continue reading" when the single is disabled.
237
+      */
238
+     public function change_excerpt_more( $excerpt_more ) {
239
+          global $post;
240
+
241
+          if ( 'team' === $post->post_type ) {
242
+               if ( ! empty( team_get_option( 'team_disable_single' ) ) ) {
243
+                    $excerpt_more = '';
244
+               }
245
+          }
246
+
247
+          return $excerpt_more;
248
+     }
249
+
250
+     /**
251
+      * Change the word count when crop the content to excerpt (single team relations).
252
+      */
253
+     public function change_excerpt_length( $excerpt_word_count ) {
254
+          global $post;
255
+
256
+          if ( is_singular( 'team' ) && ( 'project' === $post->post_type || 'testimonial' === $post->post_type ) ) {
257
+               $excerpt_word_count = 20;
258
+          }
259
+
260
+          return $excerpt_word_count;
261
+     }
262
+
263
+     /**
264
+      * Change the allowed tags crop the content to excerpt (single team relations).
265
+      */
266
+     public function change_excerpt_strip_tags( $allowed_tags ) {
267
+          global $post;
268
+
269
+          if ( is_singular( 'team' ) && ( 'project' === $post->post_type || 'testimonial' === $post->post_type ) ) {
270
+               $allowed_tags = '<p>,<br>,<b>,<strong>,<i>,<u>,<ul>,<ol>,<li>,<span>';
271
+          }
272
+
273
+          return $allowed_tags;
274
+     }
275
+
276
+     /**
277
+      * @param $query \WP_Query()
278
+      *
279
+      * @return mixed
280
+      */
281
+     public function pre_get_posts_order_by_role( $query ) {
282
+          if ( ! is_admin() && $query->is_main_query() && $query->is_post_type_archive( 'team' ) ) {
283
+               $post_ids = $this->order_by_role_query();
284
+               if ( ! empty( $post_ids ) ) {
285
+                    $query->set( 'post__in', $post_ids );
286
+                    $query->set( 'orderby', 'post__in' );
287
+               }
288
+          }
289
+          return $query;
290
+     }
291
+
292
+     /**
293
+      * Grabs the team members ordered by the Roles Slug and the title alphabetical
294
+      */
295
+     public function order_by_role_query() {
296
+          global $wpdb;
297
+          $post_ids = array();
298
+
299
+          $results = $wpdb->get_results( $wpdb->prepare("
300 300
 			SELECT posts.ID, posts.post_title, terms.slug
301 301
 			FROM {$wpdb->posts} AS posts
302 302
 			INNER JOIN {$wpdb->term_relationships} as rels
@@ -311,43 +311,43 @@  discard block
 block discarded – undo
311 311
 			ORDER BY terms.lsx_team_term_order, posts.post_name
312 312
          ", 'team', 'publish', 'team_role' ) );
313 313
 
314
-		if ( ! empty( $results ) ) {
315
-			$post_ids = wp_list_pluck( $results, 'ID' );
316
-		}
317
-		return $post_ids;
318
-	}
319
-
320
-
321
-	/**
322
-	 * Outputs the Role Title if its found
323
-	 */
324
-	public function entry_before() {
325
-		if ( is_post_type_archive( 'team' ) ) {
326
-			$all_roles    = wc_get_object_terms( get_the_ID(), 'team_role' );
327
-			$this_role    = '';
328
-			$this_role_id = '';
329
-			if ( ! empty( $all_roles ) ) {
330
-				$this_role    = $all_roles[0];
331
-				$this_role_id = $this_role->term_id;
332
-			}
333
-
334
-			if ( '' === $this->previous_role || $this->previous_role !== $this_role_id ) {
335
-				echo '<h2 class="role-title text-center col-xs-12 col-sm-12 col-md-12">' . wp_kses_post( $this_role->name ) . '</h2>';
336
-				$this->previous_role = $this_role_id;
337
-			}
338
-		}
339
-	}
340
-	/**
341
-	 * Adds Pieces
342
-	 */
343
-	public function add_graph_pieces( $pieces, $context ) {
344
-		// Scheme Class.
345
-		if ( class_exists( 'LSX_Schema_Graph_Piece' ) ) {
346
-			require_once LSX_TEAM_PATH . '/classes/class-lsx-team-schema.php';
347
-			$pieces[] = new \LSX_Team_Schema( $context );
348
-		}
349
-		return $pieces;
350
-	}
314
+          if ( ! empty( $results ) ) {
315
+               $post_ids = wp_list_pluck( $results, 'ID' );
316
+          }
317
+          return $post_ids;
318
+     }
319
+
320
+
321
+     /**
322
+      * Outputs the Role Title if its found
323
+      */
324
+     public function entry_before() {
325
+          if ( is_post_type_archive( 'team' ) ) {
326
+               $all_roles    = wc_get_object_terms( get_the_ID(), 'team_role' );
327
+               $this_role    = '';
328
+               $this_role_id = '';
329
+               if ( ! empty( $all_roles ) ) {
330
+                    $this_role    = $all_roles[0];
331
+                    $this_role_id = $this_role->term_id;
332
+               }
333
+
334
+               if ( '' === $this->previous_role || $this->previous_role !== $this_role_id ) {
335
+                    echo '<h2 class="role-title text-center col-xs-12 col-sm-12 col-md-12">' . wp_kses_post( $this_role->name ) . '</h2>';
336
+                    $this->previous_role = $this_role_id;
337
+               }
338
+          }
339
+     }
340
+     /**
341
+      * Adds Pieces
342
+      */
343
+     public function add_graph_pieces( $pieces, $context ) {
344
+          // Scheme Class.
345
+          if ( class_exists( 'LSX_Schema_Graph_Piece' ) ) {
346
+               require_once LSX_TEAM_PATH . '/classes/class-lsx-team-schema.php';
347
+               $pieces[] = new \LSX_Team_Schema( $context );
348
+          }
349
+          return $pieces;
350
+     }
351 351
 }
352 352
 
353 353
 $lsx_team_frontend = new LSX_Team_Frontend();
Please login to merge, or discard this patch.
classes/class-lsx-team.php 1 patch
Indentation   +279 added lines, -279 removed lines patch added patch discarded remove patch
@@ -10,268 +10,268 @@  discard block
 block discarded – undo
10 10
  */
11 11
 class LSX_Team {
12 12
 
13
-	public $options;
14
-
15
-	public function __construct() {
16
-		$this->options = team_get_options();
17
-
18
-		add_action( 'init', array( $this, 'custom_image_sizes' ) );
19
-		add_filter( 'lsx_banner_allowed_post_types', array( $this, 'lsx_banner_allowed_post_types' ) );
20
-
21
-	}
22
-
23
-	/**
24
-	 * Enable project custom post type on LSX Banners.
25
-	 */
26
-	public function custom_image_sizes( $post_types ) {
27
-		add_image_size( 'lsx-team-archive', 170, 170, true );
28
-		add_image_size( 'lsx-team-single', 320, 320, true );
29
-	}
30
-
31
-	/**
32
-	 * Enable project custom post type on LSX Banners.
33
-	 */
34
-	public function lsx_banner_allowed_post_types( $post_types ) {
35
-		$post_types[] = 'team';
36
-		return $post_types;
37
-	}
38
-
39
-	/**
40
-	 * Return the team thumbnail.
41
-	 */
42
-	public function get_thumbnail( $post_id, $size ) {
43
-		add_filter( 'lsx_placeholder_url', array( $this, 'placeholder' ), 10, 1 );
44
-		add_filter( 'lsx_to_placeholder_url', array( $this, 'placeholder' ), 10, 1 );
45
-
46
-		if ( is_numeric( $size ) ) {
47
-			$thumb_size = array( $size, $size );
48
-		} else {
49
-			$thumb_size = $size;
50
-		}
51
-
52
-		$thumbnail_class = 'img-responsive';
53
-
54
-		if ( ! empty( get_the_post_thumbnail( $post_id ) ) || ! empty( get_post_meta( $post_id, 'lsx_email_gravatar', true ) ) ) {
55
-			if ( ! empty( get_the_post_thumbnail( $post_id ) ) ) {
56
-				$thumbnail = get_the_post_thumbnail( $post_id, $thumb_size, array(
57
-					'class' => $thumbnail_class,
58
-				) );
59
-			} else {
60
-				$thumbnail = get_avatar( get_post_meta( $post_id, 'lsx_email_gravatar', true ), $size, $this->options['display']['team_placeholder'], false, array(
61
-					'class' => $thumbnail_class,
62
-				) );
63
-			}
64
-		}
65
-		if ( empty( $thumbnail ) ) {
66
-			if ( $this->options['display'] && ! empty( $this->options['display']['team_placeholder'] ) ) {
67
-				$thumbnail = '<img loading="lazy" class="img-responsive wp-post-image" src="' . $this->options['display']['team_placeholder'] . '" width="' . $size . '" />';
68
-			} else {
69
-				$thumbnail = '<img loading="lazy" class="img-responsive wp-post-image" src="https://www.gravatar.com/avatar/none?d=mm&s=' . $size . '" width="' . $size . '" />';
70
-			}
71
-		}
72
-
73
-		remove_filter( 'lsx_placeholder_url', array( $this, 'placeholder' ), 10, 1 );
74
-		remove_filter( 'lsx_to_placeholder_url', array( $this, 'placeholder' ), 10, 1 );
75
-
76
-		return $thumbnail;
77
-	}
78
-
79
-	/**
80
-	 * Replaces the widget with Mystery Man
81
-	 */
82
-	public function placeholder( $image ) {
83
-		$image = array(
84
-			LSX_TEAM_URL . 'assets/img/mystery-man-square.png',
85
-			512,
86
-			512,
87
-			true,
88
-		);
89
-
90
-		return $image;
91
-	}
92
-
93
-	/**
94
-	 * Returns the shortcode output markup
95
-	 */
96
-	public function output( $atts ) {
97
-		extract( shortcode_atts(array(
98
-			'columns' => 4,
99
-			'orderby' => 'name',
100
-			'order' => 'ASC',
101
-			'role' => '',
102
-			'limit' => '99',
103
-			'include' => '',
104
-			'display' => 'excerpt',
105
-			'size' => 'lsx-team-archive',
106
-			'show_link' => false,
107
-			'show_email' => false,
108
-			'show_image' => true,
109
-			'show_roles' => false,
110
-			'show_job_title' => true,
111
-			'show_desc' => true,
112
-			'show_social' => true,
113
-			'carousel' => true,
114
-			'featured' => false,
115
-		), $atts ) );
116
-
117
-		$output = '';
118
-
119
-		if ( ! empty( $include ) ) {
120
-			$include = explode( ',', $include );
121
-
122
-			$args = array(
123
-				'post_type' => 'team',
124
-				'posts_per_page' => $limit,
125
-				'post__in' => $include,
126
-				'orderby' => 'post__in',
127
-				'order' => $order,
128
-			);
129
-		} else {
130
-			$args = array(
131
-				'post_type' => 'team',
132
-				'posts_per_page' => $limit,
133
-				'orderby' => $orderby,
134
-				'order' => $order,
135
-			);
136
-
137
-			if ( 'true' === $featured || true === $featured ) {
138
-				$args['meta_key'] = 'lsx_featured';
139
-				$args['meta_value'] = 1;
140
-			}
141
-		}
142
-
143
-		if ( ! empty( $role ) ) {
144
-			$args['tax_query'] = array(
145
-				array(
146
-					'taxonomy' => 'team_role',
147
-					'field' => 'id',
148
-					'terms' => $role,
149
-				),
150
-			);
151
-		}
152
-
153
-		$team = new \WP_Query( $args );
154
-
155
-		if ( $team->have_posts() ) {
156
-			global $post;
157
-
158
-			$count = 0;
159
-			$count_global = 0;
160
-
161
-			$column_size = intval( 12 / $columns );
162
-
163
-			$carousel = true === $carousel || 'true' === $carousel ? true : false;
164
-
165
-			if ( $carousel ) {
166
-				$output .= "<div class='lsx-team-shortcode lsx-team-block' id='lsx-team-slider' data-slick='{\"slidesToShow\": $columns, \"slidesToScroll\": $columns }'>";
167
-			} else {
168
-				$output .= "<div class='lsx-team-shortcode'><div class='row'>";
169
-			}
170
-
171
-			while ( $team->have_posts() ) {
172
-				$team->the_post();
173
-
174
-				// Count
175
-				$count++;
176
-				$count_global++;
177
-
178
-				$member_name = apply_filters( 'the_title', $post->post_title );
179
-				$member_roles = '';
180
-				$member_description = '';
181
-				$member_avatar = '';
182
-				$member_socials = '';
183
-				$member_job_title = '';
184
-				$member_email = '';
185
-				$bottom_link = '';
186
-				$facebook = get_post_meta( $post->ID, 'lsx_facebook', true );
187
-				$twitter = get_post_meta( $post->ID, 'lsx_twitter', true );
188
-				$linkedin = get_post_meta( $post->ID, 'lsx_linkedin', true );
189
-
190
-				// Link to single
191
-				if ( ( true === $show_link || 'true' === $show_link ) && ( empty( team_get_option( 'team_disable_single' ) ) ) ) {
192
-					$bottom_link = '<a href="' . get_permalink( $post->ID ) . '" class="lsx-team-show-more">More about ' . strtok( $member_name, ' ' ) . '<i class="fa fa-long-arrow-right" aria-hidden="true"></i></a>';
193
-				}
194
-
195
-				if ( true === $show_email || 'true' === $show_email ) {
196
-					$email = get_post_meta( $post->ID, 'lsx_email_contact', true );
197
-
198
-					$member_email = '<a href="mailto:' . sanitize_email( $email ) . '" class="lsx-team-email">' . sanitize_email( $email ) . '</a>';
199
-				}
200
-
201
-				if ( ( true === $show_link || 'true' === $show_link ) && ( empty( team_get_option( 'team_disable_single' ) ) ) ) {
202
-					$member_name = '<h5 class="lsx-team-name"><a href="' . get_permalink() . '">' . $member_name . '</a></h5>';
203
-				} else {
204
-					$member_name = '<h5 class="lsx-team-name">' . $member_name . '</h5>';
205
-				}
206
-
207
-				// Member roles
208
-				if ( true === $show_roles || 'true' === $show_roles ) {
209
-					$roles = '';
210
-					$terms = get_the_terms( $post->ID, 'team_role' );
211
-
212
-					if ( $terms && ! is_wp_error( $terms ) ) {
213
-						$roles = array();
214
-
215
-						foreach ( $terms as $term ) {
216
-							$roles[] = $term->name;
217
-						}
218
-
219
-						$roles = join( ', ', $roles );
220
-					}
221
-
222
-					$member_roles = '' !== $roles ? "<small class='lsx-team-roles'>$roles</small>" : '';
223
-				}
224
-
225
-				if ( true === $show_job_title || 'true' === $show_job_title ) {
226
-					$job_title = get_post_meta( $post->ID, 'lsx_job_title', true );
227
-					$member_job_title = ! empty( $job_title ) ? "<small class='lsx-team-job-title'>$job_title</small>" : '';
228
-				}
229
-
230
-				// Member description
231
-				if ( true === $show_desc || 'true' === $show_desc ) {
232
-					if ( 'full' === $display ) {
233
-						$member_description = apply_filters( 'the_content', get_the_content( esc_html__( 'Read More', 'lsx-team' ) ) );
234
-						$member_description = str_replace( ']]>', ']]&gt;', $member_description );
235
-					} elseif ( 'excerpt' === $display ) {
236
-						$member_description = apply_filters( 'the_excerpt', get_the_excerpt() );
237
-					}
238
-
239
-					$member_description = ! empty( $member_description ) ? "<div class='lsx-team-description'>$member_description</div>" : '';
240
-				}
241
-
242
-				// Member avatar
243
-				if ( true === $show_image || 'true' === $show_image ) {
244
-					$member_avatar = $this->get_thumbnail( $post->ID, $size );
245
-
246
-					if ( ( true === $show_link || 'true' === $show_link ) && ( empty( $this->options['display'] ) || empty( team_get_option( 'team_disable_single' ) ) ) ) {
247
-						$member_avatar = "<figure class='lsx-team-avatar'><a href='" . get_permalink() . "'>$member_avatar</a></figure>";
248
-					} else {
249
-						$member_avatar = "<figure class='lsx-team-avatar'>$member_avatar</figure>";
250
-					}
251
-				}
252
-
253
-				// Member socials
254
-				if ( true === $show_social || 'true' === $show_social ) {
255
-					$links = array(
256
-						'facebook' => $facebook,
257
-						'twitter' => $twitter,
258
-						'linkedin' => $linkedin,
259
-					);
260
-
261
-					foreach ( $links as $sm => $sm_link ) {
262
-						if ( ! empty( $sm_link ) ) {
263
-							$member_socials .= "<li><a href='$sm_link' target='_blank'><i class='fa fa-$sm' aria-hidden='true'></i></a></li>";
264
-						}
265
-					}
266
-
267
-					$member_socials = ! empty( $member_socials ) ? "<ul class='lsx-team-socials list-inline'>$member_socials</ul>" : '';
268
-				}
269
-
270
-				if ( ! $carousel ) {
271
-					$output .= "<div class='col-xs-12 col-md-$column_size'>";
272
-				}
273
-
274
-				$output .= "
13
+     public $options;
14
+
15
+     public function __construct() {
16
+          $this->options = team_get_options();
17
+
18
+          add_action( 'init', array( $this, 'custom_image_sizes' ) );
19
+          add_filter( 'lsx_banner_allowed_post_types', array( $this, 'lsx_banner_allowed_post_types' ) );
20
+
21
+     }
22
+
23
+     /**
24
+      * Enable project custom post type on LSX Banners.
25
+      */
26
+     public function custom_image_sizes( $post_types ) {
27
+          add_image_size( 'lsx-team-archive', 170, 170, true );
28
+          add_image_size( 'lsx-team-single', 320, 320, true );
29
+     }
30
+
31
+     /**
32
+      * Enable project custom post type on LSX Banners.
33
+      */
34
+     public function lsx_banner_allowed_post_types( $post_types ) {
35
+          $post_types[] = 'team';
36
+          return $post_types;
37
+     }
38
+
39
+     /**
40
+      * Return the team thumbnail.
41
+      */
42
+     public function get_thumbnail( $post_id, $size ) {
43
+          add_filter( 'lsx_placeholder_url', array( $this, 'placeholder' ), 10, 1 );
44
+          add_filter( 'lsx_to_placeholder_url', array( $this, 'placeholder' ), 10, 1 );
45
+
46
+          if ( is_numeric( $size ) ) {
47
+               $thumb_size = array( $size, $size );
48
+          } else {
49
+               $thumb_size = $size;
50
+          }
51
+
52
+          $thumbnail_class = 'img-responsive';
53
+
54
+          if ( ! empty( get_the_post_thumbnail( $post_id ) ) || ! empty( get_post_meta( $post_id, 'lsx_email_gravatar', true ) ) ) {
55
+               if ( ! empty( get_the_post_thumbnail( $post_id ) ) ) {
56
+                    $thumbnail = get_the_post_thumbnail( $post_id, $thumb_size, array(
57
+                         'class' => $thumbnail_class,
58
+                    ) );
59
+               } else {
60
+                    $thumbnail = get_avatar( get_post_meta( $post_id, 'lsx_email_gravatar', true ), $size, $this->options['display']['team_placeholder'], false, array(
61
+                         'class' => $thumbnail_class,
62
+                    ) );
63
+               }
64
+          }
65
+          if ( empty( $thumbnail ) ) {
66
+               if ( $this->options['display'] && ! empty( $this->options['display']['team_placeholder'] ) ) {
67
+                    $thumbnail = '<img loading="lazy" class="img-responsive wp-post-image" src="' . $this->options['display']['team_placeholder'] . '" width="' . $size . '" />';
68
+               } else {
69
+                    $thumbnail = '<img loading="lazy" class="img-responsive wp-post-image" src="https://www.gravatar.com/avatar/none?d=mm&s=' . $size . '" width="' . $size . '" />';
70
+               }
71
+          }
72
+
73
+          remove_filter( 'lsx_placeholder_url', array( $this, 'placeholder' ), 10, 1 );
74
+          remove_filter( 'lsx_to_placeholder_url', array( $this, 'placeholder' ), 10, 1 );
75
+
76
+          return $thumbnail;
77
+     }
78
+
79
+     /**
80
+      * Replaces the widget with Mystery Man
81
+      */
82
+     public function placeholder( $image ) {
83
+          $image = array(
84
+               LSX_TEAM_URL . 'assets/img/mystery-man-square.png',
85
+               512,
86
+               512,
87
+               true,
88
+          );
89
+
90
+          return $image;
91
+     }
92
+
93
+     /**
94
+      * Returns the shortcode output markup
95
+      */
96
+     public function output( $atts ) {
97
+          extract( shortcode_atts(array(
98
+               'columns' => 4,
99
+               'orderby' => 'name',
100
+               'order' => 'ASC',
101
+               'role' => '',
102
+               'limit' => '99',
103
+               'include' => '',
104
+               'display' => 'excerpt',
105
+               'size' => 'lsx-team-archive',
106
+               'show_link' => false,
107
+               'show_email' => false,
108
+               'show_image' => true,
109
+               'show_roles' => false,
110
+               'show_job_title' => true,
111
+               'show_desc' => true,
112
+               'show_social' => true,
113
+               'carousel' => true,
114
+               'featured' => false,
115
+          ), $atts ) );
116
+
117
+          $output = '';
118
+
119
+          if ( ! empty( $include ) ) {
120
+               $include = explode( ',', $include );
121
+
122
+               $args = array(
123
+                    'post_type' => 'team',
124
+                    'posts_per_page' => $limit,
125
+                    'post__in' => $include,
126
+                    'orderby' => 'post__in',
127
+                    'order' => $order,
128
+               );
129
+          } else {
130
+               $args = array(
131
+                    'post_type' => 'team',
132
+                    'posts_per_page' => $limit,
133
+                    'orderby' => $orderby,
134
+                    'order' => $order,
135
+               );
136
+
137
+               if ( 'true' === $featured || true === $featured ) {
138
+                    $args['meta_key'] = 'lsx_featured';
139
+                    $args['meta_value'] = 1;
140
+               }
141
+          }
142
+
143
+          if ( ! empty( $role ) ) {
144
+               $args['tax_query'] = array(
145
+                    array(
146
+                         'taxonomy' => 'team_role',
147
+                         'field' => 'id',
148
+                         'terms' => $role,
149
+                    ),
150
+               );
151
+          }
152
+
153
+          $team = new \WP_Query( $args );
154
+
155
+          if ( $team->have_posts() ) {
156
+               global $post;
157
+
158
+               $count = 0;
159
+               $count_global = 0;
160
+
161
+               $column_size = intval( 12 / $columns );
162
+
163
+               $carousel = true === $carousel || 'true' === $carousel ? true : false;
164
+
165
+               if ( $carousel ) {
166
+                    $output .= "<div class='lsx-team-shortcode lsx-team-block' id='lsx-team-slider' data-slick='{\"slidesToShow\": $columns, \"slidesToScroll\": $columns }'>";
167
+               } else {
168
+                    $output .= "<div class='lsx-team-shortcode'><div class='row'>";
169
+               }
170
+
171
+               while ( $team->have_posts() ) {
172
+                    $team->the_post();
173
+
174
+                    // Count
175
+                    $count++;
176
+                    $count_global++;
177
+
178
+                    $member_name = apply_filters( 'the_title', $post->post_title );
179
+                    $member_roles = '';
180
+                    $member_description = '';
181
+                    $member_avatar = '';
182
+                    $member_socials = '';
183
+                    $member_job_title = '';
184
+                    $member_email = '';
185
+                    $bottom_link = '';
186
+                    $facebook = get_post_meta( $post->ID, 'lsx_facebook', true );
187
+                    $twitter = get_post_meta( $post->ID, 'lsx_twitter', true );
188
+                    $linkedin = get_post_meta( $post->ID, 'lsx_linkedin', true );
189
+
190
+                    // Link to single
191
+                    if ( ( true === $show_link || 'true' === $show_link ) && ( empty( team_get_option( 'team_disable_single' ) ) ) ) {
192
+                         $bottom_link = '<a href="' . get_permalink( $post->ID ) . '" class="lsx-team-show-more">More about ' . strtok( $member_name, ' ' ) . '<i class="fa fa-long-arrow-right" aria-hidden="true"></i></a>';
193
+                    }
194
+
195
+                    if ( true === $show_email || 'true' === $show_email ) {
196
+                         $email = get_post_meta( $post->ID, 'lsx_email_contact', true );
197
+
198
+                         $member_email = '<a href="mailto:' . sanitize_email( $email ) . '" class="lsx-team-email">' . sanitize_email( $email ) . '</a>';
199
+                    }
200
+
201
+                    if ( ( true === $show_link || 'true' === $show_link ) && ( empty( team_get_option( 'team_disable_single' ) ) ) ) {
202
+                         $member_name = '<h5 class="lsx-team-name"><a href="' . get_permalink() . '">' . $member_name . '</a></h5>';
203
+                    } else {
204
+                         $member_name = '<h5 class="lsx-team-name">' . $member_name . '</h5>';
205
+                    }
206
+
207
+                    // Member roles
208
+                    if ( true === $show_roles || 'true' === $show_roles ) {
209
+                         $roles = '';
210
+                         $terms = get_the_terms( $post->ID, 'team_role' );
211
+
212
+                         if ( $terms && ! is_wp_error( $terms ) ) {
213
+                              $roles = array();
214
+
215
+                              foreach ( $terms as $term ) {
216
+                                   $roles[] = $term->name;
217
+                              }
218
+
219
+                              $roles = join( ', ', $roles );
220
+                         }
221
+
222
+                         $member_roles = '' !== $roles ? "<small class='lsx-team-roles'>$roles</small>" : '';
223
+                    }
224
+
225
+                    if ( true === $show_job_title || 'true' === $show_job_title ) {
226
+                         $job_title = get_post_meta( $post->ID, 'lsx_job_title', true );
227
+                         $member_job_title = ! empty( $job_title ) ? "<small class='lsx-team-job-title'>$job_title</small>" : '';
228
+                    }
229
+
230
+                    // Member description
231
+                    if ( true === $show_desc || 'true' === $show_desc ) {
232
+                         if ( 'full' === $display ) {
233
+                              $member_description = apply_filters( 'the_content', get_the_content( esc_html__( 'Read More', 'lsx-team' ) ) );
234
+                              $member_description = str_replace( ']]>', ']]&gt;', $member_description );
235
+                         } elseif ( 'excerpt' === $display ) {
236
+                              $member_description = apply_filters( 'the_excerpt', get_the_excerpt() );
237
+                         }
238
+
239
+                         $member_description = ! empty( $member_description ) ? "<div class='lsx-team-description'>$member_description</div>" : '';
240
+                    }
241
+
242
+                    // Member avatar
243
+                    if ( true === $show_image || 'true' === $show_image ) {
244
+                         $member_avatar = $this->get_thumbnail( $post->ID, $size );
245
+
246
+                         if ( ( true === $show_link || 'true' === $show_link ) && ( empty( $this->options['display'] ) || empty( team_get_option( 'team_disable_single' ) ) ) ) {
247
+                              $member_avatar = "<figure class='lsx-team-avatar'><a href='" . get_permalink() . "'>$member_avatar</a></figure>";
248
+                         } else {
249
+                              $member_avatar = "<figure class='lsx-team-avatar'>$member_avatar</figure>";
250
+                         }
251
+                    }
252
+
253
+                    // Member socials
254
+                    if ( true === $show_social || 'true' === $show_social ) {
255
+                         $links = array(
256
+                              'facebook' => $facebook,
257
+                              'twitter' => $twitter,
258
+                              'linkedin' => $linkedin,
259
+                         );
260
+
261
+                         foreach ( $links as $sm => $sm_link ) {
262
+                              if ( ! empty( $sm_link ) ) {
263
+                                   $member_socials .= "<li><a href='$sm_link' target='_blank'><i class='fa fa-$sm' aria-hidden='true'></i></a></li>";
264
+                              }
265
+                         }
266
+
267
+                         $member_socials = ! empty( $member_socials ) ? "<ul class='lsx-team-socials list-inline'>$member_socials</ul>" : '';
268
+                    }
269
+
270
+                    if ( ! $carousel ) {
271
+                         $output .= "<div class='col-xs-12 col-md-$column_size'>";
272
+                    }
273
+
274
+                    $output .= "
275 275
 					<div class='lsx-team-slot'>
276 276
 						$member_avatar
277 277
 						$member_name
@@ -284,28 +284,28 @@  discard block
 block discarded – undo
284 284
 					</div>
285 285
 				";
286 286
 
287
-				if ( ! $carousel ) {
288
-					$output .= '</div>';
287
+                    if ( ! $carousel ) {
288
+                         $output .= '</div>';
289 289
 
290
-					if ( $count == $columns && $team->post_count > $count_global ) {
291
-						$output .= '</div>';
292
-						$output .= '<div class="row">';
293
-						$count = 0;
294
-					}
295
-				}
290
+                         if ( $count == $columns && $team->post_count > $count_global ) {
291
+                              $output .= '</div>';
292
+                              $output .= '<div class="row">';
293
+                              $count = 0;
294
+                         }
295
+                    }
296 296
 
297
-				wp_reset_postdata();
298
-			}
297
+                    wp_reset_postdata();
298
+               }
299 299
 
300
-			if ( ! $carousel ) {
301
-				$output .= '</div>';
302
-			}
300
+               if ( ! $carousel ) {
301
+                    $output .= '</div>';
302
+               }
303 303
 
304
-			$output .= '</div>';
304
+               $output .= '</div>';
305 305
 
306
-			return $output;
307
-		}
308
-	}
306
+               return $output;
307
+          }
308
+     }
309 309
 
310 310
 }
311 311
 
Please login to merge, or discard this patch.