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