/**
 * 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];
}