LLMS_Query_User_Postmeta::parse_args()
Parses data passed to $statuses Convert strings to array and ensure resulting array contains only valid statuses If no valid statuses, returns to the default
Return Return
(void)
Source Source
File: includes/class.llms.query.user.postmeta.php
// Sanitize post & user ids.
foreach ( array( 'post_id', 'user_id' ) as $key ) {
$this->arguments[ $key ] = $this->sanitize_id_array( $this->arguments[ $key ] );
}
if ( $this->arguments['include_post_children'] ) {
foreach ( $this->arguments['post_id'] as $id ) {
if ( 'course' !== get_post_type( $id ) ) {
continue;
}
$course = llms_get_post( $id );
$this->arguments['post_id'] = array_merge(
$this->arguments['post_id'],
$this->sanitize_id_array( $course->get_sections( 'ids' ) ),
$this->sanitize_id_array( $course->get_lessons( 'ids' ) ),
$this->sanitize_id_array( $course->get_quizzes() )
);
}
}
if ( $this->arguments['types'] ) {
$all_events = array(
'completion' => array(
'key' => '_is_complete',
'value' => 'yes',
),
'status' => array(
'compare' => 'IS NOT NULL',
'key' => '_status',
),
'achievement' => array(
'compare' => 'IS NOT NULL',
'key' => '_achievement_earned',
),
'certificate' => array(
'compare' => 'IS NOT NULL',
'key' => '_certificate_earned',
),
'email' => array(
'compare' => 'IS NOT NULL',
'key' => '_email_sent',
),
'purchase' => array(
'compare' => 'LIKE',
'key' => '_enrollment_trigger',
'value' => 'order_%',
),
'favorites' => array(
'key' => '_favorite',
'compare' => 'IS NOT NULL',
),
);
if ( is_string( $this->arguments['types'] ) && 'all' === $this->arguments['types'] ) {
$this->arguments['query'] = array_values( $all_events );
} else {
$this->arguments['query'] = array();
if ( ! is_array( $this->arguments['types'] ) ) {
$this->arguments['types'] = array( $this->arguments['types'] );
}
foreach ( $this->arguments['types'] as $type ) {
if ( ! isset( $all_events[ $type ] ) ) {
continue;
}
$this->arguments['query'][] = $all_events[ $type ];
}
}
}
if ( $this->arguments['query'] ) {
foreach ( $this->arguments['query'] as $i => &$query ) {
// Ensure that each query has a compare operator.
$query = wp_parse_args(
$query,
array(
'compare' => '=',
'key' => '',
'value' => '',
)
);
$operators = array( '=', '!=', 'LIKE', 'IN', 'NOT IN', 'IS NOT NULL' );
if ( ! in_array( $query['compare'], $operators ) ) {
unset( $this->arguments['query'][ $i ] );
}
}
}
if ( ! in_array( $this->arguments['query_compare'], array( 'AND', 'OR' ) ) ) {
$this->arguments['query_compare'] = 'OR';
Expand full source code Collapse full source code View on GitHub
Changelog Changelog
| Version | Description |
|---|---|
| 3.15.0 | Introduced. |