PluginProbe
Assistant – Every Day Productivity Apps / trunk
Assistant – Every Day Productivity Apps vtrunk
1.5.5 trunk 0.1.0 0.2.0 0.2.1 0.2.2 0.3.0 0.3.1 0.4 0.4.1 0.4.2 0.5.0 0.5.1 0.6.0 0.7.0 0.7.0.2 0.7.0.3 0.7.0.4 0.7.0.5 0.7.0.6 0.7.0.7 0.7.0.8 0.7.0.9 0.7.1 1.0 All 71 releases
assistant / backend / src / Data / Repository / UsersRepository.php

UsersRepository.php in Assistant – Every Day Productivity Apps trunk, at backend/src/Data/Repository/UsersRepository.php

140 lines 2.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3
4 namespace FL\Assistant\Data\Repository;
5
6
7 use FL\Assistant\Data\Pager;
8 use FL\Assistant\System\Contracts\RepositoryAbstract;
9
10
11 class UsersRepository extends RepositoryAbstract {
12
13
14 public function query( array $args = [], ?callable $transform = null ) {
15 $defaults = [
16 'number' => 20,
17 'offset' => 0,
18 ];
19 $args = array_merge( $defaults, $args );
20 return new \WP_User_Query( $args );
21 }
22
23 /**
24 * @param $id
25 * @param callable|null $transform
26 *
27 * @return bool|mixed|\WP_User
28 */
29 public function find( $id, ?callable $transform = null ) {
30
31 $user = get_user_by( 'id', $id );
32 if ( ! is_null( $transform ) ) {
33 $user = call_user_func( $transform, $user );
34 }
35
36 return $user;
37 }
38
39 /**
40 * @param array $args
41 * @param callable|null $transform
42 *
43 * @return array
44 */
45 public function find_where( array $args = [], ?callable $transform = null ) {
46 $users = $this->query( $args )->get_results();
47 if ( ! is_null( $transform ) ) {
48 $users = array_map( $transform, $users );
49 }
50 return $users;
51 }
52
53 /**
54 * @param array $args
55 * @param callable|null $transform
56 *
57 * @return Pager
58 */
59 public function paginate( array $args = [], ?callable $transform = null ) {
60 $query = $this->query( $args );
61
62 $pager = new Pager(
63 $query->get_results(),
64 $query->get_total(),
65 $query->get( 'number' ),
66 $query->get( 'offset' )
67 );
68
69 if ( ! is_null( $transform ) ) {
70 $pager->apply_transform( $transform );
71 }
72
73 return $pager;
74 }
75
76 /**
77 * @return \WP_User
78 */
79 public function current( ?callable $transform = null ) {
80 $current_user = wp_get_current_user();
81 $data = $this->find( $current_user->ID, $transform );
82
83 if ( $transform ) {
84 $data = array_merge(
85 $data,
86 [
87 'capabilities' => $current_user->allcaps,
88 ]
89 );
90 }
91
92 return $data;
93 }
94
95
96 /**
97 * Get all user roles for the site.
98 */
99 public function get_roles() {
100
101 if ( ! function_exists( 'get_editable_roles' ) ) {
102 require_once( ABSPATH . 'wp-admin/includes/user.php' );
103 }
104
105 $data = [];
106 $roles = get_editable_roles();
107
108 foreach ( $roles as $key => $role ) {
109 $data[] = [
110 'key' => $key,
111 'name' => $role['name'],
112 ];
113 }
114
115 return $data;
116 }
117
118 /**
119 * Returns an array of counts by user role.
120 *
121 * @return array
122 */
123 public function counts_by_user_role() {
124
125 $counts = count_users();
126
127 $counts_by_user_role = [
128 'total' => $counts['total_users'],
129 ];
130
131 foreach ( $counts['avail_roles'] as $role => $count ) {
132 $counts_by_user_role[ $role ] = $count;
133 }
134
135 return $counts_by_user_role;
136 }
137
138
139 }
140