PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more / 3.9.0
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more v3.9.0
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
Boomplay.php 5 years ago Calendly.php 2 years ago Giphy.php 2 years ago GitHub.php 2 years ago GoogleDocs.php 2 years ago GoogleDrive.php 2 years ago GoogleMaps.php 2 years ago Gumroad.php 2 years ago NRKRadio.php 2 years ago OpenSea.php 3 years ago SelfHosted.php 2 years ago Twitch.php 2 years ago Wrapper.php 2 years ago Youtube.php 2 years ago index.html 7 years ago
SelfHosted.php
124 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 parent::__construct($url, $config);
27 $hosts_url = parse_url($url);
28 $this->addHost($hosts_url['host']);
29 }
30
31 /** inline {@inheritdoc} */
32
33
34 /**
35 * Method that verifies if the embed URL belongs to SelfHosted.
36 *
37 * @param Url $url
38 * @return boolean
39 * @since 1.0.0
40 *
41 */
42 public function validateUrl(Url $url)
43 {
44 return (bool) preg_match(
45 '/^(https?:\/\/)?(www\.)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/i',
46 (string) $url
47 );
48 }
49
50 public function validateSelfHostedVideo($url)
51 {
52 return (bool) preg_match(
53 '/\.(mp4|mov|avi|wmv|flv|mkv|webm|mpeg|mpg)$/i',
54 (string) $url
55 );
56 }
57 public function validateSelfHostedAudio($url)
58 {
59 return (bool) preg_match(
60 '/\.(mp3|wav|ogg|aac)$/i',
61 (string) $url
62 );
63 }
64
65 public function validateWrapper($url)
66 {
67 return (bool) preg_match(
68 '/^(https?:\/\/)?(www\.)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/i',
69 (string) $url
70 );
71 }
72
73
74 /**
75 * This method fakes an Oembed response.
76 *
77 * @since 1.0.0
78 *
79 * @return array
80 */
81 public function fakeResponse()
82 {
83 $src_url = urldecode($this->url);
84
85
86 $width = isset($this->config['maxwidth']) ? $this->config['maxwidth'] : 600;
87 $height = isset($this->config['maxheight']) ? $this->config['maxheight'] : 450;
88
89 $provider_name = 'Self Hosterd';
90
91
92 // Check if the url is already converted to the embed format
93 $html = '';
94 if ($this->validateSelfHostedVideo($this->url)) {
95
96 $html ='<video controls width="'.esc_attr($width).'" height="'.esc_attr($height).'"> <source src="'.esc_url($this->url).'" > </video>';
97 }
98 else if ($this->validateSelfHostedAudio($this->url)) {
99 $html = '<audio controls> <source src="'.esc_url($this->url).'" ></audio>';
100 }
101 else if ($this->validateWrapper($this->url)) {
102 $provider_name = 'Wrapper';
103
104 $html = '<iframe width="'.esc_attr($width).'" height="'.esc_attr($height).'" src="'.esc_url($src_url).'" > </iframe>';
105 }
106 else {
107 return [];
108 }
109
110 return [
111 'type' => 'rich',
112 'provider_name' => $provider_name,
113 'provider_url' => site_url(),
114 'title' => 'Unknown title',
115 'html' => $html,
116 ];
117 }
118 /** inline @inheritDoc */
119 public function modifyResponse(array $response = [])
120 {
121 return $this->fakeResponse();
122 }
123 }
124