PluginProbe
Assistant – Every Day Productivity Apps / 1.5.5.1
Assistant – Every Day Productivity Apps v1.5.5.1
1.5.5.1 1.5.5 trunk 0.1.0 0.2.0 0.2.1 0.2.2 0.3.0 0.3.1 0.4 0.4.1 0.4.2 0.5.0 0.5.1 0.6.0 0.7.0 0.7.0.2 0.7.0.3 0.7.0.4 0.7.0.5 0.7.0.6 0.7.0.7 0.7.0.8 0.7.0.9 0.7.1 All 72 releases
← All changes | backend/src/Data/Repository/PostsRepository.php +57 -13 0.4.2 → 1.5.5.1 View file →
@@ -24,9 +24,9 @@
24 24 * @param callable|null $transform
25 25 *
26 26 * @return array|mixed|\WP_Post|null
27 27 */
28 - public function find( $id, callable $transform = null ) {
28 + public function find( $id, ?callable $transform = null ) {
29 29 $post = get_post( $id );
30 30
31 31 if ( ! is_null( $transform ) ) {
32 32 $post = call_user_func( $transform, $post );
@@ -40,9 +40,9 @@
40 40 * @param callable|null $transform
41 41 *
42 42 * @return array
43 43 */
44 - public function find_where( array $args = [], callable $transform = null ) {
44 + public function find_where( array $args = [], ?callable $transform = null ) {
45 45 $posts = $this->query( $args )->posts;
46 46
47 47 if ( ! is_null( $transform ) ) {
48 48 $posts = array_map( $transform, $posts );
@@ -56,9 +56,9 @@
56 56 * @param callable|null $transform
57 57 *
58 58 * @return array
59 59 */
60 - public function find_by_label( int $label_id, callable $transform = null ) {
60 + public function find_by_label( int $label_id, ?callable $transform = null ) {
61 61 $labels = $this->notations->get_labels_by_id( 'post', $label_id );
62 62 $post_ids = [];
63 63
64 64 foreach ( $labels as $label ) {
@@ -86,9 +86,9 @@
86 86 * @param callable|null $transform
87 87 *
88 88 * @return Pager
89 89 */
90 - public function paginate( array $args = [], callable $transform = null ) {
90 + public function paginate( array $args = [], ?callable $transform = null ) {
91 91 $query = $this->query( $args );
92 92
93 93 $pager = new Pager(
94 94 $query->posts,
@@ -119,20 +119,54 @@
119 119 return $data;
120 120 }
121 121
122 122 /**
123 + * Plural label from registered post type (WP_Post_Type::$label), not contextual list titles.
124 + * @param \WP_Post_Type $type
125 + * @return string
126 + */
127 + private function get_stable_plural_label( \WP_Post_Type $type ) {
128 + if ( isset( $type->label ) && '' !== $type->label ) {
129 + return $type->label;
130 + }
131 +
132 + return $type->labels->name;
133 + }
134 +
135 + /**
123 136 * Get array of post types registered in WordPress
124 137 * @return array
125 138 */
126 139 public function get_types() {
127 140 $data = [];
128 - $types = get_post_types(
129 - [
130 - 'public' => true,
131 - ],
132 - 'objects'
133 - );
141 + $types = get_post_types( [], 'objects' );
134 142
143 + // Types with show_ui false that we want to show
144 + $known = apply_filters( 'fl_assistant_post_types_known', [
145 + 'wp_template',
146 + 'wp_template_part',
147 + 'fl_code',
148 + ] );
149 +
150 + // Of the types above, those whose items are portable enough to bulk add to a
151 + // cloud library. Opt-in only: block templates are scoped to a theme via the
152 + // wp_theme taxonomy and code snippets have their own library item type, so
153 + // neither belongs in the upload picker. Design systems are portable by UUID,
154 + // so they do.
155 + $library = apply_filters( 'fl_assistant_post_types_library', [
156 + 'fl-design-system',
157 + ] );
158 +
159 + // Types to never show
160 + $ignore = [
161 + 'attachment',
162 + 'wp_navigation',
163 + 'vcv_tutorials',
164 + 'elementor_snippet',
165 + 'elementor_font',
166 + 'elementor_icons',
167 + ];
168 +
135 169 foreach ( $types as $slug => $type ) {
136 170 if ( ! isset( $type->cap->edit_others_posts ) ) {
137 171 continue;
138 172 }
@@ -138,16 +172,21 @@
138 172 }
139 173 if ( ! current_user_can( $type->cap->edit_others_posts ) ) {
140 174 continue;
141 175 }
142 - if ( 'attachment' === $slug ) {
176 + if ( ! $type->show_ui && ! in_array( $slug, $known ) ) {
143 177 continue;
144 178 }
179 + if ( in_array( $slug, $ignore ) ) {
180 + continue;
181 + }
145 182 if ( ! function_exists( 'get_page_templates' ) ) {
146 183 require_once ABSPATH . 'wp-admin/includes/theme.php';
147 184 }
148 185
149 186 $data[ $slug ] = [
187 + 'canView' => $type->public || $type->publicly_queryable || in_array( $slug, $library ),
188 + 'hasPublicUrl' => $type->public || $type->publicly_queryable,
150 189 'canExport' => $type->can_export,
151 190 'hasArchive' => $type->has_archive,
152 191 'isHierarchical' => $type->hierarchical,
153 192 'builtin' => $type->_builtin,
@@ -161,9 +200,9 @@
161 200 'order' => post_type_supports( $slug, 'page-attributes' ),
162 201 ],
163 202 'labels' => [
164 203 'singular' => esc_html( $type->labels->singular_name ),
165 - 'plural' => esc_html( $type->labels->name ),
204 + 'plural' => esc_html( $this->get_stable_plural_label( $type ) ),
166 205 'newItem' => esc_html( $type->labels->new_item ),
167 206 'editItem' => esc_html( $type->labels->edit_item ),
168 207 'viewItem' => esc_html( $type->labels->view_item ),
169 208 ],
@@ -168,8 +207,13 @@
168 207 'viewItem' => esc_html( $type->labels->view_item ),
169 208 ],
170 209 ];
171 210
211 + if ( 'wp_template' === $slug || 'wp_template_part' === $slug ) {
212 + $data[ $slug ]['labels']['singular'] = sprintf( esc_html_x( 'Block %s', 'Singular type name.', 'assistant' ), $type->labels->singular_name );
213 + $data[ $slug ]['labels']['plural'] = sprintf( esc_html_x( 'Block %s', 'Plural type name.', 'assistant' ), $this->get_stable_plural_label( $type ) );
214 + }
215 +
172 216 $taxonomies = get_object_taxonomies( $slug, 'objects' );
173 217
174 218 foreach ( $taxonomies as $tax_slug => $tax ) {
175 219 if ( ! $tax->public || ! $tax->show_ui ) {
@@ -200,9 +244,9 @@
200 244 'isHierarchical' => $taxonomy->hierarchical,
201 245 'labels' => [
202 246 'singular' => esc_html( $taxonomy->labels->singular_name ),
203 247 'plural' => esc_html( $taxonomy->labels->name ),
204 - 'newItem' => sprintf( esc_html_x( 'New %s', 'Singular term name.', 'fl-assistant' ), $taxonomy->labels->singular_name ),
248 + 'newItem' => sprintf( esc_html_x( 'New %s', 'Singular term name.', 'assistant' ), $taxonomy->labels->singular_name ),
205 249 'addNewItem' => esc_html( $taxonomy->labels->add_new_item ),
206 250 'editItem' => esc_html( $taxonomy->labels->edit_item ),
207 251 ],
208 252 ];