Issues (461)

Branch: master

Security Analysis    not enabled

This project does not seem to handle request data directly as such no vulnerable execution paths were found.

  File Inclusion
File Inclusion enables an attacker to inject custom files into PHP's file loading mechanism, either explicitly passed to include, or for example via PHP's auto-loading mechanism.
  Regex Injection
Regex Injection enables an attacker to execute arbitrary code in your PHP process.
  SQL Injection
SQL Injection enables an attacker to execute arbitrary SQL code on your database server gaining access to user data, or manipulating user data.
  Response Splitting
Response Splitting can be used to send arbitrary responses.
  File Manipulation
File Manipulation enables an attacker to write custom data to files. This potentially leads to injection of arbitrary code on the server.
  Object Injection
Object Injection enables an attacker to inject an object into PHP code, and can lead to arbitrary code execution, file exposure, or file manipulation attacks.
  File Exposure
File Exposure allows an attacker to gain access to local files that he should not be able to access. These files can for example include database credentials, or other configuration files.
  XML Injection
XML Injection enables an attacker to read files on your local filesystem including configuration files, or can be abused to freeze your web-server process.
  Code Injection
Code Injection enables an attacker to execute arbitrary code on the server.
  Variable Injection
Variable Injection enables an attacker to overwrite program variables with custom data, and can lead to further vulnerabilities.
  XPath Injection
XPath Injection enables an attacker to modify the parts of XML document that are read. If that XML document is for example used for authentication, this can lead to further vulnerabilities similar to SQL Injection.
  Other Vulnerability
This category comprises other attack vectors such as manipulating the PHP runtime, loading custom extensions, freezing the runtime, or similar.
  Command Injection
Command Injection enables an attacker to inject a shell command that is execute with the privileges of the web-server. This can be used to expose sensitive data, or gain access of your server.
  LDAP Injection
LDAP Injection enables an attacker to inject LDAP statements potentially granting permission to run unauthorized queries, or modify content inside the LDAP tree.
  Cross-Site Scripting
Cross-Site Scripting enables an attacker to inject code into the response of a web-request that is viewed by other users. It can for example be used to bypass access controls, or even to take over other users' accounts.
  Header Injection
Unfortunately, the security analysis is currently not available for your project. If you are a non-commercial open-source project, please contact support to gain access.

includes/layout.php (20 issues)

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
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
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...
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
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
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...
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
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
The assignment to $author_avatar is dead and can be removed.
Loading history...
243
			$author_bio    = get_the_archive_description();
0 ignored issues
show
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
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
$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
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
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
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
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