• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Yoast / Yoast-SEO-for-TYPO3 / 13327579701

14 Feb 2025 10:43AM UTC coverage: 1.276%. First build
13327579701

push

github

web-flow
Merge pull request #597 from Yoast/feature/v11

[FEATURE] Release 11.0.0

21 of 894 new or added lines in 76 files covered. (2.35%)

35 of 2744 relevant lines covered (1.28%)

0.04 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/Classes/Service/SnippetPreview/SnippetPreviewConfigurationBuilder.php
1
<?php
2

3
declare(strict_types=1);
4

5
namespace YoastSeoForTypo3\YoastSeo\Service\SnippetPreview;
6

7
use YoastSeoForTypo3\YoastSeo\Utility\YoastUtility;
8

9
class SnippetPreviewConfigurationBuilder
10
{
11
    protected string $titleField = 'title';
12
    protected string $pageTitleField = 'title';
13
    protected string $descriptionField = 'description';
14
    protected string $focusKeywordField = 'tx_yoastseo_focuskeyword';
15
    protected string $focusKeywordSynonymsField = 'tx_yoastseo_focuskeyword_synonyms';
16
    protected string $cornerstoneField = 'tx_yoastseo_cornerstone';
17
    protected string $relatedKeyphrases = 'tx_yoastseo_focuskeyword_related';
18

19
    /**
20
     * @param array<string, mixed> $data
21
     * @return array<string, mixed>
22
     */
23
    public function buildConfigurationForTCA(array $data, int $languageId): array
24
    {
NEW
25
        $this->initializeFields($data);
×
26

NEW
27
        return [
×
NEW
28
            'TCA' => 1,
×
NEW
29
            'data' => [
×
NEW
30
                'table' => $data['tableName'],
×
NEW
31
                'uid' => (int)($data['defaultLanguagePageRow']['uid'] ?? $data['databaseRow']['uid']),
×
NEW
32
                'pid' => (int)$data['databaseRow']['pid'],
×
NEW
33
                'languageId' => $languageId,
×
NEW
34
            ],
×
NEW
35
            'fieldSelectors' => $this->buildFieldSelectors($data),
×
NEW
36
            'relatedKeyphrases' => YoastUtility::getRelatedKeyphrases($data['tableName'], (int)$data['databaseRow']['uid']),
×
NEW
37
        ];
×
38
    }
39

40
    /**
41
     * @param array<string, mixed> $currentPage
42
     * @return array<string, mixed>
43
     */
44
    public function buildConfigurationForPage(int $pageId, array $currentPage, int $languageId): array
45
    {
NEW
46
        return [
×
NEW
47
            'data' => [
×
NEW
48
                'table' => 'pages',
×
NEW
49
                'uid' => $pageId,
×
NEW
50
                'pid' => $currentPage['pid'],
×
NEW
51
                'languageId' => $languageId,
×
NEW
52
            ],
×
NEW
53
            'fieldSelectors' => [],
×
NEW
54
        ];
×
55
    }
56

57
    /**
58
     * @param array<string, mixed> $data
59
     * @return array<string, string>
60
     */
61
    protected function buildFieldSelectors(array $data): array
62
    {
NEW
63
        return [
×
NEW
64
            'title' => $this->getFieldSelector($data, $this->titleField),
×
NEW
65
            'pageTitle' => $this->getFieldSelector($data, $this->pageTitleField),
×
NEW
66
            'description' => $this->getFieldSelector($data, $this->descriptionField),
×
NEW
67
            'focusKeyword' => $this->getFieldSelector($data, $this->focusKeywordField),
×
NEW
68
            'focusKeywordSynonyms' => $this->getFieldSelector($data, $this->focusKeywordSynonymsField),
×
NEW
69
            'cornerstone' => $this->getFieldSelector($data, $this->cornerstoneField),
×
NEW
70
            'relatedKeyword' => $this->getFieldSelector($data, $this->relatedKeyphrases, true),
×
NEW
71
        ];
×
72
    }
73

74
    /**
75
     * @param array<string, mixed> $data
76
     */
77
    protected function getFieldSelector(array $data, string $field, bool $id = false): string
78
    {
NEW
79
        if ($id === true) {
×
NEW
80
            $element = 'data-' . $data['vanillaUid'] . '-' . $data['tableName'] . '-' . $data['vanillaUid'] . '-' . $field;
×
81
        } else {
NEW
82
            $element = 'data' . str_replace('tx_yoastseo_snippetpreview', $field, $data['elementBaseName']);
×
83
        }
84

NEW
85
        return $element;
×
86
    }
87

88
    /**
89
     * @param array<string, mixed> $data
90
     */
91
    protected function initializeFields(array $data): void
92
    {
NEW
93
        foreach (['titleField', 'pageTitleField', 'descriptionField'] as $field) {
×
NEW
94
            if (!empty($data['parameterArray']['fieldConf']['config']['settings'][$field] ?? '')) {
×
NEW
95
                $this->$field = $data['parameterArray']['fieldConf']['config']['settings'][$field];
×
96
            }
97
        }
98
    }
99
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc