Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
4 / 4
CRAP
100.00% covered (success)
100.00%
22 / 22
NoticeView
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
4 / 4
6
100.00% covered (success)
100.00%
22 / 22
 render
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
13 / 13
 prepareCssClasses
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
6 / 6
 getCssClasses
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 setCssClasses
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
2 / 2
<?php
declare(strict_types=1);
namespace Korobochkin\WPKit\Notices;
/**
 * Class NoticeView
 */
class NoticeView implements NoticeViewInterface
{
    /**
     * @var NoticeInterface
     */
    protected $notice;
    /**
     * @var array
     */
    protected $cssClasses = array('notice', 'wp-kit-notice');
    /**
     * @inheritdoc
     */
    public function render(NoticeInterface $notice)
    {
        $this->notice = $notice;
        $this->prepareCssClasses();
        if ($notice->getTitle()) {
            $title = '<p class="notice-title">' . $notice->getTitle() . '</p>';
        } else {
            $title = '';
        }
        $id = 'wp-kit-notice-' . $notice->getName();
        $cssClasses = implode(' ', $this->cssClasses);
        printf(
            '<div id="%1$s" class="%2$s">%3$s</div>',
            esc_attr($id),
            esc_attr($cssClasses),
            $title . $notice->getContent()
        );
    }
    /**
     * @return $this For chain calls.
     */
    protected function prepareCssClasses()
    {
        $classes = $this->cssClasses;
        if ($this->notice->isDismissible()) {
            $classes[] = 'is-dismissible';
        }
        $classes[] = 'wp-kit-notice-' . $this->notice->getName();
        $this->cssClasses = $classes;
        return $this;
    }
    /**
     * Returns list of CSS classes.
     *
     * @return array List of CSS classes.
     */
    public function getCssClasses()
    {
        return $this->cssClasses;
    }
    /**
     * Sets list of CSS classes.
     *
     * @param array $cssClasses List of CSS classes.
     *
     * @return $this For chain calls.
     */
    public function setCssClasses(array $cssClasses)
    {
        $this->cssClasses = $cssClasses;
        return $this;
    }
}