-
Notifications
You must be signed in to change notification settings - Fork 0
/
bp_activity_restrictions.php
55 lines (51 loc) · 1.46 KB
/
bp_activity_restrictions.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?php
// Limit activity posts by day and user role
function limit_activity_posts($user_id)
{
// get the current user role
$user_role = get_userdata($user_id)->roles[0];
// set the maximum number of posts based on user role
switch ($user_role) {
case "subscriber":
$max_posts = 3;
break;
case "contributor":
$max_posts = 5;
break;
case "editor":
$max_posts = 10;
break;
case "administrator":
$max_posts = -1;
break;
default:
$max_posts = 0;
}
// check the number of posts for the current user
$today = strtotime("today midnight");
$args = [
"user_id" => $user_id,
"date_query" => [
[
"after" => $today,
"inclusive" => true,
],
],
];
$count = bp_activity_get($args, "total");
// if the maximum number of posts is reached, prevent new post submission
if ($max_posts >= 0 && $count >= $max_posts) {
bp_core_add_message(
sprintf(
__(
"You have reached the maximum number of posts allowed for today (%d).",
"buddypress"
),
$max_posts
),
"error"
);
bp_core_redirect(bp_get_activity_directory_permalink());
}
}
add_action("bp_activity_before_save", "limit_activity_posts");