<?php
/**
* Suppress "error - 0 - No summary was found for this file" on phpdoc generation
*
* @package WPDataAccess\Utilities
*/
namespace WPDataAccess\Utilities {
/**
* Class WPDA_Message_Box
*
* Displays a message box the WordPress way.
*
* @author Peter Schulz
* @since 1.0.0
*/
class WPDA_Message_Box {
/**
* Default message type
*/
const DEFAULT_MESSAGE_TYPE = 'notice';
/**
* Default setting dismissible
*/
const DEFAULT_MESSAGE_IS_DISMISSIBLE = true;
/**
* Sequence number
*
* Used to give message boxes a unique number within the current response
*
* @var int
*/
protected static $message_box_seq = 0;
/**
* Message box number
*
* @var int
*/
protected $message_box_no;
/**
* Message box text
*
* @var string
*/
protected $message_text;
/**
* Message type (error, notice, action)
*
* @var string
*/
protected $message_type;
/**
* Indicates whether message is dismissible
*
* @var string
*/
protected $message_is_dismissible;
/**
* Message type shown to user
*
* @var string
*/
protected $message_hint;
/**
* WPDA_Message_Box constructor
*
* @param array $args [
*
* 'message_text' => (string) Message text
*
* 'message_type' => (string) Message type
*
* 'message_is_dismissible' => (boolean) Indicates whether message box is dismissible
*
* ].
* @since 1.0.0
*/
public function __construct( $args = array() ) {
$args = wp_parse_args(
$args,
array(
'message_text' => '',
'message_type' => self::DEFAULT_MESSAGE_TYPE,
'message_is_dismissible' => self::DEFAULT_MESSAGE_IS_DISMISSIBLE,
)
);
if ( '' === $args['message_text'] ) {
wp_die( __( 'ERROR: Wrong arguments [missing message text argument]', 'wp-data-access' ) );
}
$this->message_text = $args['message_text'];
$this->message_type = $args['message_type'];
$this->message_is_dismissible = true === $args['message_is_dismissible'] ? 'is-dismissible' : '';
switch ( $this->message_type ) {
case 'error':
$this->message_hint = 'ERROR';
break;
case 'action':
$this->message_hint = 'ACTION';
$this->message_type = 'notice';
break;
default:
$this->message_hint = 'INFO';
}
$this->message_box_no = ++ self::$message_box_seq; // Give message box a unique number.
}
/**
* Show message box
*
* @since 1.0.0
*/
public function box() {
$msgbox_id = 'message_box_' . esc_attr( $this->message_box_no );
global $allowedposttags;
?>
<div id='<?php echo esc_attr( $msgbox_id ); ?>'
class='updated published <?php echo esc_attr( $this->message_type ); ?> <?php echo esc_attr( $this->message_is_dismissible ); ?>'>
<p>
<?php echo esc_attr( $this->message_hint ); ?>: <?php echo wp_kses( $this->message_text, $allowedposttags ); ?>
</p>
</div>
<?php
}
public function custom_box( $content ) {
$msgbox_id = 'message_box_' . esc_attr( $this->message_box_no );
?>
<div id='<?php echo esc_attr( $msgbox_id ); ?>'
class='updated published <?php echo esc_attr( $this->message_type ); ?> <?php echo esc_attr( $this->message_is_dismissible ); ?>'>
<p>
<?php echo $content; // phpcs:ignore WordPress.Security.EscapeOutput ?>
</p>
</div>
<?php
}
}
}