/**
  * Init the form.
  *
  * @access public
  * @since 1.0.0
  * @return void
  */
 public static function init()
 {
     add_action('wp', array(__CLASS__, 'process'));
     // Validate and process passwords.
     if (wpum_get_option('custom_passwords')) {
         self::$random_password = false;
         add_filter('wpum/form/validate=register', array(__CLASS__, 'validate_password'), 10, 3);
         if (wpum_get_option('display_password_meter_registration')) {
             add_action('wpum/form/register/after/field=password', 'wpum_psw_indicator', 10);
         }
         if (wpum_get_option('login_after_registration')) {
             add_action('wpum/form/register/success', array(__CLASS__, 'do_login'), 11, 3);
         }
     }
     // Make sure the submitted email is valid and not in use.
     add_filter('wpum/form/validate=register', array(__CLASS__, 'validate_email'), 10, 3);
     // Add a very basic honeypot spam prevention field.
     if (wpum_get_option('enable_honeypot')) {
         add_action('wpum_get_registration_fields', array(__CLASS__, 'add_honeypot'));
         add_filter('wpum/form/validate=register', array(__CLASS__, 'validate_honeypot'), 10, 3);
     }
     /**
      * Adds a "terms" checkbox field to the signup form.
      */
     if (wpum_get_option('enable_terms')) {
         add_action('wpum_get_registration_fields', array(__CLASS__, 'add_terms'));
     }
     // Allow user to select a user role upon registration.
     if (wpum_get_option('allow_role_select')) {
         add_action('wpum_get_registration_fields', array(__CLASS__, 'add_role'));
         add_filter('wpum/form/validate=register', array(__CLASS__, 'validate_role'), 10, 3);
         add_action('wpum/form/register/success', array(__CLASS__, 'save_role'), 10, 10);
     }
     // Prevent users from using specific usernames if enabled.
     $exclude_usernames = wpum_get_option('exclude_usernames');
     if (!empty($exclude_usernames)) {
         add_filter('wpum/form/validate=register', array(__CLASS__, 'validate_username'), 10, 3);
     }
     // Store uploaded avatars into the database.
     if (wpum_get_option('custom_avatars') && WPUM()->fields->show_on_registration('user_avatar')) {
         add_action('wpum/form/register/success', array(__CLASS__, 'save_avatar'), 10, 3);
     }
     // Redirect to a page after successfull registration.
     if (wpum_get_option('login_after_registration') && wpum_get_option('custom_passwords') && wpum_get_option('registration_redirect')) {
         add_filter('wpum_redirect_after_automatic_login', array(__CLASS__, 'adjust_redirect_url'), 10, 2);
     } elseif (!wpum_get_option('login_after_registration') || !wpum_get_option('custom_passwords')) {
         if (wpum_get_option('registration_redirect')) {
             add_action('wpum/form/register/success', array(__CLASS__, 'redirect_on_success'), 9999, 3);
         }
     }
 }
 /**
  * Init the form.
  *
  * @access public
  * @since 1.0.0
  * @return void
  */
 public static function init()
 {
     add_action('wp', array(__CLASS__, 'process'));
     /**
      * The following hooks validate and process passwords,
      * they also execute functions that are only available when
      * custom passwords are enabled.
      *
      * 1 - Validate password strength
      * 2 - Add meter after password field
      * 3 - Execute automatic login
      * 
      */
     if (wpum_get_option('custom_passwords')) {
         self::$random_password = false;
         add_filter('wpum/form/validate=register', array(__CLASS__, 'validate_password'), 10, 3);
         if (wpum_get_option('display_password_meter_registration')) {
             add_action('wpum/form/register/after/field=password', array(__CLASS__, 'add_psw_meter'), 10);
         }
         if (wpum_get_option('login_after_registration')) {
             add_action('wpum/form/register/success', array(__CLASS__, 'do_login'), 11, 3);
         }
     }
     /**
      * Make sure the submitted email is valid and not in use.
      */
     add_filter('wpum/form/validate=register', array(__CLASS__, 'validate_email'), 10, 3);
     /**
      * The following hooks add a very basic honeypot spam prevention field.
      *
      * 1 - Adds new field within the registration fields array through filter.
      * 2 - Adds a new validation method through filter.
      *
      */
     if (wpum_get_option('enable_honeypot')) {
         add_action('wpum_get_registration_fields', array(__CLASS__, 'add_honeypot'));
         add_filter('wpum/form/validate=register', array(__CLASS__, 'validate_honeypot'), 10, 3);
     }
     /**
      * Adds a "terms" checkbox field to the signup form.
      */
     if (wpum_get_option('enable_terms')) {
         add_action('wpum_get_registration_fields', array(__CLASS__, 'add_terms'));
     }
     /**
      * Allow user to select a user role upon registration.
      *
      * 1 - Adds new field within the registration form.
      * 2 - Adds a new validation method through filter.
      * 3 - Saves the selected role upon registration
      *
      */
     if (wpum_get_option('allow_role_select')) {
         add_action('wpum_get_registration_fields', array(__CLASS__, 'add_role'));
         add_filter('wpum/form/validate=register', array(__CLASS__, 'validate_role'), 10, 3);
         add_action('wpum/form/register/success', array(__CLASS__, 'save_role'), 10, 10);
     }
     /**
      * Prevent users from using specific usernames if enabled
      */
     $exclude_usernames = wpum_get_option('exclude_usernames');
     if (!empty($exclude_usernames)) {
         add_filter('wpum/form/validate=register', array(__CLASS__, 'validate_username'), 10, 3);
     }
     /**
      * Store uploaded avatars into the database.
      */
     if (wpum_get_option('custom_avatars') && WPUM()->fields->show_on_registration('user_avatar')) {
         add_action('wpum/form/register/success', array(__CLASS__, 'save_avatar'), 10, 3);
     }
 }