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

Controller   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 28
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 6
eloc 17
dl 0
loc 28
ccs 0
cts 17
cp 0
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A filterSchema() 0 23 6
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