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 / Calendly.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
Calendly.php
186 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 Calendly 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 Calendly extends ProviderAdapter implements ProviderInterface
22 {
23 /** inline {@inheritdoc} */
24 protected static $hosts = ["calendly.com"];
25 /**
26 * Method that verifies if the embed URL belongs to Calendly.
27 *
28 * @param Url $url
29 * @return boolean
30 * @since 1.0.0
31 *
32 */
33
34 /** inline {@inheritdoc} */
35 /** @var array Array with allowed params for the current Provider */
36 protected $allowedParams = [
37 'cEmbedType',
38 'calendlyData',
39 'hideCookieBanner',
40 'hideEventTypeDetails',
41 'cBackgroundColor',
42 'cTextColor',
43 'cButtonLinkColor',
44 'cPopupButtonText',
45 'cPopupButtonBGColor',
46 'cPopupButtonTextColor',
47 'cPopupLinkText'
48 ];
49
50
51 /** inline {@inheritdoc} */
52 protected $httpsSupport = true;
53
54 public function getAllowedParams(){
55 return $this->allowedParams;
56 }
57
58 public function validateUrl(Url $url)
59 {
60 return (bool) preg_match(
61 "/^https:\/\/calendly\.com\/[a-zA-Z0-9_-]+\/.*/",
62 (string) $url
63 );
64 }
65
66 public function validateCalendly($url)
67 {
68 return (bool) preg_match(
69 "/^https:\/\/calendly\.com\/[a-zA-Z0-9_-]+\/.*/",
70 (string) $url
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 $params = $this->getParams();
84
85 $parameters = array();
86
87 if (!empty($params['calendlyData']) && $params['calendlyData'] !== 'false') {
88 $parameters['calendlyData'] = 1;
89 }
90
91 if (!empty($params['hideCookieBanner']) && $params['hideCookieBanner'] !== 'false') {
92 $parameters['hide_gdpr_banner'] = 1;
93 }
94
95 if (!empty($params['hideEventTypeDetails']) && $params['hideEventTypeDetails'] !== 'false') {
96 $parameters['hide_event_type_details'] = 1;
97 }
98
99 if (!empty($params['cBackgroundColor']) && $params['cBackgroundColor'] !== 'false') {
100 $parameters['background_color'] = ltrim($params['cBackgroundColor'], '#');
101 }
102
103 if (!empty($params['cTextColor']) && $params['cTextColor'] !== 'false') {
104 $parameters['text_color'] = ltrim($params['cTextColor'], '#');
105 }
106
107 if (!empty($params['cButtonLinkColor']) && $params['cButtonLinkColor'] !== 'false') {
108 $parameters['primary_color'] = ltrim($params['cButtonLinkColor'], '#');
109 }
110
111 $query_string = http_build_query($parameters);
112
113 $src_url = $this->url.'?'.$query_string;
114
115
116 $cButtonLinkColor = !empty($params['cButtonLinkColor']) ? $params['cButtonLinkColor'] : '';
117 $cPopupButtonText = !empty($params['cPopupButtonText']) ? $params['cPopupButtonText'] : '';
118 $cPopupButtonBGColor = !empty($params['cPopupButtonBGColor']) ? $params['cPopupButtonBGColor'] : '';
119
120 $cPopupButtonTextColor = !empty($params['cPopupButtonTextColor']) ? $params['cPopupButtonTextColor'] : '';
121
122 $cPopupLinkText = !empty($params['cPopupLinkText']) ? $params['cPopupLinkText'] : '';
123
124
125 $width = isset($this->config['maxwidth']) ? $this->config['maxwidth'] : 600;
126 $height = isset($this->config['maxheight']) ? $this->config['maxheight'] : 350;
127
128 $cEmbedType = !empty($params['cEmbedType']) ? $params['cEmbedType'] : '';
129
130 // Check if the url is already converted to the embed format
131 if ($this->validateCalendly($src_url)) {
132
133 if($cEmbedType == 'inline'){
134 $html = '<script type="text/javascript" src="https://assets.calendly.com/assets/external/widget.js" async></script>
135 <link href="https://assets.calendly.com/assets/external/widget.css" rel="stylesheet">
136 <div class="calendly-inline-widget" data-url="'.esc_url($src_url).'" style="min-width:'. esc_attr( $width ).'px;height:'.esc_attr($height).'px;"></div>';
137 }
138 else if($cEmbedType == 'popup_button'){
139 $html = '<!-- Calendly badge widget begin -->
140 <link href="https://assets.calendly.com/assets/external/widget.css" rel="stylesheet">
141 <script src="https://assets.calendly.com/assets/external/widget.js" type="text/javascript" async></script>
142
143 <script type="text/javascript">window.onload = function() { Calendly.initBadgeWidget({ url: "'.$src_url.'", text: "'.esc_html( $cPopupButtonText ).'", color: "'. $cPopupButtonBGColor .'", textColor: "'.$cPopupButtonTextColor.'", branding: undefined }); }</script>';
144
145 if (class_exists('Elementor\Plugin')) {
146 if (\Elementor\Plugin::$instance->editor->is_edit_mode() && $cEmbedType === 'popup_button') {
147 $html = $html .'
148 <div class="elementor-cbutton-preview-wrapper">
149 <h4 class="cbutton-preview-text">Preview Popup Button</h4>
150 <div style="position: static" class="calendly-badge-widget">
151 <div class="calendly-badge-content" style="color: ' . $cPopupButtonTextColor . '; background: ' . $cPopupButtonBGColor . ';">' . esc_html( $cPopupButtonText ) . '</div>
152 </div>
153 </div>
154 ';
155 }
156 }
157
158 }
159 else{
160 $html = '';
161
162 }
163
164 } else {
165 $html = '';
166 }
167
168
169
170
171
172 return [
173 'type' => 'rich',
174 'provider_name' => 'Calendly',
175 'provider_url' => 'https://calendly.com',
176 'title' => 'Unknown title',
177 'html' => $html,
178 ];
179 }
180 /** inline @inheritDoc */
181 public function modifyResponse(array $response = [])
182 {
183 return $this->fakeResponse();
184 }
185 }
186