class.swpm-self-action-handler.php 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <?php
  2. class SwpmSelfActionHandler {
  3. public function __construct() {
  4. //Register all the self action hooks the plugin needs to handle
  5. add_action('swpm_front_end_registration_complete_fb', array(&$this, 'after_registration_callback'));//For the form builder
  6. add_action('swpm_front_end_registration_complete_user_data', array(&$this, 'after_registration_callback'));
  7. add_action('swpm_membership_level_changed', array(&$this, 'handle_membership_level_changed_action'));
  8. add_action('swpm_payment_ipn_processed', array(&$this, 'handle_swpm_payment_ipn_processed'));
  9. add_filter('swpm_after_logout_redirect_url', array(&$this, 'handle_after_logout_redirection'));
  10. add_filter('swpm_auth_cookie_expiry_value', array(&$this, 'handle_auth_cookie_expiry_value'));
  11. }
  12. public function handle_auth_cookie_expiry_value($expire){
  13. $logout_member_on_browser_close = SwpmSettings::get_instance()->get_value('logout-member-on-browser-close');
  14. if (!empty($logout_member_on_browser_close)) {
  15. //This feature is enabled.
  16. //Setting auth cookie expiry value to 0.
  17. $expire = apply_filters( 'swpm_logout_on_close_auth_cookie_expiry_value', 0 );
  18. }
  19. return $expire;
  20. }
  21. public function handle_after_logout_redirection($redirect_url){
  22. $after_logout_url = SwpmSettings::get_instance()->get_value('after-logout-redirection-url');
  23. if(!empty($after_logout_url)){
  24. //After logout URL is being used. Override re-direct URL.
  25. $redirect_url = $after_logout_url;
  26. }
  27. return $redirect_url;
  28. }
  29. public function handle_swpm_payment_ipn_processed($ipn_data){
  30. $ipn_forward_url = SwpmSettings::get_instance()->get_value('payment-notification-forward-url');
  31. if(!empty($ipn_forward_url)){
  32. SwpmLog::log_simple_debug("Payment Notification Forwarding is Enabled. Posting the payment data to URL: " . $ipn_forward_url, true);
  33. $response = wp_remote_post($ipn_forward_url, $ipn_data);
  34. if (is_wp_error($response)) {
  35. $error_message = $response->get_error_message();
  36. SwpmLog::log_simple_debug("There was an error posting the payment data. Error message: " . $error_message, true);
  37. }
  38. }
  39. }
  40. public function after_registration_callback($user_data){
  41. //Handle auto login after registration if enabled
  42. $enable_auto_login = SwpmSettings::get_instance()->get_value('auto-login-after-rego');
  43. if (!empty($enable_auto_login)){
  44. SwpmLog::log_simple_debug("Auto login after registration feature is enabled in settings. Performing auto login for user: " . $user_data['user_name'], true);
  45. $login_page_url = SwpmSettings::get_instance()->get_value('login-page-url');
  46. // Allow hooks to change the value of login_page_url
  47. $login_page_url = apply_filters('swpm_after_reg_callback_login_page_url', $login_page_url);
  48. $encoded_pass = base64_encode($user_data['plain_password']);
  49. $swpm_auto_login_nonce = wp_create_nonce('swpm-auto-login-nonce');
  50. $arr_params = array(
  51. 'swpm_auto_login' => '1',
  52. 'swpm_user_name' => urlencode($user_data['user_name']),
  53. 'swpm_encoded_pw' => $encoded_pass,
  54. 'swpm_auto_login_nonce' => $swpm_auto_login_nonce,
  55. );
  56. $redirect_page = add_query_arg($arr_params, $login_page_url);
  57. wp_redirect($redirect_page);
  58. exit(0);
  59. }
  60. }
  61. public function handle_membership_level_changed_action($args){
  62. $swpm_id = $args['member_id'];
  63. $old_level = $args['from_level'];
  64. $new_level = $args['to_level'];
  65. SwpmLog::log_simple_debug('swpm_membership_level_changed action triggered. Member ID: '.$swpm_id.', Old Level: '.$old_level.', New Level: '.$new_level, true);
  66. //Check to see if the old and the new levels are the same or not.
  67. if(trim($old_level) == trim($new_level)){
  68. SwpmLog::log_simple_debug('The to (Level ID: '.$new_level.') and from (Level ID: '.$old_level.') values are the same. Nothing to do here.', true);
  69. return;
  70. }
  71. //Find record for this user
  72. SwpmLog::log_simple_debug('Retrieving user record for member ID: '.$swpm_id, true);
  73. $resultset = SwpmMemberUtils::get_user_by_id($swpm_id);
  74. if($resultset){
  75. //Found a record. Lets do some level update specific changes.
  76. //$emailaddress = $resultset->email;
  77. //$account_status = $resultset->account_state;
  78. //Retrieve the new memberhsip level's details
  79. $level_row = SwpmUtils::get_membership_level_row_by_id($new_level);
  80. //Update the WP user role according to the new level's configuration (if applicable).
  81. $user_role = $level_row->role;
  82. $user_info = get_user_by('login', $resultset->user_name);
  83. $wp_user_id = $user_info->ID;
  84. SwpmLog::log_simple_debug('Calling user role update function.', true);
  85. SwpmMemberUtils::update_wp_user_role($wp_user_id, $user_role);
  86. }
  87. }
  88. }