is_displaying() ) { add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_assets' ) ); } } public function enqueue_assets() { } public function is_displaying() { return $this->get_id() === LP_Request::get_param( 'page' ); } /** * @return string */ public function get_id() { return $this->id; } /** * @param string $id */ public function set_id( $id ) { $this->id = $id; } /** * @return string */ public function get_menu_title() { return $this->menu_title; } /** * @param string $menu_title */ public function set_menu_title( $menu_title ) { $this->menu_title = $menu_title; } /** * @return string */ public function get_page_title() { return $this->page_title; } /** * @param string $page_title */ public function set_page_title( $page_title ) { $this->page_title = $page_title; } /** * @return int|string */ public function get_priority() { return $this->priority; } /** * @param string|int $priority */ public function set_priority( $priority ) { $this->priority = $priority; } /** * @return string */ public function get_capability() { return $this->capability; } /** * @param string $capability */ public function set_capability( $capability ) { $this->capability = $capability; } /** * @return string */ public function get_icon() { return $this->icon; } /** * @param string $icon */ public function set_icon( $icon ) { $this->icon = $icon; } /** * Get heading tabs. * * @return mixed|array */ public function get_tabs() { return apply_filters( 'learn-press/submenu-' . $this->get_id() . '-heading-tabs', $this->sanitize_tabs( $this->tabs ) ); } /** * Sanitize the tabs. * * @param $tabs * * @return array */ public function sanitize_tabs( $tabs ) { $sanitized_tabs = array(); if ( $tabs ) { foreach ( $tabs as $tab => $name ) { // Maybe a tab is name of a class? Try to locate it. if ( is_string( $name ) && class_exists( $name ) ) { $objSettings = new $name(); $sanitized_tabs[ $objSettings->id ] = $objSettings; } else { $sanitized_tabs[ $tab ] = $name; } } } return $sanitized_tabs; } /** * Get active tab by checking ?tab=tab-name * * @return bool|mixed */ public function get_active_tab() { $tabs = $this->get_tabs(); if ( ! $tabs ) { return false; } $tab = LP_Helper::sanitize_params_submitted( $_REQUEST['tab'] ?? '' ); if ( empty( $tab ) || empty( $tabs[ $tab ] ) ) { $tab_keys = array_keys( $tabs ); $tab = reset( $tab_keys ); } return $tab; } /** * @return array|mixed */ public function has_tabs() { return $this->get_tabs(); } /** * @return mixed */ public function get_sections() { $active_tab = $this->get_active_tab(); if ( ! empty( $this->tabs[ $active_tab ] ) ) { if ( is_callable( array( $this->tabs[ $active_tab ], 'get_sections' ) ) ) { $this->sections = call_user_func( array( $this->tabs[ $active_tab ], 'get_sections' ) ); } } return apply_filters( 'learn-press/submenu-sections', $this->sections ); } /** * Get current page is displaying. * * @param bool $prefix * * @return bool|mixed|null */ public function get_active_page( $prefix = true ) { if ( false === $this->page ) { $this->page = LP_Request::get_param( 'page' ); } return $prefix ? $this->page : str_replace( 'learn-press-', '', $this->page ); } /** * Get active section by checking ?section=tab-name * * @return bool|mixed */ public function get_active_section() { $sections = $this->get_sections(); if ( ! $sections ) { return false; } $section = LP_Helper::sanitize_params_submitted( $_REQUEST['section'] ?? '' ); if ( empty( $section ) || empty( $sections[ $section ] ) ) { $section_keys = array_keys( $sections ); $section = reset( $section_keys ); } return $section; } /** * Callback return template. * * @return bool|array|mixed */ public function get_callback() { return $this->callback; } /** * Display menu content */ public function display() { $tabs = $this->get_tabs(); $active_tab = $this->get_active_tab(); $classes = array( 'wrap', 'lp-submenu-page', $this->get_id() ); ?>