File Manager
<?php
/**
* Admin Notices
*
* @author Tijmen Smit
* @since 2.0.0
*/
if ( !defined( 'ABSPATH' ) ) exit;
if ( !class_exists( 'WPSL_Notices' ) ) {
/**
* Handle the meta boxes.
*
* @since 2.0.0
*/
class WPSL_Notices {
/**
* Holds the notices.
* @since 2.0.0
* @var array
*/
private $notices = array();
public function __construct() {
$this->notices = get_option( 'wpsl_notices' );
add_action( 'all_admin_notices', array( $this, 'show' ) );
}
/**
* Show one or more notices.
*
* @since 2.0.0
* @return void
*/
public function show() {
if ( !empty( $this->notices ) ) {
$allowed_html = array(
'a' => array(
'href' => array(),
'id' => array(),
'class' => array(),
'data-nonce' => array(),
'title' => array(),
'target' => array()
),
'p' => array(),
'br' => array(),
'em' => array(),
'strong' => array(
'class' => array()
),
'span' => array(
'class' => array()
),
'ul' => array(
'class' => array()
),
'li' => array(
'class' => array()
)
);
if ( wpsl_is_multi_array( $this->notices ) ) {
foreach ( $this->notices as $k => $notice ) {
$this->create_notice_content( $notice, $allowed_html );
}
} else {
$this->create_notice_content( $this->notices, $allowed_html );
}
// Empty the notices.
$this->notices = array();
update_option( 'wpsl_notices', $this->notices );
}
}
/**
* Create the content shown in the notice.
*
* @since 2.1.0
* @param array $notice
* @param array $allowed_html
*/
public function create_notice_content( $notice, $allowed_html ) {
$class = ( 'update' == $notice['type'] ) ? 'updated' : 'error';
if ( isset( $notice['multiline'] ) && $notice['multiline'] ) {
$notice_msg = wp_kses( $notice['message'], $allowed_html );
} else {
$notice_msg = '<p>' . wp_kses( $notice['message'], $allowed_html ) . '</p>';
}
echo '<div class="' . esc_attr( $class ) . '">' . $notice_msg . '</div>';
}
/**
* Save the notice.
*
* @since 2.0.0
* @param string $type The type of notice, either 'update' or 'error'
* @param string $message The user message
* @param bool $multiline True if the message contains multiple lines ( used with notices created in add-ons ).
* @return void
*/
public function save( $type, $message, $multiline = false ) {
$current_notices = get_option( 'wpsl_notices' );
$new_notice = array(
'type' => $type,
'message' => $message
);
if ( $multiline ) {
$new_notice['multiline'] = true;
}
if ( $current_notices ) {
if ( !wpsl_is_multi_array( $current_notices ) ) {
$current_notices = array( $current_notices );
}
array_push( $current_notices, $new_notice );
update_option( 'wpsl_notices', $current_notices );
} else {
update_option( 'wpsl_notices', $new_notice );
}
}
}
}
File Manager Version 1.0, Coded By Lucas
Email: hehe@yahoo.com