/**
  * Updates the email address of a customer record when the email on a user is updated
  *
  * @access	public
  * @since	1.0
  */
 public function update_customer_email_on_user_update($user_id = 0, $old_user_data)
 {
     $customer = new KBS_Customer($user_id, true);
     if (!$customer) {
         return false;
     }
     $user = get_userdata($user_id);
     if (!empty($user) && $user->user_email !== $customer->email) {
         if (!$this->get_customer_by('email', $user->user_email)) {
             $success = $this->update($customer->id, array('email' => $user->user_email));
             if ($success) {
                 // Update some payment meta if we need to
                 $tickets_array = explode(',', $customer->ticket_ids);
                 if (!empty($tickets_array)) {
                     foreach ($tickets_array as $ticket_id) {
                         kbs_update_ticket_meta($ticket_id, 'email', $user->user_email);
                     }
                 }
                 do_action('kbs_update_customer_email_on_user_update', $user, $customer);
             }
         }
     }
 }
/**
 * Assigns an agent to the ticket.
 *
 * @since	1.0
 * @param	int	$ticket_id	The ticket ID to update.
 * @param	int	$user_id	The agent user ID. If not set, use current user.
 * @return	mixed.
 */
function kbs_assign_agent($ticket_id, $user_id = 0)
{
    if (empty($user_id)) {
        $user_id = get_current_user_id();
    }
    /**
     * Fires immediately before assigning an agent
     *
     * @since	1.0
     * @param	int	$ticket_id		The ticket ID
     * @param	int	$user_id		The user ID
     */
    do_action('kbs_pre_assign_agent', $ticket_id, $user_id);
    $return = kbs_update_ticket_meta($ticket_id, array('agent' => $user_id));
    /**
     * Fires immediately after assigning an agent
     *
     * @since	1.0
     * @param	int	$ticket_id		The ticket ID
     * @param	int	$user_id		The user ID
     */
    do_action('kbs_post_assign_agent', $ticket_id, $user_id);
    return $return;
}