/** * Handle each of our LearnDash triggers * * @since 1.0.0 */ function badgeos_learndash_trigger_event() { // Setup all our important variables global $blog_id, $wpdb; // Setup args $args = func_get_args(); $userID = get_current_user_id(); if (is_array($args) && isset($args['user'])) { if (is_object($args['user'])) { $userID = (int) $args['user']->ID; } else { $userID = (int) $args['user']; } } if (empty($userID)) { return; } $user_data = get_user_by('id', $userID); if (empty($user_data)) { return; } // Grab the current trigger $this_trigger = current_filter(); // Update hook count for this user $new_count = badgeos_update_user_trigger_count($userID, $this_trigger, $blog_id); // Mark the count in the log entry badgeos_post_log_entry(null, $userID, null, sprintf(__('%1$s triggered %2$s (%3$dx)', 'badgeos'), $user_data->user_login, $this_trigger, $new_count)); // Now determine if any badges are earned based on this trigger event $triggered_achievements = $wpdb->get_results($wpdb->prepare("\n\t\tSELECT post_id\n\t\tFROM {$wpdb->postmeta}\n\t\tWHERE meta_key = '_badgeos_learndash_trigger'\n\t\t\t\tAND meta_value = %s\n\t\t", $this_trigger)); foreach ($triggered_achievements as $achievement) { badgeos_maybe_award_achievement_to_user($achievement->post_id, $userID, $this_trigger, $blog_id, $args); } }
/** * Handle each of our activity triggers * * @since 1.0.0 * @return mixed */ function badgeos_trigger_event() { // Setup all our globals global $user_ID, $blog_id, $wpdb; $site_id = $blog_id; $args = func_get_args(); // Grab our current trigger $this_trigger = current_filter(); // Grab the user ID $user_id = badgeos_trigger_get_user_id($this_trigger, $args); $user_data = get_user_by('id', $user_id); // Sanity check, if we don't have a user object, bail here if (!is_object($user_data)) { return $args[0]; } // If the user doesn't satisfy the trigger requirements, bail here if (!apply_filters('badgeos_user_deserves_trigger', true, $user_id, $this_trigger, $site_id, $args)) { return $args[0]; } // Update hook count for this user $new_count = badgeos_update_user_trigger_count($user_id, $this_trigger, $site_id, $args); // Mark the count in the log entry badgeos_post_log_entry(null, $user_id, null, sprintf(__('%1$s triggered %2$s (%3$dx)', 'badgeos'), $user_data->user_login, $this_trigger, $new_count)); // Now determine if any badges are earned based on this trigger event $triggered_achievements = $wpdb->get_results($wpdb->prepare("\n\t\tSELECT post_id\n\t\tFROM {$wpdb->postmeta}\n\t\tWHERE meta_key = '_badgeos_trigger_type'\n\t\t AND meta_value = %s\n\t\t", $this_trigger)); foreach ($triggered_achievements as $achievement) { badgeos_maybe_award_achievement_to_user($achievement->post_id, $user_id, $this_trigger, $site_id, $args); } return $args[0]; }