Passed
Pull Request — develop (#340)
by Felipe
04:56
created

PostgresDoc::getHelpTopics()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 1
c 0
b 0
f 0
nc 2
nop 1
dl 0
loc 3
rs 10
1
<?php
2
3
/**
4
 * PHPPgAdmin 6.0.0
5
 */
6
7
namespace PHPPgAdmin\Help;
8
9
/**
10
 * Help links for PostgreSQL 7.4 documentation.
11
 */
12
class PostgresDoc
13
{
14
    use \PHPPgAdmin\Traits\HelperTrait;
15
16
    /**
17
     * @var float
18
     */
19
    protected $major_version;
20
21
    /**
22
     * @var array
23
     */
24
    protected $help_topics;
25
26
    /**
27
     * @var array
28
     */
29
    protected $conf;
30
31
    public function __construct($conf, $major_version)
32
    {
33
        $this->major_version = $major_version;
34
        $this->conf = $conf;
35
36
        // TODO: Check and fix links
37
        $this->help_topics = [
38
            'pg.database' => 'managing-databases.html',
39
            'pg.database.create' => ['sql-createdatabase.html', 'manage-ag-createdb.html'],
40
            'pg.database.alter' => 'sql-alterdatabase.html',
41
            'pg.database.drop' => ['sql-dropdatabase.html', 'manage-ag-dropdb.html'],
42
            'pg.admin.analyze' => 'sql-analyze.html',
43
            'pg.admin.vacuum' => 'sql-vacuum.html',
44
            'pg.cast' => ['sql-expressions.html#SQL-SYNTAX-TYPE-CASTS', 'sql-createcast.html'],
45
            'pg.cast.create' => 'sql-createcast.html',
46
            'pg.cast.drop' => 'sql-dropcast.html',
47
            'pg.column.add' => ['ddl-alter.html#AEN2115', 'sql-altertable.html'],
48
            'pg.column.alter' => ['ddl-alter.html', 'sql-altertable.html'],
49
            'pg.column.drop' => ['ddl-alter.html#AEN2124', 'sql-altertable.html'],
50
            'pg.constraint' => 'ddl-constraints.html',
51
            'pg.constraint.add' => 'ddl-alter.html#AEN2131',
52
            'pg.constraint.check' => 'ddl-constraints.html#AEN1895',
53
            'pg.constraint.drop' => 'ddl-alter.html#AEN2140',
54
            'pg.constraint.foreign_key' => 'ddl-constraints.html#DDL-CONSTRAINTS-FK',
55
            'pg.constraint.primary_key' => 'ddl-constraints.html#AEN1972',
56
            'pg.constraint.unique_key' => 'ddl-constraints.html#AEN1950',
57
58
            'pg.conversion' => 'multibyte.html',
59
            'pg.conversion.alter' => 'sql-alterconversion.html',
60
            'pg.conversion.create' => 'sql-createconversion.html',
61
            'pg.conversion.drop' => 'sql-dropconversion.html',
62
63
            'pg.domain' => 'extend-type-system.html#AEN28657',
64
            'pg.domain.alter' => 'sql-alterdomain.html',
65
            'pg.domain.create' => 'sql-createdomain.html',
66
            'pg.domain.drop' => 'sql-dropdomain.html',
67
68
            'pg.function' => ['xfunc.html', 'functions.html', 'sql-expressions.html#AEN1599'],
69
            'pg.function.alter' => 'sql-alterfunction.html',
70
            'pg.function.create' => 'sql-createfunction.html',
71
            'pg.function.create.c' => ['xfunc-c.html', 'sql-createfunction.html'],
72
            'pg.function.create.internal' => ['xfunc-internal.html', 'sql-createfunction.html'],
73
            'pg.function.create.pl' => ['xfunc-sql.html', 'xfunc-pl.html', 'sql-createfunction.html'],
74
            'pg.function.drop' => 'sql-dropfunction.html',
75
76
            'pg.group' => 'groups.html',
77
            'pg.group.alter' => ['sql-altergroup.html', 'groups.html'],
78
            'pg.group.create' => 'sql-creategroup.html',
79
            'pg.group.drop' => 'sql-dropgroup.html',
80
81
            'pg.index' => 'indexes.html',
82
            'pg.index.cluster' => 'sql-cluster.html',
83
            'pg.index.drop' => 'sql-dropindex.html',
84
            'pg.index.create' => 'sql-createindex.html',
85
            'pg.index.reindex' => 'sql-reindex.html',
86
87
            'pg.language' => 'xplang.html',
88
            'pg.language.alter' => 'sql-alterlanguage.html',
89
            'pg.language.create' => 'sql-createlanguage.html',
90
            'pg.language.drop' => 'sql-droplanguage.html',
91
92
            'pg.opclass' => 'indexes-opclass.html',
93
            'pg.opclass.alter' => 'sql-alteropclass.html',
94
            'pg.opclass.create' => 'sql-createopclass.html',
95
            'pg.opclass.drop' => 'sql-dropopclass.html',
96
97
            'pg.operator' => ['xoper.html', 'functions.html', 'sql-expressions.html#AEN1570'],
98
            'pg.operator.alter' => 'sql-alteroperator.html',
99
            'pg.operator.create' => 'sql-createoperator.html',
100
            'pg.operator.drop' => 'sql-dropoperator.html',
101
102
            'pg.pl' => 'xplang.html',
103
            'pg.pl.plperl' => 'plperl.html',
104
            'pg.pl.plpgsql' => 'plpgsql.html',
105
            'pg.pl.plpython' => 'plpython.html',
106
            'pg.pl.pltcl' => 'pltcl.html',
107
108
            'pg.privilege' => ['privileges.html', 'ddl-priv.html'],
109
            'pg.privilege.grant' => 'sql-grant.html',
110
            'pg.privilege.revoke' => 'sql-revoke.html',
111
112
            'pg.process' => 'monitoring.html',
113
114
            'pg.rule' => 'rules.html',
115
            'pg.rule.create' => 'sql-createrule.html',
116
            'pg.rule.drop' => 'sql-droprule.html',
117
118
            'pg.schema' => 'ddl-schemas.html',
119
            'pg.schema.alter' => 'sql-alterschema.html',
120
            'pg.schema.create' => ['sql-createschema.html', 'ddl-schemas.html#DDL-SCHEMAS-CREATE'],
121
            'pg.schema.drop' => 'sql-dropschema.html',
122
            'pg.schema.search_path' => 'ddl-schemas.html#DDL-SCHEMAS-PATH',
123
124
            'pg.sequence' => 'functions-sequence.html',
125
            'pg.sequence.alter' => 'sql-altersequence.html',
126
            'pg.sequence.create' => 'sql-createsequence.html',
127
            'pg.sequence.drop' => 'sql-dropsequence.html',
128
129
            'pg.sql' => ['sql.html', 'sql-commands.html'],
130
            'pg.sql.insert' => 'sql-insert.html',
131
            'pg.sql.select' => 'sql-select.html',
132
            'pg.sql.update' => 'sql-update.html',
133
134
            'pg.table' => 'ddl.html#DDL-BASICS',
135
            'pg.table.alter' => 'sql-altertable.html',
136
            'pg.table.create' => 'sql-createtable.html',
137
            'pg.table.drop' => 'sql-droptable.html',
138
            'pg.table.empty' => 'sql-truncate.html',
139
140
            'pg.tablespace' => 'manage-ag-tablespaces.html',
141
            'pg.tablespace.alter' => 'sql-altertablespace.html',
142
            'pg.tablespace.create' => 'sql-createtablespace.html',
143
            'pg.tablespace.drop' => 'sql-droptablespace.html',
144
145
            'pg.trigger' => 'triggers.html',
146
            'pg.trigger.alter' => 'sql-altertrigger.html',
147
            'pg.trigger.create' => 'sql-createtrigger.html',
148
            'pg.trigger.drop' => 'sql-droptrigger.html',
149
150
            'pg.type' => ['xtypes.html', 'datatype.html', 'extend-type-system.html'],
151
            'pg.type.alter' => 'sql-altertype.html',
152
            'pg.type.create' => 'sql-createtype.html',
153
            'pg.type.drop' => 'sql-droptype.html',
154
155
            'pg.user.alter' => ['sql-alteruser.html', 'user-attributes.html'],
156
            'pg.user.create' => ['sql-createuser.html', 'user-manag.html#DATABASE-USERS'],
157
            'pg.user.drop' => ['sql-dropuser.html', 'user-manag.html#DATABASE-USERS'],
158
159
            'pg.variable' => 'runtime-config.html',
160
161
            'pg.view' => 'tutorial-views.html',
162
            'pg.view.alter' => ['sql-createview.html', 'sql-altertable.html'],
163
            'pg.view.create' => 'sql-createview.html',
164
            'pg.view.drop' => 'sql-dropview.html',
165
166
            'pg.aggregate' => ['xaggr.html', 'tutorial-agg.html', 'functions-aggregate.html', 'sql-expressions.html#SYNTAX-AGGREGATES'],
167
            'pg.aggregate.create' => 'sql-createaggregate.html',
168
            'pg.aggregate.drop' => 'sql-dropaggregate.html',
169
            'pg.aggregate.alter' => 'sql-alteraggregate.html',
170
171
            'pg.server' => 'admin.html',
172
173
            'pg.user' => 'user-manag.html',
174
175
            'pg.locks' => 'view-pg-locks.html',
176
        ];
177
    }
178
179
    public function getHelpBase()
180
    {
181
        return \sprintf(\str_replace('http://', 'https://', $this->conf['help_base']), (string) ($this->major_version));
182
    }
183
184
    /**
185
     * Undocumented function.
186
     *
187
     * @param null|string $topic
188
     *
189
     * @return null|string|string[]
190
     */
191
    public function getHelpTopics(?string $topic = null): array
192
    {
193
        return  $topic ? $this->help_topics[$topic] ?? null : $this->help_topics;
0 ignored issues
show
Bug Best Practice introduced by
The expression return $topic ? $this->h...ll : $this->help_topics could return the type null which is incompatible with the type-hinted return array. Consider adding an additional type-check to rule them out.
Loading history...
194
    }
195
196
    /**
197
     * Undocumented function.
198
     *
199
     * @param string $topic
200
     *
201
     * @return null|string|string[]
202
     */
203
    public function getHelpTopic(string $topic)
204
    {
205
        return  $this->help_topics[$topic] ?? null;
206
    }
207
}
208