-
-
Save birgire/a24f25d9df15af5a5b79736c4fe17a72 to your computer and use it in GitHub Desktop.
WordPress plugin: BBPMods Anonymous
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Plugin Name: BBPMods Anonymous | |
* Description: bbPress anonymous modifications. | |
* Version: 0.0.2 | |
* Requires PHP: 5.4 | |
*/ | |
/** | |
* Changelog. | |
* | |
* 0.0.2 Fixed formatting. | |
* Added changelog. | |
* 0.0.1 Init. | |
*/ | |
namespace BBPMods\Anonymous; | |
/** | |
* Init. | |
*/ | |
add_action( 'init', function(){ | |
add_filter( 'bbp_current_user_can_access_anonymous_user_form', '__return_false' ); | |
$anonymous_users = array( | |
array ( 'John', 'john@example.com' ), | |
array ( 'Mike', 'mike@example.com' ), | |
array ( 'Will', 'will@example.com' ), | |
array ( 'Pete', 'pete@example.com' ), | |
array ( 'Lucy', 'lucy@example.com' ), | |
array ( 'Barbara', 'barbara@example.com' ), | |
); | |
/** | |
* Filter anonymous users. | |
* | |
* @param array $anonymous_users Array of arrays with name and email. | |
*/ | |
$anonymous_users = apply_filters( 'bbpmods_anonymous_users', $anonymous_users ); | |
$obj = new Empty_Anonymous_Replies(); | |
$obj ->set_anonymous_users( $anonymous_users ) | |
->init(); | |
} ); | |
/** | |
* Class Empty_Anonymous_Replies. | |
* | |
* @since 0.0.1 | |
*/ | |
class Empty_Anonymous_Replies { | |
/** | |
* @var int | |
* | |
* @since 0.0.1 | |
*/ | |
protected $user_index = 0; | |
/** | |
* @var int | |
* | |
* @since 0.0.1 | |
*/ | |
protected $name_index = 0; | |
/** | |
* @var int | |
* | |
* @since 0.0.1 | |
*/ | |
protected $email_index = 1; | |
/** | |
* @var array | |
* | |
* @since 0.0.1 | |
*/ | |
protected $anonymous_users = array(); | |
/** | |
* Set anonymous users. | |
* | |
* @since 0.0.1 | |
* | |
* @param array $anonymous_users Array of arrays with name and email. | |
*/ | |
public function set_anonymous_users( $anonymous_users ) { | |
$this->anonymous_users = $anonymous_users; | |
return $this; | |
} | |
/** | |
* Init. | |
* | |
* @since 0.0.1 | |
*/ | |
public function init() { | |
// Filters in order of activation. | |
add_filter( 'bbp_before_filter_anonymous_post_data_parse_args', | |
array( $this, 'bbp_before_filter_anonymous_post_data_parse_args' ), | |
10 ); | |
add_filter( 'bbp_pre_anonymous_post_author_name', | |
array( $this, 'bbp_pre_anonymous_post_author_name' ) ); | |
add_filter( 'bbp_pre_anonymous_post_author_email', | |
array( $this, 'bbp_pre_anonymous_post_author_email' ) ); | |
add_filter( 'bbp_filter_anonymous_post_data', | |
array( $this, 'bbp_filter_anonymous_post_data' ), | |
11, 2 ); | |
} | |
/** | |
* Filter's callback | |
* | |
* @since 0.0.1 | |
* | |
* @param array $r Anonymous post data. | |
*/ | |
public function bbp_before_filter_anonymous_post_data_parse_args( $r ) { | |
if ( ! empty( $this->anonymous_users ) ) { | |
$this->user_index = array_rand( $this->anonymous_users ); | |
} | |
return $r; | |
} | |
/** | |
* Filter's callback | |
* | |
* @since 0.0.1 | |
* | |
* @param string $name Anonymous user's name. | |
*/ | |
public function bbp_pre_anonymous_post_author_name( $name ) { | |
remove_filter( current_filter(), array( $this, __FUNCTION__ ) ); | |
if( empty( $name ) && ! empty( $this->anonymous_users ) ) { | |
$name = $this->anonymous_users[$this->user_index][$this->name_index]; | |
} | |
return $name; | |
} | |
/** | |
* Filter's callback | |
* | |
* @since 0.0.1 | |
* | |
* @param string $email Anonymous user's email. | |
*/ | |
public function bbp_pre_anonymous_post_author_email( $email ) { | |
remove_filter( current_filter(), array( $this, __FUNCTION__ ) ); | |
if( empty( $email ) && ! empty( $this->anonymous_users ) ) { | |
$email = $this->anonymous_users[$this->user_index][$this->email_index]; | |
} | |
return $email; | |
} | |
/** | |
* Filter's callback | |
* | |
* @since 0.0.1 | |
* | |
* @param array $retval Anonymous post data. | |
* @param array $r Arguments. | |
*/ | |
public function bbp_filter_anonymous_post_data( $retval, $r ) { | |
if ( empty( $this->anonymous_users ) ) { | |
return $retval; | |
} | |
if( $this->anonymous_users[$this->user_index][$this->name_index] === $r['bbp_anonymous_name'] | |
&& $this->anonymous_users[$this->user_index][$this->email_index] === $r['bbp_anonymous_email'] | |
) { | |
// Reset the input to skip writing cookies. | |
$retval = array(); | |
// Activate the IP flood check. | |
$retval['bbp_anonymous_flood_check'] = '1'; | |
} | |
return $retval; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment