Repository navigation
Expand file tree
/
Copy pathabnet-post-stats-plugin-class.php
More file actions
135 lines (105 loc) · 3.58 KB
/
Copy pathabnet-post-stats-plugin-class.php
File metadata and controls
135 lines (105 loc) · 3.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<?php
/**
* @package ABNet_PostStats
* @since 1.0.0
*/
declare(strict_types=1);
// Prevent direct access
if (!defined('ABSPATH')) {
exit;
}
class ABNet_PostStats {
/**
* @var ABNet_PostStats
*/
private static $_instance = null;
private ABNet_PostStats_DataSource $_dataSource;
private ABNet_PostStats_ContentPillar_DataSource $_contentPillarDataSource;
private ABNet_PostStats_WidgetManager $_widgetManger;
private ABNet_PostStats_ContentPillar_Manager $_contentPillarManager;
private ABNet_PostStats_StyleMetric_Manager $_styleMetricManager;
private bool $_isInitialized = false;
public static function getInstance(): ABNet_PostStats {
if (null === self::$_instance) {
self::$_instance = new self();
}
return self::$_instance;
}
private function __construct() {
$this->_dataSource = new ABNet_PostStats_DataSource();
$this->_contentPillarDataSource = new ABNet_PostStats_ContentPillar_DataSource();
$this->_contentPillarManager = new ABNet_PostStats_ContentPillar_Manager();
$this->_styleMetricManager = new ABNet_PostStats_StyleMetric_Manager();
$this->_widgetManger = new ABNet_PostStats_WidgetManager($this->_dataSource, $this->_contentPillarDataSource);
}
public function run(): void {
register_activation_hook(ABNET_POST_STATS_PLUGIN_FILE, array($this, 'activate'));
add_action('plugins_loaded', array($this, 'init'));
}
public function activate(): void {
if (!self::_currentUserCanActivatePlugins()) {
return;
}
$this->_createTables();
$this->_migrateTables();
/**
* Fires after the plugin activation routine finishes creating and migrating tables.
*/
do_action('abnet_post_stats_activated');
}
private static function _currentUserCanActivatePlugins() {
return current_user_can('activate_plugins');
}
private function _createTables(): void {
$db = new ABNet_PostStats_Db();
$db->createContentPillarsTable();
$db->createStyleMetricsTable();
}
private function _migrateTables(): void {
$db = new ABNet_PostStats_Db();
$db->migrateContentPillarsTable();
$db->migrateStyleMetricsTable();
}
public function init(): void {
if ($this->isInitialized()) {
return;
}
load_plugin_textdomain('abnet-post-stats', false, dirname(plugin_basename(__FILE__)) . '/languages');
$this->_initHooks();
}
private function _initHooks(): void {
add_action('admin_enqueue_scripts', array($this, 'enqueueAdminScripts'));
add_action('admin_menu', array($this, 'addAdminMenu'));
$this->_styleMetricManager->init();
$this->_widgetManger->init();
$this->_isInitialized = true;
do_action('abnet_post_stats_init', abnet_posts_stats_api());
}
private function _shouldIncludeDashboardWidgets(): bool {
return $this->_widgetManger->shouldIncludeDashboardWidgets();
}
public function addAdminMenu(): void {
$this->_contentPillarManager->setupMenu();
$this->_styleMetricManager->setupMenu();
}
public function enqueueAdminScripts(): void {
$isOnContentPillarsPage = $this->_contentPillarManager
->setupScriptsAndStyles();
$isOnAnyStyleMetricsPage = $this->_styleMetricManager
->setupScriptsAndStyles();
$includeAdminCss = $this->_shouldIncludeDashboardWidgets()
|| $isOnContentPillarsPage
|| $isOnAnyStyleMetricsPage;
if ($includeAdminCss) {
wp_enqueue_style(
'abnet-post-stats-admin',
ABNET_POST_STATS_PLUGIN_URL . 'assets/css/admin.css',
array(),
ABNET_POST_STATS_VERSION
);
}
}
public function isInitialized(): bool {
return $this->_isInitialized;
}
}