PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more / 2.5.5
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more v2.5.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 / Plugins / Plugin.php
embedpress / EmbedPress / Plugins Last commit date
Html 6 years ago Plugin.php 6 years ago index.html 7 years ago
Plugin.php
299 lines
1 <?php
2
3 namespace EmbedPress\Plugins;
4
5 (defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed.");
6
7 /**
8 * Entity that represents a model to EmbedPress plugins.
9 *
10 * @package EmbedPress
11 * @author EmbedPress <help@embedpress.com>
12 * @copyright Copyright (C) 2020 WPDeveloper. All rights reserved.
13 * @license GPLv3 or later
14 * @since 1.4.0
15 * @abstract
16 */
17 abstract class Plugin
18 {
19 const VERSION = '0.0.0';
20
21 /**
22 * Method that register all EmbedPress events.
23 *
24 * @since 1.4.0
25 * @static
26 *
27 * @return void
28 */
29 public static function registerEvents()
30 {
31 // do nothing
32 }
33
34 /**
35 * Method that checks if EmbedPress is active or not.
36 *
37 * @since 1.4.0
38 * @access protected
39 * @static
40 *
41 * @return boolean
42 */
43 protected static function isEmbedPressActive()
44 {
45 return is_plugin_active(EMBEDPRESS_PLG_NAME . '/' . EMBEDPRESS_PLG_NAME . '.php');
46 }
47
48 /**
49 * Retrieve an error message based on its code.
50 *
51 * @since 1.4.0
52 * @access protected
53 * @static
54 *
55 * @param string $err The error code.
56 *
57 * @return string
58 */
59 protected static function getErrorMessage($err = '')
60 {
61 if ($err === 'ERR_MISSING_DEPENDENCY') {
62 return __('Please, <strong>install</strong> and <strong>activate <a href="https://wordpress.org/plugins/' . EMBEDPRESS_PLG_NAME . '" target="_blank" rel="noopener noreferrer">' . EMBEDPRESS . '</a></strong> plugin in order to make <em>' . EMBEDPRESS . ' - ' . static::NAME . '</em> to work.');
63 }
64
65 return $err;
66 }
67
68 /**
69 * Callback triggered by WordPress' 'admin_init' default action.
70 *
71 * @since 1.4.0
72 * @static
73 *
74 * @return void
75 */
76 public static function onLoadAdminCallback()
77 {
78 $pluginSignature = EMBEDPRESS_PLG_NAME . '-' . static::SLUG . '/' . EMBEDPRESS_PLG_NAME . '-' . static::SLUG . '.php';
79 if (is_admin() && ! self::isEmbedPressActive() && is_plugin_active($pluginSignature)) {
80 deactivate_plugins($pluginSignature);
81 } else {
82 static::registerSettings();
83 }
84 }
85
86 /**
87 * Callback triggered by WordPress' 'register_activation_hook' function.
88 *
89 * @since 1.4.0
90 * @static
91 *
92 * @return void
93 */
94 public static function onActivationCallback()
95 {
96 return true;
97 }
98
99 /**
100 * Callback triggered by WordPress' 'register_deactivation_hook' function.
101 *
102 * @since 1.4.0
103 * @static
104 *
105 * @return void
106 */
107 public static function onDeactivationCallback()
108 {
109 delete_option(EMBEDPRESS_PLG_NAME . ':' . static::SLUG);
110 }
111
112 /**
113 * Method that validates the EmbedPress plugin's settings form.
114 *
115 * @since 1.4.0
116 * @static
117 *
118 * @param array $postData The data coming from the form via POST.
119 *
120 * @return array
121 */
122 public static function validateForm($postData)
123 {
124 $pluginSlugNonce = EMBEDPRESS_PLG_NAME . ':' . static::SLUG . ':nonce';
125 if ( ! check_admin_referer($pluginSlugNonce, $pluginSlugNonce)) {
126 return;
127 }
128
129 $data = [];
130
131 $schema = static::getOptionsSchema();
132 foreach ($schema as $fieldSlug => $field) {
133 if (isset($postData[$fieldSlug])) {
134 $value = $postData[$fieldSlug];
135 } else {
136 $value = isset($field['default']) ? $field['default'] : null;
137 }
138
139 settype($value, isset($field['type']) && in_array(strtolower($field['type']),
140 ['bool', 'boolean', 'int', 'integer', 'float', 'string']) ? $field['type'] : 'string');
141
142 $data[$fieldSlug] = $value;
143 }
144 $data['license_key'] = true;
145 static::onAfterFormValidation($data);
146
147 return $data;
148 }
149
150 /**
151 * Method called right after the settings form being validated but before saving the data into DB.
152 *
153 * @since 1.4.0
154 * @static
155 *
156 * @param array Data after validation.
157 *
158 * @return void
159 */
160 public static function onAfterFormValidation(&$data)
161 {
162 // do nothing
163 }
164
165 /**
166 * Method that appends a tab in EmbedPress' Settings page to the plugin.
167 *
168 * @since 1.4.0
169 * @static
170 *
171 * @param $activeTab
172 *
173 * @return void
174 */
175 public static function renderTab($activeTab)
176 {
177 ?>
178
179 <a href="?page=<?php echo EMBEDPRESS_PLG_NAME; ?>&tab=<?php echo static::SLUG; ?>"
180 class="nav-tab<?php echo $activeTab === static::SLUG ? ' nav-tab-active' : ''; ?> "><?php echo static::NAME; ?></a>
181
182 <?php
183 }
184
185 /**
186 * Method that return the absolute path to the plugin.
187 *
188 * @since 1.4.0
189 * @static
190 *
191 * @return void
192 */
193 public static function registerSettings()
194 {
195 $identifier = EMBEDPRESS_PLG_NAME . ':' . static::SLUG;
196 register_setting($identifier, $identifier, [static::NAMESPACE_STRING, 'validateForm']);
197 add_settings_section($identifier, EMBEDPRESS . ' > ' . static::NAME . ' Settings',
198 [static::NAMESPACE_STRING, 'onAfterRegisterSettings'], $identifier);
199
200 self::registerSettingsFields();
201 }
202
203 /**
204 * Register all plugin fields to the settings page.
205 *
206 * @since 1.4.0
207 * @static
208 *
209 * @return void
210 */
211 public static function registerSettingsFields()
212 {
213 $identifier = EMBEDPRESS_PLG_NAME . ':' . static::SLUG;
214
215 $schema = static::getOptionsSchema();
216 foreach ($schema as $fieldSlug => $field) {
217 $field['slug'] = $fieldSlug;
218 if('license_key'===$fieldSlug){
219 continue;
220 }
221 add_settings_field($fieldSlug, $field['label'], [__NAMESPACE__ . '\Html\Field', 'render'], $identifier,
222 $identifier, [
223 'pluginSlug' => static::SLUG,
224 'field' => $field,
225 ]);
226 }
227 }
228
229 /**
230 * Callback called after the plugin's settings page has been registered and rendered.
231 *
232 * @since 1.4.0
233 * @static
234 *
235 * @return void
236 */
237 public static function onAfterRegisterSettings()
238 {
239 // do nothing
240 }
241
242 /**
243 * Retrieve user defined options.
244 *
245 * @since 1.4.0
246 * @static
247 *
248 * @return array
249 */
250 public static function getOptions()
251 {
252 $options = (array)get_option(EMBEDPRESS_PLG_NAME . ':' . static::SLUG);
253 if (empty($options) || (count($options) === 1 && empty($options[0]))) {
254 $options = [];
255 $schema = static::getOptionsSchema();
256 foreach ($schema as $fieldSlug => $field) {
257 $value = isset($field['default']) ? $field['default'] : "";
258
259 settype($value, isset($field['type']) && in_array(strtolower($field['type']),
260 ['bool', 'boolean', 'int', 'integer', 'float', 'string']) ? $field['type'] : 'string');
261
262 if ($fieldSlug === "license_key") {
263 $options['license'] = [
264 'key' => true,
265 'status' => "missing",
266 ];
267 } else {
268 $options[$fieldSlug] = $value;
269 }
270 }
271 }
272
273 $options['license'] = [
274 'key' => true,
275 'status' => "missing",
276 ];
277
278 return $options;
279 }
280
281 /**
282 * Handle links displayed below the plugin name in the WordPress Installed Plugins page.
283 *
284 * @since 1.4.0
285 * @static
286 *
287 * @return array
288 */
289 public static function handleActionLinks($links, $file)
290 {
291 $settingsLink = '<a href="' . admin_url('admin.php?page=' . EMBEDPRESS_PLG_NAME . '&tab=' . static::SLUG) . '" aria-label="' . __('Open settings page',
292 'embedpress-' . static::SLUG) . '">' . __('Settings', 'embedpress-' . static::SLUG) . '</a>';
293
294 array_unshift($links, $settingsLink);
295
296 return $links;
297 }
298 }
299