Guest User

Untitled

a guest
Jan 21st, 2019
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.50 KB | None | 0 0
  1. <?php
  2.  
  3. add_filter( 'posts_clauses', function( $clauses, $query_object ) {
  4. global $wpdb;
  5. $user_id = get_current_user_id();
  6. if ( ! array_key_exists('graphql_args', $query_object->query ) ) {
  7. return $clauses;
  8. }
  9. switch ( $query_object->query['post_type'] ) {
  10. case 'edgeuserquiz':
  11. $join = &$clauses['join'];
  12. if ( ! empty( $join ) ) $join .= ' ';
  13. $join .= "JOIN ps_edgeuserquiz uq ON {$wpdb->posts}.id = uq.id";
  14. $where = &$clauses['where'];
  15. $where .= " AND uq.uq_userid = {$user_id}";
  16. if ( array_key_exists('where', $query_object->query['graphql_args'] ) &&
  17. array_key_exists('quizId', $query_object->query['graphql_args']['where'] ) ) {
  18. $quizId = $query_object->query['graphql_args']['where']['quizId'];
  19. $where .= " AND uq.uq_quiz = {$quizId}";
  20. }
  21. break;
  22. case 'edgeusertutorial':
  23. $join = &$clauses['join'];
  24. if ( ! empty( $join ) ) $join .= ' ';
  25. $join .= "JOIN ps_edgeusertut ut ON {$wpdb->posts}.id = ut.id";
  26. $where = &$clauses['where'];
  27. $where .= " AND ut.ut_userid = {$user_id}";
  28. if ( array_key_exists('where', $query_object->query['graphql_args'] ) &&
  29. array_key_exists('tutorialId', $query_object->query['graphql_args']['where'] ) ) {
  30. $tutorialId = $query_object->query['graphql_args']['where']['tutorialId'];
  31. $where .= " AND ut.ut_tutorial = {$tutorialId}";
  32. }
  33. break;
  34. case 'tutorial':
  35. $joined = false;
  36. if ( ! array_key_exists('where', $query_object->query['graphql_args'] ) ) {
  37. break;
  38. }
  39. if ( array_key_exists('watched', $query_object->query['graphql_args']['where'] ) ) {
  40. $joined = true;
  41. $watched = (bool) $query_object->query['graphql_args']['where']['watched'];
  42.  
  43. $join = &$clauses['join'];
  44. if ( ! empty( $join ) ) $join .= ' ';
  45.  
  46. if ( $watched ) {
  47. $join .= "JOIN ps_edgeusertut ut ON {$wpdb->posts}.id = ut.ut_tutorial";
  48. $join .= " AND ut.ut_userid = {$user_id}";
  49. $join .= " AND ut.ut_watched = 1";
  50. break;
  51. } else {
  52. $join .= "LEFT OUTER JOIN ps_edgeusertut ut ON {$wpdb->posts}.id = ut.ut_tutorial";
  53. $join .= " AND (ut.ut_userid IS NULL OR ut.ut_userid = {$user_id})";
  54. $where = &$clauses['where'];
  55. $where .= " AND ut.ut_watched IS NULL";
  56. }
  57. }
  58. if ( array_key_exists( 'favourited', $query_object->query['graphql_args']['where'] ) ) {
  59. $favourited = $query_object->query['graphql_args']['where']['favourited'];
  60. if ( $favourited ) {
  61. if ( ! $joined ) {
  62. $joined = true;
  63. $join = &$clauses['join'];
  64. if ( ! empty( $join ) ) $join .= ' ';
  65. $join .= "JOIN ps_edgeusertut ut ON {$wpdb->posts}.id = ut.ut_tutorial";
  66. }
  67. $where = &$clauses['where'];
  68. $where .= " AND ut.ut_userid = {$user_id}";
  69. $where .= " AND ut.ut_faved = 1";
  70. break;
  71. }
  72. }
  73. break;
  74. }
  75. return $clauses;
  76. }, 10, 2 );
Add Comment
Please, Sign In to add comment