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/Controllers/Cloud/Libraries/LibraryItemPostController.php +82 -28 0.7.1 → 1.5.5.1 View file →
@@ -73,13 +73,13 @@
73 73 [
74 74 'methods' => \WP_REST_Server::CREATABLE,
75 75 'callback' => [ $this, 'sync_to_library' ],
76 76 'args' => [
77 - 'id' => [
77 + 'id' => [
78 78 'required' => true,
79 79 'type' => 'number',
80 80 ],
81 - 'item_id' => [
81 + 'item_id' => [
82 82 'required' => true,
83 83 'type' => 'number',
84 84 ],
85 85 ],
@@ -109,9 +109,9 @@
109 109 [
110 110 'methods' => \WP_REST_Server::CREATABLE,
111 111 'callback' => [ $this, 'import_post_thumb_from_library' ],
112 112 'args' => [
113 - 'post_id' => [
113 + 'post_id' => [
114 114 'required' => true,
115 115 'type' => 'number',
116 116 ],
117 117 ],
@@ -128,9 +128,9 @@
128 128 [
129 129 'methods' => \WP_REST_Server::CREATABLE,
130 130 'callback' => [ $this, 'import_post_media_from_library' ],
131 131 'args' => [
132 - 'post_id' => [
132 + 'post_id' => [
133 133 'required' => true,
134 134 'type' => 'number',
135 135 ],
136 136 ],
@@ -147,9 +147,9 @@
147 147 [
148 148 'methods' => \WP_REST_Server::CREATABLE,
149 149 'callback' => [ $this, 'sync_from_library' ],
150 150 'args' => [
151 - 'id' => [
151 + 'id' => [
152 152 'required' => true,
153 153 'type' => 'number',
154 154 ],
155 155 ],
@@ -228,12 +228,12 @@
228 228 * @param object $post
229 229 * @return array
230 230 */
231 231 public function get_save_data( $request, $post ) {
232 - return [
232 + $data = [
233 233 'name' => $post->post_title,
234 234 'type' => 'post',
235 - 'data' => [
235 + 'post_data' => [
236 236 'post' => [
237 237 'comment_status' => $post->comment_status,
238 238 'menu_order' => $post->menu_order,
239 239 'ping_status' => $post->ping_status,
@@ -248,13 +248,20 @@
248 248 'terms' => $this->get_post_terms( $post ),
249 249
250 250 ],
251 251 'media' => [
252 - 'thumb' => get_attached_file( get_post_thumbnail_id( $post ) ),
253 252 'attachments' => $this->get_post_image_paths( $post ),
254 253 ],
255 254 'screenshot' => $this->get_post_screenshot( $request, $post ),
256 255 ];
256 +
257 + $thumbnail = get_attached_file( get_post_thumbnail_id( $post ) );
258 +
259 + if ($thumbnail) {
260 + $data['media']['thumb'] = $thumbnail;
261 + }
262 +
263 + return $data;
257 264 }
258 265
259 266 /**
260 267 * Saves a post to a cloud library.
@@ -267,12 +274,18 @@
267 274 $library_id = $request->get_param( 'library_id' );
268 275 $post = get_post( $id );
269 276 $client = new CloudClient;
270 277
271 - return $client->libraries->create_item(
278 + $response = $client->libraries->create_item(
272 279 $library_id,
273 280 $this->get_save_data( $request, $post )
274 281 );
282 +
283 + if (isset($response->success) && $response->success === false) {
284 + return new \WP_Error( 'API Error', $response->message, [ 'status' => 400 ] );
285 + }
286 +
287 + return $response;
275 288 }
276 289
277 290 /**
278 291 * Replaces a library post with a post on this site.
@@ -284,13 +297,20 @@
284 297 $id = $request->get_param( 'id' );
285 298 $item_id = $request->get_param( 'item_id' );
286 299 $post = get_post( $id );
287 300 $client = new CloudClient;
301 + $data = $this->get_save_data( $request, $post );
288 302
289 - return $client->libraries->update_item(
303 + $response = $client->libraries->update_item(
290 304 $item_id,
291 - $this->get_save_data( $request, $post )
305 + $data
292 306 );
307 +
308 + if (isset($response->success) && $response->success === false) {
309 + return new \WP_Error( 'API Error', $response->message, [ 'status' => 400 ] );
310 + }
311 +
312 + return $response;
293 313 }
294 314
295 315 /**
296 316 * Imports a post from a library to the site.
@@ -309,9 +329,26 @@
309 329 ]
310 330 );
311 331 }
312 332
333 + $client = new CloudClient;
334 + $item = $client->libraries->get_item( $item->id );
335 +
336 + $registered_post_types = get_post_types();
337 +
338 + if ( ! in_array( $item->data->post->post_type, $registered_post_types ) ) {
339 + return rest_ensure_response(
340 + [
341 + 'error' => true,
342 + 'error_code' => 'post_type_not_registered',
343 + 'post_type' => $item->data->post->post_type,
344 + ]
345 + );
346 + }
347 +
313 348 $post_data = $item->data->post;
349 + $meta_data = $item->data->meta;
350 + $term_data = $item->data->terms;
314 351
315 352 $new_post_id = wp_insert_post(
316 353 [
317 354 'comment_status' => $post_data->comment_status,
@@ -319,9 +356,9 @@
319 356 'ping_status' => $post_data->ping_status,
320 357 'post_author' => wp_get_current_user()->ID,
321 358 'post_content' => $post_data->post_content ? $post_data->post_content : '',
322 359 'post_excerpt' => $post_data->post_excerpt ? $post_data->post_excerpt : '',
323 - 'post_mime_type' => $post_data->post_mime_type,
360 + 'post_mime_type' => $post_data->post_mime_type ? $post_data->post_mime_type : '',
324 361 'post_name' => $post_data->post_name,
325 362 'post_status' => 'publish',
326 363 'post_title' => $post_data->post_title,
327 364 'post_type' => $post_data->post_type,
@@ -335,11 +372,11 @@
335 372 ]
336 373 );
337 374 }
338 375
339 - $this->import_post_meta_from_library( $new_post_id, $item->data->meta );
340 - $this->import_post_terms_from_library( $new_post_id, $item->data->terms );
341 - $this->regenerate_builder_cache( $item );
376 + $this->import_post_meta_from_library( $new_post_id, $meta_data );
377 + $this->import_post_terms_from_library( $new_post_id, $term_data );
378 + $this->regenerate_builder_cache( $new_post_id, $item );
342 379
343 380 return rest_ensure_response(
344 381 $this->posts->transform(
345 382 get_post( $new_post_id )
@@ -365,12 +402,18 @@
365 402 ]
366 403 );
367 404 }
368 405
406 + $client = new CloudClient;
407 + $item = $client->libraries->get_item( $item->id );
408 + $post_data = $item->data->post;
409 + $meta_data = $item->data->meta;
410 + $term_data = $item->data->terms;
411 +
369 412 $updated = wp_update_post(
370 413 [
371 414 'ID' => $post_id,
372 - 'post_content' => $item->data->post->post_content,
415 + 'post_content' => $post_data->post_content,
373 416 ]
374 417 );
375 418
376 419 if ( is_wp_error( $updated ) ) {
@@ -380,11 +423,11 @@
380 423 ]
381 424 );
382 425 }
383 426
384 - $this->import_post_meta_from_library( $post_id, $item->data->meta );
385 - $this->import_post_terms_from_library( $post_id, $item->data->terms );
386 - $this->regenerate_builder_cache( $item );
427 + $this->import_post_meta_from_library( $post_id, $meta_data );
428 + $this->import_post_terms_from_library( $post_id, $term_data );
429 + $this->regenerate_builder_cache( $post_id, $item );
387 430
388 431 return rest_ensure_response(
389 432 $this->posts->transform(
390 433 get_post( $post_id )
@@ -405,18 +448,26 @@
405 448 if ( ! $meta || ! is_object( $meta ) ) {
406 449 return;
407 450 }
408 451
452 + if ( isset( $meta->_fl_builder_data ) ) {
453 + $meta->_fl_builder_draft = $meta->_fl_builder_data;
454 + $meta->_fl_builder_draft_settings = $meta->_fl_builder_data_settings;
455 + }
456 +
409 457 foreach ( $meta as $meta_key => $meta_value ) {
410 458 if ( metadata_exists( 'post', $post_id, $meta_key ) ) {
411 459 delete_metadata( 'post', $post_id, $meta_key );
412 460 }
413 -
414 - foreach ( $meta_value as $value ) {
415 - $value = addslashes( $value );
416 - // @codingStandardsIgnoreStart
417 - $wpdb->query( "INSERT INTO {$wpdb->postmeta} (post_id, meta_key, meta_value) values ({$post_id}, '{$meta_key}', '{$value}')" );
418 - // @codingStandardsIgnoreEnd
461 + if ( is_array( $meta_value ) && count( $meta_value ) !== 0 ) {
462 + foreach ( $meta_value as $value ) {
463 + if ( $value !== null ) {
464 + $value = addslashes( $value );
465 + }
466 + // @codingStandardsIgnoreStart
467 + $wpdb->query( "INSERT INTO {$wpdb->postmeta} (post_id, meta_key, meta_value) values ({$post_id}, '{$meta_key}', '{$value}')" );
468 + // @codingStandardsIgnoreEnd
469 + }
419 470 }
420 471 }
421 472 }
422 473
@@ -439,9 +490,9 @@
439 490
440 491 foreach ( $terms as $term ) {
441 492 if ( ! isset( $term->name ) || ! isset( $term->taxonomy ) ) {
442 493 continue;
443 - } else if ( ! taxonomy_exists( $term->taxonomy ) ) {
494 + } elseif ( ! taxonomy_exists( $term->taxonomy ) ) {
444 495 continue;
445 496 } elseif ( ! isset( $taxonomy_terms ) ) {
446 497 $taxonomy_terms[ $term->taxonomy ] = [];
447 498 }
@@ -462,9 +513,9 @@
462 513 );
463 514 $term_id = $is_hierarchical ? $new_term['term_taxonomy_id'] : $term->name;
464 515 }
465 516
466 - $taxonomy_terms[ $term->taxonomy ] = $term_id;
517 + $taxonomy_terms[ $term->taxonomy ][] = $term_id;
467 518 }
468 519
469 520 foreach ( $taxonomy_terms as $taxonomy => $terms ) {
470 521 wp_delete_object_term_relationships( $post_id, $taxonomy );
@@ -638,11 +689,14 @@
638 689 *
639 690 * @param object $item
640 691 * @return void
641 692 */
642 - public function regenerate_builder_cache( $item ) {
693 + public function regenerate_builder_cache( $post_id, $item ) {
643 694 $meta = (array) $item->data->meta;
644 695
696 + if ( isset( $meta['_fl_builder_data'] ) && class_exists( '\FLBuilderModel' ) ) {
697 + \FLBuilderModel::delete_all_asset_cache( $post_id );
698 + }
645 699 if ( isset( $meta['_elementor_data'] ) && class_exists( 'Elementor\Plugin' ) ) {
646 700 \Elementor\Plugin::$instance->files_manager->clear_cache();
647 701 }
648 702 }