Passed
Push — 249-fix/delete-posts-by-custom... ( cbb919...ce983c )
by Sudar
38:50 queued 28:43
created

bd_starts_with()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 2
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 1
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 2
dl 0
loc 2
ccs 1
cts 1
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
/**
3
 * Contains the helper functions.
4
 *
5
 * Some of the functions where created before dropping support for PHP 5.2 and that's the reason why they are not namespaced.
6
 *
7
 * @since 6.0.0 File created.
8
 */
9
defined( 'ABSPATH' ) || exit; // Exit if accessed directly.
10
11
/**
12
 * Get a value from an array based on key.
13
 *
14
 * If key is present returns the value, else returns the default value.
15
 *
16
 * @since 5.6.0 added `bd` prefix.
17
 *
18
 * @param array  $array   Array from which value has to be retrieved.
19
 * @param string $key     Key, whose value to be retrieved.
20
 * @param mixed  $default Optional. Default value to be returned, if the key is not found.
21
 *
22
 * @return mixed Value if key is present, else the default value.
23
 */
24
function bd_array_get( $array, $key, $default = null ) {
25 42
	return isset( $array[ $key ] ) ? $array[ $key ] : $default;
26
}
27
28
/**
29
 * Get a value from an array based on key and convert it into bool.
30
 *
31
 * @since 5.6.0 added `bd` prefix.
32
 *
33
 * @param array  $array   Array from which value has to be retrieved.
34
 * @param string $key     Key, whose value to be retrieved.
35
 * @param bool   $default (Optional) Default value to be returned, if the key is not found.
36
 *
37
 * @return bool Boolean converted Value if key is present, else the default value.
38
 */
39
function bd_array_get_bool( $array, $key, $default = false ) {
40 31
	return bd_to_bool( bd_array_get( $array, $key, $default ) );
41
}
42
43
/**
44
 * Convert a string value into boolean, based on whether the value "True" or "False" is present.
45
 *
46
 * @since 5.5
47
 *
48
 * @param string $string String value to compare.
49
 *
50
 * @return bool True if string is "True", False otherwise.
51
 */
52
function bd_to_bool( $string ) {
53 93
	return filter_var( $string, FILTER_VALIDATE_BOOLEAN );
54
}
55
56
/**
57
 * Check if a string starts with a sub string.
58
 *
59
 * Copied from StackOverFlow.
60
 *
61
 * @see https://stackoverflow.com/a/834355/24949.
62
 * @since 6.0.0
63
 *
64
 * @param string $haystack Haystack.
65
 * @param string $needle   Needle.
66
 *
67
 * @return bool True if Haystack starts with Needle, False otherwise.
68
 */
69
function bd_starts_with( $haystack, $needle ) {
70 2
	return ( substr( $haystack, 0, strlen( $needle ) ) === $needle );
71
}
72
73
/**
74
 * Check if a string ends with a sub string.
75
 *
76
 * Copied from StackOverFlow.
77
 *
78
 * @see https://stackoverflow.com/a/51491517/24949
79
 * @since 6.0.0
80
 *
81
 * @param string $haystack Haystack.
82
 * @param string $needle   Needle.
83
 *
84
 * @return bool True if Haystack ends with Needle, False otherwise.
85
 */
86
function bd_ends_with( $haystack, $needle ) {
87 2
	return substr( $haystack, - strlen( $needle ) ) === $needle;
88
}
89
90
/**
91
 * Check if a string contains another sub string.
92
 *
93
 * Copied from StackOverFlow.
94
 *
95
 * @see https://stackoverflow.com/a/4366748/24949
96
 * @since 6.0.0
97
 *
98
 * @param string $haystack Haystack.
99
 * @param string $needle   Needle.
100
 *
101
 * @return bool True if Haystack ends with Needle, False otherwise.
102
 */
103
function bd_contains( $haystack, $needle ) {
104 5
	return strpos( $haystack, $needle ) !== false;
105
}
106
107
/**
108
 * Get GMT Offseted time in Unix Timestamp format.
109
 *
110
 * @since 6.0.0
111
 *
112
 * @param string $time_string Time string.
113
 *
114
 * @return int GMT Offseted time.in Unix Timestamp.
115
 */
116
function bd_get_gmt_offseted_time( $time_string ) {
117 28
	$gmt_offset = sanitize_text_field( get_option( 'gmt_offset' ) );
0 ignored issues
show
Bug introduced by
It seems like get_option('gmt_offset') can also be of type false; however, parameter $str of sanitize_text_field() 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

117
	$gmt_offset = sanitize_text_field( /** @scrutinizer ignore-type */ get_option( 'gmt_offset' ) );
Loading history...
118
119 28
	return strtotime( $time_string ) - ( $gmt_offset * HOUR_IN_SECONDS );
120
}
121
122
/**
123
 * Get the formatted list of allowed mime types.
124
 * This function was originally defined in the Bulk Delete Attachment addon.
125
 *
126
 * @since 5.5
127
 *
128
 * @return array List of allowed mime types after formatting
129
 */
130
function bd_get_allowed_mime_types() {
131
	$mime_types = get_allowed_mime_types();
132
	sort( $mime_types );
133
134
	$processed_mime_types        = array();
135
	$processed_mime_types['all'] = __( 'All mime types', 'bulk-delete' );
136
137
	$last_value = '';
138
	foreach ( $mime_types as $key => $value ) {
139
		$splitted = explode( '/', $value, 2 );
140
		$prefix   = $splitted[0];
141
142
		if ( '' == $last_value || $prefix != $last_value ) {
143
			$processed_mime_types[ $prefix ] = __( 'All', 'bulk-delete' ) . ' ' . $prefix;
144
			$last_value                      = $prefix;
145
		}
146
147
		$processed_mime_types[ $value ] = $value;
148
	}
149
150
	return $processed_mime_types;
151
}
152
153
/**
154
 * Get current theme name.
155
 *
156
 * @since 5.5.4
157
 *
158
 * @return string Current theme name.
159
 */
160
function bd_get_current_theme_name() {
161
	if ( get_bloginfo( 'version' ) < '3.4' ) {
162
		$theme_data = get_theme_data( get_stylesheet_directory() . '/style.css' );
0 ignored issues
show
Deprecated Code introduced by
The function get_theme_data() has been deprecated: 3.4.0 Use wp_get_theme() ( Ignorable by Annotation )

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

162
		$theme_data = /** @scrutinizer ignore-deprecated */ get_theme_data( get_stylesheet_directory() . '/style.css' );

This function has been deprecated. The supplier of the function has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the function will be removed and what other function to use instead.

Loading history...
163
164
		return $theme_data['Name'] . ' ' . $theme_data['Version'];
165
	} else {
166
		$theme_data = wp_get_theme();
167
168
		return $theme_data->Name . ' ' . $theme_data->Version;
0 ignored issues
show
Bug introduced by
Are you sure $theme_data->Version of type false|string can be used in concatenation? ( Ignorable by Annotation )

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

168
		return $theme_data->Name . ' ' . /** @scrutinizer ignore-type */ $theme_data->Version;
Loading history...
Bug introduced by
Are you sure $theme_data->Name of type false|string can be used in concatenation? ( Ignorable by Annotation )

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

168
		return /** @scrutinizer ignore-type */ $theme_data->Name . ' ' . $theme_data->Version;
Loading history...
169
	}
170
}
171
172
/**
173
 * Try to identity the hosting provider.
174
 *
175
 * @since 5.5.4
176
 *
177
 * @return string Web host name if identified, empty string otherwise.
178
 */
179
function bd_identify_host() {
180
	$host = '';
181
	if ( defined( 'WPE_APIKEY' ) ) {
182
		$host = 'WP Engine';
183
	} elseif ( defined( 'PAGELYBIN' ) ) {
184
		$host = 'Pagely';
185
	}
186
187
	return $host;
188
}
189
190
/**
191
 * Print plugins that are currently active.
192
 *
193
 * @since 5.5.4
194
 */
195
function bd_print_current_plugins() {
196
	$plugins        = get_plugins();
197
	$active_plugins = get_option( 'active_plugins', array() );
198
199
	foreach ( $plugins as $plugin_path => $plugin ) {
200
		// If the plugin isn't active, don't show it.
201
		if ( ! in_array( $plugin_path, $active_plugins ) ) {
0 ignored issues
show
Bug introduced by
It seems like $active_plugins can also be of type false; however, parameter $haystack of in_array() does only seem to accept array, 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

201
		if ( ! in_array( $plugin_path, /** @scrutinizer ignore-type */ $active_plugins ) ) {
Loading history...
202
			continue;
203
		}
204
205
		echo $plugin['Name'] . ': ' . $plugin['Version'] . "\n";
206
	}
207
}
208
209
/**
210
 * Print network active plugins.
211
 *
212
 * @since 5.5.4
213
 */
214
function bd_print_network_active_plugins() {
215
	$plugins        = wp_get_active_network_plugins();
216
	$active_plugins = get_site_option( 'active_sitewide_plugins', array() );
217
218
	foreach ( $plugins as $plugin_path ) {
219
		$plugin_base = plugin_basename( $plugin_path );
220
221
		// If the plugin isn't active, don't show it.
222
		if ( ! array_key_exists( $plugin_base, $active_plugins ) ) {
223
			continue;
224
		}
225
226
		$plugin = get_plugin_data( $plugin_path );
227
228
		echo $plugin['Name'] . ' :' . $plugin['Version'] . "\n";
229
	}
230
}
231
232
/**
233
 * Print scheduled jobs.
234
 *
235
 * @since 6.0
236
 */
237
function bd_print_scheduled_jobs() {
238
	$cron        = _get_cron_array();
239
	$date_format = _x( 'M j, Y @ G:i', 'Cron table date format', 'bulk-delete' );
240
241
	foreach ( $cron as $timestamp => $cronhooks ) {
242
		foreach ( (array) $cronhooks as $hook => $events ) {
243
			if ( 'do-bulk-delete-' === substr( $hook, 0, 15 ) ) {
244
				foreach ( (array) $events as $key => $event ) {
245
					echo date_i18n( $date_format, $timestamp + ( get_option( 'gmt_offset' ) * 60 * 60 ) ) . ' (' . $timestamp . ')';
246
					echo ' | ';
247
					echo $event['schedule'];
248
					echo ' | ';
249
					echo $hook;
250
					echo "\n";
251
				}
252
			}
253
		}
254
	}
255
}
256
257
/**
258
 * Print License Info.
259
 *
260
 * @since 6.0
261
 *
262
 * @param mixed $keys
263
 */
264
function bd_print_license_info( $keys ) {
265
	foreach ( $keys as $key ) {
266
		echo $key['addon-name'];
267
		echo ' | ';
268
		echo $key['license'];
269
		echo ' | ';
270
		echo $key['expires'];
271
		echo ' | ';
272
		echo $key['validity'];
273
		echo ' | ';
274
		echo $key['addon-code'];
275
	}
276
}
277