Re: Achievements Plugin Not Working
Okay, I’ve been able to correct most of the problems like the avatar achievement, blog creation achievement, account activation achievement, etc by correcting the code in the dp-achievements-defaultachievements.php file.
However, there are two sets of achievements that are still not working.
Starting A Forum Topic (one, thirty, and 100) – this hooks into action – bp_forums_new_topic
function dpa_register_forumranked() { add_action( ‘bp_forums_new_topic’, ‘dpa_handle_forumranked’, 10, 0 ); }
Replying To A Forum Topic (one, thirty, and 100) – this hooks into action – bp_forums_new_post
function dpa_register_replyranked() { add_action( ‘bp_forums_new_post’, ‘dpa_handle_replyranked’, 10, 0 ); }
I’ve been checking all of the code both in this file and in the bp-forums.php file and cannot see why it’s not working. The actions are correct, I can’t find any typos, why is it not unlocking the achievements?
function dpa_handle_forumranked() {
global $bp;
if ( !function_exists( ‘bp_forums_is_installed_correctly’ ) || !bp_forums_is_installed_correctly() || defined( ‘DPA_CHECKING’ ) )
return;
$user_id = $bp->loggedin_user->id;
$one = new dpa_achievement( array( ‘user_id’ => $user_id, ‘name’ => ‘forumranked_1’, ‘counter’ => true ) );
$thirty = new dpa_achievement( array( ‘user_id’ => $user_id, ‘name’ => ‘forumranked_30’ ) );
$hundred = new dpa_achievement( array( ‘user_id’ => $user_id, ‘name’ => ‘forumranked_100’ ) );
if ( $hundred->is_unlocked() )
return;
$one->increment_counter();
if ( $one->counter >= 1 && !$one->is_unlocked() ) { $one->unlock_achievement(); }
if ( $one->counter >= 30 && !$thirty->is_unlocked() ) { $thirty->unlock_achievement(); }
if ( $one->counter >= 100 && !$hundred->is_unlocked() ) { $hundred->unlock_achievement(); }
}
function dpa_handle_replyranked() {
global $bp;
if ( !function_exists( ‘bp_forums_is_installed_correctly’ ) || !bp_forums_is_installed_correctly() || defined( ‘DPA_CHECKING’ ) )
return;
$user_id = $bp->loggedin_user->id;
$one = new dpa_achievement( array( ‘user_id’ => $user_id, ‘name’ => ‘replyranked_1’, ‘counter’ => true ) );
$thirty = new dpa_achievement( array( ‘user_id’ => $user_id, ‘name’ => ‘replyranked_30’ ) );
$hundred = new dpa_achievement( array( ‘user_id’ => $user_id, ‘name’ => ‘replyranked_100’ ) );
if ( $hundred->is_unlocked() )
return;
$one->increment_counter();
if ( $one->counter >= 1 && !$one->is_unlocked() ) { $one->unlock_achievement(); }
if ( $one->counter >= 30 && !$thirty->is_unlocked() ) { $thirty->unlock_achievement(); }
if ( $one->counter >= 100 && !$hundred->is_unlocked() ) { $hundred->unlock_achievement(); }
}
Any help would be appreciated.
Thanks.