e6c83a0d by Marty Penner

Changed UserSearch class to have the option to include searching on the users ta…

…ble in user_login and user_nicename. refs #1
1 parent 7abd9cd6
......@@ -36,13 +36,13 @@ class UserSearch implements ArrayAccess, Iterator, Countable {
protected $userclass = 'User';
public function __construct(Array $fields, $num_results = -1, $page = 1, $sortby = null, $sortorder = 'ASC', Array $field_match = null, $text_search = null, Array $in_groups = null) {
public function __construct(Array $fields, $num_results = -1, $page = 1, $sortby = null, $sortorder = 'ASC', Array $field_match = null, $text_search = null, Array $in_groups = null, $search_users_table = null) {
$this->userclass = __NAMESPACE__ . '\User';
global $wpdb;
$this->fields = $fields;
$search_clause = $limit_clause = $order_clause = $order_sort = $having_clause = $uam_join = $uam_clause = '';
$search_clause = $limit_clause = $order_clause = $order_sort = $having_clause = $uam_join = $uam_clause = '';
// Field matches
$having = " HAVING `json` LIKE ";
......@@ -74,7 +74,7 @@ class UserSearch implements ArrayAccess, Iterator, Countable {
}
// Pagination
if ($num_results > 0) {
if ($num_results > 0) {
$limit_clause = " LIMIT " . (($page - 1) * $num_results ) . ", {$num_results}";
}
......@@ -84,10 +84,17 @@ class UserSearch implements ArrayAccess, Iterator, Countable {
$uam_clause = " AND `uam`.`object_type` = 'user' AND `uam`.`group_id` IN (" . implode(',', $in_groups) . ") ";
}
// Users table
if (!is_null($search_users_table)) {
if (!empty($having_clause)) {
$having_clause .= "\n OR `user_id` IN (SELECT `ID` FROM `wp_users` WHERE (`user_login` LIKE '%{$search}%' OR `user_nicename` LIKE '%{$search}%'))";
}
}
mysql_query("SET SESSION group_concat_max_len = 40960", $wpdb->dbh);
$query = "
SELECT SQL_CALC_FOUND_ROWS
SELECT SQL_CALC_FOUND_ROWS
`user_id`
, CONCAT(
'{'
......@@ -103,7 +110,7 @@ class UserSearch implements ArrayAccess, Iterator, Countable {
{$order_clause}
FROM `wp_usermeta`
{$uam_join}
WHERE
WHERE
`meta_key` IN ('" . implode("','", $this->fields) . "')
{$uam_clause}
GROUP BY `user_id`
......@@ -111,6 +118,7 @@ class UserSearch implements ArrayAccess, Iterator, Countable {
{$order_sort}
{$limit_clause}
";
//die(var_dump($query));
/*
?>
<textarea style="width: 95%; height: 35em; font-size: 11px;" autofocus="autofocus">
......