query-user.php
994 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php
class P2P_Query_User {
static function init() {
add_action( 'pre_user_query', array( __CLASS__, 'pre_user_query' ), 20 );
}
static function pre_user_query( $query ) {
global $wpdb;
$r = P2P_Query::create_from_qv( $query->query_vars, 'user' );
if ( is_wp_error( $r ) ) {
$query->_p2p_error = $r;
$query->query_where = ' AND 1=0';
return;
}
if ( null === $r ) {
return;
}
list( $p2p_q, $query->query_vars ) = $r;
$map = array(
'fields' => 'query_fields',
'join' => 'query_from',
'where' => 'query_where',
'orderby' => 'query_orderby',
);
$clauses = array();
foreach ( $map as $clause => $key ) {
$clauses[ $clause ] = $query->$key;
}
$clauses = $p2p_q->alter_clauses( $clauses, "$wpdb->users.ID" );
if ( 0 !== strpos( $clauses['orderby'], 'ORDER BY ' ) ) {
$clauses['orderby'] = 'ORDER BY ' . $clauses['orderby'];
}
foreach ( $map as $clause => $key ) {
$query->$key = $clauses[ $clause ];
}
}
}