Query Monitor - Version 3.1.1

Version Description

Download this release

Release Info

Developer johnbillion
Plugin Icon 128x128 Query Monitor
Version 3.1.1
Comparing to
See all releases

Code changes from version 3.1.0 to 3.1.1

assets/query-monitor-dark.css ADDED
@@ -0,0 +1,986 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * The dark colour scheme for Query Monitor.
3
+ *
4
+ * @package query-monitor
5
+ */
6
+ /* === Admin Toolbar === */
7
+ #wpadminbar .quicklinks .menupop ul li.qm-true > a {
8
+ color: #8c8 !important;
9
+ }
10
+ #wpadminbar .quicklinks .menupop ul li.qm-true > a:focus, #wpadminbar .quicklinks .menupop ul li.qm-true > a:hover {
11
+ color: #52b552 !important;
12
+ }
13
+ #wpadminbar .qm-alert {
14
+ background-color: #f60;
15
+ }
16
+ #wpadminbar #wp-admin-bar-query-monitor-notices a,
17
+ #wpadminbar .qm-notice {
18
+ background-color: #740;
19
+ }
20
+ #wpadminbar #wp-admin-bar-query-monitor-deprecateds a,
21
+ #wpadminbar .qm-deprecated {
22
+ background-color: #3c3c3c;
23
+ }
24
+ #wpadminbar #wp-admin-bar-query-monitor-stricts a,
25
+ #wpadminbar .qm-strict {
26
+ background-color: #3c3c3c;
27
+ }
28
+ #wpadminbar #wp-admin-bar-query-monitor-expensive a,
29
+ #wpadminbar .qm-expensive {
30
+ background-color: #b60;
31
+ }
32
+ #wpadminbar #wp-admin-bar-query-monitor-logger-warning a,
33
+ #wpadminbar #wp-admin-bar-query-monitor-warnings a,
34
+ #wpadminbar .qm-warning {
35
+ background-color: #c00;
36
+ }
37
+ #wpadminbar #wp-admin-bar-query-monitor-logger-warning a:hover,
38
+ #wpadminbar #wp-admin-bar-query-monitor-warnings a:hover,
39
+ #wpadminbar .qm-warning:hover {
40
+ background-color: #b00;
41
+ color: #ddd !important;
42
+ }
43
+ #wpadminbar #wp-admin-bar-query-monitor-errors a,
44
+ #wpadminbar .qm-error {
45
+ background-color: #c00;
46
+ }
47
+
48
+ #wp-admin-bar-query-monitor *,
49
+ #wp-admin-bar-query-monitor {
50
+ direction: ltr !important;
51
+ text-align: left !important;
52
+ }
53
+
54
+ body.admin-color-light #wp-admin-bar-query-monitor:not(.qm-all-clear):not(:hover):not(.hover) .ab-label,
55
+ #wp-admin-bar-query-monitor-deprecateds a,
56
+ #wp-admin-bar-query-monitor-stricts a,
57
+ #wp-admin-bar-query-monitor-notices a,
58
+ #wp-admin-bar-query-monitor-expensive a,
59
+ #wp-admin-bar-query-monitor-logger-warning a,
60
+ #wp-admin-bar-query-monitor-warnings a,
61
+ #wp-admin-bar-query-monitor-errors a {
62
+ color: #eee !important;
63
+ }
64
+
65
+ #wp-admin-bar-query-monitor small {
66
+ font-size: 11px !important;
67
+ }
68
+
69
+ #wp-admin-bar-query-monitor.hover a small,
70
+ #wp-admin-bar-query-monitor.hover a .ab-label {
71
+ text-shadow: none !important;
72
+ }
73
+
74
+ #wp-admin-bar-query-monitor-placeholder,
75
+ #wp-admin-bar-query-monitor-default {
76
+ display: none;
77
+ }
78
+
79
+ #wpadminbar #wp-admin-bar-query-monitor .ab-icon {
80
+ font: 18px/44px 'Open Sans', sans-serif !important;
81
+ /* @todo remove open sans */
82
+ width: auto !important;
83
+ padding: 0 10px !important;
84
+ color: #aaa !important;
85
+ display: none !important;
86
+ }
87
+
88
+ @media screen and (max-width: 782px) {
89
+ /* force menu icon to show up */
90
+ #wpadminbar #wp-admin-bar-query-monitor .ab-icon {
91
+ display: block !important;
92
+ }
93
+
94
+ /* hide menu text */
95
+ #wpadminbar #wp-admin-bar-query-monitor .ab-label {
96
+ display: none !important;
97
+ }
98
+ }
99
+ /* === Main QM Panel === */
100
+ #query-monitor,
101
+ #query-monitor dl,
102
+ #query-monitor dt,
103
+ #query-monitor dd,
104
+ #query-monitor button,
105
+ #query-monitor label,
106
+ #query-monitor select,
107
+ #query-monitor table,
108
+ #query-monitor td,
109
+ #query-monitor th,
110
+ #query-monitor ul,
111
+ #query-monitor ol,
112
+ #query-monitor li,
113
+ #query-monitor code,
114
+ #query-monitor a,
115
+ #query-monitor h1,
116
+ #query-monitor h2,
117
+ #query-monitor h3,
118
+ #query-monitor h4,
119
+ #query-monitor h5,
120
+ #query-monitor h6,
121
+ #query-monitor p {
122
+ /* reset */
123
+ background: transparent !important;
124
+ color: #bbc8d4 !important;
125
+ box-sizing: border-box !important;
126
+ text-align: left !important;
127
+ font-style: normal !important;
128
+ font-weight: normal !important;
129
+ font-size: 12px !important;
130
+ line-height: 18px !important;
131
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif !important;
132
+ border: none !important;
133
+ padding: 0 !important;
134
+ margin: 0 !important;
135
+ vertical-align: baseline !important;
136
+ text-shadow: none !important;
137
+ text-transform: none !important;
138
+ -webkit-font-smoothing: auto !important;
139
+ letter-spacing: normal !important;
140
+ border-radius: 0 !important;
141
+ transition: none !important;
142
+ word-wrap: normal !important;
143
+ word-break: normal !important;
144
+ outline: none !important;
145
+ box-shadow: none !important;
146
+ text-indent: 0 !important;
147
+ }
148
+
149
+ #query-monitor {
150
+ background: #23282d !important;
151
+ margin: 0 !important;
152
+ border-top: 1px solid #bbc8d4 !important;
153
+ text-align: left !important;
154
+ display: none;
155
+ position: fixed;
156
+ z-index: 99998 !important;
157
+ bottom: 0 !important;
158
+ left: 0 !important;
159
+ right: 0 !important;
160
+ width: 100% !important;
161
+ direction: ltr !important;
162
+ }
163
+
164
+ #query-monitor.qm-show,
165
+ #query-monitor.qm-peek {
166
+ height: 27px;
167
+ display: flex;
168
+ flex-direction: column !important;
169
+ }
170
+
171
+ #query-monitor.qm-show {
172
+ height: 40%;
173
+ }
174
+
175
+ #query-monitor #qm-wrapper {
176
+ display: flex;
177
+ flex-grow: 1 !important;
178
+ /* Fix nested scrolling in Firefox. See https://bugzilla.mozilla.org/show_bug.cgi?id=1043520: */
179
+ min-height: 0;
180
+ }
181
+ #query-monitor #qm-title {
182
+ background: #32373c !important;
183
+ border-bottom: 1px solid #bbc8d4 !important;
184
+ cursor: ns-resize !important;
185
+ align-items: center !important;
186
+ display: flex !important;
187
+ padding: 0 0 0 5px !important;
188
+ height: 27px !important;
189
+ flex-shrink: 0 !important;
190
+ -moz-user-select: none !important;
191
+ -ms-user-select: none !important;
192
+ -webkit-user-select: none !important;
193
+ user-select: none !important;
194
+ }
195
+ #query-monitor #qm-title .qm-title-heading {
196
+ flex-grow: 1 !important;
197
+ border-right: 1px solid #bbb !important;
198
+ margin-right: 8px !important;
199
+ }
200
+ #query-monitor #qm-title div.qm-title-heading {
201
+ display: none;
202
+ }
203
+ #query-monitor #qm-title .qm-title-button {
204
+ flex-shrink: 0 !important;
205
+ }
206
+ #query-monitor #qm-title .dashicons {
207
+ transition: none !important;
208
+ }
209
+ #query-monitor #qm-title .qm-button-container-settings .dashicons,
210
+ #query-monitor #qm-title .qm-button-container-pin .dashicons {
211
+ font-size: 17px !important;
212
+ margin: 3px 0 2px !important;
213
+ }
214
+ #query-monitor #qm-title .qm-button-container-close .dashicons {
215
+ margin: 2px 0 3px !important;
216
+ }
217
+ #query-monitor #qm-title button {
218
+ color: #bbc8d4 !important;
219
+ background: transparent !important;
220
+ cursor: pointer !important;
221
+ margin: 0 0 0 0px !important;
222
+ display: inline-block !important;
223
+ padding: 0px 4px !important;
224
+ }
225
+ #query-monitor #qm-title button:focus,
226
+ #query-monitor #qm-title button:hover {
227
+ color: #32373c !important;
228
+ background: #bbc8d4 !important;
229
+ }
230
+ #query-monitor #qm-title button:active {
231
+ background: #ccc !important;
232
+ }
233
+ #query-monitor #qm-title button.qm-button-active {
234
+ color: #3879d9 !important;
235
+ }
236
+ #query-monitor #qm-title .qm-button-container-pin.qm-button-active .dashicons {
237
+ transform: rotate(-45deg) !important;
238
+ }
239
+ #query-monitor #qm-title .qm-button-container-pin.qm-button-active .dashicons:before {
240
+ margin-left: 2px !important;
241
+ }
242
+ #query-monitor .qm {
243
+ display: none !important;
244
+ }
245
+ #query-monitor #qm-panel-menu {
246
+ overflow-y: scroll !important;
247
+ flex-shrink: 0 !important;
248
+ background: #23282d !important;
249
+ overscroll-behavior: contain !important;
250
+ }
251
+ #query-monitor #qm-panel-menu ul {
252
+ padding: 0 !important;
253
+ margin: 0 !important;
254
+ list-style: none !important;
255
+ }
256
+ #query-monitor #qm-panel-menu li {
257
+ padding: 0 !important;
258
+ margin: 0 !important;
259
+ }
260
+ #query-monitor #qm-panel-menu li button {
261
+ display: block !important;
262
+ padding: 8px 28px 8px 6px !important;
263
+ color: #bbc8d4 !important;
264
+ text-decoration: none !important;
265
+ border-bottom: 1px solid #32373c !important;
266
+ position: relative !important;
267
+ border-right: 1px solid #bbc8d4 !important;
268
+ background: #23282d !important;
269
+ width: 100% !important;
270
+ cursor: pointer !important;
271
+ }
272
+ #query-monitor #qm-panel-menu li button:focus,
273
+ #query-monitor #qm-panel-menu li button:hover {
274
+ background: #def !important;
275
+ color: #222 !important;
276
+ }
277
+ #query-monitor #qm-panel-menu li button:focus {
278
+ text-decoration: underline !important;
279
+ }
280
+ #query-monitor #qm-panel-menu li button.qm-selected-menu {
281
+ background: #0073aa !important;
282
+ color: #fff !important;
283
+ text-shadow: 0 -1px 1px #006291, 1px 0 1px #006291, 0 1px 1px #006291, -1px 0 1px #006291 !important;
284
+ }
285
+ #query-monitor #qm-panel-menu li button.qm-selected-menu:focus {
286
+ background: #0084c4 !important;
287
+ color: #fff !important;
288
+ }
289
+ #query-monitor #qm-panel-menu li button.qm-selected-menu:after {
290
+ right: -1px;
291
+ border: solid 8px transparent;
292
+ content: " ";
293
+ height: 0;
294
+ width: 0;
295
+ position: absolute;
296
+ pointer-events: none;
297
+ border-right-color: #23282d;
298
+ top: 50%;
299
+ margin-top: -8px;
300
+ }
301
+ #query-monitor #qm-panels {
302
+ flex-grow: 1 !important;
303
+ overflow-y: scroll !important;
304
+ overscroll-behavior: contain !important;
305
+ }
306
+ #query-monitor .qm.qm-panel-show {
307
+ display: block !important;
308
+ }
309
+ #query-monitor .qm:focus {
310
+ outline: 0 !important;
311
+ /* @TODO might not need this any more */
312
+ }
313
+ #query-monitor .qm-non-tabular {
314
+ padding: 10px 20px !important;
315
+ }
316
+ #query-monitor .qm-boxed {
317
+ display: flex !important;
318
+ flex-wrap: wrap !important;
319
+ }
320
+ #query-monitor .qm-boxed:not(#qm-broken) + .qm-boxed {
321
+ border-top: 1px solid #bbc8d4 !important;
322
+ padding-top: 10px !important;
323
+ }
324
+ #query-monitor .qm-boxed-wrap {
325
+ flex-wrap: wrap !important;
326
+ }
327
+ #query-monitor .qm .qm-none {
328
+ margin: 2em !important;
329
+ }
330
+ #query-monitor .qm .qm-none p {
331
+ text-align: center !important;
332
+ font-style: italic !important;
333
+ }
334
+ #query-monitor .qm table {
335
+ color: #bbc8d4 !important;
336
+ border-collapse: collapse !important;
337
+ box-shadow: none !important;
338
+ width: 100% !important;
339
+ table-layout: auto !important;
340
+ margin: 0 !important;
341
+ border: none !important;
342
+ border-bottom: 1px solid #23282d !important;
343
+ }
344
+ #query-monitor .qm table + table {
345
+ margin-top: 5px !important;
346
+ border-top: 1px solid #23282d !important;
347
+ }
348
+ #query-monitor #qm-conditionals table,
349
+ #query-monitor #qm-overview table {
350
+ table-layout: fixed !important;
351
+ }
352
+ #query-monitor .qm tr {
353
+ border: none !important;
354
+ }
355
+ #query-monitor .qm tbody th,
356
+ #query-monitor .qm tbody td,
357
+ #query-monitor .qm tfoot th,
358
+ #query-monitor .qm tfoot td {
359
+ border: 1px solid #23282d !important;
360
+ padding: 5px 5px 4px 5px !important;
361
+ }
362
+ #query-monitor .qm tbody th,
363
+ #query-monitor .qm tbody td {
364
+ border-top: none !important;
365
+ border-bottom: none !important;
366
+ }
367
+ #query-monitor .qm thead th {
368
+ box-shadow: 0px 1px 0px #23282d !important;
369
+ border: 1px solid #23282d !important;
370
+ border-top: none !important;
371
+ padding: 5px !important;
372
+ position: -webkit-sticky !important;
373
+ position: sticky !important;
374
+ top: 0 !important;
375
+ background: #32373c !important;
376
+ z-index: 1 !important;
377
+ }
378
+ #query-monitor .qm thead .qm-th {
379
+ display: flex !important;
380
+ }
381
+ #query-monitor .qm tfoot tr td,
382
+ #query-monitor .qm tfoot tr th {
383
+ box-shadow: inset 0px 1px 0px #23282d !important;
384
+ border: 1px solid #23282d !important;
385
+ border-bottom: none !important;
386
+ background: #32373c !important;
387
+ position: -webkit-sticky !important;
388
+ position: sticky !important;
389
+ bottom: 0 !important;
390
+ }
391
+ #query-monitor .qm th:first-child,
392
+ #query-monitor .qm td:first-child {
393
+ border-left: none !important;
394
+ }
395
+ #query-monitor .qm th:last-child,
396
+ #query-monitor .qm td:last-child {
397
+ border-right: none !important;
398
+ }
399
+ #query-monitor .qm tfoot td.qm-num,
400
+ #query-monitor .qm tfoot th.qm-num,
401
+ #query-monitor .qm thead td.qm-num,
402
+ #query-monitor .qm thead th.qm-num {
403
+ width: 5.5em !important;
404
+ }
405
+ #query-monitor .qm th.qm-num,
406
+ #query-monitor .qm td.qm-num {
407
+ text-align: right !important;
408
+ }
409
+ #query-monitor .qm td.qm-row-sql {
410
+ min-width: 25em !important;
411
+ }
412
+ #query-monitor .qm tr.qm-warn td.qm-col-status,
413
+ #query-monitor .qm td.qm-url,
414
+ #query-monitor .qm th.qm-col-message,
415
+ #query-monitor .qm td.qm-row-component {
416
+ min-width: 15em !important;
417
+ }
418
+ #query-monitor .qm td.qm-has-toggle p,
419
+ #query-monitor .qm td .qm-toggler {
420
+ padding: 0 22px 0 0 !important;
421
+ position: relative !important;
422
+ }
423
+ #query-monitor .qm td.qm-has-toggle:not(.qm-toggled-on) .qm-supplemental {
424
+ display: none;
425
+ }
426
+ #query-monitor .qm .qm-inner-toggle {
427
+ padding: 4px 6px !important;
428
+ }
429
+
430
+ .qm-has-inner .qm-toggled > table {
431
+ border-top: 1px solid #23282d !important;
432
+ }
433
+
434
+ .qm-inner {
435
+ border-collapse: collapse !important;
436
+ margin: 0 !important;
437
+ border-style: hidden !important;
438
+ width: 100% !important;
439
+ }
440
+
441
+ #query-monitor .qm td.qm-has-inner .qm-toggler,
442
+ #query-monitor .qm td.qm-has-inner {
443
+ padding: 0 !important;
444
+ }
445
+ #query-monitor .qm-non-tabular h3 {
446
+ margin: 0 0 15px 0 !important;
447
+ font-size: 14px !important;
448
+ }
449
+ #query-monitor .qm-non-tabular h4 {
450
+ margin: 20px 0 10px !important;
451
+ font-size: 12px !important;
452
+ }
453
+ #query-monitor .qm-non-tabular p {
454
+ margin-bottom: 10px !important;
455
+ }
456
+ #query-monitor .qm-non-tabular dd {
457
+ margin: 0 0 10px 10px !important;
458
+ }
459
+ #query-monitor .qm-non-tabular h3 a {
460
+ float: right !important;
461
+ }
462
+ #query-monitor .qm-non-tabular .qm-item {
463
+ display: inline-block !important;
464
+ margin: 0 20px 5px 0 !important;
465
+ }
466
+ #query-monitor .qm-non-tabular .qm-section {
467
+ margin: 0 0 30px 0 !important;
468
+ }
469
+ #query-monitor .qm-non-tabular .qm-boxed .qm-section {
470
+ margin: 0 20px 10px 0 !important;
471
+ border-right: 1px solid #bbc8d4 !important;
472
+ padding: 10px 20px 10px 0 !important;
473
+ }
474
+ #query-monitor .qm-non-tabular .qm-boxed .qm-section:last-child {
475
+ margin-right: 0 !important;
476
+ border-right: none !important;
477
+ padding-right: 20px !important;
478
+ }
479
+ #query-monitor .qm-non-tabular table {
480
+ border-bottom-color: #23282d !important;
481
+ }
482
+ #query-monitor .qm ol,
483
+ #query-monitor .qm ul {
484
+ list-style: none !important;
485
+ }
486
+ #query-monitor .qm li {
487
+ display: list-item !important;
488
+ list-style: none !important;
489
+ }
490
+ #query-monitor .qm li::before {
491
+ content: '' !important;
492
+ }
493
+ #query-monitor .qm .qm-has-toggle ol.qm-numbered li {
494
+ list-style: none !important;
495
+ }
496
+ #query-monitor .qm .qm-toggled-on ol.qm-numbered li,
497
+ #query-monitor .qm ol.qm-numbered li {
498
+ list-style: decimal inside !important;
499
+ }
500
+ #query-monitor .qm code,
501
+ #query-monitor .qm pre {
502
+ font-size: 11px !important;
503
+ line-height: 18px !important;
504
+ font-family: Menlo, Monaco, Consolas, monospace !important;
505
+ }
506
+ #query-monitor .qm pre {
507
+ background: transparent !important;
508
+ margin: 0 !important;
509
+ width: auto !important;
510
+ height: auto !important;
511
+ padding: 0 !important;
512
+ }
513
+ #query-monitor .qm .qm-true code,
514
+ #query-monitor .qm p.qm-true,
515
+ #query-monitor .qm span.qm-true,
516
+ #query-monitor .qm td.qm-true {
517
+ color: #4a4 !important;
518
+ }
519
+ #query-monitor .qm .qm-false code,
520
+ #query-monitor .qm span.qm-false,
521
+ #query-monitor .qm td.qm-false {
522
+ color: #999 !important;
523
+ }
524
+ #query-monitor .qm code,
525
+ #query-monitor .qm .qm-nowrap {
526
+ white-space: nowrap !important;
527
+ }
528
+ #query-monitor .qm .qm-wrap code,
529
+ #query-monitor .qm .qm-wrap {
530
+ word-wrap: break-word !important;
531
+ word-break: break-all !important;
532
+ white-space: normal !important;
533
+ }
534
+ #query-monitor .qm .qm-sticky {
535
+ position: sticky !important;
536
+ top: 36px !important;
537
+ }
538
+ #query-monitor .qm .qm-current,
539
+ #query-monitor .qm td.qm-has-toggle p,
540
+ #query-monitor .qm .qm-nonselectsql code,
541
+ #query-monitor .qm .qm-nonselectsql {
542
+ color: #a6a !important;
543
+ }
544
+ #query-monitor .qm .qm-info {
545
+ color: #777 !important;
546
+ }
547
+ #query-monitor .qm .qm-supplemental {
548
+ margin-right: 0.75em !important;
549
+ margin-left: 0.75em !important;
550
+ }
551
+ #query-monitor .qm td .qm-toggled {
552
+ display: none;
553
+ }
554
+ #query-monitor .qm button.qm-button,
555
+ #query-monitor .qm .qm-toggle {
556
+ color: #fff !important;
557
+ font-weight: normal !important;
558
+ background: #0085ba !important;
559
+ cursor: pointer !important;
560
+ border: 1px solid #0073a1 !important;
561
+ border-radius: 2px !important;
562
+ text-shadow: 0 -1px 1px #0073a1, 1px 0 1px #0073a1, 0 1px 1px #0073a1, -1px 0 1px #0073a1 !important;
563
+ }
564
+ #query-monitor .qm .qm-toggle {
565
+ padding: 0 !important;
566
+ font-family: Menlo, Monaco, Consolas, monospace !important;
567
+ position: absolute !important;
568
+ top: 0 !important;
569
+ right: 0 !important;
570
+ left: auto !important;
571
+ bottom: auto !important;
572
+ text-align: center !important;
573
+ line-height: 16px !important;
574
+ height: 18px !important;
575
+ width: 18px !important;
576
+ }
577
+ #query-monitor .qm button {
578
+ cursor: pointer !important;
579
+ }
580
+ #query-monitor .qm button.qm-button {
581
+ padding: 4px 10px !important;
582
+ }
583
+ #query-monitor .qm .qm-has-inner .qm-toggle {
584
+ top: 5px !important;
585
+ right: 5px !important;
586
+ }
587
+ #query-monitor .qm button.qm-button:hover,
588
+ #query-monitor .qm button.qm-button:focus,
589
+ #query-monitor .qm .qm-toggle:focus,
590
+ #query-monitor .qm .qm-toggle:hover {
591
+ text-decoration: none !important;
592
+ color: #fff !important;
593
+ background: #0094ce !important;
594
+ }
595
+ #query-monitor .qm tbody tr.qm-odd td,
596
+ #query-monitor .qm tbody tr.qm-odd th {
597
+ background: #32373c !important;
598
+ }
599
+
600
+ .qm-debug-bar tbody tr:hover th,
601
+ .qm-debug-bar tbody tr:hover td {
602
+ background: #fff !important;
603
+ /* transparent? */
604
+ }
605
+
606
+ #query-monitor .qm-non-tabular .qm-warn,
607
+ #query-monitor .qm thead tr .qm-warn,
608
+ #query-monitor .qm tbody tr .qm-warn {
609
+ background-color: #800 !important;
610
+ color: #fff0f0 !important;
611
+ }
612
+ #query-monitor .qm tbody tr th.qm-warn,
613
+ #query-monitor .qm tbody tr td.qm-warn,
614
+ #query-monitor .qm tbody tr.qm-warn td,
615
+ #query-monitor .qm tbody tr.qm-warn th {
616
+ background-color: #800 !important;
617
+ box-shadow: inset 0 -1px #ffd6d6 !important;
618
+ border-color: #ffd6d6 !important;
619
+ color: #fff0f0 !important;
620
+ }
621
+ #query-monitor .qm-non-tabular .qm-warn code,
622
+ #query-monitor .qm tbody .qm-warn li,
623
+ #query-monitor .qm tbody .qm-warn .qm-info,
624
+ #query-monitor .qm tbody .qm-warn code {
625
+ color: #fff0f0 !important;
626
+ background-color: transparent !important;
627
+ }
628
+ #query-monitor .qm .qm-notice {
629
+ background: #def !important;
630
+ border: 1px solid #aad5ff !important;
631
+ padding: 10px 20px 0 !important;
632
+ margin: 0 0 10px 0 !important;
633
+ }
634
+ #query-monitor .qm .dashicons {
635
+ font-size: 16px !important;
636
+ width: 16px !important;
637
+ height: 16px !important;
638
+ margin-right: 0.3em !important;
639
+ transition: none !important;
640
+ }
641
+ #query-monitor .qm .qm-dashicons-yes {
642
+ color: #fff !important;
643
+ background-color: #0a0 !important;
644
+ border-radius: 50% !important;
645
+ }
646
+ #query-monitor .qm tbody tr.qm-hovered th,
647
+ #query-monitor .qm tbody tr.qm-hovered td,
648
+ #query-monitor .qm tbody tr:hover th,
649
+ #query-monitor .qm tbody tr:hover td {
650
+ background: #3e444a !important;
651
+ }
652
+ #query-monitor .qm thead th.qm-filtered select.qm-filter {
653
+ background-color: #57572a !important;
654
+ color: #bbc8d4 !important;
655
+ }
656
+ #query-monitor .qm tbody tr td.qm-highlight,
657
+ #query-monitor .qm tbody tr.qm-highlight td {
658
+ background-color: #57572a !important;
659
+ box-shadow: inset 0 -1px #660 !important;
660
+ border-color: #660 !important;
661
+ color: #bbc8d4 !important;
662
+ }
663
+
664
+ #query-monitor .qm tbody .qm-warn a code,
665
+ #qm-title a,
666
+ #query-monitor .qm a code,
667
+ #query-monitor .qm a {
668
+ color: #30ceff !important;
669
+ text-decoration: none !important;
670
+ cursor: pointer !important;
671
+ }
672
+ #query-monitor .qm tbody .qm-warn a code:after, #query-monitor .qm tbody .qm-warn a code:focus, #query-monitor .qm tbody .qm-warn a code:hover,
673
+ #qm-title a:after,
674
+ #qm-title a:focus,
675
+ #qm-title a:hover,
676
+ #query-monitor .qm a code:after,
677
+ #query-monitor .qm a code:focus,
678
+ #query-monitor .qm a code:hover,
679
+ #query-monitor .qm a:after,
680
+ #query-monitor .qm a:focus,
681
+ #query-monitor .qm a:hover {
682
+ text-decoration: underline !important;
683
+ color: #4092d2 !important;
684
+ }
685
+
686
+ #query-monitor .qm a.qm-external-link:after,
687
+ #query-monitor .qm a.qm-link:after,
688
+ #query-monitor .qm a.qm-edit-link:after,
689
+ #query-monitor .qm a.qm-filter-trigger:after {
690
+ font-family: dashicons !important;
691
+ text-decoration: none !important;
692
+ visibility: hidden !important;
693
+ display: inline-block !important;
694
+ font-size: 13px !important;
695
+ line-height: 15px !important;
696
+ position: relative !important;
697
+ top: 2px !important;
698
+ left: 2px !important;
699
+ }
700
+
701
+ #query-monitor .qm a.qm-external-link:after,
702
+ #query-monitor.qm-touch .qm a.qm-link:after,
703
+ #query-monitor .qm a.qm-link:hover:after,
704
+ #query-monitor .qm a.qm-link:focus:after,
705
+ #query-monitor.qm-touch .qm a.qm-edit-link:after,
706
+ #query-monitor .qm a.qm-edit-link:hover:after,
707
+ #query-monitor .qm a.qm-edit-link:focus:after,
708
+ #query-monitor.qm-touch .qm a.qm-filter-trigger:after,
709
+ #query-monitor .qm a.qm-filter-trigger:hover:after,
710
+ #query-monitor .qm a.qm-filter-trigger:focus:after {
711
+ visibility: visible !important;
712
+ }
713
+
714
+ #query-monitor .qm a.qm-filter-trigger:after {
715
+ content: '\f536' !important;
716
+ }
717
+
718
+ #query-monitor .qm a.qm-edit-link:after {
719
+ content: '\f464' !important;
720
+ }
721
+
722
+ #query-monitor .qm a.qm-external-link:after,
723
+ #query-monitor .qm a.qm-link:after {
724
+ content: '\f504' !important;
725
+ }
726
+
727
+ #query-monitor #qm-ajax-errors {
728
+ display: none;
729
+ }
730
+
731
+ /* Filters */
732
+ #query-monitor button,
733
+ #query-monitor select {
734
+ margin: 0 !important;
735
+ height: auto !important;
736
+ width: auto !important;
737
+ background: none !important;
738
+ }
739
+
740
+ #query-monitor .qm label {
741
+ cursor: pointer !important;
742
+ color: #bbc8d4 !important;
743
+ font-weight: normal !important;
744
+ font-size: 12px !important;
745
+ font-style: normal !important;
746
+ margin: 0 !important;
747
+ }
748
+
749
+ #query-monitor .qm thead label {
750
+ flex-grow: 1 !important;
751
+ }
752
+
753
+ #query-monitor .qm .qm-filter-container {
754
+ display: flex !important;
755
+ }
756
+
757
+ #query-monitor .qm .qm-filter-container label {
758
+ cursor: default !important;
759
+ }
760
+
761
+ #query-monitor .qm .qm-filter-container div {
762
+ /* Some themes use Select2 etc on all selects. This hides that. */
763
+ display: none !important;
764
+ }
765
+
766
+ #query-monitor .qm select.qm-filter {
767
+ display: block !important;
768
+ margin: 0 0 0 5px !important;
769
+ outline: 1px solid #bbc8d4 !important;
770
+ border: none !important;
771
+ padding: 0 !important;
772
+ background: #32373c !important;
773
+ color: #bbc8d4 !important;
774
+ height: auto !important;
775
+ width: auto !important;
776
+ float: none !important;
777
+ cursor: pointer !important;
778
+ -webkit-appearance: menulist !important;
779
+ -moz-appearance: menulist !important;
780
+ appearance: menulist !important;
781
+ letter-spacing: normal !important;
782
+ max-width: 10em !important;
783
+ }
784
+
785
+ #query-monitor .qm select.qm-filter:hover {
786
+ background: #32373c !important;
787
+ }
788
+
789
+ .qm-hide,
790
+ .qm-hide-scripts-host,
791
+ .qm-hide-styles-host,
792
+ .qm-hide-user,
793
+ .qm-hide-result,
794
+ .qm-hide-name,
795
+ .qm-hide-type,
796
+ .qm-hide-caller,
797
+ .qm-hide-component {
798
+ display: none !important;
799
+ }
800
+
801
+ /* Sorters */
802
+ #query-monitor .qm thead th.qm-sortable-column {
803
+ cursor: pointer !important;
804
+ }
805
+
806
+ #query-monitor .qm thead th.qm-sortable-column:hover {
807
+ background: #32373c !important;
808
+ }
809
+
810
+ #query-monitor .qm .qm-sort-heading {
811
+ flex-grow: 1 !important;
812
+ }
813
+
814
+ #query-monitor .qm .qm-sort-controls {
815
+ text-align: right !important;
816
+ flex-shrink: 0 !important;
817
+ }
818
+
819
+ #query-monitor .qm .qm-sortable-column .qm-sort-arrow {
820
+ font-family: dashicons !important;
821
+ font-size: 23px !important;
822
+ color: #ccc !important;
823
+ margin: 0 !important;
824
+ width: 16px !important;
825
+ height: 10px !important;
826
+ display: block !important;
827
+ }
828
+
829
+ #query-monitor .qm .qm-sorted-desc .qm-sort-arrow,
830
+ #query-monitor .qm .qm-sorted-asc .qm-sort-arrow {
831
+ color: #bbc8d4 !important;
832
+ }
833
+
834
+ #query-monitor .qm thead th.qm-sortable-column:hover .qm-sort-arrow {
835
+ color: #0073aa !important;
836
+ }
837
+
838
+ #query-monitor .qm .qm-sortable-column .qm-sort-arrow:before {
839
+ content: "\f140" !important;
840
+ top: 4px !important;
841
+ right: 0 !important;
842
+ position: absolute !important;
843
+ }
844
+
845
+ #query-monitor .qm .qm-sortable-column.qm-sorted-asc .qm-sort-arrow:before {
846
+ content: "\f142" !important;
847
+ }
848
+
849
+ #query-monitor .qm button:focus,
850
+ #query-monitor .qm a:focus,
851
+ #query-monitor .qm select:focus {
852
+ box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8) !important;
853
+ }
854
+
855
+ #query-monitor .qm-screen-reader-text,
856
+ #query-monitor .screen-reader-text {
857
+ position: absolute !important;
858
+ margin: -1px !important;
859
+ padding: 0 !important;
860
+ height: 1px !important;
861
+ width: 1px !important;
862
+ overflow: hidden !important;
863
+ clip: rect(0 0 0 0) !important;
864
+ border: 0 !important;
865
+ }
866
+
867
+ @media screen and (max-width: 782px) {
868
+ #query-monitor #qm-panel-menu,
869
+ #query-monitor #qm-title h1.qm-title-heading {
870
+ display: none;
871
+ }
872
+
873
+ #query-monitor #qm-title div.qm-title-heading {
874
+ display: block;
875
+ }
876
+ }
877
+ /* State Toggle */
878
+ #query-monitor [data-qm-state="off"] [data-qm-state-visibility="on"],
879
+ #query-monitor [data-qm-state="on"] [data-qm-state-visibility="off"] {
880
+ display: none;
881
+ }
882
+
883
+ /* No-JS tweaks */
884
+ .qm-no-js .qm-sort-controls,
885
+ .qm-no-js .qm-toggle,
886
+ .qm-no-js select.qm-filter {
887
+ display: none !important;
888
+ }
889
+
890
+ /* Debug bar add-ons */
891
+ #query-monitor .qm.qm-debug-bar textarea,
892
+ #query-monitor .qm.qm-debug-bar pre {
893
+ padding: 10px !important;
894
+ border: 1px solid #bbc8d4 !important;
895
+ margin: 4px 0 !important;
896
+ }
897
+
898
+ #query-monitor .qm.qm-debug-bar textarea {
899
+ resize: vertical !important;
900
+ }
901
+
902
+ #query-monitor .qm.qm-debug-bar .left {
903
+ float: left !important;
904
+ }
905
+
906
+ #query-monitor .qm.qm-debug-bar .right {
907
+ float: right !important;
908
+ }
909
+
910
+ #query-monitor .qm.qm-debug-bar h2 {
911
+ font-size: 14px !important;
912
+ margin: 4px 6px 15px !important;
913
+ }
914
+
915
+ #query-monitor .qm.qm-debug-bar h3 {
916
+ float: left !important;
917
+ /* why */
918
+ min-width: 150px !important;
919
+ padding: 5px 10px 15px !important;
920
+ clear: none !important;
921
+ text-align: center !important;
922
+ font-size: 14px !important;
923
+ margin: 3px 8px 15px 0 !important;
924
+ }
925
+
926
+ #query-monitor .qm.qm-debug-bar h3 small {
927
+ font-size: 14px !important;
928
+ }
929
+
930
+ #query-monitor .qm.qm-debug-bar h3 span {
931
+ white-space: nowrap !important;
932
+ display: block !important;
933
+ margin-bottom: 8px !important;
934
+ }
935
+
936
+ #query-monitor .qm.qm-debug-bar h4 {
937
+ margin: 15px 6px 5px !important;
938
+ font-size: 13px !important;
939
+ }
940
+
941
+ #query-monitor .qm.qm-debug-bar .qm-debug-bar-output {
942
+ position: relative !important;
943
+ }
944
+
945
+ #query-monitor .qm.qm-debug-bar .qm-debug-bar-output table {
946
+ margin-top: 4px !important;
947
+ margin-bottom: 4px !important;
948
+ }
949
+
950
+ #query-monitor #debug-menu-target-Debug_Bar_Console {
951
+ min-height: 400px !important;
952
+ }
953
+
954
+ #query-monitor #debug-menu-target-Debug_Bar_Cache_Lookup,
955
+ #query-monitor #debug-menu-target-Debug_Bar_Rewrite_Rules,
956
+ #query-monitor #debug-menu-target-Debug_Bar_Widgets {
957
+ margin: 4px 6px !important;
958
+ }
959
+
960
+ #query-monitor #debug-menu-target-Debug_Bar_Rewrite_Rules_Panel .filterui,
961
+ #query-monitor #debug-menu-target-Debug_Bar_Rewrite_Rules_Panel .dbrr {
962
+ margin: 0 !important;
963
+ }
964
+
965
+ /* Broken output handling */
966
+ #query-monitor.qm-broken #qm-title {
967
+ cursor: default !important;
968
+ }
969
+
970
+ #query-monitor #qm-broken,
971
+ #query-monitor.qm-broken .qm-title-button {
972
+ display: none !important;
973
+ }
974
+
975
+ #query-monitor.qm-broken #qm-broken,
976
+ #query-monitor.qm-broken .qm {
977
+ display: block !important;
978
+ }
979
+
980
+ #query-monitor.qm-broken .qm {
981
+ margin-bottom: 50px !important;
982
+ }
983
+
984
+ #query-monitor.qm-broken #qm-broken h2 {
985
+ padding: 20px !important;
986
+ }
assets/query-monitor.css CHANGED
@@ -1,5 +1,5 @@
1
  /**
2
- * All the styles for Query Monitor.
3
  *
4
  * @package query-monitor
5
  */
@@ -143,6 +143,7 @@ body.admin-color-light #wp-admin-bar-query-monitor:not(.qm-all-clear):not(:hover
143
  word-break: normal !important;
144
  outline: none !important;
145
  box-shadow: none !important;
 
146
  }
147
 
148
  #query-monitor {
@@ -215,6 +216,7 @@ body.admin-color-light #wp-admin-bar-query-monitor:not(.qm-all-clear):not(:hover
215
  }
216
  #query-monitor #qm-title button {
217
  color: #666 !important;
 
218
  cursor: pointer !important;
219
  margin: 0 0 0 0px !important;
220
  display: inline-block !important;
@@ -249,6 +251,7 @@ body.admin-color-light #wp-admin-bar-query-monitor:not(.qm-all-clear):not(:hover
249
  #query-monitor #qm-panel-menu ul {
250
  padding: 0 !important;
251
  margin: 0 !important;
 
252
  }
253
  #query-monitor #qm-panel-menu li {
254
  padding: 0 !important;
@@ -666,9 +669,13 @@ body.admin-color-light #wp-admin-bar-query-monitor:not(.qm-all-clear):not(:hover
666
  text-decoration: none !important;
667
  cursor: pointer !important;
668
  }
669
-
 
670
  #qm-title a:focus,
671
  #qm-title a:hover,
 
 
 
672
  #query-monitor .qm a:after,
673
  #query-monitor .qm a:focus,
674
  #query-monitor .qm a:hover {
@@ -977,5 +984,3 @@ body.admin-color-light #wp-admin-bar-query-monitor:not(.qm-all-clear):not(:hover
977
  #query-monitor.qm-broken #qm-broken h2 {
978
  padding: 20px !important;
979
  }
980
-
981
- /*# sourceMappingURL=query-monitor.css.map */
1
  /**
2
+ * The standard colour scheme for Query Monitor.
3
  *
4
  * @package query-monitor
5
  */
143
  word-break: normal !important;
144
  outline: none !important;
145
  box-shadow: none !important;
146
+ text-indent: 0 !important;
147
  }
148
 
149
  #query-monitor {
216
  }
217
  #query-monitor #qm-title button {
218
  color: #666 !important;
219
+ background: transparent !important;
220
  cursor: pointer !important;
221
  margin: 0 0 0 0px !important;
222
  display: inline-block !important;
251
  #query-monitor #qm-panel-menu ul {
252
  padding: 0 !important;
253
  margin: 0 !important;
254
+ list-style: none !important;
255
  }
256
  #query-monitor #qm-panel-menu li {
257
  padding: 0 !important;
669
  text-decoration: none !important;
670
  cursor: pointer !important;
671
  }
672
+ #query-monitor .qm tbody .qm-warn a code:after, #query-monitor .qm tbody .qm-warn a code:focus, #query-monitor .qm tbody .qm-warn a code:hover,
673
+ #qm-title a:after,
674
  #qm-title a:focus,
675
  #qm-title a:hover,
676
+ #query-monitor .qm a code:after,
677
+ #query-monitor .qm a code:focus,
678
+ #query-monitor .qm a code:hover,
679
  #query-monitor .qm a:after,
680
  #query-monitor .qm a:focus,
681
  #query-monitor .qm a:hover {
984
  #query-monitor.qm-broken #qm-broken h2 {
985
  padding: 20px !important;
986
  }
 
 
classes/QueryMonitor.php CHANGED
@@ -12,9 +12,13 @@ class QueryMonitor extends QM_Plugin {
12
  # Actions
13
  add_action( 'plugins_loaded', array( $this, 'action_plugins_loaded' ) );
14
  add_action( 'init', array( $this, 'action_init' ) );
 
 
15
 
16
  # Filters
17
- add_filter( 'user_has_cap', array( $this, 'filter_user_has_cap' ), 10, 3 );
 
 
18
 
19
  # Parent setup:
20
  parent::__construct( $file );
@@ -40,7 +44,8 @@ class QueryMonitor extends QM_Plugin {
40
  *
41
  * This does not get called for Super Admins.
42
  *
43
- * @param bool[] $user_caps Concerned user's capabilities.
 
44
  * @param string[] $required_caps Required primitive capabilities for the requested capability.
45
  * @param array $args {
46
  * Arguments that accompany the requested capability check.
@@ -49,13 +54,18 @@ class QueryMonitor extends QM_Plugin {
49
  * @type int $1 Concerned user ID.
50
  * @type mixed ...$2 Optional second and further parameters.
51
  * }
 
52
  * @return bool[] Concerned user's capabilities.
53
  */
54
- public function filter_user_has_cap( array $user_caps, array $required_caps, array $args ) {
55
  if ( 'view_query_monitor' !== $args[0] ) {
56
  return $user_caps;
57
  }
58
 
 
 
 
 
59
  if ( ! is_multisite() && user_can( $args[1], 'manage_options' ) ) {
60
  $user_caps['view_query_monitor'] = true;
61
  }
@@ -95,6 +105,69 @@ class QueryMonitor extends QM_Plugin {
95
  ), E_USER_WARNING );
96
  }
97
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
98
  public static function init( $file = null ) {
99
 
100
  static $instance = null;
12
  # Actions
13
  add_action( 'plugins_loaded', array( $this, 'action_plugins_loaded' ) );
14
  add_action( 'init', array( $this, 'action_init' ) );
15
+ add_action( 'members_register_caps', array( $this, 'action_register_members_caps' ) );
16
+ add_action( 'members_register_cap_groups', array( $this, 'action_register_members_groups' ) );
17
 
18
  # Filters
19
+ add_filter( 'user_has_cap', array( $this, 'filter_user_has_cap' ), 10, 4 );
20
+ add_filter( 'ure_built_in_wp_caps', array( $this, 'filter_ure_caps' ) );
21
+ add_filter( 'ure_capabilities_groups_tree', array( $this, 'filter_ure_groups' ) );
22
 
23
  # Parent setup:
24
  parent::__construct( $file );
44
  *
45
  * This does not get called for Super Admins.
46
  *
47
+ * @param bool[] $user_caps Array of key/value pairs where keys represent a capability name and boolean values
48
+ * represent whether the user has that capability.
49
  * @param string[] $required_caps Required primitive capabilities for the requested capability.
50
  * @param array $args {
51
  * Arguments that accompany the requested capability check.
54
  * @type int $1 Concerned user ID.
55
  * @type mixed ...$2 Optional second and further parameters.
56
  * }
57
+ * @param WP_User $user Concerned user object.
58
  * @return bool[] Concerned user's capabilities.
59
  */
60
+ public function filter_user_has_cap( array $user_caps, array $required_caps, array $args, WP_User $user ) {
61
  if ( 'view_query_monitor' !== $args[0] ) {
62
  return $user_caps;
63
  }
64
 
65
+ if ( array_key_exists( 'view_query_monitor', $user_caps ) ) {
66
+ return $user_caps;
67
+ }
68
+
69
  if ( ! is_multisite() && user_can( $args[1], 'manage_options' ) ) {
70
  $user_caps['view_query_monitor'] = true;
71
  }
105
  ), E_USER_WARNING );
106
  }
107
 
108
+ /**
109
+ * Registers the Query Monitor user capability group for the Members plugin.
110
+ *
111
+ * @link https://wordpress.org/plugins/members/
112
+ */
113
+ public function action_register_members_groups() {
114
+ members_register_cap_group( 'query_monitor', array(
115
+ 'label' => __( 'Query Monitor', 'query-monitor' ),
116
+ 'caps' => array(
117
+ 'view_query_monitor',
118
+ ),
119
+ 'icon' => 'dashicons-admin-tools',
120
+ 'priority' => 30,
121
+ ) );
122
+ }
123
+
124
+ /**
125
+ * Registers the View Query Monitor user capability for the Members plugin.
126
+ *
127
+ * @link https://wordpress.org/plugins/members/
128
+ */
129
+ public function action_register_members_caps() {
130
+ members_register_cap( 'view_query_monitor', array(
131
+ 'label' => _x( 'View Query Monitor', 'Human readable label for the user capability required to view Query Monitor.', 'query-monitor' ),
132
+ 'group' => 'query_monitor',
133
+ ) );
134
+ }
135
+
136
+ /**
137
+ * Registers the Query Monitor user capability group for the User Role Editor plugin.
138
+ *
139
+ * @link https://wordpress.org/plugins/user-role-editor/
140
+ *
141
+ * @param array[] $groups Array of existing groups.
142
+ * @return array[] Updated array of groups.
143
+ */
144
+ public function filter_ure_groups( array $groups ) {
145
+ $groups['query_monitor'] = array(
146
+ 'caption' => esc_html__( 'Query Monitor', 'query-monitor' ),
147
+ 'parent' => 'custom',
148
+ 'level' => 2,
149
+ );
150
+
151
+ return $groups;
152
+ }
153
+
154
+ /**
155
+ * Registers the View Query Monitor user capability for the User Role Editor plugin.
156
+ *
157
+ * @link https://wordpress.org/plugins/user-role-editor/
158
+ *
159
+ * @param array[] $caps Array of existing capabilities.
160
+ * @return array[] Updated array of capabilities.
161
+ */
162
+ public function filter_ure_caps( array $caps ) {
163
+ $caps['view_query_monitor'] = array(
164
+ 'custom',
165
+ 'query_monitor',
166
+ );
167
+
168
+ return $caps;
169
+ }
170
+
171
  public static function init( $file = null ) {
172
 
173
  static $instance = null;
composer.json CHANGED
@@ -15,6 +15,24 @@
15
  "forum": "https://wordpress.org/support/plugin/query-monitor",
16
  "source": "https://github.com/johnbillion/query-monitor"
17
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
  "require": {
19
  "php": ">=5.3",
20
  "composer/installers": "~1.0"
@@ -22,7 +40,8 @@
22
  "require-dev" : {
23
  "squizlabs/php_codesniffer": "^3.2",
24
  "phpcompatibility/php-compatibility": "~8.2",
 
25
  "wp-coding-standards/wpcs": "0.13",
26
  "phpunit/phpunit": "^5"
27
- }
28
  }
15
  "forum": "https://wordpress.org/support/plugin/query-monitor",
16
  "source": "https://github.com/johnbillion/query-monitor"
17
  },
18
+ "repositories": [
19
+ {
20
+ "type": "package",
21
+ "package": {
22
+ "name": "danieltj27/dark-mode",
23
+ "version": "3.1.1",
24
+ "source": {
25
+ "type" : "git",
26
+ "url" : "git://github.com/danieltj27/Dark-Mode.git",
27
+ "reference" : "3.1.1"
28
+ },
29
+ "dist": {
30
+ "url": "https://github.com/danieltj27/Dark-Mode/archive/90236dc3d60c559c3a29209c0057aabcfb95a8d1.zip",
31
+ "type": "zip"
32
+ }
33
+ }
34
+ }
35
+ ],
36
  "require": {
37
  "php": ">=5.3",
38
  "composer/installers": "~1.0"
40
  "require-dev" : {
41
  "squizlabs/php_codesniffer": "^3.2",
42
  "phpcompatibility/php-compatibility": "~8.2",
43
+ "danieltj27/dark-mode": "3.1.1",
44
  "wp-coding-standards/wpcs": "0.13",
45
  "phpunit/phpunit": "^5"
46
+ }
47
  }
dispatchers/Html.php CHANGED
@@ -139,11 +139,19 @@ class QM_Dispatcher_Html extends QM_Dispatcher {
139
  $deps = array();
140
  }
141
 
 
 
 
 
 
 
 
 
142
  wp_enqueue_style(
143
  'query-monitor',
144
- $this->qm->plugin_url( 'assets/query-monitor.css' ),
145
  array( 'dashicons' ),
146
- $this->qm->plugin_ver( 'assets/query-monitor.css' )
147
  );
148
  wp_enqueue_script(
149
  'query-monitor',
@@ -177,6 +185,8 @@ class QM_Dispatcher_Html extends QM_Dispatcher {
177
  return;
178
  }
179
 
 
 
180
  $this->before_output();
181
 
182
  /* @var QM_Output_Html[] */
@@ -199,6 +209,10 @@ class QM_Dispatcher_Html extends QM_Dispatcher {
199
 
200
  $this->after_output();
201
 
 
 
 
 
202
  }
203
 
204
  protected function before_output() {
@@ -355,7 +369,7 @@ class QM_Dispatcher_Html extends QM_Dispatcher {
355
  echo '<p>';
356
  printf(
357
  /* translators: %s: Name of the config file */
358
- esc_html__( 'The following PHP constants can be defined in your %s file in order to control the behaviour of Query Monitor:', 'query-monitor' ),
359
  '<code>wp-config.php</code>'
360
  );
361
  echo '</p>';
139
  $deps = array();
140
  }
141
 
142
+ $css = 'query-monitor';
143
+
144
+ if ( method_exists( 'Dark_Mode', 'is_using_dark_mode' ) && is_user_logged_in() ) {
145
+ if ( Dark_Mode::is_using_dark_mode() ) {
146
+ $css .= '-dark';
147
+ }
148
+ }
149
+
150
  wp_enqueue_style(
151
  'query-monitor',
152
+ $this->qm->plugin_url( "assets/{$css}.css" ),
153
  array( 'dashicons' ),
154
+ $this->qm->plugin_ver( "assets/{$css}.css" )
155
  );
156
  wp_enqueue_script(
157
  'query-monitor',
185
  return;
186
  }
187
 
188
+ $switched_locale = function_exists( 'switch_to_locale' ) && switch_to_locale( get_user_locale() );
189
+
190
  $this->before_output();
191
 
192
  /* @var QM_Output_Html[] */
209
 
210
  $this->after_output();
211
 
212
+ if ( $switched_locale ) {
213
+ restore_previous_locale();
214
+ }
215
+
216
  }
217
 
218
  protected function before_output() {
369
  echo '<p>';
370
  printf(
371
  /* translators: %s: Name of the config file */
372
+ esc_html__( 'The following PHP constants can be defined in your %s file in order to control the behavior of Query Monitor:', 'query-monitor' ),
373
  '<code>wp-config.php</code>'
374
  );
375
  echo '</p>';
query-monitor.php CHANGED
@@ -10,7 +10,7 @@
10
  *
11
  * Plugin Name: Query Monitor
12
  * Description: The Developer Tools Panel for WordPress.
13
- * Version: 3.1.0
14
  * Plugin URI: https://querymonitor.com/
15
  * Author: John Blackbourn & contributors
16
  * Author URI: https://querymonitor.com/
10
  *
11
  * Plugin Name: Query Monitor
12
  * Description: The Developer Tools Panel for WordPress.
13
+ * Version: 3.1.1
14
  * Plugin URI: https://querymonitor.com/
15
  * Author: John Blackbourn & contributors
16
  * Author URI: https://querymonitor.com/
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: johnbillion
3
  Tags: debug, debug-bar, debugging, development, developer, performance, profiler, queries, query monitor, rest-api
4
  Requires at least: 3.7
5
  Tested up to: 4.9
6
- Stable tag: 3.1.0
7
  License: GPLv2 or later
8
  Requires PHP: 5.3
9
 
3
  Tags: debug, debug-bar, debugging, development, developer, performance, profiler, queries, query monitor, rest-api
4
  Requires at least: 3.7
5
  Tested up to: 4.9
6
+ Stable tag: 3.1.1
7
  License: GPLv2 or later
8
  Requires PHP: 5.3
9