Passed
Push — master ( f510e9...9822a2 )
by Paul
10:29
created

DetailsMetabox   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 47
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 6
eloc 23
dl 0
loc 47
ccs 0
cts 33
cp 0
rs 10
c 1
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A register() 0 8 2
A render() 0 5 1
A normalize() 0 19 3
1
<?php
2
3
namespace GeminiLabs\SiteReviews\Metaboxes;
4
5
use GeminiLabs\SiteReviews\Contracts\MetaboxContract;
6
use GeminiLabs\SiteReviews\Database\Query;
7
use GeminiLabs\SiteReviews\Modules\Html\MetaboxField;
8
use GeminiLabs\SiteReviews\Review;
9
10
class DetailsMetabox implements MetaboxContract
11
{
12
    /**
13
     * @return array
14
     */
15
    public function normalize(Review $review)
16
    {
17
        $fields = glsr()->config('forms/metabox-fields');
18
        if (count(glsr()->retrieveAs('array', 'review_types')) < 2) {
19
            unset($fields['type']);
20
        }
21
        foreach ($fields as $key => &$field) {
22
            $field['class'] = 'glsr-input-value';
23
            $field['name'] = $key;
24
            $field['data-value'] = $review->$key;
25
            $field['disabled'] = 'add' !== glsr_current_screen()->action;
26
            $field['review_object'] = $review;
27
            $field['value'] = $review->$key;
28
        }
29
        $fields = glsr()->filterArray('metabox/fields', $fields, $review);
30
        array_walk($fields, function (&$field) {
31
            $field = new MetaboxField($field);
32
        });
33
        return array_values($fields);
34
    }
35
36
    /**
37
     * {@inheritdoc}
38
     */
39
    public function register($post)
40
    {
41
        if (!Review::isReview($post)) {
42
            return;
43
        }
44
        $id = glsr()->post_type.'-detailsdiv';
45
        $title = _x('Review Details', 'admin-text', 'site-reviews');
46
        add_meta_box($id, $title, [$this, 'render'], null, 'normal', 'high');
47
    }
48
49
    /**
50
     * {@inheritdoc}
51
     */
52
    public function render($post)
53
    {
54
        $review = glsr(Query::class)->review($post->ID);
55
        glsr()->render('partials/editor/metabox-details', [
56
            'metabox' => $this->normalize($review),
57
        ]);
58
    }
59
}
60