Repository navigation
Expand file tree
/
Copy pathjmvc.php
More file actions
64 lines (55 loc) · 1.62 KB
/
Copy pathjmvc.php
File metadata and controls
64 lines (55 loc) · 1.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?php
/**
* Plugin Name: JMVC
* Plugin URI: https://github.com/SnakeO/jmvc
* Description: WordPress MVC Framework - Build structured, maintainable WordPress applications
* Version: 2.0.0
* Requires at least: 6.0
* Requires PHP: 8.0
* Author: JMVC Contributors
* License: MIT
* Text Domain: jmvc
*/
declare(strict_types=1);
namespace JMVC;
// Prevent direct access
if (!defined('ABSPATH')) {
exit;
}
// Plugin constants
define('JMVC_VERSION', '2.0.0');
define('JMVC_PLUGIN_FILE', __FILE__);
define('JMVC_PLUGIN_PATH', plugin_dir_path(__FILE__));
define('JMVC_PLUGIN_URL', plugin_dir_url(__FILE__));
// Load admin classes
require_once JMVC_PLUGIN_PATH . 'admin/Admin.php';
// Initialize admin
add_action('plugins_loaded', function(): void {
Admin\Admin::init();
});
// Boot framework only if initialized in theme
add_action('init', function(): void {
if (Admin\Admin::isInitialized()) {
require_once JMVC_PLUGIN_PATH . 'system/boot.php';
}
}, 5);
// Register activation hook
register_activation_hook(__FILE__, function(): void {
// Load rewrite system and register rules
if (Admin\Admin::isInitialized()) {
require_once JMVC_PLUGIN_PATH . 'system/routing/JRewrite.php';
\JRewrite::activate();
} else {
flush_rewrite_rules();
}
});
// Register deactivation hook
register_deactivation_hook(__FILE__, function(): void {
// Clean up rewrite rules
if (file_exists(JMVC_PLUGIN_PATH . 'system/routing/JRewrite.php')) {
require_once JMVC_PLUGIN_PATH . 'system/routing/JRewrite.php';
\JRewrite::deactivate();
} else {
flush_rewrite_rules();
}
});