Skip to content

Commit

Permalink
Merge pull request #1002 from 10up/feature/861
Browse files Browse the repository at this point in the history
Added ability to view all post types when Pulling from an External Connection
  • Loading branch information
peterwilsoncc authored Jul 30, 2024
2 parents c8069ca + 2d90008 commit ae90450
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 31 deletions.
42 changes: 20 additions & 22 deletions includes/classes/PullListTable.php
Original file line number Diff line number Diff line change
Expand Up @@ -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 = [
Expand Down Expand Up @@ -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(
[
Expand All @@ -547,7 +547,7 @@ public function prepare_items() {
]
);

foreach ( $remote_get['items'] as $item ) {
foreach ( $response_data as $item ) {
$this->items[] = $item;
}
}
Expand Down Expand Up @@ -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 ) :
?>

<div class="alignleft actions dt-pull-post-type">
<label for="pull_post_type" class="screen-reader-text">Content to Pull</label>
<select id="pull_post_type" name="pull_post_type">
<?php if ( 'internal' === $connection_type ) : ?>
<option <?php selected( $connection_now->pull_post_type, 'all' ); ?> value="all">
<?php esc_html_e( 'View all', 'distributor' ); ?>
</option>
<?php endif; ?>
<option <?php selected( $connection_now->pull_post_type, 'all' ); ?> value="all">
<?php esc_html_e( 'View all', 'distributor' ); ?>
</option>
<?php foreach ( $connection_now->pull_post_types as $post_type ) : ?>
<option <?php selected( $connection_now->pull_post_type, $post_type['slug'] ); ?> value="<?php echo esc_attr( $post_type['slug'] ); ?>">
<?php echo esc_html( $post_type['name'] ); ?>
Expand Down
16 changes: 9 additions & 7 deletions includes/pull-ui.php
Original file line number Diff line number Diff line change
Expand Up @@ -472,27 +472,29 @@ function dashboard() {
</select>

<?php
$connection_now->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;
}
}
?>
Expand Down
5 changes: 3 additions & 2 deletions includes/rest-api.php
Original file line number Diff line number Diff line change
Expand Up @@ -618,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',
];
Expand Down

0 comments on commit ae90450

Please sign in to comment.