File: /home/predezso/uppoom.com/wp-content/plugins/bulk-delete/include/base/class-bd-base-page.php
<?php
/**
* Base class for all Pages.
*
* @since 5.5.4
*
* @author Sudar
*
* @package BulkDelete\Base\Page
*/
defined('ABSPATH') || exit; // Exit if accessed directly
/**
* Base class for Pages.
*
* @abstract
*
* @since 5.5.4
*/
abstract class BD_Base_Page
{ //phpcs:ignore
/**
* @var string Page Slug.
*/
protected $page_slug;
/**
* @var string Menu action.
*/
protected $menu_action = 'bd_after_primary_menus';
/**
* @var string Minimum capability needed for viewing this page.
*/
protected $capability = 'manage_options';
// TODO: Remove property after confirming on `class-bd-settings-page.php` file.
/**
* @var bool Whether sidebar is needed or not.
*/
protected $render_sidebar = false;
/**
* @var string The screen variable for this page.
*/
protected $screen;
/**
* @var array Labels used in this page.
*/
protected $label = array();
/**
* @var array Messages shown to the user.
*/
protected $messages = array();
/**
* @var array Actions used in this page.
*/
protected $actions = array();
/**
* Initialize and setup variables.
*
* @since 5.5.4
* @abstract
*
* @return void
*/
abstract protected function initialize();
/**
* Render body content.
*
* @since 5.5.4
* @abstract
*
* @return void
*/
abstract protected function render_body();
/**
* Use `factory()` method to create instance of this class.
* Don't create instances directly.
*
* @since 5.5.4
* @see factory()
*/
public function __construct()
{
$this->setup();
}
/**
* Setup the module.
*
* @since 5.5.4
*/
protected function setup()
{
$this->initialize();
$this->setup_hooks();
}
/**
* Setup hooks.
*
* @since 5.5.4
*/
protected function setup_hooks()
{
add_action($this->menu_action, array($this, 'add_menu'));
add_action("bd_admin_footer_for_{$this->page_slug}", array($this, 'modify_admin_footer'));
add_filter('bd_action_nonce_check', array($this, 'nonce_check'), 10, 2);
add_filter('bd_admin_help_tabs', array($this, 'render_help_tab'), 10, 2);
}
/**
* Add menu.
*
* @since 5.5.4
*/
public function add_menu()
{
$this->screen = add_submenu_page(
Bulk_Delete::POSTS_PAGE_SLUG,
$this->label['page_title'],
$this->label['menu_title'],
$this->capability,
$this->page_slug,
array($this, 'render_page')
);
}
/**
* Check for nonce before executing the action.
*
* @since 5.5.4
*
* @param bool $result The current result.
* @param string $action Action name.
*/
public function nonce_check($result, $action)
{
if (in_array($action, $this->actions)) {
if (check_admin_referer("bd-{$this->page_slug}", "bd-{$this->page_slug}-nonce")) {
return true;
}
}
return $result;
}
/**
* Modify help tabs for the current page.
*
* @since 5.5.4
*
* @param array $help_tabs Current list of help tabs.
* @param string $screen Current screen name.
*
* @return array Modified list of help tabs.
*/
public function render_help_tab($help_tabs, $screen)
{
if ($this->screen == $screen) {
$help_tabs = $this->add_help_tab($help_tabs);
}
return $help_tabs;
}
/**
* Add help tabs.
* Help tabs can be added by overriding this function in the child class.
*
* @since 5.5.4
*
* @param array $help_tabs Current list of help tabs.
*
* @return array List of help tabs.
*/
protected function add_help_tab($help_tabs)
{
return $help_tabs;
}
/**
* Render the page.
*
* @since 5.5.4
*/
public function render_page()
{
?>
<div class="wrap">
<h2><?php echo esc_html($this->label['page_title']); ?></h2>
<?php settings_errors(); ?>
<form method="post">
<?php $this->render_nonce_fields(); ?>
<div class="bulkwp-body-wrapper">
<div id="poststuff">
<div id="post-body" class="metabox-holder columns-1">
<?php $this->render_header(); ?>
<div id="postbox-container-2" class="postbox-container">
<?php $this->render_body(); ?>
</div> <!-- #postbox-container-2 -->
</div> <!-- #post-body -->
</div><!-- #poststuff -->
</div>
<div class="bulkwp-sidebar-wrapper">
<?php bd_wp_kses_wf(Bulk_Delete::sidebar()); ?>
</div>
</form>
</div><!-- .wrap -->
<?php
$this->render_footer();
}
/**
* Print nonce fields.
*
* @since 5.5.4
*/
protected function render_nonce_fields()
{
wp_nonce_field("bd-{$this->page_slug}", "bd-{$this->page_slug}-nonce");
}
/**
* Render header for the page.
*
* If sidebar is enabled, then it is rendered as well.
*
* @since 5.5.4
*/
protected function render_header()
{
?>
<div class="notice notice-warning">
<p><strong><?php echo esc_html($this->messages['warning_message']); ?></strong></p>
</div>
<?php
}
/**
* Render footer.
*
* @since 5.5.4
*/
protected function render_footer()
{
/**
* Runs just before displaying the footer text in the admin page.
*
* This action is primarily for adding extra content in the footer of admin page.
*
* @since 5.5.4
*/
do_action("bd_admin_footer_for_{$this->page_slug}"); //phpcs:ignore
}
/**
* Modify admin footer in Bulk Delete plugin pages.
*/
public function modify_admin_footer()
{
add_filter('admin_footer_text', 'bd_add_rating_link');
}
/**
* Getter for screen.
*
* @return string Current value of screen
*/
public function get_screen()
{
return $this->screen;
}
/**
* Getter for page_slug.
*
* @return string Current value of page_slug
*/
public function get_page_slug()
{
return $this->page_slug;
}
}
?>