PageRenderTime 77ms CodeModel.GetById 21ms RepoModel.GetById 1ms app.codeStats 0ms

/wp-content/plugins/s2member/src/includes/classes/user-deletions.inc.php

https://gitlab.com/pankajmohale/chef2go
PHP | 226 lines | 153 code | 27 blank | 46 comment | 53 complexity | 7ceebfce04ebd7650d506f1e6b443423 MD5 | raw file
  1. <?php
  2. // @codingStandardsIgnoreFile
  3. /**
  4. * User deletion routines.
  5. *
  6. * Copyright: © 2009-2011
  7. * {@link http://websharks-inc.com/ WebSharks, Inc.}
  8. * (coded in the USA)
  9. *
  10. * Released under the terms of the GNU General Public License.
  11. * You should have received a copy of the GNU General Public License,
  12. * along with this software. In the main directory, see: /licensing/
  13. * If not, see: {@link http://www.gnu.org/licenses/}.
  14. *
  15. * @package s2Member\User_Deletions
  16. * @since 3.5
  17. */
  18. if(!defined('WPINC')) // MUST have WordPress.
  19. exit ('Do not access this file directly.');
  20. if(!class_exists('c_ws_plugin__s2member_user_deletions'))
  21. {
  22. /**
  23. * User deletion routines.
  24. *
  25. * @package s2Member\User_Deletions
  26. * @since 3.5
  27. */
  28. class c_ws_plugin__s2member_user_deletions
  29. {
  30. /**
  31. * Handles Multisite User removal deletions.
  32. *
  33. * @package s2Member\User_Deletions
  34. * @since 3.5
  35. *
  36. * @attaches-to ``add_action('remove_user_from_blog');``
  37. *
  38. * @param int|string $user_id Numeric WordPress User ID.
  39. * @param int|string $blog_id Numeric WordPress Blog ID.
  40. * @param bool $s2says Optional. Defaults to false. If true, it's definitely OK to process this deletion?
  41. * The ``$s2says`` flag can be used when/if the routine is called directly for whatever reason.
  42. */
  43. public static function handle_ms_user_deletions($user_id = 0, $blog_id = 0, $s2says = FALSE)
  44. {
  45. static $processed = array(); // No duplicate processing.
  46. global $pagenow; // Need this to detect the current admin page.
  47. foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
  48. do_action('ws_plugin__s2member_before_handle_ms_user_deletions', get_defined_vars());
  49. unset($__refs, $__v);
  50. if($user_id && is_multisite() && empty($processed[$user_id]) && ($s2says || (is_blog_admin() && $pagenow === 'users.php')))
  51. {
  52. $processed[$user_id] = TRUE;
  53. foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
  54. do_action('ws_plugin__s2member_during_handle_ms_user_deletions_before', get_defined_vars());
  55. unset($__refs, $__v);
  56. c_ws_plugin__s2member_user_deletions::handle_user_deletions($user_id);
  57. foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
  58. do_action('ws_plugin__s2member_during_handle_ms_user_deletions_after', get_defined_vars());
  59. unset($__refs, $__v);
  60. }
  61. foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
  62. do_action('ws_plugin__s2member_after_handle_ms_user_deletions', get_defined_vars());
  63. unset($__refs, $__v);
  64. }
  65. /**
  66. * Handles User removals/deletions.
  67. *
  68. * @package s2Member\User_Deletions
  69. * @since 3.5
  70. *
  71. * @attaches-to ``add_action('delete_user');``
  72. * @attaches-to ``add_action('wpmu_delete_user');``
  73. *
  74. * @param int|string $user_id Numeric WordPress User ID.
  75. */
  76. public static function handle_user_deletions($user_id = 0)
  77. {
  78. static $processed = array(); // No duplicate processing.
  79. foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
  80. do_action('ws_plugin__s2member_before_handle_user_deletions', get_defined_vars());
  81. unset($__refs, $__v);
  82. if($user_id && empty($processed[$user_id]) && ($processed[$user_id] = TRUE))
  83. {
  84. $eot_del_type = // Configure EOT/DEL type (possibly through this global variable).
  85. (!empty($GLOBALS['ws_plugin__s2member_eot_del_type'])) ? // Is the global available for use?
  86. $GLOBALS['ws_plugin__s2member_eot_del_type'] : 'user-removal-deletion'; // Else use default.
  87. $custom = get_user_option('s2member_custom', $user_id);
  88. $subscr_id = get_user_option('s2member_subscr_id', $user_id);
  89. $subscr_baid = get_user_option('s2member_subscr_baid', $user_id);
  90. $subscr_cid = get_user_option('s2member_subscr_cid', $user_id);
  91. $fields = get_user_option('s2member_custom_fields', $user_id);
  92. $user_reg_ip = get_user_option('s2member_registration_ip', $user_id);
  93. foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
  94. do_action('ws_plugin__s2member_during_handle_user_before_deletions', get_defined_vars());
  95. do_action('ws_plugin__s2member_during_collective_eots', $user_id, get_defined_vars(), $eot_del_type, 'removal-deletion');
  96. unset($__refs, $__v);
  97. delete_user_option($user_id, 's2member_custom');
  98. delete_user_option($user_id, 's2member_subscr_gateway');
  99. delete_user_option($user_id, 's2member_subscr_id');
  100. delete_user_option($user_id, 's2member_subscr_baid');
  101. delete_user_option($user_id, 's2member_subscr_cid');
  102. delete_user_option($user_id, 's2member_custom_fields');
  103. delete_user_option($user_id, 's2member_registration_ip');
  104. delete_user_option($user_id, 's2member_ipn_signup_vars');
  105. delete_user_option($user_id, 's2member_paid_registration_times');
  106. delete_user_option($user_id, 's2member_access_cap_times');
  107. delete_user_option($user_id, 's2member_coupon_codes');
  108. delete_user_option($user_id, 's2member_sp_references');
  109. delete_user_option($user_id, 's2member_last_status_scan');
  110. delete_user_option($user_id, 's2member_last_reminder_scan');
  111. delete_user_option($user_id, 's2member_first_payment_txn_id');
  112. delete_user_option($user_id, 's2member_last_payment_time');
  113. delete_user_option($user_id, 's2member_auto_eot_time');
  114. delete_user_option($user_id, 's2member_reminders_enable');
  115. delete_user_option($user_id, 's2member_file_download_access_arc');
  116. delete_user_option($user_id, 's2member_file_download_access_log');
  117. delete_user_option($user_id, 's2member_last_auto_eot_time');
  118. delete_user_option($user_id, 's2member_login_counter');
  119. delete_user_option($user_id, 's2member_notes');
  120. if(is_object($user = new WP_User ($user_id)) && $user->ID && $GLOBALS['WS_PLUGIN__']['s2member']['o']['eot_del_notification_urls'])
  121. {
  122. foreach(preg_split("/[\r\n\t]+/", $GLOBALS['WS_PLUGIN__']['s2member']['o']['eot_del_notification_urls']) as $url) // Handle EOT Notifications on user deletion.
  123. if(($url = c_ws_plugin__s2member_utils_strings::fill_cvs($url, $custom, true)) && ($url = preg_replace('/%%eot_del_type%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode($eot_del_type)), $url)) && ($url = preg_replace('/%%subscr_id%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode($subscr_id)), $url)))
  124. if(($url = preg_replace('/%%subscr_baid%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode($subscr_baid)), $url)) && ($url = preg_replace('/%%subscr_cid%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode($subscr_cid)), $url)))
  125. if(($url = preg_replace('/%%user_first_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode($user->first_name)), $url)) && ($url = preg_replace('/%%user_last_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode($user->last_name)), $url)))
  126. if(($url = preg_replace('/%%user_full_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode(trim($user->first_name.' '.$user->last_name))), $url)))
  127. if(($url = preg_replace('/%%user_email%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode($user->user_email)), $url)))
  128. if(($url = preg_replace('/%%user_login%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode($user->user_login)), $url)))
  129. if(($url = preg_replace('/%%user_ip%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode($user_reg_ip)), $url)))
  130. if(($url = preg_replace('/%%user_id%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode($user_id)), $url)))
  131. {
  132. if(is_array($fields) && !empty($fields))
  133. foreach($fields as $var => $val /* Custom Registration/Profile Fields. */)
  134. if(!($url = preg_replace('/%%'.preg_quote($var, '/').'%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode(maybe_serialize($val))), $url)))
  135. break;
  136. if(($url = trim(preg_replace('/%%(.+?)%%/i', '', $url))))
  137. c_ws_plugin__s2member_utils_urls::remote($url);
  138. }
  139. }
  140. if(is_object($user = new WP_User ($user_id)) && $user->ID && $GLOBALS['WS_PLUGIN__']['s2member']['o']['eot_del_notification_recipients'])
  141. {
  142. $email_configs_were_on = c_ws_plugin__s2member_email_configs::email_config_status();
  143. c_ws_plugin__s2member_email_configs::email_config_release();
  144. $msg = $sbj = '(s2Member / API Notification Email) - EOT/Deletion';
  145. $msg .= "\n\n"; // Spacing in the message body.
  146. $msg .= 'eot_del_type: %%eot_del_type%%'."\n";
  147. $msg .= 'subscr_id: %%subscr_id%%'."\n";
  148. $msg .= 'subscr_baid: %%subscr_baid%%'."\n";
  149. $msg .= 'subscr_cid: %%subscr_cid%%'."\n";
  150. $msg .= 'user_first_name: %%user_first_name%%'."\n";
  151. $msg .= 'user_last_name: %%user_last_name%%'."\n";
  152. $msg .= 'user_full_name: %%user_full_name%%'."\n";
  153. $msg .= 'user_email: %%user_email%%'."\n";
  154. $msg .= 'user_login: %%user_login%%'."\n";
  155. $msg .= 'user_ip: %%user_ip%%'."\n";
  156. $msg .= 'user_id: %%user_id%%'."\n";
  157. if(is_array($fields) && !empty($fields))
  158. foreach($fields as $var => $val)
  159. $msg .= $var.': %%'.$var.'%%'."\n";
  160. $msg .= 'cv0: %%cv0%%'."\n";
  161. $msg .= 'cv1: %%cv1%%'."\n";
  162. $msg .= 'cv2: %%cv2%%'."\n";
  163. $msg .= 'cv3: %%cv3%%'."\n";
  164. $msg .= 'cv4: %%cv4%%'."\n";
  165. $msg .= 'cv5: %%cv5%%'."\n";
  166. $msg .= 'cv6: %%cv6%%'."\n";
  167. $msg .= 'cv7: %%cv7%%'."\n";
  168. $msg .= 'cv8: %%cv8%%'."\n";
  169. $msg .= 'cv9: %%cv9%%';
  170. if(($msg = c_ws_plugin__s2member_utils_strings::fill_cvs($msg, $custom)) && ($msg = preg_replace('/%%eot_del_type%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($eot_del_type), $msg)) && ($msg = preg_replace('/%%subscr_id%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($subscr_id), $msg)))
  171. if(($msg = preg_replace('/%%subscr_baid%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($subscr_baid), $msg)) && ($msg = preg_replace('/%%subscr_cid%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($subscr_cid), $msg)))
  172. if(($msg = preg_replace('/%%user_first_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($user->first_name), $msg)) && ($msg = preg_replace('/%%user_last_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($user->last_name), $msg)))
  173. if(($msg = preg_replace('/%%user_full_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(trim($user->first_name.' '.$user->last_name)), $msg)))
  174. if(($msg = preg_replace('/%%user_email%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($user->user_email), $msg)))
  175. if(($msg = preg_replace('/%%user_login%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($user->user_login), $msg)))
  176. if(($msg = preg_replace('/%%user_ip%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($user_reg_ip), $msg)))
  177. if(($msg = preg_replace('/%%user_id%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($user_id), $msg)))
  178. {
  179. if(is_array($fields) && !empty($fields))
  180. foreach($fields as $var => $val /* Custom Registration/Profile Fields. */)
  181. if(!($msg = preg_replace('/%%'.preg_quote($var, '/').'%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(maybe_serialize($val)), $msg)))
  182. break;
  183. if($sbj && ($msg = trim(preg_replace('/%%(.+?)%%/i', '', $msg)))) // Still have a ``$sbj`` and a ``$msg``?
  184. foreach(c_ws_plugin__s2member_utils_strings::parse_emails($GLOBALS['WS_PLUGIN__']['s2member']['o']['eot_del_notification_recipients']) as $recipient)
  185. wp_mail($recipient, apply_filters('ws_plugin__s2member_eot_del_notification_email_sbj', $sbj, get_defined_vars()), apply_filters('ws_plugin__s2member_eot_del_notification_email_msg', $msg, get_defined_vars()), 'Content-Type: text/plain; charset=UTF-8');
  186. }
  187. if($email_configs_were_on) // Back on?
  188. c_ws_plugin__s2member_email_configs::email_config();
  189. }
  190. foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
  191. do_action('ws_plugin__s2member_during_handle_user_deletions', get_defined_vars());
  192. unset($__refs, $__v);
  193. }
  194. foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
  195. do_action('ws_plugin__s2member_after_handle_user_deletions', get_defined_vars());
  196. unset($__refs, $__v);
  197. }
  198. }
  199. }