H5P myCRED Hook
-
Hi there,
I’d like to create a hook to award myCRED pts to a user based on if they’ve completed an activity w/ 100% accuracy. Anyone able to help me out?
Ref: https://mycred.me/tutorials/how-to-make-your-custom-hook/
Thanks!
Bob
-
Hi, this sounds quite interesting!
Unfortunately, there’s currently no action triggered when results are logged. However, adding one shouldn’t be an issue if you could be so kind and test it, and check that it meets all your requirements. To do so you have to add the following code to the H5P plugin:
/** * Allows you to alter a user's submitted result for a given H5P content * This action is fired before the result is saved. * * @since 1.7.8 * * @param object &$data Has the following properties score,max_score,opened,finished,time * @param int $result_id Only set if updating result * @param int $content_id Identifier of the H5P Content * @param int $user_id Identfieri of the User */ do_action_ref_array('h5p_alter_user_result', array(&$data, $result_id, $content_id, $user_id));
This has to be placed inside the
public function ajax_results()
found inwp-content/plugins/h5p/admin/class-h5p-plugin-admin.php
right before the following code:if (!$result_id) { // Insert new results
After this, you should be able to use the action in your
myCRED_Hook
class:public function run() { add_action( 'h5p_alter_user_result', array( $this, 'h5p_result' ) ); } public function h5p_result( $data, $result_id, $content_id, $user_id ) { // Check if full score if ( $data['score'] !== $data['max_score'] ) return; // Make sure this is the first result for this content if ( $result_id ) return; // (result_id is only used when updating an old score) // Make sure this is a unique event if ( $this->has_entry( 'completing_h5p', '', $user_id ) ) return; // Execute $this->core->add_creds( 'completing_h5p', $user_id, $this->prefs['creds'], $this->prefs['log'], 0, '', $m ); }
I’m not 100 % sure about the myCREED parts, but this should at least give you the action/score you need.
- This reply was modified 7 years, 10 months ago by icc0rz.
Hi, I have the same question as rpetitto. Thank you for providing the code!
Where exactly am I supposed to paste in the last chunk of code (the part that begins with “public function run()….” ?I just took a code part from the class described at myCRED Hooks 101 and modified it a bit. I believe you will have to add the whole class to your theme’s functions.php file or you can create a small custom plugin for your site where you keep custom stuff.
Thanks! I’m not so familiar with php so don’t really understand how to edit the code myself. Can you send me the entire code that I should paste into my themes.php file?
@icc0rz thanks, for the code, however, I tried your snippet in my myCRED hook but it doesn’t work.
The hook is working properly because I tried it with a different trigger and it worked fine. So I’m assuming it’s the H5P part of the myCRED code or the code added to the H5P plugin to create and action trigger.
Any suggestions you have for a fix would be much appreciated.
It would be great if H5P could be connected to MyCred. I am sure there are other scoring plugins but MyCred has worked really well for us and if we were easily able to link it to H5P content, the combination would make a great interactive quiz package.
I agree that it would be great to be able to give myCred points for H5P results. I’ve added triggering of the action required to the H5P plugin: 04c60c8 and also an example on how to use it: 2a03e17. What’s left now is to create an adapter plugin that registers a myCred hook and listens for the H5P plugin to trigger the new action. I’m not that familiar with the myCred plugin, I’ve only tested it once. I will try to have a go at this when I get some spare time. Others are welcome to try.
Thanks for your diligence! I just saw this updated thread. I’ll attempt to install and see if I can get it working!
No dice. I managed to get the H5P Hook visible within myCred, but it doesn’t awards any points. Please take a look at this custom myCRED hook as it would mimic what h5P hopes to accomplish:
https://mycred.me/code-snippets/custom-hook-wp-pro-quiz-plugin/I copied the example and replaced some code as a small proof of concept: https://github.com/icc/mycred-h5p
You should be able to see H5P log entries once you enable the plugin and the hook. Though, I’m not sure how you really want it to behave. Feel free to push back any changes you make so everyone can enjoy them ??
Hi @icc0rz,
I was able to successfully download and install the plugin. However, I still do not see log entries after activating the hook. Did I miss a step? Does the h5P Mod plugin need to be installed/configured somehow?
I applied the patch. Will test in just a moment. Do I need h5P Mod installed?
Wait…Got it to work!!! Gonna tweak the preferences a bit to see if I can customize the values! I’ll keep you posted.
- The topic ‘H5P myCRED Hook’ is closed to new replies.