PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more / trunk
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more vtrunk
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 / AirTable.php
embedpress / EmbedPress / Providers Last commit date
TemplateLayouts 3 weeks 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 GettyImages.php 9 months ago Giphy.php 2 years ago GitHub.php 2 years ago GoogleCalendar.php 7 months ago GoogleDocs.php 2 years ago GoogleDrive.php 2 years ago GoogleMaps.php 2 years ago GooglePhotos.php 3 months ago Gumroad.php 2 years ago InstagramFeed.php 3 weeks ago LinkedIn.php 2 years ago Meetup.php 5 months ago NRKRadio.php 2 years ago OneDrive.php 10 months ago OpenSea.php 9 months ago SelfHosted.php 1 month ago Spreaker.php 1 year ago TikTok.php 2 years ago Twitch.php 2 years ago Wistia.php 3 months ago Wrapper.php 2 years ago X.php 2 years ago Youtube.php 3 weeks ago index.html 7 years ago
AirTable.php
92 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 AirTable 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 AirTable extends ProviderAdapter implements ProviderInterface
22 {
23 /** inline {@inheritdoc} */
24 protected static $hosts = ["airtable.com"];
25 /**
26 * Method that verifies if the embed URL belongs to AirTable.
27 *
28 * @param Url $url
29 * @return boolean
30 * @since 1.0.0
31 *
32 */
33 public function validateUrl(Url $url)
34 {
35 return (bool) preg_match(
36 '~^https:\/\/airtable\.com\/app[a-zA-Z0-9]+\/shr[a-zA-Z0-9]+$~',
37 (string) $url
38 );
39 }
40
41 public function validateAirtableUrl($url)
42 {
43 return (bool) preg_match(
44 '~^https:\/\/airtable\.com\/app[a-zA-Z0-9]+\/shr[a-zA-Z0-9]+$~',
45 (string) $url
46 );
47 }
48
49 public function getAirtableIds($url)
50 {
51 $pattern = '~^https:\/\/airtable\.com\/([a-zA-Z0-9]+\/[a-zA-Z0-9]+)$~';
52
53 if (preg_match($pattern, (string) $url, $matches)) {
54 return $matches[1]; // Extracts "appXXXXX/shrXXXXX"
55 }
56
57 return null; // Return null if the URL is invalid
58 }
59
60 /**
61 * This method fakes an Oembed response.
62 *
63 * @since 1.0.0
64 *
65 * @return array
66 */
67 public function fakeResponse()
68 {
69 $src_url = urldecode($this->url);
70
71 $ids = $this->getAirtableIds($src_url);
72 $embed_url = "https://airtable.com/embed/" . $ids;
73
74
75 $width = isset($this->config['maxwidth']) ? $this->config['maxwidth'] : 600;
76 $height = isset($this->config['maxheight']) ? $this->config['maxheight'] : 450;
77
78 return [
79 'type' => 'rich',
80 'provider_name' => 'AirTable',
81 'provider_url' => 'https://airtable.com',
82 'title' => 'Unknown title',
83 'html' => '<iframe title="" width="' . esc_attr($width) . '" height="' . esc_attr($height) . '" src="' . esc_url($embed_url) . '" frameborder="0"></iframe>',
84 ];
85 }
86 /** inline @inheritDoc */
87 public function modifyResponse(array $response = [])
88 {
89 return $this->fakeResponse();
90 }
91 }
92