/** * 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); }
/** * 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); }