lsx_global_header()   D
last analyzed

Complexity

Conditions 35
Paths 17

Size

Total Lines 124
Code Lines 95

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 35
eloc 95
nc 17
nop 0
dl 0
loc 124
rs 4.1666
c 0
b 0
f 0

How to fix   Long Method    Complexity   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
/**
3
 * LSX functions and definitions - Layout.
4
 *
5
 * @package    lsx
6
 * @subpackage layout
7
 */
8
9
if ( ! defined( 'ABSPATH' ) ) {
10
	exit;
11
}
12
13
if ( ! function_exists( 'lsx_layout_selector' ) ) :
14
	/**
0 ignored issues
show
Coding Style Documentation introduced by
Doc comment for parameter "$class" missing
Loading history...
Coding Style Documentation introduced by
Doc comment for parameter "$area" missing
Loading history...
15
	 * Layout selector.
16
	 *
17
	 * @package    lsx
18
	 * @subpackage layout
19
	 */
20
	function lsx_layout_selector( $class, $area = 'site' ) {
0 ignored issues
show
Unused Code introduced by
The parameter $area is not used and could be removed. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-unused  annotation

20
	function lsx_layout_selector( $class, /** @scrutinizer ignore-unused */ $area = 'site' ) {

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
21
		$return_class = '';
22
		$layout       = get_theme_mod( 'lsx_layout', '1c' );
23
		$layout       = apply_filters( 'lsx_layout', $layout );
24
		$default_size = 'sm';
25
		$size         = apply_filters( 'lsx_bootstrap_column_size', $default_size );
26
27
		switch ( $layout ) {
28
			case '1c':
29
				$main_class    = 'col-' . $size . '-12';
30
				$sidebar_class = 'col-' . $size . '-12';
31
				break;
32
			case '2cr':
33
				$main_class    = 'col-' . $size . '-8';
34
				$sidebar_class = 'col-' . $size . '-4';
35
				break;
36
			case '2cl':
37
				$main_class    = 'col-' . $size . '-8 col-' . $size . '-push-4';
38
				$sidebar_class = 'col-' . $size . '-4 col-' . $size . '-pull-8';
39
				break;
40
			default:
41
				$main_class    = 'col-' . $size . '-8';
42
				$sidebar_class = 'col-' . $size . '-4';
43
				break;
44
		}
45
46
		if ( 'main' === $class ) {
47
			$return_class = apply_filters( 'lsx_layout_selector', $main_class, $class, $layout, $size );
48
		}
49
50
		if ( 'sidebar' === $class ) {
51
			$return_class = apply_filters( 'lsx_layout_selector', $sidebar_class, $class, $layout, $size );
52
		}
53
54
		return $return_class;
55
	}
56
endif;
57
58
if ( ! function_exists( 'lsx_main_class' ) ) :
59
	/**
60
	 * .main classes.
61
	 *
62
	 * @package    lsx
63
	 * @subpackage layout
64
	 */
65
	function lsx_main_class() {
66
		return lsx_layout_selector( 'main' );
67
	}
68
endif;
69
70
if ( ! function_exists( 'lsx_sidebar_class' ) ) :
71
	/**
72
	 * .sidebar classes.
73
	 *
74
	 * @package    lsx
75
	 * @subpackage layout
76
	 */
77
	function lsx_sidebar_class() {
78
		return lsx_layout_selector( 'sidebar' );
79
	}
80
endif;
81
82
if ( ! function_exists( 'lsx_header_classes' ) ) :
83
	/**
0 ignored issues
show
Coding Style Documentation introduced by
Doc comment for parameter "$additional" missing
Loading history...
84
	 * Output the classes for the header.
85
	 *
86
	 * @package    lsx
87
	 * @subpackage layout
88
	 */
89
	function lsx_header_classes( $additional = false ) {
90
		$classes = 'banner navbar navbar-default';
91
92
		if ( false !== $additional ) {
93
			$classes .= ' ' . $additional;
94
		}
95
96
		echo esc_attr( $classes );
97
	}
98
endif;
99
100
if ( ! function_exists( 'lsx_top_menu_classes' ) ) :
101
	/**
0 ignored issues
show
Coding Style Documentation introduced by
Doc comment for parameter "$additional" missing
Loading history...
102
	 * Output the classes for the top-menu.
103
	 *
104
	 * @package    lsx
105
	 * @subpackage layout
106
	 */
107
	function lsx_top_menu_classes( $additional = false ) {
108
		$classes = 'top-menu-default';
109
110
		if ( false !== $additional ) {
111
			$classes .= ' ' . $additional;
112
		}
113
114
		echo esc_attr( $classes );
115
	}
116
endif;
117
118
if ( ! function_exists( 'lsx_post_wrapper_class' ) ) :
119
	/**
120
	 * Output the classes for the top-menu.
121
	 *
122
	 * @package    lsx
123
	 * @subpackage layout
124
	 */
125
	function lsx_post_wrapper_class() {
126
		return apply_filters( 'lsx_post_wrapper_class', '' );
127
	}
128
endif;
129
130
131
132
if ( ! function_exists( 'lsx_add_footer_sidebar_area' ) ) :
133
	/**
134
	 * Output the Footer CTA and/pr Footer Widgets.
135
	 *
136
	 * @package    lsx
137
	 * @subpackage layout
138
	 */
139
	function lsx_add_footer_sidebar_area() {
140
		if ( is_active_sidebar( 'sidebar-footer-cta' ) ) : ?>
141
			<div id="footer-cta">
142
				<div class="container">
143
					<div class="lsx-full-width">
144
						<div class="lsx-hero-unit">
145
							<?php dynamic_sidebar( 'sidebar-footer-cta' ); ?>
146
						</div>
147
					</div>
148
				</div>
149
			</div>
150
		<?php endif; ?>
151
152
		<?php if ( is_active_sidebar( 'sidebar-footer' ) ) : ?>
153
			<div id="footer-widgets">
154
				<div class="container">
155
					<div class="row">
156
						<?php dynamic_sidebar( 'sidebar-footer' ); ?>
157
					</div>
158
				</div>
159
			</div>
160
			<?php
161
		endif;
162
	}
163
	add_action( 'lsx_footer_before', 'lsx_add_footer_sidebar_area' );
164
endif;
165
166
if ( ! function_exists( 'lsx_global_header' ) ) :
167
	/**
168
	 * Displays the global header.
169
	 *
170
	 * @package    lsx
171
	 * @subpackage layout
172
	 */
173
	function lsx_global_header() {
174
		$show_on_front  = get_option( 'show_on_front' );
175
		$queried_object = get_queried_object();
176
		$default_size   = 'sm';
177
		$size           = apply_filters( 'lsx_bootstrap_column_size', $default_size );
178
179
		// Cart and Checkout won't have banners of any kind.
180
		if ( function_exists( 'is_woocommerce' ) && ( is_checkout() || is_cart() ) ) {
0 ignored issues
show
Bug introduced by
The function is_checkout was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

180
		if ( function_exists( 'is_woocommerce' ) && ( /** @scrutinizer ignore-call */ is_checkout() || is_cart() ) ) {
Loading history...
Bug introduced by
The function is_cart was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

180
		if ( function_exists( 'is_woocommerce' ) && ( is_checkout() || /** @scrutinizer ignore-call */ is_cart() ) ) {
Loading history...
181
			return;
182
		}
183
184
		// Product pages have their own banner function 'lsx_page_banner()'.
185
		if ( function_exists( 'is_woocommerce' ) && ( is_product() ) ) {
0 ignored issues
show
Bug introduced by
The function is_product was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

185
		if ( function_exists( 'is_woocommerce' ) && ( /** @scrutinizer ignore-call */ is_product() ) ) {
Loading history...
186
			return;
187
		}
188
189
		// Events wont have banners.
190
		if ( function_exists( 'tribe_is_event' ) && ( ! is_tag() ) && ( tribe_is_event() || tribe_is_organizer() || tribe_is_venue() ) ) {
0 ignored issues
show
Bug introduced by
The function tribe_is_organizer was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

190
		if ( function_exists( 'tribe_is_event' ) && ( ! is_tag() ) && ( tribe_is_event() || /** @scrutinizer ignore-call */ tribe_is_organizer() || tribe_is_venue() ) ) {
Loading history...
Bug introduced by
The function tribe_is_venue was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

190
		if ( function_exists( 'tribe_is_event' ) && ( ! is_tag() ) && ( tribe_is_event() || tribe_is_organizer() || /** @scrutinizer ignore-call */ tribe_is_venue() ) ) {
Loading history...
191
			return;
192
		}
193
194
		if ( function_exists( 'lsx_is_rest_api_request' ) && lsx_is_rest_api_request() ) {
195
			return;
196
		}
197
198
		if ( is_page() && ( 'page' !== $show_on_front || ! is_front_page() ) ) :
199
			if ( class_exists( 'LSX_Banners' ) && empty( apply_filters( 'lsx_banner_plugin_disable', false ) && ( ! has_post_thumbnail() ) ) ) {
200
				return;
201
			}
202
				?>
203
			<div class="archive-header-wrapper banner-page col-<?php echo esc_attr( $size ); ?>-12">
204
				<?php lsx_global_header_inner_bottom(); ?>
205
				<header class="archive-header">
206
					<h1 class="archive-title"><?php the_title(); ?></h1>
207
				</header>
208
209
			</div>
210
			<?php
211
212
		elseif ( is_single() && ! is_singular( 'post' ) ) :
213
			?>
214
			<div class="archive-header-wrapper banner-single col-<?php echo esc_attr( $size ); ?>-12">
215
				<?php lsx_global_header_inner_bottom(); ?>
216
				<header class="archive-header">
217
					<h1 class="archive-title"><?php echo wp_kses_post( apply_filters( 'lsx_global_header_title', get_the_title() ) ); ?></h1>
218
				</header>
219
220
			</div>
221
			<?php
222
		elseif ( is_search() ) :
223
			?>
224
			<div class="archive-header-wrapper banner-search col-<?php echo esc_attr( $size ); ?>-12">
225
				<?php lsx_global_header_inner_bottom(); ?>
226
				<header class="archive-header">
227
					<h1 class="archive-title">
228
						<?php
229
							printf(
230
								/* Translators: %s: search term/query */
231
								esc_html__( 'Search Results for: %s', 'lsx' ),
232
								'<span>' . get_search_query() . '</span>'
233
							);
234
						?>
235
					</h1>
236
				</header>
237
238
			</div>
239
			<?php
240
		elseif ( is_author() ) :
241
			$author        = get_the_author();
0 ignored issues
show
Unused Code introduced by
The assignment to $author is dead and can be removed.
Loading history...
242
			$author_avatar = get_avatar( get_the_author_meta( 'ID' ), 256 );
0 ignored issues
show
Unused Code introduced by
The assignment to $author_avatar is dead and can be removed.
Loading history...
243
			$author_bio    = get_the_archive_description();
0 ignored issues
show
Unused Code introduced by
The assignment to $author_bio is dead and can be removed.
Loading history...
244
			?>
245
			<div class="archive-header-wrapper banner-archive-author col-<?php echo esc_attr( $size ); ?>-12">
246
				<?php lsx_global_header_inner_bottom(); ?>
247
				<header class="archive-header">
248
					<h1 class="archive-title"><?php the_archive_title(); ?></h1>
249
				</header>
250
251
			</div>
252
			<?php
253
		elseif ( is_archive() ) :
254
			?>
255
			<div class="archive-header-wrapper banner-archive col-<?php echo esc_attr( $size ); ?>-12">
256
				<?php lsx_global_header_inner_bottom(); ?>
257
				<header class="archive-header">
258
					<h1 class="archive-title">
259
						<?php if ( has_post_format() && ! is_category() && ! is_tag() && ! is_date() && ! is_tax( 'post_format' ) ) { ?>
260
							<?php the_archive_title( esc_html__( 'Type:', 'lsx' ) ); ?>
261
						<?php } else { ?>
262
							<?php echo wp_kses_post( apply_filters( 'lsx_global_header_title', get_the_archive_title() ) ); ?>
263
						<?php } ?>
264
					</h1>
265
266
					<?php
267
					if ( false === apply_filters( 'lsx_display_global_header_description', false ) ) {
268
						the_archive_description();
269
					}
270
					?>
271
				</header>
272
			</div>
273
			<?php
274
		elseif ( 'page' === $show_on_front && (int) get_option( 'page_for_posts' ) === $queried_object->ID ) :
0 ignored issues
show
Bug introduced by
The property ID does not seem to exist on WP_Post_Type.
Loading history...
275
			?>
276
			<div class="archive-header-wrapper banner-page col-<?php echo esc_attr( $size ); ?>-12">
277
				<?php lsx_global_header_inner_bottom(); ?>
278
				<header class="archive-header">
279
					<h1 class="archive-title"><?php esc_html_e( 'Blog', 'lsx' ); ?></h1>
280
				</header>
281
282
			</div>
283
			<?php
284
		elseif ( ! is_singular( 'post' ) ) :
285
			// Display only the breadcrumbs.
286
			?>
287
			<div class="archive-header-wrapper banner-singular col-<?php echo esc_attr( $size ); ?>-12">
288
				<?php lsx_global_header_inner_bottom(); ?>
289
			</div>
290
			<?php
291
		elseif ( ( true === apply_filters( 'lsx_global_header_disable', false ) ) && ( ! is_search() ) ) :
292
			// Display only the breadcrumbs.
293
			?>
294
			<div class="archive-header-wrapper banner-global col-<?php echo esc_attr( $size ); ?>-12">
295
				<?php lsx_global_header_inner_bottom(); ?>
296
			</div>
297
			<?php
298
		endif;
299
	}
300
	add_action( 'lsx_content_wrap_before', 'lsx_global_header' );
301
endif;
302
303
if ( ! function_exists( 'lsx_author_extra_info' ) ) :
304
	/**
305
	 * Displays the author extra info.
306
	 *
307
	 * @package    lsx
308
	 * @subpackage layout
309
	 */
310
	function lsx_author_extra_info() {
311
		$default_size = 'sm';
312
		$size         = apply_filters( 'lsx_bootstrap_column_size', $default_size );
313
314
		if ( is_author() ) :
315
			$author_id         = get_the_author_meta( 'ID' );
316
			$author            = get_the_author();
317
			$author_avatar     = get_avatar( $author_id, 400 );
318
			$author_bio        = get_the_archive_description();
319
			$author_url        = get_the_author_meta( 'url', $author_id );
0 ignored issues
show
Bug introduced by
$author_id of type string is incompatible with the type false|integer expected by parameter $user_id of get_the_author_meta(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

319
			$author_url        = get_the_author_meta( 'url', /** @scrutinizer ignore-type */ $author_id );
Loading history...
320
			$author_email      = get_the_author_meta( 'email', $author_id );
321
			$author_facebook   = get_the_author_meta( 'facebook', $author_id );
322
			$author_linkedin   = get_the_author_meta( 'linkedin', $author_id );
323
			$author_twitter    = get_the_author_meta( 'twitter', $author_id );
324
			?>
325
			<div class="col-<?php echo esc_attr( $size ); ?>-12">
326
				<div class="archive-author-data">
327
					<div class="row">
328
						<?php if ( ! empty( $author_avatar ) ) : ?>
329
							<div class="col-xs-12 col-sm-4 col-md-3">
330
							<figure class="archive-author-avatar"><?php echo wp_kses_post( $author_avatar ); ?></figure>
331
							</div>
332
						<?php endif; ?>
333
						<div class="col-xs-12 col-sm-8 col-md-9">
334
							<a class="back-to-blog" href="<?php echo ( esc_url( get_post_type_archive_link( 'post' ) ) ); ?>"><?php echo esc_html__( 'Back To Blog', 'lsx' ); ?></a>
0 ignored issues
show
Bug introduced by
It seems like get_post_type_archive_link('post') can also be of type false; however, parameter $url of esc_url() does only seem to accept string, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

334
							<a class="back-to-blog" href="<?php echo ( esc_url( /** @scrutinizer ignore-type */ get_post_type_archive_link( 'post' ) ) ); ?>"><?php echo esc_html__( 'Back To Blog', 'lsx' ); ?></a>
Loading history...
335
							<!-- Name -->
336
							<h2 class="archive-author-title">
337
								<?php
338
								if ( '' !== $author ) {
339
									echo esc_html( $author );
340
								}
341
								?>
342
							</h2>
343
							<!-- Social -->
344
							<?php if ( ! empty( $author_url ) || ! empty( $author_email ) || ! empty( $author_facebook ) || ! empty( $author_twitter ) ) : ?>
345
								<div class="archive-author-social-links">
346
									<?php if ( ! empty( $author_url ) ) : ?>
347
										<a href="<?php echo esc_url( $author_url ); ?>" target="_blank" rel="nofollow noreferrer noopener" class="archive-author-social-link archive-author-social-link-url"><i class="fa fa-link" aria-hidden="true"></i></a>
348
									<?php endif; ?>
349
350
									<?php if ( ! empty( $author_email ) ) : ?>
351
										<a href="mailto:<?php echo esc_attr( $author_email ); ?>" class="archive-author-social-link archive-author-social-link-email"><i class="fa fa-envelope" aria-hidden="true"></i></a>
352
									<?php endif; ?>
353
354
									<?php if ( ! empty( $author_facebook ) ) : ?>
355
										<a href="<?php echo esc_url( $author_facebook ); ?>" target="_blank" rel="nofollow noreferrer noopener" class="archive-author-social-link archive-author-social-link-facebook"><i class="fa fa-facebook" aria-hidden="true"></i></a>
356
									<?php endif; ?>
357
358
									<?php if ( ! empty( $author_twitter ) ) : ?>
359
										<a href="https://twitter.com/<?php echo esc_attr( $author_twitter ); ?>" target="_blank" rel="nofollow noreferrer noopener" class="archive-author-social-link archive-author-social-link-twitter"><i class="fa fa-twitter" aria-hidden="true"></i></a>
360
									<?php endif; ?>
361
362
									<?php if ( ! empty( $author_linkedin ) ) : ?>
363
										<a href="<?php echo esc_url( $author_linkedin ); ?>" target="_blank" rel="nofollow noreferrer noopener" class="archive-author-social-link archive-author-social-link-linkedin"><i class="fa fa-linkedin" aria-hidden="true"></i></a>
364
									<?php endif; ?>
365
								</div>
366
							<?php endif; ?>
367
368
							<!-- Bio -->
369
							<?php if ( ! empty( $author_bio ) ) : ?>
370
								<p class="archive-author-bio"><?php echo wp_kses_post( $author_bio ); ?></p>
371
							<?php endif; ?>
372
						</div>
373
					</div>
374
				</div>
375
				<h2><?php echo esc_html__( 'Posts', 'lsx' ); ?></h2>
376
			</div>
377
			<?php
378
		endif;
379
	}
380
	add_action( 'lsx_content_wrap_before', 'lsx_author_extra_info', 11 );
381
endif;
382
383
if ( ! function_exists( 'lsx_post_header' ) ) :
384
	/**
385
	 * Displays the post header.
386
	 *
387
	 * @package    lsx
388
	 * @subpackage layout
389
	 */
390
	function lsx_post_header() {
391
		$default_size = 'sm';
392
		$size         = apply_filters( 'lsx_bootstrap_column_size', $default_size );
393
394
		$disable_title = get_post_meta( get_the_ID(), 'lsx_disable_title', true );
0 ignored issues
show
Bug introduced by
It seems like get_the_ID() can also be of type false; however, parameter $post_id of get_post_meta() does only seem to accept integer, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

394
		$disable_title = get_post_meta( /** @scrutinizer ignore-type */ get_the_ID(), 'lsx_disable_title', true );
Loading history...
395
		if ( 'yes' === $disable_title && is_singular( 'post' ) ) {
396
			return;
397
		}
398
399
		if ( is_singular( 'post' ) ) :
400
			$format = get_post_format();
401
402
			if ( false === $format ) {
403
				$format = 'standard';
404
			}
405
406
			$format = lsx_translate_format_to_fontawesome( $format );
407
			?>
408
			<div class="archive-header-wrapper banner-post-header col-<?php echo esc_attr( $size ); ?>-12">
409
				<header class="archive-header">
410
					<h1 class="archive-title">
411
						<i class="format-link fa fa-<?php echo esc_attr( $format ); ?>"></i>
412
						<span><?php the_title(); ?></span>
413
					</h1>
414
				</header>
415
			</div>
416
			<?php
417
		endif;
418
	}
419
	add_action( 'lsx_entry_top', 'lsx_post_header' );
420
endif;
421
422
if ( ! function_exists( 'lsx_header_search_form' ) ) :
423
	/**
424
	 * Add a search form to just above the nav menu.
425
	 *
426
	 * @package    lsx
427
	 * @subpackage layout
428
	 */
429
	function lsx_header_search_form() {
430
		$search_form = get_theme_mod( 'lsx_header_search', false );
431
432
		if ( false !== $search_form || is_customize_preview() ) {
433
			get_search_form( true );
0 ignored issues
show
Bug introduced by
true of type true is incompatible with the type array expected by parameter $args of get_search_form(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

433
			get_search_form( /** @scrutinizer ignore-type */ true );
Loading history...
434
		}
435
	}
436
	$mobile_header_layout = get_theme_mod( 'lsx_header_mobile_layout', 'navigation-bar' );
437
	add_action( 'lsx_nav_before', 'lsx_header_search_form', 0 );
438
endif;
439
440
// Add entry meta to single post if active.
441
if ( ! function_exists( 'lsx_add_entry_meta' ) ) :
442
	function lsx_add_entry_meta() {
0 ignored issues
show
Coding Style Documentation introduced by
Missing doc comment for function lsx_add_entry_meta()
Loading history...
443
		$disable_title = get_post_meta( get_the_ID(), 'lsx_disable_title', true );
0 ignored issues
show
Bug introduced by
It seems like get_the_ID() can also be of type false; however, parameter $post_id of get_post_meta() does only seem to accept integer, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

443
		$disable_title = get_post_meta( /** @scrutinizer ignore-type */ get_the_ID(), 'lsx_disable_title', true );
Loading history...
444
		if ( 'yes' === $disable_title && is_singular( 'post' ) ) {
445
			return;
446
		}
447
		if ( is_single() && is_singular( 'post' ) ) {
448
			?>
449
			<div class="entry-meta">
450
				<?php lsx_post_meta_single_top(); ?>
451
			</div><!-- .entry-meta -->
452
			<?php
453
		}
454
	}
455
	add_action( 'lsx_entry_top', 'lsx_add_entry_meta', 999 );
456
endif;
457