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/recycle-bin/capture.php +19 -35 0.9.61.1.10 View file →
@@ -1,7 +1,7 @@
1 1 <?php
2 2 /**
3 - * Desktop Mode — Recycle Bin: capture.
3 + * OpenStation — Recycle Bin: capture.
4 4 *
5 5 * Stamps "who-deleted-what-when" metadata onto posts, pages, and
6 6 * comments as they pass through `wp_trash_post()` / `trashed_comment`,
7 7 * so the Recycle Bin window can show "deleted by Alice, 5 minutes ago"
@@ -11,18 +11,17 @@
11 11 * vanilla WordPress behavior (permanent-delete on first click). To
12 12 * enable trash for media, define `MEDIA_TRASH` as `true` in
13 13 * `wp-config.php`; the Recycle Bin window will surface trashed
14 14 * attachments automatically because `attachment` is in the default
15 - * `desktop_mode_recycle_bin_capture_post_types` list.
15 + * `openstation_recycle_bin_capture_post_types` list.
16 16 *
17 - * - `desktop_mode_recycle_bin_capture_post_types` controls which post
17 + * - `openstation_recycle_bin_capture_post_types` controls which post
18 18 * types we listen for in the first place.
19 - * - The `desktop_mode_recycle_bin_item_captured` action fires after a
19 + * - The `openstation_recycle_bin_item_captured` action fires after a
20 20 * successful capture so plugins can mirror the event (audit log,
21 21 * external storage, etc.).
22 22 *
23 - * @package WPDesktopMode
24 - * @since 0.6.0
23 + * @package OpenStation
25 24 */
26 25
27 26 defined( 'ABSPATH' ) || exit;
28 27
@@ -34,9 +33,9 @@
34 33 * filter pipeline, so a plugin that wants a single audit log can
35 34 * subscribe once.
36 35 *
37 36 * Custom post types with an admin UI (`show_ui`, non-builtin) are
38 - * included by default since 0.9.6 — a trashed WooCommerce product or
37 + * included by default — a trashed WooCommerce product or
39 38 * portfolio entry belongs in the site-wide bin just as much as a
40 39 * post does. Visibility stays safe because every row is still gated
41 40 * per-item on `edit_post` before it is listed. Headless CPTs
42 41 * (`show_ui => false`, e.g. the pinned-notes `wpd_note`) stay out
@@ -41,14 +40,11 @@
41 40 * per-item on `edit_post` before it is listed. Headless CPTs
42 41 * (`show_ui => false`, e.g. the pinned-notes `wpd_note`) stay out
43 42 * unless their owning feature opts in via the filter.
44 43 *
45 - * @since 0.6.0
46 - * @since 0.9.6 Non-builtin `show_ui` post types are included by default.
47 - *
48 44 * @return string[]
49 45 */
50 -function desktop_mode_recycle_bin_capture_post_types() {
46 +function openstation_recycle_bin_capture_post_types() {
51 47 $types = array( 'post', 'page', 'attachment' );
52 48
53 49 $custom = get_post_types(
54 50 array(
@@ -67,13 +63,11 @@
67 63 * WordPress deletes media (that is governed by `MEDIA_TRASH`).
68 64 * Remove a custom post type here to keep its trash out of the bin,
69 65 * or add a headless (`show_ui => false`) type to opt it in.
70 66 *
71 - * @since 0.6.0
72 - *
73 67 * @param string[] $types Post types whose deletions the recycle bin tracks.
74 68 */
75 - $types = apply_filters( 'desktop_mode_recycle_bin_capture_post_types', $types );
69 + $types = apply_filters( 'openstation_recycle_bin_capture_post_types', $types );
76 70
77 71 return array_values( array_unique( array_filter( array_map( 'strval', (array) $types ) ) ) );
78 72 }
79 73
@@ -84,36 +78,32 @@
84 78 * Core's `wp_trash_post_meta` is set on every trash but it doesn't
85 79 * include the user id — we stash that ourselves under a private meta
86 80 * key so the table can show "deleted by Alice".
87 81 *
88 - * @since 0.6.0
89 - *
90 82 * @param int $post_id Post being trashed.
91 83 */
92 -function desktop_mode_recycle_bin_on_trash_post( $post_id ) {
84 +function openstation_recycle_bin_on_trash_post( $post_id ) {
93 85 $post = get_post( $post_id );
94 86 if ( ! $post ) {
95 87 return;
96 88 }
97 - if ( ! in_array( $post->post_type, desktop_mode_recycle_bin_capture_post_types(), true ) ) {
89 + if ( ! in_array( $post->post_type, openstation_recycle_bin_capture_post_types(), true ) ) {
98 90 return;
99 91 }
100 - desktop_mode_recycle_bin_record_capture( $post_id );
92 + openstation_recycle_bin_record_capture( $post_id );
101 93 }
102 94
103 95 /**
104 96 * Persist who-deleted-what-when metadata for a single item.
105 97 *
106 - * Stored under `_desktop_mode_trash_*` postmeta on the trashed post itself —
98 + * Stored under `_openstation_trash_*` postmeta on the trashed post itself —
107 99 * survives un-trash naturally because we only consult it while in the
108 100 * bin, and gets cleaned up by core when the post is permanently
109 101 * deleted via the standard postmeta cascade.
110 102 *
111 - * @since 0.6.0
112 - *
113 103 * @param int $post_id Post id being captured.
114 104 */
115 -function desktop_mode_recycle_bin_record_capture( $post_id ) {
105 +function openstation_recycle_bin_record_capture( $post_id ) {
116 106 $user_id = get_current_user_id();
117 107 $now_gmt = current_time( 'mysql', true );
118 108
119 109 update_post_meta( $post_id, '_desktop_mode_trash_user_id', (int) $user_id );
@@ -124,32 +114,28 @@
124 114 *
125 115 * Use this to mirror the event into an external audit log or to
126 116 * extend the captured payload with custom postmeta.
127 117 *
128 - * @since 0.6.0
129 - *
130 118 * @param int $post_id Post id that was captured.
131 119 * @param int $user_id User id who triggered the capture.
132 120 * @param string $now_gmt MySQL-format GMT timestamp.
133 121 */
134 - do_action( 'desktop_mode_recycle_bin_item_captured', $post_id, $user_id, $now_gmt );
122 + do_action( 'openstation_recycle_bin_item_captured', $post_id, $user_id, $now_gmt );
135 123 }
136 124
137 -add_action( 'wp_trash_post', 'desktop_mode_recycle_bin_on_trash_post', 10, 1 );
125 +add_action( 'wp_trash_post', 'openstation_recycle_bin_on_trash_post', 10, 1 );
138 126
139 127 /**
140 128 * Capture deleted-by metadata for comments — symmetric to
141 - * `desktop_mode_recycle_bin_record_capture` but writing to `commentmeta`
129 + * `openstation_recycle_bin_record_capture` but writing to `commentmeta`
142 130 * instead of `postmeta`. Comments use `wp_set_comment_status('trash')`
143 131 * which fires `trashed_comment`; we don't need to short-circuit
144 132 * anything (core already routes to a real trash status), just
145 133 * stamp the moment so the bin can show "by Alice, 5 minutes ago".
146 134 *
147 - * @since 0.6.0
148 - *
149 135 * @param int $comment_id Comment about to be trashed.
150 136 */
151 -function desktop_mode_recycle_bin_on_trash_comment( $comment_id ) {
137 +function openstation_recycle_bin_on_trash_comment( $comment_id ) {
152 138 $comment_id = (int) $comment_id;
153 139 $user_id = get_current_user_id();
154 140 $now_gmt = current_time( 'mysql', true );
155 141
@@ -158,13 +144,11 @@
158 144
159 145 /**
160 146 * Fires after the recycle bin records a comment capture.
161 147 *
162 - * @since 0.6.0
163 - *
164 148 * @param int $comment_id Comment id that was captured.
165 149 * @param int $user_id User id who triggered the capture.
166 150 * @param string $now_gmt MySQL-format GMT timestamp.
167 151 */
168 - do_action( 'desktop_mode_recycle_bin_comment_captured', $comment_id, $user_id, $now_gmt );
152 + do_action( 'openstation_recycle_bin_comment_captured', $comment_id, $user_id, $now_gmt );
169 153 }
170 -add_action( 'trashed_comment', 'desktop_mode_recycle_bin_on_trash_comment', 10, 1 );
154 +add_action( 'trashed_comment', 'openstation_recycle_bin_on_trash_comment', 10, 1 );