Hooks
Class adds additional missing hooks from Learndash
Description
Source
File: bp-integrations/learndash/learndash/Hooks.php
class Hooks { /** * Constructor * * @since BuddyBoss 1.0.0 */ public function __construct() { add_action('bp_ld_sync/init', [$this, 'init']); } /** * Add actions once integration is ready * * @since BuddyBoss 1.0.0 */ public function init() { // add some helpful missing hooks add_action('ld_group_postdata_updated', [$this, 'groupUpdated']); add_action('before_delete_post', [$this, 'groupDeleting']); // backward compet, we check the meta instead of using hook (hook not consistant) add_action('update_user_meta', [$this, 'checkLearndashGroupUpdateMeta'], 10, 4); add_action('added_user_meta', [$this, 'checkLearndashGroupUpdateMeta'], 10, 4); add_action('deleted_user_meta', [$this, 'checkLearndashGroupDeleteMeta'], 10, 4); add_action('update_post_meta', [$this, 'checkLearndashCourseUpdateMeta'], 10, 4); add_action('added_post_meta', [$this, 'checkLearndashCourseUpdateMeta'], 10, 4); add_action('deleted_post_meta', [$this, 'checkLearndashCourseDeleteMeta'], 10, 4); } /** * Sub action when ld gorup is created * * @since BuddyBoss 1.0.0 */ public function groupUpdated($groupId) { do_action('bp_ld_sync/learndash_group_updated', $groupId); } /** * Sub action before ld gorup is deleted * * @since BuddyBoss 1.0.0 */ public function groupDeleting($groupId) { global $wpdb; $post = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->posts WHERE ID = %d", $groupId)); if ($post->post_type != 'groups') { return false; } do_action('bp_ld_sync/learndash_group_deleting', $groupId); add_action('delete_post', [$this, 'groupDeleted']); } /** * Sub action after ld gorup is deleted * * @since BuddyBoss 1.0.0 */ public function groupDeleted($groupId) { remove_action('delete_post', [$this, 'groupDeleted']); do_action('bp_ld_sync/learndash_group_deleted', $groupId); } /** * Sub actions when admin or user is added to ld group * * @since BuddyBoss 1.0.0 */ public function checkLearndashGroupUpdateMeta($metaId, $userId, $metaKey, $metaValue) { if ($this->isLearndashLeaderMeta($metaKey)) { $groupId = $this->getLeardashMetaGroupId($metaKey); return do_action('bp_ld_sync/learndash_group_admin_added', $groupId, $userId); } if ($this->isLearndashUserMeta($metaKey)) { $groupId = $this->getLeardashMetaGroupId($metaKey); return do_action('bp_ld_sync/learndash_group_user_added', $groupId, $userId); } } /** * Sub actions when admin or user is removed from ld group * * @since BuddyBoss 1.0.0 */ public function checkLearndashGroupDeleteMeta($metaId, $userId, $metaKey, $metaValue) { if ($this->isLearndashLeaderMeta($metaKey)) { $groupId = $this->getLeardashMetaGroupId($metaKey); return do_action('bp_ld_sync/learndash_group_admin_removed', $groupId, $userId); } if ($this->isLearndashUserMeta($metaKey)) { $groupId = $this->getLeardashMetaGroupId($metaKey); return do_action('bp_ld_sync/learndash_group_user_removed', $groupId, $userId); } } /** * sub action when a course is added to ld group * * @since BuddyBoss 1.0.0 */ public function checkLearndashCourseUpdateMeta($metaId, $groupId, $metaKey, $metaValue) { if ($this->isLearndashCourseMeta($metaKey)) { $courseId = $this->getLeardashMetaGroupId($metaKey); return do_action('bp_ld_sync/learndash_group_course_added', $groupId, $courseId); } } /** * Sub action when a course is deleted from ld group * * @since BuddyBoss 1.0.0 */ public function checkLearndashCourseDeleteMeta($metaId, $groupId, $metaKey, $metaValue) { if ($this->isLearndashCourseMeta($metaKey)) { $courseId = $this->getLeardashMetaGroupId($metaKey); return do_action('bp_ld_sync/learndash_group_course_deleted', $groupId, $userId); } } /** * If the key is a ld leader meta key * * @since BuddyBoss 1.0.0 */ protected function isLearndashLeaderMeta($key) { return strpos($key, 'learndash_group_leaders_') === 0; } /** * If the key is a ld user meta key * * @since BuddyBoss 1.0.0 */ protected function isLearndashUserMeta($key) { return strpos($key, 'learndash_group_users_') === 0; } /** * If the key is a ld course meta key * * @since BuddyBoss 1.0.0 */ protected function isLearndashCourseMeta($key) { return strpos($key, 'learndash_group_enrolled_') === 0; } /** * Get the gorup id from the meta key * * @since BuddyBoss 1.0.0 */ protected function getLeardashMetaGroupId($key) { $segments = explode('_', $key); return array_pop($segments); } }
Changelog
Version | Description |
---|---|
BuddyBoss 1.0.0 | Introduced. |
Methods
- __construct — Constructor
- checkLearndashCourseDeleteMeta — Sub action when a course is deleted from ld group
- checkLearndashCourseUpdateMeta — sub action when a course is added to ld group
- checkLearndashGroupDeleteMeta — Sub actions when admin or user is removed from ld group
- checkLearndashGroupUpdateMeta — Sub actions when admin or user is added to ld group
- getLeardashMetaGroupId — Get the gorup id from the meta key
- groupDeleted — Sub action after ld gorup is deleted
- groupDeleting — Sub action before ld gorup is deleted
- groupUpdated — Sub action when ld gorup is created
- init — Add actions once integration is ready
- isLearndashCourseMeta — If the key is a ld course meta key
- isLearndashLeaderMeta — If the key is a ld leader meta key
- isLearndashUserMeta — If the key is a ld user meta key
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.