* @link http://domain.tld * @license GPL 2.0+ * @copyright 2022 WebAppick */ namespace Disco\Backend; use Disco\App\Disco; use Disco\Engine\Base; /** * Create the settings page in the backend */ class Settings_Page extends Base { /** * Initialize the class. * * @return void|bool */ public function initialize() { if ( ! parent::initialize() ) { return; } // Add the options page and menu item. \add_action( 'admin_menu', array( $this, 'add_plugin_admin_menu' ) ); $realpath = (string) \realpath( __DIR__ ); $plugin_basename = \plugin_basename( \plugin_dir_path( $realpath ) . DISCO_TEXTDOMAIN . '.php' ); add_filter( "plugin_action_links_{$plugin_basename}", array( $this, 'disco_add_action_plugin_links' ) ); } /** * Add settings link on plugin page * * @param array $links links. * @return array */ public function disco_add_action_plugin_links( $links ) { $is_pro_active = class_exists( '\Disco_Pro' ); $custom_links = [ [ 'label' => __( 'Settings', 'disco' ), 'url' => admin_url( 'admin.php?page=disco-create-discount' ), 'class' => 'disco-settings-link', ], [ 'label' => __( 'Get Pro', 'disco' ), 'url' => 'https://discoplugin.com/pricing/?utm_source=plugin_dashboard&utm_medium=free-to-pro&utm_campaign=free-to-pro&utm_id=1', 'class' => 'disco-custom-pro-link', ], [ 'label' => __( 'Docs', 'disco' ), 'url' => 'https://discoplugin.com/docs/', 'class' => 'disco-custom-docs-link', ], ]; if ( $is_pro_active ) { array_splice( $custom_links, 1, 1 ); } $built_links = array(); foreach ( $custom_links as $item ) { $built_links[] = sprintf( '%s', esc_url( $item['url'] ), esc_attr( $item['class'] ), esc_html( $item['label'] ) ); } $new_links = array(); foreach ( $links as $link ) { $new_links[] = $link; // Insert after Deactivate if ( strpos( $link, 'deactivate' ) !== false ) { foreach ( $built_links as $custom_link ) { $new_links[] = $custom_link; } } } return $new_links; } /** * Register the administration menu for this plugin into the WordPress Dashboard menu. * * @return void * @since 1.0.0 */ public function add_plugin_admin_menu() { /* * Add a settings page for this plugin to the Settings menu * * * * - Change 'manage_options' to the capability you see fit * For reference: http://codex.wordpress.org/Roles_and_Capabilities add_options_page( __( 'Page Title', DISCO_TEXTDOMAIN ), DISCO_NAME, 'manage_options', DISCO_TEXTDOMAIN, array( $this, 'display_plugin_admin_page' ) ); * */ /* * Add a settings page for this plugin to the main menu * */ add_menu_page( 'Disco', DISCO_NAME, 'manage_woocommerce', 'disco-create-discount', array( $this, 'display_plugin_admin_page_create_discount', ), plugins_url( 'disco/assets/img/disco-menu-icon.png' ), 10 ); add_submenu_page( 'disco-create-discount', __( 'Campaigns', 'disco' ), __( 'Campaigns', 'disco' ), 'manage_woocommerce', 'disco-create-discount', array( $this, 'display_plugin_admin_page_create_discount', ) ); add_submenu_page( 'disco-create-discount', __( 'Create Campaign', 'disco' ), __( 'Create Campaign', 'disco' ), 'manage_woocommerce', 'disco-create-campaign', array( $this, 'disco_display_plugin_admin_page_create_campaign', ) ); add_submenu_page( 'disco-create-discount', __( 'Analytics', 'disco' ), __( 'Analytics', 'disco' ) . ' ' . __( 'Beta', 'disco' ) . '', 'manage_woocommerce', 'disco-analytics', array( $this, 'disco_display_plugin_admin_page_analytics', ) ); add_submenu_page( 'disco-create-discount', __( 'Settings', 'disco' ), __( 'Settings', 'disco' ), 'manage_woocommerce', 'disco-settings', array( $this, 'disco_display_plugin_admin_page_settings', ) ); add_submenu_page( 'disco-create-discount', __( 'Compatibles', 'disco' ), __( 'Compatibles', 'disco' ), 'manage_woocommerce', 'compatible-plugin-list', array( $this, 'disco_display_plugin_admin_page_compatible_plugin_list', ) ); add_submenu_page( 'disco-create-discount', __( 'Help & Docs', 'disco' ), __( 'Help & Docs', 'disco' ), 'manage_woocommerce', 'help-and-docs', array( $this, 'disco_display_plugin_admin_page_help_and_docs', ) ); if ( ! Disco::is_pro() ) { add_submenu_page( 'disco-create-discount', __( 'Pro Plan', 'disco' ), __( 'Pro Plan', 'disco' ), 'manage_woocommerce', 'pro-plan', array( $this, 'disco_display_plugin_admin_page_pro_plan', ) ); } if ( ! Disco::is_pro() ) { // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited $GLOBALS['submenu']['disco-create-discount'][] = array( ' ' . esc_html__( 'Unlock Pro', 'disco' ) . '', 'manage_woocommerce', admin_url( 'admin.php?page=pro-plan' ), esc_html__( 'Unlock Pro', 'disco' ), ); } } /** * Render the create discount page for this plugin. * * @return void * @since 1.0.0 */ public function display_plugin_admin_page_create_discount() { // Create a nonce wp_create_nonce( 'disco_create_discount' ); include_once DISCO_PLUGIN_ROOT . 'backend/views/create_discount.php'; } /** * Render the create campaign page for this plugin. * * @return void */ public function disco_display_plugin_admin_page_create_campaign() { wp_create_nonce( 'disco_create_discount' ); echo ''; include_once DISCO_PLUGIN_ROOT . 'backend/views/create_discount.php'; } /** * Render the settings page for this plugin. * * @return void */ public function disco_display_plugin_admin_page_settings() { wp_create_nonce( 'disco_create_discount' ); echo ''; include_once DISCO_PLUGIN_ROOT . 'backend/views/create_discount.php'; } /** * Render the help and docs page for this plugin. * * @return void * @since 1.0.0 */ public function disco_display_plugin_admin_page_help_and_docs() { include_once DISCO_PLUGIN_ROOT . 'backend/views/help_and_docs.php'; } /** * Render the pro plan page for this plugin. * * @return void * @since 1.0.0 */ public function disco_display_plugin_admin_page_pro_plan() { include_once DISCO_PLUGIN_ROOT . 'backend/views/pro_plan.php'; } /** * Render the compatible plugin list page for this plugin. * * @return void * @since 1.0.0 */ public function disco_display_plugin_admin_page_compatible_plugin_list() { include_once DISCO_PLUGIN_ROOT . 'backend/views/compatible_plugin_list.php'; } /** * Render the Analytics page for this plugin. * * @return void * @since 1.0.0 */ public function disco_display_plugin_admin_page_analytics() { include_once DISCO_PLUGIN_ROOT . 'backend/views/analytics.php'; } }