GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Passed
Push — master ( 036673...e971c9 )
by Leonardo
03:32
created

SchemaConfigOptionsBlock   A

Complexity

Total Complexity 11

Size/Duplication

Total Lines 139
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 65
c 1
b 0
f 0
dl 0
loc 139
ccs 0
cts 33
cp 0
rs 10
wmc 11

7 Methods

Rating   Name   Duplication   Size   Complexity  
A getLocalizedData() 0 9 1
A isDynamicBlock() 0 3 1
B renderBlock() 0 66 5
A getBlockCategory() 0 8 1
A registerEditorCSS() 0 3 1
A registerCommonStyleCSS() 0 3 1
A getBlockName() 0 3 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace GraphQLAPI\GraphQLAPI\Blocks;
6
7
use PoP\AccessControl\Schema\SchemaModes;
8
use GraphQLAPI\GraphQLAPI\ComponentConfiguration;
9
use GraphQLAPI\GraphQLAPI\Facades\ModuleRegistryFacade;
10
use GraphQLAPI\GraphQLAPI\Blocks\GraphQLByPoPBlockTrait;
11
use GraphQLByPoP\GraphQLServer\Configuration\MutationSchemes;
12
use PoP\ComponentModel\Facades\Instances\InstanceManagerFacade;
13
use GraphQLAPI\GraphQLAPI\BlockCategories\AbstractBlockCategory;
14
use GraphQLAPI\GraphQLAPI\BlockCategories\SchemaConfigurationBlockCategory;
15
use GraphQLAPI\GraphQLAPI\ModuleResolvers\OperationalFunctionalityModuleResolver;
16
use GraphQLAPI\GraphQLAPI\ModuleResolvers\SchemaConfigurationFunctionalityModuleResolver;
17
18
/**
19
 * Schema Config Options block
20
 */
21
class SchemaConfigOptionsBlock extends AbstractOptionsBlock
22
{
23
    use GraphQLByPoPBlockTrait;
24
25
    public const ATTRIBUTE_NAME_USE_NAMESPACING = 'useNamespacing';
26
    public const ATTRIBUTE_NAME_MUTATION_SCHEME = 'mutationScheme';
27
    public const ATTRIBUTE_NAME_DEFAULT_SCHEMA_MODE = 'defaultSchemaMode';
28
29
    // public const ATTRIBUTE_VALUE_USE_NAMESPACING_DEFAULT = 'default';
30
    public const ATTRIBUTE_VALUE_USE_NAMESPACING_ENABLED = 'enabled';
31
    public const ATTRIBUTE_VALUE_USE_NAMESPACING_DISABLED = 'disabled';
32
33
    protected function getBlockName(): string
34
    {
35
        return 'schema-config-options';
36
    }
37
38
    protected function getBlockCategory(): ?AbstractBlockCategory
39
    {
40
        $instanceManager = InstanceManagerFacade::getInstance();
41
        /**
42
         * @var SchemaConfigurationBlockCategory
43
         */
44
        $blockCategory = $instanceManager->getInstance(SchemaConfigurationBlockCategory::class);
45
        return $blockCategory;
46
    }
47
48
    protected function isDynamicBlock(): bool
49
    {
50
        return true;
51
    }
52
53
    /**
54
     * @param array<string, mixed> $attributes
55
     */
56
    public function renderBlock(array $attributes, string $content): string
57
    {
58
        // Append "-front" because this style must be used only on the client, not on the admin
59
        $className = $this->getBlockClassName() . '-front';
60
61
        $blockContentPlaceholder = '<p><strong>%s</strong> %s</p>';
62
        $blockContent = '';
63
64
        $moduleRegistry = ModuleRegistryFacade::getInstance();
65
        if ($moduleRegistry->isModuleEnabled(SchemaConfigurationFunctionalityModuleResolver::PUBLIC_PRIVATE_SCHEMA)) {
66
            $schemaModeLabels = [
67
                SchemaModes::PUBLIC_SCHEMA_MODE => \__('Public', 'graphql-api'),
68
                SchemaModes::PRIVATE_SCHEMA_MODE => \__('Private', 'graphql-api'),
69
            ];
70
            $blockContent .= sprintf(
71
                $blockContentPlaceholder,
72
                \__('Public/Private Schema:', 'graphql-api'),
73
                $schemaModeLabels[$attributes[self::ATTRIBUTE_NAME_DEFAULT_SCHEMA_MODE]] ?? ComponentConfiguration::getSettingsValueLabel()
74
            );
75
        }
76
77
        if ($moduleRegistry->isModuleEnabled(SchemaConfigurationFunctionalityModuleResolver::SCHEMA_NAMESPACING)) {
78
            $useNamespacingLabels = [
79
                self::ATTRIBUTE_VALUE_USE_NAMESPACING_ENABLED => \__('✅ Yes', 'graphql-api'),
80
                self::ATTRIBUTE_VALUE_USE_NAMESPACING_DISABLED => \__('❌ No', 'graphql-api'),
81
            ];
82
            $blockContent .= sprintf(
83
                $blockContentPlaceholder,
84
                \__('Use namespacing?', 'graphql-api'),
85
                $useNamespacingLabels[$attributes[self::ATTRIBUTE_NAME_USE_NAMESPACING]] ?? ComponentConfiguration::getSettingsValueLabel()
86
            );
87
        }
88
89
        if ($moduleRegistry->isModuleEnabled(OperationalFunctionalityModuleResolver::NESTED_MUTATIONS)) {
90
            $mutationSchemeLabels = [
91
                MutationSchemes::STANDARD => \__('❌ Do not enable nested mutations', 'graphql-api'),
92
                MutationSchemes::NESTED_WITH_REDUNDANT_ROOT_FIELDS => \__('✅ Nested mutations enabled, keeping all mutation fields in the root type', 'graphql-api'),
93
                MutationSchemes::NESTED_WITHOUT_REDUNDANT_ROOT_FIELDS => \__('✳️ Nested mutations enabled, removing the redundant mutation fields from the root type', 'graphql-api'),
94
            ];
95
            $blockContent .= sprintf(
96
                $blockContentPlaceholder,
97
                \__('Mutation Scheme', 'graphql-api'),
98
                $mutationSchemeLabels[$attributes[self::ATTRIBUTE_NAME_MUTATION_SCHEME]] ?? ComponentConfiguration::getSettingsValueLabel()
99
            );
100
        }
101
102
        // If all modules are disabled and there are not options...
103
        if ($blockContent == '') {
104
            $blockContent = sprintf(
105
                '<p>%s</p>',
106
                \__('(Nothing here: All Schema Configuration options are disabled)', 'graphql-api')
107
            );
108
        }
109
110
        $blockContentPlaceholder = <<<EOT
111
        <div class="%s">
112
            <h3 class="%s">%s</h3>
113
            %s
114
        </div>
115
EOT;
116
        return sprintf(
117
            $blockContentPlaceholder,
118
            $className . ' ' . $this->getAlignClass(),
119
            $className . '__title',
120
            \__('Options', 'graphql-api'),
121
            $blockContent
122
        );
123
    }
124
125
    /**
126
     * Pass localized data to the block
127
     *
128
     * @return array<string, mixed>
129
     */
130
    protected function getLocalizedData(): array
131
    {
132
        $moduleRegistry = ModuleRegistryFacade::getInstance();
133
        return array_merge(
134
            parent::getLocalizedData(),
135
            [
136
                'isPublicPrivateSchemaEnabled' => $moduleRegistry->isModuleEnabled(SchemaConfigurationFunctionalityModuleResolver::PUBLIC_PRIVATE_SCHEMA),
137
                'isSchemaNamespacingEnabled' => $moduleRegistry->isModuleEnabled(SchemaConfigurationFunctionalityModuleResolver::SCHEMA_NAMESPACING),
138
                'isNestedMutationsEnabled' => $moduleRegistry->isModuleEnabled(OperationalFunctionalityModuleResolver::NESTED_MUTATIONS),
139
            ]
140
        );
141
    }
142
143
    /**
144
     * Register index.css
145
     *
146
     * @return boolean
147
     */
148
    protected function registerEditorCSS(): bool
149
    {
150
        return true;
151
    }
152
    /**
153
     * Register style-index.css
154
     *
155
     * @return boolean
156
     */
157
    protected function registerCommonStyleCSS(): bool
158
    {
159
        return true;
160
    }
161
}
162