PluginProbe
OpenStation: Desktop Windows, Dock & Virtual Desktops for WP Admin / 1.1.10
OpenStation: Desktop Windows, Dock & Virtual Desktops for WP Admin v1.1.10
1.1.10 1.1.9 1.1.8 1.1.7 1.1.6 1.1.5 1.1.4 1.1.3 1.1.2 1.1.1 1.1.0 1.0.1 1.0.0 0.9.8 0.9.7 0.9.6 0.9.4 0.9.5 0.9.3 0.9.2 0.9.1 0.9.0 0.8.9 0.8.8 0.8.7 All 34 releases
← All changes | includes/default-window.php +40 -32 0.9.81.1.10 View file →
@@ -1,7 +1,7 @@
1 1 <?php
2 2 /**
3 - * Desktop Mode — Default window preference.
3 + * OpenStation — Default window preference.
4 4 *
5 5 * Stores the user's choice of "what window opens when I enter the
6 6 * desktop with nothing currently in session." Two signals matter:
7 7 *
@@ -15,15 +15,23 @@
15 15 * Stored as a serialized array on user-meta `desktop_mode_default_window`.
16 16 * A missing meta entry is treated as `{ enabled: true, url: <dashboard> }`
17 17 * for backward compatibility with older installs.
18 18 *
19 - * @package WPDesktopMode
19 + * @package OpenStation
20 20 */
21 21
22 22 defined( 'ABSPATH' ) || exit;
23 23
24 -/** User-meta key. */
25 -const DESKTOP_MODE_DEFAULT_WINDOW_META = 'desktop_mode_default_window';
24 +/**
25 + * User-meta key.
26 + *
27 + * The VALUE keeps its pre-rebrand spelling on purpose: it is a
28 + * persisted or externally-visible identifier, so renaming it would
29 + * orphan data already written by live installs (or break a live
30 + * URL). The mismatch between this constant's name and its value is
31 + * deliberate — it is NOT a half-finished rename.
32 + */
33 +const OPENSTATION_DEFAULT_WINDOW_META = 'desktop_mode_default_window';
26 34
27 35 /**
28 36 * Fetch the user's default-window preference as a normalized array.
29 37 *
@@ -29,12 +37,12 @@
29 37 *
30 38 * @param int $user_id User ID. Falls back to the current user when 0.
31 39 * @return array{enabled: bool, url: string} Always returns both keys.
32 40 */
33 -function desktop_mode_get_default_window( $user_id = 0 ) {
34 - $user_id = $user_id ? (int) $user_id : get_current_user_id();
41 +function openstation_get_default_window( $user_id = 0 ) {
42 + $user_id = $user_id ? (int) $user_id : get_current_user_id();
35 43 $fallback_url = admin_url( 'index.php' );
36 - $default = array(
44 + $default = array(
37 45 'enabled' => true,
38 46 'url' => $fallback_url,
39 47 );
40 48
@@ -41,9 +49,9 @@
41 49 if ( ! $user_id ) {
42 50 return $default;
43 51 }
44 52
45 - $raw = get_user_meta( $user_id, DESKTOP_MODE_DEFAULT_WINDOW_META, true );
53 + $raw = get_user_meta( $user_id, OPENSTATION_DEFAULT_WINDOW_META, true );
46 54 if ( ! is_array( $raw ) ) {
47 55 return $default;
48 56 }
49 57
@@ -69,9 +77,9 @@
69 77 * @param int $user_id User ID. Must be positive.
70 78 * @param string|null $url URL to set, or null to disable.
71 79 * @return bool True on success, false on invalid URL or unknown user.
72 80 */
73 -function desktop_mode_set_default_window( $user_id, $url ) {
81 +function openstation_set_default_window( $user_id, $url ) {
74 82 $user_id = (int) $user_id;
75 83 if ( $user_id <= 0 ) {
76 84 return false;
77 85 }
@@ -78,9 +86,9 @@
78 86
79 87 if ( null === $url ) {
80 88 update_user_meta(
81 89 $user_id,
82 - DESKTOP_MODE_DEFAULT_WINDOW_META,
90 + OPENSTATION_DEFAULT_WINDOW_META,
83 91 array(
84 92 'enabled' => false,
85 93 'url' => admin_url( 'index.php' ),
86 94 )
@@ -87,9 +95,9 @@
87 95 );
88 96 return true;
89 97 }
90 98
91 - $clean = desktop_mode_validate_default_window_url( $url );
99 + $clean = openstation_validate_default_window_url( $url );
92 100 if ( '' === $clean ) {
93 101 return false;
94 102 }
95 103
@@ -94,9 +102,9 @@
94 102 }
95 103
96 104 update_user_meta(
97 105 $user_id,
98 - DESKTOP_MODE_DEFAULT_WINDOW_META,
106 + OPENSTATION_DEFAULT_WINDOW_META,
99 107 array(
100 108 'enabled' => true,
101 109 'url' => $clean,
102 110 )
@@ -113,9 +121,9 @@
113 121 *
114 122 * @param string $url Raw input.
115 123 * @return string Fully-qualified admin URL or `native:<slug>` marker, or empty string if rejected.
116 124 */
117 -function desktop_mode_validate_default_window_url( $url ) {
125 +function openstation_validate_default_window_url( $url ) {
118 126 $url = trim( (string) $url );
119 127 if ( '' === $url ) {
120 128 return '';
121 129 }
@@ -139,13 +147,13 @@
139 147 if ( ! is_array( $parsed ) || empty( $parsed['path'] ) ) {
140 148 return '';
141 149 }
142 150
143 - $home_origin = wp_parse_url( home_url( '/' ) );
144 - $url_host = isset( $parsed['host'] ) ? strtolower( $parsed['host'] ) : '';
145 - $url_scheme = isset( $parsed['scheme'] ) ? strtolower( $parsed['scheme'] ) : '';
146 - $home_host = is_array( $home_origin ) && isset( $home_origin['host'] ) ? strtolower( $home_origin['host'] ) : '';
147 - $home_scheme = is_array( $home_origin ) && isset( $home_origin['scheme'] ) ? strtolower( $home_origin['scheme'] ) : '';
151 + $home_origin = wp_parse_url( home_url( '/' ) );
152 + $url_host = isset( $parsed['host'] ) ? strtolower( $parsed['host'] ) : '';
153 + $url_scheme = isset( $parsed['scheme'] ) ? strtolower( $parsed['scheme'] ) : '';
154 + $home_host = is_array( $home_origin ) && isset( $home_origin['host'] ) ? strtolower( $home_origin['host'] ) : '';
155 + $home_scheme = is_array( $home_origin ) && isset( $home_origin['scheme'] ) ? strtolower( $home_origin['scheme'] ) : '';
148 156
149 157 if ( '' !== $url_host && $url_host !== $home_host ) {
150 158 return '';
151 159 }
@@ -163,9 +171,9 @@
163 171
164 172 // Reassemble as a clean same-origin URL so downstream consumers
165 173 // always get a fully-qualified string.
166 174 $query = isset( $parsed['query'] ) ? '?' . $parsed['query'] : '';
167 - return esc_url_raw( home_url( $parsed['path'] . $query ), array( $home_scheme ?: 'https', 'http', 'https' ) );
175 + return esc_url_raw( home_url( $parsed['path'] . $query ), array( $home_scheme ? $home_scheme : 'https', 'http', 'https' ) );
168 176 }
169 177
170 178 /**
171 179 * REST route: `POST /desktop-mode/v1/default-window`.
@@ -171,18 +179,18 @@
171 179 * REST route: `POST /desktop-mode/v1/default-window`.
172 180 *
173 181 * Body: `{ url: string | null }`. Null disables the default.
174 182 */
175 -function desktop_mode_register_default_window_routes() {
183 +function openstation_register_default_window_routes() {
176 184 register_rest_route(
177 185 'desktop-mode/v1',
178 186 '/default-window',
179 187 array(
180 188 'methods' => 'POST',
181 - 'callback' => 'desktop_mode_rest_set_default_window',
182 - // Logged in + desktop mode enabled. `read` alone is too
183 - // loose — see desktop_mode_rest_require_enabled().
184 - 'permission_callback' => 'desktop_mode_rest_require_enabled',
189 + 'callback' => 'openstation_rest_set_default_window',
190 + // Logged in + OpenStation enabled. `read` alone is too
191 + // loose — see openstation_rest_require_enabled().
192 + 'permission_callback' => 'openstation_rest_require_enabled',
185 193 // No schema type on `url` — the param is fundamentally
186 194 // mixed (string | null) and WP REST's multi-type schema
187 195 // validation has historically been flaky for this case
188 196 // across core versions. Validate in the callback instead,
@@ -194,9 +202,9 @@
194 202 ),
195 203 )
196 204 );
197 205 }
198 -add_action( 'rest_api_init', 'desktop_mode_register_default_window_routes' );
206 +add_action( 'rest_api_init', 'openstation_register_default_window_routes' );
199 207
200 208 /**
201 209 * REST handler — writes the default-window meta and returns the
202 210 * normalized state.
@@ -210,9 +218,9 @@
210 218 *
211 219 * @param WP_REST_Request $request REST request.
212 220 * @return WP_REST_Response|WP_Error
213 221 */
214 -function desktop_mode_rest_set_default_window( $request ) {
222 +function openstation_rest_set_default_window( $request ) {
215 223 $user_id = get_current_user_id();
216 224 $params = $request->get_json_params();
217 225
218 226 // Distinguish "url was sent" (possibly null or '') from "url key
@@ -223,27 +231,27 @@
223 231 $url = $has_url ? $params['url'] : null;
224 232
225 233 // Null / missing / empty string all disable the default.
226 234 if ( null === $url || '' === $url ) {
227 - desktop_mode_set_default_window( $user_id, null );
228 - return rest_ensure_response( desktop_mode_get_default_window( $user_id ) );
235 + openstation_set_default_window( $user_id, null );
236 + return rest_ensure_response( openstation_get_default_window( $user_id ) );
229 237 }
230 238
231 239 if ( ! is_string( $url ) ) {
232 240 return new WP_Error(
233 - 'desktop_mode_invalid_url',
241 + 'openstation_invalid_url',
234 242 __( 'The `url` parameter must be a string or null.', 'desktop-mode' ),
235 243 array( 'status' => 400 )
236 244 );
237 245 }
238 246
239 - $ok = desktop_mode_set_default_window( $user_id, $url );
247 + $ok = openstation_set_default_window( $user_id, $url );
240 248 if ( ! $ok ) {
241 249 return new WP_Error(
242 - 'desktop_mode_invalid_url',
250 + 'openstation_invalid_url',
243 251 __( 'The URL is not a valid same-origin wp-admin URL.', 'desktop-mode' ),
244 252 array( 'status' => 400 )
245 253 );
246 254 }
247 255
248 - return rest_ensure_response( desktop_mode_get_default_window( $user_id ) );
256 + return rest_ensure_response( openstation_get_default_window( $user_id ) );
249 257 }