PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more / 4.2.8
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more v4.2.8
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 / SelfHosted.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 Canva.php 1 year ago FITE.php 1 year 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 OneDrive.php 1 year 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
SelfHosted.php
135 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 SelfHosted embeds.
13 *
14 * @package EmbedPress
15 * @subpackage EmbedPress/Providers
16 * @author EmbedPress <help@embedpress.com>
17 * @copyright Copyright (C) 2020 WPDeveloper. All rights reserved.
18 * @license GPLv3 or later
19 * @since 1.0.0
20 */
21
22 class SelfHosted extends ProviderAdapter implements ProviderInterface
23 {
24
25 public function __construct($url, array $config = [])
26 {
27 parent::__construct($url, $config);
28 $hosts_url = parse_url($url);
29 $this->addHost($hosts_url['host']);
30 }
31
32 /** inline {@inheritdoc} */
33
34
35 /**
36 * Method that verifies if the embed URL belongs to SelfHosted.
37 *
38 * @param Url $url
39 * @return boolean
40 * @since 1.0.0
41 *
42 */
43 public function validateUrl(Url $url)
44 {
45 return (bool) preg_match(
46 '/^(https?:\/\/)?(www\.)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/i',
47 (string) $url
48 );
49 }
50
51 public function validateSelfHostedVideo($url)
52 {
53 return (bool) preg_match(
54 '/\.(mp4|mov|avi|wmv|flv|mkv|webm|mpeg|mpg)$/i',
55 (string) $url
56 );
57 }
58 public function validateSelfHostedAudio($url)
59 {
60 return (bool) preg_match(
61 '/\.(mp3|wav|ogg|aac)$/i',
62 (string) $url
63 );
64 }
65
66 public function validateWrapper($url)
67 {
68 return (bool) preg_match(
69 '/^(https?:\/\/)?(www\.)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/i',
70 (string) $url
71 );
72 }
73
74 public function fileExtention($fileUrl)
75 {
76 $pathInfo = pathinfo($fileUrl);
77
78 if (isset($pathInfo['extension'])) {
79 $fileExtension = $pathInfo['extension'];
80 return $fileExtension;
81 }
82 }
83
84
85
86 /**
87 * This method fakes an Oembed response.
88 *
89 * @since 1.0.0
90 *
91 * @return array
92 */
93 public function fakeResponse()
94 {
95 $src_url = urldecode($this->url);
96 $provider_name = 'Self Hosterd';
97
98 $width = isset($this->config['maxwidth']) ? $this->config['maxwidth'] : 600;
99 $height = isset($this->config['maxheight']) ? $this->config['maxheight'] : 450;
100
101 // Check if the url is already converted to the embed format
102 if ($this->fileExtention($src_url) === 'ppsx' || $this->fileExtention($src_url) === 'pptx' || $this->fileExtention($src_url) === 'ppt' || $this->fileExtention($src_url) === 'xlsx' || $this->fileExtention($src_url) === 'xls' || $this->fileExtention($src_url) === 'doc' || $this->fileExtention($src_url) === 'docx') {
103 $src_url = '//view.officeapps.live.com/op/embed.aspx?src=' . $this->url;
104 }
105
106 // Check if the url is already converted to the embed format
107 $html = '';
108 if ($this->validateSelfHostedVideo($this->url)) {
109
110 $html = '<video controls width="' . esc_attr($width) . '" height="' . esc_attr($height) . '"> <source src="' . esc_url($this->url) . '" > </video>';
111 } else if ($this->validateSelfHostedAudio($this->url)) {
112 $html = '<audio controls> <source src="' . esc_url($this->url) . '" ></audio>';
113 } else if ($this->validateWrapper($this->url)) {
114 $provider_name = 'Wrapper';
115
116 $html = '<iframe width="' . esc_attr($width) . '" height="' . esc_attr($height) . '" src="' . esc_url($src_url) . '" > </iframe>';
117 } else {
118 return [];
119 }
120
121 return [
122 'type' => 'rich',
123 'provider_name' => $provider_name,
124 'provider_url' => site_url(),
125 'title' => 'Unknown title',
126 'html' => $html,
127 ];
128 }
129 /** inline @inheritDoc */
130 public function modifyResponse(array $response = [])
131 {
132 return $this->fakeResponse();
133 }
134 }
135