Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- add_filter( 'posts_clauses', function( $clauses, $query_object ) {
- global $wpdb;
- $user_id = get_current_user_id();
- if ( ! array_key_exists('graphql_args', $query_object->query ) ) {
- return $clauses;
- }
- switch ( $query_object->query['post_type'] ) {
- case 'edgeuserquiz':
- $join = &$clauses['join'];
- if ( ! empty( $join ) ) $join .= ' ';
- $join .= "JOIN ps_edgeuserquiz uq ON {$wpdb->posts}.id = uq.id";
- $where = &$clauses['where'];
- $where .= " AND uq.uq_userid = {$user_id}";
- if ( array_key_exists('where', $query_object->query['graphql_args'] ) &&
- array_key_exists('quizId', $query_object->query['graphql_args']['where'] ) ) {
- $quizId = $query_object->query['graphql_args']['where']['quizId'];
- $where .= " AND uq.uq_quiz = {$quizId}";
- }
- break;
- case 'edgeusertutorial':
- $join = &$clauses['join'];
- if ( ! empty( $join ) ) $join .= ' ';
- $join .= "JOIN ps_edgeusertut ut ON {$wpdb->posts}.id = ut.id";
- $where = &$clauses['where'];
- $where .= " AND ut.ut_userid = {$user_id}";
- if ( array_key_exists('where', $query_object->query['graphql_args'] ) &&
- array_key_exists('tutorialId', $query_object->query['graphql_args']['where'] ) ) {
- $tutorialId = $query_object->query['graphql_args']['where']['tutorialId'];
- $where .= " AND ut.ut_tutorial = {$tutorialId}";
- }
- break;
- case 'tutorial':
- $joined = false;
- if ( ! array_key_exists('where', $query_object->query['graphql_args'] ) ) {
- break;
- }
- if ( array_key_exists('watched', $query_object->query['graphql_args']['where'] ) ) {
- $joined = true;
- $watched = (bool) $query_object->query['graphql_args']['where']['watched'];
- $join = &$clauses['join'];
- if ( ! empty( $join ) ) $join .= ' ';
- if ( $watched ) {
- $join .= "JOIN ps_edgeusertut ut ON {$wpdb->posts}.id = ut.ut_tutorial";
- $join .= " AND ut.ut_userid = {$user_id}";
- $join .= " AND ut.ut_watched = 1";
- break;
- } else {
- $join .= "LEFT OUTER JOIN ps_edgeusertut ut ON {$wpdb->posts}.id = ut.ut_tutorial";
- $join .= " AND (ut.ut_userid IS NULL OR ut.ut_userid = {$user_id})";
- $where = &$clauses['where'];
- $where .= " AND ut.ut_watched IS NULL";
- }
- }
- if ( array_key_exists( 'favourited', $query_object->query['graphql_args']['where'] ) ) {
- $favourited = $query_object->query['graphql_args']['where']['favourited'];
- if ( $favourited ) {
- if ( ! $joined ) {
- $joined = true;
- $join = &$clauses['join'];
- if ( ! empty( $join ) ) $join .= ' ';
- $join .= "JOIN ps_edgeusertut ut ON {$wpdb->posts}.id = ut.ut_tutorial";
- }
- $where = &$clauses['where'];
- $where .= " AND ut.ut_userid = {$user_id}";
- $where .= " AND ut.ut_faved = 1";
- break;
- }
- }
- break;
- }
- return $clauses;
- }, 10, 2 );
Add Comment
Please, Sign In to add comment