PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more / 1.6.0
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more v1.6.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 / 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
346 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 Open Source Training, LLC. 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
139 $plgHandlerAdminInstance = new EndHandlerAdmin($this->getPluginName(), $this->getPluginVersion());
140
141 if ((bool)$plgSettings->enablePluginInAdmin) {
142 $this->loaderInstance->add_action('admin_enqueue_scripts', $plgHandlerAdminInstance, 'enqueueScripts');
143 }
144
145 $onAjaxCallbackName = "doShortcodeReceivedViaAjax";
146 $this->loaderInstance->add_action('wp_ajax_embedpress_do_ajax_request', $plgHandlerAdminInstance, $onAjaxCallbackName);
147 $this->loaderInstance->add_action('wp_ajax_nopriv_embedpress_do_ajax_request', $plgHandlerAdminInstance, $onAjaxCallbackName);
148
149 $this->loaderInstance->add_action('wp_ajax_embedpress_get_embed_url_info', $plgHandlerAdminInstance, "getUrlInfoViaAjax");
150
151 unset($onAjaxCallbackName, $plgHandlerAdminInstance);
152 } else {
153 add_action('init', array('\EmbedPress\Disabler', 'run'), 1);
154
155 $plgHandlerPublicInstance = new EndHandlerPublic($this->getPluginName(), $this->getPluginVersion());
156
157 $enqueueScriptsHookName = "wp_enqueue_scripts";
158 $this->loaderInstance->add_action($enqueueScriptsHookName, $plgHandlerPublicInstance, 'enqueueScripts');
159 $this->loaderInstance->add_action($enqueueScriptsHookName, $plgHandlerPublicInstance, 'enqueueStyles');
160
161 unset($enqueueScriptsHookName, $plgHandlerPublicInstance);
162 }
163
164 $this->loaderInstance->run();
165 }
166
167 /**
168 * Callback called right after the plugin has been activated.
169 *
170 * @since 1.0.0
171 * @static
172 *
173 * @return void
174 */
175 public static function onPluginActivationCallback()
176 {
177 add_filter('rewrite_rules_array', array('\EmbedPress\Disabler', 'disableDefaultEmbedRewriteRules'));
178 flush_rewrite_rules();
179 }
180
181 /**
182 * Callback called right after the plugin has been deactivated.
183 *
184 * @since 1.0.0
185 * @static
186 *
187 * @return void
188 */
189 public static function onPluginDeactivationCallback()
190 {
191 remove_filter('rewrite_rules_array', array('\EmbedPress\Disabler', 'disableDefaultEmbedRewriteRules'));
192 flush_rewrite_rules();
193 }
194
195 /**
196 * Method that retrieves all additional service providers defined in the ~<plugin_root_path>/providers.php file.
197 *
198 * @since 1.0.0
199 * @static
200 *
201 * @return array
202 */
203 public static function getAdditionalServiceProviders()
204 {
205 $additionalProvidersFilePath = EMBEDPRESS_PATH_BASE .'providers.php';
206 if (file_exists($additionalProvidersFilePath)) {
207 include $additionalProvidersFilePath;
208
209 if (isset($additionalServiceProviders)) {
210 return $additionalServiceProviders;
211 }
212 }
213
214 return array();
215 }
216
217 /**
218 * Method that checks if an embed of a given service provider can be responsive.
219 *
220 * @since 1.0.0
221 * @static
222 *
223 * @param string $serviceProviderAlias The service's slug.
224 * @return boolean
225 */
226 public static function canServiceProviderBeResponsive($serviceProviderAlias)
227 {
228 return in_array($serviceProviderAlias, array("dailymotion", "kickstarter", "rutube", "ted", "vimeo", "youtube", "ustream", "google-docs", "animatron", "amcharts", "on-aol-com", "animoto", "videojug"));
229 }
230
231 /**
232 * Method that retrieves the plugin settings defined by the user.
233 *
234 * @since 1.0.0
235 * @static
236 *
237 * @return object
238 */
239 public static function getSettings()
240 {
241 $settings = get_option(EMBEDPRESS_PLG_NAME);
242
243 if (!isset($settings['enablePluginInAdmin'])) {
244 $settings['enablePluginInAdmin'] = true;
245 }
246
247 if (!isset($settings['enablePluginInFront'])) {
248 $settings['enablePluginInFront'] = true;
249 }
250
251 return (object)$settings;
252 }
253
254 /**
255 * Method that register an EmbedPress plugin.
256 *
257 * @since 1.4.0
258 * @static
259 *
260 * @param array $pluginMeta Associative array containing plugin's name, slug and namespace
261 * @return void
262 */
263 public static function registerPlugin($pluginMeta)
264 {
265 $pluginMeta = json_decode(json_encode($pluginMeta));
266
267 if (empty($pluginMeta->name) || empty($pluginMeta->slug) || empty($pluginMeta->namespace)) {
268 return;
269 }
270
271 if (!isset(self::$plugins[$pluginMeta->slug])) {
272 AutoLoader::register($pluginMeta->namespace, WP_PLUGIN_DIR .'/'. EMBEDPRESS_PLG_NAME .'-'. $pluginMeta->slug .'/'. $pluginMeta->name);
273
274 $plugin = "{$pluginMeta->namespace}\Plugin";
275 if (\defined("{$plugin}::SLUG") && $plugin::SLUG !== null) {
276 self::$plugins[$pluginMeta->slug] = $pluginMeta->namespace;
277
278 $bsFilePath = $plugin::PATH . EMBEDPRESS_PLG_NAME .'-'. $plugin::SLUG .'.php';
279
280 register_activation_hook($bsFilePath, array($plugin::NAMESPACE_STRING, 'onActivationCallback'));
281 register_deactivation_hook($bsFilePath, array($plugin::NAMESPACE_STRING, 'onDeactivationCallback'));
282
283 add_action('admin_init', array($plugin, 'onLoadAdminCallback'));
284
285 add_action(EMBEDPRESS_PLG_NAME .':'. $plugin::SLUG .':settings:register', array($plugin, 'registerSettings'));
286 add_action(EMBEDPRESS_PLG_NAME .':settings:render:tab', array($plugin, 'renderTab'));
287
288 add_filter('plugin_action_links_embedpress-'. $plugin::SLUG .'/embedpress-'. $plugin::SLUG .'.php', array($plugin, 'handleActionLinks'), 10, 2);
289
290 $plugin::registerEvents();
291 }
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', 'embedpress') .'">'. __('Settings', 'embedpress') .'</a>';
319
320 array_unshift($links, $settingsLink);
321
322 return $links;
323 }
324
325 /**
326 * Method that ensures the API's url are whitelisted to WordPress external requests.
327 *
328 * @since 1.4.0
329 * @static
330 *
331 * @param boolean $isAllowed
332 * @param string $host
333 * @param string $url
334 *
335 * @return boolean
336 */
337 public static function allowApiHost($isAllowed, $host, $url)
338 {
339 if ($host === EMBEDPRESS_LICENSES_API_HOST) {
340 $isAllowed = true;
341 }
342
343 return $isAllowed;
344 }
345 }
346