Passed
Push — develop ( f66d95...f9d2ce )
by Paul
13:45
created

SiteReviewShortcode   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 75
Duplicated Lines 0 %

Test Coverage

Coverage 27.27%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 8
eloc 45
c 1
b 0
f 0
dl 0
loc 75
ccs 15
cts 55
cp 0.2727
rs 10

6 Methods

Rating   Name   Duplication   Size   Complexity  
A buildTemplate() 0 14 3
A description() 0 3 1
A enqueue() 0 3 1
A config() 0 26 1
A name() 0 3 1
A hideOptions() 0 12 1
1
<?php
2
3
namespace GeminiLabs\SiteReviews\Shortcodes;
4
5
use GeminiLabs\SiteReviews\Database\ReviewManager;
6
use GeminiLabs\SiteReviews\Modules\Html\ReviewsHtml;
7
use GeminiLabs\SiteReviews\Reviews;
8
9
class SiteReviewShortcode extends Shortcode
10
{
11
    public function buildTemplate(): string
12
    {
13
        $review = glsr(ReviewManager::class)->get($this->args['post_id']);
14
        $this->debug(compact('review'));
15
        if (!$review->isValid()) {
16
            return '';
17
        }
18
        $reviews = new Reviews([$review], 1, $this->args);
19
        glsr()->action('get/reviews', $reviews, $this->args);
20
        if ('modal' === glsr_get_option('reviews.excerpts_action')) {
21
            glsr()->store('use_modal', true);
22
        }
23
        $html = new ReviewsHtml($reviews);
24
        return (string) $html;
25
    }
26
27 8
    public function description(): string
28
    {
29 8
        return esc_html_x('Display a single review', 'admin-text', 'site-reviews');
30
    }
31
32
    public function enqueue(): void
33
    {
34
        wp_enqueue_style('site-reviews-review-style');
35
    }
36
37 8
    public function name(): string
38
    {
39 8
        return esc_html_x('Single Review', 'admin-text', 'site-reviews');
40
    }
41
42
    protected function config(): array
43
    {
44
        return [ // order is intentional
45
            'post_id' => [
46
                'label' => esc_attr_x('Review Post ID', 'admin-text', 'site-reviews'),
47
                'description' => esc_html_x('Select the review you want to display.', 'admin-text', 'site-reviews'),
48
                'group' => 'general',
49
                'placeholder' => esc_html_x('Select a review...', 'admin-text', 'site-reviews'),
50
                'type' => 'select',
51
            ],
52
            'hide' => [
53
                'group' => 'hide',
54
                'options' => $this->options('hide'),
55
                'type' => 'checkbox',
56
            ],
57
            'id' => [
58
                'description' => esc_html_x('This should be a unique value.', 'admin-text', 'site-reviews'),
59
                'group' => 'advanced',
60
                'label' => esc_html_x('Custom ID', 'admin-text', 'site-reviews'),
61
                'type' => 'text',
62
            ],
63
            'class' => [
64
                'description' => esc_html_x('Separate multiple classes with spaces.', 'admin-text', 'site-reviews'),
65
                'group' => 'advanced',
66
                'label' => esc_html_x('Additional CSS classes', 'admin-text', 'site-reviews'),
67
                'type' => 'text',
68
            ],
69
        ];
70
    }
71
72 8
    protected function hideOptions(): array
73
    {
74 8
        return [ // order is intentional
75 8
            'title' => _x('Hide the title', 'admin-text', 'site-reviews'),
76 8
            'rating' => _x('Hide the rating', 'admin-text', 'site-reviews'),
77 8
            'date' => _x('Hide the date', 'admin-text', 'site-reviews'),
78 8
            'assigned_links' => _x('Hide the assigned links (if shown)', 'admin-text', 'site-reviews'),
79 8
            'content' => _x('Hide the content', 'admin-text', 'site-reviews'),
80 8
            'avatar' => _x('Hide the avatar (if shown)', 'admin-text', 'site-reviews'),
81 8
            'author' => _x('Hide the author', 'admin-text', 'site-reviews'),
82 8
            'verified' => _x('Hide the verified badge', 'admin-text', 'site-reviews'),
83 8
            'response' => _x('Hide the response', 'admin-text', 'site-reviews'),
84 8
        ];
85
    }
86
}
87