deep-web-solutions/wordpress-framework-utilities

View on GitHub
src/includes/AdminNotices/Notices/DismissibleAdminNotice.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

namespace DeepWebSolutions\Framework\Utilities\AdminNotices\Notices;

\defined( 'ABSPATH' ) || exit;

/**
 * Models dismissible notice.
 *
 * @since   1.0.0
 * @version 1.0.0
 * @author  Antonius Hegyes <a.hegyes@deep-web-solutions.com>
 * @package DeepWebSolutions\WP-Framework\Utilities\AdminNotices\Notices
 */
class DismissibleAdminNotice extends SimpleAdminNotice {
    // region FIELDS AND CONSTANTS

    /**
     * Stores whether the notice is dismissed or not.
     *
     * @since   1.0.0
     * @version 1.0.0
     *
     * @access  protected
     * @var     bool
     */
    protected bool $is_dismissed = false;

    // endregion

    // region GETTERS

    /**
     * Returns whether the notice is dismissed or not.
     *
     * @since   1.0.0
     * @version 1.0.0
     *
     * @return  bool
     */
    public function is_dismissed(): bool {
        return $this->is_dismissed;
    }

    // endregion

    // region SETTERS

    /**
     * Sets the notice's dismissed status.
     *
     * @since   1.0.0
     * @version 1.0.0
     *
     * @param   bool    $is_dismissed   Whether the notice is dismissed or not.
     */
    public function set_dismissed( bool $is_dismissed ): void {
        $this->is_dismissed = $is_dismissed;
    }

    // endregion

    // region INHERITED METHODS

    /**
     * {@inheritDoc}
     *
     * @since   1.0.0
     * @version 1.0.0
     */
    public function should_output(): bool {
        return parent::should_output() && ! $this->is_dismissed();
    }

    /**
     * {@inheritDoc}
     *
     * @since   1.0.0
     * @version 1.0.0
     */
    protected function get_classes(): array {
        return \array_merge( parent::get_classes(), array( 'is-dismissible' ) );
    }

    // endregion
}