| @@ -75,12 +75,9 @@ | ||
| 75 | 75 | * |
| 76 | 76 | * @return void |
| 77 | 77 | */ |
| 78 | 78 | public function redirect_to( string $url, $flash_message = null, $flash_type = 'success' ) { |
| 79 | - $url = trim( $url ); | |
| 80 | - if ( filter_var( $url, FILTER_VALIDATE_URL ) === false ) { | |
| 81 | - wp_die( 'Not a valid URL for redirect' ); | |
| 82 | - } | |
| 79 | + $url = esc_url( trim( $url ) ); | |
| 83 | 80 | |
| 84 | 81 | $available_types = array( 'success', 'error' ); |
| 85 | 82 | if ( ! empty( $flash_message ) && in_array( $flash_type, $available_types ) ) { |
| 86 | 83 | set_transient( 'tutor_flash_type', $flash_type ); |
| @@ -2268,17 +2265,19 @@ | ||
| 2268 | 2265 | /** |
| 2269 | 2266 | * Get the enrolled courses by user |
| 2270 | 2267 | * |
| 2271 | 2268 | * @since 1.0.0 |
| 2269 | + * @since 2.5.0 $filters param added to query enrolled courses with additional filters. | |
| 2272 | 2270 | * |
| 2273 | 2271 | * @param integer $user_id user id. |
| 2274 | 2272 | * @param string $post_status post status. |
| 2275 | 2273 | * @param integer $offset offset. |
| 2276 | 2274 | * @param integer $posts_per_page post per page. |
| 2275 | + * @param array $filters additional filters with key value for \WP_Query. | |
| 2277 | 2276 | * |
| 2278 | 2277 | * @return bool|\WP_Query |
| 2279 | 2278 | */ |
| 2280 | - public function get_enrolled_courses_by_user( $user_id = 0, $post_status = 'publish', $offset = 0, $posts_per_page = -1 ) { | |
| 2279 | + public function get_enrolled_courses_by_user( $user_id = 0, $post_status = 'publish', $offset = 0, $posts_per_page = -1, $filters = array() ) { | |
| 2281 | 2280 | global $wpdb; |
| 2282 | 2281 | |
| 2283 | 2282 | $user_id = $this->get_user_id( $user_id ); |
| 2284 | 2283 | $course_ids = array_unique( $this->get_enrolled_courses_ids_by_user( $user_id ) ); |
| @@ -2292,8 +2291,17 @@ | ||
| 2292 | 2291 | 'offset' => $offset, |
| 2293 | 2292 | 'posts_per_page' => $posts_per_page, |
| 2294 | 2293 | ); |
| 2295 | 2294 | |
| 2295 | + if ( count( $filters ) ) { | |
| 2296 | + $keys = array_keys( $course_args ); | |
| 2297 | + foreach ( $filters as $key => $value ) { | |
| 2298 | + if ( ! in_array( $key, $keys ) ) { | |
| 2299 | + $course_args[ $key ] = $value; | |
| 2300 | + } | |
| 2301 | + } | |
| 2302 | + } | |
| 2303 | + | |
| 2296 | 2304 | $result = new \WP_Query( $course_args ); |
| 2297 | 2305 | |
| 2298 | 2306 | if ( is_object( $result ) && is_array( $result->posts ) ) { |
| 2299 | 2307 | |
| @@ -6495,8 +6503,26 @@ | ||
| 6495 | 6503 | return apply_filters( 'tutor_referer_url', $url ); |
| 6496 | 6504 | } |
| 6497 | 6505 | |
| 6498 | 6506 | /** |
| 6507 | + * Get HTTP referer field | |
| 6508 | + * | |
| 6509 | + * @since 2.5.0 | |
| 6510 | + * | |
| 6511 | + * @param boolean $url_decode URL decode for unicode support. | |
| 6512 | + * | |
| 6513 | + * @return void|string | |
| 6514 | + */ | |
| 6515 | + public function referer_field( $url_decode = true ) { | |
| 6516 | + $url = remove_query_arg( '_wp_http_referer' ); | |
| 6517 | + if ( $url_decode ) { | |
| 6518 | + $url = urldecode( $url ); | |
| 6519 | + } | |
| 6520 | + | |
| 6521 | + echo '<input type="hidden" name="_wp_http_referer" value="'. esc_url( $url ) .'">'; | |
| 6522 | + } | |
| 6523 | + | |
| 6524 | + /** | |
| 6499 | 6525 | * Get the frontend dashboard course edit page |
| 6500 | 6526 | * |
| 6501 | 6527 | * @since 1.3.4 |
| 6502 | 6528 | * |
| @@ -9528,10 +9554,14 @@ | ||
| 9528 | 9554 | if ( ! array_key_exists( $result->content_type, $course_meta[ $result->course_id ] ) ) { |
| 9529 | 9555 | $course_meta[ $result->course_id ][ $result->content_type ] = array(); |
| 9530 | 9556 | } |
| 9531 | 9557 | |
| 9532 | - if ( $result->content_id ) { | |
| 9533 | - $course_meta[ $result->course_id ][ $result->content_type ][] = $result->content_id; | |
| 9558 | + try { | |
| 9559 | + if ( $result->content_id ) { | |
| 9560 | + $course_meta[ $result->course_id ][ $result->content_type ][] = $result->content_id; | |
| 9561 | + } | |
| 9562 | + } catch (\Throwable $th) { | |
| 9563 | + tutor_log( 'Affected course ID : ' . $result->course_id . ' Error : '. $th->getMessage() ); | |
| 9534 | 9564 | } |
| 9535 | 9565 | } |
| 9536 | 9566 | |
| 9537 | 9567 | // Unify counts. |