Test Failed
Push — develop ( c4a2cb...83a5b5 )
by Paul
07:40
created

SiteReviewShortcode::buildTemplate()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 15
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 12

Importance

Changes 0
Metric Value
eloc 11
dl 0
loc 15
ccs 0
cts 11
cp 0
rs 9.9
c 0
b 0
f 0
cc 3
nc 3
nop 0
crap 12
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(['review' => $review]);
15
        if ($review->isValid()) {
16
            $reviews = new Reviews([$review], 1, $this->args);
17
            glsr()->action('get/reviews', $reviews, $this->args);
18
            if ('modal' === glsr_get_option('reviews.excerpts_action')) {
19
                glsr()->store('use_modal', true);
20
            }
21
        } else {
22
            $reviews = new Reviews([], 0, $this->args);
23
        }
24
        $html = new ReviewsHtml($reviews);
25
        return (string) $html;
26
    }
27
28 8
    public function description(): string
29
    {
30 8
        return esc_html_x('Display a single review', 'admin-text', 'site-reviews');
31 8
    }
32 8
33 8
    public function name(): string
34 8
    {
35 8
        return esc_html_x('Single Review', 'admin-text', 'site-reviews');
36 8
    }
37 8
38 8
    protected function config(): array
39 8
    {
40 8
        return [
41
            'post_id' => [
42
                'label' => esc_attr_x('Review Post ID', 'admin-text', 'site-reviews'),
43
                'description' => esc_html_x('Select the review you want to display.', 'admin-text', 'site-reviews'),
44
                'placeholder' => esc_html_x('Select a review...', 'admin-text', 'site-reviews'),
45
                'type' => 'select',
46
            ],
47
            'hide' => [
48
                'group' => 'hide',
49
                'options' => $this->options('hide'),
50
                'type' => 'checkbox',
51
            ],
52
            'id' => [
53
                'description' => esc_html_x('This should be a unique value.', 'admin-text', 'site-reviews'),
54
                'group' => 'advanced',
55
                'label' => esc_html_x('Custom ID', 'admin-text', 'site-reviews'),
56
                'type' => 'text',
57
            ],
58
            'class' => [
59
                'description' => esc_html_x('Separate multiple classes with spaces.', 'admin-text', 'site-reviews'),
60
                'group' => 'advanced',
61
                'label' => esc_html_x('Additional CSS classes', 'admin-text', 'site-reviews'),
62
                'type' => 'text',
63
            ],
64
        ];
65
    }
66
67
    protected function hideOptions(): array
68
    {
69
        return [ // order is intentional
70
            'title' => _x('Hide the title', 'admin-text', 'site-reviews'),
71
            'rating' => _x('Hide the rating', 'admin-text', 'site-reviews'),
72
            'date' => _x('Hide the date', 'admin-text', 'site-reviews'),
73
            'assigned_links' => _x('Hide the assigned links (if shown)', 'admin-text', 'site-reviews'),
74
            'content' => _x('Hide the content', 'admin-text', 'site-reviews'),
75
            'avatar' => _x('Hide the avatar (if shown)', 'admin-text', 'site-reviews'),
76
            'author' => _x('Hide the author', 'admin-text', 'site-reviews'),
77
            'verified' => _x('Hide the verified badge', 'admin-text', 'site-reviews'),
78
            'response' => _x('Hide the response', 'admin-text', 'site-reviews'),
79
        ];
80
    }
81
}
82