\s*', '><', $svg ); // Remove white space between SVG tags.
return $svg;
}
return null;
}
/**
* GET SOCIAL LINK SVG
* Detects the social network from a URL and returns the SVG code for its icon.
*
* @param string $uri The URL to retrieve SVG for.
*/
public static function get_social_link_svg( $uri ) {
static $regex_map; // Only compute regex map once, for performance.
if ( ! isset( $regex_map ) ) {
$regex_map = array();
$map = &self::$social_icons_map; // Use reference instead of copy, to save memory.
foreach ( array_keys( self::$social_icons ) as $icon ) {
$domains = array_key_exists( $icon, $map ) ? $map[ $icon ] : array( sprintf( '%s.com', $icon ) );
$domains = array_map( 'trim', $domains ); // Remove leading/trailing spaces, to prevent regex from failing to match.
$domains = array_map( 'preg_quote', $domains );
$regex_map[ $icon ] = sprintf( '/(%s)/i', implode( '|', $domains ) );
}
}
foreach ( $regex_map as $icon => $regex ) {
if ( preg_match( $regex, $uri ) ) {
return laid_back_get_theme_svg( $icon, 'social' );
}
}
return null;
}
/**
* ICON STORAGE
* Store the code for all SVGs in an array.
*
* @var array
*/
public static $ui_icons = array(
'angle-right' => '',
'calendar' => '',
'caret-right' => '',
'caret-down' => '',
'chain' => '',
'chevron-left' => '',
'chevron-right' => '',
'close' => '',
'comment-o' => '',
'comments-o' => '',
'file-text-o' => '',
'folder-open-o' => '',
'home' => '',
'menu' => '',
'pencil' => '',
'refresh' => '',
'reply' => '',
'search' => '',
'share' => '',
'signal' => '',
'side-bar' => '',
'tag' => '',
'thumb-tack' => '',
'toc' => '',
'user' => '',
);
/**
* Social Icons – domain mappings.
*
* By default, each Icon ID is matched against a .com TLD. To override this behavior,
* specify all the domains it covers (including the .com TLD too, if applicable).
*
* @var array
*/
public static $social_icons_map = array(
'amazon' => array(
'amazon.com',
'amazon.cn',
'amazon.in',
'amazon.fr',
'amazon.de',
'amazon.it',
'amazon.nl',
'amazon.es',
'amazon.co',
'amazon.ca',
),
'apple' => array(
'apple.com',
'itunes.com',
),
'behance' => array(
'behance.net',
),
'codepen' => array(
'codepen.io',
),
'facebook' => array(
'facebook.com',
'fb.me',
),
'feed' => array(
'feed',
),
'google-plus' => array(
'plus.google.com',
),
'lastfm' => array(
'last.fm',
),
'mail' => array(
'mailto:',
),
'slideshare' => array(
'slideshare.net',
'slideshare.com',
),
'pocket' => array(
'getpocket.com',
),
'twitch' => array(
'twitch.tv',
),
'wordpress' => array(
'wordpress.com',
'wordpress.org',
),
);
/**
* Social Icons – svg sources.
*
* @var array
*/
public static $social_icons = array(
'youtube' => '',
);
}
}