diff --git a/includes/classes/DistributorPost.php b/includes/classes/DistributorPost.php
index 17d1d5eb3..fef6d0c18 100644
--- a/includes/classes/DistributorPost.php
+++ b/includes/classes/DistributorPost.php
@@ -748,7 +748,11 @@ protected function parse_blocks_for_attachment_id( $block ) {
}
if ( in_array( $block['blockName'], $block_names, true ) ) {
- $media[] = $block['attrs'][ $media_blocks[ $block['blockName'] ] ];
+ $attribute_key = $media_blocks[ $block['blockName'] ];
+
+ if ( isset( $block['attrs'][ $attribute_key ] ) ) {
+ $media[] = $block['attrs'][ $attribute_key ];
+ }
}
return $media;
diff --git a/includes/classes/PullListTable.php b/includes/classes/PullListTable.php
index 531d6f408..759afe833 100644
--- a/includes/classes/PullListTable.php
+++ b/includes/classes/PullListTable.php
@@ -437,19 +437,14 @@ public function prepare_items() {
/** Process bulk action */
$this->process_bulk_action();
- $per_page = $this->get_items_per_page( 'pull_posts_per_page', get_option( 'posts_per_page' ) );
-
+ $per_page = $this->get_items_per_page( 'pull_posts_per_page', get_option( 'posts_per_page' ) );
$current_page = $this->get_pagenum();
// Support 'View all' filtering for internal connections.
- if ( is_a( $connection_now, '\Distributor\InternalConnections\NetworkSiteConnection' ) ) {
- if ( empty( $connection_now->pull_post_type ) || 'all' === $connection_now->pull_post_type ) {
- $post_type = wp_list_pluck( $connection_now->pull_post_types, 'slug' );
- } else {
- $post_type = $connection_now->pull_post_type;
- }
+ if ( empty( $connection_now->pull_post_type ) || 'all' === $connection_now->pull_post_type ) {
+ $post_type = wp_list_pluck( $connection_now->pull_post_types, 'slug' );
} else {
- $post_type = $connection_now->pull_post_type ? $connection_now->pull_post_type : 'post';
+ $post_type = $connection_now->pull_post_type;
}
$remote_get_args = [
@@ -527,18 +522,23 @@ public function prepare_items() {
$remote_get_args['paged'] = 1;
}
+ if ( ! is_array( $remote_get_args['post_type'] ) ) {
+ $remote_get_args['post_type'] = [ $remote_get_args['post_type'] ];
+ }
+
+ $total_items = 0;
+ $response_data = array();
+
+ // Setup remote connection from the connection object.
$remote_get = $connection_now->remote_get( $remote_get_args );
+ // Check and throw error if there is one.
if ( is_wp_error( $remote_get ) ) {
$this->pull_error = $remote_get->get_error_messages();
-
- return;
}
- // Get total items retrieved from the remote request if not already set.
- if ( false === $total_items ) {
- $total_items = $remote_get['total_items'];
- }
+ $total_items = $remote_get['total_items'];
+ $response_data = array_merge( $response_data, array_values( $remote_get['items'] ) );
$this->set_pagination_args(
[
@@ -547,7 +547,7 @@ public function prepare_items() {
]
);
- foreach ( $remote_get['items'] as $item ) {
+ foreach ( $response_data as $item ) {
$this->items[] = $item;
}
}
@@ -612,17 +612,15 @@ public function extra_tablenav( $which ) {
$connection_type = 'external';
}
- if ( $connection_now && $connection_now->pull_post_types && $connection_now->pull_post_type ) :
+ if ( $connection_now && $connection_now->pull_post_types ) :
?>
pull_post_type = '';
$connection_now->pull_post_types = \Distributor\Utils\available_pull_post_types( $connection_now, $connection_type );
// Ensure we have at least one post type to pull.
$connection_now->pull_post_type = '';
if ( ! empty( $connection_now->pull_post_types ) ) {
- $connection_now->pull_post_type = ( 'internal' === $connection_type ) ? 'all' : $connection_now->pull_post_types[0]['slug'];
+ $connection_now->pull_post_type = 'all';
}
// Set the post type we want to pull (if any)
// This is either from a query param, "post" post type, or the first in the list
foreach ( $connection_now->pull_post_types as $post_type ) {
- if ( isset( $_GET['pull_post_type'] ) ) { // @codingStandardsIgnoreLine No nonce needed here.
- if ( $_GET['pull_post_type'] === $post_type['slug'] ) { // @codingStandardsIgnoreLine Comparing values, no nonce needed.
- $connection_now->pull_post_type = $post_type['slug'];
+ if ( ! empty( $_GET['pull_post_type'] ) ) {
+ if ( 'all' === $_GET['pull_post_type'] ) {
+ $connection_now->pull_post_type = 'all';
break;
- }
- } else {
- if ( 'post' === $post_type['slug'] && 'external' === $connection_type ) {
+ } elseif ( $_GET['pull_post_type'] === $post_type['slug'] ) {
$connection_now->pull_post_type = $post_type['slug'];
break;
}
+ } else {
+ $connection_now->pull_post_type = ! empty( $post_type['slug'] ) ? $post_type['slug'] : 'all';
+ break;
}
}
?>
diff --git a/includes/rest-api.php b/includes/rest-api.php
index 41dceed42..cf7d914b1 100644
--- a/includes/rest-api.php
+++ b/includes/rest-api.php
@@ -586,12 +586,7 @@ function distributor_meta() {
* Check user permissions for available post types
*/
function check_post_types_permissions() {
- $types = get_post_types(
- array(
- 'show_in_rest' => true,
- ),
- 'objects'
- );
+ $types = Utils\distributable_post_types( 'objects' );
$response = array(
'can_get' => array(),
@@ -623,10 +618,11 @@ function check_post_types_permissions() {
* @return \WP_REST_Response|\WP_Error
*/
function get_pull_content_list( $request ) {
- $args = [
+ $post_type = ! empty( $request['post_type'] ) ? $request['post_type'] : array( 'post' );
+ $args = [
'posts_per_page' => isset( $request['posts_per_page'] ) ? $request['posts_per_page'] : 20,
'paged' => isset( $request['page'] ) ? $request['page'] : 1,
- 'post_type' => isset( $request['post_type'] ) ? $request['post_type'] : 'post',
+ 'post_type' => $post_type,
'post_status' => isset( $request['post_status'] ) ? $request['post_status'] : array( 'any' ),
'order' => ! empty( $request['order'] ) ? strtoupper( $request['order'] ) : 'DESC',
];
diff --git a/includes/utils.php b/includes/utils.php
index 1e53a57f9..607a07985 100644
--- a/includes/utils.php
+++ b/includes/utils.php
@@ -434,7 +434,13 @@ function excluded_meta() {
*/
function prepare_meta( $post_id ) {
update_postmeta_cache( array( $post_id ) );
- $meta = get_post_meta( $post_id );
+ $meta = get_post_meta( $post_id );
+
+ if ( false === $meta ) {
+ return array();
+ }
+
+ $meta = is_array( $meta ) ? $meta : array();
$prepared_meta = array();
$excluded_meta = excluded_meta();