| 1 |
<?php |
| 2 |
if ( ! defined( 'ABSPATH' ) ) { |
| 3 |
exit; // Exit if accessed directly! |
| 4 |
} |
| 5 |
|
| 6 |
if ( ! class_exists( 'WPSC_Icons' ) ) : |
| 7 |
|
| 8 |
final class WPSC_Icons { |
| 9 |
|
| 10 |
/** |
| 11 |
* Icons to be loaded on init |
| 12 |
* |
| 13 |
* @var Array |
| 14 |
*/ |
| 15 |
public static $icons; |
| 16 |
|
| 17 |
/** |
| 18 |
* Initialize this class |
| 19 |
* |
| 20 |
* @return void |
| 21 |
*/ |
| 22 |
public static function init() { |
| 23 |
|
| 24 |
add_action( 'init', array( __CLASS__, 'load_icons' ) ); |
| 25 |
} |
| 26 |
|
| 27 |
/** |
| 28 |
* Load SVG icons |
| 29 |
* |
| 30 |
* @return void |
| 31 |
*/ |
| 32 |
public static function load_icons() { |
| 33 |
|
| 34 |
$icons = array( |
| 35 |
'edit' => file_get_contents( WPSC_ABSPATH . 'asset/icons/edit-solid.svg' ), //phpcs:ignore |
| 36 |
'info-circle' => file_get_contents( WPSC_ABSPATH . 'asset/icons/info-circle-solid.svg' ), //phpcs:ignore |
| 37 |
'plus-square' => file_get_contents( WPSC_ABSPATH . 'asset/icons/plus-square-solid.svg' ), //phpcs:ignore |
| 38 |
'trash-alt' => file_get_contents( WPSC_ABSPATH . 'asset/icons/trash-alt-solid.svg' ), //phpcs:ignore |
| 39 |
'times' => file_get_contents( WPSC_ABSPATH . 'asset/icons/times-solid.svg' ), //phpcs:ignore |
| 40 |
'times-circle' => file_get_contents( WPSC_ABSPATH . 'asset/icons/times-circle-solid.svg' ), //phpcs:ignore |
| 41 |
'reply' => file_get_contents( WPSC_ABSPATH . 'asset/icons/reply-solid.svg' ), //phpcs:ignore |
| 42 |
'notes' => file_get_contents( WPSC_ABSPATH . 'asset/icons/notes.svg' ), //phpcs:ignore |
| 43 |
'prioritize' => file_get_contents( WPSC_ABSPATH . 'asset/icons/prioritize.svg' ), //phpcs:ignore |
| 44 |
'bars' => file_get_contents( WPSC_ABSPATH . 'asset/icons/bars-solid.svg' ), //phpcs:ignore |
| 45 |
'chevron-up' => file_get_contents( WPSC_ABSPATH . 'asset/icons/chevron-up-solid.svg' ), //phpcs:ignore |
| 46 |
'chevron-down' => file_get_contents( WPSC_ABSPATH . 'asset/icons/chevron-down-solid.svg' ), //phpcs:ignore |
| 47 |
'chevron-left' => file_get_contents( WPSC_ABSPATH . 'asset/icons/chevron-left-solid.svg' ), //phpcs:ignore |
| 48 |
'chevron-right' => file_get_contents( WPSC_ABSPATH . 'asset/icons/chevron-right-solid.svg' ), //phpcs:ignore |
| 49 |
'control' => file_get_contents( WPSC_ABSPATH . 'asset/icons/control.svg' ), //phpcs:ignore |
| 50 |
'cogs' => file_get_contents( WPSC_ABSPATH . 'asset/icons/cogs-solid.svg' ), //phpcs:ignore |
| 51 |
'history' => file_get_contents( WPSC_ABSPATH . 'asset/icons/history-solid.svg' ), //phpcs:ignore |
| 52 |
'id-card' => file_get_contents( WPSC_ABSPATH . 'asset/icons/id-card-solid.svg' ), //phpcs:ignore |
| 53 |
'list-alt' => file_get_contents( WPSC_ABSPATH . 'asset/icons/list-alt-solid.svg' ), //phpcs:ignore |
| 54 |
'gps-navigation' => file_get_contents( WPSC_ABSPATH . 'asset/icons/gps-navigation.svg' ), //phpcs:ignore |
| 55 |
'search' => file_get_contents( WPSC_ABSPATH . 'asset/icons/search-solid.svg' ), //phpcs:ignore |
| 56 |
'sort' => file_get_contents( WPSC_ABSPATH . 'asset/icons/sort-solid.svg' ), //phpcs:ignore |
| 57 |
'sync' => file_get_contents( WPSC_ABSPATH . 'asset/icons/sync-solid.svg' ), //phpcs:ignore |
| 58 |
'users' => file_get_contents( WPSC_ABSPATH . 'asset/icons/users-solid.svg' ), //phpcs:ignore |
| 59 |
'ticket-alt' => file_get_contents( WPSC_ABSPATH . 'asset/icons/ticket-alt-solid.svg' ), //phpcs:ignore |
| 60 |
'user-tie' => file_get_contents( WPSC_ABSPATH . 'asset/icons/user-tie-solid.svg' ), //phpcs:ignore |
| 61 |
'headset' => file_get_contents( WPSC_ABSPATH . 'asset/icons/headset-solid.svg' ), //phpcs:ignore |
| 62 |
'contact-form' => file_get_contents( WPSC_ABSPATH . 'asset/icons/contact-form.svg' ), //phpcs:ignore |
| 63 |
'envelope' => file_get_contents( WPSC_ABSPATH . 'asset/icons/envelope-regular.svg' ), //phpcs:ignore |
| 64 |
'widget' => file_get_contents( WPSC_ABSPATH . 'asset/icons/widget.svg' ), //phpcs:ignore |
| 65 |
'check' => file_get_contents( WPSC_ABSPATH . 'asset/icons/check-solid.svg' ), //phpcs:ignore |
| 66 |
'checked' => file_get_contents( WPSC_ABSPATH . 'asset/icons/checked.svg' ), //phpcs:ignore |
| 67 |
'font' => file_get_contents( WPSC_ABSPATH . 'asset/icons/font-solid.svg' ), //phpcs:ignore |
| 68 |
'clock' => file_get_contents( WPSC_ABSPATH . 'asset/icons/clock-solid.svg' ), //phpcs:ignore |
| 69 |
'calendar-times' => file_get_contents( WPSC_ABSPATH . 'asset/icons/calendar-times-solid.svg' ), //phpcs:ignore |
| 70 |
'calendar-alt' => file_get_contents( WPSC_ABSPATH . 'asset/icons/calendar-alt-regular.svg' ), //phpcs:ignore |
| 71 |
'trash-restore' => file_get_contents( WPSC_ABSPATH . 'asset/icons/trash-restore-solid.svg' ), //phpcs:ignore |
| 72 |
'unlock' => file_get_contents( WPSC_ABSPATH . 'asset/icons/unlock-solid.svg' ), //phpcs:ignore |
| 73 |
'palette' => file_get_contents( WPSC_ABSPATH . 'asset/icons/palette-solid.svg' ), //phpcs:ignore |
| 74 |
'arrow-right' => file_get_contents( WPSC_ABSPATH . 'asset/icons/arrow-right-solid.svg' ), //phpcs:ignore |
| 75 |
'arrow-left' => file_get_contents( WPSC_ABSPATH . 'asset/icons/arrow-left-solid.svg' ), //phpcs:ignore |
| 76 |
'log-out' => file_get_contents( WPSC_ABSPATH . 'asset/icons/log-out.svg' ), //phpcs:ignore |
| 77 |
'system' => file_get_contents( WPSC_ABSPATH . 'asset/icons/system.svg' ), //phpcs:ignore |
| 78 |
'subfolder' => file_get_contents( WPSC_ABSPATH . 'asset/icons/subfolder.svg' ), //phpcs:ignore |
| 79 |
'shield' => file_get_contents( WPSC_ABSPATH . 'asset/icons/shield.svg' ), //phpcs:ignore |
| 80 |
'tags' => file_get_contents( WPSC_ABSPATH . 'asset/icons/tags.svg' ), //phpcs:ignore |
| 81 |
'assignment' => file_get_contents( WPSC_ABSPATH . 'asset/icons/assignment.svg' ), //phpcs:ignore |
| 82 |
'closed' => file_get_contents( WPSC_ABSPATH . 'asset/icons/closed.svg' ), //phpcs:ignore |
| 83 |
'unread' => file_get_contents( WPSC_ABSPATH . 'asset/icons/unread.svg' ), //phpcs:ignore |
| 84 |
'users-avatar' => file_get_contents( WPSC_ABSPATH . 'asset/icons/users-avatar.svg' ), //phpcs:ignore |
| 85 |
'warning-sign' => file_get_contents( WPSC_ABSPATH . 'asset/icons/warning-sign.svg' ), //phpcs:ignore |
| 86 |
'line-graph' => file_get_contents( WPSC_ABSPATH . 'asset/icons/line-graph.svg' ), //phpcs:ignore |
| 87 |
'list' => file_get_contents( WPSC_ABSPATH . 'asset/icons/list.svg' ), //phpcs:ignore |
| 88 |
'pie-chart' => file_get_contents( WPSC_ABSPATH . 'asset/icons/pie-chart.svg' ), //phpcs:ignore |
| 89 |
'dashboard' => file_get_contents( WPSC_ABSPATH . 'asset/icons/dashboard.svg' ), //phpcs:ignore |
| 90 |
'wp-logo' => file_get_contents( WPSC_ABSPATH . 'asset/icons/wp-logo.svg' ), //phpcs:ignore |
| 91 |
); |
| 92 |
self::$icons = apply_filters( 'wpsc_icons', $icons ); |
| 93 |
} |
| 94 |
|
| 95 |
/** |
| 96 |
* Return SVG icon element |
| 97 |
* |
| 98 |
* @param string $name - icon name. |
| 99 |
* @return void |
| 100 |
*/ |
| 101 |
public static function get( $name ) { |
| 102 |
|
| 103 |
$allowed_tags = array( |
| 104 |
'svg' => array( |
| 105 |
'class' => true, |
| 106 |
'aria-hidden' => true, |
| 107 |
'aria-labelledby' => true, |
| 108 |
'role' => true, |
| 109 |
'xmlns' => true, |
| 110 |
'width' => true, |
| 111 |
'height' => true, |
| 112 |
'viewbox' => true, |
| 113 |
), |
| 114 |
'g' => array( 'fill' => true ), |
| 115 |
'title' => array( 'title' => true ), |
| 116 |
'path' => array( |
| 117 |
'd' => true, |
| 118 |
'fill' => true, |
| 119 |
), |
| 120 |
); |
| 121 |
|
| 122 |
echo isset( self::$icons[ $name ] ) ? wp_kses( self::$icons[ $name ], $allowed_tags ) : ''; |
| 123 |
} |
| 124 |
} |
| 125 |
endif; |
| 126 |
|
| 127 |
WPSC_Icons::init(); |
| 128 |
|