/**
  * Sets up the object course query
  * that will be used in the render method.
  *
  * @since 1.9.0
  */
 protected function setup_course_query()
 {
     $status_query = array('user_id' => get_current_user_id(), 'type' => 'sensei_course_status');
     $user_courses_logs = Sensei_Utils::sensei_check_for_activity($status_query, true);
     if (!is_array($user_courses_logs)) {
         $user_courses_logs = array($user_courses_logs);
     }
     $completed_ids = $active_ids = array();
     foreach ($user_courses_logs as $course_status) {
         if (Sensei_Utils::user_completed_course($course_status, get_current_user_id())) {
             $completed_ids[] = $course_status->comment_post_ID;
         } else {
             $active_ids[] = $course_status->comment_post_ID;
         }
     }
     if ('completed' == $this->status) {
         $included_courses = $completed_ids;
     } elseif ('active' == $this->status) {
         $included_courses = $active_ids;
     } else {
         // all courses
         if (empty($completed_ids)) {
             add_action('sensei_loop_course_inside_before', array($this, 'completed_no_course_message_output'));
         }
         if (empty($active_ids)) {
             add_action('sensei_loop_course_inside_before', array($this, 'active_no_course_message_output'));
         }
         if (empty($completed_ids) && empty($active_ids)) {
             $included_courses = array('-1000');
             // don't show any courses
         } else {
             $included_courses = Sensei_Utils::array_zip_merge((array) $active_ids, (array) $completed_ids);
         }
     }
     // temporary work around to hide pagination on the courses page
     // this is in place until we can load the course for each tab via ajax
     // if the shortcode is not active or in active and the active and completed
     // tabs show up.
     $number_of_posts = $this->number;
     if ('active' != $this->status && 'complete' != $this->status) {
         $number_of_posts = 1000;
     }
     // course query parameters
     $query_var_paged = get_query_var('paged');
     $query_args = array('post_type' => 'course', 'post_status' => 'publish', 'orderby' => $this->orderby, 'order' => $this->order, 'paged' => empty($query_var_paged) ? 1 : $query_var_paged, 'posts_per_page' => $number_of_posts, 'post__in' => $included_courses);
     $this->query = new WP_Query($query_args);
 }
Example #2
0
 /**
  * Test the array zip utility function
  * @since 1.9.0
  */
 public function testArrayZipMerge()
 {
     $this->assertTrue(method_exists('Sensei_Utils', 'array_zip_merge'), 'Sensei_Utils::array_zip_merge does not exist.');
     // test if the function works
     $array_1 = array(1, 2, 3);
     $array_2 = array(5, 6, 7, 8, 9);
     $array_zipped = Sensei_Utils::array_zip_merge($array_1, $array_2);
     $expected = array(1, 5, 2, 6, 3, 7, 8, 9);
     $this->assertEquals($expected, $array_zipped);
 }