WordPress.org

Plugin Directory

Changeset 1739214


Ignore:
Timestamp:
10/01/17 20:29:25 (7 weeks ago)
Author:
urkekg
Message:

Add support for native Google error messages from API and option to choose thumbnail quality

Location:
youtube-channel
Files:
44 added
7 edited

Legend:

Unmodified
Added
Removed
  • youtube-channel/trunk/inc/settings-template.php

    r1576690 r1739214  
    4747            echo '</form>'; 
    4848 
    49         } else if ( 'tools' == $active_tab ) { 
     49        } elseif ( 'tools' == $active_tab ) { 
    5050            include_once( 'settings-tools.php' ); 
    51         } else if ( 'help' == $active_tab ) { 
     51        } elseif ( 'help' == $active_tab ) { 
    5252            include_once( 'settings-usage.php' ); 
    5353            include_once( 'settings-usage-shortcode.php' ); 
    54         } else if ( 'support' == $active_tab ) { 
     54        } elseif ( 'support' == $active_tab ) { 
    5555            include_once( 'settings-support.php' ); 
    5656        } // $active_tab != 'tools|help|support' 
  • youtube-channel/trunk/inc/settings-usage-shortcode.php

    r1666747 r1739214  
    5353        <li>&bullet; <code>iframe2</code> HTML5 (iframe) with asynchronous loading - recommended</li> 
    5454        <li>&bullet; <code>playlist</code> Embedded playlist</li> 
     55    </ul></li> 
     56    <li><code>thumb_quality</code> <em>(string)</em> Define image quality for thumbnail display mode. Default is <code>hqdefault</code>, available: 
     57    <ul> 
     58        <li>&bullet; <code>default</code> Default Quality (120x90px)</li> 
     59        <li>&bullet; <code>mqdefault</code> Medium Quality (320x180px)</li> 
     60        <li>&bullet; <code>hqdefault</code> High Quality (480x360px)</li> 
     61        <li>&bullet; <code>sddefault</code> Standard Definition (640x480px)</li> 
     62        <li>&bullet; <code>maxresdefault</code> Maximum Resolution (1280x720px)</li> 
    5563    </ul></li> 
    5664 
  • youtube-channel/trunk/inc/settings.php

    r1603068 r1739214  
    375375                ) // args 
    376376            ); 
     377            // Thumbnail Quality 
     378            add_settings_field( 
     379                $this->option_name . 'thumb_quality', // id 
     380                __( 'Thumbnail Quality', 'youtube-channel' ), // Title 
     381                array( &$this, 'settings_field_select' ), // Callback 
     382                $this->slug . '_video', // Page 
     383                'ytc_video', // section 
     384                array( 
     385                    'field'       => $this->option_name . '[thumb_quality]', 
     386                    'description' => __( 'Choose preferred thumbnail quality. Please be aware, if you select Maximum Resolution but video does not have that thumbnail, you will get broken thumbnail on page!', 'youtube-channel' ), 
     387                    'class'       => 'regular-text', 
     388                    'value'       => isset( $this->defaults['thumb_quality'] ) ? $this->defaults['thumb_quality'] : '0', 
     389                    'items'       => array( 
     390                        'default'       => __( 'Default Quality (120x90px)', 'youtube-channel' ), 
     391                        'mqdefault'     => __( 'Medium Quality (320x180px)', 'youtube-channel' ), 
     392                        'hqdefault'     => __( 'High Quality (480x360px)', 'youtube-channel' ), 
     393                        'sddefault'     => __( 'Standard Definition (640x480px)', 'youtube-channel' ), 
     394                        'maxresdefault' => __( 'Maximum Resolution (1280x720px)', 'youtube-channel' ), 
     395                    ), 
     396                ) // args 
     397            ); 
     398 
    377399            // Responsive 
    378400            add_settings_field( 
     
    10041026            $sanitized = get_option( $this->option_name ); 
    10051027 
     1028            // If there is no POST option_page keyword, return initial plugin options 
     1029            if ( empty( $_POST['option_page'] ) ) { 
     1030                return $sanitized; 
     1031            } 
     1032 
    10061033            switch ( $_POST['option_page'] ) { 
    10071034 
     
    10271054                    $sanitized['ratio']          = ( isset( $options['ratio'] ) ) ? intval( $options['ratio'] ) : $this->defaults['ratio']; 
    10281055                    $sanitized['display']        = ( ! empty( $options['display'] ) ) ? trim( $options['display'] ) : $this->defaults['display']; 
     1056                    $sanitized['thumb_quality']  = ( ! empty( $options['thumb_quality'] ) ) ? trim( $options['thumb_quality'] ) : $this->defaults['thumb_quality']; 
    10291057                    $sanitized['responsive']     = ( ! empty( $options['responsive'] ) && $options['responsive'] ) ? 1 : 0; 
    10301058                    $sanitized['playsinline']    = ( ! empty( $options['playsinline'] ) && $options['playsinline'] ) ? 1 : 0; 
  • youtube-channel/trunk/inc/widget.php

    r1644170 r1739214  
    7676 
    7777        $display        = ! empty( $instance['display'] ) ? esc_attr( $instance['display'] ) : trim( $defaults['display'] ); 
     78        $thumb_quality  = ! empty( $instance['thumb_quality'] ) ? esc_attr( $instance['thumb_quality'] ) : trim( $defaults['thumb_quality'] ); 
    7879        $no_thumb_title = ! empty( $instance['no_thumb_title'] ) ? esc_attr( $instance['no_thumb_title'] ) : 0; 
    7980 
     
    196197                <option value="playlist"<?php selected( $display, 'playlist' ); ?>><?php _e( 'Embedded Playlist', 'youtube-channel' ); ?></option> 
    197198            </select> 
     199 
     200            <label for="<?php echo $this->get_field_id( 'thumb_quality' ); ?>"> 
     201                <?php _e( 'Thumbnail Quality', 'youtube-channel' ); ?> 
     202            </label> 
     203            <select class="widefat" id="<?php echo $this->get_field_id( 'thumb_quality' ); ?>" name="<?php echo $this->get_field_name( 'thumb_quality' ); ?>"> 
     204                <option value="default"<?php selected( $thumb_quality, 'default' ); ?>><?php _e( 'Default Quality (120x90px)', 'youtube-channel' ); ?></option> 
     205                <option value="mqdefault"<?php selected( $thumb_quality, 'mqdefault' ); ?>><?php _e( 'Medium Quality (320x180px)', 'youtube-channel' ); ?></option> 
     206                <option value="hqdefault"<?php selected( $thumb_quality, 'hqdefault' ); ?>><?php _e( 'High Quality (480x360px)', 'youtube-channel' ); ?></option> 
     207                <option value="sddefault"<?php selected( $thumb_quality, 'sddefault' ); ?>><?php _e( 'Standard Definition (640x480px)', 'youtube-channel' ); ?></option> 
     208                <option value="maxresdefault"<?php selected( $thumb_quality, 'maxresdefault' ); ?>><?php _e( 'Maximum Resolution (1280x720px)', 'youtube-channel' ); ?></option> 
     209            </select> 
     210 
     211 
    198212            <input class="checkbox" type="checkbox" <?php checked( (bool) $no_thumb_title, true ); ?> id="<?php echo $this->get_field_id( 'no_thumb_title' ); ?>" name="<?php echo $this->get_field_name( 'no_thumb_title' ); ?>" /> <label for="<?php echo $this->get_field_id( 'no_thumb_title' ); ?>"><?php _e( 'Hide thumbnail tooltip', 'youtube-channel' ); ?></label><br /> 
    199213            <input class="checkbox" type="checkbox" <?php checked( (bool) $themelight, true ); ?> id="<?php echo $this->get_field_id( 'themelight' ); ?>" name="<?php echo $this->get_field_name( 'themelight' ); ?>" /> <label for="<?php echo $this->get_field_id( 'themelight' ); ?>"><?php _e( 'Use light theme (default is dark)', 'youtube-channel' ); ?></label><br /> 
     
    300314 
    301315        $instance['display']        = strip_tags( $new_instance['display'] ); 
     316        $instance['thumb_quality']  = strip_tags( $new_instance['thumb_quality'] ); 
    302317        $instance['no_thumb_title'] = isset( $new_instance['no_thumb_title'] ) ? $new_instance['no_thumb_title'] : false; 
    303318        $instance['autoplay']       = isset( $new_instance['autoplay'] ) ? $new_instance['autoplay'] : false; 
  • youtube-channel/trunk/readme.txt

    r1666747 r1739214  
    44Tags: youtube, channel, playlist, single, widget, widgets, youtube player, feed, video, thumbnail, embed, sidebar, iframe, html5, responsive 
    55Requires at least: 4.0 
    6 Tested up to: 4.7.5 
    7 Stable tag: 3.0.11.1 
     6Tested up to: 4.9 
     7Stable tag: 3.0.11.2 
    88License: GPLv3 
    99License URI: http://www.gnu.org/licenses/gpl-3.0.html 
     
    116116  * `iframe2` HTML5 (iframe) with asynchronous loading - recommended 
    117117  * `playlist` Embedded playlist (same behaviour as old function `only_pl`) 
     118* `thumb_quality` (string) Define image quality for thumbnail display mode. Default is `hqdefault`, available: 
     119  * `default` Default Quality (120x90px) 
     120  * `mqdefault` Medium Quality (320x180px) 
     121  * `hqdefault` High Quality (480x360px) 
     122  * `sddefault` Standard Definition (640x480px) 
     123  * `maxresdefault` Maximum Resolution (1280x720px) 
    118124* `no_thumb_title` (bool) By default YouTube thumbnail will have tooltip with info about video title and date of publishing. By setting this option to 1 or true you can hide tooltip 
    119125* `themelight` (bool) By default YouTube have dark play controls theme. By setting this option to 1 or true you can get light theme in player (HTML5 and Flash) 
     
    360366 
    361367== Changelog == 
     368 
     369= 3.0.11.2 (20171001) = 
     370* (20171001) Fix: Undefined index: option_page in youtube-channel/inc/settings.php on line 1006 
     371* Add: Support for custom thumbnail quality 
     372* (20170716) Add: native error message from Google for cases not covered by common errors (like `accessNotConfigured`) 
     373 
    362374= 3.0.11.1 (20170530) = 
    363375* Fix: cut description in the middle of multy-byte characters (reported by @funfrog) 
  • youtube-channel/trunk/update.php

    r1666747 r1739214  
    6969                if ( 'on' == $v['popupgoto'] ) { 
    7070                    $v['popup_goto'] = 1; 
    71                 } else if ( 'on' == $v['target'] ) { 
     71                } elseif ( 'on' == $v['target'] ) { 
    7272                    $v['popup_goto'] = 2; 
    7373                } 
     
    170170            $defaults[ $new_option ] = $defaults[ $old_option ]; 
    171171            unset( $defaults[ $old_option ] ); 
    172         } else if ( empty( $defaults[ $new_option ] ) ) { 
     172        } elseif ( empty( $defaults[ $new_option ] ) ) { 
    173173            $defaults[ $new_option ] = $init[ $new_option ]; 
    174174        } 
     
    475475 
    476476} // END function au_youtube_channel_update_routine_19() 
     477 
     478/** 
     479 * Add default value for new global option thumb_quality 
     480 */ 
     481function au_youtube_channel_update_routine_20() { 
     482 
     483    // get options from DB 
     484    $defaults = get_option( 'youtube_channel_defaults' ); 
     485 
     486    if ( ! isset( $defaults['thumb_quality'] ) ) { 
     487        $defaults['thumb_quality'] = 'hqdefault'; 
     488    } 
     489 
     490    if ( isset( $defaults ) ) { 
     491        update_option( 'youtube_channel_defaults', $defaults ); 
     492        unset( $defaults ); 
     493    } 
     494 
     495} // END function au_youtube_channel_update_routine_20() 
  • youtube-channel/trunk/youtube-channel.php

    r1666747 r1739214  
    44Plugin URI: https://urosevic.net/wordpress/plugins/youtube-channel/ 
    55Description: Quick and easy embed latest or random videos from YouTube channel (user uploads, liked or favourited videos) or playlist. Use <a href="widgets.php">widget</a> for sidebar or shortcode for content. Works with <em>YouTube Data API v3</em>. 
    6 Version: 3.0.11.1 
     6Version: 3.0.11.2 
    77Author: Aleksandar Urošević 
    88Author URI: https://urosevic.net/ 
     
    1818    class WPAU_YOUTUBE_CHANNEL { 
    1919 
    20         const DB_VER = 19; 
    21         const VER = '3.0.11.1'; 
     20        const DB_VER = 20; 
     21        const VER = '3.0.11.2'; 
    2222 
    2323        public $plugin_name   = 'YouTube Channel'; 
     
    116116                'responsive'     => 1, 
    117117                'display'        => 'thumbnail', // thumbnail, iframe, iframe2, playlist (deprecated: chromeless, object) 
     118                'thumb_quality'  => 'hqdefault', // default, mqdefault, hqdefault, sddefault, maxresdefault 
    118119                'themelight'     => 0, 
    119120                'fullscreen'     => 0, 
     
    341342                    '?ytc_dismiss_notice_changed_shortcode_308=1' 
    342343                ); 
    343             } else if ( empty( $dismissed_notices ) ) { 
     344            } elseif ( empty( $dismissed_notices ) ) { 
    344345                // First time install? auto dismiss this notice 
    345346                $dismissed_notices['changed_shortcode_308'] = 1; 
     
    505506                    'show'           => $instance['display'], // (deprecated, but keep for back compatibility) ex to_show 
    506507                    'display'        => $instance['display'], 
     508                    'thumb_quality'  => $instance['thumb_quality'], 
    507509                    'no_thumb_title' => 0, 
    508510                    'themelight'     => $instance['themelight'], 
     
    539541            if ( ! empty( $atts['use_res'] ) ) { 
    540542                $atts['resource'] = $atts['use_res']; 
    541             } else if ( ! empty( $atts['res'] ) ) { 
     543            } elseif ( ! empty( $atts['res'] ) ) { 
    542544                $atts['resource'] = $atts['res']; 
    543545            } 
     
    562564            $instance['responsive']     = $atts['responsive']; // enable responsivenes? 
    563565            $instance['display']        = $atts['display']; // thumbnail, iframe, iframe2, playlist 
     566            $instance['thumb_quality']  = $atts['thumb_quality']; // default, mqdefault, hqdefault, sddefault, maxresdefault 
    564567            $instance['no_thumb_title'] = $atts['no_thumb_title']; // hide tooltip for thumbnails 
    565568 
     
    807810 
    808811                if ( 0 == $max_items ) { 
     812 
     813                    // Set default error message 
     814                    $error_msg = 'Unrecognized error experienced.'; 
    809815 
    810816                    // Append YouTube DATA API error reason as comment 
     
    833839                            // Forbidden access to resource 
    834840                            $error_msg = sprintf( __( "You do not have permission to access ressource <strong>%s</strong> (it's maybe set to private or even does not exists!)" ), $resource_id ); 
     841                        } else { 
     842                            $error_msg = sprintf( 
     843                                'Reason: %1$s; Domain: %2$s; Message: %3$s', 
     844                                $json_output->error->errors[0]->reason, 
     845                                $json_output->error->errors[0]->domain, 
     846                                $json_output->error->errors[0]->message 
     847                            ); 
    835848                        } 
    836                     } else { // ELSE ! empty($json_output->error->errors) 
    837  
    838                         $error_msg = 'Unrecognized error experienced.'; 
    839  
    840849                    } // END ! empty($json_output->error->errors) 
    841850 
     
    11151124            $yt_title = $item->snippet->title; 
    11161125            $yt_date  = $item->snippet->publishedAt; 
    1117             $yt_thumb  = "//img.youtube.com/vi/$yt_id/0.jpg"; // zero for HD thumb 
    11181126 
    11191127            // Enhanced privacy? 
     
    11701178                    $output .= '</div>'; 
    11711179                } 
    1172             } else if ( 'iframe2' == $instance['display'] ) { 
     1180            } elseif ( 'iframe2' == $instance['display'] ) { 
    11731181 
    11741182                // youtube API async 
     
    12381246                // Do we need thumbnail w/ or w/o tooltip 
    12391247                $tag_title = ( empty( $instance['no_thumb_title'] ) ) ? $tag_title = "title=\"{$yt_title}\"" : ''; 
     1248 
     1249                // Define video thumbnail 
     1250                switch ( $instance['thumb_quality'] ) { 
     1251                    case 'default': 
     1252                    case 'mqdefault': 
     1253                    case 'hqdefault': 
     1254                    case 'sddefault': 
     1255                    case 'maxresdefault': 
     1256                        $thumb_quality = $instance['thumb_quality']; 
     1257                        break; 
     1258                    default: 
     1259                        $thumb_quality = 'hqdefault'; 
     1260                } 
     1261                $yt_thumb  = "//img.youtube.com/vi/${yt_id}/${thumb_quality}.jpg"; // zero for HD thumb 
     1262 
    12401263                $output .= "<a href=\"//www.youtube.com/watch?v=${yt_id}${p}\" ${tag_title} class=\"ytc_thumb ${lightbox_class} ${arclass}\" ${target}><span style=\"background-image: url(${yt_thumb});\" ${tag_title} id=\"ytc_{$yt_id}\"></span></a>"; 
    12411264 
Note: See TracChangeset for help on using the changeset viewer.