Files

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];
}
}