/**
  * Enqueue scripts.
  */
 public function admin_scripts()
 {
     $screen = get_current_screen();
     $screen_id = $screen ? $screen->id : '';
     $suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '' : '.min';
     // Register Scripts.
     wp_register_script('social-icons-admin', SI()->plugin_url() . '/assets/js/admin/admin' . $suffix . '.js', array('jquery', 'jquery-ui-sortable', 'jquery-ui-widget', 'jquery-ui-core', 'jquery-tiptip'), SI_VERSION);
     wp_register_script('si-admin-meta-boxes', SI()->plugin_url() . '/assets/js/admin/meta-boxes' . $suffix . '.js', array('jquery', 'jquery-ui-datepicker', 'jquery-ui-sortable', 'jquery-tiptip'), SI_VERSION);
     wp_register_script('jquery-tiptip', SI()->plugin_url() . '/assets/js/jquery-tiptip/jquery.tipTip' . $suffix . '.js', array('jquery'), SI_VERSION, true);
     // Localize socicons.
     $socicons_params = array('allowed_socicons' => si_get_allowed_socicons(), 'supported_url_icon' => si_get_supported_url_icon());
     // Social Icons admin pages.
     if (in_array($screen_id, si_get_screen_ids())) {
         wp_enqueue_script('social-icons-admin');
         wp_enqueue_script('jquery-ui-sortable');
         wp_enqueue_script('jquery-ui-autocomplete');
         $params = array('ajax_url' => admin_url('admin-ajax.php'));
         wp_localize_script('social-icons-admin', 'social_icons_admin', $params);
     }
     // Meta boxes.
     if (in_array($screen_id, array('social_icon', 'edit-social_icon'))) {
         wp_register_script('si-admin-group-meta-boxes', SI()->plugin_url() . '/assets/js/admin/meta-boxes-group' . $suffix . '.js', array('si-admin-meta-boxes'), SI_VERSION);
         wp_localize_script('si-admin-group-meta-boxes', 'social_icons_admin_meta_boxes_group', $socicons_params);
         wp_enqueue_script('si-admin-group-meta-boxes');
     }
     // Widgets Specific.
     if (in_array($screen_id, array('widgets', 'customize'))) {
         wp_register_script('si-admin-widgets', SI()->plugin_url() . '/assets/js/admin/widgets' . $suffix . '.js', array('jquery'), SI_VERSION);
         wp_localize_script('si-admin-widgets', 'social_icons_admin_widgets', $socicons_params);
         wp_enqueue_script('si-admin-widgets');
     }
 }
/**
 * Get the social icon name for given website url.
 *
 * @param  string $url Social site link.
 * @return string
 */
function si_get_social_icon_name($url)
{
    $icon = '';
    if ($url = strtolower($url)) {
        foreach (si_get_supported_url_icon() as $link => $icon_name) {
            if (strstr($url, $link)) {
                $icon = $icon_name;
                break;
            }
        }
        if (!$icon) {
            foreach (si_get_allowed_socicons() as $icon_name) {
                if (strstr($url, $icon_name)) {
                    $icon = $icon_name;
                    break;
                }
            }
        }
    }
    return apply_filters('social_icons_get_icon_name', $icon, $url);
}
 /**
  * Sanitize the social icons value of a setting.
  *
  * @param  array  $instance
  * @param  array  $new_instance
  * @param  string $key
  * @param  array  $setting
  * @return array
  */
 public function widget_sanitize_social_icons($instance, $new_instance, $key, $setting)
 {
     if ('social_icons' === $setting['type']) {
         $instance = array();
         $icon_urls = $new_instance['url-fields'];
         $icon_labels = $new_instance['label-fields'];
         $icon_url_size = sizeof($icon_urls);
         $allowed_icons = si_get_allowed_socicons();
         for ($i = 0; $i < $icon_url_size; $i++) {
             if (!empty($icon_urls[$i])) {
                 $icon_url = esc_url_raw($icon_urls[$i]);
                 $icon_name = si_get_social_icon_name($icon_url);
                 $icon_label = si_clean($icon_labels[$i]);
                 // Validate the icon supported.
                 if (!in_array($icon_name, $allowed_icons)) {
                     continue;
                 }
                 $instance[$icon_name] = array('url' => $icon_url, 'label' => $icon_label);
             }
         }
     }
     return $instance;
 }
 /**
  * Save meta box data.
  * @param int $post_id
  */
 public static function save($post_id)
 {
     // Add/replace data to array
     $background_style = si_clean($_POST['background_style']);
     $icon_font_size = si_clean($_POST['icon_font_size']);
     $manage_label = isset($_POST['_manage_label']) ? 'yes' : 'no';
     $greyscale_icons = isset($_POST['_greyscale_icons']) ? 'yes' : 'no';
     $open_new_tab = isset($_POST['_open_new_tab']) ? 'yes' : 'no';
     // Sortable Icons.
     $sortable_icons = array();
     if (isset($_POST['_si_icon_urls'])) {
         $icon_labels = isset($_POST['_si_icon_labels']) ? $_POST['_si_icon_labels'] : array();
         $icon_urls = isset($_POST['_si_icon_urls']) ? wp_unslash(array_map('trim', $_POST['_si_icon_urls'])) : array();
         $icon_url_size = sizeof($icon_urls);
         $allowed_icons = si_get_allowed_socicons();
         for ($i = 0; $i < $icon_url_size; $i++) {
             if (!empty($icon_urls[$i])) {
                 $icon_url = esc_url_raw($icon_urls[$i]);
                 $icon_name = si_get_social_icon_name($icon_url);
                 $icon_label = si_clean($icon_labels[$i]);
                 // Validate the icon supported.
                 if (!in_array($icon_name, $allowed_icons)) {
                     SI_Admin_Meta_Boxes::add_error(sprintf(__('The social url %s cannot be used as it does not have an allowed icon.', 'social-icons'), '<code>' . esc_url($icon_url) . '</code>'));
                     continue;
                 }
                 $sortable_icons[$icon_name] = array('label' => $icon_label, 'url' => $icon_url);
             }
         }
     }
     // Save
     update_post_meta($post_id, 'background_style', $background_style);
     update_post_meta($post_id, 'icon_font_size', $icon_font_size);
     update_post_meta($post_id, '_manage_label', $manage_label);
     update_post_meta($post_id, '_greyscale_icons', $greyscale_icons);
     update_post_meta($post_id, '_open_new_tab', $open_new_tab);
     update_post_meta($post_id, '_sortable_icons', $sortable_icons);
     do_action('social_icons_group_options_save', $post_id);
 }