| @@ 472-515 (lines=44) @@ | ||
| 469 | * @since 1.7.0 |
|
| 470 | * @return array statuses |
|
| 471 | */ |
|
| 472 | private function get_course_statuses( $args ) { |
|
| 473 | ||
| 474 | $activity_args = array( |
|
| 475 | 'post_id' => $this->course_id, |
|
| 476 | 'type' => 'sensei_course_status', |
|
| 477 | 'number' => $args['number'], |
|
| 478 | 'offset' => $args['offset'], |
|
| 479 | 'orderby' => $args['orderby'], |
|
| 480 | 'order' => $args['order'], |
|
| 481 | 'status' => 'any', |
|
| 482 | ); |
|
| 483 | ||
| 484 | // Searching users on statuses requires sub-selecting the statuses by user_ids |
|
| 485 | if ( $this->search ) { |
|
| 486 | $user_args = array( |
|
| 487 | 'search' => '*' . $this->search . '*', |
|
| 488 | 'fields' => 'ID', |
|
| 489 | ); |
|
| 490 | // Filter for extending |
|
| 491 | $user_args = apply_filters( 'sensei_analysis_course_search_users', $user_args ); |
|
| 492 | if ( !empty( $user_args ) ) { |
|
| 493 | $learners_search = new WP_User_Query( $user_args ); |
|
| 494 | // Store for reuse on counts |
|
| 495 | $activity_args['user_id'] = (array) $learners_search->get_results(); |
|
| 496 | } |
|
| 497 | } // End If Statement |
|
| 498 | ||
| 499 | $activity_args = apply_filters( 'sensei_analysis_course_filter_statuses', $activity_args ); |
|
| 500 | ||
| 501 | // WP_Comment_Query doesn't support SQL_CALC_FOUND_ROWS, so instead do this twice |
|
| 502 | $this->total_items = Sensei_Utils::sensei_check_for_activity( array_merge( $activity_args, array('count' => true, 'offset' => 0, 'number' => 0) ) ); |
|
| 503 | ||
| 504 | // Ensure we change our range to fit (in case a search threw off the pagination) - Should this be added to all views? |
|
| 505 | if ( $this->total_items < $activity_args['offset'] ) { |
|
| 506 | $new_paged = floor( $this->total_items / $activity_args['number'] ); |
|
| 507 | $activity_args['offset'] = $new_paged * $activity_args['number']; |
|
| 508 | } |
|
| 509 | $statuses = Sensei_Utils::sensei_check_for_activity( $activity_args, true ); |
|
| 510 | // Need to always return an array, even with only 1 item |
|
| 511 | if ( !is_array($statuses) ) { |
|
| 512 | $statuses = array( $statuses ); |
|
| 513 | } |
|
| 514 | return $statuses; |
|
| 515 | } // End get_course_statuses() |
|
| 516 | ||
| 517 | /** |
|
| 518 | * Return array of Courses' lessons |
|
| @@ 259-302 (lines=44) @@ | ||
| 256 | * @since 1.7.0 |
|
| 257 | * @return array statuses |
|
| 258 | */ |
|
| 259 | private function get_lesson_statuses( $args ) { |
|
| 260 | ||
| 261 | $activity_args = array( |
|
| 262 | 'post_id' => $this->lesson_id, |
|
| 263 | 'type' => 'sensei_lesson_status', |
|
| 264 | 'number' => $args['number'], |
|
| 265 | 'offset' => $args['offset'], |
|
| 266 | 'orderby' => $args['orderby'], |
|
| 267 | 'order' => $args['order'], |
|
| 268 | 'status' => 'any', |
|
| 269 | ); |
|
| 270 | ||
| 271 | // Searching users on statuses requires sub-selecting the statuses by user_ids |
|
| 272 | if ( $this->search ) { |
|
| 273 | $user_args = array( |
|
| 274 | 'search' => '*' . $this->search . '*', |
|
| 275 | 'fields' => 'ID', |
|
| 276 | ); |
|
| 277 | // Filter for extending |
|
| 278 | $user_args = apply_filters( 'sensei_analysis_lesson_search_users', $user_args ); |
|
| 279 | if ( !empty( $user_args ) ) { |
|
| 280 | $learners_search = new WP_User_Query( $user_args ); |
|
| 281 | // Store for reuse on counts |
|
| 282 | $activity_args['user_id'] = (array) $learners_search->get_results(); |
|
| 283 | } |
|
| 284 | } // End If Statement |
|
| 285 | ||
| 286 | $activity_args = apply_filters( 'sensei_analysis_lesson_filter_statuses', $activity_args ); |
|
| 287 | ||
| 288 | // WP_Comment_Query doesn't support SQL_CALC_FOUND_ROWS, so instead do this twice |
|
| 289 | $this->total_items = Sensei_Utils::sensei_check_for_activity( array_merge( $activity_args, array('count' => true, 'offset' => 0, 'number' => 0) ) ); |
|
| 290 | ||
| 291 | // Ensure we change our range to fit (in case a search threw off the pagination) - Should this be added to all views? |
|
| 292 | if ( $this->total_items < $activity_args['offset'] ) { |
|
| 293 | $new_paged = floor( $total_statuses / $activity_args['number'] ); |
|
| 294 | $activity_args['offset'] = $new_paged * $activity_args['number']; |
|
| 295 | } |
|
| 296 | $statuses = Sensei_Utils::sensei_check_for_activity( $activity_args, true ); |
|
| 297 | // Need to always return an array, even with only 1 item |
|
| 298 | if ( !is_array($statuses) ) { |
|
| 299 | $statuses = array( $statuses ); |
|
| 300 | } |
|
| 301 | return $statuses; |
|
| 302 | } // End get_lesson_statuses() |
|
| 303 | ||
| 304 | /** |
|
| 305 | * no_items sets output when no items are found |
|