PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more / 3.8.4
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more v3.8.4
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 3 years ago GitHub.php 3 years ago GoogleDocs.php 3 years ago GoogleDrive.php 3 years ago GoogleMaps.php 3 years ago Gumroad.php 2 years ago NRKRadio.php 3 years ago OpenSea.php 3 years ago SelfHosted.php 3 years ago Twitch.php 3 years ago Wrapper.php 3 years ago Youtube.php 3 years ago index.html 7 years ago
Calendly.php
181 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 'hideCookieBanner',
39 'hideEventTypeDetails',
40 'cBackgroundColor',
41 'cTextColor',
42 'cButtonLinkColor',
43 'cPopupButtonText',
44 'cPopupButtonBGColor',
45 'cPopupButtonTextColor',
46 'cPopupLinkText'
47 ];
48
49
50 /** inline {@inheritdoc} */
51 protected $httpsSupport = true;
52
53 public function getAllowedParams(){
54 return $this->allowedParams;
55 }
56
57 public function validateUrl(Url $url)
58 {
59 return (bool) preg_match(
60 "/^https:\/\/calendly\.com\/[a-zA-Z0-9_-]+\/.*/",
61 (string) $url
62 );
63 }
64
65 public function validateCalendly($url)
66 {
67 return (bool) preg_match(
68 "/^https:\/\/calendly\.com\/[a-zA-Z0-9_-]+\/.*/",
69 (string) $url
70 );
71 }
72
73 /**
74 * This method fakes an Oembed response.
75 *
76 * @since 1.0.0
77 *
78 * @return array
79 */
80 public function fakeResponse()
81 {
82 $params = $this->getParams();
83
84 $parameters = array();
85
86 if (!empty($params['hideCookieBanner']) && $params['hideCookieBanner'] !== 'false') {
87 $parameters['hide_gdpr_banner'] = 1;
88 }
89
90 if (!empty($params['hideEventTypeDetails']) && $params['hideEventTypeDetails'] !== 'false') {
91 $parameters['hide_event_type_details'] = 1;
92 }
93
94 if (!empty($params['cBackgroundColor']) && $params['cBackgroundColor'] !== 'false') {
95 $parameters['background_color'] = ltrim($params['cBackgroundColor'], '#');
96 }
97
98 if (!empty($params['cTextColor']) && $params['cTextColor'] !== 'false') {
99 $parameters['text_color'] = ltrim($params['cTextColor'], '#');
100 }
101
102 if (!empty($params['cButtonLinkColor']) && $params['cButtonLinkColor'] !== 'false') {
103 $parameters['primary_color'] = ltrim($params['cButtonLinkColor'], '#');
104 }
105
106 $query_string = http_build_query($parameters);
107
108 $src_url = $this->url.'?'.$query_string;
109
110
111 $cButtonLinkColor = !empty($params['cButtonLinkColor']) ? $params['cButtonLinkColor'] : '';
112 $cPopupButtonText = !empty($params['cPopupButtonText']) ? $params['cPopupButtonText'] : '';
113 $cPopupButtonBGColor = !empty($params['cPopupButtonBGColor']) ? $params['cPopupButtonBGColor'] : '';
114
115 $cPopupButtonTextColor = !empty($params['cPopupButtonTextColor']) ? $params['cPopupButtonTextColor'] : '';
116
117 $cPopupLinkText = !empty($params['cPopupLinkText']) ? $params['cPopupLinkText'] : '';
118
119
120 $width = isset($this->config['maxwidth']) ? $this->config['maxwidth'] : 600;
121 $height = isset($this->config['maxheight']) ? $this->config['maxheight'] : 350;
122
123 $cEmbedType = !empty($params['cEmbedType']) ? $params['cEmbedType'] : '';
124
125 // Check if the url is already converted to the embed format
126 if ($this->validateCalendly($src_url)) {
127
128 if($cEmbedType == 'inline'){
129 $html = '<script type="text/javascript" src="https://assets.calendly.com/assets/external/widget.js" async></script>
130 <link href="https://assets.calendly.com/assets/external/widget.css" rel="stylesheet">
131 <div class="calendly-inline-widget" data-url="'.esc_url($src_url).'" style="min-width:'. esc_attr( $width ).'px;height:'.esc_attr($height).'px;"></div>';
132 }
133 else if($cEmbedType == 'popup_button'){
134 $html = '<!-- Calendly badge widget begin -->
135 <link href="https://assets.calendly.com/assets/external/widget.css" rel="stylesheet">
136 <script src="https://assets.calendly.com/assets/external/widget.js" type="text/javascript" async></script>
137
138 <script type="text/javascript">window.onload = function() { Calendly.initBadgeWidget({ url: "'.$src_url.'", text: "'.esc_html( $cPopupButtonText ).'", color: "'. $cPopupButtonBGColor .'", textColor: "'.$cPopupButtonTextColor.'", branding: undefined }); }</script>';
139
140 if (class_exists('Elementor\Plugin')) {
141 if (\Elementor\Plugin::$instance->editor->is_edit_mode() && $cEmbedType === 'popup_button') {
142 $html = $html .'
143 <div class="elementor-cbutton-preview-wrapper">
144 <h4 class="cbutton-preview-text">Preview Popup Button</h4>
145 <div style="position: static" class="calendly-badge-widget">
146 <div class="calendly-badge-content" style="color: ' . $cPopupButtonTextColor . '; background: ' . $cPopupButtonBGColor . ';">' . esc_html( $cPopupButtonText ) . '</div>
147 </div>
148 </div>
149 ';
150 }
151 }
152
153 }
154 else{
155 $html = '';
156
157 }
158
159 } else {
160 $html = '';
161 }
162
163
164
165
166
167 return [
168 'type' => 'rich',
169 'provider_name' => 'Calendly',
170 'provider_url' => 'https://calendly.com',
171 'title' => 'Unknown title',
172 'html' => $html,
173 ];
174 }
175 /** inline @inheritDoc */
176 public function modifyResponse(array $response = [])
177 {
178 return $this->fakeResponse();
179 }
180 }
181