PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more / 4.3.1
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more v4.3.1
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 / CoreLegacy.php
embedpress / EmbedPress Last commit date
AMP 2 years ago Elementor 10 months ago Ends 10 months ago Includes 10 months ago Plugins 1 year ago Providers 10 months ago ThirdParty 10 months ago AutoLoader.php 2 years ago Compatibility.php 2 years ago Core.php 10 months ago CoreLegacy.php 10 months ago DisablerLegacy.php 2 years ago Loader.php 2 years ago RestAPI.php 1 year ago Shortcode.php 10 months ago index.html 7 years ago simple_html_dom.php 4 years ago
CoreLegacy.php
407 lines
1 <?php
2
3 namespace EmbedPress;
4
5 use EmbedPress\Ends\Back\Handler as EndHandlerAdmin;
6 use EmbedPress\Ends\Back\Settings\EmbedpressSettings;
7 use EmbedPress\Ends\Front\Handler as EndHandlerPublic;
8 use EmbedPress\Includes\Traits\Shared;
9
10 (defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed.");
11
12 /**
13 * Entity that glues together all pieces that the plugin is made of, for WordPress before 5.0.
14 *
15 * @package EmbedPress
16 * @author EmbedPress <help@embedpress.com>
17 * @copyright Copyright (C) 2021 WPDeveloper. All rights reserved.
18 * @license GPLv3 or later
19 * @since 1.0.0
20 */
21 class CoreLegacy
22 {
23 use Shared;
24 /**
25 * The name of the plugin.
26 *
27 * @since 1.0.0
28 * @access protected
29 *
30 * @var string $pluginName The name of the plugin.
31 */
32 protected $pluginName;
33
34 /**
35 * The version of the plugin.
36 *
37 * @since 1.0.0
38 * @access protected
39 *
40 * @var string $pluginVersion The version of the plugin.
41 */
42 protected $pluginVersion;
43
44 /**
45 * An instance of the plugin loader.
46 * @since 1.0.0
47 * @access protected
48 * @var Loader $pluginVersion The version of the plugin.
49 */
50 protected $loaderInstance;
51
52 /**
53 * An associative array storing all registered/active EmbedPress plugins and their namespaces.
54 *
55 * @since 1.4.0
56 * @access private
57 * @static
58 *
59 * @var array
60 */
61 private static $plugins = [];
62
63 /**
64 * Initialize the plugin and set its properties.
65 *
66 * @since 1.0.0
67 *
68 * @return void
69 */
70 public function __construct()
71 {
72 $this->pluginName = EMBEDPRESS_PLG_NAME;
73 $this->pluginVersion = EMBEDPRESS_VERSION;
74
75 $this->loaderInstance = new Loader();
76
77 add_action( 'in_admin_header', [ $this, 'remove_admin_notice' ], 99 );
78 add_action('ep_admin_notices', [$this, 'embedpress_admin_notice']);
79 add_action('ep_admin_notices', [$this, 'admin_notice']);
80
81 }
82
83 /**
84 * Method that retrieves the plugin name.
85 *
86 * @since 1.0.0
87 *
88 * @return string
89 */
90 public function getPluginName()
91 {
92 return $this->pluginName;
93 }
94
95 /**
96 * Method that retrieves the plugin version.
97 *
98 * @since 1.0.0
99 *
100 * @return string
101 */
102 public function getPluginVersion()
103 {
104 return $this->pluginVersion;
105 }
106
107 /**
108 * Method that retrieves the loader instance.
109 *
110 * @since 1.0.0
111 *
112 * @return Loader
113 */
114 public function getLoader()
115 {
116 return $this->loaderInstance;
117 }
118
119 /**
120 * Method responsible to connect all required hooks in order to make the plugin work.
121 *
122 * @since 1.0.0
123 *
124 * @return void
125 */
126 public function initialize()
127 {
128 global $wp_actions;
129
130 $this->start_plugin_tracking();
131
132 if (is_admin()) {
133 new EmbedpressSettings();
134 $plgSettings = self::getSettings();
135
136 add_action( 'init', [ $this, 'admin_notice' ] );
137
138 add_filter('plugin_action_links_embedpress/embedpress.php',
139 ['\\EmbedPress\\CoreLegacy', 'handleActionLinks'], 10, 2);
140
141 add_action('admin_enqueue_scripts', ['\\EmbedPress\\Ends\\Back\\Handler', 'enqueueStyles']);
142 add_action('wp_ajax_embedpress_notice_dismiss', ['\\EmbedPress\\Ends\\Back\\Handler', 'embedpress_notice_dismiss']);
143 add_action('init', ['\\EmbedPress\\DisablerLegacy', 'run'], 1);
144 add_action('init', [$this, 'configureTinyMCE'], 1);
145
146 $plgHandlerAdminInstance = new EndHandlerAdmin($this->getPluginName(), $this->getPluginVersion());
147
148 if ( $plgSettings->enablePluginInAdmin ) {
149 $this->loaderInstance->add_action('admin_enqueue_scripts', $plgHandlerAdminInstance, 'enqueueScripts');
150 }
151
152 $onAjaxCallbackName = "doShortcodeReceivedViaAjax";
153 $this->loaderInstance->add_action('wp_ajax_embedpress_do_ajax_request', $plgHandlerAdminInstance,
154 $onAjaxCallbackName);
155 $this->loaderInstance->add_action('wp_ajax_nopriv_embedpress_do_ajax_request', $plgHandlerAdminInstance,
156 $onAjaxCallbackName);
157
158 $this->loaderInstance->add_action('wp_ajax_embedpress_get_embed_url_info', $plgHandlerAdminInstance,
159 "getUrlInfoViaAjax");
160
161 unset($onAjaxCallbackName, $plgHandlerAdminInstance);
162 } else {
163 add_action('init', ['\\EmbedPress\\DisablerLegacy', 'run'], 1);
164
165 $plgSettings = Core::getSettings();
166
167 if (!is_admin() && $plgSettings->enablePluginInFront ) {
168 $plgHandlerPublicInstance = new EndHandlerPublic($this->getPluginName(), $this->getPluginVersion());
169
170 $this->loaderInstance->add_action('wp_enqueue_scripts', $plgHandlerPublicInstance, 'enqueueScripts');
171 $this->loaderInstance->add_action('wp_enqueue_scripts', $plgHandlerPublicInstance, 'enqueueStyles');
172
173 unset($plgHandlerPublicInstance);
174 }
175
176 }
177
178 // Add support for embeds on AMP pages
179 add_filter('pp_embed_parsed_content', ['\\EmbedPress\\AMP\\EmbedHandler', 'processParsedContent'], 10, 3);
180
181 // Add support for our embeds on Beaver Builder. Without this it only run the native embeds.
182 add_filter('fl_builder_before_render_shortcodes',
183 ['\\EmbedPress\\ThirdParty\\BeaverBuilder', 'before_render_shortcodes']);
184
185 $this->loaderInstance->run();
186 }
187
188 /**
189 * Callback called right after the plugin has been activated.
190 *
191 * @since 1.0.0
192 * @static
193 *
194 * @return void
195 */
196 public static function onPluginActivationCallback()
197 {
198 add_filter('rewrite_rules_array', ['\\EmbedPress\\DisablerLegacy', 'disableDefaultEmbedRewriteRules']);
199 flush_rewrite_rules();
200
201 // Set flag for activation redirect
202 $settings = get_option(EMBEDPRESS_PLG_NAME, []);
203 $settings['need_first_time_redirect'] = true;
204 update_option(EMBEDPRESS_PLG_NAME, $settings);
205
206 // Clear any previous redirect done flag
207 delete_option('embedpress_activation_redirect_done');
208 }
209
210 /**
211 * Callback called right after the plugin has been deactivated.
212 *
213 * @since 1.0.0
214 * @static
215 *
216 * @return void
217 */
218 public static function onPluginDeactivationCallback()
219 {
220 remove_filter('rewrite_rules_array', ['\\EmbedPress\\DisablerLegacy', 'disableDefaultEmbedRewriteRules']);
221 flush_rewrite_rules();
222 }
223
224 /**
225 * Method that retrieves all additional service providers defined in the ~<plugin_root_path>/providers.php file.
226 *
227 * @since 1.0.0
228 * @static
229 *
230 * @return array
231 */
232 public static function getAdditionalServiceProviders()
233 {
234 $additionalProvidersFilePath = EMBEDPRESS_PATH_BASE . 'providers.php';
235 if (file_exists($additionalProvidersFilePath)) {
236 include $additionalProvidersFilePath;
237 if (isset($additionalServiceProviders)) {
238 return apply_filters( 'embedpress_additional_service_providers', $additionalServiceProviders);
239 }
240 }
241
242 return apply_filters( 'embedpress_additional_service_providers', []);
243 }
244
245 /**
246 * Method that checks if an embed of a given service provider can be responsive.
247 *
248 * @since 1.0.0
249 * @static
250 *
251 * @param string $serviceProviderAlias The service's slug.
252 *
253 * @return boolean
254 */
255 public static function canServiceProviderBeResponsive($serviceProviderAlias)
256 {
257 return in_array($serviceProviderAlias, [
258 "dailymotion",
259 "kickstarter",
260 "rutube",
261 "ted",
262 "vimeo",
263 "youtube",
264 "ustream",
265 "google-docs",
266 "animatron",
267 "amcharts",
268 "on-aol-com",
269 "animoto",
270 "videojug",
271 'issuu',
272 ]);
273 }
274
275 /**
276 * Method that retrieves the plugin settings defined by the user.
277 *
278 * @since 1.0.0
279 * @static
280 *
281 * @return object
282 */
283 public static function getSettings()
284 {
285 $settings = get_option(EMBEDPRESS_PLG_NAME);
286
287 if ( ! isset($settings['enablePluginInAdmin'])) {
288 $settings['enablePluginInAdmin'] = true;
289 }
290
291 if ( ! isset($settings['enablePluginInFront'])) {
292 $settings['enablePluginInFront'] = true;
293 }
294
295 return (object)$settings;
296 }
297
298
299 /**
300 * Retrieve all registered plugins.
301 *
302 * @since 1.4.0
303 * @static
304 *
305 * @return array
306 */
307 public static function getPlugins()
308 {
309 return self::$plugins;
310 }
311
312 /**
313 * Handle links displayed below the plugin name in the WordPress Installed Plugins page.
314 *
315 * @since 1.4.0
316 * @static
317 *
318 * @return array
319 */
320 public static function handleActionLinks($links, $file)
321 {
322 $settingsLink = '<a href="' . admin_url('admin.php?page=embedpress') . '" aria-label="' . __('Open settings page',
323 'embedpress') . '">' . __('Settings', 'embedpress') . '</a>';
324
325 array_unshift($links, $settingsLink);
326 if ( !apply_filters('embedpress/is_allow_rander', false) ) {
327 $links[] = '<a href="https://wpdeveloper.com/in/upgrade-embedpress" target="_blank" class="embedpress-go-pro-action" style="color: green">'.__('Go Pro', 'embedpress').'</a>';
328 }
329 return $links;
330 }
331
332
333 /**
334 * Method that ensures the API's url are whitelisted to WordPress external requests.
335 *
336 * @since 1.4.0
337 * @static
338 *
339 * @param boolean $isAllowed
340 * @param string $host
341 * @param string $url
342 *
343 * @return boolean
344 */
345 public static function allowApiHost($isAllowed, $host, $url)
346 {
347 if ($host === EMBEDPRESS_LICENSES_API_HOST) {
348 $isAllowed = true;
349 }
350
351 return $isAllowed;
352 }
353
354 /**
355 * Add filters to configure the TinyMCE editor.
356 *
357 * @since 1.6.2
358 */
359 public function configureTinyMCE()
360 {
361 add_filter('teeny_mce_before_init', [$this, 'hookOnPaste']);
362 add_filter('tiny_mce_before_init', [$this, 'hookOnPaste']);
363 }
364
365 /**
366 * Hook the onPaste methof to the paste_preprocess config in the editor.
367 *
368 * @since 1.6.2
369 *
370 * @param array $mceInit
371 *
372 * @return array
373 */
374 public function hookOnPaste($mceInit)
375 {
376 $settings = self::getSettings();
377
378 if (isset($settings->enablePluginInAdmin) && $settings->enablePluginInAdmin) {
379 // error_log(print_r());
380 // We hook here because the onPaste is sometimes called after the content was already added to the editor.
381 // If you copy text from the editor and paste there, it will give no way to use a normal onPaste event hook
382 // to modify the input since it was already injected.
383 $mceInit['paste_preprocess'] = 'function (plugin, args) {
384 try {
385 if (typeof console !== "undefined" && console.log) {
386 console.log("TinyMCE paste_preprocess called, EmbedPress available:", typeof EmbedPress !== "undefined");
387 }
388 if (typeof EmbedPress !== "undefined" && typeof EmbedPress.onPaste === "function") {
389 EmbedPress.onPaste(plugin, args);
390 } else {
391 if (typeof console !== "undefined" && console.log) {
392 console.log("EmbedPress object or onPaste method not available");
393 }
394 }
395 } catch (error) {
396 if (typeof console !== "undefined" && console.error) {
397 console.error("EmbedPress paste_preprocess error:", error);
398 }
399 }
400 }';
401 }
402
403
404 return $mceInit;
405 }
406 }
407