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