PluginProbe
Black Bar / trunk
Black Bar vtrunk
trunk 1.0.0 1.1.0 1.2.0 2.0.0 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.2.0 2.2.1 3.0.0 3.1.0 4.0.0 4.0.1 4.0.2 4.0.3 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.2.0
blackbar / plugin / Modules / Module.php

Module.php in Black Bar trunk, at plugin/Modules/Module.php

102 lines 2.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace GeminiLabs\BlackBar\Modules;
4
5 use GeminiLabs\BlackBar\Application;
6
7 abstract class Module
8 {
9 /**
10 * @var Application
11 */
12 protected $app;
13 /**
14 * @var array
15 */
16 protected $entries;
17 /**
18 * @var array
19 */
20 public $highlighted;
21
22 public function __construct(Application $app)
23 {
24 $this->app = $app;
25 $this->entries = [];
26 $this->highlighted = $this->highlighted();
27 }
28
29 public function classes(): string
30 {
31 return $this->id();
32 }
33
34 abstract public function entries(): array;
35
36 public function hasEntries(): bool
37 {
38 return !empty($this->entries);
39 }
40
41 public function highlighted(): array
42 {
43 return [];
44 }
45
46 public function icon(): string
47 {
48 return 'dashicons-admin-generic';
49 }
50
51
52 public function id(): string
53 {
54 return sprintf('glbb-%s', $this->slug());
55 }
56
57 public function info(): string
58 {
59 return '';
60 }
61
62 public function isVisible(): bool
63 {
64 return true;
65 }
66
67 abstract public function label(): string;
68
69 public function render(): void
70 {
71 $this->app->render('panels/'.$this->slug(), ['module' => $this]);
72 }
73
74 public function slug(): string
75 {
76 return strtolower((new \ReflectionClass($this))->getShortName());
77 }
78
79 protected function formatTime(int $nanoseconds): string
80 {
81 if ($nanoseconds >= 1e9) {
82 return sprintf('%s s', $this->toDecimal(round($nanoseconds / 1e9, 2)));
83 }
84 if ($nanoseconds >= 1e6) {
85 return sprintf('%s ms', $this->toDecimal(round($nanoseconds / 1e6, 2)));
86 }
87 if ($nanoseconds >= 1e3) {
88 return sprintf('%s µs', round($nanoseconds / 1e3));
89 }
90 return sprintf('%s ns', $nanoseconds);
91 }
92
93 protected function toDecimal(float $number): string
94 {
95 $number = (string) $number;
96 if (false !== strpos($number, '.')) {
97 $number = rtrim(rtrim($number, '0'), '.');
98 }
99 return $number;
100 }
101 }
102