/wp-content/plugins/membership/membershipincludes/plugins/supporter.php

https://github.com/thomasbennett/localbnd · PHP · 157 lines · 118 code · 24 blank · 15 comment · 17 complexity · 39792072ea84c78493edce82d9fada69 MD5 · raw file

  1. <?php
  2. /*
  3. Plugin Name: Supporter Integration
  4. Description: Experimental Support integration
  5. Author: Barry (Incsub)
  6. Author URI: http://caffeinatedb.com
  7. */
  8. add_action( 'membership_subscription_form_after_levels', 'supporter_membership_subscription_settings' );
  9. add_action( 'membership_subscription_update', 'supporter_membership_subscription_update');
  10. add_action( 'membership_subscription_add', 'supporter_membership_subscription_update');
  11. add_action( 'membership_move_subscription', 'supporter_membership_move_subscription', 10, 6 );
  12. add_action( 'membership_add_subscription', 'supporter_membership_add_subscription', 10, 4);
  13. // Add in parts to allow a user to select which blog/site is their main one
  14. add_action('show_user_profile', 'supporter_membership_show_profile_section');
  15. add_action('edit_user_profile', 'supporter_membership_show_profile_section');
  16. add_action('edit_user_profile_update', 'supporter_membership_update_user_section');
  17. add_action('personal_options_update', 'supporter_membership_update_user_section');
  18. function supporter_membership_subscription_update( $sub_id ) {
  19. update_option( "membership_supporter_integration_" . $sub_id, $_POST['membership_supporter_integration'] );
  20. }
  21. function supporter_membership_subscription_settings( $sub_id ) {
  22. ?>
  23. <h3><?php _e('Supporter integration settings','membership'); ?></h3>
  24. <div class='sub-details'>
  25. <p class='description'>
  26. <?php _e('By enabling the membership / supporter integration below the members primary_blog (for which they are an administrator) will made a supporter and will mirror this subscriptions level periods.','membership'); ?>
  27. </p>
  28. <label for='aff_pay'><?php _e('Enable membership / supporter integration','membership'); ?></label>
  29. <select name="membership_supporter_integration">
  30. <?php
  31. $membership_supporter_integration = get_option( "membership_supporter_integration_" . $sub_id );
  32. if(empty($membership_supporter_integration)) $membership_supporter_integration = 'no';
  33. ?>
  34. <option value='no' <?php selected('no', $membership_supporter_integration); ?>><?php _e('No','membership'); ?></option>
  35. <option value='yes' <?php selected('yes', $membership_supporter_integration); ?>><?php _e('Yes','membership'); ?></option>
  36. </select>
  37. </div>
  38. <?php
  39. }
  40. function supporter_membership_show_profile_section( $user ) {
  41. global $wpdb, $current_site;
  42. ?>
  43. <h3><?php IS_PROFILE_PAGE ? _e('Your Main Site') : _e('Users Main Site'); ?></h3>
  44. <table class="form-table">
  45. <tr>
  46. <th><label for="description"><?php _e('Select Main Site'); ?></label></th>
  47. <td>
  48. <?php
  49. $sql = "SELECT * FROM {$wpdb->usermeta} WHERE user_id = " . $user->ID . " AND meta_key LIKE 'wp_%_capabilities' AND meta_value LIKE '%administrator%'";
  50. $results = $wpdb->get_results( $sql );
  51. $blog_ids = array();
  52. foreach ((array) $results as $row) {
  53. $tmp = explode('_', $row->meta_key);
  54. //skip main blog
  55. if ($tmp[1] != $current_site->blogid) {
  56. $blog_ids[] = $tmp[1];
  57. }
  58. }
  59. $myblogid = get_user_meta( $user->ID, 'm_supporter_blog', true );
  60. ?>
  61. <select name='supporter_blog'>
  62. <?php
  63. if(!empty($blog_ids)) {
  64. foreach($blog_ids as $blogid) {
  65. $blog = get_blog_details($blogid);
  66. ?>
  67. <option value='<?php echo $blogid; ?>' <?php selected($blogid, $myblogid); ?>><?php echo $blog->blogname; ?></option>
  68. <?php
  69. }
  70. }
  71. ?>
  72. </select>
  73. </td>
  74. </tr>
  75. </table><br/><br/>
  76. <?php
  77. }
  78. function supporter_membership_update_user_section( $user_id ) {
  79. update_user_meta( $user_id, 'm_supporter_blog', $_POST['supporter_blog'] );
  80. }
  81. function supporter_membership_add_subscription($tosub_id, $tolevel_id, $to_order, $user_id) {
  82. return supporter_membership_move_subscription(0, 0, $tosub_id, $tolevel_id, $to_order, $user_id);
  83. }
  84. function supporter_membership_move_subscription( $fromsub_id, $fromlevel_id, $tosub_id, $tolevel_id, $to_order, $user_id ) {
  85. global $wpdb;
  86. $myblogid = get_user_meta( $user_id, 'm_supporter_blog', true );
  87. if(empty($myblogid)) {
  88. // not set so try to find
  89. $primary = get_user_meta( $user_id, 'primary_blog', true );
  90. if(!empty($primary)) {
  91. if($primary == '1') {
  92. $roles = get_user_meta( $user_id, $wpdb->base_prefix . $primary . '_capabilities', true );
  93. if(empty($roles)) {
  94. $roles = get_user_meta( $user_id, $wpdb->base_prefix . 'capabilities', true );
  95. }
  96. } else {
  97. $roles = get_user_meta( $user_id, $wpdb->base_prefix . $primary . '_capabilities', true );
  98. }
  99. if(!empty($roles) && array_key_exists('administrator', $roles)) {
  100. $myblogid = $primary;
  101. } else {
  102. return;
  103. }
  104. } else {
  105. return;
  106. }
  107. }
  108. // get the level so we can find the amount to extend by
  109. $subscription = new M_Subscription( $tosub_id );
  110. $level = $subscription->get_level_at($tolevel_id, $to_order);
  111. if(!empty($level) && !empty($myblogid)) {
  112. $start = current_time('mysql');
  113. switch($level->level_period_unit) {
  114. case 'd': $period = 'days'; break;
  115. case 'w': $period = 'weeks'; break;
  116. case 'm': $period = 'months'; break;
  117. case 'y': $period = 'years'; break;
  118. default: $period = 'days'; break;
  119. }
  120. $extend = strtotime('+' . $level->level_period . ' ' . $period );
  121. $extend = $extend - time();
  122. $extend = $extend + 3600;
  123. // For debuging
  124. //echo $myblogid;
  125. //echo $extend;
  126. //echo '+' . $level->level_period . ' ' . $period;
  127. //die();
  128. if(function_exists('supporter_extend')) {
  129. supporter_extend($myblogid, $extend, 'Membership');
  130. }
  131. }
  132. }
  133. ?>