WordPress.org

Plugin Directory


Ignore:
Timestamp:
09/22/17 09:21:47 (4 weeks ago)
Author:
mnmlthms
Message:

New version 1.1.0

File:
1 edited

Legend:

Unmodified
Added
Removed
  • wp-my-instagram/trunk/inc/public/main.php

    r1690431 r1734163  
    2424         * Display Feed 
    2525         * @since 1.0.0 
     26         * @version 1.1.0 
    2627         */ 
    2728        static function display_feed( $args = array() ){ 
     
    2930            $args = wp_parse_args( $args, array( 
    3031                'username'  => '', 
     32                'hashtag'   => '', //If hashtag entered, use hashtag 
    3133                'limit'     => 6, 
    3234                'size'      => 'large', //thumbnail, small, large, original 
     
    3739 
    3840            $args['layout'] = !in_array( $args['layout'], array( 'default', '2', '3', '4', '5', '6', '8', '10' ) ) ? 'default' : $args['layout']; 
    39  
    40             if( empty( $args['username'] ) ) 
    41                 echo esc_html__( 'You need to input your username.', 'wp-my-instagram' ); 
     41            $args['username'] = (string) $args['username']; 
     42            $args['hashtag'] = (string) $args['hashtag']; 
     43            $scrape_key = !empty( $args['hashtag'] ) ? $args['hashtag'] : $args['username']; 
     44            $use_hashtag = !empty( $args['hashtag'] ) ? true : false; 
     45            $prefix = $use_hashtag ? 'tag' : 'user'; 
     46 
     47            if( empty( $args['username'] ) && empty( $args['hashtag'] ) ) 
     48                echo esc_html__( 'You need to input your username or hashtag.', 'wp-my-instagram' ); 
    4249 
    4350            $output = ''; 
    4451            $cached = false; 
    45             if( self::get_cache( $args['username'], (int) $args['limit'] ) ){ 
    46  
    47                 $media_array = WP_My_Instagram_Main::scrape_instagram( $args['username'], (int) $args['limit'] ); 
     52            if( self::get_cache( $scrape_key, (int) $args['limit'], $use_hashtag ) ){ 
     53 
     54                $media_array = self::scrape_instagram( $scrape_key, (int) $args['limit'], $use_hashtag ); 
    4855                $cached = true; 
    4956 
     
    7885 
    7986                    if( $args['link'] ){ 
     87                        $url_instagram = '//instagram.com/'; 
     88                        $url = $use_hashtag ? $url_instagram . 'explore/tags/' . $args['hashtag'] : $url_instagram . $args['username']; 
     89                        $rel = $use_hashtag ? '' : ' rel="me"'; 
    8090                    ?> 
    81                     <div class="wpmi-me"><a href="<?php echo trailingslashit( '//instagram.com/' . esc_attr( trim( $args['username'] ) ) ); ?>" rel="me" target="<?php echo esc_attr( $args['target'] ); ?>"><?php echo wp_kses_post( $args['link'] ); ?></a></div> 
     91                    <div class="wpmi-me"><a href="<?php echo esc_url( trailingslashit( $url ) ); ?>" target="<?php echo esc_attr( $args['target'] ); ?>"<?php echo !empty( $rel) ? $rel : '';?>><?php echo wp_kses_post( $args['link'] ); ?></a></div> 
    8292                    <?php 
    8393                    }?> 
     
    98108                // copy the else line into a new file (wp-my-instagram/loop.php) within your theme and customise accordingly 
    99109                $output .= strtr( $template_part, array( 
    100                     '{{link}}'      => $item['link'], 
    101                     '{{target}}'    => $item['link'], 
    102                     '{{image}}'         => $item[$args['size']], 
    103                     '{{description}}'   => $item['description'], 
     110                    '{{link}}'      => esc_url( $item['link'] ), 
     111                    '{{target}}'    => esc_attr( $item['link'] ), 
     112                    '{{image}}'         => esc_url( $item[$args['size']] ), 
     113                    '{{description}}'   => esc_attr( $item['description'] ), 
    104114                ) ); 
    105115            } 
     
    122132        /** 
    123133         * Get cache name 
     134         * @var $key    string username or hashtag 
     135         * @var $limit  int 
     136         * @var $prefix     string 
    124137         * @since 1.0 
    125          */ 
    126         static function get_cache_name( $username, $limit){ 
    127             $username = strtolower( $username ); 
    128             $username = str_replace( '@', '', $username ); 
     138         * @version 1.1.0 
     139         */ 
     140        static function get_cache_name( $key, $limit, $use_hashtag = false ){ 
     141            $prefix = $use_hashtag ? 'tag' : 'user'; 
     142            $key = strtolower( $key ); 
     143            $key = strtr( $key, array( '@' => '', '#' => '' ) ); 
    129144            $count = ceil( $limit/12 ); 
    130             return 'wpmi-' . sanitize_title_with_dashes( $username . '-' . $count ); 
     145            return 'wpmi-' . sanitize_title_with_dashes( $prefix . '-' . $key . '-' . $count ); 
    131146        } 
    132147        /** 
    133148         * Get cache 
    134149         * @since 1.0.2 
    135          */ 
    136         static function get_cache( $username, $limit){ 
    137  
    138             return get_transient( self::get_cache_name( $username, $limit ) ); 
     150         * @version 1.1.0 
     151         */ 
     152        static function get_cache( $username, $limit, $use_hashtag = false){ 
     153 
     154            return get_transient( self::get_cache_name( $username, $limit, $use_hashtag ) ); 
    139155        } 
    140156        /** 
    141157         * Delete Cache 
    142158         * @since 1.0 
    143          */ 
    144         static function delete_cache( $username, $limit ){ 
    145  
    146             $transient_name = self::get_cache_name( $username, $limit ); 
     159         * @version 1.1.0 
     160         */ 
     161        static function delete_cache( $username, $limit, $use_hashtag = false ){ 
     162 
     163            $transient_name = self::get_cache_name( $username, $limit, $use_hashtag ); 
    147164 
    148165            delete_transient( $transient_name ); 
     
    152169         * Get Batch 
    153170         * @since 1.0 
    154          */ 
    155         static function _get_batch( $username, $batch = 0 ){ 
    156  
    157             $username = strtolower( $username ); 
    158             $username = str_replace( '@', '', $username ); 
    159             $url = 'https://instagram.com/' . trim( $username ) . ( $batch ? "/?max_id={$batch}" : '' ); 
     171         * @version 1.1.0 
     172         */ 
     173        private static function _get_batch( $url, $use_hashtag = false ){ 
     174 
     175            if( empty( $url ) ) 
     176                return false; 
    160177 
    161178            $remote = wp_remote_get( $url, array( 'timeout' => 120, 'sslverify' => false ) ); 
     
    174191                return new WP_Error( 'bad_json', esc_html__( 'Instagram has returned invalid data.', 'wp-my-instagram' ) ); 
    175192 
    176             if ( isset( $insta_array['entry_data']['ProfilePage'][0]['user']['media']['nodes'] ) ) { 
     193            // Username 
     194            if ( !$use_hashtag && isset( $insta_array['entry_data']['ProfilePage'][0]['user']['media']['nodes'] ) ) { 
    177195                $images = $insta_array['entry_data']['ProfilePage'][0]['user']['media']['nodes']; 
    178             } else { 
     196            } 
     197            // Hashtag 
     198            elseif( $use_hashtag && isset( $insta_array['entry_data']['TagPage'][0]['tag']['media']['nodes'] ) ){ 
     199                $images = $insta_array['entry_data']['TagPage'][0]['tag']['media']['nodes']; 
     200            }else { 
    179201                return new WP_Error( 'bad_json_2', esc_html__( 'Instagram has returned invalid data.', 'wp-my-instagram' ) ); 
    180202            } 
     
    186208 
    187209            foreach ( $images as $image ) { 
     210                 
    188211                $image['thumbnail_src'] = preg_replace( '/^https?\:/i', '', $image['thumbnail_src'] ); 
    189212                $image['display_src'] = preg_replace( '/^https?\:/i', '', $image['display_src'] ); 
     
    234257        /** 
    235258         * Get Instagram 
     259         *  
     260         * @var  
    236261         * @since 1.0 
     262         * @version 1.1.0 
    237263         * Special Thanks to Scott Evans - wp-instagram-widget 
    238264         */ 
    239265        // based on https://gist.github.com/cosmocatalano/4544576 
    240266 
    241         static function scrape_instagram( $username, $limit = 12 ) { 
    242  
    243             $username = strtolower( $username ); 
    244             $username = str_replace( '@', '', $username ); 
    245             $cache_name = self::get_cache_name( $username, $limit ); 
     267        static function scrape_instagram( $_scrape_key, $_limit = 12, $_use_hashtag = false ) { 
     268 
     269            $base_url = 'https://instagram.com/'; 
     270            $_scrape_key = strtolower( $_scrape_key ); 
     271            $_scrape_key = str_replace( '@', '', $_scrape_key ); 
     272            $_scrape_key = trim( $_scrape_key ); 
     273 
     274            $url = $base_url . $_scrape_key; 
     275            // If use hashtag 
     276            if( $_use_hashtag ){ 
     277                $url = $base_url . 'explore/tags/' . $_scrape_key; 
     278            } 
     279 
     280            // Get cache 
     281            $cache_name = self::get_cache_name( $_scrape_key, $_limit, $_use_hashtag ); 
    246282            $cache_time = apply_filters( 'wpmi_cache_time', HOUR_IN_SECONDS*2 ); 
    247283 
    248284            if ( false === ( $feed = get_transient( $cache_name ) ) ) { 
    249285                $feed = array();     
    250                 $batches = ceil( $limit/12 ); 
     286                $batches = ceil( $_limit/12 ); 
    251287                $last_id = false; 
    252288 
    253289                for ( $i=0; $i < $batches; $i++ ) { 
    254290 
    255                     $instagram = self::_get_batch( $username, $last_id ); 
     291                    // Trick facebook pagination :P 
     292                    $batch = $last_id ? $url . "/?max_id={$last_id}" : $url; 
     293 
     294                    $instagram = self::_get_batch( $batch, $_use_hashtag ); 
    256295 
    257296                    if( is_array( $instagram ) ){ 
Note: See TracChangeset for help on using the changeset viewer.