Skip to content

Commit 67f53cf

Browse files
authored
Update anonymous-bbpress.php
1 parent 2256771 commit 67f53cf

File tree

1 file changed

+32
-82
lines changed

1 file changed

+32
-82
lines changed

anonymous-bbpress.php

Lines changed: 32 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -239,99 +239,49 @@ function anonymous_bbpress_init() {
239239
anonymous_bbpress_initialize_posting( $anonymous_users );
240240
}
241241

242-
/**
243-
* Set up anonymous posting.
244-
*
245-
* @param array $anonymous_users Anonymous users array.
246-
*/
247-
function anonymous_bbpress_initialize_posting($anonymous_users) {
248-
global $anonymous_bbpress_users;
249-
$anonymous_bbpress_users = $anonymous_users;
242+
// initialize anonymous posting
243+
function anonymous_bbpress_initialize_posting( $anonymous_users ) {
244+
global $anonymous_bbpress_users;
245+
$anonymous_bbpress_users = $anonymous_users;
250246

251-
add_filter('bbp_before_filter_anonymous_post_data_parse_args', 'anonymous_bbpress_select_random_user', 10);
252-
add_filter('bbp_pre_anonymous_post_author_name', 'anonymous_bbpress_set_random_name');
253-
add_filter('bbp_pre_anonymous_post_author_email', 'anonymous_bbpress_set_random_email');
254-
add_filter('bbp_filter_anonymous_post_data', 'anonymous_bbpress_filter_anonymous_post_data', 11, 2);
255-
}
256-
257-
/**
258-
* Select a random user for the post.
259-
*
260-
* @param array $r Post data.
261-
* @return array Modified data.
262-
*/
263-
function anonymous_bbpress_select_random_user($r) {
264-
global $anonymous_bbpress_users, $anonymous_bbpress_user_index;
265-
266-
if (!empty($anonymous_bbpress_users)) {
267-
$anonymous_bbpress_user_index = array_rand($anonymous_bbpress_users);
268-
}
269-
270-
return $r;
271-
}
247+
// inject name/email early
248+
add_filter( 'bbp_before_filter_anonymous_post_data_parse_args', 'anonymous_bbpress_set_random_identity', 5 );
272249

273-
/**
274-
* Set a random anonymous name if none provided.
275-
*
276-
* @param string $name Anonymous user name.
277-
* @return string Name.
278-
*/
279-
function anonymous_bbpress_set_random_name($name) {
280-
global $anonymous_bbpress_users, $anonymous_bbpress_user_index;
281-
282-
remove_filter(current_filter(), 'anonymous_bbpress_set_random_name');
283-
284-
if (empty($name) && !empty($anonymous_bbpress_users)) {
285-
$name = sanitize_text_field($anonymous_bbpress_users[$anonymous_bbpress_user_index][0]);
286-
}
287-
288-
return $name;
250+
// run flood protection
251+
add_filter( 'bbp_filter_anonymous_post_data', 'anonymous_bbpress_filter_anonymous_post_data', 11, 2 );
289252
}
290253

291-
/**
292-
* Set a random anonymous email if none provided.
293-
*
294-
* @param string $email Anonymous user email.
295-
* @return string Email.
296-
*/
297-
function anonymous_bbpress_set_random_email($email) {
298-
global $anonymous_bbpress_users, $anonymous_bbpress_user_index;
254+
// inject random name/email into post data
255+
function anonymous_bbpress_set_random_identity( $r ) {
256+
global $anonymous_bbpress_users, $anonymous_bbpress_user_index;
299257

300-
remove_filter(current_filter(), 'anonymous_bbpress_set_random_email');
258+
if ( ! empty( $anonymous_bbpress_users ) ) {
259+
$anonymous_bbpress_user_index = array_rand( $anonymous_bbpress_users );
260+
$r['bbp_anonymous_name'] = sanitize_text_field( $anonymous_bbpress_users[ $anonymous_bbpress_user_index ][0] );
261+
$r['bbp_anonymous_email'] = sanitize_email( $anonymous_bbpress_users[ $anonymous_bbpress_user_index ][1] );
262+
}
301263

302-
if (empty($email) && !empty($anonymous_bbpress_users)) {
303-
$email = sanitize_email($anonymous_bbpress_users[$anonymous_bbpress_user_index][1]);
304-
}
305-
306-
return $email;
264+
return $r;
307265
}
308266

309-
/**
310-
* Filter anonymous post data to prevent spam and flooding.
311-
*
312-
* @param array $retval Filtered data.
313-
* @param array $r Post data.
314-
* @return array Modified data.
315-
*/
316-
function anonymous_bbpress_filter_anonymous_post_data($retval, $r) {
317-
global $anonymous_bbpress_users, $anonymous_bbpress_user_index;
318-
319-
if (empty($anonymous_bbpress_users)) {
320-
return $retval;
321-
}
267+
// prevent duplicate post by same identity
268+
function anonymous_bbpress_filter_anonymous_post_data( $retval, $r ) {
269+
global $anonymous_bbpress_users, $anonymous_bbpress_user_index;
322270

323-
if (
324-
$anonymous_bbpress_users[$anonymous_bbpress_user_index][0] === $r['bbp_anonymous_name'] &&
325-
$anonymous_bbpress_users[$anonymous_bbpress_user_index][1] === $r['bbp_anonymous_email']
326-
) {
327-
// Reset input to skip cookie writing
328-
$retval = array();
271+
if ( empty( $anonymous_bbpress_users ) ) {
272+
return $retval;
273+
}
329274

330-
// Activate flood check
331-
$retval['bbp_anonymous_flood_check'] = '1';
332-
}
275+
if (
276+
isset( $r['bbp_anonymous_name'], $r['bbp_anonymous_email'] ) &&
277+
$anonymous_bbpress_users[ $anonymous_bbpress_user_index ][0] === $r['bbp_anonymous_name'] &&
278+
$anonymous_bbpress_users[ $anonymous_bbpress_user_index ][1] === $r['bbp_anonymous_email']
279+
) {
280+
$retval = array(); // reset post data
281+
$retval['bbp_anonymous_flood_check'] = '1'; // trigger flood check
282+
}
333283

334-
return $retval;
284+
return $retval;
335285
}
336286

337287
// Ref: ChatGPT

0 commit comments

Comments
 (0)