WordPress.org

Ready to get started?Download WordPress

Forums

Achievements for WordPress
[resolved] How to add events to Achievements (7 posts)

  1. binarymoon
    Member
    Posted 11 months ago #

    I have everything working for my site in dev but it's not working properly in production. This is because I had set up the events through the wp admin rather than in code.

    Below is the class I am using currently:

    if ( class_exists( 'DPA_Extension' ) ) {
    
    	/**
    	 * Extension to add Brush Ninja support to Achievements
    	 *
    	 * @since Achievements (3.0)
    	 */
    	class DPA_Animate_Extension extends DPA_Extension {
    
    		public function __construct() {
    			$this->actions = array(
    				'bm_new_animation'   => __( 'A new animation is added', 'dpa' ),
    			);
    
    			$this->contributors = array(
    				array(
    					'name'         => 'Ben',
    					'gravatar_url' => 'http://www.gravatar.com/avatar/767fc9c115a1b989744c755db47feb60',
    					'profile_url'  => 'http://profiles.wordpress.org/binarymoon/',
    				),
    			);
    
    			$this->description     = __( 'Animate is my own website and so I do not need to fill this out properly.', 'dpa' );
    			$this->id              = 'animate';
    			$this->image_url       = trailingslashit( achievements()->includes_url ) . 'admin/images/bbpress.png';
    			$this->name            = __( 'Animate', 'dpa' );
    			$this->small_image_url = trailingslashit( achievements()->includes_url ) . 'admin/images/bbpress-small.png';
    			$this->version         = 1;
    		}
    
    	}
    
    	/**
    	 *
    	 */
    	function dpa_init_animate() {
    		achievements()->extensions->animate = new DPA_Animate_Extension;
    		do_action( 'dpa_init_animate' );
    	}
    
    	add_action( 'dpa_ready', 'dpa_init_animate' );
    
    }

    I should add that I haven't bothered making any of the plugin functionality pretty since this is for a private site and not code that I will be making public :)

    http://wordpress.org/plugins/achievements/

  2. binarymoon
    Member
    Posted 11 months ago #

    I have a custom action 'bm_new_animation' and I want to add a new event with the same name.

    Thanks for any help you can give

  3. binarymoon
    Member
    Posted 11 months ago #

    In case you're interested this is for http://brushninja.com

  4. Paul Gibbs
    BuddyPress Lead Developer
    Plugin Author

    Posted 11 months ago #

    Hi,

    I think I know what the root cause is, so let's try that first. I'll explain in detail the problem if the fix works. This is written in the context of the plugin not working on the production server.

    The $this->actions should be automatically added. This also assume the custom events do not appear in the "choose actions" dropdown box on the Add New Achievement screen.

    1) Assuming you aren't running this in multisite with the plugin activated network-wide, go into the wp_options database table and find an record with option_name = "_dpa_extension_versions"

    2) The option_value is a serialised array. It's probably easiest to write a test script somewhere that de-serialises this string. It contains an array; one of the array keys will be the name of your extension - remove that particular item from the array, then re-serialise and overwrite the option value.

    3) Then visit a page in your site's wp-admin

    4) And then go and see if the event types appear on the create achievement screen.

  5. binarymoon
    Member
    Posted 11 months ago #

    That did it - thanks! :)

    Looks like the animate key isn't in the _dpa_extension_versions record anymore though. I guess that means it's pulling it through the filter?

  6. binarymoon
    Member
    Posted 11 months ago #

    I have a new question that is related to this I guess.

    In dev I deleted the event that I had added manually since it's now in the code - but it doesn't show. Some new events/ actions I added are displaying fine.

    I wondered if changing the version number would allow the actions to be updated but that didn't seem to change anything.

    For reference I stripped out a bunch of properties that didn't seem to make any difference (since this is all private) and I am now left with the following (I added some new actions too).

    /**
    	 * Extension to add Brush Ninja support to Achievements
    	 *
    	 * @since Achievements (3.0)
    	 */
    	class DPA_Animate_Extension extends DPA_Extension {
    
    		public function __construct() {
    			$this->actions = array(
    				'bm_new_animation'	=> __( 'Submit a new Animation', 'dpa' ),
    				'bm_subscribe'		=> __( 'Subscribe to the site', 'dpa' ),
    				'bm_scumbag'		=> __( 'An animation has been deleted', 'dpa' ),
    				'bm_police'			=> __( 'Reported a bad animation', 'dpa' ),
    			);
    
    			$this->id = 'Animate';
    			$this->name = __( 'Animate', 'dpa' );
    			$this->version = 1.1;
    		}
    
    	}
  7. Paul Gibbs
    BuddyPress Lead Developer
    Plugin Author

    Posted 11 months ago #

    > Looks like the animate key isn't in the _dpa_extension_versions record anymore though. I guess that means it's pulling it through the filter?

    Why guess? Look at the Achievements code and see what's happening. Achievements should see your extension as 'new' and re-add the item. See the dpa_maybe_update_extensions() function.

Reply

You must log in to post.

About this Plugin

About this Topic

Tags

No tags yet.