PluginProbe
Disk Usage Insights / 1.6
Disk Usage Insights v1.6
trunk 1.0 1.10 1.11 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9
disk-usage-insights / src / Plugin.php

Plugin.php in Disk Usage Insights 1.6, at src/Plugin.php

110 lines 3.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace Mgleis\DiskUsageInsights;
3
4 use Mgleis\DiskUsageInsights\Frontend\Controller\DeleteSnapshotController;
5 use Mgleis\DiskUsageInsights\Frontend\Controller\IndexController;
6 use Mgleis\DiskUsageInsights\Frontend\Controller\ScanController;
7 use Mgleis\DiskUsageInsights\Frontend\Controller\ScanStatusController;
8 use Mgleis\DiskUsageInsights\Frontend\Controller\ScanWorkerController;
9 use Mgleis\DiskUsageInsights\Frontend\Controller\ShowResultsController;
10 use Mgleis\DiskUsageInsights\Frontend\Controller\ShowResultsTableController;
11 use Mgleis\DiskUsageInsights\Frontend\Controller\ShowSnapshotsController;
12
13 class Plugin {
14
15 const TITLE = 'Disk Usage Insights';
16 const NONCE = 'disk_usage_insights';
17 /** @var string */
18 private $version = '';
19
20 public function __construct(string $version)
21 {
22 $this->version = $version;
23 }
24
25 public function init() {
26 // Ensure someone is logged in
27 if (!is_user_logged_in()) {
28 return;
29 }
30
31 // Ensure the user is an administrator
32 if (!in_array('administrator', wp_get_current_user()->roles)) {
33 return;
34 }
35
36 // Add to Tools menue
37 add_action('admin_menu', function () {
38 add_submenu_page(
39 'tools.php',
40 self::TITLE,
41 self::TITLE,
42 'administrator',
43 'disk-usage-insights',
44 [$this, 'index']
45 );
46 });
47
48 // Add to admin bar
49 add_action('admin_bar_menu', [$this, 'admin_bar_item'], 500);
50
51 // Add JavaScript libs + CSS
52 add_action('admin_enqueue_scripts', [$this, 'addScripts']);
53
54 // Add AJAX
55 add_action('wp_ajax_dui_scan', function() { (new ScanController())->scan(); });
56 add_action('wp_ajax_dui_worker', function() { (new ScanWorkerController())->worker(); });
57 add_action('wp_ajax_dui_status', function() { (new ScanStatusController())->status(); });
58 add_action('wp_ajax_dui_delete_snapshot', function() { (new DeleteSnapshotController())->delete(); });
59 add_action('wp_ajax_dui_list_snapshots', function() { (new ShowSnapshotsController())->execute(); });
60 add_action('wp_ajax_dui_results_table', function() { (new ShowResultsTableController())->execute(); });
61 }
62
63 public function addScripts($hook_suffix) {
64 if ($hook_suffix != 'tools_page_disk-usage-insights') {
65 return;
66 }
67 wp_enqueue_script(
68 'htmx.min.js',
69 plugins_url('/res/js/htmx-1.9.12.min.js', __DIR__),
70 [],
71 $this->version,
72 ['in_footer' => true]
73 );
74 wp_enqueue_script(
75 'htmx-custom-error-handler.js',
76 plugins_url('/res/js/htmx-custom-error-handler.js', __DIR__),
77 [],
78 $this->version,
79 ['in_footer' => true]
80 );
81 wp_enqueue_style('styles',
82 plugins_url('/res/css/styles.css', __DIR__),
83 [],
84 $this->version
85 );
86 }
87
88 public function admin_bar_item(\WP_Admin_Bar $admin_bar ) {
89 $admin_bar->add_menu(array(
90 'id' => 'menu-id',
91 'parent' => null,
92 'group' => null,
93 'title' => '<img src="' . WpHelper::getPluginUrl() . '/res/pie.svg" style="margin-top:5px; width:20px" alt="'. self::TITLE .'">',
94 'href' => admin_url('tools.php?page=disk-usage-insights'),
95 'meta' => [
96 'title' => self::TITLE
97 ]
98 ));
99 }
100
101 public function index() {
102 if (!isset($_GET['snapshot'])) {
103 return (new IndexController())->execute();
104 } else {
105 return (new ShowResultsController())->execute();
106 }
107 }
108
109 }
110