PluginProbe
Powerkit – Supercharge your WordPress Site / 2.9.0
Powerkit – Supercharge your WordPress Site v2.9.0
3.1.1 3.1.0 3.0.9 3.0.8 trunk 2.2.6 2.2.7 2.2.8 2.2.9 2.3.0 2.3.1 2.3.2 2.3.3 2.3.4 2.3.5 2.3.6 2.3.7 2.3.8 2.3.9 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 All 87 releases
powerkit / extensions / user / helpers / helper-powerkit-user.php

helper-powerkit-user.php in Powerkit – Supercharge your WordPress Site 2.9.0, at extensions/user/helpers/helper-powerkit-user.php

164 lines 3.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Helpers to empower authors and users
4 *
5 * @package Powerkit
6 * @subpackage Modules/Helper
7 */
8
9 /**
10 * Check enabled CoAuthors.
11 */
12 function powerkit_coauthors_enabled() {
13 return class_exists( 'CoAuthors_Plus' );
14 }
15
16 /**
17 * Retrieve list of guests.
18 */
19 function powerkit_get_guests() {
20
21 $list = wp_cache_get( 'powerkit_get_guests' );
22
23 if ( ! $list ) {
24
25 $list = array();
26
27 $query = new WP_Query();
28
29 $guests = $query->query( array(
30 'post_type' => 'guest-author',
31 'post_status' => 'publish',
32 'posts_per_page' => -1,
33 ) );
34
35 foreach ( $guests as $guest ) {
36 array_push( $list, $guest );
37 }
38
39 wp_cache_set( 'powerkit_get_guests', $list, 'powerkit', 1 );
40 }
41
42 return $list;
43 }
44
45 /**
46 * Determines whether a user is a guest.
47 *
48 * @param int $id The id of guest.
49 */
50 function powerkit_is_guest( $id ) {
51 if ( ! powerkit_coauthors_enabled() ) {
52 return false;
53 }
54
55 if ( ! is_numeric( $id ) ) {
56 return false;
57 }
58
59 $guests = powerkit_get_guests();
60
61 foreach ( $guests as $guest ) {
62 if ( (int) $id === (int) $guest->ID ) {
63 return true;
64 }
65 }
66 }
67
68 /**
69 * Retrieve guest info by a given field.
70 *
71 * @param string $field The field of guest.
72 * @param int $id The id of guest.
73 */
74 function powerkit_get_guest_meta( $field, $id ) {
75 $field = str_replace( array( 'user_url', 'url' ), 'website', $field );
76
77 return get_post_meta( $id, 'cap-' . $field, true );
78 }
79
80 /**
81 * Retrieve list of users and guests.
82 */
83 function powerkit_get_users() {
84
85 $users = wp_cache_get( 'powerkit_get_users' );
86
87 if ( ! $users ) {
88 $args = array(
89 'orderby' => 'display_name',
90 'capability' => array( 'edit_posts' ),
91 );
92
93 // Capability queries were only introduced in WP 5.9.
94 if ( version_compare( $GLOBALS['wp_version'], '5.9', '<' ) ) {
95 $args['who'] = 'authors';
96 unset( $args['capability'] );
97 }
98
99 $users = get_users( apply_filters( 'powerkit_get_users_args', $args ) );
100
101 if ( powerkit_coauthors_enabled() ) {
102
103 $guests = powerkit_get_guests();
104
105 foreach ( $guests as $guest ) {
106 $guest->first_name = powerkit_get_guest_meta( 'first_name', $guest->ID );
107 $guest->last_name = powerkit_get_guest_meta( 'last_name', $guest->ID );
108 $guest->user_email = powerkit_get_guest_meta( 'user_email', $guest->ID );
109 $guest->website = powerkit_get_guest_meta( 'website', $guest->ID );
110
111 $user = (object) array(
112 'ID' => $guest->ID,
113 'display_name' => $guest->post_title,
114 'user_registered' => $guest->post_date,
115 'user_login' => $guest->first_name,
116 'user_nicename' => $guest->last_name,
117 'user_email' => $guest->user_email,
118 'user_url' => $guest->website,
119 'user_pass' => '',
120 'user_activation_key' => '',
121 'user_status' => 0,
122 );
123
124 array_push( $users, $user );
125 }
126 }
127
128 wp_cache_set( 'powerkit_get_users', $users, 'powerkit', 1 );
129 }
130
131 usort( $users, function( $a, $b ) {
132 if ( function_exists( 'mb_strtolower' ) ) {
133 return strcmp( mb_strtolower( $a->display_name ), mb_strtolower( $b->display_name ) );
134 } else {
135 return strcmp( strtolower( $a->display_name ), strtolower( $b->display_name ) );
136 }
137 } );
138
139 return $users;
140 }
141
142 /**
143 * Check the user's belonging to the post.
144 *
145 * @param int $author_id The ID of author.
146 * @param int $post_id The ID of post.
147 */
148 function powerkit_check_post_author( $author_id, $post_id ) {
149
150 if ( (string) get_post_field( 'post_author', $post_id ) === (string) $author_id ) {
151 return true;
152 }
153
154 if ( powerkit_coauthors_enabled() ) {
155 $coauthors = (array) get_coauthors();
156
157 foreach ( $coauthors as $coauthor ) {
158 if ( isset( $coauthor->ID ) && (string) $coauthor->ID === (string) $author_id ) {
159 return true;
160 }
161 }
162 }
163 }
164