PluginProbe
Cooked – Recipe Management / 1.8.8
Cooked – Recipe Management v1.8.8
1.16.0 1.15.0 trunk 1.10.0 1.11.0 1.11.1 1.11.2 1.11.3 1.11.4 1.12.0 1.13.0 1.14.0 1.7.10 1.7.11 1.7.12 1.7.13 1.7.15.1 1.7.15.3 1.7.15.4 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 All 36 releases
cooked / cooked.php

cooked.php in Cooked – Recipe Management 1.8.8, at cooked.php

486 lines 14.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /*
4 Plugin Name: Cooked - Recipe Management
5 Plugin URI: https://wordpress.org/plugins/cooked/
6 Description: A recipe plugin for WordPress.
7 Author: Gora Tech
8 Author URI: https://goratech.dev
9 Version: 1.8.8
10 Text Domain: cooked
11 Domain Path: languages
12 License: GPL2
13
14 Cooked is free software: you can redistribute it and/or modify
15 it under the terms of the GNU General Public License as published by
16 the Free Software Foundation, either version 2 of the License, or
17 any later version.
18
19 Cooked is distributed in the hope that it will be useful,
20 but WITHOUT ANY WARRANTY; without even the implied warranty of
21 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 GNU General Public License for more details.
23
24 You should have received a copy of the GNU General Public License
25 along with Cooked. If not, see http://www.gnu.org/licenses/.
26 */
27
28 // Exit if accessed directly.
29 if ( ! defined( 'ABSPATH' ) ) exit;
30
31 require_once __DIR__ . '/vendor/autoload.php';
32
33 define( 'COOKED_VERSION', '1.8.8' );
34 define( 'COOKED_DEV', false );
35
36 if ( ! class_exists( 'Cooked_Plugin' ) ) :
37
38 /**
39 * Cooked_Plugin Class.
40 *
41 * @since 1.0.0
42 */
43 final class Cooked_Plugin {
44
45 /**
46 * @var Cooked_Plugin
47 * @since 1.0.0
48 */
49 private static $instance;
50
51 /**
52 * Cooked Roles Object.
53 *
54 * @var object|Cooked_Roles
55 * @since 1.0.0
56 */
57 public $roles;
58
59 /**
60 * Cooked Admin Menus Object.
61 *
62 * @var object|Cooked_Admin_Menus
63 * @since 1.0.0
64 */
65 public $admin_menus;
66
67 /**
68 * Cooked Admin Enqueues Object.
69 *
70 * @var object|Cooked_Admin_Enqueues
71 * @since 1.0.0
72 */
73 public $admin_enqueues;
74
75 /**
76 * Cooked Enqueues Object.
77 *
78 * @var object|Cooked_Enqueues
79 * @since 1.0.0
80 */
81 public $enqueues;
82
83 /**
84 * Cooked Settings Object.
85 *
86 * @var object|Cooked_Settings
87 * @since 1.0.0
88 */
89 public $admin_settings;
90
91 /**
92 * Cooked Migration Object.
93 *
94 * @var object|Cooked_Migration
95 * @since 1.0.0
96 */
97 public $migration;
98
99 /**
100 * Cooked Post Types Object.
101 *
102 * @var object|Cooked_Post_Types
103 * @since 1.0.0
104 */
105 public $post_types;
106
107 /**
108 * Cooked Recipe Meta Object.
109 *
110 * @var object|Cooked_Recipe_Meta
111 * @since 1.0.0
112 */
113 public $recipe_meta;
114
115 /**
116 * Cooked Measurements Object.
117 *
118 * @var object|Cooked_Measurements
119 * @since 1.0.0
120 */
121 public $measurements;
122
123 /**
124 * Cooked Users Object.
125 *
126 * @var object|Cooked_Users
127 * @since 1.0.0
128 */
129 public $users;
130
131 /**
132 * Cooked Recipes Object.
133 *
134 * @var object|Cooked_Recipes
135 * @since 1.0.0
136 */
137 public $recipes;
138
139 /**
140 * Cooked Shortcodes Object.
141 *
142 * @var object|Cooked_Shortcodes
143 * @since 1.0.0
144 */
145 public $shortcodes;
146
147 /**
148 * Cooked Ajax Object.
149 *
150 * @var object|Cooked_Ajax
151 * @since 1.0.0
152 */
153 public $ajax;
154
155 /**
156 * Cooked Functions Object.
157 *
158 * @var object|Cooked_Functions
159 * @since 1.0.0
160 */
161 public $functions;
162
163 /**
164 * Cooked Widgets Object.
165 *
166 * @var object|Cooked_Widgets
167 * @since 1.0.0
168 */
169 public $widget;
170
171 /**
172 * Cooked Gutenberg Object.
173 *
174 * @var object|Cooked_Gutenberg
175 * @since 1.0.0
176 */
177 public $gutenberg;
178
179 /**
180 * Cooked Elementor Object.
181 *
182 * @var object|Cooked_Elementor
183 * @since 1.0.0
184 */
185 public $elementor;
186
187 /**
188 * Cooked Rank Math SEO Object.
189 *
190 * @var object|Cooked_RankMathSEO
191 * @since 1.0.0
192 */
193 public $rankmathseo;
194
195 /**
196 * Cooked Yoast SEO Object.
197 *
198 * @var object|Cooked_YoastSEO
199 * @since 1.0.0
200 */
201 public $yoastseo;
202
203 /**
204 * Main Cooked_Plugin Instance.
205 *
206 * Insures that only one instance of Cooked_Plugin exists in memory at any one
207 * time. Also prevents needing to define globals everywhere.
208 *
209 * @since 1.0.0
210 * @static
211 * @staticvar array $instance
212 * @uses Cooked_Plugin::setup_constants() Setup the constants needed.
213 * @uses Cooked_Plugin::includes() Include the required files.
214 * @uses Cooked_Plugin::load_textdomain() load the language files.
215 * @see Cooked()
216 * @return object|Cooked_Plugin
217 */
218 public static function instance() {
219 if ( ! isset( self::$instance ) && ! ( self::$instance instanceof Cooked_Plugin ) ) {
220 self::$instance = new Cooked_Plugin;
221 self::$instance->setup_constants();
222
223 add_action( 'plugins_loaded', [self::$instance, 'load_textdomain'] );
224
225 self::$instance->includes();
226 self::$instance->roles = new Cooked_Roles();
227 self::$instance->admin_menus = new Cooked_Admin_Menus();
228
229 if (is_admin()) {
230 self::$instance->admin_enqueues = new Cooked_Admin_Enqueues();
231 } else {
232 self::$instance->enqueues = new Cooked_Enqueues();
233 }
234
235 self::$instance->admin_settings = new Cooked_Settings();
236 self::$instance->migration = new Cooked_Migration();
237 self::$instance->post_types = new Cooked_Post_Types();
238 self::$instance->recipe_meta = new Cooked_Recipe_Meta();
239 self::$instance->recipe_meta = new Cooked_Measurements();
240 self::$instance->users = new Cooked_Users();
241 self::$instance->recipes = new Cooked_Recipes();
242 self::$instance->shortcodes = new Cooked_Shortcodes();
243 self::$instance->ajax = new Cooked_Ajax();
244 self::$instance->functions = new Cooked_Functions();
245 self::$instance->widget = new Cooked_Widgets();
246 self::$instance->gutenberg = new Cooked_Gutenberg();
247 self::$instance->elementor = new Cooked_Elementor();
248 self::$instance->extra = new Cooked_Plugin_Extra();
249
250 self::$instance->module_setup();
251
252 add_action( 'plugins_loaded', [self::$instance, 'initialize_plugin_support'], 10 );
253 }
254
255 return self::$instance;
256 }
257
258 private function module_setup() {
259 // Look for Cooked Modules
260 $modules = file_exists( COOKED_DIR . 'modules' ) ? scandir( COOKED_DIR . 'modules' ) : false;
261 if ($modules):
262 foreach ($modules as $module_name):
263 if ($module_name !== '.' && $module_name !== '..'):
264 if ( file_exists( COOKED_DIR . 'modules/' . esc_attr( $module_name ) . '/' . esc_attr( $module_name ) . '.php' ) ):
265 require_once COOKED_DIR . 'modules/' . esc_attr( $module_name ) . '/' . esc_attr( $module_name ) . '.php';
266 endif;
267 endif;
268 endforeach;
269 endif;
270
271 // Look for Cooked Modules in Parent Theme
272 $parent_theme_folder = trailingslashit( get_template_directory() );
273 $modules = file_exists( $parent_theme_folder . 'cooked-modules' ) ? scandir( $parent_theme_folder . 'cooked-modules' ) : false;
274 if ($modules):
275 foreach ($modules as $module_name):
276 if ($module_name !== '.' && $module_name !== '..'):
277 if ( file_exists( $parent_theme_folder . 'cooked-modules/' . esc_attr( $module_name ) . '/' . esc_attr( $module_name ) . '.php' ) ):
278 require_once $parent_theme_folder . 'cooked-modules/' . esc_attr( $module_name ) . '/' . esc_attr( $module_name ) . '.php';
279 endif;
280 endif;
281 endforeach;
282 endif;
283
284 // Look for Cooked Modules in Child Theme (if one is active)
285 $child_theme_folder = trailingslashit( get_stylesheet_directory() );
286 if ($child_theme_folder != $parent_theme_folder):
287 $modules = file_exists( $child_theme_folder . 'cooked-modules' ) ? scandir( $child_theme_folder . 'cooked-modules' ) : false;
288 if ($modules):
289 foreach ($modules as $module_name):
290 if ($module_name !== '.' && $module_name !== '..'):
291 if ( file_exists( $child_theme_folder . 'cooked-modules/' . esc_attr( $module_name ) . '/' . esc_attr( $module_name ) . '.php' ) ):
292 require_once $child_theme_folder . 'cooked-modules/' . esc_attr( $module_name ) . '/' . esc_attr( $module_name ) . '.php';
293 endif;
294 endif;
295 endforeach;
296 endif;
297 endif;
298 }
299
300 public function initialize_plugin_support() {
301 if (in_array('wordpress-seo/wp-seo.php', apply_filters('active_plugins', get_option('active_plugins')))) {
302 require_once COOKED_DIR . 'includes/class.cooked-yoastseo.php';
303 self::$instance->yoastseo = new Cooked_YoastSEO();
304 }
305
306 if (in_array('seo-by-rank-math/rank-math.php', apply_filters('active_plugins', get_option('active_plugins')))) {
307 require_once COOKED_DIR . 'includes/class.cooked-rankmathseo.php';
308 self::$instance->rankmathseo = new Cooked_RankMathSEO();
309 }
310 }
311
312 /**
313 * Throw error on object clone.
314 *
315 * The whole idea of the singleton design pattern is that there is a single
316 * object therefore, we don't want the object to be cloned.
317 *
318 * @since 1.0.0
319 * @access protected
320 * @return void
321 */
322 public function __clone() {
323 // Nope, can't do that.
324 return false;
325 }
326
327 /**
328 * Disable unserializing of the class.
329 *
330 * @since 1.0.0
331 * @access protected
332 * @return void
333 */
334 public function __wakeup() {
335 // Nope, can't do that either.
336 return false;
337 }
338
339 /**
340 * Setup plugin constants.
341 *
342 * @access private
343 * @since 1.0.0
344 * @return void
345 */
346 private function setup_constants() {
347 // Plugin Folder Path.
348 if ( ! defined( 'COOKED_DIR' ) ) {
349 define( 'COOKED_DIR', plugin_dir_path( __FILE__ ) );
350 }
351
352 // Plugin Folder Name.
353 if ( ! defined( 'COOKED_FOLDER' ) ) {
354 $foldername = untrailingslashit( str_replace( 'cooked.php', '', plugin_basename( __FILE__ ) ) );
355 define( 'COOKED_FOLDER', $foldername );
356 }
357
358 // Plugin Root File.
359 if ( ! defined( 'COOKED_PLUGIN_FILE' ) ) {
360 define( 'COOKED_PLUGIN_FILE', __FILE__ );
361 }
362
363 // Plugin Folder URL.
364 if ( ! defined( 'COOKED_URL' ) ) {
365 define( 'COOKED_URL', plugin_dir_url( __FILE__ ) );
366 }
367
368 // WordPress Ajax URL.
369 if ( ! defined( 'COOKED_AJAX_URL' ) ) {
370 define( 'COOKED_AJAX_URL', admin_url('admin-ajax.php') );
371 }
372
373 // Make sure CAL_GREGORIAN is defined.
374 if ( ! defined( 'CAL_GREGORIAN' ) ) {
375 define( 'CAL_GREGORIAN', 1 );
376 }
377
378 // Time Format
379 if ( ! defined( 'COOKED_TIME_FORMAT' ) ) {
380 define( 'COOKED_TIME_FORMAT', get_option('time_format','g:ia') );
381 }
382
383 // Date Format
384 if ( ! defined( 'COOKED_DATE_FORMAT' ) ) {
385 define( 'COOKED_DATE_FORMAT', get_option('date_format','F j, Y') );
386 }
387 }
388
389 /**
390 * Include required files.
391 *
392 * @access private
393 * @since 1.0.0
394 * @return void
395 */
396 private function includes() {
397 require_once COOKED_DIR . 'includes/class.cooked-users.php';
398 require_once COOKED_DIR . 'includes/class.cooked-roles.php';
399 require_once COOKED_DIR . 'includes/class.cooked-taxonomies.php';
400 require_once COOKED_DIR . 'includes/class.cooked-post-types.php';
401 require_once COOKED_DIR . 'includes/class.cooked-seo.php';
402 require_once COOKED_DIR . 'includes/class.cooked-recipes.php';
403 require_once COOKED_DIR . 'includes/class.cooked-recipe-meta.php';
404 require_once COOKED_DIR . 'includes/class.cooked-shortcodes.php';
405 require_once COOKED_DIR . 'includes/class.cooked-measurements.php';
406 require_once COOKED_DIR . 'includes/class.cooked-admin-enqueues.php';
407 require_once COOKED_DIR . 'includes/class.cooked-enqueues.php';
408 require_once COOKED_DIR . 'includes/class.cooked-admin-menus.php';
409 require_once COOKED_DIR . 'includes/class.cooked-settings.php';
410 require_once COOKED_DIR . 'includes/class.cooked-migration.php';
411 require_once COOKED_DIR . 'includes/class.cooked-ajax.php';
412 require_once COOKED_DIR . 'includes/class.cooked-functions.php';
413 require_once COOKED_DIR . 'includes/class.cooked-widgets.php';
414 require_once COOKED_DIR . 'includes/class.cooked-gutenberg.php';
415 require_once COOKED_DIR . 'includes/class.cooked-elementor.php';
416 require_once COOKED_DIR . 'includes/class.cooked-plugin-extra.php';
417 }
418
419 /**
420 * Loads the plugin language files.
421 *
422 * @access public
423 * @since 1.0.0
424 * @return void
425 */
426 public function load_textdomain() {
427 /*
428 * When translating Cooked, be sure to move your language file into the proper location:
429 *
430 * - wp-content/languages/plugins/cooked
431 *
432 * If you do not move custom language files here, they will be lost when updating Cooked. Boxy Studio
433 * recommends Loco Translate for easy translations: https://boxystudio.ticksy.com/article/3235/
434 */
435
436 // Set filter for plugin's languages directory.
437 $cooked_lang_dir = apply_filters( 'cooked_languages_directory', COOKED_DIR . 'languages/' );
438
439 // Traditional WordPress plugin locale filter.
440 $locale = apply_filters( 'plugin_locale', get_locale(), 'cooked' );
441 $mofile = sprintf( '%1$s-%2$s.mo', 'cooked', $locale );
442
443 // Look in wp-content/languages/plugins/cooked
444 $lang_file_ext = WP_LANG_DIR . '/plugins/cooked/' . $mofile;
445
446 if ( file_exists( $lang_file_ext ) ) {
447 // Load the externally located language files.
448 load_textdomain( 'cooked', $lang_file_ext );
449 } else {
450 // Load the default language files.
451 load_plugin_textdomain( 'cooked', false, COOKED_FOLDER . '/languages' );
452 }
453 }
454 }
455
456 endif; // End if class_exists check.
457
458 // Uninstall Hook
459 register_uninstall_hook( __FILE__, 'cooked_uninstall' );
460 function cooked_uninstall() {
461 Cooked_Roles::remove_caps();
462 Cooked_Roles::remove_roles();
463 flush_rewrite_rules();
464 }
465
466 /**
467 * The main function for that returns Cooked_Plugin
468 *
469 * The main function responsible for returning the Cooked_Plugin
470 * Instance to functions everywhere.
471 *
472 * Use this function like you would a global variable, except without needing
473 * to declare the global.
474 *
475 * Example: <?php $cooked = Cooked(); ?>
476 *
477 * @since 1.0.0
478 * @return object|Cooked_Plugin
479 */
480 function Cooked() {
481 return Cooked_Plugin::instance();
482 }
483
484 // Let's get cooking!
485 $CookedPlugin = Cooked();
486