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 / Controller.php

Controller.php in Black Bar trunk, at plugin/Controller.php

116 lines 3.1 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;
4
5 class Controller
6 {
7 /**
8 * @var Application
9 */
10 protected $app;
11
12 public function __construct(Application $app)
13 {
14 $this->app = $app;
15 }
16
17 /**
18 * @action admin_enqueue_scripts
19 * @action wp_enqueue_scripts
20 */
21 public function enqueueAssets(): void
22 {
23 wp_enqueue_script(Application::ID, $this->app->url('assets/blackbar.js'), [], $this->app->version);
24 wp_enqueue_style(Application::ID, $this->app->url('assets/blackbar.css'), ['dashicons'], $this->app->version);
25 }
26
27 /**
28 * @param string $classes
29 * @action admin_body_class
30 */
31 public function filterBodyClasses($classes): string
32 {
33 return trim((string) $classes.' '.Application::ID);
34 }
35
36 /**
37 * @action all
38 */
39 public function initConsole(): void
40 {
41 if (Application::CONSOLE_HOOK !== func_get_arg(0)) {
42 return;
43 }
44 $args = array_pad(func_get_args(), 4, '');
45 $args = array_combine(['hook', 'message', 'errno', 'location'], $args);
46 if (!is_numeric($args['errno'])) {
47 $args['errno'] = '';
48 }
49 if (!is_string($args['location'])) {
50 $args['location'] = '';
51 }
52 $backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 4);
53 $entry = array_pop($backtrace); // get the fourth backtrace entry
54 if (empty(trim($args['location'])) && array_key_exists('file', $entry)) {
55 $path = explode(ABSPATH, $entry['file']);
56 $args['location'] = sprintf('%s:%s', array_pop($path), $entry['line']);
57 }
58 $this->app->console->store($args['message'], $args['errno'], $args['location']);
59 }
60
61 /**
62 * @action all
63 */
64 public function initHooks(): void
65 {
66 $this->app->hooks->startTimer();
67 }
68
69 /**
70 * @action all
71 */
72 public function initProfiler(): void
73 {
74 $hook = func_get_arg(0);
75 if (str_starts_with($hook, 'blackbar/profiler/')) {
76 $property = str_replace('blackbar/profiler/', '', $hook);
77 $this->app->profiler->set($property);
78 } elseif ('timer:start' === $hook) {
79 $name = func_num_args() > 1 ? func_get_arg(1) : 'Timer';
80 $this->app->profiler->start($name);
81 } elseif ('timer:stop' === $hook) {
82 $this->app->profiler->stop();
83 }
84 }
85
86 /**
87 * @action plugins_loaded
88 */
89 public function registerLanguages(): void
90 {
91 load_plugin_textdomain(Application::ID, false,
92 plugin_basename($this->app->path()).'/languages/'
93 );
94 }
95
96 /**
97 * @action admin_footer
98 * @action wp_footer
99 */
100 public function renderBar(): void
101 {
102 do_action('blackbar/profiler/stop'); // stop profiler
103 $this->app->render('debug-bar', [
104 'modules' => [ // order is intentional
105 $this->app->console,
106 $this->app->profiler,
107 $this->app->queries,
108 $this->app->hooks,
109 $this->app->templates,
110 $this->app->enqueued,
111 $this->app->globals,
112 ],
113 ]);
114 }
115 }
116