Test Failed
Push — develop ( 48d1be...252e0d )
by Paul
10:21
created

Controller::filterSchema()   A

Complexity

Conditions 6
Paths 7

Size

Total Lines 23
Code Lines 16

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 42

Importance

Changes 0
Metric Value
eloc 16
dl 0
loc 23
ccs 0
cts 17
cp 0
rs 9.1111
c 0
b 0
f 0
cc 6
nc 7
nop 1
crap 42
1
<?php
2
3
namespace GeminiLabs\SiteReviews\Integrations\RankMath;
4
5
use GeminiLabs\SiteReviews\Controllers\AbstractController;
6
use GeminiLabs\SiteReviews\Helpers\Arr;
7
use GeminiLabs\SiteReviews\Integrations\RankMath\Defaults\RatingSchemaTypeDefaults;
8
use GeminiLabs\SiteReviews\Modules\Schema;
9
10
class Controller extends AbstractController
11
{
12
    /**
13
     * @filter rank_math/schema/validated_data
14
     */
15
    public function filterSchema($data): array
16
    {
17
        $data = Arr::consolidate($data);
18
        $schema = glsr(Schema::class)->generate();
19
        if (empty($schema)) {
20
            return $data;
21
        }
22
        $allowedTypes = glsr(RatingSchemaTypeDefaults::class)->defaults();
23
        $aggregateRatingSchema = Arr::get($schema, 'aggregateRating');
24
        $reviewSchema = Arr::get($schema, 'review');
25
        foreach ($data as $key => $values) {
26
            $type = $values['@type'] ?? '';
27
            if (!in_array($type, $allowedTypes)) {
28
                continue;
29
            }
30
            if ($aggregateRatingSchema) {
31
                $data[$key]['aggregateRating'] = $aggregateRatingSchema;
32
            }
33
            if ($reviewSchema) {
34
                $data[$key]['review'] = $reviewSchema;
35
            }
36
        }
37
        return $data;
38
    }
39
}
40