function yinstagram_shortcode($atts)
{
    global $wp, $yinstagram_options;
    $a = shortcode_atts(array('display_images' => null, 'username' => null, 'hashtags' => null), $atts);
    // Enqueue scripts
    yinstagram_wp_enqueue_scripts($yinstagram_options);
    $display_your_images = empty($a['display_images']) ? $yinstagram_options['display_your_images'] : $a['display_images'];
    if (!empty($a['hashtags'])) {
        $display_your_images = 'hashtag';
    }
    $username_of_user_id = $yinstagram_options['username_of_user_id'];
    if (!empty($a['username'])) {
        $display_your_images = 'recent';
        $username_of_user_id = $a['username'];
    }
    $data = null;
    $output = '<p>Not Connected.</p>';
    $yinstagram_options['number_of_images'] = isset($yinstagram_options['number_of_images']) ? $yinstagram_options['number_of_images'] : '1';
    $yinstagram_options['size'] = isset($yinstagram_options['size']) ? $yinstagram_options['size'] : 'thumbnail';
    if (isset($yinstagram_options['access_token']) && isset($yinstagram_options['user'])) {
        $output = '<p>Request timed out, or no have ' . $display_your_images . ' images.</p>';
        switch ($display_your_images) {
            case 'hashtag':
                $data = yinstagram_get_tags_images($yinstagram_options['access_token'], $yinstagram_options['display_the_following_hashtags'], $yinstagram_options['number_of_images'], true, $a['hashtags']);
                break;
            default:
                $data = yinstagram_get_own_images($yinstagram_options['access_token'], $display_your_images, $yinstagram_options['number_of_images'], $username_of_user_id, true, $a);
        }
        if ($yinstagram_options['order'] == 'shuffle') {
            shuffle($data);
        }
    }
    if (!empty($data)) {
        $is_inifinte = false;
        switch ($yinstagram_options['scroll']) {
            case 'infinite':
                $is_inifinte = true;
                $output = yinstagram_get_scroll_infinite($yinstagram_options, $data);
                break;
            default:
                yinstagram_styles($yinstagram_options['height']);
                $output = yinstagram_get_scroll_auto($yinstagram_options, $data);
        }
        if ($yinstagram_options['display_social_links']) {
            $current_url = home_url(add_query_arg(array(), $wp->request));
            $socialClass = $is_inifinte ? 'yinstagram-social infinite_scroll' : 'yinstagram-social';
            $output .= '<div class="' . $socialClass . ' clearfix"><ul class="links">';
            $output .= '<li><iframe src="//www.facebook.com/plugins/like.php?href=' . urlencode($current_url) . '&amp;width&amp;layout=button_count&amp;action=like&amp;show_faces=false&amp;share=false&amp;height=21&amp;appId=561399377290377" scrolling="no" frameborder="0" style="border:none; overflow:hidden; height:21px;" allowTransparency="true"></iframe></li>';
            $output .= '<li><a href="https://twitter.com/share" class="twitter-share-button" data-lang="en">Tweet</a></li>';
            $output .= '<li><div class="g-plusone" data-size="medium"></div></li>';
            $output .= '</ul></div>';
        }
    }
    return $output;
}
 public function widget($args, $instance)
 {
     global $yinstagram_options;
     // Enqueue scripts
     yinstagram_wp_enqueue_scripts($yinstagram_options);
     extract($args);
     $title = apply_filters('widget_title', empty($instance['title']) ? null : $instance['title'], $instance, $this->id_base);
     // set default
     $instance['type'] = isset($instance['type']) ? $instance['type'] : 'images';
     $instance['display_images'] = isset($instance['display_images']) ? $instance['display_images'] : 'recent';
     $instance['username_of_user_id'] = isset($instance['username_of_user_id']) ? $instance['username_of_user_id'] : null;
     $instance['custom_size'] = isset($instance['custom_size']) ? $instance['custom_size'] : null;
     $instance['limit'] = isset($instance['limit']) ? $instance['limit'] : '6';
     $instance['order'] = isset($instance['order']) ? $instance['order'] : 'default';
     $style = null;
     if ($instance['custom_size']) {
         $style = 'style="width:' . $instance['custom_size'] . 'px; height:' . $instance['custom_size'] . 'px"';
     }
     echo $before_widget;
     if (!empty($title)) {
         echo $before_title . $title . $after_title;
     }
     if (isset($yinstagram_options['access_token']) && isset($yinstagram_options['user'])) {
         $data = null;
         switch ($instance['display_images']) {
             case 'tags':
                 $data = yinstagram_get_tags_images($yinstagram_options['access_token'], $instance['hashtags'], null, false);
                 break;
             default:
                 $data = yinstagram_get_own_images($yinstagram_options['access_token'], $instance['display_images'], 1, $instance['username_of_user_id'], false);
         }
         if ($instance['order'] == 'shuffle') {
             shuffle($data);
         }
         switch ($instance['type']) {
             case 'profile':
                 /*begin profile type*/
                 $u_info = yinstagram_get_user_info($yinstagram_options);
                 if ($u_info && !empty($data)) {
                     echo '<div class="yinstagram_profile">';
                     $i = $j = 0;
                     echo '<div class="header"><ul class="images">';
                     foreach ($data as $datum) {
                         $i++;
                         $j++;
                         echo $i == 1 ? '<li>' : null;
                         echo '<img src="' . $datum->images->thumbnail->url . '"/>';
                         echo $i == 4 ? '</li>' : null;
                         $i = $i == 4 ? 0 : $i;
                         if ($j == 12) {
                             break;
                         }
                     }
                     echo $j != 4 || $j != 8 || $j != 12 ? '</li>' : null;
                     echo '</ul><img class="icon" alt="instagram-icon" src="' . YINSTAGRAM_PLUGIN_URL . '/img/instagram-icon-32x32.png"></div>';
                     echo '<div class="info"><img class="circular" title="' . $u_info->full_name . '" alt="' . $u_info->username . '" src="' . $u_info->profile_picture . '">';
                     echo '<p class="fullname" title="' . $u_info->username . '">' . $u_info->full_name . '</p>';
                     if ($u_info->website) {
                         echo '<p class="website"><a href="' . $u_info->website . '" target="_blank">' . preg_replace('#^https?://#', '', $u_info->website) . '</a></p>';
                     }
                     if ($u_info->bio) {
                         echo '<p class="bio">' . $u_info->bio . '</p>';
                     }
                     echo '<ul class="counts"><li>Posts: ' . $u_info->counts->media . '</li>';
                     echo '<li>Followers: ' . $u_info->counts->followed_by . '</li>';
                     echo '<li>Following: ' . $u_info->counts->follows . '</li></ul>';
                     echo '<a href="http://instagram.com/' . $u_info->username . '?ref=badge" class="ig-b- ig-b-v-24">';
                     echo '<img src="//badges.instagram.com/static/images/ig-badge-view-24.png" alt="Instagram" />';
                     echo '</a>';
                     echo '</div></div>';
                 } else {
                     echo '<p>Request timed out.</p>';
                 }
                 /*end of profile type*/
                 break;
             default:
                 /*begin images type*/
                 if (!empty($data)) {
                     $i = 0;
                     if ($yinstagram_options['lightbox'] == 'thickbox') {
                         add_thickbox();
                     }
                     echo '<input class="yinstagram-widget-settings" type="hidden" value="' . htmlentities(json_encode(array('lightbox' => $yinstagram_options['lightbox'], 'colorbox_effect' => $yinstagram_options['effect'], 'dimensions' => $instance['custom_size']))) . '">';
                     echo $yinstagram_options['lightbox'] == 'disable' ? '<ul class="yinstagram_grid">' : '<ul class="yinstagram_grid lightbox_on">';
                     foreach ($data as $datum) {
                         $img_src = $datum->images->thumbnail->url;
                         if ($instance['size'] == 'low_resolution') {
                             $img_src = $datum->images->low_resolution->url;
                         } elseif ($instance['size'] == 'standard_resolution') {
                             $img_src = $datum->images->standard_resolution->url;
                         }
                         $images[] = array('id' => $datum->id, 'title' => str_replace('"', "'", (string) $datum->caption->text), 'src' => $img_src);
                         echo '<li>';
                         switch ($yinstagram_options['lightbox']) {
                             case 'thickbox':
                                 echo '<a class="yinstagram-lbox thickbox" style="cursor: pointer;" href="' . $datum->images->standard_resolution->url . '?TB_iframe=true" title="' . yinstagram_get_excerpt(str_replace('"', "'", (string) $datum->caption->text)) . '" rel="gallery-yinstagram">';
                                 break;
                             case 'colorbox':
                                 echo '<a class="yinstagram-lbox" style="cursor: pointer;" href="' . $datum->images->standard_resolution->url . '" title="' . yinstagram_get_excerpt(str_replace('"', "'", (string) $datum->caption->text)) . '">';
                                 break;
                             default:
                                 echo '<a target="_blank" href="' . $datum->images->standard_resolution->url . '">';
                         }
                         echo '<span class="load_w-' . $datum->id . '" ' . $style . '></span>';
                         echo '</a></li>';
                         $i++;
                         if ($i == $instance['limit']) {
                             break;
                         }
                     }
                     echo '</ul>';
                     echo '<textarea class="yinstagram-widget-images" style="display: none;">' . json_encode($images) . '</textarea>';
                 } else {
                     echo '<p>Request timed out, or no have ' . $instance['display_images'] . ' images.</p>';
                 }
                 /*end of images type*/
         }
     } else {
         echo '<p>Not Connected.</p>';
     }
     echo $after_widget;
 }