Test Failed
Push — main ( ed15c3...2f7161 )
by Paul
12:26 queued 06:03
created

PublicController::fetchPagedReviewsAjax()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 1
Bugs 1 Features 0
Metric Value
eloc 8
dl 0
loc 11
ccs 0
cts 9
cp 0
rs 10
c 1
b 1
f 0
cc 1
nc 1
nop 1
crap 2
1
<?php
2
3
namespace GeminiLabs\SiteReviews\Controllers;
4
5
use GeminiLabs\SiteReviews\Commands\CreateReview;
6
use GeminiLabs\SiteReviews\Commands\EnqueuePublicAssets;
7
use GeminiLabs\SiteReviews\Contracts\BuilderContract;
8
use GeminiLabs\SiteReviews\Modules\Html\Builder;
9
use GeminiLabs\SiteReviews\Modules\Schema;
10
use GeminiLabs\SiteReviews\Modules\Style;
11
use GeminiLabs\SiteReviews\Request;
12
use GeminiLabs\SiteReviews\Shortcodes\SiteReviewsShortcode;
13
14
class PublicController extends AbstractController
15
{
16
    /**
17
     * @action wp_enqueue_scripts
18
     */
19
    public function enqueueAssets(): void
20
    {
21
        $this->execute(new EnqueuePublicAssets());
22
    }
23
24
    /**
25
     * @action site-reviews/route/ajax/fetch-paged-reviews
26
     */
27
    public function fetchPagedReviewsAjax(Request $request): void
28
    {
29
        glsr()->store(glsr()->paged_handle, $request->toArray());
30
        $html = glsr(SiteReviewsShortcode::class)
31
            ->normalize($request->cast('atts', 'array'))
32
            ->buildReviewsHtml();
33
        $response = [
34
            'pagination' => $html->getPagination($wrap = false),
35
            'reviews' => $html->getReviews(),
36
        ];
37
        wp_send_json_success($response);
38
    }
39
40
    /**
41
     * @filter site-reviews/config/forms/review-form
42
     */
43
    public function filterFieldOrder(array $config): array
44
    {
45
        $order = array_keys($config);
46
        $order = glsr()->filterArray('review-form/order', $order);
47
        return array_intersect_key(array_merge(array_flip($order), $config), $config);
48
    }
49
50
    /**
51
     * @filter site-reviews/render/view
52
     */
53
    public function filterRenderView(string $view): string
54
    {
55
        return glsr(Style::class)->view($view);
56
    }
57
58
    /**
59
     * @action wp_footer
60
     */
61
    public function renderSchema(): void
62
    {
63
        if (empty(glsr_get_option('schema.integration.plugin'))) {
64
            glsr(Schema::class)->render();
65
        }
66
    }
67
68
    /**
69
     * @action site-reviews/route/public/submit-review
70
     */
71
    public function submitReview(Request $request): void
72
    {
73
        $command = $this->execute(new CreateReview($request));
74
        if ($command->successful()) {
75
            wp_safe_redirect($command->referer()); // @todo add review ID to referer?
76
            exit;
77
        }
78
    }
79
80
    /**
81
     * @action site-reviews/route/ajax/submit-review
82
     */
83
    public function submitReviewAjax(Request $request): void
84 9
    {
85
        $command = $this->execute(new CreateReview($request));
86 9
        if ($command->successful()) {
87
            wp_send_json_success($command->response());
88
        }
89
        wp_send_json_error($command->response());
90
    }
91
}
92