GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Completed
Push — develop ( ec64d7...145ef0 )
by Chris
12s
created

namespace.php ➔ get_players()   B

Complexity

Conditions 3
Paths 2

Size

Total Lines 41
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 9
CRAP Score 3.009

Importance

Changes 0
Metric Value
cc 3
eloc 15
nc 2
nop 1
dl 0
loc 41
ccs 9
cts 10
cp 0.9
crap 3.009
rs 8.8571
c 0
b 0
f 0
1
<?php
2
/**
3
 * Games Collector Display.
4
 *
5
 * All the front-facing code.
6
 *
7
 * @package GC\GamesCollector\Display
8
 * @since   0.2
9
 */
10
11
namespace GC\GamesCollector\Display;
12
use GC\GamesCollector\Game;
13
use GC\GamesCollector\Attributes;
14
15
/**
16
 * Return the game title. With link if a link was saved.
17
 *
18
 * @since  1.0.0
19
 * @param  object $game The game WP_Post object.
20
 * @return string       The HTML markup for the game title.
21
 */
22
function get_game_title( $game ) {
23 2
	$before = '';
24 2
	$after  = '';
25
26
	// Output a link if one was saved.
27 2
	if ( $link = get_post_meta( $game->ID, '_gc_link', true ) ) {
28
		$before = '<a href="' . esc_url( $link ) . '">';
29
		$after  = '</a>';
30
	}
31
32
	// 1: Game ID, 2: Game title, 3: Link <a> tag, 4: Closing </a>.
33 2
	$output = sprintf( '%3$s<span class="game-title" id="game-%1$d-title">%2$s</span>%4$s',
34 2
		absint( $game->ID ),
35 2
		wp_kses_post( $game->post_title ),
36 2
		$before,
37 2
		$after
38
	);
39
40
	/**
41
	 * Allow game title to be filtered.
42
	 *
43
	 * @since 1.0.0
44
	 * @param string $output  The HTML markup for the game title.
45
	 * @param int    $game_id The game's post ID.
46
	 */
47 2
	return apply_filters( 'gc_filter_game_title', $output, $game->ID );
48
}
49
50
/**
51
 * Return the game info (post meta and taxonomies).
52
 *
53
 * @since  1.0.0
54
 * @param  int $game_id The game's post ID.
55
 * @return string       The HTML markup for the game information.
56
 */
57
function get_game_info( $game_id ) {
58
	ob_start(); ?>
59
60
		<div class="game-info" id="game-<?php echo absint( $game_id ); ?>-info">
61
			<?php
62 2
			echo get_players( $game_id );      // WPCS: XSS ok, already sanitized.
63 2
			echo get_playing_time( $game_id ); // WPCS: XSS ok, already sanitized.
64 2
			echo get_age( $game_id );          // WPCS: XSS ok, already sanitized.
65 2
			echo get_difficulty( $game_id );   // WPCS: XSS ok, already sanitized.
66 2
			echo get_attributes( $game_id );   // WPCS: XSS ok, already sanitized.
67
			?>
68 2
		</div>
69
70
	<?php return ob_get_clean();
71
}
72
73
/**
74
 * Return the markup for the buttons for filtering game lists.
75
 *
76
 * @since  1.0.0
77
 * @return string The markup for the buttons.
78
 */
79
function get_buttons() {
80 2
	$terms = get_terms( 'gc_attribute' );
81
82 2
	$show_all    = '<button data-filter="*">' . esc_html__( 'Show All', 'games-collector' ) . '</button>';
83 2
	$short_games = '<button data-filter=".short">' . esc_html__( 'Short Games', 'games-collector' ) . '</button>';
84 2
	$long_games  = '<button data-filter = ".long">' . esc_html__( 'Long Games', 'games-collector' ) . '</button>';
85 2
	$kids_games  = '<button data-filter = ".4-and-up,.5-and-up,.6-and-up,.7-and-up,.8-and-up,.9-and-up">' . esc_html__( 'Good for Kids', 'games-collector' ) . '</button>';
86 2
	$adult_games = '<button data-filter=".mature">' . esc_html__( 'Adult Games', 'games-collector' ) . '</button>';
87
88
	// Loop through terms to generate all those buttons. These won't be filterable.
89 2
	$terms_buttons = '';
90 2
	foreach ( $terms as $term ) {
91 2
		$terms_buttons .= '<button data-filter=".gc_attribute-' . esc_attr( $term->slug ) . '">' . esc_attr( $term->name ) . '</button>';
92
	}
93
94
	/**
95
	 * Allow Show All button to be filtered. Can be hooked to __return_null to disable.
96
	 *
97
	 * @since 1.1.0
98
	 * @var   string HTML markup for Show All button.
99
	 */
100 2
	$show_all = apply_filters( 'gc_filter_button_show_all', $show_all );
101
102
	/**
103
	 * Allow the attribute term buttons to be filtered. This will filter _all_ the term buttons. Can be hooked to __return_null to disable term buttons.
104
	 *
105
	 * @since 1.1.0
106
	 * @var   string HTML markup for all attribute term buttons.
107
	 */
108 2
	$terms_buttons = apply_filters( 'gc_filter_term_buttons', $terms_buttons );
109
110
	/**
111
	 * Allow Short Games button to be filtered. Can be hooked to __return_null to disable.
112
	 *
113
	 * @since 1.1.0
114
	 * @var   string HTML markup for Short Games button.
115
	 */
116 2
	$short_games = apply_filters( 'gc_filter_button_short_games', $short_games );
117
118
	/**
119
	 * Allow Long Games button to be filtered. Can be hooked to __return_null to disable.
120
	 *
121
	 * @since 1.1.0
122
	 * @var   string HTML markup for Long Games button.
123
	 */
124 2
	$long_games = apply_filters( 'gc_filter_button_long_games', $long_games );
125
126
	/**
127
	 * Allow Kids Games button to be filtered. Can be hooked to __return_null to disable.
128
	 *
129
	 * @since 1.1.0
130
	 * @var   string HTML markup for Kids Games button.
131
	 */
132 2
	$kids_games = apply_filters( 'gc_filter_button_kids_games', $kids_games );
133
134
	/**
135
	 * Allow Adults Games button to be filtered. Can be hooked to __return_null to disable.
136
	 *
137
	 * @since 1.1.0
138
	 * @var   string HTML markup for Adults Games button.
139
	 */
140 2
	$adult_games = apply_filters( 'gc_filter_button_adult_games', $adult_games );
141
142 2
	$output = $show_all . $terms_buttons . $short_games . $long_games . $kids_games . $adult_games;
143
144
	/**
145
	 * Allow entire output to be filtered.
146
	 *
147
	 * @since 1.0.0
148
	 * @var   string HTML markup for buttons.
149
	 */
150 2
	return apply_filters( 'gc_filter_buttons', $output );
151
}
152
153
/**
154
 * Return the HTML markup for the other game filters.
155
 *
156
 * @since  1.0.0
157
 * @return string Select markup for filters.
158
 */
159
function get_filters() {
160 2
	$player_filter     = '<div class="player-filter"><label for="players-filter-select">' . esc_html__( 'How many players?', 'games-collector' ) . ':</label>
161
		<select class="players-filter-select">
162 2
			<option selected>- ' . esc_html__( 'Select one', 'games-collector' ) . ' -</option>
163 2
			<option value=".2-players,.min-2-players,.max-2-players,.max-3-players,.max-4-players,.max-5-players,.max-6-players,.max-7-players,.8-or-more-players">' . esc_html__( '2+ players', 'games-collector' ) . '</option>
164 2
			<option value=".4-players,.min-4-players,.max-4-players,.max-5-players,.max-6-players,.max-7-players,.8-or-more-players">' . esc_html__( '4+ players', 'games-collector' ) . '</option>
165 2
			<option value=".5-players,.min-5-players,.max-5-players,.max-6-players,.max-7-players,.8-or-more-players">' . esc_html__( '5+ players', 'games-collector' ) . '</option>
166 2
			<option value=".6-players,.min-6-players,.max-6-players,.max-7-players,.8-or-more-players">' . esc_html__( '6+ players', 'games-collector' ) . '</option>
167 2
			<option value=".8-players,.min-8-players,.8-or-more-players">' . esc_html__( '8+ players', 'games-collector' ) . '</option>
168
		</select>
169
	</div>';
170
171 2
	$game_difficulties = '';
172
173 2
	foreach ( Game\get_difficulties() as $key => $value ) {
174 2
		$game_difficulties .= '<option value=".' . esc_html( $key ) . '">' . esc_html( $value ) . '</option>';
175
	}
176
177
	/**
178
	 * Allow game difficulties select options to be filtered.
179
	 *
180
	 * @since 1.1.0
181
	 * @var   string HTML markup of <option> tags for difficulties select input.
182
	 */
183 2
	$game_difficulties = apply_filters( 'gc_filter_options_difficulties', $game_difficulties );
184
185 2
	$difficulty_filter = '<div class="difficulty-filter"><label for="difficulty-filter-select">' . esc_html__( 'Difficulty', 'games-collector' ) . ':</label>
186
		<select class="difficulty-filter-select">
187 2
			<option selected>- ' . esc_html__( 'Select one', 'games-collector' ) . ' -</option>' . $game_difficulties . '
188
		</select>
189
	</div>';
190
191
	/**
192
	 * Allow the player filter to be filtered. Can be disabled entirely by hooking to __return_null.
193
	 *
194
	 * @since 1.1.0
195
	 * @var   string HTML markup for player filter.
196
	 */
197 2
	$player_filter = apply_filters( 'gc_filter_player_filter', $player_filter );
198
199
	/**
200
	 * Allow the difficulty filter to be filtered. Can be disabled entirely by hooking to __return_null.
201
	 *
202
	 * @since 1.1.0
203
	 * @var   string HTML markup for difficulty filter.
204
	 */
205 2
	$difficulty_filter = apply_filters( 'gc_filter_difficulty_filter', $difficulty_filter );
206
207 2
	$output = $player_filter . $difficulty_filter;
208
209
	/**
210
	 * Allow the filters to be customized.
211
	 *
212
	 * @since 1.0.0
213
	 * @var   string HTML markup for the filters.
214
	 */
215 2
	return apply_filters( 'gc_filter_game_filters', $output );
216
}
217
218
/**
219
 * Return a list of game attributes.
220
 *
221
 * @since  1.0.0
222
 * @param  int $game_id The game's post ID.
223
 * @return string       The HTML markup for the game attributes.
224
 * @uses                Attributes\get_the_attribute_list
225
 */
226
function get_attributes( $game_id ) {
227 2
	$attribute_list = Attributes\get_the_attribute_list(
228 2
		$game_id,
229 2
		'<div class="game-attributes"><span class="gc-icon icon-game-attributes">' . get_svg( 'tags', false ) . '</span><span class="game-attributes" id="game-' . absint( $game_id ) . '-attributes">', // Before.
230 2
		', ',                                       // Seperator.
231 2
		'</span></div>'                             // After.
232
	);
233
234
	/**
235
	 * Allow the attribute list to be filtered.
236
	 *
237
	 * @since 1.0.0
238
	 * @var   string The HTML markup for the attribute list.
239
	 * @uses  Attributes\get_the_attribute_list
240
	 */
241 2
	return apply_filters( 'gc_filter_attribute_list', $attribute_list );
242
}
243
244
/**
245
 * Return the number of players.
246
 *
247
 * @since  1.0.0
248
 * @param  int $game_id The game's post ID.
249
 * @return mixed        The HTML markup for number of players or false if not set.
250
 * @uses                Game\get_players_min_max
251
 */
252
function get_players( $game_id ) {
253 3
	$players_min_max = Game\get_players_min_max( $game_id );
254
255 3
	if ( isset( $players_min_max['min'] ) ) {
256
		/**
257
		 * Allow the # of players to be filtered (but only if there actually are players).
258
		 *
259
		 * @since 1.0.0
260
		 * @var   $game_id         int    The game's post ID.
261
		 * @var   $players_min_max array  The minimum & maximum # of players.
262
		 * @var   $output          string The filtered # of players.
263
		 * @uses                          Game\get_players_min_max
264
		 */
265 3
		$num_players = apply_filters( 'gc_filter_players', $game_id, $players_min_max, sprintf(
266
			// Translators: 1: Minimum number of players, 2: Maximum number of players.
267 3
			__( '%1$d %2$s players', 'games-collector' ),
268 3
			absint( $players_min_max['min'] ),
269 3
			isset( $players_min_max['max'] ) ? sprintf( '- %d', absint( $players_min_max['max'] ) ) : '+'
270
		) );
271
272 3
		ob_start();
273
		?>
274
275
		<span class="gc-icon icon-game-players"><?php the_svg( 'players', false ); ?></span><span class="game-num-players" id="game-<?php echo absint( $game_id ); ?>-num-players"><?php echo esc_attr( $num_players ); ?></span>
276
		<?php
277 3
		$output = ob_get_clean();
278
279
		/**
280
		 * Allow the full output for the # of players to be filtered (but only if there actually are players).
281
		 *
282
		 * @since 1.0.0
283
		 * @var   $output      string The HTML markup for # of players.
284
		 * @var   $game_id     int    The game's post ID.
285
		 * @var   $num_players string The number of players (filtered from above).
286
		 * @uses                          Game\get_players_min_max
287
		 */
288 3
		return apply_filters( 'gc_filter_players_output', $output, $game_id, $num_players );
289
	}
290
291
	return false;
292
}
293
294
/**
295
 * Return the game difficulty.
296
 *
297
 * @since  1.0.0
298
 * @param  int $game_id The game's post ID.
299
 * @return mixed        The HTML markup for difficulty or false if not set.
300
 * @uses                Game\get_difficulties
301
 */
302 View Code Duplication
function get_difficulty( $game_id ) {
303 2
	if ( $difficulty = get_post_meta( $game_id, '_gc_difficulty', true ) ) {
304
		ob_start(); ?>
305
		<span class="gc-icon icon-game-difficulty"><?php the_svg( 'difficulty', false ); ?></span><span class="game-difficulty" id="game-<?php echo absint( $game_id ); ?>-difficulty"><?php echo esc_html( Game\get_difficulties( $difficulty ) ); ?></span>
306
307
		<?php $output = ob_get_clean();
308
309
		/**
310
		 * Allow the difficulty output to be filtered (but only if it has been set).
311
		 *
312
		 * @since 1.0.0
313
		 * @var   string The HTML markup for difficulty.
314
		 * @uses         Game\get_difficulties
315
		 */
316 2
		return apply_filters( 'gc_filter_difficulty', $output );
317
	}
318
319
	return false;
320
}
321
322
/**
323
 * Return the game playing time.
324
 *
325
 * @since  1.0.0
326
 * @param  int $game_id The game's post ID.
327
 * @return mixed        The HTML markup for playing time or false if not set.
328
 */
329 View Code Duplication
function get_playing_time( $game_id ) {
330 2
	if ( $playing_time = get_post_meta( $game_id, '_gc_time', true ) ) {
331
		ob_start(); ?>
332
		<span class="gc-icon icon-game-time"><?php the_svg( 'time', false ); ?></span><span class="game-playing-time" id="game-<?php echo absint( $game_id ); ?>-playing-time"><?php echo esc_html( sprintf( __( '%s minutes', 'games-collector' ), $playing_time ) ); ?></span>
333
334
		<?php $output = ob_get_clean();
335
336
		/**
337
		 * Allow the playing time output to be filtered (but only if it has been set).
338
		 *
339
		 * @since 1.0.0
340
		 * @var   string The HTML markup for playing time.
341
		 */
342 2
		return apply_filters( 'gc_filter_playing_time', $output );
343
	}
344
345
	return false;
346
}
347
348
/**
349
 * Return the game age.
350
 *
351
 * @since  1.0.0
352
 * @param  int $game_id The game's post ID.
353
 * @return mixed        The HTML markup for age or false if not set.
354
 */
355 View Code Duplication
function get_age( $game_id ) {
356 2
	if ( $age = get_post_meta( $game_id, '_gc_age', true ) ) {
357
		ob_start(); ?>
358
		<span class="gc-icon icon-game-age"><?php the_svg( 'age', false ); ?></span><span class="game-age" id="game-<?php echo absint( $game_id ); ?>-age"><?php echo esc_html( sprintf( '%d+', $age ) ); ?></span>
359
360
		<?php $output = ob_get_clean();
361
362
		/**
363
		 * Allow the age output to be filtered (but only if it has been set).
364
		 *
365
		 * @since 1.0.0
366
		 * @var   string The HTML markup for age.
367
		 */
368 2
		return apply_filters( 'gc_filter_age', $output );
369
	}
370
371 1
	return false;
372
}
373
374
/**
375
 * Enqueue front end styles and scripts.
376
 *
377
 * @since 0.2
378
 */
379
function enqueue_scripts() {
380
	// Don't load in the admin.
381
	if ( is_admin() ) {
382
		return;
383
	}
384
385
	wp_enqueue_style( 'games-collector', dirname( dirname( plugin_dir_url( __FILE__ ) ) ) . '/assets/css/games-collector.css', [], '1.1.0-r2' );
386
	wp_enqueue_script( 'isotope', dirname( dirname( plugin_dir_url( __FILE__ ) ) ) . '/assets/js/isotope.pkgd.min.js', [ 'jquery' ], '3.0.1', true );
387
	wp_enqueue_script( 'games-collector', dirname( dirname( plugin_dir_url( __FILE__ ) ) ) . '/assets/js/games-collector.js', [ 'jquery', 'isotope' ], '0.2' );
388
}
389
390
/**
391
 * Get a SVG icon by name.
392
 *
393
 * @since  0.2
394
 * @param  string $name    An icon name.
395
 * @param  bool   $encoded Whether to return the svg as a base64 encoded image (for background images) or the raw SVG XML.
396
 * @return string          The svg.
397
 */
398
function get_svg( $name = '', $encoded = true ) {
399
	// Bail if nothing was passed.
400 3
	if ( '' === $name ) {
401
		return;
402
	}
403
404 3
	if ( $encoded ) {
405
		$icons = [
406
			'dice'       => 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0ZWQgYnkgSWNvTW9vbi5pbyAtLT4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgdmlld0JveD0iMCAwIDMyIDMyIj4KPHBhdGggZmlsbD0iI2EwYTVhYSIgZD0iTTI3IDZoLTE2Yy0yLjc1IDAtNSAyLjI1LTUgNXYxNmMwIDIuNzUgMi4yNSA1IDUgNWgxNmMyLjc1IDAgNS0yLjI1IDUtNXYtMTZjMC0yLjc1LTIuMjUtNS01LTV6TTEzIDI4Yy0xLjY1NyAwLTMtMS4zNDMtMy0zczEuMzQzLTMgMy0zIDMgMS4zNDMgMyAzLTEuMzQzIDMtMyAzek0xMyAxNmMtMS42NTcgMC0zLTEuMzQzLTMtM3MxLjM0My0zIDMtMyAzIDEuMzQzIDMgMy0xLjM0MyAzLTMgM3pNMTkgMjJjLTEuNjU3IDAtMy0xLjM0My0zLTNzMS4zNDMtMyAzLTMgMyAxLjM0MyAzIDMtMS4zNDMgMy0zIDN6TTI1IDI4Yy0xLjY1NyAwLTMtMS4zNDMtMy0zczEuMzQzLTMgMy0zIDMgMS4zNDMgMyAzLTEuMzQzIDMtMyAzek0yNSAxNmMtMS42NTcgMC0zLTEuMzQzLTMtM3MxLjM0My0zIDMtMyAzIDEuMzQzIDMgMy0xLjM0MyAzLTMgM3pNMjUuODk5IDRjLTAuNDY3LTIuMjc1LTIuNDkxLTQtNC44OTktNGgtMTZjLTIuNzUgMC01IDIuMjUtNSA1djE2YzAgMi40MDggMS43MjUgNC40MzIgNCA0Ljg5OXYtMTkuODk5YzAtMS4xIDAuOS0yIDItMmgxOS44OTl6Ij48L3BhdGg+Cjwvc3ZnPgo=',
407
			'dice-alt'   => 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTAyNCIgaGVpZ2h0PSIxMDI0IiB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0Ij48ZyBpZD0iaWNvbW9vbi1pZ25vcmUiPjwvZz48cGF0aCBkPSJNNjg4IDM1MmgtMjU2Yy00NCAwLTgwIDM2LTgwIDgwdjI1NmMwIDQ0IDM2IDgwIDgwIDgwaDI1NmM0NCAwIDgwLTM2IDgwLTgwdi0yNTZjMC00NC0zNi04MC04MC04MHpNNDY0IDcwNGMtMjYuNTA4IDAtNDgtMjEuNDkyLTQ4LTQ4czIxLjQ5Mi00OCA0OC00OCA0OCAyMS40OTIgNDggNDgtMjEuNDkyIDQ4LTQ4IDQ4ek00NjQgNTEyYy0yNi41MDggMC00OC0yMS40OTItNDgtNDhzMjEuNDkyLTQ4IDQ4LTQ4IDQ4IDIxLjQ5MiA0OCA0OC0yMS40OTIgNDgtNDggNDh6TTU2MCA2MDhjLTI2LjUwOCAwLTQ4LTIxLjQ5Mi00OC00OHMyMS40OTItNDggNDgtNDggNDggMjEuNDkyIDQ4IDQ4LTIxLjQ5MiA0OC00OCA0OHpNNjU2IDcwNGMtMjYuNTA4IDAtNDgtMjEuNDkyLTQ4LTQ4czIxLjQ5Mi00OCA0OC00OCA0OCAyMS40OTIgNDggNDgtMjEuNDkyIDQ4LTQ4IDQ4ek02NTYgNTEyYy0yNi41MDggMC00OC0yMS40OTItNDgtNDhzMjEuNDkyLTQ4IDQ4LTQ4IDQ4IDIxLjQ5MiA0OCA0OC0yMS40OTIgNDgtNDggNDh6TTY3MC4zNzUgMzIwYy03LjQ2NS0zNi40MDQtMzkuODU0LTY0LTc4LjM3NS02NGgtMjU2Yy00NCAwLTgwIDM2LTgwIDgwdjI1NmMwIDM4LjUxOSAyNy41OTYgNzAuOTE4IDY0IDc4LjM3NXYtMzE4LjM3NWMwLTE3LjYgMTQuNC0zMiAzMi0zMmgzMTguMzc1eiI+PC9wYXRoPjwvc3ZnPg==',
408
			'age'        => 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0ZWQgYnkgSWNvTW9vbi5pbyAtLT4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyOCIgdmlld0JveD0iMCAwIDIwIDI4Ij4KPHBhdGggZD0iTTE4LjU2MiA4LjU2M2wtNC41NjIgNC41NjJ2MTIuODc1YzAgMC45NjktMC43ODEgMS43NS0xLjc1IDEuNzVzLTEuNzUtMC43ODEtMS43NS0xLjc1di02aC0xdjZjMCAwLjk2OS0wLjc4MSAxLjc1LTEuNzUgMS43NXMtMS43NS0wLjc4MS0xLjc1LTEuNzV2LTEyLjg3NWwtNC41NjItNC41NjJjLTAuNTc4LTAuNTk0LTAuNTc4LTEuNTMxIDAtMi4xMjUgMC41OTQtMC41NzggMS41MzEtMC41NzggMi4xMjUgMGwzLjU2MyAzLjU2M2g1Ljc1bDMuNTYzLTMuNTYzYzAuNTk0LTAuNTc4IDEuNTMxLTAuNTc4IDIuMTI1IDAgMC41NzggMC41OTQgMC41NzggMS41MzEgMCAyLjEyNXpNMTMuNSA2YzAgMS45MzctMS41NjMgMy41LTMuNSAzLjVzLTMuNS0xLjU2My0zLjUtMy41IDEuNTYzLTMuNSAzLjUtMy41IDMuNSAxLjU2MyAzLjUgMy41eiI+PC9wYXRoPgo8L3N2Zz4K',
409
			'time'       => 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0ZWQgYnkgSWNvTW9vbi5pbyAtLT4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyOCIgdmlld0JveD0iMCAwIDI0IDI4Ij4KPHBhdGggZD0iTTE0IDguNXY3YzAgMC4yODEtMC4yMTkgMC41LTAuNSAwLjVoLTVjLTAuMjgxIDAtMC41LTAuMjE5LTAuNS0wLjV2LTFjMC0wLjI4MSAwLjIxOS0wLjUgMC41LTAuNWgzLjV2LTUuNWMwLTAuMjgxIDAuMjE5LTAuNSAwLjUtMC41aDFjMC4yODEgMCAwLjUgMC4yMTkgMC41IDAuNXpNMjAuNSAxNGMwLTQuNjg4LTMuODEzLTguNS04LjUtOC41cy04LjUgMy44MTMtOC41IDguNSAzLjgxMyA4LjUgOC41IDguNSA4LjUtMy44MTMgOC41LTguNXpNMjQgMTRjMCA2LjYyNS01LjM3NSAxMi0xMiAxMnMtMTItNS4zNzUtMTItMTIgNS4zNzUtMTIgMTItMTIgMTIgNS4zNzUgMTIgMTJ6Ij48L3BhdGg+Cjwvc3ZnPgo=',
410
			'players'    => 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0ZWQgYnkgSWNvTW9vbi5pbyAtLT4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIzMCIgaGVpZ2h0PSIyOCIgdmlld0JveD0iMCAwIDMwIDI4Ij4KPHBhdGggZD0iTTkuMjY2IDE0Yy0xLjYyNSAwLjA0Ny0zLjA5NCAwLjc1LTQuMTQxIDJoLTIuMDk0Yy0xLjU2MyAwLTMuMDMxLTAuNzUtMy4wMzEtMi40ODQgMC0xLjI2Ni0wLjA0Ny01LjUxNiAxLjkzNy01LjUxNiAwLjMyOCAwIDEuOTUzIDEuMzI4IDQuMDYyIDEuMzI4IDAuNzE5IDAgMS40MDYtMC4xMjUgMi4wNzgtMC4zNTktMC4wNDcgMC4zNDQtMC4wNzggMC42ODgtMC4wNzggMS4wMzEgMCAxLjQyMiAwLjQ1MyAyLjgyOCAxLjI2NiA0ek0yNiAyMy45NTNjMCAyLjUzMS0xLjY3MiA0LjA0Ny00LjE3MiA0LjA0N2gtMTMuNjU2Yy0yLjUgMC00LjE3Mi0xLjUxNi00LjE3Mi00LjA0NyAwLTMuNTMxIDAuODI4LTguOTUzIDUuNDA2LTguOTUzIDAuNTMxIDAgMi40NjkgMi4xNzIgNS41OTQgMi4xNzJzNS4wNjMtMi4xNzIgNS41OTQtMi4xNzJjNC41NzggMCA1LjQwNiA1LjQyMiA1LjQwNiA4Ljk1M3pNMTAgNGMwIDIuMjAzLTEuNzk3IDQtNCA0cy00LTEuNzk3LTQtNCAxLjc5Ny00IDQtNCA0IDEuNzk3IDQgNHpNMjEgMTBjMCAzLjMxMy0yLjY4OCA2LTYgNnMtNi0yLjY4OC02LTYgMi42ODgtNiA2LTYgNiAyLjY4OCA2IDZ6TTMwIDEzLjUxNmMwIDEuNzM0LTEuNDY5IDIuNDg0LTMuMDMxIDIuNDg0aC0yLjA5NGMtMS4wNDctMS4yNS0yLjUxNi0xLjk1My00LjE0MS0yIDAuODEyLTEuMTcyIDEuMjY2LTIuNTc4IDEuMjY2LTQgMC0wLjM0NC0wLjAzMS0wLjY4OC0wLjA3OC0xLjAzMSAwLjY3MiAwLjIzNCAxLjM1OSAwLjM1OSAyLjA3OCAwLjM1OSAyLjEwOSAwIDMuNzM0LTEuMzI4IDQuMDYyLTEuMzI4IDEuOTg0IDAgMS45MzcgNC4yNSAxLjkzNyA1LjUxNnpNMjggNGMwIDIuMjAzLTEuNzk3IDQtNCA0cy00LTEuNzk3LTQtNCAxLjc5Ny00IDQtNCA0IDEuNzk3IDQgNHoiPjwvcGF0aD4KPC9zdmc+Cg==',
411
			'difficulty' => 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0ZWQgYnkgSWNvTW9vbi5pbyAtLT4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIyNiIgaGVpZ2h0PSIyOCIgdmlld0JveD0iMCAwIDI2IDI4Ij4KPHBhdGggZD0iTTI2IDE3LjE1NmMwIDEuNjA5LTAuOTIyIDIuOTUzLTIuNjI1IDIuOTUzLTEuOTA2IDAtMi40MDYtMS43MzQtNC4xMjUtMS43MzQtMS4yNSAwLTEuNzE5IDAuNzgxLTEuNzE5IDEuOTM3IDAgMS4yMTkgMC41IDIuMzkxIDAuNDg0IDMuNTk0djAuMDc4Yy0wLjE3MiAwLTAuMzQ0IDAtMC41MTYgMC4wMTYtMS42MDkgMC4xNTYtMy4yMzQgMC40NjktNC44NTkgMC40NjktMS4xMDkgMC0yLjI2Ni0wLjQzOC0yLjI2Ni0xLjcxOSAwLTEuNzE5IDEuNzM0LTIuMjE5IDEuNzM0LTQuMTI1IDAtMS43MDMtMS4zNDQtMi42MjUtMi45NTMtMi42MjUtMS42NDEgMC0zLjE1NiAwLjkwNi0zLjE1NiAyLjcwMyAwIDEuOTg0IDEuNTE2IDIuODQ0IDEuNTE2IDMuOTIyIDAgMC41NDctMC4zNDQgMS4wMzEtMC43MTkgMS4zOTEtMC40ODQgMC40NTMtMS4xNzIgMC41NDctMS44MjggMC41NDctMS4yODEgMC0yLjU2Mi0wLjE3Mi0zLjgyOC0wLjM3NS0wLjI4MS0wLjA0Ny0wLjU3OC0wLjA3OC0wLjg1OS0wLjEyNWwtMC4yMDMtMC4wMzFjLTAuMDMxLTAuMDE2LTAuMDc4LTAuMDE2LTAuMDc4LTAuMDMxdi0xNmMwLjA2MyAwLjA0NyAwLjk4NCAwLjE1NiAxLjE0MSAwLjE4NyAxLjI2NiAwLjIwMyAyLjU0NyAwLjM3NSAzLjgyOCAwLjM3NSAwLjY1NiAwIDEuMzQ0LTAuMDk0IDEuODI4LTAuNTQ3IDAuMzc1LTAuMzU5IDAuNzE5LTAuODQ0IDAuNzE5LTEuMzkxIDAtMS4wNzgtMS41MTYtMS45MzctMS41MTYtMy45MjIgMC0xLjc5NyAxLjUxNi0yLjcwMyAzLjE3Mi0yLjcwMyAxLjU5NCAwIDIuOTM4IDAuOTIyIDIuOTM4IDIuNjI1IDAgMS45MDYtMS43MzQgMi40MDYtMS43MzQgNC4xMjUgMCAxLjI4MSAxLjE1NiAxLjcxOSAyLjI2NiAxLjcxOSAxLjc5NyAwIDMuNTc4LTAuNDA2IDUuMzU5LTAuNXYwLjAzMWMtMC4wNDcgMC4wNjMtMC4xNTYgMC45ODQtMC4xODcgMS4xNDEtMC4yMDMgMS4yNjYtMC4zNzUgMi41NDctMC4zNzUgMy44MjggMCAwLjY1NiAwLjA5NCAxLjM0NCAwLjU0NyAxLjgyOCAwLjM1OSAwLjM3NSAwLjg0NCAwLjcxOSAxLjM5MSAwLjcxOSAxLjA3OCAwIDEuOTM3LTEuNTE2IDMuOTIyLTEuNTE2IDEuNzk3IDAgMi43MDMgMS41MTYgMi43MDMgMy4xNTZ6Ij48L3BhdGg+Cjwvc3ZnPgo=',
412
			'tags'       => 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0ZWQgYnkgSWNvTW9vbi5pbyAtLT4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIzMCIgaGVpZ2h0PSIyOCIgdmlld0JveD0iMCAwIDMwIDI4Ij4KPHBhdGggZD0iTTcgN2MwLTEuMTA5LTAuODkxLTItMi0ycy0yIDAuODkxLTIgMiAwLjg5MSAyIDIgMiAyLTAuODkxIDItMnpNMjMuNjcyIDE2YzAgMC41MzEtMC4yMTkgMS4wNDctMC41NzggMS40MDZsLTcuNjcyIDcuNjg4Yy0wLjM3NSAwLjM1OS0wLjg5MSAwLjU3OC0xLjQyMiAwLjU3OHMtMS4wNDctMC4yMTktMS40MDYtMC41NzhsLTExLjE3Mi0xMS4xODhjLTAuNzk3LTAuNzgxLTEuNDIyLTIuMjk3LTEuNDIyLTMuNDA2di02LjVjMC0xLjA5NCAwLjkwNi0yIDItMmg2LjVjMS4xMDkgMCAyLjYyNSAwLjYyNSAzLjQyMiAxLjQyMmwxMS4xNzIgMTEuMTU2YzAuMzU5IDAuMzc1IDAuNTc4IDAuODkxIDAuNTc4IDEuNDIyek0yOS42NzIgMTZjMCAwLjUzMS0wLjIxOSAxLjA0Ny0wLjU3OCAxLjQwNmwtNy42NzIgNy42ODhjLTAuMzc1IDAuMzU5LTAuODkxIDAuNTc4LTEuNDIyIDAuNTc4LTAuODEyIDAtMS4yMTktMC4zNzUtMS43NS0wLjkyMmw3LjM0NC03LjM0NGMwLjM1OS0wLjM1OSAwLjU3OC0wLjg3NSAwLjU3OC0xLjQwNnMtMC4yMTktMS4wNDctMC41NzgtMS40MjJsLTExLjE3Mi0xMS4xNTZjLTAuNzk3LTAuNzk3LTIuMzEyLTEuNDIyLTMuNDIyLTEuNDIyaDMuNWMxLjEwOSAwIDIuNjI1IDAuNjI1IDMuNDIyIDEuNDIybDExLjE3MiAxMS4xNTZjMC4zNTkgMC4zNzUgMC41NzggMC44OTEgMC41NzggMS40MjJ6Ij48L3BhdGg+Cjwvc3ZnPgo=',
413
		];
414
415
		/**
416
		 * Allow base64-encoded icons to be filtered.
417
		 *
418
		 * @var array
419
		 */
420
		$icons = apply_filters( 'gc_filter_svg_base64', $icons );
421
	} else {
422
		$icons = [
423 3
			'dice'       => '<svg class="gc-icon svg gc-icon-dice" aria-labelledby="title-ID" role="img" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32" viewBox="0 0 32 32">
424
<title>dice</title>
425
<path fill="#a0a5aa" d="M27 6h-16c-2.75 0-5 2.25-5 5v16c0 2.75 2.25 5 5 5h16c2.75 0 5-2.25 5-5v-16c0-2.75-2.25-5-5-5zM13 28c-1.657 0-3-1.343-3-3s1.343-3 3-3 3 1.343 3 3-1.343 3-3 3zM13 16c-1.657 0-3-1.343-3-3s1.343-3 3-3 3 1.343 3 3-1.343 3-3 3zM19 22c-1.657 0-3-1.343-3-3s1.343-3 3-3 3 1.343 3 3-1.343 3-3 3zM25 28c-1.657 0-3-1.343-3-3s1.343-3 3-3 3 1.343 3 3-1.343 3-3 3zM25 16c-1.657 0-3-1.343-3-3s1.343-3 3-3 3 1.343 3 3-1.343 3-3 3zM25.899 4c-0.467-2.275-2.491-4-4.899-4h-16c-2.75 0-5 2.25-5 5v16c0 2.408 1.725 4.432 4 4.899v-19.899c0-1.1 0.9-2 2-2h19.899z"></path>
426
</svg>
427
></path>
428
</svg>',
429
			'dice-alt'   => '<svg class="gc-icon svg gc-icon-dice-alt" aria-labelledby="title-ID" role="img" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1024" height="1024" viewBox="0 0 1024 1024">
430
<title>dice-alt</title>
431
<path d="M688 352h-256c-44 0-80 36-80 80v256c0 44 36 80 80 80h256c44 0 80-36 80-80v-256c0-44-36-80-80-80zM464 704c-26.508 0-48-21.492-48-48s21.492-48 48-48 48 21.492 48 48-21.492 48-48 48zM464 512c-26.508 0-48-21.492-48-48s21.492-48 48-48 48 21.492 48 48-21.492 48-48 48zM560 608c-26.508 0-48-21.492-48-48s21.492-48 48-48 48 21.492 48 48-21.492 48-48 48zM656 704c-26.508 0-48-21.492-48-48s21.492-48 48-48 48 21.492 48 48-21.492 48-48 48zM656 512c-26.508 0-48-21.492-48-48s21.492-48 48-48 48 21.492 48 48-21.492 48-48 48zM670.375 320c-7.465-36.404-39.854-64-78.375-64h-256c-44 0-80 36-80 80v256c0 38.519 27.596 70.918 64 78.375v-318.375c0-17.6 14.4-32 32-32h318.375z"></path>
432
</svg>',
433
			'age'        => '<svg class="gc-icon svg gc-icon-age" aria-labelledby="title-ID" role="img" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="20" height="28" viewBox="0 0 20 28">
434
<title>age</title>
435
<path d="M18.562 8.563l-4.562 4.562v12.875c0 0.969-0.781 1.75-1.75 1.75s-1.75-0.781-1.75-1.75v-6h-1v6c0 0.969-0.781 1.75-1.75 1.75s-1.75-0.781-1.75-1.75v-12.875l-4.562-4.562c-0.578-0.594-0.578-1.531 0-2.125 0.594-0.578 1.531-0.578 2.125 0l3.563 3.563h5.75l3.563-3.563c0.594-0.578 1.531-0.578 2.125 0 0.578 0.594 0.578 1.531 0 2.125zM13.5 6c0 1.937-1.563 3.5-3.5 3.5s-3.5-1.563-3.5-3.5 1.563-3.5 3.5-3.5 3.5 1.563 3.5 3.5z"></path>
436
</svg>',
437
			'time'       => '<svg class="gc-icon svg gc-icon-time" aria-labelledby="title-ID" role="img" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="28" viewBox="0 0 24 28">
438
<title>time</title>
439
<path d="M14 8.5v7c0 0.281-0.219 0.5-0.5 0.5h-5c-0.281 0-0.5-0.219-0.5-0.5v-1c0-0.281 0.219-0.5 0.5-0.5h3.5v-5.5c0-0.281 0.219-0.5 0.5-0.5h1c0.281 0 0.5 0.219 0.5 0.5zM20.5 14c0-4.688-3.813-8.5-8.5-8.5s-8.5 3.813-8.5 8.5 3.813 8.5 8.5 8.5 8.5-3.813 8.5-8.5zM24 14c0 6.625-5.375 12-12 12s-12-5.375-12-12 5.375-12 12-12 12 5.375 12 12z"></path>
440
</svg>',
441
			'players'    => '<svg class="gc-icon svg gc-icon-players" aria-labelledby="title-ID" role="img" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="30" height="28" viewBox="0 0 30 28">
442
<title>players</title>
443
<path d="M9.266 14c-1.625 0.047-3.094 0.75-4.141 2h-2.094c-1.563 0-3.031-0.75-3.031-2.484 0-1.266-0.047-5.516 1.937-5.516 0.328 0 1.953 1.328 4.062 1.328 0.719 0 1.406-0.125 2.078-0.359-0.047 0.344-0.078 0.688-0.078 1.031 0 1.422 0.453 2.828 1.266 4zM26 23.953c0 2.531-1.672 4.047-4.172 4.047h-13.656c-2.5 0-4.172-1.516-4.172-4.047 0-3.531 0.828-8.953 5.406-8.953 0.531 0 2.469 2.172 5.594 2.172s5.063-2.172 5.594-2.172c4.578 0 5.406 5.422 5.406 8.953zM10 4c0 2.203-1.797 4-4 4s-4-1.797-4-4 1.797-4 4-4 4 1.797 4 4zM21 10c0 3.313-2.688 6-6 6s-6-2.688-6-6 2.688-6 6-6 6 2.688 6 6zM30 13.516c0 1.734-1.469 2.484-3.031 2.484h-2.094c-1.047-1.25-2.516-1.953-4.141-2 0.812-1.172 1.266-2.578 1.266-4 0-0.344-0.031-0.688-0.078-1.031 0.672 0.234 1.359 0.359 2.078 0.359 2.109 0 3.734-1.328 4.062-1.328 1.984 0 1.937 4.25 1.937 5.516zM28 4c0 2.203-1.797 4-4 4s-4-1.797-4-4 1.797-4 4-4 4 1.797 4 4z"></path>
444
</svg>',
445
			'difficulty' => '<svg class="gc-icon svg gc-icon-difficulty" aria-labelledby="title-ID" role="img" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="26" height="28" viewBox="0 0 26 28">
446
<title>difficulty</title>
447
<path d="M26 17.156c0 1.609-0.922 2.953-2.625 2.953-1.906 0-2.406-1.734-4.125-1.734-1.25 0-1.719 0.781-1.719 1.937 0 1.219 0.5 2.391 0.484 3.594v0.078c-0.172 0-0.344 0-0.516 0.016-1.609 0.156-3.234 0.469-4.859 0.469-1.109 0-2.266-0.438-2.266-1.719 0-1.719 1.734-2.219 1.734-4.125 0-1.703-1.344-2.625-2.953-2.625-1.641 0-3.156 0.906-3.156 2.703 0 1.984 1.516 2.844 1.516 3.922 0 0.547-0.344 1.031-0.719 1.391-0.484 0.453-1.172 0.547-1.828 0.547-1.281 0-2.562-0.172-3.828-0.375-0.281-0.047-0.578-0.078-0.859-0.125l-0.203-0.031c-0.031-0.016-0.078-0.016-0.078-0.031v-16c0.063 0.047 0.984 0.156 1.141 0.187 1.266 0.203 2.547 0.375 3.828 0.375 0.656 0 1.344-0.094 1.828-0.547 0.375-0.359 0.719-0.844 0.719-1.391 0-1.078-1.516-1.937-1.516-3.922 0-1.797 1.516-2.703 3.172-2.703 1.594 0 2.938 0.922 2.938 2.625 0 1.906-1.734 2.406-1.734 4.125 0 1.281 1.156 1.719 2.266 1.719 1.797 0 3.578-0.406 5.359-0.5v0.031c-0.047 0.063-0.156 0.984-0.187 1.141-0.203 1.266-0.375 2.547-0.375 3.828 0 0.656 0.094 1.344 0.547 1.828 0.359 0.375 0.844 0.719 1.391 0.719 1.078 0 1.937-1.516 3.922-1.516 1.797 0 2.703 1.516 2.703 3.156z"></path>
448
</svg>',
449
			'tags'       => '<svg class="gc-icon svg gc-icon-tags" aria-labelledby="title-ID" role="img" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="30" height="28" viewBox="0 0 30 28">
450
<title>tags</title>
451
<path d="M7 7c0-1.109-0.891-2-2-2s-2 0.891-2 2 0.891 2 2 2 2-0.891 2-2zM23.672 16c0 0.531-0.219 1.047-0.578 1.406l-7.672 7.688c-0.375 0.359-0.891 0.578-1.422 0.578s-1.047-0.219-1.406-0.578l-11.172-11.188c-0.797-0.781-1.422-2.297-1.422-3.406v-6.5c0-1.094 0.906-2 2-2h6.5c1.109 0 2.625 0.625 3.422 1.422l11.172 11.156c0.359 0.375 0.578 0.891 0.578 1.422zM29.672 16c0 0.531-0.219 1.047-0.578 1.406l-7.672 7.688c-0.375 0.359-0.891 0.578-1.422 0.578-0.812 0-1.219-0.375-1.75-0.922l7.344-7.344c0.359-0.359 0.578-0.875 0.578-1.406s-0.219-1.047-0.578-1.422l-11.172-11.156c-0.797-0.797-2.312-1.422-3.422-1.422h3.5c1.109 0 2.625 0.625 3.422 1.422l11.172 11.156c0.359 0.375 0.578 0.891 0.578 1.422z"></path>
452
</svg>',
453
		];
454
455
		/**
456
		 * Allow svg icons to be filtered.
457
		 *
458
		 * @var array
459
		 */
460 3
		$icons = apply_filters( 'gc_filter_svg_xml', $icons );
461
	} // End if().
462
463 3
	return $icons[ $name ];
464
}
465
466
/**
467
 * Get a SVG icon by name. Wrapper for get_svg.
468
 *
469
 * @since  1.1.0
470
 * @param  string $name    An icon name.
471
 * @param  bool   $encoded Whether to return the svg as a base64 encoded image (for background images) or the raw SVG XML.
472
 */
473
function the_svg( $name = '', $encoded = true ) {
474 3
	echo get_svg( $name, $encoded ); // WPCS: XSS ok.
475
}
476