PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more / 4.4.8
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more v4.4.8
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 Analytics 9 months ago Elementor 5 months ago Ends 6 months ago Gutenberg 5 months ago Includes 5 months ago Plugins 1 year ago Providers 5 months ago ThirdParty 9 months ago AutoLoader.php 2 years ago Compatibility.php 2 years ago Core.php 7 months ago CoreLegacy.php 9 months ago DisablerLegacy.php 2 years ago Loader.php 2 years ago MilestoneNotification.php 6 months ago RestAPI.php 5 months ago Shortcode.php 5 months ago index.html 7 years ago simple_html_dom.php 4 years ago
CoreLegacy.php
403 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 // Assets are now handled by AssetManager
169 // This section is kept for backward compatibility
170 }
171
172 }
173
174 // Add support for embeds on AMP pages
175 add_filter('pp_embed_parsed_content', ['\\EmbedPress\\AMP\\EmbedHandler', 'processParsedContent'], 10, 3);
176
177 // Add support for our embeds on Beaver Builder. Without this it only run the native embeds.
178 add_filter('fl_builder_before_render_shortcodes',
179 ['\\EmbedPress\\ThirdParty\\BeaverBuilder', 'before_render_shortcodes']);
180
181 $this->loaderInstance->run();
182 }
183
184 /**
185 * Callback called right after the plugin has been activated.
186 *
187 * @since 1.0.0
188 * @static
189 *
190 * @return void
191 */
192 public static function onPluginActivationCallback()
193 {
194 add_filter('rewrite_rules_array', ['\\EmbedPress\\DisablerLegacy', 'disableDefaultEmbedRewriteRules']);
195 flush_rewrite_rules();
196
197 // Set flag for activation redirect
198 $settings = get_option(EMBEDPRESS_PLG_NAME, []);
199 $settings['need_first_time_redirect'] = true;
200 update_option(EMBEDPRESS_PLG_NAME, $settings);
201
202 // Clear any previous redirect done flag
203 delete_option('embedpress_activation_redirect_done');
204 }
205
206 /**
207 * Callback called right after the plugin has been deactivated.
208 *
209 * @since 1.0.0
210 * @static
211 *
212 * @return void
213 */
214 public static function onPluginDeactivationCallback()
215 {
216 remove_filter('rewrite_rules_array', ['\\EmbedPress\\DisablerLegacy', 'disableDefaultEmbedRewriteRules']);
217 flush_rewrite_rules();
218 }
219
220 /**
221 * Method that retrieves all additional service providers defined in the ~<plugin_root_path>/providers.php file.
222 *
223 * @since 1.0.0
224 * @static
225 *
226 * @return array
227 */
228 public static function getAdditionalServiceProviders()
229 {
230 $additionalProvidersFilePath = EMBEDPRESS_PATH_BASE . 'providers.php';
231 if (file_exists($additionalProvidersFilePath)) {
232 include $additionalProvidersFilePath;
233 if (isset($additionalServiceProviders)) {
234 return apply_filters( 'embedpress_additional_service_providers', $additionalServiceProviders);
235 }
236 }
237
238 return apply_filters( 'embedpress_additional_service_providers', []);
239 }
240
241 /**
242 * Method that checks if an embed of a given service provider can be responsive.
243 *
244 * @since 1.0.0
245 * @static
246 *
247 * @param string $serviceProviderAlias The service's slug.
248 *
249 * @return boolean
250 */
251 public static function canServiceProviderBeResponsive($serviceProviderAlias)
252 {
253 return in_array($serviceProviderAlias, [
254 "dailymotion",
255 "kickstarter",
256 "rutube",
257 "ted",
258 "vimeo",
259 "youtube",
260 "ustream",
261 "google-docs",
262 "animatron",
263 "amcharts",
264 "on-aol-com",
265 "animoto",
266 "videojug",
267 'issuu',
268 ]);
269 }
270
271 /**
272 * Method that retrieves the plugin settings defined by the user.
273 *
274 * @since 1.0.0
275 * @static
276 *
277 * @return object
278 */
279 public static function getSettings()
280 {
281 $settings = get_option(EMBEDPRESS_PLG_NAME);
282
283 if ( ! isset($settings['enablePluginInAdmin'])) {
284 $settings['enablePluginInAdmin'] = true;
285 }
286
287 if ( ! isset($settings['enablePluginInFront'])) {
288 $settings['enablePluginInFront'] = true;
289 }
290
291 return (object)$settings;
292 }
293
294
295 /**
296 * Retrieve all registered plugins.
297 *
298 * @since 1.4.0
299 * @static
300 *
301 * @return array
302 */
303 public static function getPlugins()
304 {
305 return self::$plugins;
306 }
307
308 /**
309 * Handle links displayed below the plugin name in the WordPress Installed Plugins page.
310 *
311 * @since 1.4.0
312 * @static
313 *
314 * @return array
315 */
316 public static function handleActionLinks($links, $file)
317 {
318 $settingsLink = '<a href="' . admin_url('admin.php?page=embedpress') . '" aria-label="' . __('Open settings page',
319 'embedpress') . '">' . __('Settings', 'embedpress') . '</a>';
320
321 array_unshift($links, $settingsLink);
322 if ( !apply_filters('embedpress/is_allow_rander', false) ) {
323 $links[] = '<a href="https://wpdeveloper.com/in/upgrade-embedpress" target="_blank" class="embedpress-go-pro-action" style="color: green">'.__('Go Pro', 'embedpress').'</a>';
324 }
325 return $links;
326 }
327
328
329 /**
330 * Method that ensures the API's url are whitelisted to WordPress external requests.
331 *
332 * @since 1.4.0
333 * @static
334 *
335 * @param boolean $isAllowed
336 * @param string $host
337 * @param string $url
338 *
339 * @return boolean
340 */
341 public static function allowApiHost($isAllowed, $host, $url)
342 {
343 if ($host === EMBEDPRESS_LICENSES_API_HOST) {
344 $isAllowed = true;
345 }
346
347 return $isAllowed;
348 }
349
350 /**
351 * Add filters to configure the TinyMCE editor.
352 *
353 * @since 1.6.2
354 */
355 public function configureTinyMCE()
356 {
357 add_filter('teeny_mce_before_init', [$this, 'hookOnPaste']);
358 add_filter('tiny_mce_before_init', [$this, 'hookOnPaste']);
359 }
360
361 /**
362 * Hook the onPaste methof to the paste_preprocess config in the editor.
363 *
364 * @since 1.6.2
365 *
366 * @param array $mceInit
367 *
368 * @return array
369 */
370 public function hookOnPaste($mceInit)
371 {
372 $settings = self::getSettings();
373
374 if (isset($settings->enablePluginInAdmin) && $settings->enablePluginInAdmin) {
375 // error_log(print_r());
376 // We hook here because the onPaste is sometimes called after the content was already added to the editor.
377 // If you copy text from the editor and paste there, it will give no way to use a normal onPaste event hook
378 // to modify the input since it was already injected.
379 $mceInit['paste_preprocess'] = 'function (plugin, args) {
380 try {
381 if (typeof console !== "undefined" && console.log) {
382 console.log("TinyMCE paste_preprocess called, EmbedPress available:", typeof EmbedPress !== "undefined");
383 }
384 if (typeof EmbedPress !== "undefined" && typeof EmbedPress.onPaste === "function") {
385 EmbedPress.onPaste(plugin, args);
386 } else {
387 if (typeof console !== "undefined" && console.log) {
388 console.log("EmbedPress object or onPaste method not available");
389 }
390 }
391 } catch (error) {
392 if (typeof console !== "undefined" && console.error) {
393 console.error("EmbedPress paste_preprocess error:", error);
394 }
395 }
396 }';
397 }
398
399
400 return $mceInit;
401 }
402 }
403