class-hub.php
2.99 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
136
137
138
<?php
/**
* WPMU DEV Hub endpoints.
*
* Class allows syncing plugin data with the Hub.
*
* @since 3.7.0
* @package Smush\Core\Api
*/
namespace Smush\Core\Api;
use Smush\Core\Settings;
use WP_Smush;
if ( ! defined( 'WPINC' ) ) {
die;
}
/**
* Class Hub
*/
class Hub {
/**
* Endpoints array.
*
* @since 3.7.0
* @var array
*/
private $endpoints = array(
'get_stats',
'import_settings',
'export_settings',
);
/**
* Hub constructor.
*
* @since 3.7.0
*/
public function __construct() {
add_filter( 'wdp_register_hub_action', array( $this, 'add_endpoints' ) );
}
/**
* Add Hub endpoints.
*
* Every Hub Endpoint name is build following the structure: 'smush-$endpoint-$action'
*
* @since 3.7.0
* @param array $actions Endpoint action.
*
* @return array
*/
public function add_endpoints( $actions ) {
foreach ( $this->endpoints as $endpoint ) {
$actions[ "smush_{$endpoint}" ] = array( $this, 'action_' . $endpoint );
}
return $actions;
}
/**
* Retrieve data for endpoint.
*
* @since 3.7.0
* @param array $params Parameters.
* @param string $action Action.
*/
public function action_get_stats( $params, $action ) {
$status = array();
$core = WP_Smush::get_instance()->core();
$settings = Settings::get_instance();
$status['cdn'] = $core->mod->cdn->is_active();
$status['super'] = $settings->get( 'lossy' );
$lazy = $settings->get_setting( 'wp-smush-lazy_load' );
$status['lazy'] = array(
'enabled' => $core->mod->lazy->is_active(),
'native' => is_array( $lazy ) && isset( $lazy['native'] ) ? $lazy['native'] : false,
);
if ( ! isset( $core->stats ) ) {
// Setup stats, if not set already.
$core->setup_global_stats();
}
// Total, Smushed, Unsmushed, Savings.
$status['count_total'] = $core->total_count;
$status['count_smushed'] = $core->smushed_count;
// Considering the images to be resmushed.
$status['count_unsmushed'] = $core->remaining_count;
$status['savings'] = $core->stats;
$status['dir'] = $core->dir_stats;
wp_send_json_success( (object) $status );
}
/**
* Applies the given config sent by the Hub via the Dashboard plugin.
*
* @since 3.8.5
*
* @param object $config_data The config sent by the Hub.
*/
public function action_import_settings( $config_data ) {
if ( empty( $config_data->configs ) ) {
wp_send_json_error(
array(
'message' => __( 'Missing config data', 'wp-smushit' ),
)
);
}
// The Hub returns an object, we use an array.
$config_array = json_decode( wp_json_encode( $config_data->configs ), true );
$configs_handler = new \Smush\Core\Configs();
$configs_handler->apply_config( $config_array );
wp_send_json_success();
}
/**
* Exports the current settings as a config for the Hub.
*
* @since 3.8.5
*/
public function action_export_settings() {
$configs_handler = new \Smush\Core\Configs();
$config = $configs_handler->get_config_from_current();
wp_send_json_success( $config['config'] );
}
}