File: /home/mgawa/public_html/wp-content/themes/flatsome2/inc/admin/kirki/includes/class-kirki-helper.php
<?php
/**
* Helper methods
*
* @package Kirki
* @category Core
* @author Aristeides Stathopoulos
* @copyright Copyright (c) 2016, Aristeides Stathopoulos
* @license http://opensource.org/licenses/https://opensource.org/licenses/MIT
* @since 1.0
*/
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
if ( ! class_exists( 'Kirki_Helper' ) ) {
/**
* A simple object containing static methods.
*/
class Kirki_Helper {
/**
* Recursive replace in arrays.
*
* @static
* @access public
* @param array $array The first array.
* @param array $array1 The second array.
* @return mixed
*/
public static function array_replace_recursive( $array, $array1 ) {
if ( function_exists( 'array_replace_recursive' ) ) {
return array_replace_recursive( $array, $array1 );
}
// Handle the arguments, merge one by one.
$args = func_get_args();
$array = $args[0];
if ( ! is_array( $array ) ) {
return $array;
}
$count = count( $args );
for ( $i = 1; $i < $count; $i++ ) {
if ( is_array( $args[ $i ] ) ) {
$array = self::recurse( $array, $args[ $i ] );
}
}
return $array;
}
/**
* Helper method to be used from the array_replace_recursive method.
*
* @static
* @access public
* @param array $array The first array.
* @param array $array1 The second array.
* @return array
*/
public static function recurse( $array, $array1 ) {
foreach ( $array1 as $key => $value ) {
// Create new key in $array, if it is empty or not an array.
if ( ! isset( $array[ $key ] ) || ( isset( $array[ $key ] ) && ! is_array( $array[ $key ] ) ) ) {
$array[ $key ] = array();
}
// Overwrite the value in the base array.
if ( is_array( $value ) ) {
$value = self::recurse( $array[ $key ], $value );
}
$array[ $key ] = $value;
}
return $array;
}
/**
* Initialize the WP_Filesystem
*/
public static function init_filesystem() {
global $wp_filesystem;
if ( empty( $wp_filesystem ) ) {
require_once( ABSPATH . '/wp-admin/includes/file.php' );
WP_Filesystem();
}
}
/**
* Returns the attachment object
*
* @param string $url URL to the image.
* @return int|string Numeric ID of the attachement.
*/
public static function get_image_id( $url ) {
return url_to_postid( $url );
}
/**
* Returns an array of the attachment's properties.
*
* @param string $url URL to the image.
* @return array
*/
public static function get_image_from_url( $url ) {
$image_id = self::get_image_id( $url );
$image = wp_get_attachment_image_src( $image_id, 'full' );
return array(
'url' => $image[0],
'width' => $image[1],
'height' => $image[2],
'thumbnail' => $image[3],
);
}
/**
* Get an array of posts.
*
* @static
* @access public
* @param array $args Define arguments for the get_posts function.
* @return array
*/
public static function get_posts( $args ) {
// Get the posts.
$posts = get_posts( $args );
// Properly format the array.
$items = array();
foreach ( $posts as $post ) {
$items[ $post->ID ] = $post->post_title;
}
return $items;
}
/**
* Get an array of publicly-querable taxonomies.
*
* @static
* @access public
* @return array
*/
public static function get_taxonomies() {
$items = array();
// Get the taxonomies.
$taxonomies = get_taxonomies( array( 'public' => true ) );
// Build the array.
foreach ( $taxonomies as $taxonomy ) {
$id = $taxonomy;
$taxonomy = get_taxonomy( $taxonomy );
$items[ $id ] = $taxonomy->labels->name;
}
return $items;
}
/**
* Get an array of publicly-querable post-types.
*
* @static
* @access public
* @return array
*/
public static function get_post_types() {
$items = array();
// Get the post types.
$post_types = get_post_types( array( 'public' => true ), 'objects' );
// Build the array.
foreach ( $post_types as $post_type ) {
$items[ $post_type->name ] = $post_type->labels->name;
}
return $items;
}
/**
* Get an array of terms from a taxonomy
*
* @static
* @access public
* @param string|array $taxonomies See https://developer.wordpress.org/reference/functions/get_terms/ for details.
* @return array
*/
public static function get_terms( $taxonomies ) {
$items = array();
// Get the post types.
$terms = get_terms( $taxonomies );
// Build the array.
foreach ( $terms as $term ) {
$items[ $term->term_id ] = $term->name;
}
return $items;
}
/**
* Gets an array of material-design colors.
*
* @static
* @access public
* @param false|string $context Allows us to get subsets of the palette.
* @return array
*/
public static function get_material_design_colors( $context = false ) {
$colors = array(
'primary' => array(
'#FFFFFF',
'#000000',
'#F44336',
'#E91E63',
'#9C27B0',
'#673AB7',
'#3F51B5',
'#2196F3',
'#03A9F4',
'#00BCD4',
'#009688',
'#4CAF50',
'#8BC34A',
'#CDDC39',
'#FFEB3B',
'#FFC107',
'#FF9800',
'#FF5722',
'#795548',
'#9E9E9E',
'#607D8B',
),
'red' => array(
'#FFEBEE',
'#FFCDD2',
'#EF9A9A',
'#E57373',
'#EF5350',
'#F44336',
'#E53935',
'#D32F2F',
'#C62828',
'#B71C1C',
'#FF8A80',
'#FF5252',
'#FF1744',
'#D50000',
),
'pink' => array(
'#FCE4EC',
'#F8BBD0',
'#F48FB1',
'#F06292',
'#EC407A',
'#E91E63',
'#D81B60',
'#C2185B',
'#AD1457',
'#880E4F',
'#FF80AB',
'#FF4081',
'#F50057',
'#C51162',
),
'purple' => array(
'#F3E5F5',
'#E1BEE7',
'#CE93D8',
'#BA68C8',
'#AB47BC',
'#9C27B0',
'#8E24AA',
'#7B1FA2',
'#6A1B9A',
'#4A148C',
'#EA80FC',
'#E040FB',
'#D500F9',
'#AA00FF',
),
'deep-purple' => array(
'#EDE7F6',
'#D1C4E9',
'#B39DDB',
'#9575CD',
'#7E57C2',
'#673AB7',
'#5E35B1',
'#512DA8',
'#4527A0',
'#311B92',
'#B388FF',
'#7C4DFF',
'#651FFF',
'#6200EA',
),
'indigo' => array(
'#E8EAF6',
'#C5CAE9',
'#9FA8DA',
'#7986CB',
'#5C6BC0',
'#3F51B5',
'#3949AB',
'#303F9F',
'#283593',
'#1A237E',
'#8C9EFF',
'#536DFE',
'#3D5AFE',
'#304FFE',
),
'blue' => array(
'#E3F2FD',
'#BBDEFB',
'#90CAF9',
'#64B5F6',
'#42A5F5',
'#2196F3',
'#1E88E5',
'#1976D2',
'#1565C0',
'#0D47A1',
'#82B1FF',
'#448AFF',
'#2979FF',
'#2962FF',
),
'light_blue' => array(
'#E1F5FE',
'#B3E5FC',
'#81D4fA',
'#4fC3F7',
'#29B6FC',
'#03A9F4',
'#039BE5',
'#0288D1',
'#0277BD',
'#01579B',
'#80D8FF',
'#40C4FF',
'#00B0FF',
'#0091EA',
),
'cyan' => array(
'#E0F7FA',
'#B2EBF2',
'#80DEEA',
'#4DD0E1',
'#26C6DA',
'#00BCD4',
'#00ACC1',
'#0097A7',
'#00838F',
'#006064',
'#84FFFF',
'#18FFFF',
'#00E5FF',
'#00B8D4',
),
'teal' => array(
'#E0F2F1',
'#B2DFDB',
'#80CBC4',
'#4DB6AC',
'#26A69A',
'#009688',
'#00897B',
'#00796B',
'#00695C',
'#004D40',
'#A7FFEB',
'#64FFDA',
'#1DE9B6',
'#00BFA5',
),
'green' => array(
'#E8F5E9',
'#C8E6C9',
'#A5D6A7',
'#81C784',
'#66BB6A',
'#4CAF50',
'#43A047',
'#388E3C',
'#2E7D32',
'#1B5E20',
'#B9F6CA',
'#69F0AE',
'#00E676',
'#00C853',
),
'light-green' => array(
'#F1F8E9',
'#DCEDC8',
'#C5E1A5',
'#AED581',
'#9CCC65',
'#8BC34A',
'#7CB342',
'#689F38',
'#558B2F',
'#33691E',
'#CCFF90',
'#B2FF59',
'#76FF03',
'#64DD17',
),
'lime' => array(
'#F9FBE7',
'#F0F4C3',
'#E6EE9C',
'#DCE775',
'#D4E157',
'#CDDC39',
'#C0CA33',
'#A4B42B',
'#9E9D24',
'#827717',
'#F4FF81',
'#EEFF41',
'#C6FF00',
'#AEEA00',
),
'yellow' => array(
'#FFFDE7',
'#FFF9C4',
'#FFF590',
'#FFF176',
'#FFEE58',
'#FFEB3B',
'#FDD835',
'#FBC02D',
'#F9A825',
'#F57F17',
'#FFFF82',
'#FFFF00',
'#FFEA00',
'#FFD600',
),
'amber' => array(
'#FFF8E1',
'#FFECB3',
'#FFE082',
'#FFD54F',
'#FFCA28',
'#FFC107',
'#FFB300',
'#FFA000',
'#FF8F00',
'#FF6F00',
'#FFE57F',
'#FFD740',
'#FFC400',
'#FFAB00',
),
'orange' => array(
'#FFF3E0',
'#FFE0B2',
'#FFCC80',
'#FFB74D',
'#FFA726',
'#FF9800',
'#FB8C00',
'#F57C00',
'#EF6C00',
'#E65100',
'#FFD180',
'#FFAB40',
'#FF9100',
'#FF6D00',
),
'deep-orange' => array(
'#FBE9A7',
'#FFCCBC',
'#FFAB91',
'#FF8A65',
'#FF7043',
'#FF5722',
'#F4511E',
'#E64A19',
'#D84315',
'#BF360C',
'#FF9E80',
'#FF6E40',
'#FF3D00',
'#DD2600',
),
'brown' => array(
'#EFEBE9',
'#D7CCC8',
'#BCAAA4',
'#A1887F',
'#8D6E63',
'#795548',
'#6D4C41',
'#5D4037',
'#4E342E',
'#3E2723',
),
'grey' => array(
'#FAFAFA',
'#F5F5F5',
'#EEEEEE',
'#E0E0E0',
'#BDBDBD',
'#9E9E9E',
'#757575',
'#616161',
'#424242',
'#212121',
'#000000',
'#ffffff',
),
'blue-grey' => array(
'#ECEFF1',
'#CFD8DC',
'#B0BBC5',
'#90A4AE',
'#78909C',
'#607D8B',
'#546E7A',
'#455A64',
'#37474F',
'#263238',
),
);
switch ( $context ) {
case '50':
case '100':
case '200':
case '300':
case '400':
case '500':
case '600':
case '700':
case '800':
case '900':
case 'A100':
case 'A200':
case 'A400':
case 'A700':
if ( 'A100' === $context ) {
$key = 10;
unset( $colors['grey'] );
} elseif ( 'A200' === $context ) {
$key = 11;
unset( $colors['grey'] );
} elseif ( 'A400' === $context ) {
$key = 12;
unset( $colors['grey'] );
} elseif ( 'A700' === $context ) {
$key = 13;
unset( $colors['grey'] );
} else {
$key = $context / 100;
}
unset( $colors['primary'] );
$position_colors = array();
foreach ( $colors as $color_family ) {
if ( isset( $color_family[ $key ] ) ) {
$position_colors[] = $color_family[ $key ];
}
}
return $position_colors;
case 'all':
unset( $colors['primary'] );
$all_colors = array();
foreach ( $colors as $color_family ) {
foreach ( $color_family as $color ) {
$all_colors[] = $color;
}
}
return $all_colors;
case 'primary':
return $colors['primary'];
default:
if ( isset( $colors[ $context ] ) ) {
return $colors[ $context ];
}
return $colors['primary'];
}
}
/**
* Get an array of all available dashicons.
*
* @static
* @access public
* @return array
*/
public static function get_dashicons() {
$admin_menu = array(
'menu',
'admin-site',
'dashboard',
'admin-post',
'admin-media',
'admin-links',
'admin-page',
'admin-comments',
'admin-appearance',
'admin-plugins',
'admin-users',
'admin-tools',
'admin-settings',
'admin-network',
'admin-home',
'admin-generic',
'admin-collapse',
'filter',
'admin-customizer',
'admin-multisite',
);
$welcome_screen = array(
'welcome-write-blog',
'welcome-add-page',
'welcome-view-site',
'welcome-widgets-menus',
'welcome-comments',
'welcome-learn-more',
);
$post_formats = array(
'format-aside',
'format-image',
'format-gallery',
'format-video',
'format-status',
'format-quote',
'format-chat',
'format-audio',
'camera',
'images-alt',
'images-alt2',
'video-alt',
'video-alt2',
'video-alt3',
);
$media = array(
'media-archive',
'media-audio',
'media-code',
'media-default',
'media-document',
'media-interactive',
'media-spreadsheet',
'media-text',
'media-video',
'playlist-audio',
'playlist-video',
'controls-play',
'controls-pause',
'controls-forward',
'controls-skipforward',
'controls-back',
'controls-skipback',
'controls-repeat',
'controls-volumeon',
'controls-volumeoff',
);
$image_editing = array(
'image-crop',
'image-rotate',
'image-rotate-left',
'image-rotate-right',
'image-flip-vertical',
'image-flip-horizontal',
'image-filter',
'undo',
'redo',
);
$tinymce = array(
'editor-bold',
'editor-italic',
'editor-ul',
'editor-ol',
'editor-quote',
'editor-alignleft',
'editor-aligncenter',
'editor-alignright',
'editor-insertmore',
'editor-spellcheck',
'editor-expand',
'editor-contract',
'editor-kitchensink',
'editor-underline',
'editor-justify',
'editor-textcolor',
'editor-paste-word',
'editor-paste-text',
'editor-removeformatting',
'editor-video',
'editor-customchar',
'editor-outdent',
'editor-indent',
'editor-help',
'editor-strikethrough',
'editor-unlink',
'editor-rtl',
'editor-break',
'editor-code',
'editor-paragraph',
'editor-table',
);
$posts = array(
'align-left',
'align-right',
'align-center',
'align-none',
'lock',
'unlock',
'calendar',
'calendar-alt',
'visibility',
'hidden',
'post-status',
'edit',
'trash',
'sticky',
);
$sorting = array(
'external',
'arrow-up',
'arrow-down',
'arrow-right',
'arrow-left',
'arrow-up-alt',
'arrow-down-alt',
'arrow-right-alt',
'arrow-left-alt',
'arrow-up-alt2',
'arrow-down-alt2',
'arrow-right-alt2',
'arrow-left-alt2',
'sort',
'leftright',
'randomize',
'list-view',
'exerpt-view',
'grid-view',
);
$social = array(
'share',
'share-alt',
'share-alt2',
'twitter',
'rss',
'email',
'email-alt',
'facebook',
'facebook-alt',
'googleplus',
'networking',
);
$wordpress_org = array(
'hammer',
'art',
'migrate',
'performance',
'universal-access',
'universal-access-alt',
'tickets',
'nametag',
'clipboard',
'heart',
'megaphone',
'schedule',
);
$products = array(
'wordpress',
'wordpress-alt',
'pressthis',
'update',
'screenoptions',
'info',
'cart',
'feedback',
'cloud',
'translation',
);
$taxonomies = array(
'tag',
'category',
);
$widgets = array(
'archive',
'tagcloud',
'text',
);
$notifications = array(
'yes',
'no',
'no-alt',
'plus',
'plus-alt',
'minus',
'dismiss',
'marker',
'star-filled',
'star-half',
'star-empty',
'flag',
'warning',
);
$misc = array(
'location',
'location-alt',
'vault',
'shield',
'shield-alt',
'sos',
'search',
'slides',
'analytics',
'chart-pie',
'chart-bar',
'chart-line',
'chart-area',
'groups',
'businessman',
'id',
'id-alt',
'products',
'awards',
'forms',
'testimonial',
'portfolio',
'book',
'book-alt',
'download',
'upload',
'backup',
'clock',
'lightbulb',
'microphone',
'desktop',
'tablet',
'smartphone',
'phone',
'index-card',
'carrot',
'building',
'store',
'album',
'palmtree',
'tickets-alt',
'money',
'smiley',
'thumbs-up',
'thumbs-down',
'layout',
);
return array(
'admin-menu' => $admin_menu,
'welcome-screen' => $welcome_screen,
'post-formats' => $post_formats,
'media' => $media,
'image-editing' => $image_editing,
'tinymce' => $tinymce,
'posts' => $posts,
'sorting' => $sorting,
'social' => $social,
'wordpress_org' => $wordpress_org,
'products' => $products,
'taxonomies' => $taxonomies,
'widgets' => $widgets,
'notifications' => $notifications,
'misc' => $misc,
);
}
}
}