PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents / 4.0.5
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents v4.0.5
4.6.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 / Giphy.php
embedpress / EmbedPress / Providers Last commit date
Boomplay.php 2 years 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 Gumroad.php 2 years ago InstagramFeed.php 2 years ago LinkedIn.php 2 years ago NRKRadio.php 2 years ago OpenSea.php 2 years ago SelfHosted.php 2 years ago TikTok.php 2 years ago Twitch.php 2 years ago Wrapper.php 3 years ago X.php 2 years ago Youtube.php 2 years ago index.html 7 years ago
Giphy.php
93 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 Giphy 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.5.0
20 */
21 class Giphy extends ProviderAdapter implements ProviderInterface
22 {
23 /**
24 * The regex which identifies Giphy URLs.
25 *
26 * @since 1.5.0
27 * @access private
28 *
29 * @var string
30 */
31 private $urlRegexPattern = '~http[s]?:\/\/(?:www\.)?giphy\.com\/(?:gifs|clips)\/(?:[a-zA-Z0-9\-]+\-)?([a-zA-Z0-9]+)(?:[^\w\-]|$)|i.giphy\.com\/([a-zA-Z0-9]+)(\.gif)~';
32
33 /**
34 * Method that verifies if the embed URL belongs to Giphy.
35 *
36 * @param Url $url
37 * @return boolean
38 * @since 1.5.0
39 *
40 */
41
42 public function validateUrl(Url $url)
43 {
44 $urlString = (string) $url;
45
46 if (preg_match($this->urlRegexPattern, $urlString, $matches)) {
47 // Check which group matched and extract the GIF ID
48 $gifId = isset($matches[1]) && !empty($matches[1]) ? $matches[1] : (isset($matches[2]) ? $matches[2] : null);
49 return $gifId;
50 }
51
52 return false;
53 }
54
55 /**
56 * This method fakes an Oembed response.
57 *
58 * @since 1.5.0
59 *
60 * @return array
61 */
62 public function fakeResponse()
63 {
64 $url = $this->getUrl();
65
66 if (preg_match($this->urlRegexPattern, $url, $matches)) {
67 $gifId = count($matches) > 3 && strtolower($matches[3]) === ".gif" ? $matches[2] : $matches[1];
68 $width = isset($this->config['maxwidth']) ? $this->config['maxwidth'] : 400;
69 $height = isset($this->config['maxheight']) ? $this->config['maxheight'] : 400;
70 $html = '<a href="https://giphy.com/gifs/' . $gifId . '">' .
71 '<img src="https://media.giphy.com/media/' . $gifId . '/giphy.gif" alt="" width="' . esc_attr($width) . '" height="' . esc_attr($height) . '">' .
72 '</a>';
73
74 $response = [
75 'type' => 'image',
76 'provider_name' => 'Giphy',
77 'provider_url' => 'https://giphy.com',
78 'url' => $url,
79 'html' => $html,
80 ];
81 } else {
82 $response = [];
83 }
84
85 return $response;
86 }
87 /** inline @inheritDoc */
88 public function modifyResponse(array $response = [])
89 {
90 return $this->fakeResponse();
91 }
92 }
93