PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more / 4.1.10
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more v4.1.10
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 / TikTok.php
embedpress / EmbedPress / Providers Last commit date
TemplateLayouts 1 year ago AirTable.php 1 year ago Boomplay.php 1 year ago Calendly.php 2 years ago Giphy.php 2 years ago GitHub.php 3 years ago GoogleDocs.php 2 years ago GoogleDrive.php 2 years ago GoogleMaps.php 2 years ago GooglePhotos.php 1 year ago Gumroad.php 2 years ago InstagramFeed.php 1 year ago LinkedIn.php 2 years ago NRKRadio.php 2 years ago OpenSea.php 2 years ago SelfHosted.php 2 years ago Spreaker.php 1 year ago TikTok.php 2 years ago Twitch.php 2 years ago Wrapper.php 3 years ago X.php 2 years ago Youtube.php 1 year ago index.html 7 years ago
TikTok.php
101 lines
1 <?php
2
3 namespace EmbedPress\Providers;
4
5 use Embera\Provider\ProviderAdapter;
6 use Embera\Provider\ProviderInterface;
7 use Embera\Url;
8
9 (defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed.");
10
11 /**
12 * Entity responsible to support TikTok embeds.
13 *
14 * @package EmbedPress
15 * @subpackage EmbedPress/Providers
16 * @author EmbedPress <help@embedpress.com>
17 * @copyright Copyright (C) 2023 WPDeveloper. All rights reserved.
18 * @license GPLv3 or later
19 * @since 1.0.0
20 */
21 class TikTok extends ProviderAdapter implements ProviderInterface
22 {
23 /** inline {@inheritdoc} */
24 protected static $hosts = ["tiktok.com"];
25 /**
26 * Method that verifies if the embed URL belongs to TikTok.
27 *
28 * @param Url $url
29 * @return boolean
30 * @since 1.0.0
31 *
32 */
33 public function validateUrl(Url $url)
34 {
35 // TikTok URL pattern
36 $pattern = "/^https:\/\/www\.tiktok\.com\/@[\w.-]+\/video\/[\w.-]+$/i";
37 // Check if the URL matches the pattern
38 return (bool) preg_match($pattern, (string) $url);
39 }
40
41 public function validateTikTok($url)
42 {
43 // TikTok URL pattern
44 $pattern = "/^https:\/\/www\.tiktok\.com\/@[\w.-]+\/video\/[\w.-]+$/i";
45 // Check if the URL matches the pattern
46 return (bool) preg_match($pattern, (string) $url);
47 }
48
49 public function getTiktokVideoId($url)
50 {
51 // TikTok URL pattern
52 $pattern = "/^https:\/\/www\.tiktok\.com\/@[\w.-]+\/video\/([\w.-]+)$/i";
53
54 // Check if the URL matches the pattern
55 if (preg_match($pattern, (string) $url, $matches)) {
56 // Extracted video ID
57 return $matches[1];
58 }
59
60 return null;
61 }
62
63
64 /**
65 * This method fakes an Oembed response.
66 *
67 * @since 1.0.0
68 *
69 * @return array
70 */
71 public function fakeResponse()
72 {
73 $src_url = urldecode($this->url);
74
75
76 // Check if the url is already converted to the embed format
77 if ($this->validateTikTok($src_url)) {
78 $iframeSrc = 'https://tiktok.com/embed/' . $this->getTiktokVideoId($this->url);
79 } else {
80 return [];
81 }
82
83
84 $width = isset($this->config['maxwidth']) ? $this->config['maxwidth'] : 600;
85 $height = isset($this->config['maxheight']) ? $this->config['maxheight'] : 350;
86
87 return [
88 'type' => 'rich',
89 'provider_name' => 'TikTok',
90 'provider_url' => 'https://tiktok.com',
91 'title' => 'Unknown title',
92 'html' => '<iframe title="" width="' . esc_attr($width) . '" height="' . esc_attr($height) . '" src="' . esc_url($iframeSrc) . '" ></iframe>',
93 ];
94 }
95 /** inline @inheritDoc */
96 public function modifyResponse(array $response = [])
97 {
98 return $this->fakeResponse();
99 }
100 }
101