PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more / 2.1.6
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more v2.1.6
4.5.6 4.5.5 4.5.4 4.5.3 4.5.2 trunk 1.0.0 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.3.0 1.3.1 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.5.0 1.6.0 1.6.1 1.6.2 1.6.3 1.7.0 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 2.0.0 2.0.1 2.0.2 2.0.3 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.2.0 2.2.1 2.2.2 2.3.0 2.3.1 2.3.2 2.3.3 2.4.0 2.4.1 2.5.0 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.1.3 3.2.0 3.2.1 3.3.0 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.6.8 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 3.9.1 3.9.10 3.9.11 3.9.12 3.9.13 3.9.14 3.9.15 3.9.16 3.9.17 3.9.2 3.9.3 3.9.4 3.9.5 3.9.6 3.9.7 3.9.8 3.9.9 4.0.0 4.0.1 4.0.10 4.0.11 4.0.12 4.0.13 4.0.14 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.0.9 4.1.0 4.1.1 4.1.10 4.1.2 4.1.3 4.1.4 4.1.5 4.1.6 4.1.7 4.1.8 4.1.9 4.2.0 4.2.1 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.8 4.2.9 4.3.0 4.3.1 4.4.0 4.4.1 4.4.10 4.4.11 4.4.2 4.4.3 4.4.4 4.4.5 4.4.6 4.4.7 4.4.8 4.4.9 4.5.0 4.5.1
embedpress / EmbedPress / Providers / Twitch.php
embedpress / EmbedPress / Providers Last commit date
Giphy.php 8 years ago GoogleDocs.php 8 years ago GoogleMaps.php 8 years ago Twitch.php 8 years ago index.html 9 years ago
Twitch.php
125 lines
1 <?php
2 namespace EmbedPress\Providers;
3
4 use Embera\Adapters\Service as EmberaService;
5
6 (defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed.");
7
8 /**
9 * Entity responsible to support Twitch embeds.
10 *
11 * @package EmbedPress
12 * @subpackage EmbedPress/Providers
13 * @author EmbedPress <help@embedpress.com>
14 * @copyright Copyright (C) 2018 EmbedPress. All rights reserved.
15 * @license GPLv2 or later
16 * @since 1.5.0
17 */
18 class Twitch extends EmberaService
19 {
20 /**
21 * The regex which identifies Twitch URLs.
22 *
23 * @since 1.5.0
24 * @access private
25 *
26 * @var string
27 */
28 private $urlRegexPattern = '/http[s]?:\/\/(?:www\.|clips\.)twitch\.tv\/([0-9a-zA-Z\-\_]+)\/?(chat\/?$|[0-9a-z\-\_]*)?/';
29
30 /**
31 * Method that verifies if the embed URL belongs to Twitch.
32 *
33 * @since 1.5.0
34 *
35 * @return boolean
36 */
37 public function validateUrl()
38 {
39 return preg_match($this->urlRegexPattern, $this->url);
40 }
41
42 /**
43 * Return the type of the embed based on the URL.
44 *
45 * @param $url
46 *
47 * @return string
48 */
49 protected function getType($url)
50 {
51 if ( stristr($url, 'clips.twitch.tv') ) {
52 return 'clip';
53 }
54
55 if ( stristr($url, '/videos/') ) {
56 return 'video';
57 }
58
59 if ( preg_match('#/chat$#', $url) ) {
60 return 'chat';
61 }
62
63 return 'channel';
64 }
65
66 /**
67 * This method fakes an Oembed response.
68 *
69 * @since 1.5.0
70 *
71 * @return array
72 */
73 public function fakeResponse()
74 {
75 $url = $this->getUrl();
76 $providerUrl = 'https://twitch.tv';
77 $html = '';
78 $src = '';
79
80 if (preg_match("{$this->urlRegexPattern}i", $url, $matches)) {
81 $channelName = $matches[1];
82
83 $type = $this->getType($url);
84
85 // Clip, channel, chat, collection, or video?
86 switch ($type) {
87 case 'clip':
88 $src = 'https://clips.twitch.tv/embed?clip=' . $channelName . '&autoplay=false';
89 $attrs = 'scrolling="no" frameborder="0" allowfullscreen="true"';
90 break;
91
92 case 'video':
93 $channelName = $matches[2];
94 $src = 'https://player.twitch.tv/?video=' . $channelName;
95 $attrs = 'scrolling="no" frameborder="0" allowfullscreen="true"';
96 break;
97
98 case 'channel':
99 $src = 'https://player.twitch.tv/?channel=' . $channelName;
100 $attrs = 'scrolling="no" frameborder="0" allowfullscreen="true"';
101 break;
102
103 case 'chat':
104 $src = 'http://www.twitch.tv/embed/' . $channelName . '/chat';
105 $attrs = 'scrolling="yes" frameborder="0" allowfullscreen="true" id="' . $channelName . '"';
106 break;
107 }
108
109 $html = '<iframe src="' . $src . '" height="{height}" width="{width}" ' . $attrs . '></iframe>';
110
111 $response = array(
112 'type' => $type,
113 'provider_name' => 'Twitch',
114 'provider_url' => $providerUrl,
115 'url' => $url,
116 'html' => $html
117 );
118 } else {
119 $response = array();
120 }
121
122 return $response;
123 }
124 }
125