* @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(
'',
'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';
}
}