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 ( b38aca...ed3c2e )
by Leonardo
06:08 queued 57s
created

Menu::getAboutMenuPageClass()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 0
Metric Value
cc 2
eloc 4
nc 2
nop 0
dl 0
loc 6
rs 10
c 0
b 0
f 0
ccs 0
cts 5
cp 0
crap 6
1
<?php
2
3
declare(strict_types=1);
4
5
namespace GraphQLAPI\GraphQLAPI\Admin\Menus;
6
7
use GraphQLAPI\GraphQLAPI\General\RequestParams;
8
use GraphQLAPI\GraphQLAPI\Admin\Menus\AbstractMenu;
9
use GraphQLAPI\GraphQLAPI\Security\UserAuthorization;
10
use GraphQLAPI\GraphQLAPI\Facades\ModuleRegistryFacade;
11
use GraphQLAPI\GraphQLAPI\Admin\MenuPages\AboutMenuPage;
12
use GraphQLAPI\GraphQLAPI\Admin\MenuPages\ModulesMenuPage;
13
use GraphQLAPI\GraphQLAPI\Admin\MenuPages\AbstractMenuPage;
14
use GraphQLAPI\GraphQLAPI\Admin\MenuPages\GraphiQLMenuPage;
15
use GraphQLAPI\GraphQLAPI\Admin\MenuPages\SettingsMenuPage;
16
use PoP\ComponentModel\Facades\Instances\InstanceManagerFacade;
17
use GraphQLAPI\GraphQLAPI\Admin\MenuPages\GraphQLVoyagerMenuPage;
18
use GraphQLAPI\GraphQLAPI\Admin\MenuPages\ReleaseNotesAboutMenuPage;
19
use GraphQLAPI\GraphQLAPI\Admin\MenuPages\ModuleDocumentationMenuPage;
20
use GraphQLAPI\GraphQLAPI\ModuleResolvers\ClientFunctionalityModuleResolver;
21
use GraphQLByPoP\GraphQLClientsForWP\ComponentConfiguration as GraphQLClientsForWPComponentConfiguration;
22
23
/**
24
 * Admin menu class
25
 */
26
class Menu extends AbstractMenu
27
{
28
    public const NAME = 'graphql_api';
29
30
    public static function getName(): string
31
    {
32
        return static::NAME;
33
    }
34
35
    /**
36
     * @return string[]
37
     */
38
    protected function getMenuPageClasses(): array
39
    {
40
        return [
41
            GraphiQLMenuPage::class,
42
            GraphQLVoyagerMenuPage::class,
43
            SettingsMenuPage::class,
44
            $this->getModuleMenuPageClass(),
45
            $this->getAboutMenuPageClass(),
46
        ];
47
    }
48
49
    public function addMenuPagesTop(): void
50
    {
51
        parent::addMenuPagesTop();
52
53
        $instanceManager = InstanceManagerFacade::getInstance();
54
55
        $schemaEditorAccessCapability = UserAuthorization::getSchemaEditorAccessCapability();
56
        \add_menu_page(
57
            __('GraphQL API', 'graphql-api'),
58
            __('GraphQL API', 'graphql-api'),
59
            $schemaEditorAccessCapability,
60
            self::NAME,
61
            function () {
62
            },
63
            'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOC4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkdyYXBoUUxfTG9nbyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4Ig0KCSB5PSIwcHgiIHZpZXdCb3g9IjAgMCA0MDAgNDAwIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA0MDAgNDAwIiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxnPg0KCQk8Zz4NCgkJCQ0KCQkJCTxyZWN0IHg9IjEyMiIgeT0iLTAuNCIgdHJhbnNmb3JtPSJtYXRyaXgoLTAuODY2IC0wLjUgMC41IC0wLjg2NiAxNjMuMzE5NiAzNjMuMzEzNikiIGZpbGw9IiNFNTM1QUIiIHdpZHRoPSIxNi42IiBoZWlnaHQ9IjMyMC4zIi8+DQoJCTwvZz4NCgk8L2c+DQoJPGc+DQoJCTxnPg0KCQkJPHJlY3QgeD0iMzkuOCIgeT0iMjcyLjIiIGZpbGw9IiNFNTM1QUIiIHdpZHRoPSIzMjAuMyIgaGVpZ2h0PSIxNi42Ii8+DQoJCTwvZz4NCgk8L2c+DQoJPGc+DQoJCTxnPg0KCQkJDQoJCQkJPHJlY3QgeD0iMzcuOSIgeT0iMzEyLjIiIHRyYW5zZm9ybT0ibWF0cml4KC0wLjg2NiAtMC41IDAuNSAtMC44NjYgODMuMDY5MyA2NjMuMzQwOSkiIGZpbGw9IiNFNTM1QUIiIHdpZHRoPSIxODUiIGhlaWdodD0iMTYuNiIvPg0KCQk8L2c+DQoJPC9nPg0KCTxnPg0KCQk8Zz4NCgkJCQ0KCQkJCTxyZWN0IHg9IjE3Ny4xIiB5PSI3MS4xIiB0cmFuc2Zvcm09Im1hdHJpeCgtMC44NjYgLTAuNSAwLjUgLTAuODY2IDQ2My4zNDA5IDI4My4wNjkzKSIgZmlsbD0iI0U1MzVBQiIgd2lkdGg9IjE4NSIgaGVpZ2h0PSIxNi42Ii8+DQoJCTwvZz4NCgk8L2c+DQoJPGc+DQoJCTxnPg0KCQkJDQoJCQkJPHJlY3QgeD0iMTIyLjEiIHk9Ii0xMyIgdHJhbnNmb3JtPSJtYXRyaXgoLTAuNSAtMC44NjYgMC44NjYgLTAuNSAxMjYuNzkwMyAyMzIuMTIyMSkiIGZpbGw9IiNFNTM1QUIiIHdpZHRoPSIxNi42IiBoZWlnaHQ9IjE4NSIvPg0KCQk8L2c+DQoJPC9nPg0KCTxnPg0KCQk8Zz4NCgkJCQ0KCQkJCTxyZWN0IHg9IjEwOS42IiB5PSIxNTEuNiIgdHJhbnNmb3JtPSJtYXRyaXgoLTAuNSAtMC44NjYgMC44NjYgLTAuNSAyNjYuMDgyOCA0NzMuMzc2NikiIGZpbGw9IiNFNTM1QUIiIHdpZHRoPSIzMjAuMyIgaGVpZ2h0PSIxNi42Ii8+DQoJCTwvZz4NCgk8L2c+DQoJPGc+DQoJCTxnPg0KCQkJPHJlY3QgeD0iNTIuNSIgeT0iMTA3LjUiIGZpbGw9IiNFNTM1QUIiIHdpZHRoPSIxNi42IiBoZWlnaHQ9IjE4NSIvPg0KCQk8L2c+DQoJPC9nPg0KCTxnPg0KCQk8Zz4NCgkJCTxyZWN0IHg9IjMzMC45IiB5PSIxMDcuNSIgZmlsbD0iI0U1MzVBQiIgd2lkdGg9IjE2LjYiIGhlaWdodD0iMTg1Ii8+DQoJCTwvZz4NCgk8L2c+DQoJPGc+DQoJCTxnPg0KCQkJDQoJCQkJPHJlY3QgeD0iMjYyLjQiIHk9IjI0MC4xIiB0cmFuc2Zvcm09Im1hdHJpeCgtMC41IC0wLjg2NiAwLjg2NiAtMC41IDEyNi43OTUzIDcxNC4yODc1KSIgZmlsbD0iI0U1MzVBQiIgd2lkdGg9IjE0LjUiIGhlaWdodD0iMTYwLjkiLz4NCgkJPC9nPg0KCTwvZz4NCgk8cGF0aCBmaWxsPSIjRTUzNUFCIiBkPSJNMzY5LjUsMjk3LjljLTkuNiwxNi43LTMxLDIyLjQtNDcuNywxMi44Yy0xNi43LTkuNi0yMi40LTMxLTEyLjgtNDcuN2M5LjYtMTYuNywzMS0yMi40LDQ3LjctMTIuOA0KCQlDMzczLjUsMjU5LjksMzc5LjIsMjgxLjIsMzY5LjUsMjk3LjkiLz4NCgk8cGF0aCBmaWxsPSIjRTUzNUFCIiBkPSJNOTAuOSwxMzdjLTkuNiwxNi43LTMxLDIyLjQtNDcuNywxMi44Yy0xNi43LTkuNi0yMi40LTMxLTEyLjgtNDcuN2M5LjYtMTYuNywzMS0yMi40LDQ3LjctMTIuOA0KCQlDOTQuOCw5OSwxMDAuNSwxMjAuMyw5MC45LDEzNyIvPg0KCTxwYXRoIGZpbGw9IiNFNTM1QUIiIGQ9Ik0zMC41LDI5Ny45Yy05LjYtMTYuNy0zLjktMzgsMTIuOC00Ny43YzE2LjctOS42LDM4LTMuOSw0Ny43LDEyLjhjOS42LDE2LjcsMy45LDM4LTEyLjgsNDcuNw0KCQlDNjEuNCwzMjAuMyw0MC4xLDMxNC42LDMwLjUsMjk3LjkiLz4NCgk8cGF0aCBmaWxsPSIjRTUzNUFCIiBkPSJNMzA5LjEsMTM3Yy05LjYtMTYuNy0zLjktMzgsMTIuOC00Ny43YzE2LjctOS42LDM4LTMuOSw0Ny43LDEyLjhjOS42LDE2LjcsMy45LDM4LTEyLjgsNDcuNw0KCQlDMzQwLjEsMTU5LjQsMzE4LjcsMTUzLjcsMzA5LjEsMTM3Ii8+DQoJPHBhdGggZmlsbD0iI0U1MzVBQiIgZD0iTTIwMCwzOTUuOGMtMTkuMywwLTM0LjktMTUuNi0zNC45LTM0LjljMC0xOS4zLDE1LjYtMzQuOSwzNC45LTM0LjljMTkuMywwLDM0LjksMTUuNiwzNC45LDM0LjkNCgkJQzIzNC45LDM4MC4xLDIxOS4zLDM5NS44LDIwMCwzOTUuOCIvPg0KCTxwYXRoIGZpbGw9IiNFNTM1QUIiIGQ9Ik0yMDAsNzRjLTE5LjMsMC0zNC45LTE1LjYtMzQuOS0zNC45YzAtMTkuMywxNS42LTM0LjksMzQuOS0zNC45YzE5LjMsMCwzNC45LDE1LjYsMzQuOSwzNC45DQoJCUMyMzQuOSw1OC40LDIxOS4zLDc0LDIwMCw3NCIvPg0KPC9nPg0KPC9zdmc+DQo='
64
        );
65
66
        /**
67
         * @var GraphiQLMenuPage
68
         */
69
        $graphiQLMenuPage = $instanceManager->getInstance(GraphiQLMenuPage::class);
70
        if ($hookName = \add_submenu_page(
71
            self::NAME,
72
            __('GraphiQL', 'graphql-api'),
73
            __('GraphiQL', 'graphql-api'),
74
            $schemaEditorAccessCapability,
75
            self::NAME,
76
            [$graphiQLMenuPage, 'print']
77
        )
78
        ) {
79
            $graphiQLMenuPage->setHookName($hookName);
80
        }
81
82
        /**
83
         * @var GraphQLVoyagerMenuPage
84
         */
85
        $graphQLVoyagerMenuPage = $instanceManager->getInstance(GraphQLVoyagerMenuPage::class);
86
        if ($hookName = \add_submenu_page(
87
            self::NAME,
88
            __('Interactive Schema', 'graphql-api'),
89
            __('Interactive Schema', 'graphql-api'),
90
            $schemaEditorAccessCapability,
91
            $graphQLVoyagerMenuPage->getScreenID(),
92
            [$graphQLVoyagerMenuPage, 'print']
93
        )
94
        ) {
95
            $graphQLVoyagerMenuPage->setHookName($hookName);
96
        }
97
    }
98
99
    /**
100
     * Either the Modules menu page, or the Module Documentation menu page,
101
     * based on parameter ?tab="docs" or not
102
     */
103
    protected function getModuleMenuPageClass(): string
104
    {
105
        return
106
            ($_GET[RequestParams::TAB] == RequestParams::TAB_DOCS) ?
107
            ModuleDocumentationMenuPage::class :
108
            ModulesMenuPage::class;
109
    }
110
111
    /**
112
     * Either the About menu page, or the Release Notes menu page,
113
     * based on parameter ?tab="docs" or not
114
     */
115
    protected function getAboutMenuPageClass(): string
116
    {
117
        return
118
            ($_GET[RequestParams::TAB] == RequestParams::TAB_DOCS) ?
119
            ReleaseNotesAboutMenuPage::class :
120
            AboutMenuPage::class;
121
    }
122
123
    public function addMenuPagesBottom(): void
124
    {
125
        parent::addMenuPagesBottom();
126
127
        $instanceManager = InstanceManagerFacade::getInstance();
128
        $menuPageClass = $this->getModuleMenuPageClass();
129
        /**
130
         * @var AbstractMenuPage
131
         */
132
        $modulesMenuPage = $instanceManager->getInstance($menuPageClass);
133
        /**
134
         * @var callable
135
         */
136
        $callable = [$modulesMenuPage, 'print'];
137
        if ($hookName = \add_submenu_page(
138
            self::NAME,
139
            __('Modules', 'graphql-api'),
140
            __('Modules', 'graphql-api'),
141
            'manage_options',
142
            $modulesMenuPage->getScreenID(),
143
            $callable
144
        )
145
        ) {
146
            $modulesMenuPage->setHookName($hookName);
147
        }
148
149
        /**
150
         * @var SettingsMenuPage
151
         */
152
        $settingsMenuPage = $instanceManager->getInstance(SettingsMenuPage::class);
153
        if ($hookName = \add_submenu_page(
154
            self::NAME,
155
            __('Settings', 'graphql-api'),
156
            __('Settings', 'graphql-api'),
157
            'manage_options',
158
            $settingsMenuPage->getScreenID(),
159
            [$settingsMenuPage, 'print']
160
        )
161
        ) {
162
            $settingsMenuPage->setHookName($hookName);
163
        }
164
165
        $moduleRegistry = ModuleRegistryFacade::getInstance();
166
        if ($moduleRegistry->isModuleEnabled(ClientFunctionalityModuleResolver::GRAPHIQL_FOR_SINGLE_ENDPOINT)) {
167
            global $submenu;
168
            $clientPath = GraphQLClientsForWPComponentConfiguration::getGraphiQLClientEndpoint();
169
            $submenu[self::NAME][] = [
170
                __('GraphiQL (public client)', 'graphql-api'),
171
                'read',
172
                home_url($clientPath),
173
            ];
174
        }
175
176
        if ($moduleRegistry->isModuleEnabled(ClientFunctionalityModuleResolver::INTERACTIVE_SCHEMA_FOR_SINGLE_ENDPOINT)) {
177
            global $submenu;
178
            $clientPath = GraphQLClientsForWPComponentConfiguration::getVoyagerClientEndpoint();
179
            $submenu[self::NAME][] = [
180
                __('Interactive Schema (public client)', 'graphql-api'),
181
                'read',
182
                home_url($clientPath),
183
            ];
184
        }
185
186
        $aboutPageClass = $this->getAboutMenuPageClass();
187
        /**
188
         * @var AbstractMenuPage
189
         */
190
        $aboutMenuPage = $instanceManager->getInstance($aboutPageClass);
191
        if ($hookName = \add_submenu_page(
192
            self::NAME,
193
            __('About', 'graphql-api'),
194
            __('About', 'graphql-api'),
195
            'read',
196
            $aboutMenuPage->getScreenID(),
197
            [$aboutMenuPage, 'print']
198
        )
199
        ) {
200
            $aboutMenuPage->setHookName($hookName);
201
        }
202
203
        // $schemaEditorAccessCapability = UserAuthorization::getSchemaEditorAccessCapability();
204
        // if (\current_user_can($schemaEditorAccessCapability)) {
205
        //     global $submenu;
206
        //     $submenu[self::NAME][] = [
207
        //         __('Documentation', 'graphql-api'),
208
        //         $schemaEditorAccessCapability,
209
        //         'https://graphql-api.com/documentation/',
210
        //     ];
211
        // }
212
    }
213
}
214