YouTube - Version 11.8.6

Version Description

Download this release

Release Info

Developer embedplus
Plugin Icon 128x128 YouTube
Version 11.8.6
Comparing to
See all releases

Code changes from version 11.8.5 to 11.8.6

Files changed (2) hide show
  1. readme.txt +7 -2
  2. youtube.php +86 -65
readme.txt CHANGED
@@ -4,7 +4,7 @@ Plugin Name: YouTube Embed
4
  Tags: youtube gallery, video gallery, youtube channel, youtube live, live stream
5
  Requires at least: 3.6.1
6
  Tested up to: 4.9
7
- Stable tag: 11.8.5
8
  License: GPLv3 or later
9
 
10
  YouTube Embed WordPress Plugin. Embed a responsive video, YouTube channel gallery, playlist gallery, or YouTube.com live stream
@@ -15,7 +15,7 @@ YouTube Embed WordPress Plugin. Embed a responsive video, YouTube channel galler
15
 
16
  * YouTube gallery capability (channel and playlist) – The ability to make playlist and channel embeds have a gallery layout. By default, the plugin can generate a grid-based [responsive playlist or channel gallery >>](https://www.embedplus.com/responsive-youtube-playlist-channel-gallery-for-wordpress.aspx). Your visitors can browse through pages of video thumbnails and choose from videos that are pulled from an entire YouTube channel or playlist.
17
  * YouTube gallery auto continuous play - embed a playlist or channel gallery and allow it to play one video after the next without requiring viewers to click a thumbnail
18
- * YouTube Live Stream - Given a link to a YouTube channel, the plugin wizard automatically finds a live stream if one is active in that channel and generates the embed code for you. On the settings page, you can also set defaults of what to automatically display if a live stream is not active at a given moment. For example, you can have your site display a gallery of a channel's entire video library so that users can have something to watch in the meantime. We hope it's a time saver.
19
  * Improved accessibility by using title attributes for screen reader support. It should help your site pass functional accessibility evaluations (FAE).
20
  * Improved ajax theme support
21
  * Site origin information with each embed code as an extra security measure. In YouTube's/Google's own words, checking this option "protects against malicious third-party JavaScript being injected into your page and hijacking control of your YouTube player." We especially recommend checking it as it adds higher security than the built-in YouTube embedding method that comes with the current version of WordPress (i.e. oembed).
@@ -147,6 +147,11 @@ You can also start and end each individual video at particular times. Like the a
147
 
148
  == Changelog ==
149
 
 
 
 
 
 
150
  = WordPress YouTube Embed 11.8.5 =
151
  * Adds the YouTube wizard button to the new built-in WordPress text widget
152
  * Fixes a Mac/iOS gallery scrolling issue
4
  Tags: youtube gallery, video gallery, youtube channel, youtube live, live stream
5
  Requires at least: 3.6.1
6
  Tested up to: 4.9
7
+ Stable tag: 11.8.6
8
  License: GPLv3 or later
9
 
10
  YouTube Embed WordPress Plugin. Embed a responsive video, YouTube channel gallery, playlist gallery, or YouTube.com live stream
15
 
16
  * YouTube gallery capability (channel and playlist) – The ability to make playlist and channel embeds have a gallery layout. By default, the plugin can generate a grid-based [responsive playlist or channel gallery >>](https://www.embedplus.com/responsive-youtube-playlist-channel-gallery-for-wordpress.aspx). Your visitors can browse through pages of video thumbnails and choose from videos that are pulled from an entire YouTube channel or playlist.
17
  * YouTube gallery auto continuous play - embed a playlist or channel gallery and allow it to play one video after the next without requiring viewers to click a thumbnail
18
+ * YouTube Live Stream - Given a link to a YouTube channel, the plugin wizard automatically finds a livestream if one is active in that channel and generates the embed code for you. On the settings page, you can also set defaults of what to automatically display if a live stream is not active at a given moment. For example, you can have your site display a gallery of a channel's entire video library so that users can have something to watch in the meantime. We hope it's a time saver.
19
  * Improved accessibility by using title attributes for screen reader support. It should help your site pass functional accessibility evaluations (FAE).
20
  * Improved ajax theme support
21
  * Site origin information with each embed code as an extra security measure. In YouTube's/Google's own words, checking this option "protects against malicious third-party JavaScript being injected into your page and hijacking control of your YouTube player." We especially recommend checking it as it adds higher security than the built-in YouTube embedding method that comes with the current version of WordPress (i.e. oembed).
147
 
148
  == Changelog ==
149
 
150
+ = WordPress YouTube Embed 11.8.6 =
151
+ * Updated YouTube API key video tutorial
152
+ * Improved channel wizard process
153
+ * Better compatibility with jQuery Updater plugin
154
+
155
  = WordPress YouTube Embed 11.8.5 =
156
  * Adds the YouTube wizard button to the new built-in WordPress text widget
157
  * Fixes a Mac/iOS gallery scrolling issue
youtube.php CHANGED
@@ -3,14 +3,14 @@
3
  Plugin Name: YouTube
4
  Plugin URI: https://www.embedplus.com/dashboard/pro-easy-video-analytics.aspx
5
  Description: YouTube Embed and YouTube Gallery WordPress Plugin. Embed a responsive video, YouTube channel, playlist gallery, or live stream
6
- Version: 11.8.5
7
  Author: EmbedPlus Team
8
  Author URI: https://www.embedplus.com
9
  */
10
 
11
  /*
12
  YouTube
13
- Copyright (C) 2017 EmbedPlus.com
14
 
15
  This program is free software: you can redistribute it and/or modify
16
  it under the terms of the GNU General Public License as published by
@@ -33,7 +33,7 @@ class YouTubePrefs
33
  {
34
 
35
  public static $curltimeout = 20;
36
- public static $version = '11.8.5';
37
  public static $opt_version = 'version';
38
  public static $optembedwidth = null;
39
  public static $optembedheight = null;
@@ -114,7 +114,7 @@ class YouTubePrefs
114
  public static $badentities = array('×', '×', '–', '–', '&', '&', '&');
115
  public static $goodliterals = array('x', 'x', '--', '--', '&', '&', '&');
116
  public static $wizard_hook = '';
117
- public static $get_api_key_msg = 'The ### feature now requires a (free) YouTube API key from Google. Please follow the easy steps <a href="https://www.youtube.com/watch?v=LpKDFT40V0U" target="_blank">in this video</a> to create and save your API key.';
118
  ///////////////////////////////////////////////////////////////////////////////////////////////////
119
  ///////////////////////////////////////////////////////////////////////////////////////////////////
120
  ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -506,65 +506,77 @@ class YouTubePrefs
506
  {
507
  throw new Exception();
508
  }
509
- if (preg_match(self::$justurlregex, $search))
510
  {
511
  try
512
  {
513
- $theytid = null;
514
- try
515
  {
516
- $theytid = self::try_get_ytid($search);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
517
  }
518
- catch (Exception $ex)
519
  {
520
-
 
 
 
 
 
 
521
  }
522
- $chanvid = self::get_video_snippet($theytid);
523
- if ($chanvid)
524
  {
525
- $thechannel = self::get_channel_snippet($chanvid->snippet->channelId);
526
-
527
- if ($thechannel)
528
- {
529
- $theplaylistid = $thechannel->contentDetails->relatedPlaylists->uploads;
530
- $rel = 'https://www.youtube.com/embed?listType=playlist&list=' . (esc_attr($theplaylistid));
531
- ?>
532
 
533
- <div id="step2_channel" class="center">
534
 
535
- <h2>
536
- <?php
537
- echo 'Channel: ' . sanitize_text_field($chanvid->snippet->channelTitle);
538
- ?>
539
- </h2>
540
- <p class="center">
541
- <a class="ui-button ui-widget ui-corner-all inserttopost" rel="[embedyt] <?php echo $rel; ?>[/embedyt]"><span class="ui-icon ui-icon-arrowthickstop-1-s"></span> Insert as Playlist</a>
542
- &nbsp; <a class="ui-button ui-widget ui-corner-all inserttopost" rel="[embedyt] <?php echo $rel . '&layout=gallery'; ?>[/embedyt]"><span class="ui-icon ui-icon-arrowthickstop-1-s"></span> Insert as Gallery</a>
543
- &nbsp; <a class="ui-button ui-widget ui-corner-all" href="<?php echo $get_pro_link; ?>" target="_blank"><span class="ui-icon ui-icon-gear"></span> Customize (PRO)</a>
544
- </p>
545
- <p>
546
- Or Copy Code:
547
- </p>
548
- <p>
549
- Playlist Layout: <span class="copycode">[embedyt] <?php echo $rel; ?>[/embedyt]</span>
550
- </p>
551
- <p>
552
- Gallery Layout: <span class="copycode">[embedyt] <?php echo $rel . '&layout=gallery'; ?>[/embedyt]</span>
553
- </p>
554
- <div class="clearboth" style="height: 10px;">
555
- </div>
556
- <div class="center relative">
557
- <iframe src="<?php echo $rel; ?>" allowfullscreen="" width="854" height="480" frameborder="0"></iframe>
558
- </div>
559
  </div>
560
- <?php
561
- }
562
- else
563
- {
564
- $form_valid = false;
565
- $step1_channel_errors = $step1_channel_error_invalid;
566
- $acc_expand = 'h3_channel';
567
- }
568
  }
569
  else
570
  {
@@ -786,7 +798,10 @@ class YouTubePrefs
786
  {
787
  ?>
788
  <p>
789
- Enter a link to any video that belongs to the user's channel. Example: https://www.youtube.com/watch?v=YVvn8dpSAt0
 
 
 
790
  </p>
791
  <form name="wizform_channel" method="post" action="" class="wizform" id="wizform_channel">
792
  <?php wp_nonce_field('_epyt_wiz', '_epyt_nonce', true); ?>
@@ -964,7 +979,7 @@ class YouTubePrefs
964
  if (is_wp_error($apiResult))
965
  {
966
  $gallobj->html = '<div>Sorry, there was a YouTube API error: <em>' . htmlspecialchars(strip_tags($apiResult->get_error_message())) . '</em>' .
967
- ' Please make sure you performed the <a href="https://www.youtube.com/watch?v=LpKDFT40V0U" target="_blank">steps in this video</a> to create and save a proper server API key.' .
968
  '</div>';
969
  return $gallobj;
970
  }
@@ -976,11 +991,11 @@ class YouTubePrefs
976
  if (isset($jsonResult->error->message))
977
  {
978
  $gallobj->html = '<div>Sorry, there was a YouTube API error: <em>' . htmlspecialchars(strip_tags($jsonResult->error->message)) . '</em>' .
979
- ' Please make sure you performed the <a href="https://www.youtube.com/watch?v=LpKDFT40V0U" target="_blank">steps in this video</a> to create and save a proper server API key.' .
980
  '</div>';
981
  return $gallobj;
982
  }
983
- $gallobj->html = '<div>Sorry, there may be an issue with your YouTube API key. Please make sure you performed the <a href="https://www.youtube.com/watch?v=LpKDFT40V0U" target="_blank">steps in this video</a> to create and save a proper server API key.</div>';
984
  return $gallobj;
985
  }
986
 
@@ -1921,7 +1936,7 @@ class YouTubePrefs
1921
  if (is_wp_error($apiResult))
1922
  {
1923
  $gallobj->html = '<div>Sorry, there was a YouTube API error: <em>' . htmlspecialchars(strip_tags($apiResult->get_error_message())) . '</em>' .
1924
- ' Please make sure you performed the <a href="https://www.youtube.com/watch?v=LpKDFT40V0U" target="_blank">steps in this video</a> to create and save a proper server API key.' .
1925
  '</div>';
1926
  return $gallobj;
1927
  }
@@ -1942,11 +1957,11 @@ class YouTubePrefs
1942
  if (isset($jsonResult->error->message))
1943
  {
1944
  $gallobj->html = '<div>Sorry, there was a YouTube API error: <em>' . htmlspecialchars(strip_tags($jsonResult->error->message)) . '</em>' .
1945
- ' Please make sure you performed the <a href="https://www.youtube.com/watch?v=LpKDFT40V0U" target="_blank">steps in this video</a> to create and save a proper server API key.' .
1946
  '</div>';
1947
  return $gallobj;
1948
  }
1949
- $gallobj->html = '<div>Sorry, there may be an issue with your YouTube API key. Please make sure you performed the <a href="https://www.youtube.com/watch?v=LpKDFT40V0U" target="_blank">steps in this video</a> to create and save a proper server API key.</div>';
1950
  return $gallobj;
1951
  }
1952
 
@@ -2149,7 +2164,7 @@ class YouTubePrefs
2149
 
2150
  if (isset($linkparams['channel']) && isset($linkparams['live']) && $linkparams['live'] == '1')
2151
  {
2152
- $live_error_msg = ' To embed live videos, please make sure you performed the <a href="https://www.youtube.com/watch?v=LpKDFT40V0U" target="_blank">steps in this video</a> to create and save a proper server API key.';
2153
  if (isset(self::$alloptions[self::$opt_apikey]))
2154
  {
2155
 
@@ -2638,11 +2653,11 @@ class YouTubePrefs
2638
  $new_pointer_content .= '<p>'; // ooopointer
2639
  if (!(self::$alloptions[self::$opt_pro] && strlen(trim(self::$alloptions[self::$opt_pro])) > 0))
2640
  {
2641
- $new_pointer_content .= __("This update adds the YouTube wizard button to the new built-in WordPress text widget, and fixes a gallery scrolling issue for both Free and <a target=_blank href=" . self::$epbase . '/dashboard/pro-easy-video-analytics.aspx?ref=frompointer' . ">Pro versions &raquo;</a>");
2642
  }
2643
  else
2644
  {
2645
- $new_pointer_content .= __("This update adds the YouTube wizard button to the new built-in WordPress text widget, and fixes a gallery scrolling issue for both Free and Pro versions. " . '<strong>Important message to YouTube Pro users</strong>: From version 11.7 onward, you must <a href="https://www.embedplus.com/youtube-pro/download/?prokey=' . esc_attr(self::$alloptions[self::$opt_pro]) . '" target="_blank">download the separate plugin here</a> to regain your Pro features. All your settings will automatically migrate after installing the separate Pro download. Thank you for your support and patience during this transition.');
2646
  }
2647
  $new_pointer_content .= '</p>';
2648
 
@@ -3059,7 +3074,7 @@ class YouTubePrefs
3059
  <p>
3060
  <b class="chktitle">YouTube API Key:</b>
3061
  <input type="text" name="<?php echo self::$opt_apikey; ?>" id="<?php echo self::$opt_apikey; ?>" value="<?php echo esc_attr(trim($all[self::$opt_apikey])); ?>" class="textinput" style="width: 250px;">
3062
- <a href="https://www.youtube.com/watch?v=LpKDFT40V0U" target="_blank">Click this link &raquo;</a> and follow the video to get your API key. Don't worry, it's an easy process.
3063
  </p>
3064
 
3065
 
@@ -3471,7 +3486,7 @@ class YouTubePrefs
3471
  <img class="ssgallery" src="<?php echo plugins_url('images/ssgallery.png', __FILE__) ?>">
3472
  <p>
3473
  <a target="_blank" href="<?php echo self::$epbase ?>/responsive-youtube-playlist-channel-gallery-for-wordpress.aspx">You can now make playlist embeds (and channel-playlist embeds) have a gallery layout &raquo;</a>. <strong>First, you must obtain your YouTube API key</strong>.
3474
- Don't worry, it's an easy process. Just <a href="https://www.youtube.com/watch?v=LpKDFT40V0U" target="_blank">click this link &raquo;</a> and follow the video on that page to get your server API key. Since Google updates their API Key generation directions frequently, follow the general steps shown in the video.
3475
  Then paste your API key in the "YouTube API Key" box at the top of this screen, and click the "Save Changes" button.
3476
  </p>
3477
 
@@ -4061,7 +4076,13 @@ class YouTubePrefs
4061
  'stopMobileBuffer' => self::$alloptions[self::$opt_stop_mobile_buffer] == '1' ? true : false
4062
  );
4063
 
4064
- wp_localize_script('jquery', '_EPYT_', $my_script_vars);
 
 
 
 
 
 
4065
  }
4066
 
4067
  ////////////////////// cloudflare accomodation
3
  Plugin Name: YouTube
4
  Plugin URI: https://www.embedplus.com/dashboard/pro-easy-video-analytics.aspx
5
  Description: YouTube Embed and YouTube Gallery WordPress Plugin. Embed a responsive video, YouTube channel, playlist gallery, or live stream
6
+ Version: 11.8.6
7
  Author: EmbedPlus Team
8
  Author URI: https://www.embedplus.com
9
  */
10
 
11
  /*
12
  YouTube
13
+ Copyright (C) 2018 EmbedPlus.com
14
 
15
  This program is free software: you can redistribute it and/or modify
16
  it under the terms of the GNU General Public License as published by
33
  {
34
 
35
  public static $curltimeout = 20;
36
+ public static $version = '11.8.6';
37
  public static $opt_version = 'version';
38
  public static $optembedwidth = null;
39
  public static $optembedheight = null;
114
  public static $badentities = array('&#215;', '×', '&#8211;', '–', '&amp;', '&#038;', '&#38;');
115
  public static $goodliterals = array('x', 'x', '--', '--', '&', '&', '&');
116
  public static $wizard_hook = '';
117
+ public static $get_api_key_msg = 'The ### feature now requires a (free) YouTube API key from Google. Please follow the easy steps <a href="https://www.youtube.com/watch?v=6gD0X76-v_g" target="_blank">in this video</a> to create and save your API key.';
118
  ///////////////////////////////////////////////////////////////////////////////////////////////////
119
  ///////////////////////////////////////////////////////////////////////////////////////////////////
120
  ///////////////////////////////////////////////////////////////////////////////////////////////////
506
  {
507
  throw new Exception();
508
  }
509
+ if (preg_match(self::$justurlregex, $search) || preg_match('@/channel/(.+)@', $search))
510
  {
511
  try
512
  {
513
+ $thechannel = null;
514
+ if (preg_match(self::$justurlregex, $search))
515
  {
516
+ // single id
517
+ $theytid = null;
518
+ try
519
+ {
520
+ $theytid = self::try_get_ytid($search);
521
+ }
522
+ catch (Exception $ex)
523
+ {
524
+
525
+ }
526
+ $chanvid = null;
527
+ if ($theytid)
528
+ {
529
+ $chanvid = self::get_video_snippet($theytid);
530
+ }
531
+ if ($chanvid)
532
+ {
533
+ $thechannel = self::get_channel_snippet($chanvid->snippet->channelId);
534
+ }
535
  }
536
+ else
537
  {
538
+ // channel id
539
+ $chanmatch = array();
540
+ preg_match('@/channel/(.+)@', $search, $chanmatch);
541
+ if (!empty($chanmatch))
542
+ {
543
+ $thechannel = self::get_channel_snippet($chanmatch[1]);
544
+ }
545
  }
546
+ if ($thechannel)
 
547
  {
548
+ $theplaylistid = $thechannel->contentDetails->relatedPlaylists->uploads;
549
+ $rel = 'https://www.youtube.com/embed?listType=playlist&list=' . (esc_attr($theplaylistid));
550
+ ?>
 
 
 
 
551
 
552
+ <div id="step2_channel" class="center">
553
 
554
+ <h2>
555
+ <?php
556
+ echo 'Channel: ' . sanitize_text_field($thechannel->snippet->title);
557
+ ?>
558
+ </h2>
559
+ <p class="center">
560
+ <a class="ui-button ui-widget ui-corner-all inserttopost" rel="[embedyt] <?php echo $rel; ?>[/embedyt]"><span class="ui-icon ui-icon-arrowthickstop-1-s"></span> Insert as Playlist</a>
561
+ &nbsp; <a class="ui-button ui-widget ui-corner-all inserttopost" rel="[embedyt] <?php echo $rel . '&layout=gallery'; ?>[/embedyt]"><span class="ui-icon ui-icon-arrowthickstop-1-s"></span> Insert as Gallery</a>
562
+ &nbsp; <a class="ui-button ui-widget ui-corner-all" href="<?php echo $get_pro_link; ?>" target="_blank"><span class="ui-icon ui-icon-gear"></span> Customize (PRO)</a>
563
+ </p>
564
+ <p>
565
+ Or Copy Code:
566
+ </p>
567
+ <p>
568
+ Playlist Layout: <span class="copycode">[embedyt] <?php echo $rel; ?>[/embedyt]</span>
569
+ </p>
570
+ <p>
571
+ Gallery Layout: <span class="copycode">[embedyt] <?php echo $rel . '&layout=gallery'; ?>[/embedyt]</span>
572
+ </p>
573
+ <div class="clearboth" style="height: 10px;">
 
 
 
 
574
  </div>
575
+ <div class="center relative">
576
+ <iframe src="<?php echo $rel; ?>" allowfullscreen="" width="854" height="480" frameborder="0"></iframe>
577
+ </div>
578
+ </div>
579
+ <?php
 
 
 
580
  }
581
  else
582
  {
798
  {
799
  ?>
800
  <p>
801
+ If you already know the direct link to the channel, enter it below.<br>Example: https://www.youtube.com/<strong>channel</strong>/UCnM5iMGiKsZg-iOlIO2ZkdQ
802
+ </p>
803
+ <p>
804
+ Or, simply enter a link to any single video that belongs to the user's channel, and the plugin will find the channel for you.<br>Example: https://www.youtube.com/watch?v=YVvn8dpSAt0
805
  </p>
806
  <form name="wizform_channel" method="post" action="" class="wizform" id="wizform_channel">
807
  <?php wp_nonce_field('_epyt_wiz', '_epyt_nonce', true); ?>
979
  if (is_wp_error($apiResult))
980
  {
981
  $gallobj->html = '<div>Sorry, there was a YouTube API error: <em>' . htmlspecialchars(strip_tags($apiResult->get_error_message())) . '</em>' .
982
+ ' Please make sure you performed the <a href="https://www.youtube.com/watch?v=6gD0X76-v_g" target="_blank">steps in this video</a> to create and save a proper server API key.' .
983
  '</div>';
984
  return $gallobj;
985
  }
991
  if (isset($jsonResult->error->message))
992
  {
993
  $gallobj->html = '<div>Sorry, there was a YouTube API error: <em>' . htmlspecialchars(strip_tags($jsonResult->error->message)) . '</em>' .
994
+ ' Please make sure you performed the <a href="https://www.youtube.com/watch?v=6gD0X76-v_g" target="_blank">steps in this video</a> to create and save a proper server API key.' .
995
  '</div>';
996
  return $gallobj;
997
  }
998
+ $gallobj->html = '<div>Sorry, there may be an issue with your YouTube API key. Please make sure you performed the <a href="https://www.youtube.com/watch?v=6gD0X76-v_g" target="_blank">steps in this video</a> to create and save a proper server API key.</div>';
999
  return $gallobj;
1000
  }
1001
 
1936
  if (is_wp_error($apiResult))
1937
  {
1938
  $gallobj->html = '<div>Sorry, there was a YouTube API error: <em>' . htmlspecialchars(strip_tags($apiResult->get_error_message())) . '</em>' .
1939
+ ' Please make sure you performed the <a href="https://www.youtube.com/watch?v=6gD0X76-v_g" target="_blank">steps in this video</a> to create and save a proper server API key.' .
1940
  '</div>';
1941
  return $gallobj;
1942
  }
1957
  if (isset($jsonResult->error->message))
1958
  {
1959
  $gallobj->html = '<div>Sorry, there was a YouTube API error: <em>' . htmlspecialchars(strip_tags($jsonResult->error->message)) . '</em>' .
1960
+ ' Please make sure you performed the <a href="https://www.youtube.com/watch?v=6gD0X76-v_g" target="_blank">steps in this video</a> to create and save a proper server API key.' .
1961
  '</div>';
1962
  return $gallobj;
1963
  }
1964
+ $gallobj->html = '<div>Sorry, there may be an issue with your YouTube API key. Please make sure you performed the <a href="https://www.youtube.com/watch?v=6gD0X76-v_g" target="_blank">steps in this video</a> to create and save a proper server API key.</div>';
1965
  return $gallobj;
1966
  }
1967
 
2164
 
2165
  if (isset($linkparams['channel']) && isset($linkparams['live']) && $linkparams['live'] == '1')
2166
  {
2167
+ $live_error_msg = ' To embed live videos, please make sure you performed the <a href="https://www.youtube.com/watch?v=6gD0X76-v_g" target="_blank">steps in this video</a> to create and save a proper server API key.';
2168
  if (isset(self::$alloptions[self::$opt_apikey]))
2169
  {
2170
 
2653
  $new_pointer_content .= '<p>'; // ooopointer
2654
  if (!(self::$alloptions[self::$opt_pro] && strlen(trim(self::$alloptions[self::$opt_pro])) > 0))
2655
  {
2656
+ $new_pointer_content .= __("This version updates the API key instructions, simplifies channel embedding, and addresses jQuery Updater compatibility for both Free and <a target=_blank href=" . self::$epbase . '/dashboard/pro-easy-video-analytics.aspx?ref=frompointer' . ">Pro versions &raquo;</a>");
2657
  }
2658
  else
2659
  {
2660
+ $new_pointer_content .= __("This version updates the API key instructions, simplifies channel embedding, and addresses jQuery Updater compatibility for both Free and and Pro versions. " . '<strong>Important message to YouTube Pro users</strong>: From version 11.7 onward, you must <a href="https://www.embedplus.com/youtube-pro/download/?prokey=' . esc_attr(self::$alloptions[self::$opt_pro]) . '" target="_blank">download the separate plugin here</a> to regain your Pro features. All your settings will automatically migrate after installing the separate Pro download. Thank you for your support and patience during this transition.');
2661
  }
2662
  $new_pointer_content .= '</p>';
2663
 
3074
  <p>
3075
  <b class="chktitle">YouTube API Key:</b>
3076
  <input type="text" name="<?php echo self::$opt_apikey; ?>" id="<?php echo self::$opt_apikey; ?>" value="<?php echo esc_attr(trim($all[self::$opt_apikey])); ?>" class="textinput" style="width: 250px;">
3077
+ <a href="https://www.youtube.com/watch?v=6gD0X76-v_g" target="_blank">Click this link &raquo;</a> and follow the video to get your API key. Don't worry, it's an easy process.
3078
  </p>
3079
 
3080
 
3486
  <img class="ssgallery" src="<?php echo plugins_url('images/ssgallery.png', __FILE__) ?>">
3487
  <p>
3488
  <a target="_blank" href="<?php echo self::$epbase ?>/responsive-youtube-playlist-channel-gallery-for-wordpress.aspx">You can now make playlist embeds (and channel-playlist embeds) have a gallery layout &raquo;</a>. <strong>First, you must obtain your YouTube API key</strong>.
3489
+ Don't worry, it's an easy process. Just <a href="https://www.youtube.com/watch?v=6gD0X76-v_g" target="_blank">click this link &raquo;</a> and follow the video on that page to get your server API key. Since Google updates their API Key generation directions frequently, follow the general steps shown in the video.
3490
  Then paste your API key in the "YouTube API Key" box at the top of this screen, and click the "Save Changes" button.
3491
  </p>
3492
 
4076
  'stopMobileBuffer' => self::$alloptions[self::$opt_stop_mobile_buffer] == '1' ? true : false
4077
  );
4078
 
4079
+ // jquery-updater plugin is not compatible with wp_localize_script
4080
+ // $wls_handle = 'jquery';
4081
+ // if (is_plugin_active('jquery-updater/jquery-updater.php'))
4082
+ // {
4083
+ // $wls_handle = '__ytprefs__';
4084
+ // }
4085
+ wp_localize_script('__ytprefs__', '_EPYT_', $my_script_vars);
4086
  }
4087
 
4088
  ////////////////////// cloudflare accomodation