27 lines
1.3 KiB
PHP
27 lines
1.3 KiB
PHP
<?php
|
|
namespace AskTamMCP\Tools;
|
|
defined('ABSPATH') || exit;
|
|
|
|
class OptionTools {
|
|
private static array $blocked = ['auth_key','secure_auth_key','logged_in_key','nonce_key','auth_salt','secure_auth_salt','logged_in_salt','nonce_salt','admin_email','admin_pass'];
|
|
public static function getOption(array $args): array {
|
|
$name = $args['option_name'];
|
|
if (in_array($name, self::$blocked, true)) throw new \RuntimeException("Option '{$name}' is restricted.");
|
|
$val = get_option($name);
|
|
return ['option_name'=>$name,'value'=>$val];
|
|
}
|
|
public static function updateOption(array $args): array {
|
|
$name = $args['option_name'];
|
|
if (in_array($name, self::$blocked, true)) throw new \RuntimeException("Option '{$name}' is restricted.");
|
|
update_option($name, $args['option_value']);
|
|
return ['option_name'=>$name,'updated'=>true];
|
|
}
|
|
public static function listOptions(array $args): array {
|
|
global $wpdb;
|
|
$prefix = $args['prefix'] ?? '';
|
|
$like = $wpdb->esc_like($prefix) . '%';
|
|
$rows = $wpdb->get_results($wpdb->prepare("SELECT option_name, LENGTH(option_value) as val_length FROM {$wpdb->options} WHERE option_name LIKE %s LIMIT 100", $like), ARRAY_A);
|
|
return ['options'=>$rows,'prefix'=>$prefix];
|
|
}
|
|
}
|