PluginProbe ʕ •ᴥ•ʔ
Kirki – Freeform Page Builder, Website Builder & Customizer / 6.1.0
Kirki – Freeform Page Builder, Website Builder & Customizer v6.1.0
6.1.1 6.1.0 6.0.14 6.0.13 6.0.12 6.0.11 6.0.10 6.0.9 6.0.8 6.0.7 6.0.6 6.0.5 6.0.4 6.0.3 6.0.2 6.0.1 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 4.0.19 4.0.20 4.0.21 4.0.22 4.0.23 4.0.24 4.1 4.2.0 5.0.0 5.1.0 5.1.1 5.2.0 5.2.1 5.2.2 5.2.3 6.0.0 trunk 3.0.40 3.0.41 3.0.42 3.0.43 3.0.44 3.0.45 3.1.0 3.1.1 3.1.2
kirki / app / Traits / SearchableUser.php
kirki / app / Traits Last commit date
HasWordPressPostBehavior.php 3 weeks ago SearchablePost.php 3 weeks ago SearchableUser.php 3 weeks ago
SearchableUser.php
72 lines
1 <?php
2
3 namespace Kirki\App\Traits;
4
5 defined('ABSPATH') || exit;
6
7 use Kirki\App\Constants\UserMetaKeys;
8 use Kirki\Framework\Database\Query\QueryBuilder;
9 use Kirki\Framework\Supports\Arr;
10
11 trait SearchableUser {
12 /**
13 * Search users
14 *
15 * @param QueryBuilder $query
16 * @param string $keyword
17 *
18 * @return QueryBuilder
19 */
20 public function scope_search(QueryBuilder $query, $keyword) {
21 if ($keyword === '') {
22 return $query;
23 }
24
25 if (str_contains($keyword, '@')) {
26 return $query->where_like('user_email', $keyword . '%');
27 }
28
29 if (is_numeric($keyword)) {
30 return $query->where(function (QueryBuilder $query) use ($keyword) {
31 $query->where_like('user_login', $keyword . '%')
32 ->or_where_like('ID', $keyword . '%');
33 });
34 }
35
36 if (preg_match('|^https?://|', $keyword) && !(is_multisite() && wp_is_large_network('users'))) {
37 return $query->where_like('user_url', $keyword . '%');
38 }
39
40 return $query->where(function (QueryBuilder $query) use ($keyword) {
41 $query->where_like('user_login', $keyword . '%')
42 ->or_where_like('user_url', $keyword . '%')
43 ->or_where_like('user_email', $keyword . '%')
44 ->or_where_like('user_nicename', $keyword . '%')
45 ->or_where_like('display_name', $keyword . '%');
46 });
47 }
48
49 /**
50 * Search users by role
51 *
52 * @param QueryBuilder $query
53 * @param string|array $role
54 *
55 * @return QueryBuilder
56 */
57 public function scope_role(QueryBuilder $query, $role) {
58 if (empty($role)) {
59 return $query;
60 }
61
62 $roles = Arr::wrap($role);
63
64 return $query->where_has('meta', function (QueryBuilder $query) use ($roles) {
65 $query->where('meta_key', '=', UserMetaKeys::CAPABILITIES);
66
67 foreach ($roles as $role) {
68 $query->where_like('meta_value', '%' . $role . '%');
69 }
70 });
71 }
72 }