PluginProbe
bbPress / 2.2.2
bbPress v2.2.2
trunk 2.0 2.0-beta-1 2.0-beta-2b 2.0-beta-3 2.0-beta-3b 2.0-rc-2 2.0-rc-3 2.0-rc-4 2.0-rc-5 2.0.1 2.0.2 2.0.3 2.1 2.1-beta-1 2.1-rc1 2.1-rc2 2.1-rc3 2.1-rc4 2.1.1 2.1.2 2.1.3 2.2 2.2.1 2.2.2 All 71 releases
bbpress / includes / topics / capabilities.php

capabilities.php in bbPress 2.2.2, at includes/topics/capabilities.php

233 lines 5.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * bbPress Topic Capabilites
5 *
6 * Used to map topic capabilities to WordPress's existing capabilities.
7 *
8 * @package bbPress
9 * @subpackage Capabilities
10 */
11
12 /**
13 * Return topic capabilities
14 *
15 * @since bbPress (r2593)
16 *
17 * @uses apply_filters() Calls 'bbp_get_topic_caps' with the capabilities
18 * @return array Topic capabilities
19 */
20 function bbp_get_topic_caps() {
21 return apply_filters( 'bbp_get_topic_caps', array (
22 'edit_posts' => 'edit_topics',
23 'edit_others_posts' => 'edit_others_topics',
24 'publish_posts' => 'publish_topics',
25 'read_private_posts' => 'read_private_topics',
26 'read_hidden_posts' => 'read_hidden_topics',
27 'delete_posts' => 'delete_topics',
28 'delete_others_posts' => 'delete_others_topics'
29 ) );
30 }
31
32 /**
33 * Return topic tag capabilities
34 *
35 * @since bbPress (r2593)
36 *
37 * @uses apply_filters() Calls 'bbp_get_topic_tag_caps' with the capabilities
38 * @return array Topic tag capabilities
39 */
40 function bbp_get_topic_tag_caps() {
41 return apply_filters( 'bbp_get_topic_tag_caps', array (
42 'manage_terms' => 'manage_topic_tags',
43 'edit_terms' => 'edit_topic_tags',
44 'delete_terms' => 'delete_topic_tags',
45 'assign_terms' => 'assign_topic_tags'
46 ) );
47 }
48
49 /**
50 * Maps topic capabilities
51 *
52 * @since bbPress (r4242)
53 *
54 * @param array $caps Capabilities for meta capability
55 * @param string $cap Capability name
56 * @param int $user_id User id
57 * @param mixed $args Arguments
58 * @uses get_post() To get the post
59 * @uses get_post_type_object() To get the post type object
60 * @uses apply_filters() Filter capability map results
61 * @return array Actual capabilities for meta capability
62 */
63 function bbp_map_topic_meta_caps( $caps = array(), $cap = '', $user_id = 0, $args = array() ) {
64
65 // What capability is being checked?
66 switch ( $cap ) {
67
68 /** Reading ***********************************************************/
69
70 case 'read_topic' :
71
72 // User cannot spectate
73 if ( ! user_can( $user_id, 'spectate' ) ) {
74 $caps = array( 'do_not_allow' );
75
76 // Do some post ID based logic
77 } else {
78
79 // Get the post
80 $_post = get_post( $args[0] );
81 if ( !empty( $_post ) ) {
82
83 // Get caps for post type object
84 $post_type = get_post_type_object( $_post->post_type );
85
86 // Post is public
87 if ( bbp_get_public_status_id() == $_post->post_status ) {
88 $caps = array( 'spectate' );
89
90 // User is author so allow read
91 } elseif ( (int) $user_id == (int) $_post->post_author ) {
92 $caps = array( 'spectate' );
93
94 // Unknown so map to private posts
95 } else {
96 $caps = array( $post_type->cap->read_private_posts );
97 }
98 }
99 }
100
101 break;
102
103 /** Publishing ********************************************************/
104
105 case 'publish_topics' :
106
107 // Moderators can always publish
108 if ( user_can( $user_id, 'moderate' ) ) {
109 $caps = array( 'moderate' );
110 }
111
112 break;
113
114 /** Editing ***********************************************************/
115
116 // Used primarily in wp-admin
117 case 'edit_topics' :
118 case 'edit_others_topics' :
119
120 // Moderators can always edit
121 if ( user_can( $user_id, 'moderate' ) ) {
122 $caps = array( $cap );
123 }
124
125 break;
126
127 // Used everywhere
128 case 'edit_topic' :
129
130 // Get the post
131 $_post = get_post( $args[0] );
132 if ( !empty( $_post ) ) {
133
134 // Get caps for post type object
135 $post_type = get_post_type_object( $_post->post_type );
136 $caps = array();
137
138 // Add 'do_not_allow' cap if user is spam or deleted
139 if ( bbp_is_user_inactive( $user_id ) ) {
140 $caps[] = 'do_not_allow';
141
142 // User is author so allow edit
143 } elseif ( (int) $user_id == (int) $_post->post_author ) {
144 $caps[] = $post_type->cap->edit_posts;
145
146 // Unknown, so map to edit_others_posts
147 } else {
148 $caps[] = $post_type->cap->edit_others_posts;
149 }
150 }
151
152 break;
153
154 /** Deleting **********************************************************/
155
156 case 'delete_topic' :
157
158 // Get the post
159 $_post = get_post( $args[0] );
160 if ( !empty( $_post ) ) {
161
162 // Get caps for post type object
163 $post_type = get_post_type_object( $_post->post_type );
164 $caps = array();
165
166 // Add 'do_not_allow' cap if user is spam or deleted
167 if ( bbp_is_user_inactive( $user_id ) ) {
168 $caps[] = 'do_not_allow';
169
170 // Moderators can always edit forum content
171 } elseif ( user_can( $user_id, 'moderate' ) ) {
172 $caps[] = 'moderate';
173
174 // Unknown so map to delete_others_posts
175 } else {
176 $caps[] = $post_type->cap->delete_others_posts;
177 }
178 }
179
180 break;
181
182 // Moderation override
183 case 'delete_topics' :
184 case 'delete_others_topics' :
185
186 // Moderators can always delete
187 if ( user_can( $user_id, 'moderate' ) ) {
188 $caps = array( $cap );
189 }
190
191 break;
192
193 /** Admin *************************************************************/
194
195 case 'bbp_topics_admin' :
196 $caps = array( 'moderate' );
197 break;
198 }
199
200 return apply_filters( 'bbp_map_topic_meta_caps', $caps, $cap, $user_id, $args );
201 }
202
203 /**
204 * Maps topic tag capabilities
205 *
206 * @since bbPress (r4242)
207 *
208 * @param array $caps Capabilities for meta capability
209 * @param string $cap Capability name
210 * @param int $user_id User id
211 * @param mixed $args Arguments
212 * @uses apply_filters() Filter capability map results
213 * @return array Actual capabilities for meta capability
214 */
215 function bbp_map_topic_tag_meta_caps( $caps, $cap, $user_id, $args ) {
216
217 // What capability is being checked?
218 switch ( $cap ) {
219 case 'manage_topic_tags' :
220 case 'edit_topic_tags' :
221 case 'delete_topic_tags' :
222 case 'assign_topic_tags' :
223 case 'bbp_topic_tags_admin' :
224
225 // Moderators can always edit
226 if ( user_can( $user_id, 'moderate' ) ) {
227 $caps = array( 'moderate' );
228 }
229 }
230
231 return apply_filters( 'bbp_map_topic_tag_meta_caps', $caps, $cap, $user_id, $args );
232 }
233