$module_class ) { if ( ! array_key_exists( $module_slug, $this->registered_modules ) ) { $this->registered_modules[ $module_slug ] = $module_class; } } } /** * [get_registeredregistered_modules description] * @param array $modules [description] * @return [type] [description] */ public function get_registered_modules() { return $this->registered_modules; } /** * Initialize modules on aproppriate AJAX or on module page * * @return [type] [description] */ public function init_module() { if ( wp_doing_ajax() ) { $this->maybe_load_module_on_ajax(); } else { $this->maybe_load_module(); } } /** * Maybe load on ajax request * * @return [type] [description] */ public function maybe_load_module_on_ajax() { $action = ! empty( $_REQUEST['action'] ) ? $_REQUEST['action'] : false; if ( ! $action ) { return; } $parts = explode( '/', $action ); if ( empty( $parts[1] ) || Dashboard::get_instance()->dashboard_slug !== $parts[0] ) { return; } $module = $parts[1]; $this->load_module( $module ); } /** * Maybe load on regular request * * @return [type] [description] */ public function maybe_load_module() { if ( ! Dashboard::get_instance()->is_dashboard_page() ) { return; } $module = Dashboard::get_instance()->get_subpage(); $this->load_module( $module ); } /** * Load module by slug * * @param [type] $module [description] * @return [type] [description] */ public function load_module( $module ) { if ( ! isset( $this->registered_modules[ $module ] ) ) { return; } $class_name = $this->registered_modules[ $module ]; return new $class_name(); } }