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