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::renderBlock()   B

Complexity

Conditions 5
Paths 16

Size

Total Lines 66
Code Lines 45

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 30

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 5
eloc 45
c 1
b 0
f 0
nc 16
nop 2
dl 0
loc 66
ccs 0
cts 18
cp 0
crap 30
rs 8.8888

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

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