|
30 | 30 | */ |
31 | 31 |
|
32 | 32 | /** |
33 | | - * Create an instance of the class |
34 | | - * |
35 | | - * @since 1.0 |
36 | | - * @uses apply_filters() to allow changing of the filename without hacking |
37 | | - * @return Functionality_Plugin |
| 33 | + * Enable autoloading of plugin classes |
| 34 | + * @param $class_name |
38 | 35 | */ |
39 | | -function get_functionality_plugin() { |
40 | | - static $plugin; |
| 36 | +function functionality_autoload( $class_name ) { |
41 | 37 |
|
42 | | - if ( ! isset( $plugin ) ) { |
43 | | - require_once dirname( __FILE__ ) . '/class-functionality-plugin.php'; |
44 | | - $filename = apply_filters( 'functionality_plugin_filename', 'functions.php' ); |
45 | | - $plugin = new Functionality_Plugin( $filename ); |
| 38 | + /* Only autoload classes from this plugin */ |
| 39 | + if ( 'Functionality' !== substr( $class_name, 0, 13 ) ) { |
| 40 | + return; |
46 | 41 | } |
47 | 42 |
|
48 | | - return $plugin; |
49 | | -} |
50 | | - |
51 | | -/** |
52 | | - * Add a link to edit the functionality plugin |
53 | | - * to the Plugins admin menu for easy access |
54 | | - * |
55 | | - * @since 1.0 |
56 | | - * @uses add_plugins_page() To register the new submenu page |
57 | | - */ |
58 | | -function functionality_plugin_admin_menu() { |
59 | | - $functionality = get_functionality_plugin(); |
60 | | - $plugin_file = $functionality->get_plugin_filename(); |
| 43 | + /* Remove namespace from class name */ |
| 44 | + $class_file = str_replace( 'Functionality_', '', $class_name ); |
61 | 45 |
|
62 | | - add_plugins_page( |
63 | | - __( 'Edit Functions', 'functionality' ), |
64 | | - __( 'Edit Functions', 'functionality' ), |
65 | | - 'edit_plugins', |
66 | | - add_query_arg( 'file', $plugin_file, 'plugin-editor.php' ) |
67 | | - ); |
68 | | -} |
| 46 | + /* Convert class name format to file name format */ |
| 47 | + $class_file = strtolower( $class_file ); |
| 48 | + $class_file = str_replace( '_', '-', $class_file ); |
69 | 49 |
|
70 | | -add_action( 'admin_menu', 'functionality_plugin_admin_menu' ); |
71 | 50 |
|
72 | | -/** |
73 | | - * Callback runs when this plugin is activated |
74 | | - * |
75 | | - * @since 1.1 |
76 | | - */ |
77 | | -function functionality_plugin_activate() { |
78 | | - add_option( 'functionality_plugin_activated', true ); |
| 51 | + /* Load the class */ |
| 52 | + require_once dirname( __FILE__ ) . "/php/class-{$class_file}.php"; |
79 | 53 | } |
80 | 54 |
|
81 | | -register_activation_hook( __FILE__, 'functionality_plugin_activate' ); |
| 55 | +spl_autoload_register( 'functionality_autoload' ); |
| 56 | + |
82 | 57 |
|
83 | 58 | /** |
84 | | - * Create and activate the functionality plugin |
85 | | - * after this plugin is activated |
| 59 | + * Create an instance of the class |
86 | 60 | * |
87 | | - * @since 1.1 |
88 | | - * @uses activate_plugin() to activate the functionality plugin |
| 61 | + * @since 1.0 |
| 62 | + * @uses apply_filters() to allow changing of the filename without hacking |
| 63 | + * @return Functionality_Controller |
89 | 64 | */ |
90 | | -function create_functionality_plugin() { |
91 | | - |
92 | | - /* Check if this plugin has just been activated */ |
93 | | - if ( ! get_option( 'functionality_plugin_activated', false ) ) { |
94 | | - return; |
95 | | - } |
96 | | - |
97 | | - delete_option( 'functionality_plugin_activated' ); |
98 | | - |
99 | | - $functionality = get_functionality_plugin(); |
| 65 | +function functionality() { |
| 66 | + static $controller; |
100 | 67 |
|
101 | | - /* Create the plugin */ |
102 | | - $functionality->create_plugin(); |
103 | | - |
104 | | - /* Activate the plugin */ |
105 | | - $plugin = $functionality->get_plugin_filename(); |
106 | | - |
107 | | - if ( ! function_exists( 'activate_plugin' ) ) { |
108 | | - require_once ABSPATH . '/wp-admin/includes/plugin.php'; |
| 68 | + if ( ! isset( $controller ) ) { |
| 69 | + $controller = new Functionality_Controller(); |
109 | 70 | } |
110 | 71 |
|
111 | | - activate_plugin( $plugin ); |
112 | | -} |
113 | | - |
114 | | -add_action( 'init', 'create_functionality_plugin' ); |
115 | | - |
116 | | -/** |
117 | | - * Load the plugin textdomain |
118 | | - * |
119 | | - * @since 1.1 |
120 | | - */ |
121 | | -function load_functionality_textdomain() { |
122 | | - load_plugin_textdomain( 'functionality', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' ); |
| 72 | + return $controller; |
123 | 73 | } |
124 | 74 |
|
125 | | -add_action( 'plugins_loaded', 'load_functionality_textdomain' ); |
| 75 | +functionality()->run(); |
0 commit comments