Advertisement
Guest User

Untitled

a guest
Mar 7th, 2017
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.32 KB | None | 0 0
  1. <?php
  2. /**
  3. * WP_Job_Manager_Form_Register class.
  4. */
  5. class WP_Job_Manager_Form_Register extends WP_Job_Manager_Form {
  6.  
  7. public static $form_name = 'register';
  8. protected static $job_id;
  9. protected static $preview_job;
  10. protected static $steps;
  11. protected static $step;
  12.  
  13. /**
  14. * Init form
  15. */
  16. public static function init() {
  17. add_action( 'wp', array( __CLASS__, 'process' ) );
  18.  
  19. // Get step/job
  20. self::$step = ! empty( $_REQUEST['step'] ) ? max( absint( $_REQUEST['step'] ), 0 ) : 0;
  21.  
  22. $register = jobify_find_page_with_shortcode( array( 'jobify_register_form', 'register_form' ) );
  23. $register = get_post( $register );
  24.  
  25. self::$action = get_permalink( $register->ID );
  26.  
  27. self::$steps = (array) apply_filters( 'register_form_steps', array(
  28. 'submit' => array(
  29. 'name' => __( 'Register', 'jobify' ),
  30. 'view' => array( __CLASS__, 'submit' ),
  31. 'handler' => array( __CLASS__, 'submit_handler' ),
  32. 'priority' => 10
  33. ),
  34. ) );
  35.  
  36. usort( self::$steps, array( __CLASS__, 'sort_by_priority' ) );
  37. }
  38.  
  39. /**
  40. * Increase step from outside of the class
  41. */
  42. public function next_step() {
  43. self::$step ++;
  44. }
  45.  
  46. /**
  47. * Decrease step from outside of the class
  48. */
  49. public function previous_step() {
  50. self::$step --;
  51. }
  52.  
  53. /**
  54. * Sort array by priority value
  55. */
  56. private static function sort_by_priority( $a, $b ) {
  57. return $a['priority'] - $b['priority'];
  58. }
  59.  
  60. /**
  61. * init_fields function.
  62. *
  63. * @access public
  64. * @return void
  65. */
  66. public static function init_fields() {
  67. self::$fields = apply_filters( 'register_form_fields', array(
  68. 'creds' => array(
  69. 'nicename' => array(
  70. 'label' => __( 'Your Name', 'jobify' ),
  71. 'type' => 'text',
  72. 'required' => true,
  73. 'placeholder' => '',
  74. 'priority' => 1
  75. ),
  76. 'email' => array(
  77. 'label' => __( 'Email Address', 'jobify' ),
  78. 'type' => 'text',
  79. 'required' => true,
  80. 'placeholder' => __( 'recruiter@company.com', 'jobify' ),
  81. 'priority' => 2
  82. ),
  83. 'password' => array(
  84. 'label' => __( 'Password', 'jobify' ),
  85. 'type' => 'password',
  86. 'required' => true,
  87. 'placeholder' => '',
  88. 'priority' => 3
  89. )
  90. )
  91. ) );
  92.  
  93. if ( class_exists( 'WP_Resume_Manager' ) ) {
  94. self::$fields[ 'info' ][ 'role' ] = array(
  95. 'label' => __( 'About You', 'jobify' ),
  96. 'type' => 'select',
  97. 'required' => true,
  98. 'priority' => 4,
  99. 'options' => array(
  100. 'subscriber' => __( 'I&#39;m an employer looking to hire', 'jobify' ),
  101. 'candidate' => __( 'I&#39;m a candidate looking for a job', 'jobify' )
  102. )
  103. );
  104. }
  105. }
  106.  
  107. /**
  108. * Get post data for fields
  109. *
  110. * @return array of data
  111. */
  112. protected static function get_posted_fields() {
  113. self::init_fields();
  114.  
  115. $values = array();
  116.  
  117. foreach ( self::$fields as $group_key => $fields ) {
  118. foreach ( $fields as $key => $field ) {
  119. $values[ $group_key ][ $key ] = isset( $_POST[ $key ] ) ? stripslashes( $_POST[ $key ] ) : '';
  120. $values[ $group_key ][ $key ] = sanitize_text_field( $values[ $group_key ][ $key ] );
  121.  
  122. // Set fields value
  123. self::$fields[ $group_key ][ $key ]['value'] = $values[ $group_key ][ $key ];
  124. }
  125. }
  126.  
  127. return $values;
  128. }
  129.  
  130. /**
  131. * Validate hte posted fields
  132. *
  133. * @return bool on success, WP_ERROR on failure
  134. */
  135. protected static function validate_fields( $values ) {
  136. foreach ( self::$fields as $group_key => $fields ) {
  137. foreach ( $fields as $key => $field ) {
  138. if ( $field['required'] && empty( $values[ $group_key ][ $key ] ) )
  139. return new WP_Error( 'validation-error', sprintf( __( '%s is a required field', 'jobify' ), $field['label'] ) );
  140. }
  141. }
  142.  
  143. return true;
  144. }
  145.  
  146. /**
  147. * Process function. all processing code if needed - can also change view if step is complete
  148. */
  149. public static function process() {
  150. $keys = array_keys( self::$steps );
  151.  
  152. if ( isset( $keys[ self::$step ] ) && is_callable( self::$steps[ $keys[ self::$step ] ]['handler'] ) ) {
  153. call_user_func( self::$steps[ $keys[ self::$step ] ]['handler'] );
  154. }
  155. }
  156.  
  157. /**
  158. * output function. Call the view handler.
  159. */
  160. public static function output() {
  161. $keys = array_keys( self::$steps );
  162.  
  163. self::show_errors();
  164.  
  165. if ( isset( $keys[ self::$step ] ) && is_callable( self::$steps[ $keys[ self::$step ] ]['view'] ) ) {
  166. call_user_func( self::$steps[ $keys[ self::$step ] ]['view'] );
  167. }
  168. }
  169.  
  170. /**
  171. * Submit Step
  172. */
  173. public static function submit() {
  174. global $job_manager, $post;
  175.  
  176. self::init_fields();
  177.  
  178. get_job_manager_template( 'form-register.php', array(
  179. 'form' => self::$form_name,
  180. 'action' => self::get_action(),
  181. 'cred_fields' => self::get_fields( 'creds' ),
  182. 'info_fields' => self::get_fields( 'info' ),
  183. 'submit_button_text' => __( 'Register', 'jobify' )
  184. ) );
  185.  
  186. wp_reset_query();
  187. }
  188.  
  189. /**
  190. * Submit Step is posted
  191. */
  192. public static function submit_handler() {
  193. try {
  194. // Get posted values
  195. $values = self::get_posted_fields();
  196.  
  197. if ( empty( $_POST[ 'submit_register' ] ) || ! wp_verify_nonce( $_POST['_wpnonce'], 'register_form_posted' ) )
  198. return;
  199.  
  200. // Validate required
  201. if ( is_wp_error( ( $return = self::validate_fields( $values ) ) ) )
  202. throw new Exception( $return->get_error_message() );
  203.  
  204. $role = 'subscriber' == $values[ 'info' ][ 'role' ] ? get_option( 'default_role' ) : $values[ 'info' ][ 'role' ];
  205. $values = $values[ 'creds' ];
  206.  
  207. $user_email = apply_filters( 'user_registration_email', sanitize_email( $values[ 'email' ] ) );
  208.  
  209. if ( empty( $user_email ) )
  210. throw new Exception( __( 'Your email address is required.', 'jobify' ) );
  211.  
  212. if ( ! is_email( $user_email ) )
  213. throw new Exception( __( 'Your email address isn&#8217;t correct.', 'jobify' ) );
  214.  
  215. if ( email_exists( $user_email ) )
  216. throw new Exception( __( 'This email is already registered, please choose another one.', 'jobify' ) );
  217.  
  218. // Email is good to go - use it to create a user name
  219. $username = sanitize_user( $values[ 'nicename' ] );
  220. $password = esc_attr( $values[ 'password' ] );
  221.  
  222. // Ensure username is unique
  223. $append = 1;
  224. $o_username = $username;
  225.  
  226. while( username_exists( $username ) ) {
  227. $username = $o_username . $append;
  228. $append ++;
  229. }
  230.  
  231. // Final error check
  232. $reg_errors = new WP_Error();
  233. do_action( 'register_post', $username, $user_email, $reg_errors );
  234. $reg_errors = apply_filters( 'registration_errors', $reg_errors, $username, $user_email );
  235.  
  236. if ( $reg_errors->get_error_code() )
  237. return $reg_errors;
  238.  
  239. // Get the role
  240. $role = esc_attr( $role );
  241.  
  242. // Create account
  243. $new_user = array(
  244. 'user_login' => $username,
  245. 'user_pass' => $password,
  246. 'user_email' => $user_email,
  247. 'role' => $role
  248. );
  249.  
  250. $user_id = wp_insert_user( apply_filters( 'job_manager_create_account_data', $new_user ) );
  251.  
  252. if ( is_wp_error( $user_id ) )
  253. return $user_id;
  254.  
  255. // Notify
  256. wp_new_user_notification( $user_id, $password );
  257.  
  258. // Login
  259. if ( apply_filters( 'jobify_force_login_on_register', true ) ) {
  260. wp_set_auth_cookie( $user_id, true, is_ssl() );
  261. $current_user = get_user_by( 'id', $user_id );
  262.  
  263. wp_safe_redirect( apply_filters( 'jobify_registeration_redirect', home_url() ) );
  264. exit();
  265. } else {
  266. do_action( 'jobify_user_registered', $current_user );
  267. }
  268.  
  269. return true;
  270. } catch ( Exception $e ) {
  271. self::add_error( $e->getMessage() );
  272. return;
  273. }
  274. }
  275. }
  276.  
  277. WP_Job_Manager_Form_Register::init();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement