/**
  * Prepare the items
  */
 public function prepare_items()
 {
     // Get current view
     $view = $this->get_current_view();
     // Check if we're in the related view
     if ('related' == $view) {
         $this->is_related = true;
     }
     // Set table properties
     $columns = $this->get_columns();
     $hidden = array();
     $sortable = $this->get_sortable_columns();
     $this->_column_headers = array($columns, $hidden, $sortable);
     // pagination and sorting
     $screen = get_current_screen();
     $per_page = absint(get_user_meta(get_current_user_id(), $screen->get_option('per_page', 'option'), true));
     $per_page = $per_page > 0 ? $per_page : 20;
     $paged = absint(isset($_GET['paged']) ? $_GET['paged'] : 1);
     $orderby = isset($_GET['orderby']) ? $_GET['orderby'] : 'title';
     $order = isset($_GET['order']) ? $_GET['order'] : 'asc';
     // views
     $this->views();
     // Set search
     if (null !== $this->search) {
         add_filter('posts_where', array($this, 'filter_posts_where'));
     }
     // Get Data
     $this->data = array();
     // Get posts
     if ('all' == $view) {
         // Post Type Manager
         $pt_manager = new RP4WP_Post_Type_Manager();
         // Get linked posts
         $linked_post_types = $pt_manager->get_installed_post_type($this->post_type);
         // posts
         $posts = array();
         // the posts query
         $post_query = new WP_Query(array('post_type' => $linked_post_types, 'posts_per_page' => $per_page, 'paged' => $paged, 'suppress_filters' => false, 'orderby' => $orderby, 'order' => $order, 'post_status' => apply_filters('rp4wp_manual_link_post_statuses', array('publish', 'private'))));
         // Format data for table
         if ($post_query->have_posts()) {
             while ($post_query->have_posts()) {
                 $posts[] = $post_query->next_post();
             }
         }
     } else {
         $rpm = new RP4WP_Related_Post_Manager();
         $parent = intval($_GET['rp4wp_parent']);
         $posts = $rpm->get_related_posts($parent, $this->post_type, 25);
     }
     // Format data for table
     if (count($posts) > 0) {
         foreach ($posts as $post) {
             // Related results only contain ID to keep query fast. Rather have an extra query per post on manual linking than a much heavier query for all linking.
             if (!isset($post->post_title)) {
                 $post = get_post($post->ID);
             }
             $this->data[] = array('ID' => $post->ID, 'title' => $post->post_title, 'post_type' => $post->post_type);
         }
     }
     // Remove search filter
     remove_filter('posts_where', array($this, 'filter_posts_where'));
     // Pagination only for all view
     if ('all' == $view) {
         $this->set_pagination_args(array('total_items' => $post_query->found_posts, 'per_page' => $per_page));
     }
     // Set items
     $this->items = $this->data;
 }
 /**
  * Prepare the items
  */
 public function prepare_items()
 {
     // Get current view
     $view = $this->get_current_view();
     // Check if we're in the related view
     if ('related' == $view) {
         $this->is_related = true;
     }
     // Set table properties
     $columns = $this->get_columns();
     $hidden = array();
     $sortable = $this->get_sortable_columns();
     $this->_column_headers = array($columns, $hidden, $sortable);
     // Vies
     $this->views();
     // Set search
     if ($this->search !== null) {
         add_filter('posts_where', array($this, 'filter_posts_where'));
     }
     // Get Data
     $this->data = array();
     // Get posts
     if ('all' == $view) {
         $posts = get_posts(array('post_type' => 'post', 'posts_per_page' => '-1', 'suppress_filters' => false));
     } else {
         $rpm = new RP4WP_Related_Post_Manager();
         $parent = $_GET['rp4wp_parent'];
         $posts = $rpm->get_related_posts($parent);
     }
     // Format data for table
     if (count($posts) > 0) {
         foreach ($posts as $post) {
             $this->data[] = array('ID' => $post->ID, 'title' => $post->post_title);
         }
     }
     // Remove search filter
     remove_filter('posts_where', array($this, 'filter_posts_where'));
     // Sort
     if (!$this->is_related) {
         if (count($this->data) > 0) {
             usort($this->data, array($this, 'custom_reorder'));
         }
     }
     // Set items
     $this->items = $this->data;
 }