[], 'Panels' => [ 'Dashboard' => get_user_meta(wp_get_current_user()->ID, 'meta-box-order_dashboard', true), ], ]; } return $data; } public static function getConfig(): array { $data = self::load(); return $data['Config'] ?? []; } public static function saveConfig(array $config): void { $data = self::load(); $data['Config'] = $config; update_user_meta(get_current_user_id(), self::$metaName, $data); } public static function getListOfDashboards(): array { $data = self::load(); return array_keys($data['Panels'] ?? null ?: []); } public static function getDashboardByName(string $dashName): array { $data = self::load(); return $data['Panels'][$dashName] ?? null ?: []; } public static function saveDashboard(string $dashName, array $struct): void { $data = self::load(); $data['Panels'][$dashName] = $struct; update_user_meta(get_current_user_id(), self::$metaName, $data); } public static function deleteDashboard(string $dashName): bool { $data = self::load(); $success = isset($data['Panels'][$dashName]); unset($data['Panels'][$dashName]); update_user_meta(get_current_user_id(), self::$metaName, $data); return $success; } public static function renameDashboard(string $oldDashName, string $newDashName): bool { $data = self::load(); $panels = $data['Panels'] ?? []; if (!isset($panels[$oldDashName])) { return false; } $map = [$oldDashName => $newDashName]; $data['Panels'] = array_combine(array_map(fn($key) => $map[$key] ?? $key, array_keys($panels)), $panels); update_user_meta(get_current_user_id(), self::$metaName, $data); return true; } public static function removeWidgetFromDashboard(string $dashName, string $widgetName): bool { $data = self::getDashboardByName($dashName); $found = false; foreach ($data as $column => $list) { $items = explode(",", $list); $pos = array_search($widgetName, $items, true); if ($pos !== false) { $found = true; unset($items[$pos]); $data[$column] = implode(",", $items); } } if (!$found) { return false; } self::saveDashboard($dashName, $data); return true; } }